diff options
93 files changed, 1239 insertions, 668 deletions
diff --git a/apps/admin_audit/l10n/es_CR.js b/apps/admin_audit/l10n/es_CR.js index 554f249b125..a051b8053d3 100644 --- a/apps/admin_audit/l10n/es_CR.js +++ b/apps/admin_audit/l10n/es_CR.js @@ -1,6 +1,7 @@ OC.L10N.register( "admin_audit", { - "Auditing / Logging" : "Auditoría / Registros" + "Auditing / Logging" : "Auditoría / Registros", + "Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Proporciona capacidades de registro para Nextcloud, como el registro de accesos a archivos o acciones sensibles." }, "nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/admin_audit/l10n/es_CR.json b/apps/admin_audit/l10n/es_CR.json index 772c7486a7b..00a101b11b8 100644 --- a/apps/admin_audit/l10n/es_CR.json +++ b/apps/admin_audit/l10n/es_CR.json @@ -1,4 +1,5 @@ { "translations": { - "Auditing / Logging" : "Auditoría / Registros" + "Auditing / Logging" : "Auditoría / Registros", + "Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Proporciona capacidades de registro para Nextcloud, como el registro de accesos a archivos o acciones sensibles." },"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/dashboard/l10n/pt_BR.js b/apps/dashboard/l10n/pt_BR.js index df0ca910594..0843b517b11 100644 --- a/apps/dashboard/l10n/pt_BR.js +++ b/apps/dashboard/l10n/pt_BR.js @@ -3,7 +3,7 @@ OC.L10N.register( { "Dashboard" : "Painel", "Dashboard app" : "Aplicativo Painel", - "Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an overview of your upcoming appointments, urgent emails, chat messages, incoming tickets, latest tweets and much more! People can add the widgets they like and change the background to their liking." : "Comece o dia informado \n\nO Painel do Nextcloud (Nextcloud Dashboard) é o seu ponto de partida do dia, oferecendo uma visão geral de seus próximos agendamentos, e-mails urgentes, mensagens de bate-papo, tickets recebidos, tweets mais recentes e muito mais! As pessoas podem adicionar os widgets que desejarem e alterar o plano de fundo de acordo com sua preferência.", + "Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an overview of your upcoming appointments, urgent emails, chat messages, incoming tickets, latest tweets and much more! People can add the widgets they like and change the background to their liking." : "Comece o dia informado \n\nO Painel do Nextcloud (Nextcloud Dashboard) é o seu ponto de partida do dia, oferecendo uma visão geral de seus próximos compromissos, e-mails urgentes, mensagens de bate-papo, tickets recebidos, tweets mais recentes e muito mais! As pessoas podem adicionar os widgets que desejarem e alterar o plano de fundo de acordo com sua preferência.", "Weather" : "Clima", "Status" : "Status", "Good morning" : "Bom dia", diff --git a/apps/dashboard/l10n/pt_BR.json b/apps/dashboard/l10n/pt_BR.json index 3d02d95d5b8..4750d3b61a5 100644 --- a/apps/dashboard/l10n/pt_BR.json +++ b/apps/dashboard/l10n/pt_BR.json @@ -1,7 +1,7 @@ { "translations": { "Dashboard" : "Painel", "Dashboard app" : "Aplicativo Painel", - "Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an overview of your upcoming appointments, urgent emails, chat messages, incoming tickets, latest tweets and much more! People can add the widgets they like and change the background to their liking." : "Comece o dia informado \n\nO Painel do Nextcloud (Nextcloud Dashboard) é o seu ponto de partida do dia, oferecendo uma visão geral de seus próximos agendamentos, e-mails urgentes, mensagens de bate-papo, tickets recebidos, tweets mais recentes e muito mais! As pessoas podem adicionar os widgets que desejarem e alterar o plano de fundo de acordo com sua preferência.", + "Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an overview of your upcoming appointments, urgent emails, chat messages, incoming tickets, latest tweets and much more! People can add the widgets they like and change the background to their liking." : "Comece o dia informado \n\nO Painel do Nextcloud (Nextcloud Dashboard) é o seu ponto de partida do dia, oferecendo uma visão geral de seus próximos compromissos, e-mails urgentes, mensagens de bate-papo, tickets recebidos, tweets mais recentes e muito mais! As pessoas podem adicionar os widgets que desejarem e alterar o plano de fundo de acordo com sua preferência.", "Weather" : "Clima", "Status" : "Status", "Good morning" : "Bom dia", diff --git a/apps/dav/appinfo/v2/publicremote.php b/apps/dav/appinfo/v2/publicremote.php index fbb3ddd2cb3..e089fa7bb62 100644 --- a/apps/dav/appinfo/v2/publicremote.php +++ b/apps/dav/appinfo/v2/publicremote.php @@ -29,6 +29,7 @@ use OCP\IPreview; use OCP\IRequest; use OCP\ISession; use OCP\ITagManager; +use OCP\IURLGenerator; use OCP\IUserSession; use OCP\L10N\IFactory; use OCP\Security\Bruteforce\IThrottler; @@ -56,7 +57,8 @@ $authBackend = new PublicAuth( Server::get(IManager::class), $session, Server::get(IThrottler::class), - Server::get(LoggerInterface::class) + Server::get(LoggerInterface::class), + Server::get(IURLGenerator::class), ); $authPlugin = new \Sabre\DAV\Auth\Plugin($authBackend); diff --git a/apps/dav/l10n/et_EE.js b/apps/dav/l10n/et_EE.js index b4c8248fca0..54ba6f5a401 100644 --- a/apps/dav/l10n/et_EE.js +++ b/apps/dav/l10n/et_EE.js @@ -72,7 +72,7 @@ OC.L10N.register( "Description: %s" : "Kirjeldus: %s", "Where: %s" : "Kus: %s", "%1$s via %2$s" : "%1$s %2$s kaudu", - "Could not generate when statement" : "Ei õnnstunud luua tingimuslikku „when“ lausendit", + "Could not generate when statement" : "Ei õnnestunud koostada tingimuslikku „when“ lausendit", "Every Day for the entire day" : "Iga päev kogu päeva jooksul", "Every Day for the entire day until %1$s" : "Iga päev kogu päeva jooksul kuni %1$s", "Every Day between %1$s - %2$s" : "Iga päev ajavahemikus %1$s - %2$s", @@ -81,6 +81,34 @@ OC.L10N.register( "Every %1$d Days for the entire day until %2$s" : "Iga %1$d. päev kogu päeva jooksul kuni %2$s", "Every %1$d Days between %2$s - %3$s" : "Iga %1$d. päev kogu päeva jooksul ajavahemikus %2$s - %3$s", "Every %1$d Days between %2$s - %3$s until %4$s" : "Iga %1$d. päev kogu päeva jooksul ajavahemikus %2$s - %3$s, kuni %4$s", + "Could not generate event recurrence statement" : "Ei õnnestunud koostada ürituse kordumise lausendit", + "Every Week on %1$s for the entire day" : "Kogu päeva kestel igal nädalal: %1$s", + "Every Week on %1$s for the entire day until %2$s" : "Kogu päeva kestel igal nädalal kuni %2$s: %1$s", + "Every Week on %1$s between %2$s - %3$s" : "Igal nädalal: %1$s ajavahemikus %2$s - %3$s", + "Every Week on %1$s between %2$s - %3$s until %4$s" : "Igal nädalal kuni %2$s: %1$s ajavahemikus %3$s - %4$s", + "Every %1$d Weeks on %2$s for the entire day" : "Igal %1$d-l nädalal kogu päeva kestel: %2$s", + "Every %1$d Weeks on %2$s for the entire day until %3$s" : "Igal %1$d-l nädalal kuni %3$s kogu päeva kestel: %2$s", + "Every %1$d Weeks on %2$s between %3$s - %4$s" : "Igal %1$d-l nädalal ajavahemikus %3$s - %4$s: %2$s", + "Every %1$d Weeks on %2$s between %3$s - %4$s until %5$s" : "Igal %1$d-l nädalal kuni %5$s ajavahemikus %3$s - %4$s: %2$s", + "Every Month on the %1$s for the entire day" : "Kogu päeva kestel igal kuul: %1$s", + "Every Month on the %1$s for the entire day until %2$s" : "Kogu päeva kestel igal kuul kuni %2$s: %1$s", + "Every Month on the %1$s between %2$s - %3$s" : "Igal kuul: %1$s ajavahemikus %2$s - %3$s", + "Every Month on the %1$s between %2$s - %3$s until %4$s" : "Igal kuul kuni %2$s: %1$s ajavahemikus %3$s - %4$s", + "Every %1$d Months on the %2$s for the entire day" : "Igal %1$d-l kuul kogu päeva kestel: %2$s", + "Every %1$d Months on the %2$s for the entire day until %3$s" : "Igal %1$d-l kuul kuni %3$s kogu päeva kestel: %2$s", + "Every %1$d Months on the %2$s between %3$s - %4$s" : "Igal %1$d-l kuul ajavahemikus %3$s - %4$s: %2$s", + "Every %1$d Months on the %2$s between %3$s - %4$s until %5$s" : "Igal %1$d-l kuul kuni %5$s ajavahemikus %3$s - %4$s: %2$s", + "Every Year in %1$s on the %2$s for the entire day" : "Kogu päeva kestel igal aastal: %1$s, %2$s", + "Every Year in %1$s on the %2$s for the entire day until %3$s" : "Kogu päeva kestel igal aastal kuni %3$s: %1$s, %2$s", + "Every Year in %1$s on the %2$s between %3$s - %4$s" : "Igal aastal ajavahemikus %3$s - %4$s: %1$s, %2$s", + "Every Year in %1$s on the %2$s between %3$s - %4$s until %5$s" : "Igal aastal kuni %5$sajavahemikus %3$s - %4$s: %1$s, %2$s", + "Every %1$d Years in %2$s on the %3$s for the entire day" : "Igal %1$d-l aastal kogu päeva kestel: %2$s, %3$s", + "Every %1$d Years in %2$s on the %3$s for the entire day until %4$s" : "Kogu päeva kestel igal %1$d-l aastal kuni %4$s: %2$s, %3$s", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s" : "Igal %1$d-l aastal ajavahemikus %4$s - %5$s: %2$s, %3$s", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s until %6$s" : "Igal %1$d-l aastal kuni %6$s ajavahemikus %4$s - %5$s: %2$s, %3$s", + "On specific dates for the entire day until %1$s" : "Kindlatel päevadel kogu päeva jooksul kuni %1$s", + "On specific dates between %1$s - %2$s until %3$s" : "Kindlatel päevadel ajavahemikus %1$s - %2$s kuni %3$s", + "Could not generate next recurrence statement" : "Ei õnnestunud koostada korduva ürituse järgmise toimumise lausendit", "Cancelled: %1$s" : "Tühistatud: %1$s", "\"%1$s\" has been canceled" : "„%1$s“ on tühistatud", "Re: %1$s" : "Re: %1$s", @@ -201,6 +229,7 @@ OC.L10N.register( "Calendar server" : "Kalendriserver", "Send invitations to attendees" : "Saada osalejatele kutsed", "Automatically generate a birthday calendar" : "Koosta sünnipäevade kalender automaatselt", + "Birthday calendars will be generated by a background job." : "Sünnipäevade kalender luuakse automaatselt taustateenuse poolt.", "Send notifications for events" : "Saada sündmuste teavitusi", "Enable notifications for events via push" : "Võta kasutusele tõuketeenustepõhised teavitused", "Cancel" : "Tühista", diff --git a/apps/dav/l10n/et_EE.json b/apps/dav/l10n/et_EE.json index cf12e3257c6..060e60c7b21 100644 --- a/apps/dav/l10n/et_EE.json +++ b/apps/dav/l10n/et_EE.json @@ -70,7 +70,7 @@ "Description: %s" : "Kirjeldus: %s", "Where: %s" : "Kus: %s", "%1$s via %2$s" : "%1$s %2$s kaudu", - "Could not generate when statement" : "Ei õnnstunud luua tingimuslikku „when“ lausendit", + "Could not generate when statement" : "Ei õnnestunud koostada tingimuslikku „when“ lausendit", "Every Day for the entire day" : "Iga päev kogu päeva jooksul", "Every Day for the entire day until %1$s" : "Iga päev kogu päeva jooksul kuni %1$s", "Every Day between %1$s - %2$s" : "Iga päev ajavahemikus %1$s - %2$s", @@ -79,6 +79,34 @@ "Every %1$d Days for the entire day until %2$s" : "Iga %1$d. päev kogu päeva jooksul kuni %2$s", "Every %1$d Days between %2$s - %3$s" : "Iga %1$d. päev kogu päeva jooksul ajavahemikus %2$s - %3$s", "Every %1$d Days between %2$s - %3$s until %4$s" : "Iga %1$d. päev kogu päeva jooksul ajavahemikus %2$s - %3$s, kuni %4$s", + "Could not generate event recurrence statement" : "Ei õnnestunud koostada ürituse kordumise lausendit", + "Every Week on %1$s for the entire day" : "Kogu päeva kestel igal nädalal: %1$s", + "Every Week on %1$s for the entire day until %2$s" : "Kogu päeva kestel igal nädalal kuni %2$s: %1$s", + "Every Week on %1$s between %2$s - %3$s" : "Igal nädalal: %1$s ajavahemikus %2$s - %3$s", + "Every Week on %1$s between %2$s - %3$s until %4$s" : "Igal nädalal kuni %2$s: %1$s ajavahemikus %3$s - %4$s", + "Every %1$d Weeks on %2$s for the entire day" : "Igal %1$d-l nädalal kogu päeva kestel: %2$s", + "Every %1$d Weeks on %2$s for the entire day until %3$s" : "Igal %1$d-l nädalal kuni %3$s kogu päeva kestel: %2$s", + "Every %1$d Weeks on %2$s between %3$s - %4$s" : "Igal %1$d-l nädalal ajavahemikus %3$s - %4$s: %2$s", + "Every %1$d Weeks on %2$s between %3$s - %4$s until %5$s" : "Igal %1$d-l nädalal kuni %5$s ajavahemikus %3$s - %4$s: %2$s", + "Every Month on the %1$s for the entire day" : "Kogu päeva kestel igal kuul: %1$s", + "Every Month on the %1$s for the entire day until %2$s" : "Kogu päeva kestel igal kuul kuni %2$s: %1$s", + "Every Month on the %1$s between %2$s - %3$s" : "Igal kuul: %1$s ajavahemikus %2$s - %3$s", + "Every Month on the %1$s between %2$s - %3$s until %4$s" : "Igal kuul kuni %2$s: %1$s ajavahemikus %3$s - %4$s", + "Every %1$d Months on the %2$s for the entire day" : "Igal %1$d-l kuul kogu päeva kestel: %2$s", + "Every %1$d Months on the %2$s for the entire day until %3$s" : "Igal %1$d-l kuul kuni %3$s kogu päeva kestel: %2$s", + "Every %1$d Months on the %2$s between %3$s - %4$s" : "Igal %1$d-l kuul ajavahemikus %3$s - %4$s: %2$s", + "Every %1$d Months on the %2$s between %3$s - %4$s until %5$s" : "Igal %1$d-l kuul kuni %5$s ajavahemikus %3$s - %4$s: %2$s", + "Every Year in %1$s on the %2$s for the entire day" : "Kogu päeva kestel igal aastal: %1$s, %2$s", + "Every Year in %1$s on the %2$s for the entire day until %3$s" : "Kogu päeva kestel igal aastal kuni %3$s: %1$s, %2$s", + "Every Year in %1$s on the %2$s between %3$s - %4$s" : "Igal aastal ajavahemikus %3$s - %4$s: %1$s, %2$s", + "Every Year in %1$s on the %2$s between %3$s - %4$s until %5$s" : "Igal aastal kuni %5$sajavahemikus %3$s - %4$s: %1$s, %2$s", + "Every %1$d Years in %2$s on the %3$s for the entire day" : "Igal %1$d-l aastal kogu päeva kestel: %2$s, %3$s", + "Every %1$d Years in %2$s on the %3$s for the entire day until %4$s" : "Kogu päeva kestel igal %1$d-l aastal kuni %4$s: %2$s, %3$s", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s" : "Igal %1$d-l aastal ajavahemikus %4$s - %5$s: %2$s, %3$s", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s until %6$s" : "Igal %1$d-l aastal kuni %6$s ajavahemikus %4$s - %5$s: %2$s, %3$s", + "On specific dates for the entire day until %1$s" : "Kindlatel päevadel kogu päeva jooksul kuni %1$s", + "On specific dates between %1$s - %2$s until %3$s" : "Kindlatel päevadel ajavahemikus %1$s - %2$s kuni %3$s", + "Could not generate next recurrence statement" : "Ei õnnestunud koostada korduva ürituse järgmise toimumise lausendit", "Cancelled: %1$s" : "Tühistatud: %1$s", "\"%1$s\" has been canceled" : "„%1$s“ on tühistatud", "Re: %1$s" : "Re: %1$s", @@ -199,6 +227,7 @@ "Calendar server" : "Kalendriserver", "Send invitations to attendees" : "Saada osalejatele kutsed", "Automatically generate a birthday calendar" : "Koosta sünnipäevade kalender automaatselt", + "Birthday calendars will be generated by a background job." : "Sünnipäevade kalender luuakse automaatselt taustateenuse poolt.", "Send notifications for events" : "Saada sündmuste teavitusi", "Enable notifications for events via push" : "Võta kasutusele tõuketeenustepõhised teavitused", "Cancel" : "Tühista", diff --git a/apps/dav/l10n/fr.js b/apps/dav/l10n/fr.js index 3a565fcc2d7..eca63f571f3 100644 --- a/apps/dav/l10n/fr.js +++ b/apps/dav/l10n/fr.js @@ -72,10 +72,15 @@ OC.L10N.register( "Description: %s" : "Description : %s", "Where: %s" : "Où : %s", "%1$s via %2$s" : "%1$s via %2$s", + "In the past on %1$s for the entire day" : "Dans le passé toute la journée du %1$s ", "_In a minute on %1$s for the entire day_::_In %n minutes on %1$s for the entire day_" : ["Dans une minute le %1$s pour la journée entière","Dans %n minutes le %1$s pour la journée entière","Dans %n minutes le %1$s pour la journée entière"], "_In a hour on %1$s for the entire day_::_In %n hours on %1$s for the entire day_" : ["Dans une heure le %1$s pour la journée entière","Dans %n heures le %1$s pour la journée entière","Dans %n heures le %1$s pour la journée entière"], "_In a day on %1$s for the entire day_::_In %n days on %1$s for the entire day_" : ["Dans un jour le %1$s pour la journée entière","Dans %n jours le %1$s pour la journée entière","Dans %n jours le %1$s pour la journée entière"], "_In a week on %1$s for the entire day_::_In %n weeks on %1$s for the entire day_" : ["Dans une semaine le %1$s pour la journée entière","Dans %n semaines le %1$s pour la journée entière","Dans %n semaines le %1$s pour la journée entière"], + "_In a month on %1$s for the entire day_::_In %n months on %1$s for the entire day_" : ["Dans un mois toute la journée du %1$s","Dans %n mois toute la journée du %1$s","Dans %n mois toute la journée du %1$s"], + "_In a year on %1$s for the entire day_::_In %n years on %1$s for the entire day_" : ["Dans un an toute la journée du %1$s","Dans %n années toute la journée du %1$s","Dans %n années toute la journée du %1$s"], + "In the past on %1$s between %2$s - %3$s" : "Dans le passé le %1$s entre %2$s - %3$s", + "_In a minute on %1$s between %2$s - %3$s_::_In %n minutes on %1$s between %2$s - %3$s_" : ["Dans une minute le %1$s entre %2$s - %3$s","Dans %n minutes le %1$s entre %2$s - %3$s","Dans %n minutes le %1$s entre %2$s - %3$s"], "Could not generate when statement" : "Impossible de déterminer quand", "Every Day for the entire day" : "Chaque jour pour toute la journée", "Every Day for the entire day until %1$s" : "Chaque jour pour toute la journée jusqu'au %1$s", @@ -219,6 +224,9 @@ OC.L10N.register( "Completed on %s" : "Terminé le %s", "Due on %s by %s" : "Echéance le %s pour %s", "Due on %s" : "Echéance le %s", + "System Address Book" : "Carnet d'adresses du système", + "The system address book contains contact information for all users in your instance." : "Le carnet d'adresses du système contient les informations de contact de tous les utilisateurs de votre instance.", + "Enable System Address Book" : "Activer le carnet d'adresses du système", "DAV system address book" : "Carnet d'adresses système DAV", "No outstanding DAV system address book sync." : "Pas de synchronisation DAV en cours du carnet d'adresses système.", "The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occurred. Please run it manually by calling \"occ dav:sync-system-addressbook\"." : "La synchronisation du carnet d'adresses système DAV n'a pas encore été effectuée car votre instance a plus de 1 000 utilisateurs ou parce qu'une erreur est survenue. Merci de l'exécuter manuellement en tapant la commande \"occ dav:sync-system-addressbook\".", diff --git a/apps/dav/l10n/fr.json b/apps/dav/l10n/fr.json index 3aeddd8de22..27e985861af 100644 --- a/apps/dav/l10n/fr.json +++ b/apps/dav/l10n/fr.json @@ -70,10 +70,15 @@ "Description: %s" : "Description : %s", "Where: %s" : "Où : %s", "%1$s via %2$s" : "%1$s via %2$s", + "In the past on %1$s for the entire day" : "Dans le passé toute la journée du %1$s ", "_In a minute on %1$s for the entire day_::_In %n minutes on %1$s for the entire day_" : ["Dans une minute le %1$s pour la journée entière","Dans %n minutes le %1$s pour la journée entière","Dans %n minutes le %1$s pour la journée entière"], "_In a hour on %1$s for the entire day_::_In %n hours on %1$s for the entire day_" : ["Dans une heure le %1$s pour la journée entière","Dans %n heures le %1$s pour la journée entière","Dans %n heures le %1$s pour la journée entière"], "_In a day on %1$s for the entire day_::_In %n days on %1$s for the entire day_" : ["Dans un jour le %1$s pour la journée entière","Dans %n jours le %1$s pour la journée entière","Dans %n jours le %1$s pour la journée entière"], "_In a week on %1$s for the entire day_::_In %n weeks on %1$s for the entire day_" : ["Dans une semaine le %1$s pour la journée entière","Dans %n semaines le %1$s pour la journée entière","Dans %n semaines le %1$s pour la journée entière"], + "_In a month on %1$s for the entire day_::_In %n months on %1$s for the entire day_" : ["Dans un mois toute la journée du %1$s","Dans %n mois toute la journée du %1$s","Dans %n mois toute la journée du %1$s"], + "_In a year on %1$s for the entire day_::_In %n years on %1$s for the entire day_" : ["Dans un an toute la journée du %1$s","Dans %n années toute la journée du %1$s","Dans %n années toute la journée du %1$s"], + "In the past on %1$s between %2$s - %3$s" : "Dans le passé le %1$s entre %2$s - %3$s", + "_In a minute on %1$s between %2$s - %3$s_::_In %n minutes on %1$s between %2$s - %3$s_" : ["Dans une minute le %1$s entre %2$s - %3$s","Dans %n minutes le %1$s entre %2$s - %3$s","Dans %n minutes le %1$s entre %2$s - %3$s"], "Could not generate when statement" : "Impossible de déterminer quand", "Every Day for the entire day" : "Chaque jour pour toute la journée", "Every Day for the entire day until %1$s" : "Chaque jour pour toute la journée jusqu'au %1$s", @@ -217,6 +222,9 @@ "Completed on %s" : "Terminé le %s", "Due on %s by %s" : "Echéance le %s pour %s", "Due on %s" : "Echéance le %s", + "System Address Book" : "Carnet d'adresses du système", + "The system address book contains contact information for all users in your instance." : "Le carnet d'adresses du système contient les informations de contact de tous les utilisateurs de votre instance.", + "Enable System Address Book" : "Activer le carnet d'adresses du système", "DAV system address book" : "Carnet d'adresses système DAV", "No outstanding DAV system address book sync." : "Pas de synchronisation DAV en cours du carnet d'adresses système.", "The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occurred. Please run it manually by calling \"occ dav:sync-system-addressbook\"." : "La synchronisation du carnet d'adresses système DAV n'a pas encore été effectuée car votre instance a plus de 1 000 utilisateurs ou parce qu'une erreur est survenue. Merci de l'exécuter manuellement en tapant la commande \"occ dav:sync-system-addressbook\".", diff --git a/apps/dav/lib/CalDAV/Schedule/IMipPlugin.php b/apps/dav/lib/CalDAV/Schedule/IMipPlugin.php index 7e79388c53a..0ce8e28ab9e 100644 --- a/apps/dav/lib/CalDAV/Schedule/IMipPlugin.php +++ b/apps/dav/lib/CalDAV/Schedule/IMipPlugin.php @@ -156,9 +156,10 @@ class IMipPlugin extends SabreIMipPlugin { $iTipMessage->scheduleStatus = '5.0; EMail delivery failed'; return; } - // Don't send emails to things - if ($this->imipService->isRoomOrResource($attendee)) { - $this->logger->debug('No invitation sent as recipient is room or resource', [ + // Don't send emails to rooms, resources and circles + if ($this->imipService->isRoomOrResource($attendee) + || $this->imipService->isCircle($attendee)) { + $this->logger->debug('No invitation sent as recipient is room, resource or circle', [ 'attendee' => $recipient, ]); $iTipMessage->scheduleStatus = '1.0;We got the message, but it\'s not significant enough to warrant an email'; diff --git a/apps/dav/lib/CalDAV/Schedule/IMipService.php b/apps/dav/lib/CalDAV/Schedule/IMipService.php index e2844960a23..078b10abd23 100644 --- a/apps/dav/lib/CalDAV/Schedule/IMipService.php +++ b/apps/dav/lib/CalDAV/Schedule/IMipService.php @@ -1155,6 +1155,21 @@ class IMipService { return false; } + public function isCircle(Property $attendee): bool { + $cuType = $attendee->offsetGet('CUTYPE'); + if (!$cuType instanceof Parameter) { + return false; + } + + $uri = $attendee->getValue(); + if (!$uri) { + return false; + } + + $cuTypeValue = $cuType->getValue(); + return $cuTypeValue === 'GROUP' && str_starts_with($uri, 'mailto:circle+'); + } + public function minimizeInterval(\DateInterval $dateInterval): array { // evaluate if time interval is in the past if ($dateInterval->invert == 1) { diff --git a/apps/dav/lib/Connector/Sabre/PublicAuth.php b/apps/dav/lib/Connector/Sabre/PublicAuth.php index b5d9ce3db72..2ca1c25e2f6 100644 --- a/apps/dav/lib/Connector/Sabre/PublicAuth.php +++ b/apps/dav/lib/Connector/Sabre/PublicAuth.php @@ -14,6 +14,7 @@ namespace OCA\DAV\Connector\Sabre; use OCP\Defaults; use OCP\IRequest; use OCP\ISession; +use OCP\IURLGenerator; use OCP\Security\Bruteforce\IThrottler; use OCP\Security\Bruteforce\MaxDelayReached; use OCP\Share\Exceptions\ShareNotFound; @@ -23,6 +24,7 @@ use Psr\Log\LoggerInterface; use Sabre\DAV\Auth\Backend\AbstractBasic; use Sabre\DAV\Exception\NotAuthenticated; use Sabre\DAV\Exception\NotFound; +use Sabre\DAV\Exception\PreconditionFailed; use Sabre\DAV\Exception\ServiceUnavailable; use Sabre\HTTP; use Sabre\HTTP\RequestInterface; @@ -45,6 +47,7 @@ class PublicAuth extends AbstractBasic { private ISession $session, private IThrottler $throttler, private LoggerInterface $logger, + private IURLGenerator $urlGenerator, ) { // setup realm $defaults = new Defaults(); @@ -52,10 +55,6 @@ class PublicAuth extends AbstractBasic { } /** - * @param RequestInterface $request - * @param ResponseInterface $response - * - * @return array * @throws NotAuthenticated * @throws MaxDelayReached * @throws ServiceUnavailable @@ -64,6 +63,10 @@ class PublicAuth extends AbstractBasic { try { $this->throttler->sleepDelayOrThrowOnMax($this->request->getRemoteAddress(), self::BRUTEFORCE_ACTION); + if (count($_COOKIE) > 0 && !$this->request->passesStrictCookieCheck() && $this->getShare()->getPassword() !== null) { + throw new PreconditionFailed('Strict cookie check failed'); + } + $auth = new HTTP\Auth\Basic( $this->realm, $request, @@ -80,6 +83,15 @@ class PublicAuth extends AbstractBasic { } catch (NotAuthenticated|MaxDelayReached $e) { $this->throttler->registerAttempt(self::BRUTEFORCE_ACTION, $this->request->getRemoteAddress()); throw $e; + } catch (PreconditionFailed $e) { + $response->setHeader( + 'Location', + $this->urlGenerator->linkToRoute( + 'files_sharing.share.showShare', + [ 'token' => $this->getToken() ], + ), + ); + throw $e; } catch (\Exception $e) { $class = get_class($e); $msg = $e->getMessage(); @@ -90,7 +102,6 @@ class PublicAuth extends AbstractBasic { /** * Extract token from request url - * @return string * @throws NotFound */ private function getToken(): string { @@ -107,7 +118,7 @@ class PublicAuth extends AbstractBasic { /** * Check token validity - * @return array + * * @throws NotFound * @throws NotAuthenticated */ @@ -155,15 +166,13 @@ class PublicAuth extends AbstractBasic { protected function validateUserPass($username, $password) { $this->throttler->sleepDelayOrThrowOnMax($this->request->getRemoteAddress(), self::BRUTEFORCE_ACTION); - $token = $this->getToken(); try { - $share = $this->shareManager->getShareByToken($token); + $share = $this->getShare(); } catch (ShareNotFound $e) { $this->throttler->registerAttempt(self::BRUTEFORCE_ACTION, $this->request->getRemoteAddress()); return false; } - $this->share = $share; \OC_User::setIncognitoMode(true); // check if the share is password protected @@ -206,7 +215,13 @@ class PublicAuth extends AbstractBasic { } public function getShare(): IShare { - assert($this->share !== null); + $token = $this->getToken(); + + if ($this->share === null) { + $share = $this->shareManager->getShareByToken($token); + $this->share = $share; + } + return $this->share; } } diff --git a/apps/dav/lib/DAV/GroupPrincipalBackend.php b/apps/dav/lib/DAV/GroupPrincipalBackend.php index 143fc7d69f1..ddbd64bdda1 100644 --- a/apps/dav/lib/DAV/GroupPrincipalBackend.php +++ b/apps/dav/lib/DAV/GroupPrincipalBackend.php @@ -50,8 +50,10 @@ class GroupPrincipalBackend implements BackendInterface { $principals = []; if ($prefixPath === self::PRINCIPAL_PREFIX) { - foreach ($this->groupManager->search('') as $user) { - $principals[] = $this->groupToPrincipal($user); + foreach ($this->groupManager->search('') as $group) { + if (!$group->hideFromCollaboration()) { + $principals[] = $this->groupToPrincipal($group); + } } } @@ -77,7 +79,7 @@ class GroupPrincipalBackend implements BackendInterface { $name = urldecode($elements[2]); $group = $this->groupManager->get($name); - if (!is_null($group)) { + if ($group !== null && !$group->hideFromCollaboration()) { return $this->groupToPrincipal($group); } diff --git a/apps/dav/tests/unit/CalDAV/Schedule/IMipPluginTest.php b/apps/dav/tests/unit/CalDAV/Schedule/IMipPluginTest.php index 0137f528355..896d7e9eb5f 100644 --- a/apps/dav/tests/unit/CalDAV/Schedule/IMipPluginTest.php +++ b/apps/dav/tests/unit/CalDAV/Schedule/IMipPluginTest.php @@ -219,6 +219,10 @@ class IMipPluginTest extends TestCase { ->with($atnd) ->willReturn(false); $this->service->expects(self::once()) + ->method('isCircle') + ->with($atnd) + ->willReturn(false); + $this->service->expects(self::once()) ->method('buildBodyData') ->with($newVevent, $oldVEvent) ->willReturn($data); @@ -322,6 +326,88 @@ class IMipPluginTest extends TestCase { ->with($room) ->willReturn(true); $this->service->expects(self::never()) + ->method('isCircle'); + $this->service->expects(self::never()) + ->method('buildBodyData'); + $this->user->expects(self::any()) + ->method('getUID') + ->willReturn('user1'); + $this->user->expects(self::any()) + ->method('getDisplayName') + ->willReturn('Mr. Wizard'); + $this->userSession->expects(self::any()) + ->method('getUser') + ->willReturn($this->user); + $this->service->expects(self::never()) + ->method('getFrom'); + $this->service->expects(self::never()) + ->method('addSubjectAndHeading'); + $this->service->expects(self::never()) + ->method('addBulletList'); + $this->service->expects(self::never()) + ->method('getAttendeeRsvpOrReqForParticipant'); + $this->config->expects(self::never()) + ->method('getValueString'); + $this->service->expects(self::never()) + ->method('createInvitationToken'); + $this->service->expects(self::never()) + ->method('addResponseButtons'); + $this->service->expects(self::never()) + ->method('addMoreOptionsButton'); + $this->mailer->expects(self::never()) + ->method('send'); + $this->plugin->schedule($message); + $this->assertEquals('1.0', $message->getScheduleStatus()); + } + + public function testAttendeeIsCircle(): void { + $message = new Message(); + $message->method = 'REQUEST'; + $newVCalendar = new VCalendar(); + $newVevent = new VEvent($newVCalendar, 'one', array_merge([ + 'UID' => 'uid-1234', + 'SEQUENCE' => 1, + 'SUMMARY' => 'Fellowship meeting without (!) Boromir', + 'DTSTART' => new \DateTime('2016-01-01 00:00:00') + ], [])); + $newVevent->add('ORGANIZER', 'mailto:gandalf@wiz.ard'); + $newVevent->add('ATTENDEE', 'mailto:' . 'circle+82utEV1Fle8wvxndZLK5TVAPtxj8IIe@middle.earth', ['RSVP' => 'TRUE', 'CN' => 'The Fellowship', 'CUTYPE' => 'GROUP']); + $newVevent->add('ATTENDEE', 'mailto:' . 'boromir@tra.it.or', ['RSVP' => 'TRUE', 'MEMBER' => 'circle+82utEV1Fle8wvxndZLK5TVAPtxj8IIe@middle.earth']); + $message->message = $newVCalendar; + $message->sender = 'mailto:gandalf@wiz.ard'; + $message->senderName = 'Mr. Wizard'; + $message->recipient = 'mailto:' . 'circle+82utEV1Fle8wvxndZLK5TVAPtxj8IIe@middle.earth'; + $attendees = $newVevent->select('ATTENDEE'); + $circle = ''; + foreach ($attendees as $attendee) { + if (strcasecmp($attendee->getValue(), $message->recipient) === 0) { + $circle = $attendee; + } + } + $this->assertNotEmpty($circle, 'Failed to find attendee belonging to the circle'); + $this->service->expects(self::once()) + ->method('getLastOccurrence') + ->willReturn(1496912700); + $this->mailer->expects(self::once()) + ->method('validateMailAddress') + ->with('circle+82utEV1Fle8wvxndZLK5TVAPtxj8IIe@middle.earth') + ->willReturn(true); + $this->eventComparisonService->expects(self::once()) + ->method('findModified') + ->willReturn(['new' => [$newVevent], 'old' => null]); + $this->service->expects(self::once()) + ->method('getCurrentAttendee') + ->with($message) + ->willReturn($circle); + $this->service->expects(self::once()) + ->method('isRoomOrResource') + ->with($circle) + ->willReturn(false); + $this->service->expects(self::once()) + ->method('isCircle') + ->with($circle) + ->willReturn(true); + $this->service->expects(self::never()) ->method('buildBodyData'); $this->user->expects(self::any()) ->method('getUID') @@ -423,6 +509,10 @@ class IMipPluginTest extends TestCase { ->with($atnd) ->willReturn(false); $this->service->expects(self::once()) + ->method('isCircle') + ->with($atnd) + ->willReturn(false); + $this->service->expects(self::once()) ->method('buildBodyData') ->with($newVevent, null) ->willReturn($data); @@ -554,6 +644,10 @@ class IMipPluginTest extends TestCase { ->with($atnd) ->willReturn(false); $this->service->expects(self::once()) + ->method('isCircle') + ->with($atnd) + ->willReturn(false); + $this->service->expects(self::once()) ->method('buildBodyData') ->with($newVevent, null) ->willReturn($data); @@ -660,6 +754,10 @@ class IMipPluginTest extends TestCase { ->with($attendee) ->willReturn(false); $this->service->expects(self::once()) + ->method('isCircle') + ->with($attendee) + ->willReturn(false); + $this->service->expects(self::once()) ->method('buildBodyData') ->with($event, null) ->willReturn($data); @@ -767,6 +865,10 @@ class IMipPluginTest extends TestCase { ->with($atnd) ->willReturn(false); $this->service->expects(self::once()) + ->method('isCircle') + ->with($atnd) + ->willReturn(false); + $this->service->expects(self::once()) ->method('buildBodyData') ->with($newVevent, $oldVEvent) ->willReturn($data); @@ -862,6 +964,10 @@ class IMipPluginTest extends TestCase { ->with($atnd) ->willReturn(false); $this->service->expects(self::once()) + ->method('isCircle') + ->with($atnd) + ->willReturn(false); + $this->service->expects(self::once()) ->method('buildBodyData') ->with($newVevent, null) ->willReturn($data); @@ -955,6 +1061,10 @@ class IMipPluginTest extends TestCase { ->with($atnd) ->willReturn(false); $this->service->expects(self::once()) + ->method('isCircle') + ->with($atnd) + ->willReturn(false); + $this->service->expects(self::once()) ->method('buildBodyData') ->with($newVevent, null) ->willReturn($data); diff --git a/apps/dav/tests/unit/Connector/Sabre/PublicAuthTest.php b/apps/dav/tests/unit/Connector/Sabre/PublicAuthTest.php index 00bddf2e69c..67e7f6af675 100644 --- a/apps/dav/tests/unit/Connector/Sabre/PublicAuthTest.php +++ b/apps/dav/tests/unit/Connector/Sabre/PublicAuthTest.php @@ -10,10 +10,12 @@ namespace OCA\DAV\Tests\unit\Connector; use OCA\DAV\Connector\Sabre\PublicAuth; use OCP\IRequest; use OCP\ISession; +use OCP\IURLGenerator; use OCP\Security\Bruteforce\IThrottler; use OCP\Share\Exceptions\ShareNotFound; use OCP\Share\IManager; use OCP\Share\IShare; +use PHPUnit\Framework\MockObject\MockObject; use Psr\Log\LoggerInterface; /** @@ -25,21 +27,15 @@ use Psr\Log\LoggerInterface; */ class PublicAuthTest extends \Test\TestCase { - /** @var ISession|MockObject */ - private $session; - /** @var IRequest|MockObject */ - private $request; - /** @var IManager|MockObject */ - private $shareManager; - /** @var PublicAuth */ - private $auth; - /** @var IThrottler|MockObject */ - private $throttler; - /** @var LoggerInterface|MockObject */ - private $logger; - - /** @var string */ - private $oldUser; + private ISession&MockObject $session; + private IRequest&MockObject $request; + private IManager&MockObject $shareManager; + private PublicAuth $auth; + private IThrottler&MockObject $throttler; + private LoggerInterface&MockObject $logger; + private IURLGenerator&MockObject $urlGenerator; + + private string $oldUser; protected function setUp(): void { parent::setUp(); @@ -49,6 +45,7 @@ class PublicAuthTest extends \Test\TestCase { $this->shareManager = $this->createMock(IManager::class); $this->throttler = $this->createMock(IThrottler::class); $this->logger = $this->createMock(LoggerInterface::class); + $this->urlGenerator = $this->createMock(IURLGenerator::class); $this->auth = new PublicAuth( $this->request, @@ -56,6 +53,7 @@ class PublicAuthTest extends \Test\TestCase { $this->session, $this->throttler, $this->logger, + $this->urlGenerator, ); // Store current user @@ -137,7 +135,7 @@ class PublicAuthTest extends \Test\TestCase { $this->session->method('exists')->with('public_link_authenticated')->willReturn(true); $this->session->method('get')->with('public_link_authenticated')->willReturn('42'); - + $result = $this->invokePrivate($this->auth, 'checkToken'); $this->assertSame([true, 'principals/GX9HSGQrGE'], $result); } @@ -158,7 +156,7 @@ class PublicAuthTest extends \Test\TestCase { ->willReturn($share); $this->session->method('exists')->with('public_link_authenticated')->willReturn(false); - + $this->expectException(\Sabre\DAV\Exception\NotAuthenticated::class); $this->invokePrivate($this->auth, 'checkToken'); } @@ -180,7 +178,7 @@ class PublicAuthTest extends \Test\TestCase { $this->session->method('exists')->with('public_link_authenticated')->willReturn(false); $this->session->method('get')->with('public_link_authenticated')->willReturn('43'); - + $this->expectException(\Sabre\DAV\Exception\NotAuthenticated::class); $this->invokePrivate($this->auth, 'checkToken'); } diff --git a/apps/federatedfilesharing/l10n/et_EE.js b/apps/federatedfilesharing/l10n/et_EE.js index a755ab72cea..cc498be6c35 100644 --- a/apps/federatedfilesharing/l10n/et_EE.js +++ b/apps/federatedfilesharing/l10n/et_EE.js @@ -24,9 +24,11 @@ OC.L10N.register( "Federated file sharing" : "Failide jagamine liitpilves", "Provide federated file sharing across servers" : "Toeta failide jagamist liitpilves üle serverite", "Confirm data upload to lookup server" : "Kinnita andmete üleslaadimine tuvastusserverisse", + "When enabled, all account properties (e.g. email address) with scope visibility set to \"published\", will be automatically synced and transmitted to an external system and made available in a public, global address book." : "Kui see eelistus on kasutusel, siis kõik kasutajakonto andmed, mille nähtavuseks on märgitud „avaldatud“, sünkroniseeritakse automaatselt välistesse serveritesse ning avaldatakse liitpilve üldises aadressiraamatus.", "Disable upload" : "Keela üleslaadimine", "Enable data upload" : "Luba andmete üleslaadimine", "Confirm querying lookup server" : "Kinnita andmete pärimine tuvastusserverist", + "When enabled, the search input when creating shares will be sent to an external system that provides a public and global address book." : "Kui see eelistus on kasutusel, siis jaosmeedia loomisel kasutatud otsingusisend saadetakse automaatselt välistesse serveritesse, mis tagavad liitpilve üldise ja avaliku aadressiraamatu toimimise.", "This is used to retrieve the federated cloud ID to make federated sharing easier." : "See on kasutusel liitpilve tunnuse laadimiseks ning see teeb jagamise liitpilves lihtsamaks.", "Moreover, email addresses of users might be sent to that system in order to verify them." : "Lisaks võidakse sellesse serverisse saata verifitseerimise jaoks kasutajate e-posti aadresse.", "Disable querying" : "Keela päringute tegemine", diff --git a/apps/federatedfilesharing/l10n/et_EE.json b/apps/federatedfilesharing/l10n/et_EE.json index b7bed2a7f80..81dd979414c 100644 --- a/apps/federatedfilesharing/l10n/et_EE.json +++ b/apps/federatedfilesharing/l10n/et_EE.json @@ -22,9 +22,11 @@ "Federated file sharing" : "Failide jagamine liitpilves", "Provide federated file sharing across servers" : "Toeta failide jagamist liitpilves üle serverite", "Confirm data upload to lookup server" : "Kinnita andmete üleslaadimine tuvastusserverisse", + "When enabled, all account properties (e.g. email address) with scope visibility set to \"published\", will be automatically synced and transmitted to an external system and made available in a public, global address book." : "Kui see eelistus on kasutusel, siis kõik kasutajakonto andmed, mille nähtavuseks on märgitud „avaldatud“, sünkroniseeritakse automaatselt välistesse serveritesse ning avaldatakse liitpilve üldises aadressiraamatus.", "Disable upload" : "Keela üleslaadimine", "Enable data upload" : "Luba andmete üleslaadimine", "Confirm querying lookup server" : "Kinnita andmete pärimine tuvastusserverist", + "When enabled, the search input when creating shares will be sent to an external system that provides a public and global address book." : "Kui see eelistus on kasutusel, siis jaosmeedia loomisel kasutatud otsingusisend saadetakse automaatselt välistesse serveritesse, mis tagavad liitpilve üldise ja avaliku aadressiraamatu toimimise.", "This is used to retrieve the federated cloud ID to make federated sharing easier." : "See on kasutusel liitpilve tunnuse laadimiseks ning see teeb jagamise liitpilves lihtsamaks.", "Moreover, email addresses of users might be sent to that system in order to verify them." : "Lisaks võidakse sellesse serverisse saata verifitseerimise jaoks kasutajate e-posti aadresse.", "Disable querying" : "Keela päringute tegemine", diff --git a/apps/files/l10n/ja.js b/apps/files/l10n/ja.js index 419badb5dee..6b29c1c9780 100644 --- a/apps/files/l10n/ja.js +++ b/apps/files/l10n/ja.js @@ -173,7 +173,7 @@ OC.L10N.register( "Error during upload: {message}" : "アップロード中にエラーが発生しました: {message}", "Error during upload, status code {status}" : "アップロード中のエラー、ステータスコード {status}", "Unknown error during upload" : "不明なエラーがアップロード中に発生しました", - "\"{displayName}\" action executed successfully" : "\"{displayName}\" アクションは正常に実行された", + "\"{displayName}\" action executed successfully" : "\"{displayName}\" アクションは正常に実行されました", "Loading current folder" : "現在のフォルダの読み込み中", "Retry" : "リトライ", "No files in here" : "ファイルがありません", diff --git a/apps/files/l10n/ja.json b/apps/files/l10n/ja.json index 5ac7df29c81..d8d803191db 100644 --- a/apps/files/l10n/ja.json +++ b/apps/files/l10n/ja.json @@ -171,7 +171,7 @@ "Error during upload: {message}" : "アップロード中にエラーが発生しました: {message}", "Error during upload, status code {status}" : "アップロード中のエラー、ステータスコード {status}", "Unknown error during upload" : "不明なエラーがアップロード中に発生しました", - "\"{displayName}\" action executed successfully" : "\"{displayName}\" アクションは正常に実行された", + "\"{displayName}\" action executed successfully" : "\"{displayName}\" アクションは正常に実行されました", "Loading current folder" : "現在のフォルダの読み込み中", "Retry" : "リトライ", "No files in here" : "ファイルがありません", diff --git a/apps/files_sharing/l10n/cs.js b/apps/files_sharing/l10n/cs.js index 342b9e4f588..ddd9f9e9319 100644 --- a/apps/files_sharing/l10n/cs.js +++ b/apps/files_sharing/l10n/cs.js @@ -313,6 +313,7 @@ OC.L10N.register( "Use this method to share files with individuals or teams within your organization. If the recipient already has access to the share but cannot locate it, you can send them the internal share link for easy access." : "Tuto metodu použijte pro nasdílení souborů jednotlivcům nebo týmům ve vaší organizaci. Pokud příjemce už má přístup ke sdílení, ale nemůže ho nalézt, můžete mu přístup usnadnit zasláním vnitřního odkazu na sdílení.", "Use this method to share files with individuals or organizations outside your organization. Files and folders can be shared via public share links and email addresses. You can also share to other Nextcloud accounts hosted on different instances using their federated cloud ID." : "Tuto metodu používejte pro sdílení souborů s jednotlivci nebo organizacemi vně té vaší. Soubory a složky je možné nasdílet prostřednictvím veřejných odkazů na sdílení a e-mailových adres. Je také možné nasdílet ostatním Nextcloud účtům hostovaným na různých instancích a to prostřednictvím jejich identifikátorů v rámci federovaného cloudu.", "Shares that are not part of the internal or external shares. This can be shares from apps or other sources." : "Sdílení, která nejsou součástí interních nebo externích sdílení. Toto mohou být sdílení z aplikací nebo jiných zdrojů.", + "Share with accounts, teams, federated cloud IDs" : "Nasdílejte účtům, týmům, identifikátorům v rámci federovaného cloudu", "Share with accounts and teams" : "Nasdílet účtům a týmům", "Email, federated cloud ID" : "E-mail, identif. federovaného cloudu", "Unable to load the shares list" : "Nedaří se načíst seznam sdílení", diff --git a/apps/files_sharing/l10n/cs.json b/apps/files_sharing/l10n/cs.json index 8e6393fd417..b135d8e9e9e 100644 --- a/apps/files_sharing/l10n/cs.json +++ b/apps/files_sharing/l10n/cs.json @@ -311,6 +311,7 @@ "Use this method to share files with individuals or teams within your organization. If the recipient already has access to the share but cannot locate it, you can send them the internal share link for easy access." : "Tuto metodu použijte pro nasdílení souborů jednotlivcům nebo týmům ve vaší organizaci. Pokud příjemce už má přístup ke sdílení, ale nemůže ho nalézt, můžete mu přístup usnadnit zasláním vnitřního odkazu na sdílení.", "Use this method to share files with individuals or organizations outside your organization. Files and folders can be shared via public share links and email addresses. You can also share to other Nextcloud accounts hosted on different instances using their federated cloud ID." : "Tuto metodu používejte pro sdílení souborů s jednotlivci nebo organizacemi vně té vaší. Soubory a složky je možné nasdílet prostřednictvím veřejných odkazů na sdílení a e-mailových adres. Je také možné nasdílet ostatním Nextcloud účtům hostovaným na různých instancích a to prostřednictvím jejich identifikátorů v rámci federovaného cloudu.", "Shares that are not part of the internal or external shares. This can be shares from apps or other sources." : "Sdílení, která nejsou součástí interních nebo externích sdílení. Toto mohou být sdílení z aplikací nebo jiných zdrojů.", + "Share with accounts, teams, federated cloud IDs" : "Nasdílejte účtům, týmům, identifikátorům v rámci federovaného cloudu", "Share with accounts and teams" : "Nasdílet účtům a týmům", "Email, federated cloud ID" : "E-mail, identif. federovaného cloudu", "Unable to load the shares list" : "Nedaří se načíst seznam sdílení", diff --git a/apps/files_sharing/lib/DefaultPublicShareTemplateProvider.php b/apps/files_sharing/lib/DefaultPublicShareTemplateProvider.php index 686ba32fd49..910d00a5972 100644 --- a/apps/files_sharing/lib/DefaultPublicShareTemplateProvider.php +++ b/apps/files_sharing/lib/DefaultPublicShareTemplateProvider.php @@ -149,10 +149,7 @@ class DefaultPublicShareTemplateProvider implements IPublicShareTemplateProvider $headerActions = []; if ($view !== 'public-file-drop' && !$share->getHideDownload()) { // The download URL is used for the "download" header action as well as in some cases for the direct link - $downloadUrl = $this->urlGenerator->linkToRouteAbsolute('files_sharing.sharecontroller.downloadShare', [ - 'token' => $token, - 'filename' => ($shareNode instanceof File) ? $shareNode->getName() : null, - ]); + $downloadUrl = $this->urlGenerator->getAbsoluteURL('/public.php/dav/files/' . $token . '/?accept=zip'); // If not a file drop, then add the download header action $headerActions[] = new SimpleMenuAction('download', $this->l10n->t('Download'), 'icon-download', $downloadUrl, 0, (string)$shareNode->getSize()); diff --git a/apps/files_sharing/tests/Controller/ShareControllerTest.php b/apps/files_sharing/tests/Controller/ShareControllerTest.php index 58cbb4e0b82..524336787cb 100644 --- a/apps/files_sharing/tests/Controller/ShareControllerTest.php +++ b/apps/files_sharing/tests/Controller/ShareControllerTest.php @@ -261,8 +261,12 @@ class ShareControllerTest extends \Test\TestCase { ['files_sharing.sharecontroller.showShare', ['token' => 'token'], 'shareUrl'], // this share is not an image to the default preview is used ['files_sharing.PublicPreview.getPreview', ['x' => 256, 'y' => 256, 'file' => $share->getTarget(), 'token' => 'token'], 'previewUrl'], - // for the direct link - ['files_sharing.sharecontroller.downloadShare', ['token' => 'token', 'filename' => $filename ], 'downloadUrl'], + ]); + + $this->urlGenerator->expects($this->once()) + ->method('getAbsoluteURL') + ->willReturnMap([ + ['/public.php/dav/files/token/?accept=zip', 'downloadUrl'], ]); $this->previewManager->method('isMimeSupported')->with('text/plain')->willReturn(true); @@ -552,8 +556,12 @@ class ShareControllerTest extends \Test\TestCase { ['files_sharing.sharecontroller.showShare', ['token' => 'token'], 'shareUrl'], // this share is not an image to the default preview is used ['files_sharing.PublicPreview.getPreview', ['x' => 256, 'y' => 256, 'file' => $share->getTarget(), 'token' => 'token'], 'previewUrl'], - // for the direct link - ['files_sharing.sharecontroller.downloadShare', ['token' => 'token', 'filename' => $filename ], 'downloadUrl'], + ]); + + $this->urlGenerator->expects($this->once()) + ->method('getAbsoluteURL') + ->willReturnMap([ + ['/public.php/dav/files/token/?accept=zip', 'downloadUrl'], ]); $this->previewManager->method('isMimeSupported')->with('text/plain')->willReturn(true); diff --git a/apps/settings/composer/composer/autoload_classmap.php b/apps/settings/composer/composer/autoload_classmap.php index 969b97dd693..1e8bc75c687 100644 --- a/apps/settings/composer/composer/autoload_classmap.php +++ b/apps/settings/composer/composer/autoload_classmap.php @@ -129,6 +129,7 @@ return array( 'OCA\\Settings\\SetupChecks\\SecurityHeaders' => $baseDir . '/../lib/SetupChecks/SecurityHeaders.php', 'OCA\\Settings\\SetupChecks\\SupportedDatabase' => $baseDir . '/../lib/SetupChecks/SupportedDatabase.php', 'OCA\\Settings\\SetupChecks\\SystemIs64bit' => $baseDir . '/../lib/SetupChecks/SystemIs64bit.php', + 'OCA\\Settings\\SetupChecks\\TaskProcessingPickupSpeed' => $baseDir . '/../lib/SetupChecks/TaskProcessingPickupSpeed.php', 'OCA\\Settings\\SetupChecks\\TempSpaceAvailable' => $baseDir . '/../lib/SetupChecks/TempSpaceAvailable.php', 'OCA\\Settings\\SetupChecks\\TransactionIsolation' => $baseDir . '/../lib/SetupChecks/TransactionIsolation.php', 'OCA\\Settings\\SetupChecks\\WellKnownUrls' => $baseDir . '/../lib/SetupChecks/WellKnownUrls.php', diff --git a/apps/settings/composer/composer/autoload_static.php b/apps/settings/composer/composer/autoload_static.php index 7aa86889c4c..5dc337e158c 100644 --- a/apps/settings/composer/composer/autoload_static.php +++ b/apps/settings/composer/composer/autoload_static.php @@ -144,6 +144,7 @@ class ComposerStaticInitSettings 'OCA\\Settings\\SetupChecks\\SecurityHeaders' => __DIR__ . '/..' . '/../lib/SetupChecks/SecurityHeaders.php', 'OCA\\Settings\\SetupChecks\\SupportedDatabase' => __DIR__ . '/..' . '/../lib/SetupChecks/SupportedDatabase.php', 'OCA\\Settings\\SetupChecks\\SystemIs64bit' => __DIR__ . '/..' . '/../lib/SetupChecks/SystemIs64bit.php', + 'OCA\\Settings\\SetupChecks\\TaskProcessingPickupSpeed' => __DIR__ . '/..' . '/../lib/SetupChecks/TaskProcessingPickupSpeed.php', 'OCA\\Settings\\SetupChecks\\TempSpaceAvailable' => __DIR__ . '/..' . '/../lib/SetupChecks/TempSpaceAvailable.php', 'OCA\\Settings\\SetupChecks\\TransactionIsolation' => __DIR__ . '/..' . '/../lib/SetupChecks/TransactionIsolation.php', 'OCA\\Settings\\SetupChecks\\WellKnownUrls' => __DIR__ . '/..' . '/../lib/SetupChecks/WellKnownUrls.php', diff --git a/apps/settings/l10n/et_EE.js b/apps/settings/l10n/et_EE.js index ac71b7323d2..4b06afedea8 100644 --- a/apps/settings/l10n/et_EE.js +++ b/apps/settings/l10n/et_EE.js @@ -155,6 +155,7 @@ OC.L10N.register( "The PHP max_input_time is too low. A time of at least %1$s is recommended. Current value: %2$s." : "PHP seadistuse „max_input_time“ väärtus on liiga väike. Meie soovitatud väärtus: %1$s. Praegune väärtus: %2$s.", "The PHP max_execution_time is too low. A time of at least %1$s is recommended. Current value: %2$s." : "PHP seadistuse „max_execution_time“ väärtus on liiga väike. Meie soovitatud väärtus: %1$s. Praegune väärtus: %2$s.", "PHP memory limit" : "PHP mälukasutuse ülempiir", + "The PHP memory limit is below the recommended value of %s. Some features or apps - including the Updater - may not function properly." : "PHP mälukasutuse piir on väiksem, muid soovitatav väärtus %s. Mõned funktsionaalsused või rakendused, sealhulgas uuendaja, ei pruugi toimida korrektselt.", "PHP modules" : "PHP lisamoodulid", "for Argon2 for password hashing" : "Argon2-põhise salasõna räsimise jaoks", "required for SFTP storage and recommended for WebAuthn performance" : "nõutav SFTP andmeruumi jaoks ja soovitatav WebAuthn jõudluse jaoks", @@ -204,6 +205,7 @@ OC.L10N.register( "Enforce expiration date" : "Sunnitud aegumise kuupäev", "Default expiration time of new shares in days" : "Uue jaosmeedia vaikimisi aegumine päevades", "Expire shares after x days" : "Jaosmeedia aegub x päeva möödudes", + "Privacy settings for sharing" : "Jagamise privaatsusseadistused", "This text will be shown on the public link upload page when the file list is hidden." : "Seda teksti näidatakse avaliku lingiga üleslaadimise lehel kui failide loend on peidetud.", "Two-Factor Authentication" : "Kaheastmeline autentimine", "Two-factor authentication can be enforced for all accounts and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Kaheastmelist autentimist on võimalik teha kohustuslikuks kas kõikidele kasutajakontodele või konkreetsete gruppide kaupa. Kui kaheastmelise autentimise kohustuslikkus on määratud, kuid on kasutajal seadistamata, siis ta ei saa siia serverisse sisse logida.", @@ -534,6 +536,7 @@ OC.L10N.register( "Account management" : "Kasutajakontode haldus", "Sending…" : "Saadan...", "Email sent" : "E-kiri on saadetud", + "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "Kui võtad Nextcloudi serveris krüptimise kasutsele, siis jõudlusest johtuvalt krüptitakse vaid uusi ja muudetud faile.", "Location" : "Asukoht", "Profile picture" : "Profiili pilt", "About" : "Teave", diff --git a/apps/settings/l10n/et_EE.json b/apps/settings/l10n/et_EE.json index f447343abef..02f14eb1312 100644 --- a/apps/settings/l10n/et_EE.json +++ b/apps/settings/l10n/et_EE.json @@ -153,6 +153,7 @@ "The PHP max_input_time is too low. A time of at least %1$s is recommended. Current value: %2$s." : "PHP seadistuse „max_input_time“ väärtus on liiga väike. Meie soovitatud väärtus: %1$s. Praegune väärtus: %2$s.", "The PHP max_execution_time is too low. A time of at least %1$s is recommended. Current value: %2$s." : "PHP seadistuse „max_execution_time“ väärtus on liiga väike. Meie soovitatud väärtus: %1$s. Praegune väärtus: %2$s.", "PHP memory limit" : "PHP mälukasutuse ülempiir", + "The PHP memory limit is below the recommended value of %s. Some features or apps - including the Updater - may not function properly." : "PHP mälukasutuse piir on väiksem, muid soovitatav väärtus %s. Mõned funktsionaalsused või rakendused, sealhulgas uuendaja, ei pruugi toimida korrektselt.", "PHP modules" : "PHP lisamoodulid", "for Argon2 for password hashing" : "Argon2-põhise salasõna räsimise jaoks", "required for SFTP storage and recommended for WebAuthn performance" : "nõutav SFTP andmeruumi jaoks ja soovitatav WebAuthn jõudluse jaoks", @@ -202,6 +203,7 @@ "Enforce expiration date" : "Sunnitud aegumise kuupäev", "Default expiration time of new shares in days" : "Uue jaosmeedia vaikimisi aegumine päevades", "Expire shares after x days" : "Jaosmeedia aegub x päeva möödudes", + "Privacy settings for sharing" : "Jagamise privaatsusseadistused", "This text will be shown on the public link upload page when the file list is hidden." : "Seda teksti näidatakse avaliku lingiga üleslaadimise lehel kui failide loend on peidetud.", "Two-Factor Authentication" : "Kaheastmeline autentimine", "Two-factor authentication can be enforced for all accounts and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Kaheastmelist autentimist on võimalik teha kohustuslikuks kas kõikidele kasutajakontodele või konkreetsete gruppide kaupa. Kui kaheastmelise autentimise kohustuslikkus on määratud, kuid on kasutajal seadistamata, siis ta ei saa siia serverisse sisse logida.", @@ -532,6 +534,7 @@ "Account management" : "Kasutajakontode haldus", "Sending…" : "Saadan...", "Email sent" : "E-kiri on saadetud", + "For performance reasons, when you enable encryption on a Nextcloud server only new and changed files are encrypted." : "Kui võtad Nextcloudi serveris krüptimise kasutsele, siis jõudlusest johtuvalt krüptitakse vaid uusi ja muudetud faile.", "Location" : "Asukoht", "Profile picture" : "Profiili pilt", "About" : "Teave", diff --git a/apps/settings/lib/AppInfo/Application.php b/apps/settings/lib/AppInfo/Application.php index f4737468716..6e59e56fe82 100644 --- a/apps/settings/lib/AppInfo/Application.php +++ b/apps/settings/lib/AppInfo/Application.php @@ -70,6 +70,7 @@ use OCA\Settings\SetupChecks\SchedulingTableSize; use OCA\Settings\SetupChecks\SecurityHeaders; use OCA\Settings\SetupChecks\SupportedDatabase; use OCA\Settings\SetupChecks\SystemIs64bit; +use OCA\Settings\SetupChecks\TaskProcessingPickupSpeed; use OCA\Settings\SetupChecks\TempSpaceAvailable; use OCA\Settings\SetupChecks\TransactionIsolation; use OCA\Settings\SetupChecks\WellKnownUrls; @@ -206,6 +207,7 @@ class Application extends App implements IBootstrap { $context->registerSetupCheck(SchedulingTableSize::class); $context->registerSetupCheck(SupportedDatabase::class); $context->registerSetupCheck(SystemIs64bit::class); + $context->registerSetupCheck(TaskProcessingPickupSpeed::class); $context->registerSetupCheck(TempSpaceAvailable::class); $context->registerSetupCheck(TransactionIsolation::class); $context->registerSetupCheck(PushService::class); diff --git a/apps/settings/lib/SetupChecks/TaskProcessingPickupSpeed.php b/apps/settings/lib/SetupChecks/TaskProcessingPickupSpeed.php new file mode 100644 index 00000000000..4fb2b10cf33 --- /dev/null +++ b/apps/settings/lib/SetupChecks/TaskProcessingPickupSpeed.php @@ -0,0 +1,63 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +namespace OCA\Settings\SetupChecks; + +use OCP\AppFramework\Utility\ITimeFactory; +use OCP\IL10N; +use OCP\SetupCheck\ISetupCheck; +use OCP\SetupCheck\SetupResult; +use OCP\TaskProcessing\IManager; + +class TaskProcessingPickupSpeed implements ISetupCheck { + public const MAX_SLOW_PERCENTAGE = 0.2; + public const TIME_SPAN = 24; + + public function __construct( + private IL10N $l10n, + private IManager $taskProcessingManager, + private ITimeFactory $timeFactory, + ) { + } + + public function getCategory(): string { + return 'ai'; + } + + public function getName(): string { + return $this->l10n->t('Task Processing pickup speed'); + } + + public function run(): SetupResult { + $tasks = $this->taskProcessingManager->getTasks(userId: '', scheduleAfter: $this->timeFactory->now()->getTimestamp() - 60 * 60 * self::TIME_SPAN); // userId: '' means no filter, whereas null would mean guest + $taskCount = count($tasks); + if ($taskCount === 0) { + return SetupResult::success($this->l10n->n('No scheduled tasks in the last %n hours.', 'No scheduled tasks in the last %n hours.', self::TIME_SPAN)); + } + $slowCount = 0; + foreach ($tasks as $task) { + if ($task->getStartedAt() === null) { + continue; // task was not picked up yet + } + if ($task->getScheduledAt() === null) { + continue; // task was not scheduled yet -- should not happen, but the API specifies null as return value + } + $pickupDelay = $task->getScheduledAt() - $task->getStartedAt(); + if ($pickupDelay > 60 * 4) { + $slowCount++; // task pickup took longer than 4 minutes + } + } + + if ($slowCount / $taskCount < self::MAX_SLOW_PERCENTAGE) { + return SetupResult::success($this->l10n->n('The task pickup speed has been ok in the last %n hour.', 'The task pickup speed has been ok in the last %n hours.', self::TIME_SPAN)); + } else { + return SetupResult::warning($this->l10n->n('The task pickup speed has been slow in the last %n hour. Many tasks took longer than 4 minutes to be picked up. Consider setting up a worker to process tasks in the background.', 'The task pickup speed has been slow in the last %n hours. Many tasks took longer than 4 minutes to be picked up. Consider setting up a worker to process tasks in the background.', self::TIME_SPAN), 'https://docs.nextcloud.com/server/latest/admin_manual/ai/overview.html#improve-ai-task-pickup-speed'); + } + } +} diff --git a/apps/settings/src/components/Users/UserRow.vue b/apps/settings/src/components/Users/UserRow.vue index 987cf84492a..ed63c2beb8f 100644 --- a/apps/settings/src/components/Users/UserRow.vue +++ b/apps/settings/src/components/Users/UserRow.vue @@ -255,16 +255,17 @@ data-cy-user-list-input-manager :data-loading="loading.manager || undefined" :input-id="'manager' + uniqueId" - :close-on-select="true" :disabled="isLoadingField" - :append-to-body="false" :loading="loadingPossibleManagers || loading.manager" - label="displayname" :options="possibleManagers" :placeholder="managerLabel" + label="displayname" + :filterable="false" + :internal-search="false" + :clearable="true" @open="searchInitialUserManager" @search="searchUserManager" - @option:selected="updateUserManager" /> + @update:model-value="updateUserManager" /> </template> <span v-else-if="!isObfuscated"> {{ user.manager }} @@ -502,7 +503,6 @@ export default { return this.languages[0].languages.concat(this.languages[1].languages) }, }, - async beforeMount() { if (this.user.manager) { await this.initManager(this.user.manager) @@ -613,11 +613,12 @@ export default { }) }, - async updateUserManager(manager) { - if (manager === null) { - this.currentManager = '' - } + async updateUserManager() { this.loading.manager = true + + // Store the current manager before making changes + const previousManager = this.user.manager + try { await this.$store.dispatch('setUserData', { userid: this.user.id, @@ -627,7 +628,10 @@ export default { } catch (error) { // TRANSLATORS This string describes a line manager in the context of an organization showError(t('settings', 'Failed to update line manager')) - console.error(error) + logger.error('Failed to update manager:', { error }) + + // Revert to the previous manager in the UI on error + this.currentManager = previousManager } finally { this.loading.manager = false } diff --git a/apps/settings/src/store/users.js b/apps/settings/src/store/users.js index 3734b7008df..7e4b9c4aebb 100644 --- a/apps/settings/src/store/users.js +++ b/apps/settings/src/store/users.js @@ -767,24 +767,25 @@ const actions = { */ async setUserData(context, { userid, key, value }) { const allowedEmpty = ['email', 'displayname', 'manager'] - if (['email', 'language', 'quota', 'displayname', 'password', 'manager'].indexOf(key) !== -1) { - // We allow empty email or displayname - if (typeof value === 'string' - && ( - (allowedEmpty.indexOf(key) === -1 && value.length > 0) - || allowedEmpty.indexOf(key) !== -1 - ) - ) { - try { - await api.requireAdmin() - await api.put(generateOcsUrl('cloud/users/{userid}', { userid }), { key, value }) - return context.commit('setUserData', { userid, key, value }) - } catch (error) { - context.commit('API_FAILURE', { userid, error }) - } - } + const validKeys = ['email', 'language', 'quota', 'displayname', 'password', 'manager'] + + if (!validKeys.includes(key)) { + throw new Error('Invalid request data') + } + + // If value is empty and the key doesn't allow empty values, throw error + if (value === '' && !allowedEmpty.includes(key)) { + throw new Error('Value cannot be empty for this field') + } + + try { + await api.requireAdmin() + await api.put(generateOcsUrl('cloud/users/{userid}', { userid }), { key, value }) + return context.commit('setUserData', { userid, key, value }) + } catch (error) { + context.commit('API_FAILURE', { userid, error }) + throw error } - return Promise.reject(new Error('Invalid request data')) }, /** diff --git a/apps/settings/tests/SetupChecks/TaskProcessingPickupSpeedTest.php b/apps/settings/tests/SetupChecks/TaskProcessingPickupSpeedTest.php new file mode 100644 index 00000000000..6375d9f6e7f --- /dev/null +++ b/apps/settings/tests/SetupChecks/TaskProcessingPickupSpeedTest.php @@ -0,0 +1,73 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +namespace OCA\Settings\Tests; + +use OCA\Settings\SetupChecks\TaskProcessingPickupSpeed; +use OCP\AppFramework\Utility\ITimeFactory; +use OCP\IL10N; +use OCP\SetupCheck\SetupResult; +use OCP\TaskProcessing\IManager; +use OCP\TaskProcessing\Task; +use Test\TestCase; + +class TaskProcessingPickupSpeedTest extends TestCase { + private IL10N $l10n; + private ITimeFactory $timeFactory; + private IManager $taskProcessingManager; + + private TaskProcessingPickupSpeed $check; + + protected function setUp(): void { + parent::setUp(); + + $this->l10n = $this->getMockBuilder(IL10N::class)->getMock(); + $this->timeFactory = $this->getMockBuilder(ITimeFactory::class)->getMock(); + $this->taskProcessingManager = $this->getMockBuilder(IManager::class)->getMock(); + + $this->check = new TaskProcessingPickupSpeed( + $this->l10n, + $this->taskProcessingManager, + $this->timeFactory, + ); + } + + public function testPass(): void { + $tasks = []; + for ($i = 0; $i < 100; $i++) { + $task = new Task('test', ['test' => 'test'], 'settings', 'user' . $i); + $task->setStartedAt(0); + if ($i < 15) { + $task->setScheduledAt(60 * 5); // 15% get 5mins + } else { + $task->setScheduledAt(60); // the rest gets 1min + } + $tasks[] = $task; + } + $this->taskProcessingManager->method('getTasks')->willReturn($tasks); + + $this->assertEquals(SetupResult::SUCCESS, $this->check->run()->getSeverity()); + } + + public function testFail(): void { + $tasks = []; + for ($i = 0; $i < 100; $i++) { + $task = new Task('test', ['test' => 'test'], 'settings', 'user' . $i); + $task->setStartedAt(0); + if ($i < 30) { + $task->setScheduledAt(60 * 5); // 30% get 5mins + } else { + $task->setScheduledAt(60); // the rest gets 1min + } + $tasks[] = $task; + } + $this->taskProcessingManager->method('getTasks')->willReturn($tasks); + + $this->assertEquals(SetupResult::WARNING, $this->check->run()->getSeverity()); + } +} diff --git a/apps/sharebymail/l10n/et_EE.js b/apps/sharebymail/l10n/et_EE.js index 585e0454d78..47f81d56824 100644 --- a/apps/sharebymail/l10n/et_EE.js +++ b/apps/sharebymail/l10n/et_EE.js @@ -3,21 +3,35 @@ OC.L10N.register( { "Shared with {email}" : "Jagatud aadressile {email}", "Shared with {email} by {actor}" : "Jagatud aadressile {email} {actor} poolt", - "Password for mail share sent to {email}" : "Meiliga jagamise parool saadetud aadressile {email}", - "Password for mail share sent to you" : "Meiliga jagamise parool sulle saadetud", - "Password to access {file} was sent to {email}" : "Parool {file} ligipääsuks saadeti aadressile {email}", - "Password to access {file} was sent to you" : "Sulle saadeti {file} ligipääsuparool", + "Password for mail share sent to {email}" : "E-kirjaga jagamise salasõna on saadetud aadressile {email}", + "Password for mail share sent to you" : "Sulle saadetud e-kirjaga jagamise salasõna", + "Password to access {file} was sent to {email}" : "Salasõna ligipääsuks „{file}“ failile saadeti aadressile {email}", + "Password to access {file} was sent to you" : "Sulle saadeti salasõna ligipääsuks „{file}“ failile", "Share by mail" : "Jaga e-postiga", "Sharing %1$s failed, because this item is already shared with the account %2$s" : "%1$s jagamine ebaõnnestus, kuna seda üksust on juba jagatud kontoga %2$s", + "We cannot send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Me ei saa sulle automaatselt loodud salasõna saata. Palun määra oma isiklikes seadistustes korrektne e-posti aadress ja proovi uuesti.", + "Failed to send share by email" : "Jaosmeediat polnud võimalik e-kirjaga saata", "%1$s shared %2$s with you" : "%1$s jagas sinuga: %2$s", "Note:" : "Märkus:", + "This share is valid until %s at midnight" : "See jaosmeedia kehtib vaid %s keskööni", + "Expiration:" : "Aegumine:", "Open %s" : "Ava %s ", "%1$s via %2$s" : "%1$s %2$s kaudu", - "It is protected with the following password:" : "See on kaitstud järgneva parooliga:", + "%1$s shared %2$s with you. You should have already received a separate mail with a link to access it." : "%2$s jagas sulle „%1$s“ jaosmeediat. Peaksid juba olema saanud eraldi e-kirja ligipääsuks vajaliku lingiga.", + "Password to access %1$s shared to you by %2$s" : "Salasõna ligipääsuks „%1$s“ jaosmeediale, mida sulle jagas %2$s", + "Password to access %s" : "Salasõna ligipääsuks „%s“ jaosmeediale", + "It is protected with the following password:" : "See on kaitstud järgneva salasõnaga:", + "This password will expire at %s" : "See salasõna aegub %s", "%1$s shared %2$s with you and wants to add:" : "%1$s jagas sinuga %2$s ning soovib lisada:", "%1$s shared %2$s with you and wants to add" : "%1$s jagas sinuga %2$s ning soovib lisada", "%s added a note to a file shared with you" : "%s jagas koos sulle jagatud failiga ka märget", + "You just shared %1$s with %2$s. The share was already sent to the recipient. Due to the security policies defined by the administrator of %3$s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Sa just jagasid „%1$s“ meediat kasutajale „%2$s“. Jaosmeedia teave on juba saadetud kasutajale. Kuna %3$s serveri peakasutaja on kehtestanud turvareeglid, siis iga jaosmeedia peab olema kaitstud salasõnaga ning salasõna ei tohi kasutajale otse saata. Seetõttu pead salasõna saajale edastama käsitsi.", + "Password to access %1$s shared by you with %2$s" : "%2$s jagas sinuga salasõna ligipääsuks „%1$s“ jaosmeediale", + "This is the password:" : "See on vajalik salasõna:", + "You can choose a different password at any time in the share dialog." : "Salasõna saad alati jagamisvaatest muuta.", "Could not find share" : "Jagamist ei leitud.", - "Send password by mail" : "Saada parool e-postiga" + "Share provider which allows you to share files by mail" : "Jagamisteenuse pakkuja, mis võimaldab sul meediat jagada e-posti vahendusel", + "Send password by mail" : "Saada parool e-postiga", + "Reply to initiator" : "Vasta algatajale" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/sharebymail/l10n/et_EE.json b/apps/sharebymail/l10n/et_EE.json index ff657b15f92..ce01d8465ad 100644 --- a/apps/sharebymail/l10n/et_EE.json +++ b/apps/sharebymail/l10n/et_EE.json @@ -1,21 +1,35 @@ { "translations": { "Shared with {email}" : "Jagatud aadressile {email}", "Shared with {email} by {actor}" : "Jagatud aadressile {email} {actor} poolt", - "Password for mail share sent to {email}" : "Meiliga jagamise parool saadetud aadressile {email}", - "Password for mail share sent to you" : "Meiliga jagamise parool sulle saadetud", - "Password to access {file} was sent to {email}" : "Parool {file} ligipääsuks saadeti aadressile {email}", - "Password to access {file} was sent to you" : "Sulle saadeti {file} ligipääsuparool", + "Password for mail share sent to {email}" : "E-kirjaga jagamise salasõna on saadetud aadressile {email}", + "Password for mail share sent to you" : "Sulle saadetud e-kirjaga jagamise salasõna", + "Password to access {file} was sent to {email}" : "Salasõna ligipääsuks „{file}“ failile saadeti aadressile {email}", + "Password to access {file} was sent to you" : "Sulle saadeti salasõna ligipääsuks „{file}“ failile", "Share by mail" : "Jaga e-postiga", "Sharing %1$s failed, because this item is already shared with the account %2$s" : "%1$s jagamine ebaõnnestus, kuna seda üksust on juba jagatud kontoga %2$s", + "We cannot send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Me ei saa sulle automaatselt loodud salasõna saata. Palun määra oma isiklikes seadistustes korrektne e-posti aadress ja proovi uuesti.", + "Failed to send share by email" : "Jaosmeediat polnud võimalik e-kirjaga saata", "%1$s shared %2$s with you" : "%1$s jagas sinuga: %2$s", "Note:" : "Märkus:", + "This share is valid until %s at midnight" : "See jaosmeedia kehtib vaid %s keskööni", + "Expiration:" : "Aegumine:", "Open %s" : "Ava %s ", "%1$s via %2$s" : "%1$s %2$s kaudu", - "It is protected with the following password:" : "See on kaitstud järgneva parooliga:", + "%1$s shared %2$s with you. You should have already received a separate mail with a link to access it." : "%2$s jagas sulle „%1$s“ jaosmeediat. Peaksid juba olema saanud eraldi e-kirja ligipääsuks vajaliku lingiga.", + "Password to access %1$s shared to you by %2$s" : "Salasõna ligipääsuks „%1$s“ jaosmeediale, mida sulle jagas %2$s", + "Password to access %s" : "Salasõna ligipääsuks „%s“ jaosmeediale", + "It is protected with the following password:" : "See on kaitstud järgneva salasõnaga:", + "This password will expire at %s" : "See salasõna aegub %s", "%1$s shared %2$s with you and wants to add:" : "%1$s jagas sinuga %2$s ning soovib lisada:", "%1$s shared %2$s with you and wants to add" : "%1$s jagas sinuga %2$s ning soovib lisada", "%s added a note to a file shared with you" : "%s jagas koos sulle jagatud failiga ka märget", + "You just shared %1$s with %2$s. The share was already sent to the recipient. Due to the security policies defined by the administrator of %3$s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Sa just jagasid „%1$s“ meediat kasutajale „%2$s“. Jaosmeedia teave on juba saadetud kasutajale. Kuna %3$s serveri peakasutaja on kehtestanud turvareeglid, siis iga jaosmeedia peab olema kaitstud salasõnaga ning salasõna ei tohi kasutajale otse saata. Seetõttu pead salasõna saajale edastama käsitsi.", + "Password to access %1$s shared by you with %2$s" : "%2$s jagas sinuga salasõna ligipääsuks „%1$s“ jaosmeediale", + "This is the password:" : "See on vajalik salasõna:", + "You can choose a different password at any time in the share dialog." : "Salasõna saad alati jagamisvaatest muuta.", "Could not find share" : "Jagamist ei leitud.", - "Send password by mail" : "Saada parool e-postiga" + "Share provider which allows you to share files by mail" : "Jagamisteenuse pakkuja, mis võimaldab sul meediat jagada e-posti vahendusel", + "Send password by mail" : "Saada parool e-postiga", + "Reply to initiator" : "Vasta algatajale" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/sharebymail/tests/CapabilitiesTest.php b/apps/sharebymail/tests/CapabilitiesTest.php index d38618650b3..0e3e74f5d2d 100644 --- a/apps/sharebymail/tests/CapabilitiesTest.php +++ b/apps/sharebymail/tests/CapabilitiesTest.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later @@ -9,25 +11,18 @@ use OCA\ShareByMail\Capabilities; use OCA\ShareByMail\Settings\SettingsManager; use OCP\App\IAppManager; use OCP\Share\IManager; +use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; class CapabilitiesTest extends TestCase { - /** @var Capabilities */ - private $capabilities; - - /** @var IManager | \PHPUnit\Framework\MockObject\MockObject */ - private $manager; - - /** @var IManager | \PHPUnit\Framework\MockObject\MockObject */ - private $settingsManager; - - /** @var IAppManager | \PHPUnit\Framework\MockObject\MockObject */ - private $appManager; + private IManager&MockObject $manager; + private SettingsManager&MockObject $settingsManager; + private IAppManager&MockObject $appManager; + private Capabilities $capabilities; protected function setUp(): void { parent::setUp(); - $this->manager = $this::createMock(IManager::class); $this->settingsManager = $this::createMock(SettingsManager::class); $this->appManager = $this::createMock(IAppManager::class); diff --git a/apps/sharebymail/tests/ShareByMailProviderTest.php b/apps/sharebymail/tests/ShareByMailProviderTest.php index b8bcb4151f0..f0a69b5cf7c 100644 --- a/apps/sharebymail/tests/ShareByMailProviderTest.php +++ b/apps/sharebymail/tests/ShareByMailProviderTest.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later @@ -47,7 +49,7 @@ use Test\TestCase; * @group DB */ class ShareByMailProviderTest extends TestCase { - + private IDBConnection $connection; private IL10N&MockObject $l; @@ -71,25 +73,25 @@ class ShareByMailProviderTest extends TestCase { $this->connection = Server::get(IDBConnection::class); - $this->l = $this->getMockBuilder(IL10N::class)->getMock(); + $this->l = $this->createMock(IL10N::class); $this->l->method('t') ->willReturnCallback(function ($text, $parameters = []) { return vsprintf($text, $parameters); }); - $this->config = $this->getMockBuilder(IConfig::class)->getMock(); - $this->logger = $this->getMockBuilder(LoggerInterface::class)->getMock(); - $this->rootFolder = $this->getMockBuilder('OCP\Files\IRootFolder')->getMock(); - $this->userManager = $this->getMockBuilder(IUserManager::class)->getMock(); - $this->secureRandom = $this->getMockBuilder('\OCP\Security\ISecureRandom')->getMock(); - $this->mailer = $this->getMockBuilder('\OCP\Mail\IMailer')->getMock(); - $this->urlGenerator = $this->getMockBuilder(IURLGenerator::class)->getMock(); - $this->share = $this->getMockBuilder(IShare::class)->getMock(); - $this->activityManager = $this->getMockBuilder('OCP\Activity\IManager')->getMock(); - $this->settingsManager = $this->getMockBuilder(SettingsManager::class)->disableOriginalConstructor()->getMock(); + $this->config = $this->createMock(IConfig::class); + $this->logger = $this->createMock(LoggerInterface::class); + $this->rootFolder = $this->createMock('OCP\Files\IRootFolder'); + $this->userManager = $this->createMock(IUserManager::class); + $this->secureRandom = $this->createMock('\OCP\Security\ISecureRandom'); + $this->mailer = $this->createMock('\OCP\Mail\IMailer'); + $this->urlGenerator = $this->createMock(IURLGenerator::class); + $this->share = $this->createMock(IShare::class); + $this->activityManager = $this->createMock('OCP\Activity\IManager'); + $this->settingsManager = $this->createMock(SettingsManager::class); $this->defaults = $this->createMock(Defaults::class); - $this->hasher = $this->getMockBuilder(IHasher::class)->getMock(); - $this->eventDispatcher = $this->getMockBuilder(IEventDispatcher::class)->getMock(); - $this->shareManager = $this->getMockBuilder(IManager::class)->getMock(); + $this->hasher = $this->createMock(IHasher::class); + $this->eventDispatcher = $this->createMock(IEventDispatcher::class); + $this->shareManager = $this->createMock(IManager::class); $this->userManager->expects($this->any())->method('userExists')->willReturn(true); $this->config->expects($this->any())->method('getAppValue')->with('core', 'enforce_strict_email_check')->willReturn('yes'); @@ -103,7 +105,7 @@ class ShareByMailProviderTest extends TestCase { */ private function getInstance(array $mockedMethods = []) { if (!empty($mockedMethods)) { - return $this->getMockBuilder('OCA\ShareByMail\ShareByMailProvider') + return $this->getMockBuilder(ShareByMailProvider::class) ->setConstructorArgs([ $this->config, $this->connection, @@ -119,9 +121,9 @@ class ShareByMailProviderTest extends TestCase { $this->defaults, $this->hasher, $this->eventDispatcher, - $this->shareManager + $this->shareManager, ]) - ->setMethods($mockedMethods) + ->onlyMethods($mockedMethods) ->getMock(); } @@ -140,7 +142,7 @@ class ShareByMailProviderTest extends TestCase { $this->defaults, $this->hasher, $this->eventDispatcher, - $this->shareManager + $this->shareManager, ); } @@ -156,10 +158,10 @@ class ShareByMailProviderTest extends TestCase { public function testCreate(): void { $expectedShare = $this->createMock(IShare::class); - $share = $this->getMockBuilder(IShare::class)->getMock(); + $share = $this->createMock(IShare::class); $share->expects($this->any())->method('getSharedWith')->willReturn('user1'); - $node = $this->getMockBuilder(File::class)->getMock(); + $node = $this->createMock(File::class); $node->expects($this->any())->method('getName')->willReturn('filename'); $instance = $this->getInstance(['getSharedWith', 'createMailShare', 'getRawShare', 'createShareObject', 'createShareActivity', 'sendEmail', 'sendPassword']); @@ -185,10 +187,10 @@ class ShareByMailProviderTest extends TestCase { public function testCreateSendPasswordByMailWithoutEnforcedPasswordProtection(): void { $expectedShare = $this->createMock(IShare::class); - $node = $this->getMockBuilder(File::class)->getMock(); + $node = $this->createMock(File::class); $node->expects($this->any())->method('getName')->willReturn('filename'); - $share = $this->getMockBuilder(IShare::class)->getMock(); + $share = $this->createMock(IShare::class); $share->expects($this->any())->method('getSharedWith')->willReturn('receiver@examplelölöl.com'); $share->expects($this->any())->method('getSendPasswordByTalk')->willReturn(false); $share->expects($this->any())->method('getSharedBy')->willReturn('owner'); @@ -227,10 +229,10 @@ class ShareByMailProviderTest extends TestCase { public function testCreateSendPasswordByMailWithPasswordAndWithoutEnforcedPasswordProtectionWithPermanentPassword(): void { $expectedShare = $this->createMock(IShare::class); - $node = $this->getMockBuilder(File::class)->getMock(); + $node = $this->createMock(File::class); $node->expects($this->any())->method('getName')->willReturn('filename'); - $share = $this->getMockBuilder(IShare::class)->getMock(); + $share = $this->createMock(IShare::class); $share->expects($this->any())->method('getSharedWith')->willReturn('receiver@example.com'); $share->expects($this->any())->method('getSendPasswordByTalk')->willReturn(false); $share->expects($this->any())->method('getSharedBy')->willReturn('owner'); @@ -273,10 +275,10 @@ class ShareByMailProviderTest extends TestCase { public function testCreateSendPasswordByMailWithPasswordAndWithoutEnforcedPasswordProtectionWithoutPermanentPassword(): void { $expectedShare = $this->createMock(IShare::class); - $node = $this->getMockBuilder(File::class)->getMock(); + $node = $this->createMock(File::class); $node->expects($this->any())->method('getName')->willReturn('filename'); - $share = $this->getMockBuilder(IShare::class)->getMock(); + $share = $this->createMock(IShare::class); $share->expects($this->any())->method('getSharedWith')->willReturn('receiver@example.com'); $share->expects($this->any())->method('getSendPasswordByTalk')->willReturn(false); $share->expects($this->any())->method('getSharedBy')->willReturn('owner'); @@ -326,10 +328,10 @@ class ShareByMailProviderTest extends TestCase { public function testCreateSendPasswordByMailWithEnforcedPasswordProtectionWithPermanentPassword(): void { $expectedShare = $this->createMock(IShare::class); - $node = $this->getMockBuilder(File::class)->getMock(); + $node = $this->createMock(File::class); $node->expects($this->any())->method('getName')->willReturn('filename'); - $share = $this->getMockBuilder(IShare::class)->getMock(); + $share = $this->createMock(IShare::class); $share->expects($this->any())->method('getSharedWith')->willReturn('receiver@example.com'); $share->expects($this->any())->method('getSendPasswordByTalk')->willReturn(false); $share->expects($this->any())->method('getSharedBy')->willReturn('owner'); @@ -374,26 +376,36 @@ class ShareByMailProviderTest extends TestCase { $message = $this->createMock(IMessage::class); $message->expects($this->exactly(2))->method('setTo')->with(['receiver@example.com']); $this->mailer->expects($this->exactly(2))->method('createMessage')->willReturn($message); - $this->mailer->expects($this->exactly(2))->method('createEMailTemplate') - ->withConsecutive([ - 'sharebymail.RecipientNotification', [ + $calls = [ + [ + 'sharebymail.RecipientNotification', + [ 'filename' => 'filename', 'link' => 'https://example.com/file.txt', 'initiator' => 'owner', 'expiration' => null, 'shareWith' => 'receiver@example.com', - 'note' => '' - ] + 'note' => '', + ], ], + [ + 'sharebymail.RecipientPasswordNotification', [ - 'sharebymail.RecipientPasswordNotification', [ - 'filename' => 'filename', - 'password' => 'autogeneratedPassword', - 'initiator' => 'owner', - 'initiatorEmail' => null, - 'shareWith' => 'receiver@example.com', - ] - ]); + 'filename' => 'filename', + 'password' => 'autogeneratedPassword', + 'initiator' => 'owner', + 'initiatorEmail' => null, + 'shareWith' => 'receiver@example.com', + ], + ], + ]; + $this->mailer->expects($this->exactly(2)) + ->method('createEMailTemplate') + ->willReturnCallback(function () use (&$calls) { + $expected = array_shift($calls); + $this->assertEquals($expected, func_get_args()); + return $this->createMock(IEMailTemplate::class); + }); // Main email notification is sent as well as the password // to the recipient because shareApiLinkEnforcePassword is enabled. @@ -407,10 +419,10 @@ class ShareByMailProviderTest extends TestCase { public function testCreateSendPasswordByMailWithPasswordAndWithEnforcedPasswordProtectionWithPermanentPassword(): void { $expectedShare = $this->createMock(IShare::class); - $node = $this->getMockBuilder(File::class)->getMock(); + $node = $this->createMock(File::class); $node->expects($this->any())->method('getName')->willReturn('filename'); - $share = $this->getMockBuilder(IShare::class)->getMock(); + $share = $this->createMock(IShare::class); $share->expects($this->any())->method('getSharedWith')->willReturn('receiver@example.com'); $share->expects($this->any())->method('getSendPasswordByTalk')->willReturn(false); $share->expects($this->any())->method('getSharedBy')->willReturn('owner'); @@ -448,26 +460,37 @@ class ShareByMailProviderTest extends TestCase { $message = $this->createMock(IMessage::class); $message->expects($this->exactly(2))->method('setTo')->with(['receiver@example.com']); $this->mailer->expects($this->exactly(2))->method('createMessage')->willReturn($message); - $this->mailer->expects($this->exactly(2))->method('createEMailTemplate') - ->withConsecutive([ - 'sharebymail.RecipientNotification', [ + + $calls = [ + [ + 'sharebymail.RecipientNotification', + [ 'filename' => 'filename', 'link' => 'https://example.com/file.txt', 'initiator' => 'owner', 'expiration' => null, 'shareWith' => 'receiver@example.com', - 'note' => '' - ] + 'note' => '', + ], ], + [ + 'sharebymail.RecipientPasswordNotification', [ - 'sharebymail.RecipientPasswordNotification', [ - 'filename' => 'filename', - 'password' => 'password', - 'initiator' => 'owner', - 'initiatorEmail' => null, - 'shareWith' => 'receiver@example.com', - ] - ]); + 'filename' => 'filename', + 'password' => 'password', + 'initiator' => 'owner', + 'initiatorEmail' => null, + 'shareWith' => 'receiver@example.com', + ], + ], + ]; + $this->mailer->expects($this->exactly(2)) + ->method('createEMailTemplate') + ->willReturnCallback(function () use (&$calls) { + $expected = array_shift($calls); + $this->assertEquals($expected, func_get_args()); + return $this->createMock(IEMailTemplate::class); + }); // Main email notification is sent as well as the password // to the recipient because the password is set. @@ -482,15 +505,15 @@ class ShareByMailProviderTest extends TestCase { $expectedShare = $this->createMock(IShare::class); // The owner of the share. - $owner = $this->getMockBuilder(IUser::class)->getMock(); + $owner = $this->createMock(IUser::class); $this->userManager->expects($this->any())->method('get')->with('owner')->willReturn($owner); $owner->expects($this->any())->method('getEMailAddress')->willReturn('owner@example.com'); $owner->expects($this->any())->method('getDisplayName')->willReturn('owner'); - $node = $this->getMockBuilder(File::class)->getMock(); + $node = $this->createMock(File::class); $node->expects($this->any())->method('getName')->willReturn('filename'); - $share = $this->getMockBuilder(IShare::class)->getMock(); + $share = $this->createMock(IShare::class); $share->expects($this->any())->method('getSharedWith')->willReturn('receiver@example.com'); $share->expects($this->any())->method('getSendPasswordByTalk')->willReturn(true); $share->expects($this->any())->method('getSharedBy')->willReturn('owner'); @@ -525,28 +548,49 @@ class ShareByMailProviderTest extends TestCase { $instance->expects($this->once())->method('autoGeneratePassword')->with($share)->willReturn('autogeneratedPassword'); $message = $this->createMock(IMessage::class); - $message->expects($this->exactly(2))->method('setTo')->withConsecutive([['receiver@example.com']], [['owner@example.com' => 'owner']]); + $setToCalls = [ + [['receiver@example.com']], + [['owner@example.com' => 'owner']], + ]; + $message->expects($this->exactly(2)) + ->method('setTo') + ->willReturnCallback(function () use (&$setToCalls, $message) { + $expected = array_shift($setToCalls); + $this->assertEquals($expected, func_get_args()); + return $message; + }); $this->mailer->expects($this->exactly(2))->method('createMessage')->willReturn($message); - $this->mailer->expects($this->exactly(2))->method('createEMailTemplate') - ->withConsecutive([ - 'sharebymail.RecipientNotification', [ + + $calls = [ + [ + 'sharebymail.RecipientNotification', + [ 'filename' => 'filename', 'link' => 'https://example.com/file.txt', 'initiator' => 'owner', 'expiration' => null, 'shareWith' => 'receiver@example.com', - 'note' => '' - ] + 'note' => '', + ], ], + [ + 'sharebymail.OwnerPasswordNotification', [ - 'sharebymail.OwnerPasswordNotification', [ - 'filename' => 'filename', - 'password' => 'autogeneratedPassword', - 'initiator' => 'owner', - 'initiatorEmail' => 'owner@example.com', - 'shareWith' => 'receiver@example.com', - ] - ]); + 'filename' => 'filename', + 'password' => 'autogeneratedPassword', + 'initiator' => 'owner', + 'initiatorEmail' => 'owner@example.com', + 'shareWith' => 'receiver@example.com', + ], + ], + ]; + $this->mailer->expects($this->exactly(2)) + ->method('createEMailTemplate') + ->willReturnCallback(function () use (&$calls) { + $expected = array_shift($calls); + $this->assertEquals($expected, func_get_args()); + return $this->createMock(IEMailTemplate::class); + }); // Main email notification is sent as well as the password to owner // because the password is set and SendPasswordByTalk is enabled. @@ -560,10 +604,10 @@ class ShareByMailProviderTest extends TestCase { public function sendNotificationToMultipleEmails() { $expectedShare = $this->createMock(IShare::class); - $node = $this->getMockBuilder(File::class)->getMock(); + $node = $this->createMock(File::class); $node->expects($this->any())->method('getName')->willReturn('filename'); - $share = $this->getMockBuilder(IShare::class)->getMock(); + $share = $this->createMock(IShare::class); $share->expects($this->any())->method('getSharedWith')->willReturn(''); $share->expects($this->any())->method('getSendPasswordByTalk')->willReturn(false); $share->expects($this->any())->method('getSharedBy')->willReturn('owner'); @@ -572,7 +616,7 @@ class ShareByMailProviderTest extends TestCase { $share->expects($this->any())->method('getNote')->willReturn(''); $share->expects($this->any())->method('getToken')->willReturn('token'); - $attributes = $this->getMockBuilder(IAttributes::class)->getMock(); + $attributes = $this->createMock(IAttributes::class); $share->expects($this->any())->method('getAttributes')->willReturn($attributes); $attributes->expects($this->any())->method('getAttribute')->with('shareWith', 'emails')->willReturn([ 'receiver1@example.com', @@ -607,8 +651,8 @@ class ShareByMailProviderTest extends TestCase { ->with($share, ['receiver1@example.com', 'receiver2@example.com', 'receiver3@example.com']); $instance->expects($this->once())->method('sendPassword')->with($share, 'password'); $instance->expects($this->never())->method('sendPasswordToOwner'); - - + + $message = $this->createMock(IMessage::class); $message->expects($this->never())->method('setTo'); $message->expects($this->exactly(2))->method('setBcc')->with(['receiver1@example.com', 'receiver2@example.com', 'receiver3@example.com']); @@ -626,7 +670,7 @@ class ShareByMailProviderTest extends TestCase { $this->expectException(\Exception::class); $this->share->expects($this->once())->method('getSharedWith')->willReturn('user1'); - $node = $this->getMockBuilder('OCP\Files\Node')->getMock(); + $node = $this->createMock('OCP\Files\Node'); $node->expects($this->any())->method('getName')->willReturn('fileName'); $this->share->expects($this->any())->method('getNode')->willReturn($node); @@ -650,7 +694,7 @@ class ShareByMailProviderTest extends TestCase { $this->share->expects($this->any())->method('getNote')->willReturn('Check this!'); $this->share->expects($this->any())->method('getMailSend')->willReturn(true); - $node = $this->getMockBuilder('OCP\Files\Node')->getMock(); + $node = $this->createMock('OCP\Files\Node'); $node->expects($this->any())->method('getName')->willReturn('fileName'); $this->share->expects($this->any())->method('getNode')->willReturn($node); @@ -788,7 +832,7 @@ class ShareByMailProviderTest extends TestCase { $this->assertSame($note, $result[0]['note']); } - public function dataUpdateSendPassword() { + public static function dataUpdateSendPassword(): array { return [ ['password', 'hashed', 'hashed new', false, false, true], ['', 'hashed', 'hashed new', false, false, false], @@ -802,28 +846,21 @@ class ShareByMailProviderTest extends TestCase { /** * @dataProvider dataUpdateSendPassword - * - * @param string|null plainTextPassword - * @param string originalPassword - * @param string newPassword - * @param string originalSendPasswordByTalk - * @param string newSendPasswordByTalk - * @param bool sendMail */ - public function testUpdateSendPassword($plainTextPassword, string $originalPassword, string $newPassword, $originalSendPasswordByTalk, $newSendPasswordByTalk, bool $sendMail): void { + public function testUpdateSendPassword(?string $plainTextPassword, string $originalPassword, string $newPassword, bool $originalSendPasswordByTalk, bool $newSendPasswordByTalk, bool $sendMail): void { $node = $this->createMock(File::class); $node->expects($this->any())->method('getName')->willReturn('filename'); $this->settingsManager->method('sendPasswordByMail')->willReturn(true); - $originalShare = $this->getMockBuilder(IShare::class)->getMock(); + $originalShare = $this->createMock(IShare::class); $originalShare->expects($this->any())->method('getSharedWith')->willReturn('receiver@example.com'); $originalShare->expects($this->any())->method('getNode')->willReturn($node); $originalShare->expects($this->any())->method('getId')->willReturn(42); $originalShare->expects($this->any())->method('getPassword')->willReturn($originalPassword); $originalShare->expects($this->any())->method('getSendPasswordByTalk')->willReturn($originalSendPasswordByTalk); - $share = $this->getMockBuilder(IShare::class)->getMock(); + $share = $this->createMock(IShare::class); $share->expects($this->any())->method('getSharedWith')->willReturn('receiver@example.com'); $share->expects($this->any())->method('getNode')->willReturn($node); $share->expects($this->any())->method('getId')->willReturn(42); @@ -1155,8 +1192,8 @@ class ShareByMailProviderTest extends TestCase { $provider = $this->getInstance(['sendMailNotification', 'createShareActivity']); $this->mailer->expects($this->any())->method('validateMailAddress')->willReturn(true); - $u1 = $userManager->createUser('testFed', md5(time())); - $u2 = $userManager->createUser('testFed2', md5(time())); + $u1 = $userManager->createUser('testFed', md5((string)time())); + $u2 = $userManager->createUser('testFed2', md5((string)time())); $folder1 = $rootFolder->getUserFolder($u1->getUID())->newFolder('foo'); $file1 = $folder1->newFile('bar1'); @@ -1202,8 +1239,8 @@ class ShareByMailProviderTest extends TestCase { $provider = $this->getInstance(['sendMailNotification', 'createShareActivity']); $this->mailer->expects($this->any())->method('validateMailAddress')->willReturn(true); - $u1 = $userManager->createUser('testFed', md5(time())); - $u2 = $userManager->createUser('testFed2', md5(time())); + $u1 = $userManager->createUser('testFed', md5((string)time())); + $u2 = $userManager->createUser('testFed2', md5((string)time())); $folder = $rootFolder->getUserFolder($u1->getUID())->newFolder('foo'); @@ -1347,17 +1384,17 @@ class ShareByMailProviderTest extends TestCase { ->with('files_sharing.sharecontroller.showShare', ['token' => 'token']) ->willReturn('https://example.com/file.txt'); - $node = $this->getMockBuilder(File::class)->getMock(); + $node = $this->createMock(File::class); $node->expects($this->any())->method('getName')->willReturn('file.txt'); - $share = $this->getMockBuilder(IShare::class)->getMock(); + $share = $this->createMock(IShare::class); $share->expects($this->any())->method('getSharedBy')->willReturn('OwnerUser'); $share->expects($this->any())->method('getSharedWith')->willReturn('john@doe.com'); $share->expects($this->any())->method('getNode')->willReturn($node); $share->expects($this->any())->method('getId')->willReturn(42); $share->expects($this->any())->method('getNote')->willReturn(''); $share->expects($this->any())->method('getToken')->willReturn('token'); - + self::invokePrivate( $provider, 'sendMailNotification', @@ -1469,17 +1506,17 @@ class ShareByMailProviderTest extends TestCase { ->with('files_sharing.sharecontroller.showShare', ['token' => 'token']) ->willReturn('https://example.com/file.txt'); - $node = $this->getMockBuilder(File::class)->getMock(); + $node = $this->createMock(File::class); $node->expects($this->any())->method('getName')->willReturn('file.txt'); - $share = $this->getMockBuilder(IShare::class)->getMock(); + $share = $this->createMock(IShare::class); $share->expects($this->any())->method('getSharedBy')->willReturn('OwnerUser'); $share->expects($this->any())->method('getSharedWith')->willReturn('john@doe.com'); $share->expects($this->any())->method('getNode')->willReturn($node); $share->expects($this->any())->method('getId')->willReturn(42); $share->expects($this->any())->method('getNote')->willReturn('This is a note to the recipient'); $share->expects($this->any())->method('getToken')->willReturn('token'); - + self::invokePrivate( $provider, 'sendMailNotification', @@ -1596,10 +1633,10 @@ class ShareByMailProviderTest extends TestCase { ->with('files_sharing.sharecontroller.showShare', ['token' => 'token']) ->willReturn('https://example.com/file.txt'); - $node = $this->getMockBuilder(File::class)->getMock(); + $node = $this->createMock(File::class); $node->expects($this->any())->method('getName')->willReturn('file.txt'); - $share = $this->getMockBuilder(IShare::class)->getMock(); + $share = $this->createMock(IShare::class); $share->expects($this->any())->method('getSharedBy')->willReturn('OwnerUser'); $share->expects($this->any())->method('getSharedWith')->willReturn('john@doe.com'); $share->expects($this->any())->method('getNode')->willReturn($node); @@ -1607,7 +1644,7 @@ class ShareByMailProviderTest extends TestCase { $share->expects($this->any())->method('getNote')->willReturn(''); $share->expects($this->any())->method('getExpirationDate')->willReturn($expiration); $share->expects($this->any())->method('getToken')->willReturn('token'); - + self::invokePrivate( $provider, 'sendMailNotification', @@ -1694,10 +1731,10 @@ class ShareByMailProviderTest extends TestCase { ->with('files_sharing.sharecontroller.showShare', ['token' => 'token']) ->willReturn('https://example.com/file.txt'); - $node = $this->getMockBuilder(File::class)->getMock(); + $node = $this->createMock(File::class); $node->expects($this->any())->method('getName')->willReturn('file.txt'); - $share = $this->getMockBuilder(IShare::class)->getMock(); + $share = $this->createMock(IShare::class); $share->expects($this->any())->method('getSharedBy')->willReturn('InitiatorUser'); $share->expects($this->any())->method('getSharedWith')->willReturn('john@doe.com'); $share->expects($this->any())->method('getNode')->willReturn($node); @@ -1795,10 +1832,10 @@ class ShareByMailProviderTest extends TestCase { ->with('files_sharing.sharecontroller.showShare', ['token' => 'token']) ->willReturn('https://example.com/file.txt'); - $node = $this->getMockBuilder(File::class)->getMock(); + $node = $this->createMock(File::class); $node->expects($this->any())->method('getName')->willReturn('file.txt'); - $share = $this->getMockBuilder(IShare::class)->getMock(); + $share = $this->createMock(IShare::class); $share->expects($this->any())->method('getSharedBy')->willReturn('OwnerUser'); $share->expects($this->any())->method('getSharedWith')->willReturn('john@doe.com'); $share->expects($this->any())->method('getNode')->willReturn($node); @@ -1892,10 +1929,10 @@ class ShareByMailProviderTest extends TestCase { ->with('files_sharing.sharecontroller.showShare', ['token' => 'token']) ->willReturn('https://example.com/file.txt'); - $node = $this->getMockBuilder(File::class)->getMock(); + $node = $this->createMock(File::class); $node->expects($this->any())->method('getName')->willReturn('file.txt'); - $share = $this->getMockBuilder(IShare::class)->getMock(); + $share = $this->createMock(IShare::class); $share->expects($this->any())->method('getSharedBy')->willReturn('InitiatorUser'); $share->expects($this->any())->method('getSharedWith')->willReturn('john@doe.com'); $share->expects($this->any())->method('getNode')->willReturn($node); diff --git a/apps/systemtags/src/components/SystemTagPicker.vue b/apps/systemtags/src/components/SystemTagPicker.vue index 601e48ea910..9a3b8e19b68 100644 --- a/apps/systemtags/src/components/SystemTagPicker.vue +++ b/apps/systemtags/src/components/SystemTagPicker.vue @@ -241,7 +241,7 @@ export default defineComponent({ } return this.sortedTags - .filter(tag => tag.displayName.normalize().includes(this.input.normalize())) + .filter(tag => tag.displayName.normalize().toLowerCase().includes(this.input.normalize().toLowerCase())) }, hasChanges(): boolean { diff --git a/apps/theming/l10n/et_EE.js b/apps/theming/l10n/et_EE.js index b1157c6daa8..8c9c4cf4a11 100644 --- a/apps/theming/l10n/et_EE.js +++ b/apps/theming/l10n/et_EE.js @@ -58,7 +58,7 @@ OC.L10N.register( "Primary color" : "Põhivärv", "The primary color is used for highlighting elements like important buttons. It might get slightly adjusted depending on the current color schema." : "Põhivärv on mõeldud lehe oluliste elementude rõhutamiseks. Vastavalt valitud üldkujundusele võib see värv ka natuke kohenduda.", "Legal notice link" : "Juriidilise teabe link", - "Privacy policy link" : "Privaatsusreeglite link", + "Privacy policy link" : "Privaatsustingimuste link", "Header logo" : "Päiselogo", "Upload new header logo" : "Laadi üles uus päiselogo", "Favicon" : "Saidi favikon", diff --git a/apps/theming/l10n/et_EE.json b/apps/theming/l10n/et_EE.json index ff9ab984af0..e790923b127 100644 --- a/apps/theming/l10n/et_EE.json +++ b/apps/theming/l10n/et_EE.json @@ -56,7 +56,7 @@ "Primary color" : "Põhivärv", "The primary color is used for highlighting elements like important buttons. It might get slightly adjusted depending on the current color schema." : "Põhivärv on mõeldud lehe oluliste elementude rõhutamiseks. Vastavalt valitud üldkujundusele võib see värv ka natuke kohenduda.", "Legal notice link" : "Juriidilise teabe link", - "Privacy policy link" : "Privaatsusreeglite link", + "Privacy policy link" : "Privaatsustingimuste link", "Header logo" : "Päiselogo", "Upload new header logo" : "Laadi üles uus päiselogo", "Favicon" : "Saidi favikon", diff --git a/apps/theming/tests/CapabilitiesTest.php b/apps/theming/tests/CapabilitiesTest.php index 1274be929ef..f5230d4d6d0 100644 --- a/apps/theming/tests/CapabilitiesTest.php +++ b/apps/theming/tests/CapabilitiesTest.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later @@ -24,22 +26,12 @@ use Test\TestCase; * @package OCA\Theming\Tests */ class CapabilitiesTest extends TestCase { - /** @var ThemingDefaults|MockObject */ - protected $theming; - - /** @var IURLGenerator|MockObject */ - protected $url; - - /** @var IConfig|MockObject */ - protected $config; - - /** @var Util|MockObject */ - protected $util; - + protected ThemingDefaults&MockObject $theming; + protected IURLGenerator&MockObject $url; + protected IConfig&MockObject $config; + protected Util&MockObject $util; protected IUserSession $userSession; - - /** @var Capabilities */ - protected $capabilities; + protected Capabilities $capabilities; protected function setUp(): void { parent::setUp(); @@ -58,7 +50,7 @@ class CapabilitiesTest extends TestCase { ); } - public function dataGetCapabilities() { + public static function dataGetCapabilities(): array { return [ ['name', 'url', 'slogan', '#FFFFFF', '#000000', 'logo', 'background', '#fff', '#000', 'http://absolute/', true, [ 'name' => 'name', @@ -133,18 +125,9 @@ class CapabilitiesTest extends TestCase { /** * @dataProvider dataGetCapabilities - * @param string $name - * @param string $url - * @param string $slogan - * @param string $color - * @param string $textColor - * @param string $logo - * @param string $background - * @param string $baseUrl - * @param bool $backgroundThemed - * @param string[] $expected + * @param non-empty-array<string, string> $expected */ - public function testGetCapabilities($name, $url, $slogan, $color, $textColor, $logo, $background, $backgroundColor, $backgroundTextColor, $baseUrl, $backgroundThemed, array $expected): void { + public function testGetCapabilities(string $name, string $url, string $slogan, string $color, string $textColor, string $logo, string $background, string $backgroundColor, string $backgroundTextColor, string $baseUrl, bool $backgroundThemed, array $expected): void { $this->config->expects($this->once()) ->method('getAppValue') ->willReturn($background); diff --git a/apps/theming/tests/Controller/IconControllerTest.php b/apps/theming/tests/Controller/IconControllerTest.php index 42e841e9a0f..329ad429bc5 100644 --- a/apps/theming/tests/Controller/IconControllerTest.php +++ b/apps/theming/tests/Controller/IconControllerTest.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later @@ -17,29 +19,19 @@ use OCP\AppFramework\Http\DataDisplayResponse; use OCP\AppFramework\Http\FileDisplayResponse; use OCP\AppFramework\Utility\ITimeFactory; use OCP\Files\NotFoundException; -use OCP\IConfig; use OCP\IRequest; +use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; class IconControllerTest extends TestCase { - /** @var IRequest|\PHPUnit\Framework\MockObject\MockObject */ - private $request; - /** @var ThemingDefaults|\PHPUnit\Framework\MockObject\MockObject */ - private $themingDefaults; - /** @var ITimeFactory */ - private $timeFactory; - /** @var IconController|\PHPUnit\Framework\MockObject\MockObject */ - private $iconController; - /** @var IConfig|\PHPUnit\Framework\MockObject\MockObject */ - private $config; - /** @var IconBuilder|\PHPUnit\Framework\MockObject\MockObject */ - private $iconBuilder; - /** @var FileAccessHelper|\PHPUnit\Framework\MockObject\MockObject */ - private $fileAccessHelper; - /** @var IAppManager|\PHPUnit\Framework\MockObject\MockObject */ - private $appManager; - /** @var ImageManager */ - private $imageManager; + private IRequest&MockObject $request; + private ThemingDefaults&MockObject $themingDefaults; + private ITimeFactory&MockObject $timeFactory; + private IconBuilder&MockObject $iconBuilder; + private FileAccessHelper&MockObject $fileAccessHelper; + private IAppManager&MockObject $appManager; + private ImageManager&MockObject $imageManager; + private IconController $iconController; protected function setUp(): void { $this->request = $this->createMock(IRequest::class); diff --git a/apps/theming/tests/Controller/ThemingControllerTest.php b/apps/theming/tests/Controller/ThemingControllerTest.php index 6dfbb72bb77..6fb9be64ad3 100644 --- a/apps/theming/tests/Controller/ThemingControllerTest.php +++ b/apps/theming/tests/Controller/ThemingControllerTest.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later @@ -82,7 +84,7 @@ class ThemingControllerTest extends TestCase { parent::setUp(); } - public function dataUpdateStylesheetSuccess() { + public static function dataUpdateStylesheetSuccess(): array { return [ ['name', str_repeat('a', 250), 'Saved'], ['url', 'https://nextcloud.com/' . str_repeat('a', 478), 'Saved'], @@ -97,12 +99,8 @@ class ThemingControllerTest extends TestCase { /** * @dataProvider dataUpdateStylesheetSuccess - * - * @param string $setting - * @param string $value - * @param string $message */ - public function testUpdateStylesheetSuccess($setting, $value, $message): void { + public function testUpdateStylesheetSuccess(string $setting, string $value, string $message): void { $this->themingDefaults ->expects($this->once()) ->method('set') @@ -126,7 +124,7 @@ class ThemingControllerTest extends TestCase { $this->assertEquals($expected, $this->themingController->updateStylesheet($setting, $value)); } - public function dataUpdateStylesheetError() { + public static function dataUpdateStylesheetError(): array { $urls = [ 'url' => 'web address', 'imprintUrl' => 'legal notice address', @@ -159,12 +157,8 @@ class ThemingControllerTest extends TestCase { /** * @dataProvider dataUpdateStylesheetError - * - * @param string $setting - * @param string $value - * @param string $message */ - public function testUpdateStylesheetError($setting, $value, $message): void { + public function testUpdateStylesheetError(string $setting, string $value, string $message): void { $this->themingDefaults ->expects($this->never()) ->method('set') @@ -254,9 +248,6 @@ class ThemingControllerTest extends TestCase { /** * Checks that trying to upload an SVG favicon without imagemagick * results in an unsupported media type response. - * - * @test - * @return void */ public function testUploadSVGFaviconWithoutImagemagick(): void { $this->imageManager @@ -344,7 +335,7 @@ class ThemingControllerTest extends TestCase { $this->assertEquals($expected, $this->themingController->uploadImage()); } - public function dataUpdateImages() { + public static function dataUpdateImages(): array { return [ ['image/jpeg', false], ['image/jpeg', true], @@ -355,8 +346,10 @@ class ThemingControllerTest extends TestCase { ]; } - /** @dataProvider dataUpdateImages */ - public function testUpdateLogoNormalLogoUpload($mimeType, $folderExists = true): void { + /** + * @dataProvider dataUpdateImages + */ + public function testUpdateLogoNormalLogoUpload(string $mimeType, bool $folderExists = true): void { $tmpLogo = Server::get(ITempManager::class)->getTemporaryFolder() . '/logo.svg'; $destination = Server::get(ITempManager::class)->getTemporaryFolder(); @@ -407,8 +400,7 @@ class ThemingControllerTest extends TestCase { $this->assertEquals($expected, $this->themingController->uploadImage()); } - /** @dataProvider dataUpdateImages */ - public function testUpdateLogoLoginScreenUpload($folderExists): void { + public function testUpdateLogoLoginScreenUpload(): void { $tmpLogo = Server::get(ITempManager::class)->getTemporaryFolder() . 'logo.png'; touch($tmpLogo); @@ -500,7 +492,7 @@ class ThemingControllerTest extends TestCase { $this->assertEquals($expected, $this->themingController->uploadImage()); } - public function dataPhpUploadErrors() { + public static function dataPhpUploadErrors(): array { return [ [UPLOAD_ERR_INI_SIZE, 'The uploaded file exceeds the upload_max_filesize directive in php.ini'], [UPLOAD_ERR_FORM_SIZE, 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'], @@ -515,7 +507,7 @@ class ThemingControllerTest extends TestCase { /** * @dataProvider dataPhpUploadErrors */ - public function testUpdateLogoLoginScreenUploadWithInvalidImageUpload($error, $expectedErrorMessage): void { + public function testUpdateLogoLoginScreenUploadWithInvalidImageUpload(int $error, string $expectedErrorMessage): void { $this->request ->expects($this->once()) ->method('getParam') @@ -615,15 +607,17 @@ class ThemingControllerTest extends TestCase { $this->assertEquals($expected, $this->themingController->undo('MySetting')); } - public function dataUndoDelete() { + public static function dataUndoDelete(): array { return [ [ 'backgroundMime', 'background' ], [ 'logoMime', 'logo' ] ]; } - /** @dataProvider dataUndoDelete */ - public function testUndoDelete($value, $filename): void { + /** + * @dataProvider dataUndoDelete + */ + public function testUndoDelete(string $value, string $filename): void { $this->l10n ->expects($this->once()) ->method('t') @@ -722,7 +716,9 @@ class ThemingControllerTest extends TestCase { ]; } - /** @dataProvider dataGetManifest */ + /** + * @dataProvider dataGetManifest + */ public function testGetManifest(bool $standalone): void { $this->config ->expects($this->once()) diff --git a/apps/theming/tests/Controller/UserThemeControllerTest.php b/apps/theming/tests/Controller/UserThemeControllerTest.php index 7d369463c0d..b830bb5b065 100644 --- a/apps/theming/tests/Controller/UserThemeControllerTest.php +++ b/apps/theming/tests/Controller/UserThemeControllerTest.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later @@ -27,25 +29,17 @@ use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; class UserThemeControllerTest extends TestCase { - /** @var UserThemeController */ - private $userThemeController; - - /** @var IRequest|MockObject */ - private $request; - /** @var IConfig|MockObject */ - private $config; - /** @var IUserSession|MockObject */ - private $userSession; - /** @var ThemeService|MockObject */ - private $themesService; - /** @var ThemingDefaults */ - private $themingDefaults; - /** @var BackgroundService|MockObject */ - private $backgroundService; + private IRequest&MockObject $request; + private IConfig&MockObject $config; + private IUserSession&MockObject $userSession; + private ThemesService&MockObject $themesService; + private ThemingDefaults&MockObject $themingDefaults; + private BackgroundService&MockObject $backgroundService; + private UserThemeController $userThemeController; /** @var ITheme[] */ - private $themes; + private array $themes; protected function setUp(): void { $this->request = $this->createMock(IRequest::class); @@ -85,7 +79,7 @@ class UserThemeControllerTest extends TestCase { parent::setUp(); } - public function dataTestThemes() { + public static function dataTestThemes(): array { return [ ['default'], ['light'], @@ -100,11 +94,8 @@ class UserThemeControllerTest extends TestCase { /** * @dataProvider dataTestThemes - * - * @param string $themeId - * @param string $exception */ - public function testEnableTheme($themeId, ?string $exception = null): void { + public function testEnableTheme(string $themeId, ?string $exception = null): void { $this->themesService ->expects($this->any()) ->method('getThemes') @@ -120,11 +111,8 @@ class UserThemeControllerTest extends TestCase { /** * @dataProvider dataTestThemes - * - * @param string $themeId - * @param string $exception */ - public function testDisableTheme($themeId, ?string $exception = null): void { + public function testDisableTheme(string $themeId, ?string $exception = null): void { $this->themesService ->expects($this->any()) ->method('getThemes') diff --git a/apps/theming/tests/IconBuilderTest.php b/apps/theming/tests/IconBuilderTest.php index c5caa3ff44b..5eb75e7e694 100644 --- a/apps/theming/tests/IconBuilderTest.php +++ b/apps/theming/tests/IconBuilderTest.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later @@ -14,24 +16,17 @@ use OCP\App\IAppManager; use OCP\Files\NotFoundException; use OCP\IConfig; use OCP\ServerVersion; +use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; class IconBuilderTest extends TestCase { - - /** @var IConfig */ - protected $config; - /** @var AppData */ - protected $appData; - /** @var ThemingDefaults */ - protected $themingDefaults; - /** @var Util */ - protected $util; - /** @var ImageManager */ - protected $imageManager; - /** @var IconBuilder */ - protected $iconBuilder; - /** @var IAppManager */ - protected $appManager; + protected IConfig&MockObject $config; + protected AppData&MockObject $appData; + protected ThemingDefaults&MockObject $themingDefaults; + protected ImageManager&MockObject $imageManager; + protected IAppManager&MockObject $appManager; + protected Util $util; + protected IconBuilder $iconBuilder; protected function setUp(): void { parent::setUp(); @@ -58,7 +53,7 @@ class IconBuilderTest extends TestCase { } } - public function dataRenderAppIcon() { + public static function dataRenderAppIcon(): array { return [ ['core', '#0082c9', 'touch-original.png'], ['core', '#FF0000', 'touch-core-red.png'], @@ -70,11 +65,8 @@ class IconBuilderTest extends TestCase { /** * @dataProvider dataRenderAppIcon - * @param $app - * @param $color - * @param $file */ - public function testRenderAppIcon($app, $color, $file): void { + public function testRenderAppIcon(string $app, string $color, string $file): void { $this->checkImagick(); $this->themingDefaults->expects($this->once()) ->method('getColorPrimary') @@ -99,11 +91,8 @@ class IconBuilderTest extends TestCase { /** * @dataProvider dataRenderAppIcon - * @param $app - * @param $color - * @param $file */ - public function testGetTouchIcon($app, $color, $file): void { + public function testGetTouchIcon(string $app, string $color, string $file): void { $this->checkImagick(); $this->themingDefaults->expects($this->once()) ->method('getColorPrimary') @@ -129,11 +118,8 @@ class IconBuilderTest extends TestCase { /** * @dataProvider dataRenderAppIcon - * @param $app - * @param $color - * @param $file */ - public function testGetFavicon($app, $color, $file): void { + public function testGetFavicon(string $app, string $color, string $file): void { $this->checkImagick(); $this->imageManager->expects($this->once()) ->method('shouldReplaceIcons') diff --git a/apps/theming/tests/ImageManagerTest.php b/apps/theming/tests/ImageManagerTest.php index 68c8a06ee2f..c9b930ca8c9 100644 --- a/apps/theming/tests/ImageManagerTest.php +++ b/apps/theming/tests/ImageManagerTest.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later @@ -20,24 +22,14 @@ use Psr\Log\LoggerInterface; use Test\TestCase; class ImageManagerTest extends TestCase { - /** @var IConfig|MockObject */ - protected $config; - /** @var IAppData|MockObject */ - protected $appData; - /** @var ImageManager */ - protected $imageManager; - /** @var IURLGenerator|MockObject */ - private $urlGenerator; - /** @var ICacheFactory|MockObject */ - private $cacheFactory; - /** @var LoggerInterface|MockObject */ - private $logger; - /** @var ITempManager|MockObject */ - private $tempManager; - /** @var ISimpleFolder|MockObject */ - private $rootFolder; - /** @var BackgroundService|MockObject */ - private $backgroundService; + protected IConfig&MockObject $config; + protected IAppData&MockObject $appData; + private IURLGenerator&MockObject $urlGenerator; + private ICacheFactory&MockObject $cacheFactory; + private LoggerInterface&MockObject $logger; + private ITempManager&MockObject $tempManager; + private ISimpleFolder&MockObject $rootFolder; + protected ImageManager $imageManager; protected function setUp(): void { parent::setUp(); @@ -48,7 +40,7 @@ class ImageManagerTest extends TestCase { $this->logger = $this->createMock(LoggerInterface::class); $this->tempManager = $this->createMock(ITempManager::class); $this->rootFolder = $this->createMock(ISimpleFolder::class); - $this->backgroundService = $this->createMock(BackgroundService::class); + $backgroundService = $this->createMock(BackgroundService::class); $this->imageManager = new ImageManager( $this->config, $this->appData, @@ -56,7 +48,7 @@ class ImageManagerTest extends TestCase { $this->cacheFactory, $this->logger, $this->tempManager, - $this->backgroundService, + $backgroundService, ); $this->appData ->expects($this->any()) @@ -309,7 +301,7 @@ class ImageManagerTest extends TestCase { } - public function dataUpdateImage() { + public static function dataUpdateImage(): array { return [ ['background', __DIR__ . '/../../../tests/data/testimage.png', true, false], ['background', __DIR__ . '/../../../tests/data/testimage.png', false, false], @@ -324,7 +316,7 @@ class ImageManagerTest extends TestCase { /** * @dataProvider dataUpdateImage */ - public function testUpdateImage($key, $tmpFile, $folderExists, $shouldConvert): void { + public function testUpdateImage(string $key, string $tmpFile, bool $folderExists, bool $shouldConvert): void { $file = $this->createMock(ISimpleFile::class); $folder = $this->createMock(ISimpleFolder::class); $oldFile = $this->createMock(ISimpleFile::class); diff --git a/apps/theming/tests/Service/ThemesServiceTest.php b/apps/theming/tests/Service/ThemesServiceTest.php index 1b242c956e4..a2c3111fbd1 100644 --- a/apps/theming/tests/Service/ThemesServiceTest.php +++ b/apps/theming/tests/Service/ThemesServiceTest.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later @@ -28,21 +30,15 @@ use Psr\Log\LoggerInterface; use Test\TestCase; class ThemesServiceTest extends TestCase { - /** @var ThemesService */ - private $themesService; - - /** @var IUserSession|MockObject */ - private $userSession; - /** @var IConfig|MockObject */ - private $config; - /** @var LoggerInterface|MockObject */ - private $logger; + private IUserSession&MockObject $userSession; + private IConfig&MockObject $config; + private LoggerInterface&MockObject $logger; - /** @var ThemingDefaults|MockObject */ - private $themingDefaults; + private ThemingDefaults&MockObject $themingDefaults; + private ThemesService $themesService; /** @var ITheme[] */ - private $themes; + private array $themes; protected function setUp(): void { $this->userSession = $this->createMock(IUserSession::class); @@ -119,7 +115,7 @@ class ThemesServiceTest extends TestCase { $this->assertEquals($expected, array_keys($this->themesService->getThemes())); } - public function dataTestEnableTheme() { + public static function dataTestEnableTheme(): array { return [ ['default', ['default'], ['default']], ['dark', ['default'], ['dark']], @@ -132,7 +128,6 @@ class ThemesServiceTest extends TestCase { /** * @dataProvider dataTestEnableTheme * - * @param string $toEnable * @param string[] $enabledThemes * @param string[] $expectedEnabled */ @@ -154,7 +149,7 @@ class ThemesServiceTest extends TestCase { } - public function dataTestDisableTheme() { + public static function dataTestDisableTheme(): array { return [ ['dark', ['default'], ['default']], ['dark', ['dark'], []], @@ -166,7 +161,6 @@ class ThemesServiceTest extends TestCase { /** * @dataProvider dataTestDisableTheme * - * @param string $toEnable * @param string[] $enabledThemes * @param string[] $expectedEnabled */ @@ -189,7 +183,7 @@ class ThemesServiceTest extends TestCase { } - public function dataTestIsEnabled() { + public static function dataTestIsEnabled(): array { return [ ['dark', [], false], ['dark', ['dark'], true], @@ -201,10 +195,9 @@ class ThemesServiceTest extends TestCase { /** * @dataProvider dataTestIsEnabled * - * @param string $toEnable * @param string[] $enabledThemes */ - public function testIsEnabled(string $themeId, array $enabledThemes, $expected): void { + public function testIsEnabled(string $themeId, array $enabledThemes, bool $expected): void { $user = $this->createMock(IUser::class); $this->userSession->expects($this->any()) ->method('getUser') @@ -267,7 +260,7 @@ class ThemesServiceTest extends TestCase { } - public function dataTestSetEnabledThemes() { + public static function dataTestSetEnabledThemes(): array { return [ [[], []], [['light'], ['light']], diff --git a/apps/theming/tests/ServicesTest.php b/apps/theming/tests/ServicesTest.php index 516a1fca776..c9b9a44be0b 100644 --- a/apps/theming/tests/ServicesTest.php +++ b/apps/theming/tests/ServicesTest.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later @@ -26,11 +28,9 @@ use Test\TestCase; * @package OCA\Theming\Tests */ class ServicesTest extends TestCase { - /** @var \OCA\Activity\AppInfo\Application */ - protected $app; + protected App $app; - /** @var IAppContainer */ - protected $container; + protected IAppContainer $container; protected function setUp(): void { parent::setUp(); @@ -38,7 +38,7 @@ class ServicesTest extends TestCase { $this->container = $this->app->getContainer(); } - public function queryData() { + public static function queryData(): array { return [ [IL10N::class], @@ -62,13 +62,11 @@ class ServicesTest extends TestCase { /** * @dataProvider queryData - * @param string $service - * @param string $expected */ - public function testContainerQuery($service, $expected = null): void { + public function testContainerQuery(string $service, ?string $expected = null): void { if ($expected === null) { $expected = $service; } - $this->assertTrue($this->container->query($service) instanceof $expected); + $this->assertInstanceOf($expected, $this->container->query($service)); } } diff --git a/apps/theming/tests/Settings/AdminSectionTest.php b/apps/theming/tests/Settings/AdminSectionTest.php index a73eca1cc5a..ecb889f264b 100644 --- a/apps/theming/tests/Settings/AdminSectionTest.php +++ b/apps/theming/tests/Settings/AdminSectionTest.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later @@ -9,15 +11,13 @@ use OCA\Theming\AppInfo\Application; use OCA\Theming\Settings\AdminSection; use OCP\IL10N; use OCP\IURLGenerator; +use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; class AdminSectionTest extends TestCase { - /** @var IURLGenerator|\PHPUnit\Framework\MockObject\MockObject */ - private $url; - /** @var IL10N|\PHPUnit\Framework\MockObject\MockObject */ - private $l; - /** @var AdminSection */ - private $section; + private IURLGenerator&MockObject $url; + private IL10N&MockObject $l; + private AdminSection $section; protected function setUp(): void { parent::setUp(); diff --git a/apps/theming/tests/Settings/AdminTest.php b/apps/theming/tests/Settings/AdminTest.php index 189a91bae3a..277b94900a8 100644 --- a/apps/theming/tests/Settings/AdminTest.php +++ b/apps/theming/tests/Settings/AdminTest.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later @@ -15,17 +17,18 @@ use OCP\IConfig; use OCP\IL10N; use OCP\INavigationManager; use OCP\IURLGenerator; +use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; class AdminTest extends TestCase { private Admin $admin; - private IConfig $config; - private ThemingDefaults $themingDefaults; - private IInitialState $initialState; - private IURLGenerator $urlGenerator; - private ImageManager $imageManager; - private IL10N $l10n; - private INavigationManager $navigationManager; + private IConfig&MockObject $config; + private ThemingDefaults&MockObject $themingDefaults; + private IInitialState&MockObject $initialState; + private IURLGenerator&MockObject $urlGenerator; + private ImageManager&MockObject $imageManager; + private IL10N&MockObject $l10n; + private INavigationManager&MockObject $navigationManager; protected function setUp(): void { parent::setUp(); diff --git a/apps/theming/tests/Settings/PersonalTest.php b/apps/theming/tests/Settings/PersonalTest.php index 4630ef48c8a..e70ef623809 100644 --- a/apps/theming/tests/Settings/PersonalTest.php +++ b/apps/theming/tests/Settings/PersonalTest.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later @@ -39,7 +41,7 @@ class PersonalTest extends TestCase { private Personal $admin; /** @var ITheme[] */ - private $themes; + private array $themes; protected function setUp(): void { parent::setUp(); @@ -67,8 +69,7 @@ class PersonalTest extends TestCase { ); } - - public function dataTestGetForm() { + public function dataTestGetForm(): array { return [ ['', [ $this->formatThemeForm('default'), @@ -88,10 +89,9 @@ class PersonalTest extends TestCase { /** * @dataProvider dataTestGetForm * - * @param string $toEnable * @param string[] $enabledThemes */ - public function testGetForm(string $enforcedTheme, $themesState): void { + public function testGetForm(string $enforcedTheme, array $themesState): void { $this->config->expects($this->once()) ->method('getSystemValueString') ->with('enforce_theme', '') diff --git a/apps/theming/tests/Themes/AccessibleThemeTestCase.php b/apps/theming/tests/Themes/AccessibleThemeTestCase.php index a1327a04f0b..f3dc2ed53b4 100644 --- a/apps/theming/tests/Themes/AccessibleThemeTestCase.php +++ b/apps/theming/tests/Themes/AccessibleThemeTestCase.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later @@ -16,10 +18,10 @@ class AccessibleThemeTestCase extends TestCase { /** * Set to true to check for WCAG AAA level accessibility */ - protected bool $WCAGaaa = false; + protected static bool $WCAGaaa = false; - public function dataAccessibilityPairs() { - $textContrast = $this->WCAGaaa ? 7.0 : 4.5; + public static function dataAccessibilityPairs(): array { + $textContrast = self::$WCAGaaa ? 7.0 : 4.5; $elementContrast = 3.0; return [ @@ -148,7 +150,7 @@ class AccessibleThemeTestCase extends TestCase { /** * @dataProvider dataAccessibilityPairs */ - public function testAccessibilityOfVariables($mainColors, $backgroundColors, $minContrast): void { + public function testAccessibilityOfVariables(array $mainColors, array $backgroundColors, float $minContrast): void { if (!isset($this->theme)) { $this->markTestSkipped('You need to setup $this->theme in your setUp function'); } elseif (!isset($this->util)) { diff --git a/apps/theming/tests/Themes/DarkHighContrastThemeTest.php b/apps/theming/tests/Themes/DarkHighContrastThemeTest.php index 16f7e86d217..ff4808149ad 100644 --- a/apps/theming/tests/Themes/DarkHighContrastThemeTest.php +++ b/apps/theming/tests/Themes/DarkHighContrastThemeTest.php @@ -22,23 +22,16 @@ use OCP\ServerVersion; use PHPUnit\Framework\MockObject\MockObject; class DarkHighContrastThemeTest extends AccessibleThemeTestCase { - /** @var ThemingDefaults|MockObject */ - private $themingDefaults; - /** @var IUserSession|MockObject */ - private $userSession; - /** @var IURLGenerator|MockObject */ - private $urlGenerator; - /** @var ImageManager|MockObject */ - private $imageManager; - /** @var IConfig|MockObject */ - private $config; - /** @var IL10N|MockObject */ - private $l10n; - /** @var IAppManager|MockObject */ - private $appManager; + private ThemingDefaults&MockObject $themingDefaults; + private IUserSession&MockObject $userSession; + private IURLGenerator&MockObject $urlGenerator; + private ImageManager&MockObject $imageManager; + private IConfig&MockObject $config; + private IL10N&MockObject $l10n; + private IAppManager&MockObject $appManager; // !! important: Enable WCAG AAA tests - protected bool $WCAGaaa = true; + protected static bool $WCAGaaa = true; protected function setUp(): void { $this->themingDefaults = $this->createMock(ThemingDefaults::class); diff --git a/apps/theming/tests/Themes/DarkThemeTest.php b/apps/theming/tests/Themes/DarkThemeTest.php index ea570adf21d..656779b5b24 100644 --- a/apps/theming/tests/Themes/DarkThemeTest.php +++ b/apps/theming/tests/Themes/DarkThemeTest.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later @@ -22,20 +24,13 @@ use OCP\ServerVersion; use PHPUnit\Framework\MockObject\MockObject; class DarkThemeTest extends AccessibleThemeTestCase { - /** @var ThemingDefaults|MockObject */ - private $themingDefaults; - /** @var IUserSession|MockObject */ - private $userSession; - /** @var IURLGenerator|MockObject */ - private $urlGenerator; - /** @var ImageManager|MockObject */ - private $imageManager; - /** @var IConfig|MockObject */ - private $config; - /** @var IL10N|MockObject */ - private $l10n; - /** @var IAppManager|MockObject */ - private $appManager; + private ThemingDefaults&MockObject $themingDefaults; + private IUserSession&MockObject $userSession; + private IURLGenerator&MockObject $urlGenerator; + private ImageManager&MockObject $imageManager; + private IConfig&MockObject $config; + private IL10N&MockObject $l10n; + private IAppManager&MockObject $appManager; protected function setUp(): void { $this->themingDefaults = $this->createMock(ThemingDefaults::class); diff --git a/apps/theming/tests/Themes/DefaultThemeTest.php b/apps/theming/tests/Themes/DefaultThemeTest.php index b463cf4567c..d2606ffc275 100644 --- a/apps/theming/tests/Themes/DefaultThemeTest.php +++ b/apps/theming/tests/Themes/DefaultThemeTest.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later @@ -22,20 +24,13 @@ use OCP\ServerVersion; use PHPUnit\Framework\MockObject\MockObject; class DefaultThemeTest extends AccessibleThemeTestCase { - /** @var ThemingDefaults|MockObject */ - private $themingDefaults; - /** @var IUserSession|MockObject */ - private $userSession; - /** @var IURLGenerator|MockObject */ - private $urlGenerator; - /** @var ImageManager|MockObject */ - private $imageManager; - /** @var IConfig|MockObject */ - private $config; - /** @var IL10N|MockObject */ - private $l10n; - /** @var IAppManager|MockObject */ - private $appManager; + private ThemingDefaults&MockObject $themingDefaults; + private IUserSession&MockObject $userSession; + private IURLGenerator&MockObject $urlGenerator; + private ImageManager&MockObject $imageManager; + private IConfig&MockObject $config; + private IL10N&MockObject $l10n; + private IAppManager&MockObject $appManager; protected function setUp(): void { $this->themingDefaults = $this->createMock(ThemingDefaults::class); diff --git a/apps/theming/tests/Themes/DyslexiaFontTest.php b/apps/theming/tests/Themes/DyslexiaFontTest.php index 4bd8b329f2d..ba27ab592f7 100644 --- a/apps/theming/tests/Themes/DyslexiaFontTest.php +++ b/apps/theming/tests/Themes/DyslexiaFontTest.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later @@ -25,20 +27,13 @@ use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; class DyslexiaFontTest extends TestCase { - /** @var ThemingDefaults|MockObject */ - private $themingDefaults; - /** @var IUserSession|MockObject */ - private $userSession; - /** @var IURLGenerator|MockObject */ - private $urlGenerator; - /** @var ImageManager|MockObject */ - private $imageManager; - /** @var IConfig|MockObject */ - private $config; - /** @var IL10N|MockObject */ - private $l10n; - /** @var IAppManager|MockObject */ - private $appManager; + private ThemingDefaults&MockObject $themingDefaults; + private IUserSession&MockObject $userSession; + private IURLGenerator $urlGenerator; + private ImageManager&MockObject $imageManager; + private IConfig&MockObject $config; + private IL10N&MockObject $l10n; + private IAppManager&MockObject $appManager; private DyslexiaFont $dyslexiaFont; @@ -141,7 +136,7 @@ class DyslexiaFontTest extends TestCase { $this->assertStringStartsWith('OpenDyslexic', $this->dyslexiaFont->getCSSVariables()['--font-face']); } - public function dataTestGetCustomCss() { + public static function dataTestGetCustomCss(): array { return [ ['', true], ['', false], @@ -155,11 +150,8 @@ class DyslexiaFontTest extends TestCase { * * Ensure the fonts are always loaded from the web root * despite having url rewriting enabled or not - * - * @param string $webRoot - * @param bool $prettyUrlsEnabled */ - public function testGetCustomCss($webRoot, $prettyUrlsEnabled): void { + public function testGetCustomCss(string $webRoot, bool $prettyUrlsEnabled): void { \OC::$WEBROOT = $webRoot; $this->config->expects($this->any()) ->method('getSystemValue') diff --git a/apps/theming/tests/Themes/HighContrastThemeTest.php b/apps/theming/tests/Themes/HighContrastThemeTest.php index 71576caf841..94f87d7433b 100644 --- a/apps/theming/tests/Themes/HighContrastThemeTest.php +++ b/apps/theming/tests/Themes/HighContrastThemeTest.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later @@ -22,23 +24,16 @@ use OCP\ServerVersion; use PHPUnit\Framework\MockObject\MockObject; class HighContrastThemeTest extends AccessibleThemeTestCase { - /** @var ThemingDefaults|MockObject */ - private $themingDefaults; - /** @var IUserSession|MockObject */ - private $userSession; - /** @var IURLGenerator|MockObject */ - private $urlGenerator; - /** @var ImageManager|MockObject */ - private $imageManager; - /** @var IConfig|MockObject */ - private $config; - /** @var IL10N|MockObject */ - private $l10n; - /** @var IAppManager|MockObject */ - private $appManager; + private ThemingDefaults&MockObject $themingDefaults; + private IUserSession&MockObject $userSession; + private IURLGenerator&MockObject $urlGenerator; + private ImageManager&MockObject $imageManager; + private IConfig&MockObject $config; + private IL10N&MockObject $l10n; + private IAppManager&MockObject $appManager; // !! important: Enable WCAG AAA tests - protected bool $WCAGaaa = true; + protected static bool $WCAGaaa = true; protected function setUp(): void { $this->themingDefaults = $this->createMock(ThemingDefaults::class); diff --git a/apps/theming/tests/ThemingDefaultsTest.php b/apps/theming/tests/ThemingDefaultsTest.php index b8b6c6869cd..2a0fee6cf16 100644 --- a/apps/theming/tests/ThemingDefaultsTest.php +++ b/apps/theming/tests/ThemingDefaultsTest.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later @@ -27,29 +29,17 @@ class ThemingDefaultsTest extends TestCase { private IAppConfig&MockObject $appConfig; private IConfig&MockObject $config; private \OC_Defaults $defaults; - - /** @var IL10N|\PHPUnit\Framework\MockObject\MockObject */ - private $l10n; - /** @var IUserSession|\PHPUnit\Framework\MockObject\MockObject */ - private $userSession; - /** @var IURLGenerator|\PHPUnit\Framework\MockObject\MockObject */ - private $urlGenerator; - /** @var ICacheFactory|\PHPUnit\Framework\MockObject\MockObject */ - private $cacheFactory; - /** @var ThemingDefaults */ - private $template; - /** @var Util|\PHPUnit\Framework\MockObject\MockObject */ - private $util; - /** @var ICache|\PHPUnit\Framework\MockObject\MockObject */ - private $cache; - /** @var IAppManager|\PHPUnit\Framework\MockObject\MockObject */ - private $appManager; - /** @var ImageManager|\PHPUnit\Framework\MockObject\MockObject */ - private $imageManager; - /** @var INavigationManager|\PHPUnit\Framework\MockObject\MockObject */ - private $navigationManager; - /** @var BackgroundService|\PHPUnit\Framework\MockObject\MockObject */ - private $backgroundService; + private IL10N|MockObject $l10n; + private IUserSession&MockObject $userSession; + private IURLGenerator&MockObject $urlGenerator; + private ICacheFactory&MockObject $cacheFactory; + private Util&MockObject $util; + private ICache&MockObject $cache; + private IAppManager&MockObject $appManager; + private ImageManager&MockObject $imageManager; + private INavigationManager&MockObject $navigationManager; + private BackgroundService&MockObject $backgroundService; + private ThemingDefaults $template; protected function setUp(): void { parent::setUp(); @@ -186,18 +176,17 @@ class ThemingDefaultsTest extends TestCase { $this->assertEquals('https://example.com/', $this->template->getBaseUrl()); } - public function legalUrlProvider() { + public static function legalUrlProvider(): array { return [ - [ '' ], - [ 'https://example.com/legal.html'] + [''], + ['https://example.com/legal.html'], ]; } /** - * @param $imprintUrl * @dataProvider legalUrlProvider */ - public function testGetImprintURL($imprintUrl): void { + public function testGetImprintURL(string $imprintUrl): void { $this->config ->expects($this->once()) ->method('getAppValue') @@ -208,10 +197,9 @@ class ThemingDefaultsTest extends TestCase { } /** - * @param $privacyUrl * @dataProvider legalUrlProvider */ - public function testGetPrivacyURL($privacyUrl): void { + public function testGetPrivacyURL(string $privacyUrl): void { $this->config ->expects($this->once()) ->method('getAppValue') @@ -351,7 +339,7 @@ class ThemingDefaultsTest extends TestCase { $this->assertEquals('<a href="url" target="_blank" rel="noreferrer noopener" class="entity-name">Name</a> – Slogan<br/><span class="footer__legal-links"><a href="https://example.com/imprint" class="legal" target="_blank" rel="noreferrer noopener">Legal notice</a> · <a href="https://example.com/privacy" class="legal" target="_blank" rel="noreferrer noopener">Privacy policy</a></span>', $this->template->getShortFooter()); } - public function invalidLegalUrlProvider() { + public static function invalidLegalUrlProvider(): array { return [ ['example.com/legal'], # missing scheme ['https:///legal'], # missing host @@ -359,10 +347,9 @@ class ThemingDefaultsTest extends TestCase { } /** - * @param $invalidImprintUrl * @dataProvider invalidLegalUrlProvider */ - public function testGetShortFooterInvalidImprint($invalidImprintUrl): void { + public function testGetShortFooterInvalidImprint(string $invalidImprintUrl): void { $this->navigationManager->expects($this->once())->method('getAll')->with(INavigationManager::TYPE_GUEST)->willReturn([]); $this->config ->expects($this->exactly(5)) @@ -379,10 +366,9 @@ class ThemingDefaultsTest extends TestCase { } /** - * @param $invalidPrivacyUrl * @dataProvider invalidLegalUrlProvider */ - public function testGetShortFooterInvalidPrivacy($invalidPrivacyUrl): void { + public function testGetShortFooterInvalidPrivacy(string $invalidPrivacyUrl): void { $this->navigationManager->expects($this->once())->method('getAll')->with(INavigationManager::TYPE_GUEST)->willReturn([]); $this->config ->expects($this->exactly(5)) @@ -428,7 +414,7 @@ class ThemingDefaultsTest extends TestCase { $this->assertEquals('#fff', $this->template->getColorPrimary()); } - public function dataGetColorPrimary() { + public static function dataGetColorPrimary(): array { return [ 'with fallback default' => [ 'disableTheming' => false, @@ -803,7 +789,7 @@ class ThemingDefaultsTest extends TestCase { $this->assertEquals('1234567890', $this->template->getiTunesAppId()); } - public function dataReplaceImagePath() { + public static function dataReplaceImagePath(): array { return [ ['core', 'test.png', false], ['core', 'manifest.json'], @@ -812,8 +798,10 @@ class ThemingDefaultsTest extends TestCase { ]; } - /** @dataProvider dataReplaceImagePath */ - public function testReplaceImagePath($app, $image, $result = 'themingRoute?v=1234abcd'): void { + /** + * @dataProvider dataReplaceImagePath + */ + public function testReplaceImagePath(string $app, string $image, string|bool $result = 'themingRoute?v=1234abcd'): void { $this->cache->expects($this->any()) ->method('get') ->with('shouldReplaceIcons') diff --git a/apps/theming/tests/UtilTest.php b/apps/theming/tests/UtilTest.php index f664a46733d..c0629e425e7 100644 --- a/apps/theming/tests/UtilTest.php +++ b/apps/theming/tests/UtilTest.php @@ -1,4 +1,6 @@ <?php + +declare(strict_types=1); /** * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later @@ -35,7 +37,7 @@ class UtilTest extends TestCase { $this->util = new Util($this->createMock(ServerVersion::class), $this->config, $this->appManager, $this->appData, $this->imageManager); } - public function dataColorContrast() { + public static function dataColorContrast(): array { return [ ['#ffffff', '#FFFFFF', 1], ['#000000', '#000000', 1], @@ -49,11 +51,11 @@ class UtilTest extends TestCase { /** * @dataProvider dataColorContrast */ - public function testColorContrast(string $color1, string $color2, $contrast): void { + public function testColorContrast(string $color1, string $color2, int|float $contrast): void { $this->assertEqualsWithDelta($contrast, $this->util->colorContrast($color1, $color2), .001); } - public function dataInvertTextColor() { + public static function dataInvertTextColor(): array { return [ ['#ffffff', true], ['#000000', false], @@ -64,7 +66,7 @@ class UtilTest extends TestCase { /** * @dataProvider dataInvertTextColor */ - public function testInvertTextColor($color, $expected): void { + public function testInvertTextColor(string $color, bool $expected): void { $invert = $this->util->invertTextColor($color); $this->assertEquals($expected, $invert); } @@ -144,7 +146,7 @@ class UtilTest extends TestCase { /** * @dataProvider dataGetAppIcon */ - public function testGetAppIcon($app, $expected): void { + public function testGetAppIcon(string $app, string $expected): void { $this->appData->expects($this->any()) ->method('getFolder') ->with('global/images') @@ -153,7 +155,7 @@ class UtilTest extends TestCase { $this->assertEquals($expected, $icon); } - public function dataGetAppIcon() { + public static function dataGetAppIcon(): array { return [ ['user_ldap', Server::get(IAppManager::class)->getAppPath('user_ldap') . '/img/app.svg'], ['noapplikethis', \OC::$SERVERROOT . '/core/img/logo/logo.svg'], @@ -179,11 +181,11 @@ class UtilTest extends TestCase { /** * @dataProvider dataGetAppImage */ - public function testGetAppImage($app, $image, $expected): void { + public function testGetAppImage(string $app, string $image, string|bool $expected): void { $this->assertEquals($expected, $this->util->getAppImage($app, $image)); } - public function dataGetAppImage() { + public static function dataGetAppImage(): array { return [ ['core', 'logo/logo.svg', \OC::$SERVERROOT . '/core/img/logo/logo.svg'], ['files', 'folder', \OC::$SERVERROOT . '/apps/files/img/folder.svg'], @@ -217,7 +219,7 @@ class UtilTest extends TestCase { $this->assertTrue($actual); } - public function dataIsBackgroundThemed() { + public static function dataIsBackgroundThemed(): array { return [ ['', false], ['png', true], @@ -227,7 +229,7 @@ class UtilTest extends TestCase { /** * @dataProvider dataIsBackgroundThemed */ - public function testIsBackgroundThemed($backgroundMime, $expected): void { + public function testIsBackgroundThemed(string $backgroundMime, bool $expected): void { $this->config->expects($this->once()) ->method('getAppValue') ->with('theming', 'backgroundMime', '') diff --git a/apps/updatenotification/l10n/et_EE.js b/apps/updatenotification/l10n/et_EE.js index 09ff9d145df..6c2ea50b26c 100644 --- a/apps/updatenotification/l10n/et_EE.js +++ b/apps/updatenotification/l10n/et_EE.js @@ -3,8 +3,8 @@ OC.L10N.register( { "Channel updated" : "Kanal värskendatud", "Web updater is disabled" : "Veebiuuendaja on keelatud", - "App updated" : "Rakendus uuendatud", - "See what's new" : "Kae, mis uut", + "App updated" : "Rakendus on uuendatud", + "See what's new" : "Kae, mida uut leidub", "{app} updated to version {version}" : "{app} uuendati versioonile {version}", "Update notifications" : "Uuendusmärguanded", "The update server could not be reached since %d days to check for new updates." : "Uuenduste serveriga ei ole uuenduste otsimiseks saadud ühendust %d päeva.", @@ -13,26 +13,49 @@ OC.L10N.register( "Update for {app} to version %s is available." : "Uuendus {app} versioonile %s on saadaval.", "Update notification" : "Uuendusmärguanne", "Displays update notifications for Nextcloud, app updates, and provides the SSO for the updater." : "Näitab uuendusmärguannet Nexticloudi, rakenduste uuenduste puhul ja pakub SSO linki nende uuendamiseks.", - "Give feedback" : "Anna tagasisidet", + "Give feedback" : "Jaga tagasisidet", "Get started" : "Alusta", "No changelog available" : "Muudatuste logi pole saadaval", "What's new in {app} {version}" : "Mida uut {app} {version} sisaldab", "A new version is available: <strong>{newVersionString}</strong>" : "Saadaval on uus versioon: <strong>{newVersionString}</strong>", + "Note that after a new release the update only shows up after the first minor release or later. We roll out new versions spread out over time and sometimes skip a version when issues are found. Learn more about updates and release channels at {link}" : "Palun arvesta, et peale uue versiooni ilmumist teave pole kohe saadaval. Me jagame uute versioonide levituse ajas laiali ning vigade tuvastamisel võime ka levitamise katkestada. Lisateave uuenduste ja uuenduskanalite kohta leidub siin: {link}", "Checked on {lastCheckedDate} - Open changelog" : "Kontrollitud {lastCheckedDate} - Ava muudatuste logi", + "Checking apps for compatible versions" : "Kontrollin rakenduste ühilduvaid versioone", + "Please make sure your config.php does not set <samp>appstoreenabled</samp> to false." : "Palun kontrolli, et selle serveri config.php failis poleks <samp>appstoreenabled</samp> võtme väärtuseks „false“.", + "Could not connect to the App Store or no updates have been returned at all. Search manually for updates or make sure your server has access to the internet and can connect to the App Store." : "Kas rakendustepoega polnud võimalik ühendust luua või päringu vastuses polnud uuenduste teavet. Otsi uuendusi käsitsi või kontrolli, et serveri internetiühendus toimib ja tal on võimalik rakendustepoe liidesele ligi saada.", + "<strong>All</strong> apps have a compatible version for this Nextcloud version available." : "<strong>Kõikidel</strong> rakendustel on selle Nextcloudi versiooniga ühilduv versioon.", + "_<strong>%n</strong> app has no compatible version for this Nextcloud version available._::_<strong>%n</strong> apps have no compatible version for this Nextcloud version available._" : ["1%n1 rakenduse versioon ei ühildus selle Nextcloudi versiooniga.","<strong>%n</strong> rakenduse versioon ei ühildus selle Nextcloudi versiooniga."], + "Enterprise" : "Suurorganisatsioonide versioon", + "For enterprise use. Provides always the latest patch level, but will not update to the next major release immediately. That update happens once Nextcloud GmbH has done additional hardening and testing for large-scale and mission-critical deployments. This channel is only available to customers and provides the Nextcloud Enterprise package." : "Mõeldud suurorganisatsioonidele. Tagab alati, et viimased pisiparandused on lisatud, kuid järgmine suurem uuendus mitte. See on võimalik alles siis, kui Nextcloud GmbH on lisanud tugevdusmeetmeid ja läbinud suurte ning missioonikriitiliste paigalduste kontekstis vajaliku testimise. See uuenduskanal on saadaval vaid lepingulistele klientidele ning on osa Nextcloudi paketist suurorganisatsioonidele (Nextcloud Enterprise).", + "Stable" : "Stabiilne versioon", + "The most recent stable version. It is suited for regular use and will always update to the latest major version." : "Viimane stabiilne versioon. Sobib tavakasutuseks ning alati sisaldab uuendamist viimase põhiversioonini.", + "Beta" : "Beetaversioon", + "A pre-release version only for testing new features, not for production environments." : "Eelversioon uute funktsionaalsuste testimiseks ning ei sobi kasutamiseks igapäevases tarvekeskkonnas.", "Update" : "Uuenda", "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "Versiooni, mida kasutad, ei uuendata enam. Palun uuenda toetatud versioonile võimalikult kiiresti.", "Apps missing compatible version" : "Rakendustel puuduvad toetatud versioonid", "View in store" : "Vaata poes", "Apps with compatible version" : "Rakendused toetatud versiooniga", + "Please note that the web updater is not recommended with more than 100 accounts! Please use the command line updater instead!" : "Palun arvesta, et veebipõhine uuendaja pole soovitatav, kui serveris on üle 100 kasutajakonto! Sel puhul kasuta käsureapõhist uuendajat!", "Open updater" : "Ava uuendaja", "Download now" : "Laadi kohe alla", + "Web updater is disabled. Please use the command line updater or the appropriate update mechanism for your installation method (e.g. Docker pull) to update." : "Veebipõhine uuendaja pole kasutusel. Palun kasuta tarkvara uuendamiseks käsureapõhist uuendajat või sinu paigalduse meetodile ettenähtud lahendust (nt. Docker pull).", "What's new?" : "Mida on uut?", "View changelog" : "Vaata muudatuste logi", "The update check is not yet finished. Please refresh the page." : "Uuenduste kontrollimine pole veel lõppenud. Palun värskendage lehte.", "Your version is up to date." : "Su versioon on ajakohane.", + "A non-default update server is in use to be checked for updates:" : "Uuenduste kontrollimiseks on kasutav vaikimisi serverist erinev server:", "Update channel" : "Uuenduste kanal", + "Changing the update channel also affects the apps management page. E.g. after switching to the beta channel, beta app updates will be offered to you in the apps management page." : "Uuenduskanalite muutmine mõjutab ka rakenduste haldamise lehte. Kui võtad serveri jaoks kasutusele beetaversiooni, siis pakutakse sulle selles vaates ka rakenduste beetaversioone.", "Current update channel:" : "Praegune uuenduste kanal:", + "You can always update to a newer version. But you can never downgrade to a more stable version." : "Sa saad alati uuendada järgmisele stabiilsele versioonile, kuid ei saa kasutusele võtta eelmist stabiilset versiooni.", "Notify members of the following groups about available updates:" : "Teavita jägmiste gruppide liikmeid saadaval olevatest uuendustest:", + "No groups" : "Gruppe pole", + "Only notifications for app updates are available." : "Vaid rakenduste uuenduste märguanded on saadaval.", + "The selected update channel makes dedicated notifications for the server obsolete." : "Valitud uuenduskanal muudab serveri uuendusmärguanded mõttetuks.", + "The selected update channel does not support updates of the server." : "Valitud uuenduskanal ei toeta selle serveri uuendamist.", + "Changelog for app {app}" : "{app} rakenduse muudatuste logi", + "What's new in {app} version {version}" : "Mida uut {app} {version} sisaldab", "{version} is available. Get more information on how to update." : "{version} on saadaval. Vaata lisainfot uuendamise kohta." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/updatenotification/l10n/et_EE.json b/apps/updatenotification/l10n/et_EE.json index c90d20ec341..5fb637195ae 100644 --- a/apps/updatenotification/l10n/et_EE.json +++ b/apps/updatenotification/l10n/et_EE.json @@ -1,8 +1,8 @@ { "translations": { "Channel updated" : "Kanal värskendatud", "Web updater is disabled" : "Veebiuuendaja on keelatud", - "App updated" : "Rakendus uuendatud", - "See what's new" : "Kae, mis uut", + "App updated" : "Rakendus on uuendatud", + "See what's new" : "Kae, mida uut leidub", "{app} updated to version {version}" : "{app} uuendati versioonile {version}", "Update notifications" : "Uuendusmärguanded", "The update server could not be reached since %d days to check for new updates." : "Uuenduste serveriga ei ole uuenduste otsimiseks saadud ühendust %d päeva.", @@ -11,26 +11,49 @@ "Update for {app} to version %s is available." : "Uuendus {app} versioonile %s on saadaval.", "Update notification" : "Uuendusmärguanne", "Displays update notifications for Nextcloud, app updates, and provides the SSO for the updater." : "Näitab uuendusmärguannet Nexticloudi, rakenduste uuenduste puhul ja pakub SSO linki nende uuendamiseks.", - "Give feedback" : "Anna tagasisidet", + "Give feedback" : "Jaga tagasisidet", "Get started" : "Alusta", "No changelog available" : "Muudatuste logi pole saadaval", "What's new in {app} {version}" : "Mida uut {app} {version} sisaldab", "A new version is available: <strong>{newVersionString}</strong>" : "Saadaval on uus versioon: <strong>{newVersionString}</strong>", + "Note that after a new release the update only shows up after the first minor release or later. We roll out new versions spread out over time and sometimes skip a version when issues are found. Learn more about updates and release channels at {link}" : "Palun arvesta, et peale uue versiooni ilmumist teave pole kohe saadaval. Me jagame uute versioonide levituse ajas laiali ning vigade tuvastamisel võime ka levitamise katkestada. Lisateave uuenduste ja uuenduskanalite kohta leidub siin: {link}", "Checked on {lastCheckedDate} - Open changelog" : "Kontrollitud {lastCheckedDate} - Ava muudatuste logi", + "Checking apps for compatible versions" : "Kontrollin rakenduste ühilduvaid versioone", + "Please make sure your config.php does not set <samp>appstoreenabled</samp> to false." : "Palun kontrolli, et selle serveri config.php failis poleks <samp>appstoreenabled</samp> võtme väärtuseks „false“.", + "Could not connect to the App Store or no updates have been returned at all. Search manually for updates or make sure your server has access to the internet and can connect to the App Store." : "Kas rakendustepoega polnud võimalik ühendust luua või päringu vastuses polnud uuenduste teavet. Otsi uuendusi käsitsi või kontrolli, et serveri internetiühendus toimib ja tal on võimalik rakendustepoe liidesele ligi saada.", + "<strong>All</strong> apps have a compatible version for this Nextcloud version available." : "<strong>Kõikidel</strong> rakendustel on selle Nextcloudi versiooniga ühilduv versioon.", + "_<strong>%n</strong> app has no compatible version for this Nextcloud version available._::_<strong>%n</strong> apps have no compatible version for this Nextcloud version available._" : ["1%n1 rakenduse versioon ei ühildus selle Nextcloudi versiooniga.","<strong>%n</strong> rakenduse versioon ei ühildus selle Nextcloudi versiooniga."], + "Enterprise" : "Suurorganisatsioonide versioon", + "For enterprise use. Provides always the latest patch level, but will not update to the next major release immediately. That update happens once Nextcloud GmbH has done additional hardening and testing for large-scale and mission-critical deployments. This channel is only available to customers and provides the Nextcloud Enterprise package." : "Mõeldud suurorganisatsioonidele. Tagab alati, et viimased pisiparandused on lisatud, kuid järgmine suurem uuendus mitte. See on võimalik alles siis, kui Nextcloud GmbH on lisanud tugevdusmeetmeid ja läbinud suurte ning missioonikriitiliste paigalduste kontekstis vajaliku testimise. See uuenduskanal on saadaval vaid lepingulistele klientidele ning on osa Nextcloudi paketist suurorganisatsioonidele (Nextcloud Enterprise).", + "Stable" : "Stabiilne versioon", + "The most recent stable version. It is suited for regular use and will always update to the latest major version." : "Viimane stabiilne versioon. Sobib tavakasutuseks ning alati sisaldab uuendamist viimase põhiversioonini.", + "Beta" : "Beetaversioon", + "A pre-release version only for testing new features, not for production environments." : "Eelversioon uute funktsionaalsuste testimiseks ning ei sobi kasutamiseks igapäevases tarvekeskkonnas.", "Update" : "Uuenda", "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "Versiooni, mida kasutad, ei uuendata enam. Palun uuenda toetatud versioonile võimalikult kiiresti.", "Apps missing compatible version" : "Rakendustel puuduvad toetatud versioonid", "View in store" : "Vaata poes", "Apps with compatible version" : "Rakendused toetatud versiooniga", + "Please note that the web updater is not recommended with more than 100 accounts! Please use the command line updater instead!" : "Palun arvesta, et veebipõhine uuendaja pole soovitatav, kui serveris on üle 100 kasutajakonto! Sel puhul kasuta käsureapõhist uuendajat!", "Open updater" : "Ava uuendaja", "Download now" : "Laadi kohe alla", + "Web updater is disabled. Please use the command line updater or the appropriate update mechanism for your installation method (e.g. Docker pull) to update." : "Veebipõhine uuendaja pole kasutusel. Palun kasuta tarkvara uuendamiseks käsureapõhist uuendajat või sinu paigalduse meetodile ettenähtud lahendust (nt. Docker pull).", "What's new?" : "Mida on uut?", "View changelog" : "Vaata muudatuste logi", "The update check is not yet finished. Please refresh the page." : "Uuenduste kontrollimine pole veel lõppenud. Palun värskendage lehte.", "Your version is up to date." : "Su versioon on ajakohane.", + "A non-default update server is in use to be checked for updates:" : "Uuenduste kontrollimiseks on kasutav vaikimisi serverist erinev server:", "Update channel" : "Uuenduste kanal", + "Changing the update channel also affects the apps management page. E.g. after switching to the beta channel, beta app updates will be offered to you in the apps management page." : "Uuenduskanalite muutmine mõjutab ka rakenduste haldamise lehte. Kui võtad serveri jaoks kasutusele beetaversiooni, siis pakutakse sulle selles vaates ka rakenduste beetaversioone.", "Current update channel:" : "Praegune uuenduste kanal:", + "You can always update to a newer version. But you can never downgrade to a more stable version." : "Sa saad alati uuendada järgmisele stabiilsele versioonile, kuid ei saa kasutusele võtta eelmist stabiilset versiooni.", "Notify members of the following groups about available updates:" : "Teavita jägmiste gruppide liikmeid saadaval olevatest uuendustest:", + "No groups" : "Gruppe pole", + "Only notifications for app updates are available." : "Vaid rakenduste uuenduste märguanded on saadaval.", + "The selected update channel makes dedicated notifications for the server obsolete." : "Valitud uuenduskanal muudab serveri uuendusmärguanded mõttetuks.", + "The selected update channel does not support updates of the server." : "Valitud uuenduskanal ei toeta selle serveri uuendamist.", + "Changelog for app {app}" : "{app} rakenduse muudatuste logi", + "What's new in {app} version {version}" : "Mida uut {app} {version} sisaldab", "{version} is available. Get more information on how to update." : "{version} on saadaval. Vaata lisainfot uuendamise kohta." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/core/Listener/FeedBackHandler.php b/core/Listener/FeedBackHandler.php new file mode 100644 index 00000000000..d355b63f1bc --- /dev/null +++ b/core/Listener/FeedBackHandler.php @@ -0,0 +1,60 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only + */ + +namespace OC\Core\Listener; + +use OC\Repair\Events\RepairAdvanceEvent; +use OC\Repair\Events\RepairErrorEvent; +use OC\Repair\Events\RepairFinishEvent; +use OC\Repair\Events\RepairInfoEvent; +use OC\Repair\Events\RepairStartEvent; +use OC\Repair\Events\RepairStepEvent; +use OC\Repair\Events\RepairWarningEvent; +use OCP\EventDispatcher\Event; +use OCP\IEventSource; +use OCP\IL10N; + +class FeedBackHandler { + private int $progressStateMax = 100; + private int $progressStateStep = 0; + private string $currentStep = ''; + + public function __construct( + private IEventSource $eventSource, + private IL10N $l10n, + ) { + } + + public function handleRepairFeedback(Event $event): void { + if ($event instanceof RepairStartEvent) { + $this->progressStateMax = $event->getMaxStep(); + $this->progressStateStep = 0; + $this->currentStep = $event->getCurrentStepName(); + } elseif ($event instanceof RepairAdvanceEvent) { + $this->progressStateStep += $event->getIncrement(); + $desc = $event->getDescription(); + if (empty($desc)) { + $desc = $this->currentStep; + } + $this->eventSource->send('success', $this->l10n->t('[%d / %d]: %s', [$this->progressStateStep, $this->progressStateMax, $desc])); + } elseif ($event instanceof RepairFinishEvent) { + $this->progressStateMax = $this->progressStateStep; + $this->eventSource->send('success', $this->l10n->t('[%d / %d]: %s', [$this->progressStateStep, $this->progressStateMax, $this->currentStep])); + } elseif ($event instanceof RepairStepEvent) { + $this->eventSource->send('success', $this->l10n->t('Repair step:') . ' ' . $event->getStepName()); + } elseif ($event instanceof RepairInfoEvent) { + $this->eventSource->send('success', $this->l10n->t('Repair info:') . ' ' . $event->getMessage()); + } elseif ($event instanceof RepairWarningEvent) { + $this->eventSource->send('notice', $this->l10n->t('Repair warning:') . ' ' . $event->getMessage()); + } elseif ($event instanceof RepairErrorEvent) { + $this->eventSource->send('error', $this->l10n->t('Repair error:') . ' ' . $event->getMessage()); + } + } +} diff --git a/core/ajax/update.php b/core/ajax/update.php index 798a81ff6ee..bd653d331ce 100644 --- a/core/ajax/update.php +++ b/core/ajax/update.php @@ -21,7 +21,6 @@ use OCP\EventDispatcher\Event; use OCP\EventDispatcher\IEventDispatcher; use OCP\IAppConfig; use OCP\IConfig; -use OCP\IEventSource; use OCP\IEventSourceFactory; use OCP\IL10N; use OCP\L10N\IFactory; @@ -45,44 +44,6 @@ $eventSource = Server::get(IEventSourceFactory::class)->create(); // message $eventSource->send('success', $l->t('Preparing update')); -class FeedBackHandler { - private int $progressStateMax = 100; - private int $progressStateStep = 0; - private string $currentStep = ''; - - public function __construct( - private IEventSource $eventSource, - private IL10N $l10n, - ) { - } - - public function handleRepairFeedback(Event $event): void { - if ($event instanceof RepairStartEvent) { - $this->progressStateMax = $event->getMaxStep(); - $this->progressStateStep = 0; - $this->currentStep = $event->getCurrentStepName(); - } elseif ($event instanceof RepairAdvanceEvent) { - $this->progressStateStep += $event->getIncrement(); - $desc = $event->getDescription(); - if (empty($desc)) { - $desc = $this->currentStep; - } - $this->eventSource->send('success', $this->l10n->t('[%d / %d]: %s', [$this->progressStateStep, $this->progressStateMax, $desc])); - } elseif ($event instanceof RepairFinishEvent) { - $this->progressStateMax = $this->progressStateStep; - $this->eventSource->send('success', $this->l10n->t('[%d / %d]: %s', [$this->progressStateStep, $this->progressStateMax, $this->currentStep])); - } elseif ($event instanceof RepairStepEvent) { - $this->eventSource->send('success', $this->l10n->t('Repair step:') . ' ' . $event->getStepName()); - } elseif ($event instanceof RepairInfoEvent) { - $this->eventSource->send('success', $this->l10n->t('Repair info:') . ' ' . $event->getMessage()); - } elseif ($event instanceof RepairWarningEvent) { - $this->eventSource->send('notice', $this->l10n->t('Repair warning:') . ' ' . $event->getMessage()); - } elseif ($event instanceof RepairErrorEvent) { - $this->eventSource->send('error', $this->l10n->t('Repair error:') . ' ' . $event->getMessage()); - } - } -} - if (Util::needUpgrade()) { $config = Server::get(SystemConfig::class); if ($config->getValue('upgrade.disable-web', false)) { @@ -115,7 +76,7 @@ if (Util::needUpgrade()) { $eventSource->send('success', $l->t('[%d / %d]: %s', [$event->getCurrentStep(), $event->getMaxStep(), $event->getSql()])); } ); - $feedBack = new FeedBackHandler($eventSource, $l); + $feedBack = new \OC\Core\Listener\FeedBackHandler($eventSource, $l); $dispatcher->addListener(RepairStartEvent::class, [$feedBack, 'handleRepairFeedback']); $dispatcher->addListener(RepairAdvanceEvent::class, [$feedBack, 'handleRepairFeedback']); $dispatcher->addListener(RepairFinishEvent::class, [$feedBack, 'handleRepairFeedback']); diff --git a/core/l10n/cs.js b/core/l10n/cs.js index 46bc6351786..8ddbe2662cc 100644 --- a/core/l10n/cs.js +++ b/core/l10n/cs.js @@ -83,6 +83,7 @@ OC.L10N.register( "Windows Command Script" : "Windows cmd skript", "Electronic book document" : "Dokument – elektronická knížka", "TrueType Font Collection" : "Sada TrueType písem", + "Web Open Font Format" : "Písmo ve formátu Web Open", "GPX geographic data" : "Geografická data GPX", "Gzip archive" : "Gzip archiv", "Adobe Illustrator document" : "Dokument Adobe Illustrator", @@ -98,8 +99,11 @@ OC.L10N.register( "RSS summary" : "RSS shrnutí", "Android package" : "Balíček pro Android", "KML geographic data" : "Geografická data KML", + "KML geographic compressed data" : "Komprimovaná KLM geografická data", + "Lotus Word Pro document" : "Dokument Lotus Word Pro", "Excel spreadsheet" : "Sešit Excel", "Excel add-in" : "Doplněk do Excel", + "Excel 2007 binary spreadsheet" : "Sešit Excel 2007 (v binárním formátu)", "Excel spreadsheet template" : "Šablona sešitu Excel", "Outlook Message" : "Outlook zpráva", "PowerPoint presentation" : "PowerPoint prezentace", @@ -108,15 +112,25 @@ OC.L10N.register( "Word document" : "Dokument Word", "ODF formula" : "ODF vzorec", "ODG drawing" : "ODG kresba", + "ODG drawing (Flat XML)" : "Kresba ve formátu ODG (ploché XML)", "ODG template" : "ODG šablona", "ODP presentation" : "ODP prezentace", + "ODP presentation (Flat XML)" : "Prezentace ve formátu ODP (ploché XML)", "ODP template" : "ODP šablona", "ODS spreadsheet" : "ODS šablona", + "ODS spreadsheet (Flat XML)" : "Sešit ve formátu ODS (ploché XML)", "ODS template" : "ODS šablona", "ODT document" : "ODT dokument", + "ODT document (Flat XML)" : "Dokument ve formátu ODT (ploché XML)", "ODT template" : "ODT šablona", "PowerPoint 2007 presentation" : "Prezentace PowerPoint 2007", "PowerPoint 2007 show" : "Show PowerPoint 2007", + "PowerPoint 2007 presentation template" : "Šablona prezentace PowerPoint 2007", + "Excel 2007 spreadsheet" : "Sešit Excel 2007", + "Excel 2007 spreadsheet template" : "Šablona sešitu Excel 2007", + "Word 2007 document" : "Dokument Word 2007", + "Word 2007 document template" : "Šablona dokumentu Word 2007", + "Microsoft Visio document" : "Dokument Microsoft Visio", "WordPerfect document" : "WordPerfect dolument", "7-zip archive" : "7-zip archiv", "Blender scene" : "Scéna v Blenderu", @@ -126,6 +140,7 @@ OC.L10N.register( "Unknown font" : "Neznámé písmo", "Krita document" : "Krita dokument", "Mobipocket e-book" : "Mobipocket e-kniha", + "Windows Installer package" : "Balíček Windows instalátoru", "Perl script" : "Perl skript", "PHP script" : "PHP skript", "Tar archive" : "Tar archiv", @@ -138,16 +153,23 @@ OC.L10N.register( "MPEG-4 audio" : "MPEG-4 audio", "MP3 audio" : "MP3 audio", "Ogg audio" : "Ogg audio", + "RIFF/WAVe standard Audio" : "Audio ve standardu RIFF/WAVe", "WebM audio" : "WebM audio", + "MP3 ShoutCast playlist" : "Seznam stop MP3 ShoutCast", + "Windows BMP image" : "Windows BMP obrázek", + "Better Portable Graphics image" : "Obrázek ve formátu Beter Portable Graphics", "EMF image" : "EMF obrázek", "GIF image" : "GIF obrázek", "HEIC image" : "HEIC obrázek", "HEIF image" : "HEIF obrázek", + "JPEG-2000 JP2 image" : "Obrázek JPEG-2000 JP2", "JPEG image" : "JPEG obrázek", "PNG image" : "Obrázek PNG", "SVG image" : "SVG obrázek", + "Truevision Targa image" : "Obrázek Truevision Targa", "TIFF image" : "TIFF obrázek", "WebP image" : "WebP obrázek", + "Digital raw image" : "Obrázek – digitální negativ", "Windows Icon" : "Windows ikona", "Email message" : "E-mailová zpráva", "VCS/ICS calendar" : "VCS/ICS kalednář", @@ -156,6 +178,10 @@ OC.L10N.register( "HTML document" : "HTML dokument", "Markdown document" : "Markdown dokument", "Org-mode file" : "soubor Org-mode", + "Plain text document" : "Dokument neformátovaného textu", + "Rich Text document" : "Dokument typu Rich Text", + "Electronic business card" : "Elektronická vizitka", + "C++ source code" : "Zdrojový kód v C++", "LDIF address book" : "LDIF adresář kontaktů", "NFO document" : "NFO dokument", "PHP source" : "PHP zdrojové kódy", diff --git a/core/l10n/cs.json b/core/l10n/cs.json index 809a4448ebf..f2a73b8d152 100644 --- a/core/l10n/cs.json +++ b/core/l10n/cs.json @@ -81,6 +81,7 @@ "Windows Command Script" : "Windows cmd skript", "Electronic book document" : "Dokument – elektronická knížka", "TrueType Font Collection" : "Sada TrueType písem", + "Web Open Font Format" : "Písmo ve formátu Web Open", "GPX geographic data" : "Geografická data GPX", "Gzip archive" : "Gzip archiv", "Adobe Illustrator document" : "Dokument Adobe Illustrator", @@ -96,8 +97,11 @@ "RSS summary" : "RSS shrnutí", "Android package" : "Balíček pro Android", "KML geographic data" : "Geografická data KML", + "KML geographic compressed data" : "Komprimovaná KLM geografická data", + "Lotus Word Pro document" : "Dokument Lotus Word Pro", "Excel spreadsheet" : "Sešit Excel", "Excel add-in" : "Doplněk do Excel", + "Excel 2007 binary spreadsheet" : "Sešit Excel 2007 (v binárním formátu)", "Excel spreadsheet template" : "Šablona sešitu Excel", "Outlook Message" : "Outlook zpráva", "PowerPoint presentation" : "PowerPoint prezentace", @@ -106,15 +110,25 @@ "Word document" : "Dokument Word", "ODF formula" : "ODF vzorec", "ODG drawing" : "ODG kresba", + "ODG drawing (Flat XML)" : "Kresba ve formátu ODG (ploché XML)", "ODG template" : "ODG šablona", "ODP presentation" : "ODP prezentace", + "ODP presentation (Flat XML)" : "Prezentace ve formátu ODP (ploché XML)", "ODP template" : "ODP šablona", "ODS spreadsheet" : "ODS šablona", + "ODS spreadsheet (Flat XML)" : "Sešit ve formátu ODS (ploché XML)", "ODS template" : "ODS šablona", "ODT document" : "ODT dokument", + "ODT document (Flat XML)" : "Dokument ve formátu ODT (ploché XML)", "ODT template" : "ODT šablona", "PowerPoint 2007 presentation" : "Prezentace PowerPoint 2007", "PowerPoint 2007 show" : "Show PowerPoint 2007", + "PowerPoint 2007 presentation template" : "Šablona prezentace PowerPoint 2007", + "Excel 2007 spreadsheet" : "Sešit Excel 2007", + "Excel 2007 spreadsheet template" : "Šablona sešitu Excel 2007", + "Word 2007 document" : "Dokument Word 2007", + "Word 2007 document template" : "Šablona dokumentu Word 2007", + "Microsoft Visio document" : "Dokument Microsoft Visio", "WordPerfect document" : "WordPerfect dolument", "7-zip archive" : "7-zip archiv", "Blender scene" : "Scéna v Blenderu", @@ -124,6 +138,7 @@ "Unknown font" : "Neznámé písmo", "Krita document" : "Krita dokument", "Mobipocket e-book" : "Mobipocket e-kniha", + "Windows Installer package" : "Balíček Windows instalátoru", "Perl script" : "Perl skript", "PHP script" : "PHP skript", "Tar archive" : "Tar archiv", @@ -136,16 +151,23 @@ "MPEG-4 audio" : "MPEG-4 audio", "MP3 audio" : "MP3 audio", "Ogg audio" : "Ogg audio", + "RIFF/WAVe standard Audio" : "Audio ve standardu RIFF/WAVe", "WebM audio" : "WebM audio", + "MP3 ShoutCast playlist" : "Seznam stop MP3 ShoutCast", + "Windows BMP image" : "Windows BMP obrázek", + "Better Portable Graphics image" : "Obrázek ve formátu Beter Portable Graphics", "EMF image" : "EMF obrázek", "GIF image" : "GIF obrázek", "HEIC image" : "HEIC obrázek", "HEIF image" : "HEIF obrázek", + "JPEG-2000 JP2 image" : "Obrázek JPEG-2000 JP2", "JPEG image" : "JPEG obrázek", "PNG image" : "Obrázek PNG", "SVG image" : "SVG obrázek", + "Truevision Targa image" : "Obrázek Truevision Targa", "TIFF image" : "TIFF obrázek", "WebP image" : "WebP obrázek", + "Digital raw image" : "Obrázek – digitální negativ", "Windows Icon" : "Windows ikona", "Email message" : "E-mailová zpráva", "VCS/ICS calendar" : "VCS/ICS kalednář", @@ -154,6 +176,10 @@ "HTML document" : "HTML dokument", "Markdown document" : "Markdown dokument", "Org-mode file" : "soubor Org-mode", + "Plain text document" : "Dokument neformátovaného textu", + "Rich Text document" : "Dokument typu Rich Text", + "Electronic business card" : "Elektronická vizitka", + "C++ source code" : "Zdrojový kód v C++", "LDIF address book" : "LDIF adresář kontaktů", "NFO document" : "NFO dokument", "PHP source" : "PHP zdrojové kódy", diff --git a/cypress/e2e/files_sharing/public-share/header-menu.cy.ts b/cypress/e2e/files_sharing/public-share/header-menu.cy.ts index a89ee8eb90e..c127adc56c6 100644 --- a/cypress/e2e/files_sharing/public-share/header-menu.cy.ts +++ b/cypress/e2e/files_sharing/public-share/header-menu.cy.ts @@ -53,7 +53,7 @@ describe('files_sharing: Public share - header actions menu', { testIsolation: t cy.findByRole('menuitem', { name: 'Direct link' }) .should('be.visible') .and('have.attr', 'href') - .then((attribute) => expect(attribute).to.match(/^http:\/\/.+\/download$/)) + .then((attribute) => expect(attribute).to.match(new RegExp(`^${Cypress.env('baseUrl')}/public.php/dav/files/.+/?accept=zip$`))) // see menu closes on click cy.findByRole('menuitem', { name: 'Direct link' }) .click() @@ -188,7 +188,7 @@ describe('files_sharing: Public share - header actions menu', { testIsolation: t cy.findByRole('menuitem', { name: 'Direct link' }) .should('be.visible') .and('have.attr', 'href') - .then((attribute) => expect(attribute).to.match(/^http:\/\/.+\/download$/)) + .then((attribute) => expect(attribute).to.match(new RegExp(`^${Cypress.env('baseUrl')}/public.php/dav/files/.+/?accept=zip$`))) // See remote share works cy.findByRole('menuitem', { name: /Add to your/i }) .should('be.visible') diff --git a/cypress/e2e/settings/users_manager.cy.ts b/cypress/e2e/settings/users_manager.cy.ts new file mode 100644 index 00000000000..b7596ddf0ce --- /dev/null +++ b/cypress/e2e/settings/users_manager.cy.ts @@ -0,0 +1,121 @@ +/** + * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +import { User } from '@nextcloud/cypress' +import { getUserListRow, handlePasswordConfirmation, toggleEditButton, waitLoading } from './usersUtils' +import { clearState } from '../../support/commonUtils' + +const admin = new User('admin', 'admin') + +describe('Settings: User Manager Management', function() { + let user: User + let manager: User + + beforeEach(function() { + clearState() + cy.createRandomUser().then(($user) => { + manager = $user + return cy.createRandomUser() + }).then(($user) => { + user = $user + cy.login(admin) + cy.intercept('PUT', `/ocs/v2.php/cloud/users/${user.userId}*`).as('updateUser') + }) + }) + + it('Can assign and remove a manager through the UI', function() { + cy.visit('/settings/users') + + toggleEditButton(user, true) + + // Scroll to manager cell and wait for it to be visible + getUserListRow(user.userId) + .find('[data-cy-user-list-cell-manager]') + .scrollIntoView() + .should('be.visible') + + // Assign a manager + getUserListRow(user.userId).find('[data-cy-user-list-cell-manager]').within(() => { + // Verify no manager is set initially + cy.get('.vs__selected').should('not.exist') + + // Open the dropdown menu + cy.get('[role="combobox"]').click({ force: true }) + + // Wait for the dropdown to be visible and initialized + waitLoading('[data-cy-user-list-input-manager]') + + // Type the manager's username to search + cy.get('input[type="search"]').type(manager.userId, { force: true }) + + // Wait for the search results to load + waitLoading('[data-cy-user-list-input-manager]') + }) + + // Now select the manager from the filtered results + // Since the dropdown is floating, we need to search globally + cy.get('.vs__dropdown-menu').find('li').contains('span', manager.userId).should('be.visible').click({ force: true }) + + // Handle password confirmation if needed + handlePasswordConfirmation(admin.password) + + // Verify the manager is selected in the UI + cy.get('.vs__selected').should('exist').and('contain.text', manager.userId) + + // Verify the PUT request was made to set the manager + cy.wait('@updateUser').then((interception) => { + // Verify the request URL and body + expect(interception.request.url).to.match(/\/cloud\/users\/.+/) + expect(interception.request.body).to.deep.equal({ + key: 'manager', + value: manager.userId + }) + expect(interception.response?.statusCode).to.equal(200) + }) + + // Wait for the save to complete + waitLoading('[data-cy-user-list-input-manager]') + + // Verify the manager is set in the backend + cy.getUserData(user).then(($result) => { + expect($result.body).to.contain(`<manager>${manager.userId}</manager>`) + }) + + // Now remove the manager + getUserListRow(user.userId).find('[data-cy-user-list-cell-manager]').within(() => { + // Clear the manager selection + cy.get('.vs__clear').click({ force: true }) + + // Verify the manager is cleared in the UI + cy.get('.vs__selected').should('not.exist') + + // Handle password confirmation if needed + handlePasswordConfirmation(admin.password) + }) + + // Verify the PUT request was made to clear the manager + cy.wait('@updateUser').then((interception) => { + // Verify the request URL and body + expect(interception.request.url).to.match(/\/cloud\/users\/.+/) + expect(interception.request.body).to.deep.equal({ + key: 'manager', + value: '', + }) + expect(interception.response?.statusCode).to.equal(200) + }) + + // Wait for the save to complete + waitLoading('[data-cy-user-list-input-manager]') + + // Verify the manager is cleared in the backend + cy.getUserData(user).then(($result) => { + expect($result.body).to.not.contain(`<manager>${manager.userId}</manager>`) + expect($result.body).to.contain('<manager></manager>') + }) + + // Finish editing the user + toggleEditButton(user, false) + }) +}) diff --git a/cypress/e2e/settings/users_modify.cy.ts b/cypress/e2e/settings/users_modify.cy.ts index d4948cb3d53..749bded2e94 100644 --- a/cypress/e2e/settings/users_modify.cy.ts +++ b/cypress/e2e/settings/users_modify.cy.ts @@ -181,47 +181,6 @@ describe('Settings: Change user properties', function() { }) }) - it('Can set manager of a user', function() { - // create the manager - let manager: User - cy.createRandomUser().then(($user) => { manager = $user }) - - // open the User settings as admin - cy.login(admin) - cy.visit('/settings/users') - - // toggle edit button into edit mode - toggleEditButton(user, true) - - getUserListRow(user.userId) - .find('[data-cy-user-list-cell-manager]') - .scrollIntoView() - - getUserListRow(user.userId).find('[data-cy-user-list-cell-manager]').within(() => { - // see that the user has no manager - cy.get('.vs__selected').should('not.exist') - // Open the dropdown menu - cy.get('[role="combobox"]').click({ force: true }) - // select the manager - cy.contains('li', manager.userId).click({ force: true }) - - // Handle password confirmation on time out - handlePasswordConfirmation(admin.password) - - // see that the user has a manager set - cy.get('.vs__selected').should('exist').and('contain.text', manager.userId) - }) - - // see that the changes are loading - waitLoading('[data-cy-user-list-input-manager]') - - // finish editing the user - toggleEditButton(user, false) - - // validate the manager is set - cy.getUserData(user).then(($result) => expect($result.body).to.contain(`<manager>${manager.userId}</manager>`)) - }) - it('Can make user a subadmin of a group', function() { // create a group const groupName = 'userstestgroup' diff --git a/dist/1406-1406.js b/dist/1406-1406.js new file mode 100644 index 00000000000..bc8584aebe8 --- /dev/null +++ b/dist/1406-1406.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunknextcloud=self.webpackChunknextcloud||[]).push([[1406],{51406:(t,e,s)=>{s.r(e),s.d(e,{default:()=>at});var a=s(85471),i=s(61338),n=s(21777),o=s(53334),c=s(32981),l=s(85168),r=s(17334),d=s.n(r),g=s(99418),p=s(70580),m=s.n(p),u=s(97012),A=s(32073),h=s(1615),y=s(56798),C=s(94219),_=s(35779),f=s(59892),b=s(40083),k=s(82182);const v={name:"CheckCircleIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var x=s(14486);const N=(0,x.A)(v,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon check-circle-icon",attrs:{"aria-hidden":t.title?null:"true","aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M10 17L5 12L6.41 10.59L10 14.17L17.59 6.58L19 8L10 17Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports,w={name:"CircleIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},T=(0,x.A)(w,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon circle-icon",attrs:{"aria-hidden":t.title?null:"true","aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports,S={name:"CircleOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},E=(0,x.A)(S,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon circle-outline-icon",attrs:{"aria-hidden":t.title?null:"true","aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports;var L=s(2413),I=s(96078);const B={name:"TagIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},R=(0,x.A)(B,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon tag-icon",attrs:{"aria-hidden":t.title?null:"true","aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M5.5,7A1.5,1.5 0 0,1 4,5.5A1.5,1.5 0 0,1 5.5,4A1.5,1.5 0 0,1 7,5.5A1.5,1.5 0 0,1 5.5,7M21.41,11.58L12.41,2.58C12.05,2.22 11.55,2 11,2H4C2.89,2 2,2.89 2,4V11C2,11.55 2.22,12.05 2.59,12.41L11.58,21.41C11.95,21.77 12.45,22 13,22C13.55,22 14.05,21.77 14.41,21.41L21.41,14.41C21.78,14.05 22,13.55 22,13C22,12.44 21.77,11.94 21.41,11.58Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports;var $=s(82528),P=s(57599),z=s(12686),O=s(25631);const D=d()($.Gw,500),G=getComputedStyle(document.body).getPropertyValue("--color-main-background").replace("#","")||((0,P.j2)()?"000000":"ffffff");var M;!function(t){t.BASE="base",t.LOADING="loading",t.CREATING_TAG="creating-tag",t.DONE="done"}(M||(M={}));const j=(0,c.C)("systemtags","restrictSystemTagsCreationToAdmin",!1),F=(0,a.pM)({name:"SystemTagPicker",components:{CheckIcon:N,CircleIcon:T,CircleOutlineIcon:E,NcButton:u.A,NcCheckboxRadioSwitch:A.A,NcChip:h.A,NcColorPicker:y.A,NcDialog:C.A,NcEmptyContent:_.A,NcLoadingIcon:f.A,NcNoteCard:b.A,NcTextField:k.A,PencilIcon:L.A,PlusIcon:I.A,TagIcon:R},props:{nodes:{type:Array,required:!0}},setup:()=>({emit:i.Ic,Status:M,t:o.t,canEditOrCreateTag:!j||(0,n.HW)()?.isAdmin}),data:()=>({status:M.BASE,opened:!0,openedPicker:!1,input:"",tags:[],tagList:{},toAdd:[],toRemove:[]}),computed:{sortedTags(){return[...this.tags].sort(((t,e)=>t.displayName.localeCompare(e.displayName,(0,o.Z0)(),{ignorePunctuation:!0})))},filteredTags(){return""===this.input.trim()?this.sortedTags:this.sortedTags.filter((t=>t.displayName.normalize().toLowerCase().includes(this.input.normalize().toLowerCase())))},hasChanges(){return this.toAdd.length>0||this.toRemove.length>0},canCreateTag(){return""!==this.input.trim()&&!this.tags.some((t=>t.displayName.trim().toLocaleLowerCase()===this.input.trim().toLocaleLowerCase()))},statusMessage(){if(0===this.toAdd.length&&0===this.toRemove.length)return"";if(1===this.toAdd.length&&1===this.toRemove.length)return(0,o.n)("systemtags","{tag1} will be set and {tag2} will be removed from 1 file.","{tag1} will be set and {tag2} will be removed from {count} files.",this.nodes.length,{tag1:this.formatTagChip(this.toAdd[0]),tag2:this.formatTagChip(this.toRemove[0]),count:this.nodes.length},{escape:!1});const t=this.toAdd.map(this.formatTagChip),e=t.pop(),s=this.toRemove.map(this.formatTagChip),a=s.pop(),i=(0,o.n)("systemtags","{tag} will be set to 1 file.","{tag} will be set to {count} files.",this.nodes.length,{tag:e,count:this.nodes.length},{escape:!1}),n=(0,o.n)("systemtags","{tag} will be removed from 1 file.","{tag} will be removed from {count} files.",this.nodes.length,{tag:a,count:this.nodes.length},{escape:!1}),c=(0,o.n)("systemtags","{tags} and {lastTag} will be set to 1 file.","{tags} and {lastTag} will be set to {count} files.",this.nodes.length,{tags:t.join(", "),lastTag:e,count:this.nodes.length},{escape:!1}),l=(0,o.n)("systemtags","{tags} and {lastTag} will be removed from 1 file.","{tags} and {lastTag} will be removed from {count} files.",this.nodes.length,{tags:s.join(", "),lastTag:a,count:this.nodes.length},{escape:!1});return 1===this.toAdd.length&&0===this.toRemove.length?i:0===this.toAdd.length&&1===this.toRemove.length?n:this.toAdd.length>1&&0===this.toRemove.length?c:0===this.toAdd.length&&this.toRemove.length>1?l:this.toAdd.length>1&&1===this.toRemove.length?`${c} ${n}`:1===this.toAdd.length&&this.toRemove.length>1?`${i} ${l}`:`${c} ${l}`}},beforeMount(){(0,$.un)().then((t=>{this.tags=t})),this.tagList=this.nodes.reduce(((t,e)=>(((0,z.rA)(e)||[]).forEach((e=>{t[e]=(t[e]||0)+1})),t)),{}),this.canEditOrCreateTag||O.A.debug("System tag creation is restricted to admins and the current user is not an admin")},methods:{formatTagChip(t){const e=this.$refs.chip.$el.cloneNode(!0);if(t.color){const s=this.tagListStyle(t);Object.entries(s).forEach((t=>{let[s,a]=t;e.style.setProperty(s,a)}))}return e.outerHTML.replace("%s",m()(g.A.sanitize(t.displayName)))},formatTagName:t=>t.userVisible?t.userAssignable?t.displayName:(0,o.t)("systemtags","{displayName} (restricted)",{displayName:t.displayName}):(0,o.t)("systemtags","{displayName} (hidden)",{displayName:t.displayName}),onColorChange(t,e){t.color=e.replace("#",""),D(t)},isChecked(t){return t.displayName in this.tagList&&this.tagList[t.displayName]===this.nodes.length},isIndeterminate(t){return t.displayName in this.tagList&&0!==this.tagList[t.displayName]&&this.tagList[t.displayName]!==this.nodes.length},onCheckUpdate(t,e){e?(this.toAdd.push(t),this.toRemove=this.toRemove.filter((e=>e.id!==t.id)),this.tagList[t.displayName]=this.nodes.length):(this.toRemove.push(t),this.toAdd=this.toAdd.filter((e=>e.id!==t.id)),this.tagList[t.displayName]=0)},async onNewTag(){if(this.canEditOrCreateTag){this.status=M.CREATING_TAG;try{const t={displayName:this.input.trim(),userAssignable:!0,userVisible:!0,canAssign:!0},e=await(0,$.VZ)(t),s=await(0,$.xI)(e);this.tags.push(s),this.input="",this.onCheckUpdate(s,!0),await this.$nextTick();const a=this.$el.querySelector(`input[type="checkbox"][label="${s.displayName}"]`);a?.scrollIntoView({behavior:"instant",block:"center",inline:"center"})}catch(t){(0,l.Qg)(t?.message||(0,o.t)("systemtags","Failed to create tag"))}finally{this.status=M.BASE}}else(0,l.Qg)((0,o.t)("systemtags","Only admins can create new tags"))},async onSubmit(){this.status=M.LOADING,O.A.debug("Applying tags",{toAdd:this.toAdd,toRemove:this.toRemove});try{for(const t of this.toAdd){const{etag:e,objects:s}=await(0,$.b0)(t,"files"),a=[...new Set([...s.map((t=>t.id)).filter(Boolean),...this.nodes.map((t=>t.fileid)).filter(Boolean)])];await(0,$.T0)(t,"files",a.map((t=>({id:t,type:"files"}))),e)}for(const t of this.toRemove){const{etag:e,objects:s}=await(0,$.b0)(t,"files"),a=new Set(this.nodes.map((t=>t.fileid))),i=s.map((t=>t.id)).filter(((t,e,s)=>!a.has(t)&&s.indexOf(t)===e));await(0,$.T0)(t,"files",i.map((t=>({id:t,type:"files"}))),e)}}catch(t){return O.A.error("Failed to apply tags",{error:t}),(0,l.Qg)((0,o.t)("systemtags","Failed to apply tags changes")),void(this.status=M.BASE)}const t=[];this.toAdd.forEach((e=>{this.nodes.forEach((s=>{const a=[...(0,z.rA)(s)||[],e.displayName].sort(((t,e)=>t.localeCompare(e,(0,o.Z0)(),{ignorePunctuation:!0})));(0,z.Pq)(s,a),t.push(s)}))})),this.toRemove.forEach((e=>{this.nodes.forEach((s=>{const a=[...(0,z.rA)(s)||[]].filter((t=>t!==e.displayName)).sort(((t,e)=>t.localeCompare(e,(0,o.Z0)(),{ignorePunctuation:!0})));(0,z.Pq)(s,a),t.push(s)}))})),t.forEach((t=>(0,i.Ic)("systemtags:node:updated",t))),this.status=M.DONE,setTimeout((()=>{this.opened=!1,this.$emit("close",!0)}),2e3)},onCancel(){this.opened=!1,(0,l.cf)((0,o.t)("systemtags","File tags modification canceled")),this.$emit("close",null)},tagListStyle(t){if(!t.color)return{"--color-circle-icon":"var(--color-text-maxcontrast)"};const e=(0,P.W7)(`#${t.color}`,`#${G}`),s=(0,P.Pj)(e)?"#000000":"#ffffff";return{"--color-circle-icon":"var(--color-primary-element)","--color-primary":e,"--color-primary-text":s,"--color-primary-element":e,"--color-primary-element-text":s}}}});var q=s(85072),Z=s.n(q),H=s(97825),V=s.n(H),U=s(77659),Y=s.n(U),Q=s(55056),K=s.n(Q),W=s(10540),J=s.n(W),X=s(41113),tt=s.n(X),et=s(93845),st={};st.styleTagTransform=tt(),st.setAttributes=K(),st.insert=Y().bind(null,"head"),st.domAPI=V(),st.insertStyleElement=J(),Z()(et.A,st),et.A&&et.A.locals&&et.A.locals;const at=(0,x.A)(F,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("NcDialog",{staticClass:"systemtags-picker",class:"systemtags-picker--"+t.status,attrs:{"data-cy-systemtags-picker":"","can-close":t.status!==t.Status.LOADING,name:t.t("systemtags","Manage tags"),open:t.opened,"close-on-click-outside":"","out-transition":""},on:{"update:open":t.onCancel},scopedSlots:t._u([{key:"actions",fn:function(){return[e("NcButton",{attrs:{disabled:t.status!==t.Status.BASE,type:"tertiary","data-cy-systemtags-picker-button-cancel":""},on:{click:t.onCancel}},[t._v("\n\t\t\t"+t._s(t.t("systemtags","Cancel"))+"\n\t\t")]),t._v(" "),e("NcButton",{attrs:{disabled:!t.hasChanges||t.status!==t.Status.BASE,"data-cy-systemtags-picker-button-submit":""},on:{click:t.onSubmit}},[t._v("\n\t\t\t"+t._s(t.t("systemtags","Apply changes"))+"\n\t\t")])]},proxy:!0}])},[t.status===t.Status.LOADING||t.status===t.Status.DONE?e("NcEmptyContent",{attrs:{name:t.t("systemtags","Applying tags changes…")},scopedSlots:t._u([{key:"icon",fn:function(){return[t.status===t.Status.LOADING?e("NcLoadingIcon"):e("CheckIcon",{attrs:{"fill-color":"var(--color-success)"}})]},proxy:!0}],null,!1,1067531430)}):[e("div",{staticClass:"systemtags-picker__input"},[e("NcTextField",{attrs:{value:t.input,label:t.canEditOrCreateTag?t.t("systemtags","Search or create tag"):t.t("systemtags","Search tag"),"data-cy-systemtags-picker-input":""},on:{"update:value":function(e){t.input=e}}},[e("TagIcon",{attrs:{size:20}})],1)],1),t._v(" "),e("ul",{staticClass:"systemtags-picker__tags",attrs:{"data-cy-systemtags-picker-tags":""}},[t._l(t.filteredTags,(function(s){return e("li",{key:s.id,staticClass:"systemtags-picker__tag",style:t.tagListStyle(s),attrs:{"data-cy-systemtags-picker-tag":s.id}},[e("NcCheckboxRadioSwitch",{staticClass:"systemtags-picker__tag-checkbox",attrs:{checked:t.isChecked(s),disabled:!s.canAssign,indeterminate:t.isIndeterminate(s),label:s.displayName},on:{"update:checked":function(e){return t.onCheckUpdate(s,e)}}},[t._v("\n\t\t\t\t\t"+t._s(t.formatTagName(s))+"\n\t\t\t\t")]),t._v(" "),t.canEditOrCreateTag?e("NcColorPicker",{staticClass:"systemtags-picker__tag-color",attrs:{"data-cy-systemtags-picker-tag-color":s.id,value:`#${s.color}`,shown:t.openedPicker===s.id},on:{"update:value":function(e){return t.onColorChange(s,e)},"update:shown":function(e){t.openedPicker=!!e&&s.id},submit:function(e){t.openedPicker=!1}}},[e("NcButton",{attrs:{"aria-label":t.t("systemtags","Change tag color"),type:"tertiary"},scopedSlots:t._u([{key:"icon",fn:function(){return[s.color?e("CircleIcon",{attrs:{size:24,"fill-color":"var(--color-circle-icon)"}}):e("CircleOutlineIcon",{attrs:{size:24,"fill-color":"var(--color-circle-icon)"}}),t._v(" "),e("PencilIcon")]},proxy:!0}],null,!0)})],1):t._e()],1)})),t._v(" "),e("li",[t.canEditOrCreateTag&&t.canCreateTag?e("NcButton",{staticClass:"systemtags-picker__tag-create",attrs:{disabled:t.status===t.Status.CREATING_TAG,alignment:"start","native-type":"submit",type:"tertiary","data-cy-systemtags-picker-button-create":""},on:{click:t.onNewTag},scopedSlots:t._u([{key:"icon",fn:function(){return[e("PlusIcon")]},proxy:!0}],null,!1,1789392498)},[t._v("\n\t\t\t\t\t"+t._s(t.input.trim())),e("br"),t._v(" "),e("span",{staticClass:"systemtags-picker__tag-create-subline"},[t._v(t._s(t.t("systemtags","Create new tag")))])]):t._e()],1)],2),t._v(" "),e("div",{staticClass:"systemtags-picker__note"},[t.hasChanges?e("NcNoteCard",{attrs:{type:"info"}},[e("span",{domProps:{innerHTML:t._s(t.statusMessage)}})]):e("NcNoteCard",{attrs:{type:"info"}},[t._v("\n\t\t\t\t"+t._s(t.canEditOrCreateTag?t.t("systemtags","Select or create tags to apply to all selected files"):t.t("systemtags","Select tags to apply to all selected files"))+"\n\t\t\t")])],1)],t._v(" "),t._v(" "),e("div",{directives:[{name:"show",rawName:"v-show",value:!1,expression:"false"}]},[e("NcChip",{ref:"chip",attrs:{text:"%s",type:"primary","no-close":""}})],1)],2)}),[],!1,null,"568741cb",null).exports},93845:(t,e,s)=>{s.d(e,{A:()=>c});var a=s(71354),i=s.n(a),n=s(76314),o=s.n(n)()(i());o.push([t.id,".systemtags-picker__input[data-v-568741cb],.systemtags-picker__note[data-v-568741cb]{position:sticky;z-index:9;background-color:var(--color-main-background)}.systemtags-picker__input[data-v-568741cb]{display:flex;top:0;gap:8px;padding-block-end:8px;align-items:flex-end}.systemtags-picker__tags[data-v-568741cb]{padding-block:8px;gap:var(--default-grid-baseline);display:flex;flex-direction:column}.systemtags-picker__tags li[data-v-568741cb]{display:flex;align-items:center;justify-content:space-between;width:100%}.systemtags-picker__tags li[data-v-568741cb] .checkbox-radio-switch{width:100%}.systemtags-picker__tags li[data-v-568741cb] .checkbox-radio-switch .checkbox-content{max-width:none;box-sizing:border-box;min-height:calc(var(--default-grid-baseline)*2 + var(--default-clickable-area))}.systemtags-picker__tags .systemtags-picker__tag-color button[data-v-568741cb]{margin-inline-start:calc(var(--default-grid-baseline)*2)}.systemtags-picker__tags .systemtags-picker__tag-color button span.pencil-icon[data-v-568741cb]{display:none;color:var(--color-main-text)}.systemtags-picker__tags .systemtags-picker__tag-color button:focus .pencil-icon[data-v-568741cb],.systemtags-picker__tags .systemtags-picker__tag-color button:hover .pencil-icon[data-v-568741cb],.systemtags-picker__tags .systemtags-picker__tag-color button[aria-expanded=true] .pencil-icon[data-v-568741cb]{display:block}.systemtags-picker__tags .systemtags-picker__tag-color button:focus .circle-icon[data-v-568741cb],.systemtags-picker__tags .systemtags-picker__tag-color button:focus .circle-outline-icon[data-v-568741cb],.systemtags-picker__tags .systemtags-picker__tag-color button:hover .circle-icon[data-v-568741cb],.systemtags-picker__tags .systemtags-picker__tag-color button:hover .circle-outline-icon[data-v-568741cb],.systemtags-picker__tags .systemtags-picker__tag-color button[aria-expanded=true] .circle-icon[data-v-568741cb],.systemtags-picker__tags .systemtags-picker__tag-color button[aria-expanded=true] .circle-outline-icon[data-v-568741cb]{display:none}.systemtags-picker__tags .systemtags-picker__tag-create[data-v-568741cb] span{text-align:start}.systemtags-picker__tags .systemtags-picker__tag-create-subline[data-v-568741cb]{font-weight:normal}.systemtags-picker__note[data-v-568741cb]{bottom:0;padding-block:8px}.systemtags-picker__note[data-v-568741cb] .notecard{min-height:2lh;align-items:center}.systemtags-picker__note>div[data-v-568741cb]{margin:0 !important}.systemtags-picker--done[data-v-568741cb] .empty-content__icon{opacity:1}.nc-chip[data-v-568741cb]{display:inline !important}","",{version:3,sources:["webpack://./apps/systemtags/src/components/SystemTagPicker.vue"],names:[],mappings:"AAEA,qFAEC,eAAA,CACA,SAAA,CACA,6CAAA,CAGD,2CACC,YAAA,CACA,KAAA,CACA,OAAA,CACA,qBAAA,CACA,oBAAA,CAGD,0CACC,iBAAA,CACA,gCAAA,CACA,YAAA,CACA,qBAAA,CAEA,6CACC,YAAA,CACA,kBAAA,CACA,6BAAA,CACA,UAAA,CAGA,oEACC,UAAA,CAEA,sFAEC,cAAA,CAEA,qBAAA,CACA,+EAAA,CAKH,+EACC,wDAAA,CAEA,gGACC,YAAA,CACA,4BAAA,CAMA,oTACC,aAAA,CAED,goBAEC,YAAA,CAMF,8EACC,gBAAA,CAED,iFACC,kBAAA,CAKH,0CACC,QAAA,CACA,iBAAA,CAEA,oDAEC,cAAA,CACA,kBAAA,CAGD,8CACC,mBAAA,CAIF,+DACC,SAAA,CAID,0BACC,yBAAA",sourcesContent:["\n// Common sticky properties\n.systemtags-picker__input,\n.systemtags-picker__note {\n\tposition: sticky;\n\tz-index: 9;\n\tbackground-color: var(--color-main-background);\n}\n\n.systemtags-picker__input {\n\tdisplay: flex;\n\ttop: 0;\n\tgap: 8px;\n\tpadding-block-end: 8px;\n\talign-items: flex-end;\n}\n\n.systemtags-picker__tags {\n\tpadding-block: 8px;\n\tgap: var(--default-grid-baseline);\n\tdisplay: flex;\n\tflex-direction: column;\n\n\tli {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: space-between;\n\t\twidth: 100%;\n\n\t\t// Make switch full width\n\t\t:deep(.checkbox-radio-switch) {\n\t\t\twidth: 100%;\n\n\t\t\t.checkbox-content {\n\t\t\t\t// adjust width\n\t\t\t\tmax-width: none;\n\t\t\t\t// recalculate padding\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\tmin-height: calc(var(--default-grid-baseline) * 2 + var(--default-clickable-area));\n\t\t\t}\n\t\t}\n\t}\n\n\t.systemtags-picker__tag-color button {\n\t\tmargin-inline-start: calc(var(--default-grid-baseline) * 2);\n\n\t\tspan.pencil-icon {\n\t\t\tdisplay: none;\n\t\t\tcolor: var(--color-main-text);\n\t\t}\n\n\t\t&:focus,\n\t\t&:hover,\n\t\t&[aria-expanded='true'] {\n\t\t\t.pencil-icon {\n\t\t\t\tdisplay: block;\n\t\t\t}\n\t\t\t.circle-icon,\n\t\t\t.circle-outline-icon {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t}\n\t}\n\n\t.systemtags-picker__tag-create {\n\t\t:deep(span) {\n\t\t\ttext-align: start;\n\t\t}\n\t\t&-subline {\n\t\t\tfont-weight: normal;\n\t\t}\n\t}\n}\n\n.systemtags-picker__note {\n\tbottom: 0;\n\tpadding-block: 8px;\n\n\t:deep(.notecard) {\n\t\t// min 2 lines of text to avoid jumping\n\t\tmin-height: 2lh;\n\t\talign-items: center;\n\t}\n\n\t& > div {\n\t\tmargin: 0 !important;\n\t}\n}\n\n.systemtags-picker--done :deep(.empty-content__icon) {\n\topacity: 1;\n}\n\n// Rendered chip in note\n.nc-chip {\n\tdisplay: inline !important;\n}\n"],sourceRoot:""}]);const c=o}}]); +//# sourceMappingURL=1406-1406.js.map?v=74ef8c445df7152f9898
\ No newline at end of file diff --git a/dist/9552-9552.js.license b/dist/1406-1406.js.license index 0baa0d80d30..0baa0d80d30 100644 --- a/dist/9552-9552.js.license +++ b/dist/1406-1406.js.license diff --git a/dist/1406-1406.js.map b/dist/1406-1406.js.map new file mode 100644 index 00000000000..9e472ce3ae0 --- /dev/null +++ b/dist/1406-1406.js.map @@ -0,0 +1 @@ +{"version":3,"file":"1406-1406.js?v=74ef8c445df7152f9898","mappings":"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","sources":["webpack:///nextcloud/apps/systemtags/src/components/SystemTagPicker.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/CheckCircle.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/CheckCircle.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/CheckCircle.vue?7685","webpack:///nextcloud/node_modules/vue-material-design-icons/CheckCircle.vue?vue&type=template&id=60d94ca3","webpack:///nextcloud/node_modules/vue-material-design-icons/Circle.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/Circle.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/Circle.vue?4490","webpack:///nextcloud/node_modules/vue-material-design-icons/Circle.vue?vue&type=template&id=cd98ea1e","webpack:///nextcloud/node_modules/vue-material-design-icons/CircleOutline.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/CircleOutline.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/CircleOutline.vue?68bc","webpack:///nextcloud/node_modules/vue-material-design-icons/CircleOutline.vue?vue&type=template&id=c013567c","webpack:///nextcloud/node_modules/vue-material-design-icons/Tag.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/Tag.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/Tag.vue?6116","webpack:///nextcloud/node_modules/vue-material-design-icons/Tag.vue?vue&type=template&id=356230e0","webpack:///nextcloud/apps/systemtags/src/components/SystemTagPicker.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/systemtags/src/components/SystemTagPicker.vue?9d05","webpack://nextcloud/./apps/systemtags/src/components/SystemTagPicker.vue?ff5c","webpack:///nextcloud/apps/systemtags/src/components/SystemTagPicker.vue?vue&type=style&index=0&id=568741cb&prod&scoped=true&lang=scss"],"sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcDialog',{staticClass:\"systemtags-picker\",class:'systemtags-picker--' + _vm.status,attrs:{\"data-cy-systemtags-picker\":\"\",\"can-close\":_vm.status !== _vm.Status.LOADING,\"name\":_vm.t('systemtags', 'Manage tags'),\"open\":_vm.opened,\"close-on-click-outside\":\"\",\"out-transition\":\"\"},on:{\"update:open\":_vm.onCancel},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('NcButton',{attrs:{\"disabled\":_vm.status !== _vm.Status.BASE,\"type\":\"tertiary\",\"data-cy-systemtags-picker-button-cancel\":\"\"},on:{\"click\":_vm.onCancel}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('systemtags', 'Cancel'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcButton',{attrs:{\"disabled\":!_vm.hasChanges || _vm.status !== _vm.Status.BASE,\"data-cy-systemtags-picker-button-submit\":\"\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('systemtags', 'Apply changes'))+\"\\n\\t\\t\")])]},proxy:true}])},[(_vm.status === _vm.Status.LOADING || _vm.status === _vm.Status.DONE)?_c('NcEmptyContent',{attrs:{\"name\":_vm.t('systemtags', 'Applying tags changes…')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.status === _vm.Status.LOADING)?_c('NcLoadingIcon'):_c('CheckIcon',{attrs:{\"fill-color\":\"var(--color-success)\"}})]},proxy:true}],null,false,1067531430)}):[_c('div',{staticClass:\"systemtags-picker__input\"},[_c('NcTextField',{attrs:{\"value\":_vm.input,\"label\":_vm.canEditOrCreateTag ? _vm.t('systemtags', 'Search or create tag') : _vm.t('systemtags', 'Search tag'),\"data-cy-systemtags-picker-input\":\"\"},on:{\"update:value\":function($event){_vm.input=$event}}},[_c('TagIcon',{attrs:{\"size\":20}})],1)],1),_vm._v(\" \"),_c('ul',{staticClass:\"systemtags-picker__tags\",attrs:{\"data-cy-systemtags-picker-tags\":\"\"}},[_vm._l((_vm.filteredTags),function(tag){return _c('li',{key:tag.id,staticClass:\"systemtags-picker__tag\",style:(_vm.tagListStyle(tag)),attrs:{\"data-cy-systemtags-picker-tag\":tag.id}},[_c('NcCheckboxRadioSwitch',{staticClass:\"systemtags-picker__tag-checkbox\",attrs:{\"checked\":_vm.isChecked(tag),\"disabled\":!tag.canAssign,\"indeterminate\":_vm.isIndeterminate(tag),\"label\":tag.displayName},on:{\"update:checked\":function($event){return _vm.onCheckUpdate(tag, $event)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.formatTagName(tag))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.canEditOrCreateTag)?_c('NcColorPicker',{staticClass:\"systemtags-picker__tag-color\",attrs:{\"data-cy-systemtags-picker-tag-color\":tag.id,\"value\":`#${tag.color}`,\"shown\":_vm.openedPicker === tag.id},on:{\"update:value\":function($event){return _vm.onColorChange(tag, $event)},\"update:shown\":function($event){_vm.openedPicker = $event ? tag.id : false},\"submit\":function($event){_vm.openedPicker = false}}},[_c('NcButton',{attrs:{\"aria-label\":_vm.t('systemtags', 'Change tag color'),\"type\":\"tertiary\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(tag.color)?_c('CircleIcon',{attrs:{\"size\":24,\"fill-color\":\"var(--color-circle-icon)\"}}):_c('CircleOutlineIcon',{attrs:{\"size\":24,\"fill-color\":\"var(--color-circle-icon)\"}}),_vm._v(\" \"),_c('PencilIcon')]},proxy:true}],null,true)})],1):_vm._e()],1)}),_vm._v(\" \"),_c('li',[(_vm.canEditOrCreateTag && _vm.canCreateTag)?_c('NcButton',{staticClass:\"systemtags-picker__tag-create\",attrs:{\"disabled\":_vm.status === _vm.Status.CREATING_TAG,\"alignment\":\"start\",\"native-type\":\"submit\",\"type\":\"tertiary\",\"data-cy-systemtags-picker-button-create\":\"\"},on:{\"click\":_vm.onNewTag},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('PlusIcon')]},proxy:true}],null,false,1789392498)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.input.trim())),_c('br'),_vm._v(\" \"),_c('span',{staticClass:\"systemtags-picker__tag-create-subline\"},[_vm._v(_vm._s(_vm.t('systemtags', 'Create new tag')))])]):_vm._e()],1)],2),_vm._v(\" \"),_c('div',{staticClass:\"systemtags-picker__note\"},[(!_vm.hasChanges)?_c('NcNoteCard',{attrs:{\"type\":\"info\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.canEditOrCreateTag ? _vm.t('systemtags', 'Select or create tags to apply to all selected files'): _vm.t('systemtags', 'Select tags to apply to all selected files'))+\"\\n\\t\\t\\t\")]):_c('NcNoteCard',{attrs:{\"type\":\"info\"}},[_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.statusMessage)}})])],1)],_vm._v(\" \"),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(false),expression:\"false\"}]},[_c('NcChip',{ref:\"chip\",attrs:{\"text\":\"%s\",\"type\":\"primary\",\"no-close\":\"\"}})],1)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon check-circle-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M10 17L5 12L6.41 10.59L10 14.17L17.59 6.58L19 8L10 17Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"CheckCircleIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./CheckCircle.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./CheckCircle.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./CheckCircle.vue?vue&type=template&id=60d94ca3\"\nimport script from \"./CheckCircle.vue?vue&type=script&lang=js\"\nexport * from \"./CheckCircle.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../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',_vm._b({staticClass:\"material-design-icon check-circle-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M10 17L5 12L6.41 10.59L10 14.17L17.59 6.58L19 8L10 17Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Circle.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Circle.vue?vue&type=script&lang=js\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon circle-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"CircleIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./Circle.vue?vue&type=template&id=cd98ea1e\"\nimport script from \"./Circle.vue?vue&type=script&lang=js\"\nexport * from \"./Circle.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../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',_vm._b({staticClass:\"material-design-icon circle-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./CircleOutline.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./CircleOutline.vue?vue&type=script&lang=js\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon circle-outline-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"CircleOutlineIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./CircleOutline.vue?vue&type=template&id=c013567c\"\nimport script from \"./CircleOutline.vue?vue&type=script&lang=js\"\nexport * from \"./CircleOutline.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../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',_vm._b({staticClass:\"material-design-icon circle-outline-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon tag-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M5.5,7A1.5,1.5 0 0,1 4,5.5A1.5,1.5 0 0,1 5.5,4A1.5,1.5 0 0,1 7,5.5A1.5,1.5 0 0,1 5.5,7M21.41,11.58L12.41,2.58C12.05,2.22 11.55,2 11,2H4C2.89,2 2,2.89 2,4V11C2,11.55 2.22,12.05 2.59,12.41L11.58,21.41C11.95,21.77 12.45,22 13,22C13.55,22 14.05,21.77 14.41,21.41L21.41,14.41C21.78,14.05 22,13.55 22,13C22,12.44 21.77,11.94 21.41,11.58Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"TagIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Tag.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Tag.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Tag.vue?vue&type=template&id=356230e0\"\nimport script from \"./Tag.vue?vue&type=script&lang=js\"\nexport * from \"./Tag.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../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',_vm._b({staticClass:\"material-design-icon tag-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M5.5,7A1.5,1.5 0 0,1 4,5.5A1.5,1.5 0 0,1 5.5,4A1.5,1.5 0 0,1 7,5.5A1.5,1.5 0 0,1 5.5,7M21.41,11.58L12.41,2.58C12.05,2.22 11.55,2 11,2H4C2.89,2 2,2.89 2,4V11C2,11.55 2.22,12.05 2.59,12.41L11.58,21.41C11.95,21.77 12.45,22 13,22C13.55,22 14.05,21.77 14.41,21.41L21.41,14.41C21.78,14.05 22,13.55 22,13C22,12.44 21.77,11.94 21.41,11.58Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\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!./SystemTagPicker.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!./SystemTagPicker.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!./SystemTagPicker.vue?vue&type=style&index=0&id=568741cb&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./SystemTagPicker.vue?vue&type=style&index=0&id=568741cb&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SystemTagPicker.vue?vue&type=template&id=568741cb&scoped=true\"\nimport script from \"./SystemTagPicker.vue?vue&type=script&lang=ts\"\nexport * from \"./SystemTagPicker.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SystemTagPicker.vue?vue&type=style&index=0&id=568741cb&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 \"568741cb\",\n null\n \n)\n\nexport default component.exports","// 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, `.systemtags-picker__input[data-v-568741cb],.systemtags-picker__note[data-v-568741cb]{position:sticky;z-index:9;background-color:var(--color-main-background)}.systemtags-picker__input[data-v-568741cb]{display:flex;top:0;gap:8px;padding-block-end:8px;align-items:flex-end}.systemtags-picker__tags[data-v-568741cb]{padding-block:8px;gap:var(--default-grid-baseline);display:flex;flex-direction:column}.systemtags-picker__tags li[data-v-568741cb]{display:flex;align-items:center;justify-content:space-between;width:100%}.systemtags-picker__tags li[data-v-568741cb] .checkbox-radio-switch{width:100%}.systemtags-picker__tags li[data-v-568741cb] .checkbox-radio-switch .checkbox-content{max-width:none;box-sizing:border-box;min-height:calc(var(--default-grid-baseline)*2 + var(--default-clickable-area))}.systemtags-picker__tags .systemtags-picker__tag-color button[data-v-568741cb]{margin-inline-start:calc(var(--default-grid-baseline)*2)}.systemtags-picker__tags .systemtags-picker__tag-color button span.pencil-icon[data-v-568741cb]{display:none;color:var(--color-main-text)}.systemtags-picker__tags .systemtags-picker__tag-color button:focus .pencil-icon[data-v-568741cb],.systemtags-picker__tags .systemtags-picker__tag-color button:hover .pencil-icon[data-v-568741cb],.systemtags-picker__tags .systemtags-picker__tag-color button[aria-expanded=true] .pencil-icon[data-v-568741cb]{display:block}.systemtags-picker__tags .systemtags-picker__tag-color button:focus .circle-icon[data-v-568741cb],.systemtags-picker__tags .systemtags-picker__tag-color button:focus .circle-outline-icon[data-v-568741cb],.systemtags-picker__tags .systemtags-picker__tag-color button:hover .circle-icon[data-v-568741cb],.systemtags-picker__tags .systemtags-picker__tag-color button:hover .circle-outline-icon[data-v-568741cb],.systemtags-picker__tags .systemtags-picker__tag-color button[aria-expanded=true] .circle-icon[data-v-568741cb],.systemtags-picker__tags .systemtags-picker__tag-color button[aria-expanded=true] .circle-outline-icon[data-v-568741cb]{display:none}.systemtags-picker__tags .systemtags-picker__tag-create[data-v-568741cb] span{text-align:start}.systemtags-picker__tags .systemtags-picker__tag-create-subline[data-v-568741cb]{font-weight:normal}.systemtags-picker__note[data-v-568741cb]{bottom:0;padding-block:8px}.systemtags-picker__note[data-v-568741cb] .notecard{min-height:2lh;align-items:center}.systemtags-picker__note>div[data-v-568741cb]{margin:0 !important}.systemtags-picker--done[data-v-568741cb] .empty-content__icon{opacity:1}.nc-chip[data-v-568741cb]{display:inline !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/systemtags/src/components/SystemTagPicker.vue\"],\"names\":[],\"mappings\":\"AAEA,qFAEC,eAAA,CACA,SAAA,CACA,6CAAA,CAGD,2CACC,YAAA,CACA,KAAA,CACA,OAAA,CACA,qBAAA,CACA,oBAAA,CAGD,0CACC,iBAAA,CACA,gCAAA,CACA,YAAA,CACA,qBAAA,CAEA,6CACC,YAAA,CACA,kBAAA,CACA,6BAAA,CACA,UAAA,CAGA,oEACC,UAAA,CAEA,sFAEC,cAAA,CAEA,qBAAA,CACA,+EAAA,CAKH,+EACC,wDAAA,CAEA,gGACC,YAAA,CACA,4BAAA,CAMA,oTACC,aAAA,CAED,goBAEC,YAAA,CAMF,8EACC,gBAAA,CAED,iFACC,kBAAA,CAKH,0CACC,QAAA,CACA,iBAAA,CAEA,oDAEC,cAAA,CACA,kBAAA,CAGD,8CACC,mBAAA,CAIF,+DACC,SAAA,CAID,0BACC,yBAAA\",\"sourcesContent\":[\"\\n// Common sticky properties\\n.systemtags-picker__input,\\n.systemtags-picker__note {\\n\\tposition: sticky;\\n\\tz-index: 9;\\n\\tbackground-color: var(--color-main-background);\\n}\\n\\n.systemtags-picker__input {\\n\\tdisplay: flex;\\n\\ttop: 0;\\n\\tgap: 8px;\\n\\tpadding-block-end: 8px;\\n\\talign-items: flex-end;\\n}\\n\\n.systemtags-picker__tags {\\n\\tpadding-block: 8px;\\n\\tgap: var(--default-grid-baseline);\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\n\\tli {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: space-between;\\n\\t\\twidth: 100%;\\n\\n\\t\\t// Make switch full width\\n\\t\\t:deep(.checkbox-radio-switch) {\\n\\t\\t\\twidth: 100%;\\n\\n\\t\\t\\t.checkbox-content {\\n\\t\\t\\t\\t// adjust width\\n\\t\\t\\t\\tmax-width: none;\\n\\t\\t\\t\\t// recalculate padding\\n\\t\\t\\t\\tbox-sizing: border-box;\\n\\t\\t\\t\\tmin-height: calc(var(--default-grid-baseline) * 2 + var(--default-clickable-area));\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t.systemtags-picker__tag-color button {\\n\\t\\tmargin-inline-start: calc(var(--default-grid-baseline) * 2);\\n\\n\\t\\tspan.pencil-icon {\\n\\t\\t\\tdisplay: none;\\n\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t}\\n\\n\\t\\t&:focus,\\n\\t\\t&:hover,\\n\\t\\t&[aria-expanded='true'] {\\n\\t\\t\\t.pencil-icon {\\n\\t\\t\\t\\tdisplay: block;\\n\\t\\t\\t}\\n\\t\\t\\t.circle-icon,\\n\\t\\t\\t.circle-outline-icon {\\n\\t\\t\\t\\tdisplay: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t.systemtags-picker__tag-create {\\n\\t\\t:deep(span) {\\n\\t\\t\\ttext-align: start;\\n\\t\\t}\\n\\t\\t&-subline {\\n\\t\\t\\tfont-weight: normal;\\n\\t\\t}\\n\\t}\\n}\\n\\n.systemtags-picker__note {\\n\\tbottom: 0;\\n\\tpadding-block: 8px;\\n\\n\\t:deep(.notecard) {\\n\\t\\t// min 2 lines of text to avoid jumping\\n\\t\\tmin-height: 2lh;\\n\\t\\talign-items: center;\\n\\t}\\n\\n\\t& > div {\\n\\t\\tmargin: 0 !important;\\n\\t}\\n}\\n\\n.systemtags-picker--done :deep(.empty-content__icon) {\\n\\topacity: 1;\\n}\\n\\n// Rendered chip in note\\n.nc-chip {\\n\\tdisplay: inline !important;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n"],"names":["name","emits","props","title","type","String","fillColor","default","size","Number","_vm","this","_c","_self","_b","staticClass","attrs","on","$event","$emit","$attrs","_v","_s","_e","debounceUpdateTag","debounce","updateTag","mainBackgroundColor","getComputedStyle","document","body","getPropertyValue","replace","isDarkModeEnabled","Status","restrictSystemTagsCreationToAdmin","loadState","defineComponent","components","CheckIcon","CircleIcon","CircleOutlineIcon","NcButton","NcCheckboxRadioSwitch","NcChip","NcColorPicker","NcDialog","NcEmptyContent","NcLoadingIcon","NcNoteCard","NcTextField","PencilIcon","PlusIcon","TagIcon","nodes","Array","required","setup","emit","t","canEditOrCreateTag","getCurrentUser","isAdmin","data","status","BASE","opened","openedPicker","input","tags","tagList","toAdd","toRemove","computed","sortedTags","sort","a","b","displayName","localeCompare","getLanguage","ignorePunctuation","filteredTags","trim","filter","tag","normalize","toLowerCase","includes","hasChanges","length","canCreateTag","some","toLocaleLowerCase","statusMessage","n","tag1","formatTagChip","tag2","count","escape","tagsAdd","map","lastTagAdd","pop","tagsRemove","lastTagRemove","addStringSingular","removeStringSingular","addStringPlural","join","lastTag","removeStringPlural","beforeMount","fetchTags","then","reduce","acc","node","getNodeSystemTags","forEach","logger","debug","methods","chipCloneEl","$refs","chip","$el","cloneNode","color","style","tagListStyle","Object","entries","_ref","key","value","setProperty","outerHTML","escapeHTML","domPurify","sanitize","formatTagName","userVisible","userAssignable","onColorChange","isChecked","isIndeterminate","onCheckUpdate","checked","push","search","id","onNewTag","CREATING_TAG","payload","canAssign","createTag","fetchTag","$nextTick","newTagEl","querySelector","scrollIntoView","behavior","block","inline","error","showError","message","onSubmit","LOADING","etag","objects","getTagObjects","ids","Set","obj","Boolean","fileid","setTagObjects","nodeFileIds","index","self","has","indexOf","setNodeSystemTags","DONE","setTimeout","onCancel","showInfo","primaryElement","elementColor","textColor","invertTextColor","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_setupProxy","class","scopedSlots","_u","fn","proxy","_l","domProps","directives","rawName","expression","ref","___CSS_LOADER_EXPORT___","module"],"sourceRoot":""}
\ No newline at end of file diff --git a/dist/1406-1406.js.map.license b/dist/1406-1406.js.map.license new file mode 120000 index 00000000000..e0714b6b353 --- /dev/null +++ b/dist/1406-1406.js.map.license @@ -0,0 +1 @@ +1406-1406.js.license
\ No newline at end of file diff --git a/dist/9552-9552.js b/dist/9552-9552.js deleted file mode 100644 index c4a15ffe291..00000000000 --- a/dist/9552-9552.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunknextcloud=self.webpackChunknextcloud||[]).push([[9552],{1673:(t,e,s)=>{s.d(e,{A:()=>c});var a=s(71354),i=s.n(a),n=s(76314),o=s.n(n)()(i());o.push([t.id,".systemtags-picker__input[data-v-4c9ca3f9],.systemtags-picker__note[data-v-4c9ca3f9]{position:sticky;z-index:9;background-color:var(--color-main-background)}.systemtags-picker__input[data-v-4c9ca3f9]{display:flex;top:0;gap:8px;padding-block-end:8px;align-items:flex-end}.systemtags-picker__tags[data-v-4c9ca3f9]{padding-block:8px;gap:var(--default-grid-baseline);display:flex;flex-direction:column}.systemtags-picker__tags li[data-v-4c9ca3f9]{display:flex;align-items:center;justify-content:space-between;width:100%}.systemtags-picker__tags li[data-v-4c9ca3f9] .checkbox-radio-switch{width:100%}.systemtags-picker__tags li[data-v-4c9ca3f9] .checkbox-radio-switch .checkbox-content{max-width:none;box-sizing:border-box;min-height:calc(var(--default-grid-baseline)*2 + var(--default-clickable-area))}.systemtags-picker__tags .systemtags-picker__tag-color button[data-v-4c9ca3f9]{margin-inline-start:calc(var(--default-grid-baseline)*2)}.systemtags-picker__tags .systemtags-picker__tag-color button span.pencil-icon[data-v-4c9ca3f9]{display:none;color:var(--color-main-text)}.systemtags-picker__tags .systemtags-picker__tag-color button:focus .pencil-icon[data-v-4c9ca3f9],.systemtags-picker__tags .systemtags-picker__tag-color button:hover .pencil-icon[data-v-4c9ca3f9],.systemtags-picker__tags .systemtags-picker__tag-color button[aria-expanded=true] .pencil-icon[data-v-4c9ca3f9]{display:block}.systemtags-picker__tags .systemtags-picker__tag-color button:focus .circle-icon[data-v-4c9ca3f9],.systemtags-picker__tags .systemtags-picker__tag-color button:focus .circle-outline-icon[data-v-4c9ca3f9],.systemtags-picker__tags .systemtags-picker__tag-color button:hover .circle-icon[data-v-4c9ca3f9],.systemtags-picker__tags .systemtags-picker__tag-color button:hover .circle-outline-icon[data-v-4c9ca3f9],.systemtags-picker__tags .systemtags-picker__tag-color button[aria-expanded=true] .circle-icon[data-v-4c9ca3f9],.systemtags-picker__tags .systemtags-picker__tag-color button[aria-expanded=true] .circle-outline-icon[data-v-4c9ca3f9]{display:none}.systemtags-picker__tags .systemtags-picker__tag-create[data-v-4c9ca3f9] span{text-align:start}.systemtags-picker__tags .systemtags-picker__tag-create-subline[data-v-4c9ca3f9]{font-weight:normal}.systemtags-picker__note[data-v-4c9ca3f9]{bottom:0;padding-block:8px}.systemtags-picker__note[data-v-4c9ca3f9] .notecard{min-height:2lh;align-items:center}.systemtags-picker__note>div[data-v-4c9ca3f9]{margin:0 !important}.systemtags-picker--done[data-v-4c9ca3f9] .empty-content__icon{opacity:1}.nc-chip[data-v-4c9ca3f9]{display:inline !important}","",{version:3,sources:["webpack://./apps/systemtags/src/components/SystemTagPicker.vue"],names:[],mappings:"AAEA,qFAEC,eAAA,CACA,SAAA,CACA,6CAAA,CAGD,2CACC,YAAA,CACA,KAAA,CACA,OAAA,CACA,qBAAA,CACA,oBAAA,CAGD,0CACC,iBAAA,CACA,gCAAA,CACA,YAAA,CACA,qBAAA,CAEA,6CACC,YAAA,CACA,kBAAA,CACA,6BAAA,CACA,UAAA,CAGA,oEACC,UAAA,CAEA,sFAEC,cAAA,CAEA,qBAAA,CACA,+EAAA,CAKH,+EACC,wDAAA,CAEA,gGACC,YAAA,CACA,4BAAA,CAMA,oTACC,aAAA,CAED,goBAEC,YAAA,CAMF,8EACC,gBAAA,CAED,iFACC,kBAAA,CAKH,0CACC,QAAA,CACA,iBAAA,CAEA,oDAEC,cAAA,CACA,kBAAA,CAGD,8CACC,mBAAA,CAIF,+DACC,SAAA,CAID,0BACC,yBAAA",sourcesContent:["\n// Common sticky properties\n.systemtags-picker__input,\n.systemtags-picker__note {\n\tposition: sticky;\n\tz-index: 9;\n\tbackground-color: var(--color-main-background);\n}\n\n.systemtags-picker__input {\n\tdisplay: flex;\n\ttop: 0;\n\tgap: 8px;\n\tpadding-block-end: 8px;\n\talign-items: flex-end;\n}\n\n.systemtags-picker__tags {\n\tpadding-block: 8px;\n\tgap: var(--default-grid-baseline);\n\tdisplay: flex;\n\tflex-direction: column;\n\n\tli {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: space-between;\n\t\twidth: 100%;\n\n\t\t// Make switch full width\n\t\t:deep(.checkbox-radio-switch) {\n\t\t\twidth: 100%;\n\n\t\t\t.checkbox-content {\n\t\t\t\t// adjust width\n\t\t\t\tmax-width: none;\n\t\t\t\t// recalculate padding\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\tmin-height: calc(var(--default-grid-baseline) * 2 + var(--default-clickable-area));\n\t\t\t}\n\t\t}\n\t}\n\n\t.systemtags-picker__tag-color button {\n\t\tmargin-inline-start: calc(var(--default-grid-baseline) * 2);\n\n\t\tspan.pencil-icon {\n\t\t\tdisplay: none;\n\t\t\tcolor: var(--color-main-text);\n\t\t}\n\n\t\t&:focus,\n\t\t&:hover,\n\t\t&[aria-expanded='true'] {\n\t\t\t.pencil-icon {\n\t\t\t\tdisplay: block;\n\t\t\t}\n\t\t\t.circle-icon,\n\t\t\t.circle-outline-icon {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t}\n\t}\n\n\t.systemtags-picker__tag-create {\n\t\t:deep(span) {\n\t\t\ttext-align: start;\n\t\t}\n\t\t&-subline {\n\t\t\tfont-weight: normal;\n\t\t}\n\t}\n}\n\n.systemtags-picker__note {\n\tbottom: 0;\n\tpadding-block: 8px;\n\n\t:deep(.notecard) {\n\t\t// min 2 lines of text to avoid jumping\n\t\tmin-height: 2lh;\n\t\talign-items: center;\n\t}\n\n\t& > div {\n\t\tmargin: 0 !important;\n\t}\n}\n\n.systemtags-picker--done :deep(.empty-content__icon) {\n\topacity: 1;\n}\n\n// Rendered chip in note\n.nc-chip {\n\tdisplay: inline !important;\n}\n"],sourceRoot:""}]);const c=o},99552:(t,e,s)=>{s.r(e),s.d(e,{default:()=>at});var a=s(85471),i=s(61338),n=s(21777),o=s(53334),c=s(32981),l=s(85168),r=s(17334),d=s.n(r),g=s(99418),p=s(70580),m=s.n(p),u=s(97012),A=s(32073),h=s(1615),y=s(56798),f=s(94219),C=s(35779),_=s(59892),k=s(40083),v=s(82182);const b={name:"CheckCircleIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var x=s(14486);const N=(0,x.A)(b,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon check-circle-icon",attrs:{"aria-hidden":t.title?null:"true","aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M10 17L5 12L6.41 10.59L10 14.17L17.59 6.58L19 8L10 17Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports,w={name:"CircleIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},T=(0,x.A)(w,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon circle-icon",attrs:{"aria-hidden":t.title?null:"true","aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports,S={name:"CircleOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},E=(0,x.A)(S,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon circle-outline-icon",attrs:{"aria-hidden":t.title?null:"true","aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports;var I=s(2413),L=s(96078);const B={name:"TagIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},R=(0,x.A)(B,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon tag-icon",attrs:{"aria-hidden":t.title?null:"true","aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M5.5,7A1.5,1.5 0 0,1 4,5.5A1.5,1.5 0 0,1 5.5,4A1.5,1.5 0 0,1 7,5.5A1.5,1.5 0 0,1 5.5,7M21.41,11.58L12.41,2.58C12.05,2.22 11.55,2 11,2H4C2.89,2 2,2.89 2,4V11C2,11.55 2.22,12.05 2.59,12.41L11.58,21.41C11.95,21.77 12.45,22 13,22C13.55,22 14.05,21.77 14.41,21.41L21.41,14.41C21.78,14.05 22,13.55 22,13C22,12.44 21.77,11.94 21.41,11.58Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports;var $=s(82528),P=s(57599),z=s(12686),O=s(25631);const D=d()($.Gw,500),G=getComputedStyle(document.body).getPropertyValue("--color-main-background").replace("#","")||((0,P.j2)()?"000000":"ffffff");var M;!function(t){t.BASE="base",t.LOADING="loading",t.CREATING_TAG="creating-tag",t.DONE="done"}(M||(M={}));const j=(0,c.C)("systemtags","restrictSystemTagsCreationToAdmin",!1),F=(0,a.pM)({name:"SystemTagPicker",components:{CheckIcon:N,CircleIcon:T,CircleOutlineIcon:E,NcButton:u.A,NcCheckboxRadioSwitch:A.A,NcChip:h.A,NcColorPicker:y.A,NcDialog:f.A,NcEmptyContent:C.A,NcLoadingIcon:_.A,NcNoteCard:k.A,NcTextField:v.A,PencilIcon:I.A,PlusIcon:L.A,TagIcon:R},props:{nodes:{type:Array,required:!0}},setup:()=>({emit:i.Ic,Status:M,t:o.t,canEditOrCreateTag:!j||(0,n.HW)()?.isAdmin}),data:()=>({status:M.BASE,opened:!0,openedPicker:!1,input:"",tags:[],tagList:{},toAdd:[],toRemove:[]}),computed:{sortedTags(){return[...this.tags].sort(((t,e)=>t.displayName.localeCompare(e.displayName,(0,o.Z0)(),{ignorePunctuation:!0})))},filteredTags(){return""===this.input.trim()?this.sortedTags:this.sortedTags.filter((t=>t.displayName.normalize().includes(this.input.normalize())))},hasChanges(){return this.toAdd.length>0||this.toRemove.length>0},canCreateTag(){return""!==this.input.trim()&&!this.tags.some((t=>t.displayName.trim().toLocaleLowerCase()===this.input.trim().toLocaleLowerCase()))},statusMessage(){if(0===this.toAdd.length&&0===this.toRemove.length)return"";if(1===this.toAdd.length&&1===this.toRemove.length)return(0,o.n)("systemtags","{tag1} will be set and {tag2} will be removed from 1 file.","{tag1} will be set and {tag2} will be removed from {count} files.",this.nodes.length,{tag1:this.formatTagChip(this.toAdd[0]),tag2:this.formatTagChip(this.toRemove[0]),count:this.nodes.length},{escape:!1});const t=this.toAdd.map(this.formatTagChip),e=t.pop(),s=this.toRemove.map(this.formatTagChip),a=s.pop(),i=(0,o.n)("systemtags","{tag} will be set to 1 file.","{tag} will be set to {count} files.",this.nodes.length,{tag:e,count:this.nodes.length},{escape:!1}),n=(0,o.n)("systemtags","{tag} will be removed from 1 file.","{tag} will be removed from {count} files.",this.nodes.length,{tag:a,count:this.nodes.length},{escape:!1}),c=(0,o.n)("systemtags","{tags} and {lastTag} will be set to 1 file.","{tags} and {lastTag} will be set to {count} files.",this.nodes.length,{tags:t.join(", "),lastTag:e,count:this.nodes.length},{escape:!1}),l=(0,o.n)("systemtags","{tags} and {lastTag} will be removed from 1 file.","{tags} and {lastTag} will be removed from {count} files.",this.nodes.length,{tags:s.join(", "),lastTag:a,count:this.nodes.length},{escape:!1});return 1===this.toAdd.length&&0===this.toRemove.length?i:0===this.toAdd.length&&1===this.toRemove.length?n:this.toAdd.length>1&&0===this.toRemove.length?c:0===this.toAdd.length&&this.toRemove.length>1?l:this.toAdd.length>1&&1===this.toRemove.length?`${c} ${n}`:1===this.toAdd.length&&this.toRemove.length>1?`${i} ${l}`:`${c} ${l}`}},beforeMount(){(0,$.un)().then((t=>{this.tags=t})),this.tagList=this.nodes.reduce(((t,e)=>(((0,z.rA)(e)||[]).forEach((e=>{t[e]=(t[e]||0)+1})),t)),{}),this.canEditOrCreateTag||O.A.debug("System tag creation is restricted to admins and the current user is not an admin")},methods:{formatTagChip(t){const e=this.$refs.chip.$el.cloneNode(!0);if(t.color){const s=this.tagListStyle(t);Object.entries(s).forEach((t=>{let[s,a]=t;e.style.setProperty(s,a)}))}return e.outerHTML.replace("%s",m()(g.A.sanitize(t.displayName)))},formatTagName:t=>t.userVisible?t.userAssignable?t.displayName:(0,o.t)("systemtags","{displayName} (restricted)",{displayName:t.displayName}):(0,o.t)("systemtags","{displayName} (hidden)",{displayName:t.displayName}),onColorChange(t,e){t.color=e.replace("#",""),D(t)},isChecked(t){return t.displayName in this.tagList&&this.tagList[t.displayName]===this.nodes.length},isIndeterminate(t){return t.displayName in this.tagList&&0!==this.tagList[t.displayName]&&this.tagList[t.displayName]!==this.nodes.length},onCheckUpdate(t,e){e?(this.toAdd.push(t),this.toRemove=this.toRemove.filter((e=>e.id!==t.id)),this.tagList[t.displayName]=this.nodes.length):(this.toRemove.push(t),this.toAdd=this.toAdd.filter((e=>e.id!==t.id)),this.tagList[t.displayName]=0)},async onNewTag(){if(this.canEditOrCreateTag){this.status=M.CREATING_TAG;try{const t={displayName:this.input.trim(),userAssignable:!0,userVisible:!0,canAssign:!0},e=await(0,$.VZ)(t),s=await(0,$.xI)(e);this.tags.push(s),this.input="",this.onCheckUpdate(s,!0),await this.$nextTick();const a=this.$el.querySelector(`input[type="checkbox"][label="${s.displayName}"]`);a?.scrollIntoView({behavior:"instant",block:"center",inline:"center"})}catch(t){(0,l.Qg)(t?.message||(0,o.t)("systemtags","Failed to create tag"))}finally{this.status=M.BASE}}else(0,l.Qg)((0,o.t)("systemtags","Only admins can create new tags"))},async onSubmit(){this.status=M.LOADING,O.A.debug("Applying tags",{toAdd:this.toAdd,toRemove:this.toRemove});try{for(const t of this.toAdd){const{etag:e,objects:s}=await(0,$.b0)(t,"files"),a=[...new Set([...s.map((t=>t.id)).filter(Boolean),...this.nodes.map((t=>t.fileid)).filter(Boolean)])];await(0,$.T0)(t,"files",a.map((t=>({id:t,type:"files"}))),e)}for(const t of this.toRemove){const{etag:e,objects:s}=await(0,$.b0)(t,"files"),a=new Set(this.nodes.map((t=>t.fileid))),i=s.map((t=>t.id)).filter(((t,e,s)=>!a.has(t)&&s.indexOf(t)===e));await(0,$.T0)(t,"files",i.map((t=>({id:t,type:"files"}))),e)}}catch(t){return O.A.error("Failed to apply tags",{error:t}),(0,l.Qg)((0,o.t)("systemtags","Failed to apply tags changes")),void(this.status=M.BASE)}const t=[];this.toAdd.forEach((e=>{this.nodes.forEach((s=>{const a=[...(0,z.rA)(s)||[],e.displayName].sort(((t,e)=>t.localeCompare(e,(0,o.Z0)(),{ignorePunctuation:!0})));(0,z.Pq)(s,a),t.push(s)}))})),this.toRemove.forEach((e=>{this.nodes.forEach((s=>{const a=[...(0,z.rA)(s)||[]].filter((t=>t!==e.displayName)).sort(((t,e)=>t.localeCompare(e,(0,o.Z0)(),{ignorePunctuation:!0})));(0,z.Pq)(s,a),t.push(s)}))})),t.forEach((t=>(0,i.Ic)("systemtags:node:updated",t))),this.status=M.DONE,setTimeout((()=>{this.opened=!1,this.$emit("close",!0)}),2e3)},onCancel(){this.opened=!1,(0,l.cf)((0,o.t)("systemtags","File tags modification canceled")),this.$emit("close",null)},tagListStyle(t){if(!t.color)return{"--color-circle-icon":"var(--color-text-maxcontrast)"};const e=(0,P.W7)(`#${t.color}`,`#${G}`),s=(0,P.Pj)(e)?"#000000":"#ffffff";return{"--color-circle-icon":"var(--color-primary-element)","--color-primary":e,"--color-primary-text":s,"--color-primary-element":e,"--color-primary-element-text":s}}}});var q=s(85072),Z=s.n(q),H=s(97825),V=s.n(H),U=s(77659),Y=s.n(U),Q=s(55056),K=s.n(Q),W=s(10540),J=s.n(W),X=s(41113),tt=s.n(X),et=s(1673),st={};st.styleTagTransform=tt(),st.setAttributes=K(),st.insert=Y().bind(null,"head"),st.domAPI=V(),st.insertStyleElement=J(),Z()(et.A,st),et.A&&et.A.locals&&et.A.locals;const at=(0,x.A)(F,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("NcDialog",{staticClass:"systemtags-picker",class:"systemtags-picker--"+t.status,attrs:{"data-cy-systemtags-picker":"","can-close":t.status!==t.Status.LOADING,name:t.t("systemtags","Manage tags"),open:t.opened,"close-on-click-outside":"","out-transition":""},on:{"update:open":t.onCancel},scopedSlots:t._u([{key:"actions",fn:function(){return[e("NcButton",{attrs:{disabled:t.status!==t.Status.BASE,type:"tertiary","data-cy-systemtags-picker-button-cancel":""},on:{click:t.onCancel}},[t._v("\n\t\t\t"+t._s(t.t("systemtags","Cancel"))+"\n\t\t")]),t._v(" "),e("NcButton",{attrs:{disabled:!t.hasChanges||t.status!==t.Status.BASE,"data-cy-systemtags-picker-button-submit":""},on:{click:t.onSubmit}},[t._v("\n\t\t\t"+t._s(t.t("systemtags","Apply changes"))+"\n\t\t")])]},proxy:!0}])},[t.status===t.Status.LOADING||t.status===t.Status.DONE?e("NcEmptyContent",{attrs:{name:t.t("systemtags","Applying tags changes…")},scopedSlots:t._u([{key:"icon",fn:function(){return[t.status===t.Status.LOADING?e("NcLoadingIcon"):e("CheckIcon",{attrs:{"fill-color":"var(--color-success)"}})]},proxy:!0}],null,!1,1067531430)}):[e("div",{staticClass:"systemtags-picker__input"},[e("NcTextField",{attrs:{value:t.input,label:t.canEditOrCreateTag?t.t("systemtags","Search or create tag"):t.t("systemtags","Search tag"),"data-cy-systemtags-picker-input":""},on:{"update:value":function(e){t.input=e}}},[e("TagIcon",{attrs:{size:20}})],1)],1),t._v(" "),e("ul",{staticClass:"systemtags-picker__tags",attrs:{"data-cy-systemtags-picker-tags":""}},[t._l(t.filteredTags,(function(s){return e("li",{key:s.id,staticClass:"systemtags-picker__tag",style:t.tagListStyle(s),attrs:{"data-cy-systemtags-picker-tag":s.id}},[e("NcCheckboxRadioSwitch",{staticClass:"systemtags-picker__tag-checkbox",attrs:{checked:t.isChecked(s),disabled:!s.canAssign,indeterminate:t.isIndeterminate(s),label:s.displayName},on:{"update:checked":function(e){return t.onCheckUpdate(s,e)}}},[t._v("\n\t\t\t\t\t"+t._s(t.formatTagName(s))+"\n\t\t\t\t")]),t._v(" "),t.canEditOrCreateTag?e("NcColorPicker",{staticClass:"systemtags-picker__tag-color",attrs:{"data-cy-systemtags-picker-tag-color":s.id,value:`#${s.color}`,shown:t.openedPicker===s.id},on:{"update:value":function(e){return t.onColorChange(s,e)},"update:shown":function(e){t.openedPicker=!!e&&s.id},submit:function(e){t.openedPicker=!1}}},[e("NcButton",{attrs:{"aria-label":t.t("systemtags","Change tag color"),type:"tertiary"},scopedSlots:t._u([{key:"icon",fn:function(){return[s.color?e("CircleIcon",{attrs:{size:24,"fill-color":"var(--color-circle-icon)"}}):e("CircleOutlineIcon",{attrs:{size:24,"fill-color":"var(--color-circle-icon)"}}),t._v(" "),e("PencilIcon")]},proxy:!0}],null,!0)})],1):t._e()],1)})),t._v(" "),e("li",[t.canEditOrCreateTag&&t.canCreateTag?e("NcButton",{staticClass:"systemtags-picker__tag-create",attrs:{disabled:t.status===t.Status.CREATING_TAG,alignment:"start","native-type":"submit",type:"tertiary","data-cy-systemtags-picker-button-create":""},on:{click:t.onNewTag},scopedSlots:t._u([{key:"icon",fn:function(){return[e("PlusIcon")]},proxy:!0}],null,!1,1789392498)},[t._v("\n\t\t\t\t\t"+t._s(t.input.trim())),e("br"),t._v(" "),e("span",{staticClass:"systemtags-picker__tag-create-subline"},[t._v(t._s(t.t("systemtags","Create new tag")))])]):t._e()],1)],2),t._v(" "),e("div",{staticClass:"systemtags-picker__note"},[t.hasChanges?e("NcNoteCard",{attrs:{type:"info"}},[e("span",{domProps:{innerHTML:t._s(t.statusMessage)}})]):e("NcNoteCard",{attrs:{type:"info"}},[t._v("\n\t\t\t\t"+t._s(t.canEditOrCreateTag?t.t("systemtags","Select or create tags to apply to all selected files"):t.t("systemtags","Select tags to apply to all selected files"))+"\n\t\t\t")])],1)],t._v(" "),t._v(" "),e("div",{directives:[{name:"show",rawName:"v-show",value:!1,expression:"false"}]},[e("NcChip",{ref:"chip",attrs:{text:"%s",type:"primary","no-close":""}})],1)],2)}),[],!1,null,"4c9ca3f9",null).exports}}]); -//# sourceMappingURL=9552-9552.js.map?v=9685a1f4bd2a15cb119a
\ No newline at end of file diff --git a/dist/9552-9552.js.map b/dist/9552-9552.js.map deleted file mode 100644 index cc19f0b81dc..00000000000 --- a/dist/9552-9552.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"9552-9552.js?v=9685a1f4bd2a15cb119a","mappings":"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","sources":["webpack:///nextcloud/apps/systemtags/src/components/SystemTagPicker.vue?vue&type=style&index=0&id=4c9ca3f9&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/systemtags/src/components/SystemTagPicker.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/CheckCircle.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/CheckCircle.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/CheckCircle.vue?7685","webpack:///nextcloud/node_modules/vue-material-design-icons/CheckCircle.vue?vue&type=template&id=60d94ca3","webpack:///nextcloud/node_modules/vue-material-design-icons/Circle.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/Circle.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/Circle.vue?4490","webpack:///nextcloud/node_modules/vue-material-design-icons/Circle.vue?vue&type=template&id=cd98ea1e","webpack:///nextcloud/node_modules/vue-material-design-icons/CircleOutline.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/CircleOutline.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/CircleOutline.vue?68bc","webpack:///nextcloud/node_modules/vue-material-design-icons/CircleOutline.vue?vue&type=template&id=c013567c","webpack:///nextcloud/node_modules/vue-material-design-icons/Tag.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/Tag.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/Tag.vue?6116","webpack:///nextcloud/node_modules/vue-material-design-icons/Tag.vue?vue&type=template&id=356230e0","webpack:///nextcloud/apps/systemtags/src/components/SystemTagPicker.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/systemtags/src/components/SystemTagPicker.vue?b19b","webpack://nextcloud/./apps/systemtags/src/components/SystemTagPicker.vue?ff5c"],"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, `.systemtags-picker__input[data-v-4c9ca3f9],.systemtags-picker__note[data-v-4c9ca3f9]{position:sticky;z-index:9;background-color:var(--color-main-background)}.systemtags-picker__input[data-v-4c9ca3f9]{display:flex;top:0;gap:8px;padding-block-end:8px;align-items:flex-end}.systemtags-picker__tags[data-v-4c9ca3f9]{padding-block:8px;gap:var(--default-grid-baseline);display:flex;flex-direction:column}.systemtags-picker__tags li[data-v-4c9ca3f9]{display:flex;align-items:center;justify-content:space-between;width:100%}.systemtags-picker__tags li[data-v-4c9ca3f9] .checkbox-radio-switch{width:100%}.systemtags-picker__tags li[data-v-4c9ca3f9] .checkbox-radio-switch .checkbox-content{max-width:none;box-sizing:border-box;min-height:calc(var(--default-grid-baseline)*2 + var(--default-clickable-area))}.systemtags-picker__tags .systemtags-picker__tag-color button[data-v-4c9ca3f9]{margin-inline-start:calc(var(--default-grid-baseline)*2)}.systemtags-picker__tags .systemtags-picker__tag-color button span.pencil-icon[data-v-4c9ca3f9]{display:none;color:var(--color-main-text)}.systemtags-picker__tags .systemtags-picker__tag-color button:focus .pencil-icon[data-v-4c9ca3f9],.systemtags-picker__tags .systemtags-picker__tag-color button:hover .pencil-icon[data-v-4c9ca3f9],.systemtags-picker__tags .systemtags-picker__tag-color button[aria-expanded=true] .pencil-icon[data-v-4c9ca3f9]{display:block}.systemtags-picker__tags .systemtags-picker__tag-color button:focus .circle-icon[data-v-4c9ca3f9],.systemtags-picker__tags .systemtags-picker__tag-color button:focus .circle-outline-icon[data-v-4c9ca3f9],.systemtags-picker__tags .systemtags-picker__tag-color button:hover .circle-icon[data-v-4c9ca3f9],.systemtags-picker__tags .systemtags-picker__tag-color button:hover .circle-outline-icon[data-v-4c9ca3f9],.systemtags-picker__tags .systemtags-picker__tag-color button[aria-expanded=true] .circle-icon[data-v-4c9ca3f9],.systemtags-picker__tags .systemtags-picker__tag-color button[aria-expanded=true] .circle-outline-icon[data-v-4c9ca3f9]{display:none}.systemtags-picker__tags .systemtags-picker__tag-create[data-v-4c9ca3f9] span{text-align:start}.systemtags-picker__tags .systemtags-picker__tag-create-subline[data-v-4c9ca3f9]{font-weight:normal}.systemtags-picker__note[data-v-4c9ca3f9]{bottom:0;padding-block:8px}.systemtags-picker__note[data-v-4c9ca3f9] .notecard{min-height:2lh;align-items:center}.systemtags-picker__note>div[data-v-4c9ca3f9]{margin:0 !important}.systemtags-picker--done[data-v-4c9ca3f9] .empty-content__icon{opacity:1}.nc-chip[data-v-4c9ca3f9]{display:inline !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/systemtags/src/components/SystemTagPicker.vue\"],\"names\":[],\"mappings\":\"AAEA,qFAEC,eAAA,CACA,SAAA,CACA,6CAAA,CAGD,2CACC,YAAA,CACA,KAAA,CACA,OAAA,CACA,qBAAA,CACA,oBAAA,CAGD,0CACC,iBAAA,CACA,gCAAA,CACA,YAAA,CACA,qBAAA,CAEA,6CACC,YAAA,CACA,kBAAA,CACA,6BAAA,CACA,UAAA,CAGA,oEACC,UAAA,CAEA,sFAEC,cAAA,CAEA,qBAAA,CACA,+EAAA,CAKH,+EACC,wDAAA,CAEA,gGACC,YAAA,CACA,4BAAA,CAMA,oTACC,aAAA,CAED,goBAEC,YAAA,CAMF,8EACC,gBAAA,CAED,iFACC,kBAAA,CAKH,0CACC,QAAA,CACA,iBAAA,CAEA,oDAEC,cAAA,CACA,kBAAA,CAGD,8CACC,mBAAA,CAIF,+DACC,SAAA,CAID,0BACC,yBAAA\",\"sourcesContent\":[\"\\n// Common sticky properties\\n.systemtags-picker__input,\\n.systemtags-picker__note {\\n\\tposition: sticky;\\n\\tz-index: 9;\\n\\tbackground-color: var(--color-main-background);\\n}\\n\\n.systemtags-picker__input {\\n\\tdisplay: flex;\\n\\ttop: 0;\\n\\tgap: 8px;\\n\\tpadding-block-end: 8px;\\n\\talign-items: flex-end;\\n}\\n\\n.systemtags-picker__tags {\\n\\tpadding-block: 8px;\\n\\tgap: var(--default-grid-baseline);\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\n\\tli {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: space-between;\\n\\t\\twidth: 100%;\\n\\n\\t\\t// Make switch full width\\n\\t\\t:deep(.checkbox-radio-switch) {\\n\\t\\t\\twidth: 100%;\\n\\n\\t\\t\\t.checkbox-content {\\n\\t\\t\\t\\t// adjust width\\n\\t\\t\\t\\tmax-width: none;\\n\\t\\t\\t\\t// recalculate padding\\n\\t\\t\\t\\tbox-sizing: border-box;\\n\\t\\t\\t\\tmin-height: calc(var(--default-grid-baseline) * 2 + var(--default-clickable-area));\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t.systemtags-picker__tag-color button {\\n\\t\\tmargin-inline-start: calc(var(--default-grid-baseline) * 2);\\n\\n\\t\\tspan.pencil-icon {\\n\\t\\t\\tdisplay: none;\\n\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t}\\n\\n\\t\\t&:focus,\\n\\t\\t&:hover,\\n\\t\\t&[aria-expanded='true'] {\\n\\t\\t\\t.pencil-icon {\\n\\t\\t\\t\\tdisplay: block;\\n\\t\\t\\t}\\n\\t\\t\\t.circle-icon,\\n\\t\\t\\t.circle-outline-icon {\\n\\t\\t\\t\\tdisplay: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t.systemtags-picker__tag-create {\\n\\t\\t:deep(span) {\\n\\t\\t\\ttext-align: start;\\n\\t\\t}\\n\\t\\t&-subline {\\n\\t\\t\\tfont-weight: normal;\\n\\t\\t}\\n\\t}\\n}\\n\\n.systemtags-picker__note {\\n\\tbottom: 0;\\n\\tpadding-block: 8px;\\n\\n\\t:deep(.notecard) {\\n\\t\\t// min 2 lines of text to avoid jumping\\n\\t\\tmin-height: 2lh;\\n\\t\\talign-items: center;\\n\\t}\\n\\n\\t& > div {\\n\\t\\tmargin: 0 !important;\\n\\t}\\n}\\n\\n.systemtags-picker--done :deep(.empty-content__icon) {\\n\\topacity: 1;\\n}\\n\\n// Rendered chip in note\\n.nc-chip {\\n\\tdisplay: inline !important;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcDialog',{staticClass:\"systemtags-picker\",class:'systemtags-picker--' + _vm.status,attrs:{\"data-cy-systemtags-picker\":\"\",\"can-close\":_vm.status !== _vm.Status.LOADING,\"name\":_vm.t('systemtags', 'Manage tags'),\"open\":_vm.opened,\"close-on-click-outside\":\"\",\"out-transition\":\"\"},on:{\"update:open\":_vm.onCancel},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('NcButton',{attrs:{\"disabled\":_vm.status !== _vm.Status.BASE,\"type\":\"tertiary\",\"data-cy-systemtags-picker-button-cancel\":\"\"},on:{\"click\":_vm.onCancel}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('systemtags', 'Cancel'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcButton',{attrs:{\"disabled\":!_vm.hasChanges || _vm.status !== _vm.Status.BASE,\"data-cy-systemtags-picker-button-submit\":\"\"},on:{\"click\":_vm.onSubmit}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('systemtags', 'Apply changes'))+\"\\n\\t\\t\")])]},proxy:true}])},[(_vm.status === _vm.Status.LOADING || _vm.status === _vm.Status.DONE)?_c('NcEmptyContent',{attrs:{\"name\":_vm.t('systemtags', 'Applying tags changes…')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.status === _vm.Status.LOADING)?_c('NcLoadingIcon'):_c('CheckIcon',{attrs:{\"fill-color\":\"var(--color-success)\"}})]},proxy:true}],null,false,1067531430)}):[_c('div',{staticClass:\"systemtags-picker__input\"},[_c('NcTextField',{attrs:{\"value\":_vm.input,\"label\":_vm.canEditOrCreateTag ? _vm.t('systemtags', 'Search or create tag') : _vm.t('systemtags', 'Search tag'),\"data-cy-systemtags-picker-input\":\"\"},on:{\"update:value\":function($event){_vm.input=$event}}},[_c('TagIcon',{attrs:{\"size\":20}})],1)],1),_vm._v(\" \"),_c('ul',{staticClass:\"systemtags-picker__tags\",attrs:{\"data-cy-systemtags-picker-tags\":\"\"}},[_vm._l((_vm.filteredTags),function(tag){return _c('li',{key:tag.id,staticClass:\"systemtags-picker__tag\",style:(_vm.tagListStyle(tag)),attrs:{\"data-cy-systemtags-picker-tag\":tag.id}},[_c('NcCheckboxRadioSwitch',{staticClass:\"systemtags-picker__tag-checkbox\",attrs:{\"checked\":_vm.isChecked(tag),\"disabled\":!tag.canAssign,\"indeterminate\":_vm.isIndeterminate(tag),\"label\":tag.displayName},on:{\"update:checked\":function($event){return _vm.onCheckUpdate(tag, $event)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.formatTagName(tag))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.canEditOrCreateTag)?_c('NcColorPicker',{staticClass:\"systemtags-picker__tag-color\",attrs:{\"data-cy-systemtags-picker-tag-color\":tag.id,\"value\":`#${tag.color}`,\"shown\":_vm.openedPicker === tag.id},on:{\"update:value\":function($event){return _vm.onColorChange(tag, $event)},\"update:shown\":function($event){_vm.openedPicker = $event ? tag.id : false},\"submit\":function($event){_vm.openedPicker = false}}},[_c('NcButton',{attrs:{\"aria-label\":_vm.t('systemtags', 'Change tag color'),\"type\":\"tertiary\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(tag.color)?_c('CircleIcon',{attrs:{\"size\":24,\"fill-color\":\"var(--color-circle-icon)\"}}):_c('CircleOutlineIcon',{attrs:{\"size\":24,\"fill-color\":\"var(--color-circle-icon)\"}}),_vm._v(\" \"),_c('PencilIcon')]},proxy:true}],null,true)})],1):_vm._e()],1)}),_vm._v(\" \"),_c('li',[(_vm.canEditOrCreateTag && _vm.canCreateTag)?_c('NcButton',{staticClass:\"systemtags-picker__tag-create\",attrs:{\"disabled\":_vm.status === _vm.Status.CREATING_TAG,\"alignment\":\"start\",\"native-type\":\"submit\",\"type\":\"tertiary\",\"data-cy-systemtags-picker-button-create\":\"\"},on:{\"click\":_vm.onNewTag},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('PlusIcon')]},proxy:true}],null,false,1789392498)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.input.trim())),_c('br'),_vm._v(\" \"),_c('span',{staticClass:\"systemtags-picker__tag-create-subline\"},[_vm._v(_vm._s(_vm.t('systemtags', 'Create new tag')))])]):_vm._e()],1)],2),_vm._v(\" \"),_c('div',{staticClass:\"systemtags-picker__note\"},[(!_vm.hasChanges)?_c('NcNoteCard',{attrs:{\"type\":\"info\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.canEditOrCreateTag ? _vm.t('systemtags', 'Select or create tags to apply to all selected files'): _vm.t('systemtags', 'Select tags to apply to all selected files'))+\"\\n\\t\\t\\t\")]):_c('NcNoteCard',{attrs:{\"type\":\"info\"}},[_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.statusMessage)}})])],1)],_vm._v(\" \"),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(false),expression:\"false\"}]},[_c('NcChip',{ref:\"chip\",attrs:{\"text\":\"%s\",\"type\":\"primary\",\"no-close\":\"\"}})],1)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon check-circle-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M10 17L5 12L6.41 10.59L10 14.17L17.59 6.58L19 8L10 17Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"CheckCircleIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./CheckCircle.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./CheckCircle.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./CheckCircle.vue?vue&type=template&id=60d94ca3\"\nimport script from \"./CheckCircle.vue?vue&type=script&lang=js\"\nexport * from \"./CheckCircle.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../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',_vm._b({staticClass:\"material-design-icon check-circle-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M10 17L5 12L6.41 10.59L10 14.17L17.59 6.58L19 8L10 17Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Circle.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Circle.vue?vue&type=script&lang=js\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon circle-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"CircleIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./Circle.vue?vue&type=template&id=cd98ea1e\"\nimport script from \"./Circle.vue?vue&type=script&lang=js\"\nexport * from \"./Circle.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../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',_vm._b({staticClass:\"material-design-icon circle-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./CircleOutline.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./CircleOutline.vue?vue&type=script&lang=js\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon circle-outline-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"CircleOutlineIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./CircleOutline.vue?vue&type=template&id=c013567c\"\nimport script from \"./CircleOutline.vue?vue&type=script&lang=js\"\nexport * from \"./CircleOutline.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../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',_vm._b({staticClass:\"material-design-icon circle-outline-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon tag-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M5.5,7A1.5,1.5 0 0,1 4,5.5A1.5,1.5 0 0,1 5.5,4A1.5,1.5 0 0,1 7,5.5A1.5,1.5 0 0,1 5.5,7M21.41,11.58L12.41,2.58C12.05,2.22 11.55,2 11,2H4C2.89,2 2,2.89 2,4V11C2,11.55 2.22,12.05 2.59,12.41L11.58,21.41C11.95,21.77 12.45,22 13,22C13.55,22 14.05,21.77 14.41,21.41L21.41,14.41C21.78,14.05 22,13.55 22,13C22,12.44 21.77,11.94 21.41,11.58Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"TagIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Tag.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Tag.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Tag.vue?vue&type=template&id=356230e0\"\nimport script from \"./Tag.vue?vue&type=script&lang=js\"\nexport * from \"./Tag.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../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',_vm._b({staticClass:\"material-design-icon tag-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M5.5,7A1.5,1.5 0 0,1 4,5.5A1.5,1.5 0 0,1 5.5,4A1.5,1.5 0 0,1 7,5.5A1.5,1.5 0 0,1 5.5,7M21.41,11.58L12.41,2.58C12.05,2.22 11.55,2 11,2H4C2.89,2 2,2.89 2,4V11C2,11.55 2.22,12.05 2.59,12.41L11.58,21.41C11.95,21.77 12.45,22 13,22C13.55,22 14.05,21.77 14.41,21.41L21.41,14.41C21.78,14.05 22,13.55 22,13C22,12.44 21.77,11.94 21.41,11.58Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\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!./SystemTagPicker.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!./SystemTagPicker.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!./SystemTagPicker.vue?vue&type=style&index=0&id=4c9ca3f9&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./SystemTagPicker.vue?vue&type=style&index=0&id=4c9ca3f9&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SystemTagPicker.vue?vue&type=template&id=4c9ca3f9&scoped=true\"\nimport script from \"./SystemTagPicker.vue?vue&type=script&lang=ts\"\nexport * from \"./SystemTagPicker.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SystemTagPicker.vue?vue&type=style&index=0&id=4c9ca3f9&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 \"4c9ca3f9\",\n null\n \n)\n\nexport default component.exports"],"names":["___CSS_LOADER_EXPORT___","push","module","id","name","emits","props","title","type","String","fillColor","default","size","Number","_vm","this","_c","_self","_b","staticClass","attrs","on","$event","$emit","$attrs","_v","_s","_e","debounceUpdateTag","debounce","updateTag","mainBackgroundColor","getComputedStyle","document","body","getPropertyValue","replace","isDarkModeEnabled","Status","restrictSystemTagsCreationToAdmin","loadState","defineComponent","components","CheckIcon","CircleIcon","CircleOutlineIcon","NcButton","NcCheckboxRadioSwitch","NcChip","NcColorPicker","NcDialog","NcEmptyContent","NcLoadingIcon","NcNoteCard","NcTextField","PencilIcon","PlusIcon","TagIcon","nodes","Array","required","setup","emit","t","canEditOrCreateTag","getCurrentUser","isAdmin","data","status","BASE","opened","openedPicker","input","tags","tagList","toAdd","toRemove","computed","sortedTags","sort","a","b","displayName","localeCompare","getLanguage","ignorePunctuation","filteredTags","trim","filter","tag","normalize","includes","hasChanges","length","canCreateTag","some","toLocaleLowerCase","statusMessage","n","tag1","formatTagChip","tag2","count","escape","tagsAdd","map","lastTagAdd","pop","tagsRemove","lastTagRemove","addStringSingular","removeStringSingular","addStringPlural","join","lastTag","removeStringPlural","beforeMount","fetchTags","then","reduce","acc","node","getNodeSystemTags","forEach","logger","debug","methods","chipCloneEl","$refs","chip","$el","cloneNode","color","style","tagListStyle","Object","entries","_ref","key","value","setProperty","outerHTML","escapeHTML","domPurify","sanitize","formatTagName","userVisible","userAssignable","onColorChange","isChecked","isIndeterminate","onCheckUpdate","checked","search","onNewTag","CREATING_TAG","payload","canAssign","createTag","fetchTag","$nextTick","newTagEl","querySelector","scrollIntoView","behavior","block","inline","error","showError","message","onSubmit","LOADING","etag","objects","getTagObjects","ids","Set","obj","Boolean","fileid","setTagObjects","nodeFileIds","index","self","has","indexOf","setNodeSystemTags","DONE","setTimeout","onCancel","showInfo","primaryElement","elementColor","textColor","invertTextColor","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_setupProxy","class","scopedSlots","_u","fn","proxy","_l","domProps","directives","rawName","expression","ref"],"sourceRoot":""}
\ No newline at end of file diff --git a/dist/9552-9552.js.map.license b/dist/9552-9552.js.map.license deleted file mode 120000 index 5eec24947f5..00000000000 --- a/dist/9552-9552.js.map.license +++ /dev/null @@ -1 +0,0 @@ -9552-9552.js.license
\ No newline at end of file diff --git a/dist/settings-users-3239.js b/dist/settings-users-3239.js index dc3caa3f178..1cd5ed2b4bf 100644 --- a/dist/settings-users-3239.js +++ b/dist/settings-users-3239.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunknextcloud=self.webpackChunknextcloud||[]).push([[3239],{6817:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),i=s.n(a),n=s(76314),r=s.n(n)()(i());r.push([t.id,".dialog__note[data-v-9f7a355c]{font-weight:normal}fieldset[data-v-9f7a355c]{font-weight:bold}","",{version:3,sources:["webpack://./apps/settings/src/components/Users/UserSettingsDialog.vue"],names:[],mappings:"AAEC,+BACC,kBAAA,CAIF,0BACC,gBAAA",sourcesContent:["\n.dialog {\n\t&__note {\n\t\tfont-weight: normal;\n\t}\n}\n\nfieldset {\n\tfont-weight: bold;\n}\n"],sourceRoot:""}]);const o=r},12795:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),i=s.n(a),n=s(76314),r=s.n(n)()(i());r.push([t.id,".user-list[data-v-21942da5]{--avatar-cell-width: 48px;--cell-padding: 7px;--cell-width: 200px;--cell-width-large: 300px;--cell-min-width: calc(var(--cell-width) - (2 * var(--cell-padding)));--sticky-column-z-index: calc(var(--vs-dropdown-z-index) + 1);display:block;overflow:auto;height:100%;will-change:scroll-position}.user-list__header[data-v-21942da5],.user-list__footer[data-v-21942da5]{position:sticky;display:block}.user-list__header[data-v-21942da5]{top:0;z-index:calc(var(--sticky-column-z-index) + 1)}.user-list__footer[data-v-21942da5]{inset-inline-start:0}.user-list__body[data-v-21942da5]{display:flex;flex-direction:column;width:100%}","",{version:3,sources:["webpack://./apps/settings/src/components/Users/VirtualList.vue"],names:[],mappings:"AACA,4BACC,yBAAA,CACA,mBAAA,CACA,mBAAA,CACA,yBAAA,CACA,qEAAA,CACA,6DAAA,CAGA,aAAA,CACA,aAAA,CACA,WAAA,CACA,2BAAA,CAEA,wEAEC,eAAA,CAEA,aAAA,CAGD,oCACC,KAAA,CACA,8CAAA,CAGD,oCACC,oBAAA,CAGD,kCACC,YAAA,CACA,qBAAA,CACA,UAAA",sourcesContent:["\n.user-list {\n\t--avatar-cell-width: 48px;\n\t--cell-padding: 7px;\n\t--cell-width: 200px;\n\t--cell-width-large: 300px;\n\t--cell-min-width: calc(var(--cell-width) - (2 * var(--cell-padding)));\n\t--sticky-column-z-index: calc(var(--vs-dropdown-z-index) + 1); // Keep the sticky column on top of the select dropdown\n\n\t// Necessary for virtual scroll optimized rendering\n\tdisplay: block;\n\toverflow: auto;\n\theight: 100%;\n\twill-change: scroll-position;\n\n\t&__header,\n\t&__footer {\n\t\tposition: sticky;\n\t\t// Fix sticky positioning in Firefox\n\t\tdisplay: block;\n\t}\n\n\t&__header {\n\t\ttop: 0;\n\t\tz-index: calc(var(--sticky-column-z-index) + 1);\n\t}\n\n\t&__footer {\n\t\tinset-inline-start: 0;\n\t}\n\n\t&__body {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\twidth: 100%;\n\t}\n}\n"],sourceRoot:""}]);const o=r},24882:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),i=s.n(a),n=s(76314),r=s.n(n)()(i());r.push([t.id,".header[data-v-5c0f8828]{border-bottom:1px solid var(--color-border);position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background)}.header__cell[data-v-5c0f8828]{display:flex;flex-direction:column;justify-content:center;padding:0 var(--cell-padding);min-width:var(--cell-width);width:var(--cell-width);color:var(--color-main-text)}.header__cell strong[data-v-5c0f8828],.header__cell span[data-v-5c0f8828],.header__cell label[data-v-5c0f8828]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.header__cell--avatar[data-v-5c0f8828],.header__cell--displayname[data-v-5c0f8828]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.header__cell--avatar[data-v-5c0f8828]{inset-inline-start:0}.header__cell--displayname[data-v-5c0f8828]{inset-inline-start:var(--avatar-cell-width);border-inline-end:1px solid var(--color-border)}}.header__cell--username[data-v-5c0f8828]{padding-inline-start:calc(var(--default-grid-baseline)*3)}.header__cell--avatar[data-v-5c0f8828]{min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0;user-select:none}.header__cell--multiline span[data-v-5c0f8828]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.header__cell--multiline span[data-v-5c0f8828]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.header__cell--large[data-v-5c0f8828]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.header__cell--obfuscated[data-v-5c0f8828]{min-width:400px;width:400px}.header__cell--fill[data-v-5c0f8828]{min-width:var(--cell-width-large);width:100%}.header__cell--actions[data-v-5c0f8828]{position:sticky;inset-inline-end:0;z-index:var(--sticky-column-z-index);display:flex;flex-direction:row;align-items:center;min-width:110px;width:110px;background-color:var(--color-main-background);border-inline-start:1px solid var(--color-border)}.header__subtitle[data-v-5c0f8828]{color:var(--color-text-maxcontrast)}","",{version:3,sources:["webpack://./apps/settings/src/components/Users/UserListHeader.vue","webpack://./apps/settings/src/components/Users/shared/styles.scss"],names:[],mappings:"AAGA,yBACC,2CAAA,CCEA,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CAIA,+BACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,6BAAA,CACA,2BAAA,CACA,uBAAA,CACA,4BAAA,CAEA,+GAGC,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CAGD,yBACC,mFAEC,eAAA,CACA,oCAAA,CACA,6CAAA,CAGD,uCACC,oBAAA,CAGD,4CACC,2CAAA,CACA,+CAAA,CAAA,CAIF,yCACC,yDAAA,CAGD,uCACC,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CACA,gBAAA,CAIA,+CACC,iBAAA,CACA,iBAAA,CAEA,iCAJD,+CAKE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,sCACC,iCAAA,CACA,6BAAA,CAGD,2CACC,eAAA,CACA,WAAA,CAID,qCACC,iCAAA,CACA,UAAA,CAGD,wCACC,eAAA,CACA,kBAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,iDAAA,CAIF,mCACC,mCAAA",sourcesContent:["\n@use './shared/styles';\n\n.header {\n\tborder-bottom: 1px solid var(--color-border);\n\n\t@include styles.row;\n\t@include styles.cell;\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n@mixin row {\n\tposition: relative;\n\tdisplay: flex;\n\tmin-width: 100%;\n\twidth: fit-content;\n\theight: var(--row-height);\n\tbackground-color: var(--color-main-background);\n}\n\n@mixin cell {\n\t&__cell {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\tpadding: 0 var(--cell-padding);\n\t\tmin-width: var(--cell-width);\n\t\twidth: var(--cell-width);\n\t\tcolor: var(--color-main-text);\n\n\t\tstrong,\n\t\tspan,\n\t\tlabel {\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\t\t\toverflow-wrap: anywhere;\n\t\t}\n\n\t\t@media (min-width: 670px) { /* Show one &--large column between stickied columns */\n\t\t\t&--avatar,\n\t\t\t&--displayname {\n\t\t\t\tposition: sticky;\n\t\t\t\tz-index: var(--sticky-column-z-index);\n\t\t\t\tbackground-color: var(--color-main-background);\n\t\t\t}\n\n\t\t\t&--avatar {\n\t\t\t\tinset-inline-start: 0;\n\t\t\t}\n\n\t\t\t&--displayname {\n\t\t\t\tinset-inline-start: var(--avatar-cell-width);\n\t\t\t\tborder-inline-end: 1px solid var(--color-border);\n\t\t\t}\n\t\t}\n\n\t\t&--username {\n\t\t\tpadding-inline-start: calc(var(--default-grid-baseline) * 3);\n\t\t}\n\n\t\t&--avatar {\n\t\t\tmin-width: var(--avatar-cell-width);\n\t\t\twidth: var(--avatar-cell-width);\n\t\t\talign-items: center;\n\t\t\tpadding: 0;\n\t\t\tuser-select: none;\n\t\t}\n\n\t\t&--multiline {\n\t\t\tspan {\n\t\t\t\tline-height: 1.3em;\n\t\t\t\twhite-space: unset;\n\n\t\t\t\t@supports (-webkit-line-clamp: 2) {\n\t\t\t\t\tdisplay: -webkit-box;\n\t\t\t\t\t-webkit-line-clamp: 2;\n\t\t\t\t\t-webkit-box-orient: vertical;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&--large {\n\t\t\tmin-width: var(--cell-width-large);\n\t\t\twidth: var(--cell-width-large);\n\t\t}\n\n\t\t&--obfuscated {\n\t\t\tmin-width: 400px;\n\t\t\twidth: 400px;\n\t\t}\n\n\t\t// Fill remaining row space with cell\n\t\t&--fill {\n\t\t\tmin-width: var(--cell-width-large);\n\t\t\twidth: 100%;\n\t\t}\n\n\t\t&--actions {\n\t\t\tposition: sticky;\n\t\t\tinset-inline-end: 0;\n\t\t\tz-index: var(--sticky-column-z-index);\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: row;\n\t\t\talign-items: center;\n\t\t\tmin-width: 110px;\n\t\t\twidth: 110px;\n\t\t\tbackground-color: var(--color-main-background);\n\t\t\tborder-inline-start: 1px solid var(--color-border);\n\t\t}\n\t}\n\n\t&__subtitle {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n}\n"],sourceRoot:""}]);const o=r},27514:t=>{t.exports="data:image/svg+xml,%3c%21--%20-%20SPDX-FileCopyrightText:%202020%20Google%20Inc.%20-%20SPDX-License-Identifier:%20Apache-2.0%20--%3e%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M18.4%207.4L17%206l-6%206%206%206%201.4-1.4-4.6-4.6%204.6-4.6m-6%200L11%206l-6%206%206%206%201.4-1.4L7.8%2012l4.6-4.6z%27/%3e%3c/svg%3e"},27518:t=>{t.exports="data:image/svg+xml,%3c%21--%20-%20SPDX-FileCopyrightText:%202020%20Google%20Inc.%20-%20SPDX-License-Identifier:%20Apache-2.0%20--%3e%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M15.4%2016.6L10.8%2012l4.6-4.6L14%206l-6%206%206%206%201.4-1.4z%27/%3e%3c/svg%3e"},46984:(t,e,s)=>{s.d(e,{FF:()=>d,Iu:()=>l,N_:()=>o});var a=s(65043),i=s(63814),n=s(36117);const r=t=>({id:t.id,name:t.displayname,usercount:t.usercount,disabled:t.disabled,canAdd:t.canAdd,canRemove:t.canRemove}),o=t=>{let{search:e,offset:s,limit:o}=t;const l=new AbortController;return new n.CancelablePromise((async(t,n,d)=>{d((()=>l.abort()));try{const{data:n}=await a.Ay.get((0,i.KT)("/cloud/groups/details?search={search}&offset={offset}&limit={limit}",{search:e,offset:s,limit:o}),{signal:l.signal});t((n.ocs?.data?.groups??[]).map(r))}catch(t){n(t)}}))},l=async t=>{let{userId:e}=t;const s=(0,i.KT)("/cloud/users/{userId}/groups/details",{userId:e}),{data:n}=await a.Ay.get(s);return(n.ocs?.data?.groups??[]).map(r)},d=async t=>{let{userId:e}=t;const s=(0,i.KT)("/cloud/users/{userId}/subadmins/details",{userId:e}),{data:n}=await a.Ay.get(s);return(n.ocs?.data?.groups??[]).map(r)}},49977:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),i=s.n(a),n=s(76314),r=s.n(n)()(i());r.push([t.id,".account-management__navigation[data-v-edf83404] .app-navigation__body{will-change:scroll-position}.account-management__system-list[data-v-edf83404]{height:auto !important;overflow:visible !important}.account-management__group-list[data-v-edf83404]{height:100% !important}.account-management__settings-toggle[data-v-edf83404]{margin-bottom:12px}","",{version:3,sources:["webpack://./apps/settings/src/views/UserManagementNavigation.vue"],names:[],mappings:"AAGE,uEACC,2BAAA,CAGF,kDACC,sBAAA,CACA,2BAAA,CAGD,iDACC,sBAAA,CAGD,sDACC,kBAAA",sourcesContent:["\n.account-management {\n\t&__navigation {\n\t\t:deep(.app-navigation__body) {\n\t\t\twill-change: scroll-position;\n\t\t}\n\t}\n\t&__system-list {\n\t\theight: auto !important;\n\t\toverflow: visible !important;\n\t}\n\n\t&__group-list {\n\t\theight: 100% !important;\n\t}\n\n\t&__settings-toggle {\n\t\tmargin-bottom: 12px;\n\t}\n}\n"],sourceRoot:""}]);const o=r},50085:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),i=s.n(a),n=s(76314),r=s.n(n)()(i());r.push([t.id,".user-list__row[data-v-e966b116]{position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background)}.user-list__row[data-v-e966b116]:hover{background-color:var(--color-background-hover)}.user-list__row:hover .row__cell[data-v-e966b116]:not(.row__cell--actions){background-color:var(--color-background-hover)}.user-list__row .select--fill[data-v-e966b116]{max-width:calc(var(--cell-width-large) - 2*var(--cell-padding))}.row__cell[data-v-e966b116]{display:flex;flex-direction:column;justify-content:center;padding:0 var(--cell-padding);min-width:var(--cell-width);width:var(--cell-width);color:var(--color-main-text)}.row__cell strong[data-v-e966b116],.row__cell span[data-v-e966b116],.row__cell label[data-v-e966b116]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.row__cell--avatar[data-v-e966b116],.row__cell--displayname[data-v-e966b116]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.row__cell--avatar[data-v-e966b116]{inset-inline-start:0}.row__cell--displayname[data-v-e966b116]{inset-inline-start:var(--avatar-cell-width);border-inline-end:1px solid var(--color-border)}}.row__cell--username[data-v-e966b116]{padding-inline-start:calc(var(--default-grid-baseline)*3)}.row__cell--avatar[data-v-e966b116]{min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0;user-select:none}.row__cell--multiline span[data-v-e966b116]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.row__cell--multiline span[data-v-e966b116]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.row__cell--large[data-v-e966b116]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.row__cell--obfuscated[data-v-e966b116]{min-width:400px;width:400px}.row__cell--fill[data-v-e966b116]{min-width:var(--cell-width-large);width:100%}.row__cell--actions[data-v-e966b116]{position:sticky;inset-inline-end:0;z-index:var(--sticky-column-z-index);display:flex;flex-direction:row;align-items:center;min-width:110px;width:110px;background-color:var(--color-main-background);border-inline-start:1px solid var(--color-border)}.row__subtitle[data-v-e966b116]{color:var(--color-text-maxcontrast)}.row__cell[data-v-e966b116]{border-bottom:1px solid var(--color-border)}.row__cell[data-v-e966b116] .v-select.select{min-width:var(--cell-min-width)}.row__progress[data-v-e966b116]{margin-top:4px}.row__progress--warn[data-v-e966b116]::-moz-progress-bar{background:var(--color-warning) !important}.row__progress--warn[data-v-e966b116]::-webkit-progress-value{background:var(--color-warning) !important}","",{version:3,sources:["webpack://./apps/settings/src/components/Users/UserRow.vue","webpack://./apps/settings/src/components/Users/shared/styles.scss"],names:[],mappings:"AAGA,iCCGC,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CDLA,uCACC,8CAAA,CAEA,2EACC,8CAAA,CAKF,+CACC,+DAAA,CCDD,4BACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,6BAAA,CACA,2BAAA,CACA,uBAAA,CACA,4BAAA,CAEA,sGAGC,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CAGD,yBACC,6EAEC,eAAA,CACA,oCAAA,CACA,6CAAA,CAGD,oCACC,oBAAA,CAGD,yCACC,2CAAA,CACA,+CAAA,CAAA,CAIF,sCACC,yDAAA,CAGD,oCACC,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CACA,gBAAA,CAIA,4CACC,iBAAA,CACA,iBAAA,CAEA,iCAJD,4CAKE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,mCACC,iCAAA,CACA,6BAAA,CAGD,wCACC,eAAA,CACA,WAAA,CAID,kCACC,iCAAA,CACA,UAAA,CAGD,qCACC,eAAA,CACA,kBAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,iDAAA,CAIF,gCACC,mCAAA,CDpFD,4BACC,2CAAA,CAGC,6CACC,+BAAA,CAKH,gCACC,cAAA,CAGC,yDACC,0CAAA,CAED,8DACC,0CAAA",sourcesContent:["\n@use './shared/styles';\n\n.user-list__row {\n\t@include styles.row;\n\n\t&:hover {\n\t\tbackground-color: var(--color-background-hover);\n\n\t\t.row__cell:not(.row__cell--actions) {\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t}\n\t}\n\n\t// Limit width of select in fill cell\n\t.select--fill {\n\t\tmax-width: calc(var(--cell-width-large) - (2 * var(--cell-padding)));\n\t}\n}\n\n.row {\n\t@include styles.cell;\n\n\t&__cell {\n\t\tborder-bottom: 1px solid var(--color-border);\n\n\t\t:deep {\n\t\t\t.v-select.select {\n\t\t\t\tmin-width: var(--cell-min-width);\n\t\t\t}\n\t\t}\n\t}\n\n\t&__progress {\n\t\tmargin-top: 4px;\n\n\t\t&--warn {\n\t\t\t&::-moz-progress-bar {\n\t\t\t\tbackground: var(--color-warning) !important;\n\t\t\t}\n\t\t\t&::-webkit-progress-value {\n\t\t\t\tbackground: var(--color-warning) !important;\n\t\t\t}\n\t\t}\n\t}\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n@mixin row {\n\tposition: relative;\n\tdisplay: flex;\n\tmin-width: 100%;\n\twidth: fit-content;\n\theight: var(--row-height);\n\tbackground-color: var(--color-main-background);\n}\n\n@mixin cell {\n\t&__cell {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\tpadding: 0 var(--cell-padding);\n\t\tmin-width: var(--cell-width);\n\t\twidth: var(--cell-width);\n\t\tcolor: var(--color-main-text);\n\n\t\tstrong,\n\t\tspan,\n\t\tlabel {\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\t\t\toverflow-wrap: anywhere;\n\t\t}\n\n\t\t@media (min-width: 670px) { /* Show one &--large column between stickied columns */\n\t\t\t&--avatar,\n\t\t\t&--displayname {\n\t\t\t\tposition: sticky;\n\t\t\t\tz-index: var(--sticky-column-z-index);\n\t\t\t\tbackground-color: var(--color-main-background);\n\t\t\t}\n\n\t\t\t&--avatar {\n\t\t\t\tinset-inline-start: 0;\n\t\t\t}\n\n\t\t\t&--displayname {\n\t\t\t\tinset-inline-start: var(--avatar-cell-width);\n\t\t\t\tborder-inline-end: 1px solid var(--color-border);\n\t\t\t}\n\t\t}\n\n\t\t&--username {\n\t\t\tpadding-inline-start: calc(var(--default-grid-baseline) * 3);\n\t\t}\n\n\t\t&--avatar {\n\t\t\tmin-width: var(--avatar-cell-width);\n\t\t\twidth: var(--avatar-cell-width);\n\t\t\talign-items: center;\n\t\t\tpadding: 0;\n\t\t\tuser-select: none;\n\t\t}\n\n\t\t&--multiline {\n\t\t\tspan {\n\t\t\t\tline-height: 1.3em;\n\t\t\t\twhite-space: unset;\n\n\t\t\t\t@supports (-webkit-line-clamp: 2) {\n\t\t\t\t\tdisplay: -webkit-box;\n\t\t\t\t\t-webkit-line-clamp: 2;\n\t\t\t\t\t-webkit-box-orient: vertical;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&--large {\n\t\t\tmin-width: var(--cell-width-large);\n\t\t\twidth: var(--cell-width-large);\n\t\t}\n\n\t\t&--obfuscated {\n\t\t\tmin-width: 400px;\n\t\t\twidth: 400px;\n\t\t}\n\n\t\t// Fill remaining row space with cell\n\t\t&--fill {\n\t\t\tmin-width: var(--cell-width-large);\n\t\t\twidth: 100%;\n\t\t}\n\n\t\t&--actions {\n\t\t\tposition: sticky;\n\t\t\tinset-inline-end: 0;\n\t\t\tz-index: var(--sticky-column-z-index);\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: row;\n\t\t\talign-items: center;\n\t\t\tmin-width: 110px;\n\t\t\twidth: 110px;\n\t\t\tbackground-color: var(--color-main-background);\n\t\t\tborder-inline-start: 1px solid var(--color-border);\n\t\t}\n\t}\n\n\t&__subtitle {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n}\n"],sourceRoot:""}]);const o=r},50540:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),i=s.n(a),n=s(76314),r=s.n(n)()(i());r.push([t.id,".dialog__form[data-v-70bbf4c9]{display:flex;flex-direction:column;align-items:center;padding:0 8px;gap:4px 0}.dialog__item[data-v-70bbf4c9]{width:100%}.dialog__item[data-v-70bbf4c9]:not(:focus):not(:active){border-color:var(--color-border-dark)}.dialog__hint[data-v-70bbf4c9]{color:var(--color-text-maxcontrast);margin-top:8px;align-self:flex-start}.dialog__label[data-v-70bbf4c9]{display:block;padding:4px 0}.dialog__select[data-v-70bbf4c9]{width:100%}.dialog__managers[data-v-70bbf4c9]{margin-bottom:12px}.dialog__submit[data-v-70bbf4c9]{margin-top:4px;margin-bottom:8px}.dialog[data-v-70bbf4c9] .dialog__actions{margin:auto}","",{version:3,sources:["webpack://./apps/settings/src/components/Users/NewUserDialog.vue"],names:[],mappings:"AAEC,+BACC,YAAA,CACA,qBAAA,CACA,kBAAA,CACA,aAAA,CACA,SAAA,CAGD,+BACC,UAAA,CAEA,wDACC,qCAAA,CAIF,+BACC,mCAAA,CACA,cAAA,CACA,qBAAA,CAGD,gCACC,aAAA,CACA,aAAA,CAGD,iCACC,UAAA,CAGD,mCACC,kBAAA,CAGD,iCACC,cAAA,CACA,iBAAA,CAIA,0CACC,WAAA",sourcesContent:["\n.dialog {\n\t&__form {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t\tpadding: 0 8px;\n\t\tgap: 4px 0;\n\t}\n\n\t&__item {\n\t\twidth: 100%;\n\n\t\t&:not(:focus):not(:active) {\n\t\t\tborder-color: var(--color-border-dark);\n\t\t}\n\t}\n\n\t&__hint {\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tmargin-top: 8px;\n\t\talign-self: flex-start;\n\t}\n\n\t&__label {\n\t\tdisplay: block;\n\t\tpadding: 4px 0;\n\t}\n\n\t&__select {\n\t\twidth: 100%;\n\t}\n\n\t&__managers {\n\t\tmargin-bottom: 12px;\n\t}\n\n\t&__submit {\n\t\tmargin-top: 4px;\n\t\tmargin-bottom: 8px;\n\t}\n\n\t:deep {\n\t\t.dialog__actions {\n\t\t\tmargin: auto;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const o=r},51285:(e,s,a)=>{a.r(s),a.d(s,{default:()=>ht});var i=a(85471),n=a(9165),r=a(53334),o=a(42530),l=a(52439),d=a(27345),c=a(85865),u=a(97012),g=a(85947),A=a(6695),p=a(35810),h=a(63814),m=a(65043),C=a(24784),v=a(14727),w=a(32073),_=a(40083),b=a(67607),f=a(15916),y=a(95668),x=a(36620);const N={name:"UserSettingsDialog",components:{NcAppSettingsDialog:C.N,NcAppSettingsSection:v.A,NcCheckboxRadioSwitch:w.A,NcNoteCard:_.A,NcSelect:b.A},props:{open:{type:Boolean,required:!0}},data:()=>({selectedQuota:!1,loadingSendMail:!1}),computed:{groupSorting:{get(){return this.$store.getters.getGroupSorting===f.q.GroupName?"name":"member-count"},set(t){this.$store.commit("setGroupSorting","name"===t?f.q.GroupName:f.q.UserCount)}},isGroupSortingEnforced(){return this.$store.getters.getServerData.forceSortGroupByName},isModalOpen:{get(){return this.open},set(t){this.$emit("update:open",t)}},showConfig(){return this.$store.getters.getShowConfig},settings(){return this.$store.getters.getServerData},showLanguages:{get(){return this.showConfig.showLanguages},set(t){this.setShowConfig("showLanguages",t)}},showFirstLogin:{get(){return this.showConfig.showFirstLogin},set(t){this.setShowConfig("showFirstLogin",t)}},showLastLogin:{get(){return this.showConfig.showLastLogin},set(t){this.setShowConfig("showLastLogin",t)}},showUserBackend:{get(){return this.showConfig.showUserBackend},set(t){this.setShowConfig("showUserBackend",t)}},showStoragePath:{get(){return this.showConfig.showStoragePath},set(t){this.setShowConfig("showStoragePath",t)}},quotaOptions(){const t=this.settings.quotaPreset.reduce(((t,e)=>t.concat({id:e,label:e})),[]);return this.settings.allowUnlimitedQuota&&t.unshift(y.SA),t},defaultQuota:{get(){return!1!==this.selectedQuota?this.selectedQuota:this.settings.defaultQuota!==y.SA.id&&OC.Util.computerFileSize(this.settings.defaultQuota)>=0?{id:this.settings.defaultQuota,label:this.settings.defaultQuota}:y.SA},set(t){this.selectedQuota=t}},sendWelcomeMail:{get(){return this.settings.newUserSendEmail},async set(t){try{this.loadingSendMail=!0,this.$store.commit("setServerData",{...this.settings,newUserSendEmail:t}),await m.Ay.post((0,h.Jv)("/settings/users/preferences/newUser.sendEmail"),{value:t?"yes":"no"})}catch(t){x.A.error("Could not update newUser.sendEmail preference",{error:t})}finally{this.loadingSendMail=!1}}}},methods:{filterQuotas(t,e,s){const a=s.toLocaleLowerCase().replaceAll(/\s/g,"");return(e||"").toLocaleLowerCase().replaceAll(/\s/g,"").indexOf(a)>-1},setShowConfig(t,e){this.$store.commit("setShowConfig",{key:t,value:e})},validateQuota(t){"object"==typeof t&&(t=t?.id||t.label);const e=(0,p.lT)(t,!0);return null===e?y.SA:{id:t=(0,p.v7)(e),label:t}},setDefaultQuota(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"none";"none"===t&&(t=y.SA),this.$store.dispatch("setAppConfig",{app:"files",key:"default_quota",value:t.id?t.id:t}).then((()=>{"object"!=typeof t&&(t={id:t,label:t}),this.defaultQuota=t}))}}};var k=a(85072),S=a.n(k),G=a(97825),U=a.n(G),L=a(77659),D=a.n(L),B=a(55056),I=a.n(B),q=a(10540),O=a.n(q),M=a(41113),F=a.n(M),$=a(6817),T={};T.styleTagTransform=F(),T.setAttributes=I(),T.insert=D().bind(null,"head"),T.domAPI=U(),T.insertStyleElement=O(),S()($.A,T),$.A&&$.A.locals&&$.A.locals;var E=a(14486);const P=(0,E.A)(N,(function(){var t=this,e=t._self._c;return e("NcAppSettingsDialog",{attrs:{open:t.isModalOpen,"show-navigation":!0,name:t.t("settings","Account management settings")},on:{"update:open":function(e){t.isModalOpen=e}}},[e("NcAppSettingsSection",{attrs:{id:"visibility-settings",name:t.t("settings","Visibility")}},[e("NcCheckboxRadioSwitch",{attrs:{type:"switch","data-test":"showLanguages",checked:t.showLanguages},on:{"update:checked":function(e){t.showLanguages=e}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Show language"))+"\n\t\t")]),t._v(" "),e("NcCheckboxRadioSwitch",{attrs:{type:"switch","data-test":"showUserBackend",checked:t.showUserBackend},on:{"update:checked":function(e){t.showUserBackend=e}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Show account backend"))+"\n\t\t")]),t._v(" "),e("NcCheckboxRadioSwitch",{attrs:{type:"switch","data-test":"showStoragePath",checked:t.showStoragePath},on:{"update:checked":function(e){t.showStoragePath=e}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Show storage path"))+"\n\t\t")]),t._v(" "),e("NcCheckboxRadioSwitch",{attrs:{type:"switch","data-test":"showFirstLogin",checked:t.showFirstLogin},on:{"update:checked":function(e){t.showFirstLogin=e}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Show first login"))+"\n\t\t")]),t._v(" "),e("NcCheckboxRadioSwitch",{attrs:{type:"switch","data-test":"showLastLogin",checked:t.showLastLogin},on:{"update:checked":function(e){t.showLastLogin=e}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Show last login"))+"\n\t\t")])],1),t._v(" "),e("NcAppSettingsSection",{attrs:{id:"groups-sorting",name:t.t("settings","Sorting")}},[t.isGroupSortingEnforced?e("NcNoteCard",{attrs:{type:"warning"}},[t._v("\n\t\t\t"+t._s(t.t("settings","The system config enforces sorting the groups by name. This also disables showing the member count."))+"\n\t\t")]):t._e(),t._v(" "),e("fieldset",[e("legend",[t._v(t._s(t.t("settings","Group list sorting")))]),t._v(" "),e("NcNoteCard",{staticClass:"dialog__note",attrs:{type:"info",text:t.t("settings","Sorting only applies to the currently loaded groups for performance reasons. Groups will be loaded as you navigate or search through the list.")}}),t._v(" "),e("NcCheckboxRadioSwitch",{attrs:{type:"radio",checked:t.groupSorting,"data-test":"sortGroupsByMemberCount",disabled:t.isGroupSortingEnforced,name:"group-sorting-mode",value:"member-count"},on:{"update:checked":function(e){t.groupSorting=e}}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","By member count"))+"\n\t\t\t")]),t._v(" "),e("NcCheckboxRadioSwitch",{attrs:{type:"radio",checked:t.groupSorting,"data-test":"sortGroupsByName",disabled:t.isGroupSortingEnforced,name:"group-sorting-mode",value:"name"},on:{"update:checked":function(e){t.groupSorting=e}}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","By name"))+"\n\t\t\t")])],1)],1),t._v(" "),e("NcAppSettingsSection",{attrs:{id:"email-settings",name:t.t("settings","Send email")}},[e("NcCheckboxRadioSwitch",{attrs:{type:"switch","data-test":"sendWelcomeMail",checked:t.sendWelcomeMail,disabled:t.loadingSendMail},on:{"update:checked":function(e){t.sendWelcomeMail=e}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Send welcome email to new accounts"))+"\n\t\t")])],1),t._v(" "),e("NcAppSettingsSection",{attrs:{id:"default-settings",name:t.t("settings","Defaults")}},[e("NcSelect",{attrs:{clearable:!1,"create-option":t.validateQuota,"filter-by":t.filterQuotas,"input-label":t.t("settings","Default quota"),options:t.quotaOptions,placement:"top",placeholder:t.t("settings","Select default quota"),taggable:""},on:{"option:selected":t.setDefaultQuota},model:{value:t.defaultQuota,callback:function(e){t.defaultQuota=e},expression:"defaultQuota"}})],1)],1)}),[],!1,null,"9f7a355c",null).exports;var z=a(85168),R=a(13073),Q=a(54914),W=a(24387),H=a(44131),K=a(71418),j=a(14363),Y=a(94174),X=a(59892),V=a(57505),J=a(69496),Z=a(43261),tt=a(79759),et=a(2413);const st={name:"GroupListItem",components:{AccountGroup:Z.A,Delete:tt.A,Fragment:Q.F,NcActionButton:V.A,NcActionInput:H.A,NcAppNavigationItem:l.A,NcButton:u.A,NcCounterBubble:g.A,NcModal:J.A,NcNoteCard:_.A,Pencil:et.A},props:{active:{type:Boolean,required:!0},count:{type:Number,default:null},id:{type:String,required:!0},name:{type:String,required:!0}},data:()=>({loadingRenameGroup:!1,openGroupMenu:!1,showRemoveGroupModal:!1}),computed:{settings(){return this.$store.getters.getServerData}},methods:{handleGroupMenuOpen(){this.openGroupMenu=!0},async renameGroup(t){if(""===t.trim())return;const e=this.$refs.displayNameInput.$el.querySelector('input[type="text"]').value;if(""!==e.trim())try{this.openGroupMenu=!1,this.loadingRenameGroup=!0,await this.$store.dispatch("renameGroup",{groupid:t.trim(),displayName:e.trim()}),this.loadingRenameGroup=!1}catch{this.openGroupMenu=!0,this.loadingRenameGroup=!1}},async removeGroup(){try{await this.$store.dispatch("removeGroup",this.id),this.showRemoveGroupModal=!1}catch(e){(0,z.Qg)(t("settings",'Failed to remove group "{group}"',{group:this.name}))}}}};var at=a(79496),it={};it.styleTagTransform=F(),it.setAttributes=I(),it.insert=D().bind(null,"head"),it.domAPI=U(),it.insertStyleElement=O(),S()(at.A,it),at.A&&at.A.locals&&at.A.locals;const nt=(0,E.A)(st,(function(){var t=this,e=t._self._c;return e("Fragment",[t.showRemoveGroupModal?e("NcModal",{on:{close:function(e){t.showRemoveGroupModal=!1}}},[e("div",{staticClass:"modal__content"},[e("h2",{staticClass:"modal__header"},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Please confirm the group removal"))+"\n\t\t\t")]),t._v(" "),e("NcNoteCard",{attrs:{type:"warning","show-alert":""}},[t._v("\n\t\t\t\t"+t._s(t.t("settings",'You are about to remove the group "{group}". The accounts will NOT be deleted.',{group:t.name}))+"\n\t\t\t")]),t._v(" "),e("div",{staticClass:"modal__button-row"},[e("NcButton",{attrs:{type:"secondary"},on:{click:function(e){t.showRemoveGroupModal=!1}}},[t._v("\n\t\t\t\t\t"+t._s(t.t("settings","Cancel"))+"\n\t\t\t\t")]),t._v(" "),e("NcButton",{attrs:{type:"primary"},on:{click:t.removeGroup}},[t._v("\n\t\t\t\t\t"+t._s(t.t("settings","Confirm"))+"\n\t\t\t\t")])],1)],1)]):t._e(),t._v(" "),e("NcAppNavigationItem",{key:t.id,ref:"listItem",attrs:{exact:!0,name:t.name,to:{name:"group",params:{selectedGroup:encodeURIComponent(t.id)}},loading:t.loadingRenameGroup,"menu-open":t.openGroupMenu},on:{"update:menuOpen":t.handleGroupMenuOpen},scopedSlots:t._u([{key:"icon",fn:function(){return[e("AccountGroup",{attrs:{size:20}})]},proxy:!0},{key:"counter",fn:function(){return[t.count?e("NcCounterBubble",{attrs:{type:t.active?"highlighted":void 0}},[t._v("\n\t\t\t\t"+t._s(t.count)+"\n\t\t\t")]):t._e()]},proxy:!0},{key:"actions",fn:function(){return["admin"!==t.id&&"disabled"!==t.id&&(t.settings.isAdmin||t.settings.isDelegatedAdmin)?e("NcActionInput",{ref:"displayNameInput",attrs:{"trailing-button-label":t.t("settings","Submit"),type:"text",value:t.name,label:t.t("settings","Rename group")},on:{submit:function(e){return t.renameGroup(t.id)}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Pencil",{attrs:{size:20}})]},proxy:!0}],null,!1,580569589)}):t._e(),t._v(" "),"admin"!==t.id&&"disabled"!==t.id&&(t.settings.isAdmin||t.settings.isDelegatedAdmin)?e("NcActionButton",{on:{click:function(e){t.showRemoveGroupModal=!0}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Delete",{attrs:{size:20}})]},proxy:!0}],null,!1,2705356561)},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Remove group"))+"\n\t\t\t")]):t._e()]},proxy:!0}])})],1)}),[],!1,null,"161509be",null).exports;function rt(t){return void 0===t?null:{id:t.id,title:t.name,usercount:t.usercount,count:Math.max(0,t.usercount-t.disabled)}}const ot=t=>{const e=(0,i.EW)((()=>t.value.filter((t=>"disabled"!==t.id&&"__nc_internal_recent"!==t.id&&"admin"!==t.id)).map((t=>rt(t))).filter((t=>null!==t)))),s=(0,i.EW)((()=>rt(t.value.find((t=>"admin"===t.id))))),a=(0,i.EW)((()=>rt(t.value.find((t=>"disabled"===t.id)))));return{adminGroup:s,recentGroup:(0,i.EW)((()=>rt(t.value.find((t=>"__nc_internal_recent"===t.id))))),disabledGroup:a,userGroups:e}};var lt=a(14744),dt=a(46984);const ct=(0,i.pM)({__name:"AppNavigationGroupList",setup(t){const e=(0,lt.P)(),s=(0,W.lq)(),a=(0,W.rd)();(0,i.KC)((async()=>{await S()}));const o=(0,i.EW)((()=>s.params?.selectedGroup)),l=(0,i.EW)((()=>o.value?decodeURIComponent(o.value):null)),c=(0,i.EW)((()=>e.getters.getSortedGroups)),{userGroups:u}=ot(c),g=(0,i.EW)((()=>e.getters.getServerData)),p=(0,i.EW)((()=>g.value.isAdmin||g.value.isDelegatedAdmin)),h=(0,i.KR)(!1),m=(0,i.KR)(!1),C=(0,i.KR)(!1),v=(0,i.KR)(""),w=(0,i.KR)(!1),_=(0,i.KR)(0),b=(0,i.KR)(""),f=(0,i.KR)([]),y=(0,i.EW)((()=>f.value.findLast((t=>t?.$vnode?.key===u.value?.at(-1)?.id))?.$refs?.listItem?.$el)),N=(0,R.ITo)(y);(0,i.wB)(N,(async()=>{N.value&&await S()})),(0,i.wB)(b,(async()=>{e.commit("resetGroups"),_.value=0,await S()}));const k=(0,i.KR)();async function S(){if(p.value){k.value&&k.value.cancel(),w.value=!0;try{k.value=(0,dt.N_)({search:b.value,offset:_.value,limit:25});const t=await k.value;t.length>0&&(_.value+=25);for(const s of t)e.commit("addGroup",s)}catch(t){x.A.error((0,r.t)("settings","Failed to load groups"),{error:t})}k.value=void 0,w.value=!1}}return{__sfc:!0,store:e,route:s,router:a,selectedGroup:o,selectedGroupDecoded:l,groups:c,userGroups:u,settings:g,isAdminOrDelegatedAdmin:p,isAddGroupOpen:h,loadingAddGroup:m,hasAddGroupError:C,newGroupName:v,loadingGroups:w,offset:_,groupsSearchQuery:b,groupListItems:f,lastGroupListItem:y,isLastGroupVisible:N,promise:k,loadGroups:S,createGroup:async function(){C.value=!1;const t=v.value.trim();if(""!==t){h.value=!1,m.value=!0;try{await e.dispatch("addGroup",t),await a.push({name:"group",params:{selectedGroup:encodeURIComponent(t)}});const s=f.value.findLast((e=>e?.$vnode?.key===t));s?.$refs?.listItem?.$el?.scrollIntoView({behavior:"smooth",block:"nearest"}),v.value=""}catch{(0,z.Qg)((0,r.t)("settings","Failed to create group"))}m.value=!1}else C.value=!0},mdiAccountGroup:n.n7C,mdiPlus:n.biz,t:r.t,Fragment:Q.F,NcActionInput:H.A,NcActionText:K.A,NcAppNavigationCaption:j.N,NcAppNavigationList:d.A,NcAppNavigationSearch:Y.N,NcIconSvgWrapper:A.A,NcLoadingIcon:X.A,GroupListItem:nt}}}),ut=(0,E.A)(ct,(function(){var t=this,e=t._self._c,s=t._self._setupProxy;return e(s.Fragment,[e(s.NcAppNavigationCaption,{attrs:{name:s.t("settings","Groups"),disabled:s.loadingAddGroup,"aria-label":s.loadingAddGroup?s.t("settings","Creating group…"):s.t("settings","Create group"),"force-menu":"","is-heading":"",open:s.isAddGroupOpen},on:{"update:open":function(t){s.isAddGroupOpen=t}},scopedSlots:t._u([s.isAdminOrDelegatedAdmin?{key:"actionsTriggerIcon",fn:function(){return[s.loadingAddGroup?e(s.NcLoadingIcon):e(s.NcIconSvgWrapper,{attrs:{path:s.mdiPlus}})]},proxy:!0}:null,s.isAdminOrDelegatedAdmin?{key:"actions",fn:function(){return[e(s.NcActionText,{scopedSlots:t._u([{key:"icon",fn:function(){return[e(s.NcIconSvgWrapper,{attrs:{path:s.mdiAccountGroup}})]},proxy:!0}],null,!1,3607647275)},[t._v("\n\t\t\t\t"+t._s(s.t("settings","Create group"))+"\n\t\t\t")]),t._v(" "),e(s.NcActionInput,{attrs:{label:s.t("settings","Group name"),"data-cy-users-settings-new-group-name":"","label-outside":!1,disabled:s.loadingAddGroup,value:s.newGroupName,error:s.hasAddGroupError,"helper-text":s.hasAddGroupError?s.t("settings","Please enter a valid group name"):""},on:{"update:value":function(t){s.newGroupName=t},submit:s.createGroup}})]},proxy:!0}:null],null,!0)}),t._v(" "),e(s.NcAppNavigationSearch,{attrs:{label:s.t("settings","Search groups…")},model:{value:s.groupsSearchQuery,callback:function(t){s.groupsSearchQuery=t},expression:"groupsSearchQuery"}}),t._v(" "),e("p",{staticClass:"hidden-visually",attrs:{id:"group-list-desc"}},[t._v("\n\t\t"+t._s(s.t("settings","List of groups. This list is not fully populated for performance reasons. The groups will be loaded as you navigate or search through the list."))+"\n\t")]),t._v(" "),e(s.NcAppNavigationList,{staticClass:"account-management__group-list",attrs:{"aria-describedby":"group-list-desc","data-cy-users-settings-navigation-groups":"custom"}},[t._l(s.userGroups,(function(t){return e(s.GroupListItem,{key:t.id,ref:"groupListItems",refInFor:!0,attrs:{id:t.id,active:s.selectedGroupDecoded===t.id,name:t.title,count:t.count}})})),t._v(" "),s.loadingGroups?e("div",{attrs:{role:"note"}},[e(s.NcLoadingIcon,{attrs:{name:s.t("settings","Loading groups…")}})],1):t._e()],2)],1)}),[],!1,null,null,null).exports,gt=(0,i.pM)({__name:"UserManagementNavigation",setup(t){const e=(0,W.lq)(),s=(0,lt.P)(),a=(0,i.KR)(!1),p=(0,i.EW)((()=>e.params?.selectedGroup)),h=(0,i.EW)((()=>p.value?decodeURIComponent(p.value):null)),m=(0,i.EW)((()=>s.getters.getUserCount)),C=(0,i.EW)((()=>s.getters.getSortedGroups)),{adminGroup:v,recentGroup:w,disabledGroup:_}=ot(C),b=(0,i.EW)((()=>s.getters.getServerData)),f=(0,i.EW)((()=>b.value.isAdmin||b.value.isDelegatedAdmin));return{__sfc:!0,route:e,store:s,isDialogOpen:a,selectedGroup:p,selectedGroupDecoded:h,userCount:m,groups:C,adminGroup:v,recentGroup:w,disabledGroup:_,settings:b,isAdminOrDelegatedAdmin:f,showNewUserMenu:function(){s.commit("setShowConfig",{key:"showNewUserForm",value:!0})},mdiAccount:n.Gbn,mdiAccountOff:n.lBC,mdiCog:n.CZ3,mdiPlus:n.biz,mdiShieldAccount:n.Jey,mdiHistory:n.LP2,t:r.Tl,NcAppNavigation:o.A,NcAppNavigationItem:l.A,NcAppNavigationList:d.A,NcAppNavigationNew:c.A,NcButton:u.A,NcCounterBubble:g.A,NcIconSvgWrapper:A.A,UserSettingsDialog:P,AppNavigationGroupList:ut}}});var At=a(49977),pt={};pt.styleTagTransform=F(),pt.setAttributes=I(),pt.insert=D().bind(null,"head"),pt.domAPI=U(),pt.insertStyleElement=O(),S()(At.A,pt),At.A&&At.A.locals&&At.A.locals;const ht=(0,E.A)(gt,(function(){var t=this,e=t._self._c,s=t._self._setupProxy;return e(s.NcAppNavigation,{staticClass:"account-management__navigation",attrs:{"aria-label":s.t("settings","Account management")},scopedSlots:t._u([{key:"footer",fn:function(){return[e(s.NcButton,{staticClass:"account-management__settings-toggle",attrs:{type:"tertiary"},on:{click:function(t){s.isDialogOpen=!0}},scopedSlots:t._u([{key:"icon",fn:function(){return[e(s.NcIconSvgWrapper,{attrs:{path:s.mdiCog}})]},proxy:!0}])},[t._v("\n\t\t\t"+t._s(s.t("settings","Account management settings"))+"\n\t\t")]),t._v(" "),e(s.UserSettingsDialog,{attrs:{open:s.isDialogOpen},on:{"update:open":function(t){s.isDialogOpen=t}}})]},proxy:!0}])},[e(s.NcAppNavigationNew,{attrs:{"button-id":"new-user-button",text:s.t("settings","New account")},on:{click:s.showNewUserMenu,keyup:[function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:s.showNewUserMenu.apply(null,arguments)},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"space",32,e.key,[" ","Spacebar"])?null:s.showNewUserMenu.apply(null,arguments)}]},scopedSlots:t._u([{key:"icon",fn:function(){return[e(s.NcIconSvgWrapper,{attrs:{path:s.mdiPlus}})]},proxy:!0}])}),t._v(" "),e(s.NcAppNavigationList,{staticClass:"account-management__system-list",attrs:{"data-cy-users-settings-navigation-groups":"system"}},[e(s.NcAppNavigationItem,{attrs:{id:"everyone",exact:!0,name:s.t("settings","All accounts"),to:{name:"users"}},scopedSlots:t._u([{key:"icon",fn:function(){return[e(s.NcIconSvgWrapper,{attrs:{path:s.mdiAccount}})]},proxy:!0},{key:"counter",fn:function(){return[s.userCount?e(s.NcCounterBubble,{attrs:{type:s.selectedGroupDecoded?void 0:"highlighted"}},[t._v("\n\t\t\t\t\t"+t._s(s.userCount)+"\n\t\t\t\t")]):t._e()]},proxy:!0}])}),t._v(" "),s.settings.isAdmin?e(s.NcAppNavigationItem,{attrs:{id:"admin",exact:!0,name:s.t("settings","Admins"),to:{name:"group",params:{selectedGroup:"admin"}}},scopedSlots:t._u([{key:"icon",fn:function(){return[e(s.NcIconSvgWrapper,{attrs:{path:s.mdiShieldAccount}})]},proxy:!0},{key:"counter",fn:function(){return[s.adminGroup&&s.adminGroup.count>0?e(s.NcCounterBubble,{attrs:{type:"admin"===s.selectedGroupDecoded?"highlighted":void 0}},[t._v("\n\t\t\t\t\t"+t._s(s.adminGroup.count)+"\n\t\t\t\t")]):t._e()]},proxy:!0}],null,!1,2218088905)}):t._e(),t._v(" "),s.isAdminOrDelegatedAdmin?e(s.NcAppNavigationItem,{attrs:{id:"recent",exact:!0,name:s.t("settings","Recently active"),to:{name:"group",params:{selectedGroup:"__nc_internal_recent"}}},scopedSlots:t._u([{key:"icon",fn:function(){return[e(s.NcIconSvgWrapper,{attrs:{path:s.mdiHistory}})]},proxy:!0},{key:"counter",fn:function(){return[s.recentGroup?.usercount?e(s.NcCounterBubble,{attrs:{type:"__nc_internal_recent"===s.selectedGroupDecoded?"highlighted":void 0}},[t._v("\n\t\t\t\t\t"+t._s(s.recentGroup.usercount)+"\n\t\t\t\t")]):t._e()]},proxy:!0}],null,!1,2299424282)}):t._e(),t._v(" "),s.disabledGroup&&(s.disabledGroup.usercount>0||-1===s.disabledGroup.usercount)?e(s.NcAppNavigationItem,{attrs:{id:"disabled",exact:!0,name:s.t("settings","Disabled accounts"),to:{name:"group",params:{selectedGroup:"disabled"}}},scopedSlots:t._u([{key:"icon",fn:function(){return[e(s.NcIconSvgWrapper,{attrs:{path:s.mdiAccountOff}})]},proxy:!0},s.disabledGroup.usercount>0?{key:"counter",fn:function(){return[e(s.NcCounterBubble,{attrs:{type:"disabled"===s.selectedGroupDecoded?"highlighted":void 0}},[t._v("\n\t\t\t\t\t"+t._s(s.disabledGroup.usercount)+"\n\t\t\t\t")])]},proxy:!0}:null],null,!0)}):t._e()],1),t._v(" "),e(s.AppNavigationGroupList)],1)}),[],!1,null,"edf83404",null).exports},68539:(e,s,a)=>{a.r(s),a.d(s,{default:()=>Gt});var i=a(53334),n=a(61338),r=a(85471),o=a(18195),l=a(9165),d=a(85168),c=a(54914),u=a(35779),g=a(6695),A=a(59892),p=a(55042),h=a(17334),m=a.n(h),C=a(36620);r.Ay.directive("elementVisibility",p.Zx);const v=r.Ay.extend({name:"VirtualList",props:{dataComponent:{type:[Object,Function],required:!0},dataKey:{type:String,required:!0},dataSources:{type:Array,required:!0},itemHeight:{type:Number,required:!0},extraProps:{type:Object,default:()=>({})}},data:()=>({bufferItems:3,index:0,headerHeight:0,tableHeight:0,resizeObserver:null}),computed:{startIndex(){return Math.max(0,this.index-3)},shownItems(){return Math.ceil((this.tableHeight-this.headerHeight)/this.itemHeight)+6},renderedItems(){return this.dataSources.slice(this.startIndex,this.startIndex+this.shownItems)},tbodyStyle(){const t=this.startIndex+this.shownItems>this.dataSources.length,e=this.dataSources.length-this.startIndex-this.shownItems,s=Math.min(this.dataSources.length-this.startIndex,e);return{paddingTop:this.startIndex*this.itemHeight+"px",paddingBottom:t?0:s*this.itemHeight+"px"}}},mounted(){const t=this.$el,e=this.$refs?.tfoot,s=this.$refs?.thead;this.resizeObserver=new ResizeObserver(m()((()=>{this.headerHeight=s?.clientHeight??0,this.tableHeight=t?.clientHeight??0,C.A.debug("VirtualList resizeObserver updated"),this.onScroll()}),100,!1)),this.resizeObserver.observe(t),this.resizeObserver.observe(e),this.resizeObserver.observe(s),this.$el.addEventListener("scroll",this.onScroll)},beforeDestroy(){this.resizeObserver&&this.resizeObserver.disconnect()},methods:{handleFooterVisibility(t){t&&this.$emit("scroll-end")},onScroll(){this.index=Math.max(0,Math.round(this.$el.scrollTop/this.itemHeight))}}});var w=a(85072),_=a.n(w),b=a(97825),f=a.n(b),y=a(77659),x=a.n(y),N=a(55056),k=a.n(N),S=a(10540),G=a.n(S),U=a(41113),L=a.n(U),D=a(12795),B={};B.styleTagTransform=L(),B.setAttributes=k(),B.insert=x().bind(null,"head"),B.domAPI=f(),B.insertStyleElement=G(),_()(D.A,B),D.A&&D.A.locals&&D.A.locals;var I=a(14486);const q=(0,I.A)(v,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("table",{staticClass:"user-list"},[t._t("before"),t._v(" "),e("thead",{ref:"thead",staticClass:"user-list__header",attrs:{role:"rowgroup"}},[t._t("header")],2),t._v(" "),e("tbody",{staticClass:"user-list__body",style:t.tbodyStyle},t._l(t.renderedItems,(function(s,a){return e(t.dataComponent,t._b({key:s[t.dataKey],tag:"component",attrs:{user:s,visible:(a>=t.bufferItems||t.index<=t.bufferItems)&&a<t.shownItems-t.bufferItems}},"component",t.extraProps,!1))})),1),t._v(" "),e("tfoot",{directives:[{name:"element-visibility",rawName:"v-element-visibility",value:t.handleFooterVisibility,expression:"handleFooterVisibility"}],ref:"tfoot",staticClass:"user-list__footer",attrs:{role:"rowgroup"}},[t._t("footer")],2)],2)}),[],!1,null,"21942da5",null).exports;var O=a(35810),M=a(97012),F=a(94219),$=a(16044),T=a(67607),E=a(82182),P=a(46984);const z={name:"NewUserDialog",components:{NcButton:M.A,NcDialog:F.A,NcPasswordField:$.A,NcSelect:T.A,NcTextField:E.A},props:{loading:{type:Object,required:!0},newUser:{type:Object,required:!0},quotaOptions:{type:Array,required:!0}},data:()=>({availableGroups:[],possibleManagers:[],managerInputLabel:t("settings","Manager"),managerLabel:t("settings","Set line manager"),promise:null}),computed:{showConfig(){return this.$store.getters.getShowConfig},settings(){return this.$store.getters.getServerData},usernameLabel(){return this.settings.newUserGenerateUserID?t("settings","Account name will be autogenerated"):t("settings","Account name (required)")},minPasswordLength(){return this.$store.getters.getPasswordPolicyMinLength},subAdminsGroups(){return this.availableGroups.filter((t=>"admin"!==t.id&&"__nc_internal_recent"!==t.id&&"disabled"!==t.id))},languages(){return[{name:t("settings","Common languages"),languages:this.settings.languages.commonLanguages},...this.settings.languages.commonLanguages,{name:t("settings","Other languages"),languages:this.settings.languages.otherLanguages},...this.settings.languages.otherLanguages]}},async beforeMount(){await this.searchUserManager()},mounted(){this.isAdmin||this.isDelegatedAdmin?this.availableGroups=this.$store.getters.getSortedGroups.filter((t=>"__nc_internal_recent"!==t.id&&"disabled"!==t.id)):this.availableGroups=[...this.$store.getters.getSubAdminGroups],this.$refs.username?.focus?.()},methods:{async createUser(){this.loading.all=!0;try{await this.$store.dispatch("addUser",{userid:this.newUser.id,password:this.newUser.password,displayName:this.newUser.displayName,email:this.newUser.mailAddress,groups:this.newUser.groups.map((t=>t.id)),subadmin:this.newUser.subAdminsGroups.map((t=>t.id)),quota:this.newUser.quota.id,language:this.newUser.language.code,manager:this.newUser.manager.id}),this.$emit("reset"),this.$refs.username?.focus?.(),this.$emit("closing")}catch(t){if(this.loading.all=!1,t.response&&t.response.data&&t.response.data.ocs&&t.response.data.ocs.meta){const e=t.response.data.ocs.meta.statuscode;102===e?this.$refs.username?.focus?.():107===e&&this.$refs.password?.focus?.()}}},async searchGroups(e,s){if(this.isAdmin||this.isDelegatedAdmin){this.promise&&this.promise.cancel(),s(!0);try{this.promise=(0,P.N_)({search:e,offset:0,limit:25});const t=await this.promise;this.availableGroups=t}catch(e){C.A.error(t("settings","Failed to search groups"),{error:e})}this.promise=null,s(!1)}},async createGroup(e){let{name:s}=e;this.loading.groups=!0;try{await this.$store.dispatch("addGroup",s),this.availableGroups.push({id:s,name:s}),this.newUser.groups.push({id:s,name:s})}catch(e){C.A.error(t("settings","Failed to create group"),{error:e})}this.loading.groups=!1},async addGroup(t){t.isCreating||!1!==t.canAdd&&this.newUser.groups.push(t)},validateQuota(t){const e=OC.Util.computerFileSize(t);return null!==e&&e>=0?(t=(0,O.v7)((0,O.lT)(t)),this.newUser.quota={id:t,label:t},this.newUser.quota):(this.newUser.quota=this.quotaOptions[0],this.quotaOptions[0])},languageFilterBy:(t,e,s)=>t.languages?t.languages.some((t=>{let{name:e}=t;return e.toLocaleLowerCase().includes(s.toLocaleLowerCase())})):(e||"").toLocaleLowerCase().includes(s.toLocaleLowerCase()),async searchUserManager(t){await this.$store.dispatch("searchUsers",{offset:0,limit:10,search:t}).then((t=>{const e=t?.data?Object.values(t?.data.ocs.data.users):[];e.length>0&&(this.possibleManagers=e)}))}}};var R=a(50540),Q={};Q.styleTagTransform=L(),Q.setAttributes=k(),Q.insert=x().bind(null,"head"),Q.domAPI=f(),Q.insertStyleElement=G(),_()(R.A,Q),R.A&&R.A.locals&&R.A.locals;var W=(0,I.A)(z,(function(){var t=this,e=t._self._c;return e("NcDialog",t._g({staticClass:"dialog",attrs:{size:"small",name:t.t("settings","New account"),"out-transition":""},scopedSlots:t._u([{key:"actions",fn:function(){return[e("NcButton",{staticClass:"dialog__submit",attrs:{"data-test":"submit",form:"new-user-form",type:"primary","native-type":"submit"}},[t._v("\n\t\t\t"+t._s(t.t("settings","Add new account"))+"\n\t\t")])]},proxy:!0}])},t.$listeners),[e("form",{staticClass:"dialog__form",attrs:{id:"new-user-form","data-test":"form",disabled:t.loading.all},on:{submit:function(e){return e.preventDefault(),t.createUser.apply(null,arguments)}}},[e("NcTextField",{ref:"username",staticClass:"dialog__item",attrs:{"data-test":"username",value:t.newUser.id,disabled:t.settings.newUserGenerateUserID,label:t.usernameLabel,autocapitalize:"none",autocomplete:"off",spellcheck:"false",pattern:"[a-zA-Z0-9 _\\.@\\-']+",required:""},on:{"update:value":function(e){return t.$set(t.newUser,"id",e)}}}),t._v(" "),e("NcTextField",{staticClass:"dialog__item",attrs:{"data-test":"displayName",value:t.newUser.displayName,label:t.t("settings","Display name"),autocapitalize:"none",autocomplete:"off",spellcheck:"false"},on:{"update:value":function(e){return t.$set(t.newUser,"displayName",e)}}}),t._v(" "),t.settings.newUserRequireEmail?t._e():e("span",{staticClass:"dialog__hint",attrs:{id:"password-email-hint"}},[t._v("\n\t\t\t"+t._s(t.t("settings","Either password or email is required"))+"\n\t\t")]),t._v(" "),e("NcPasswordField",{ref:"password",staticClass:"dialog__item",attrs:{"data-test":"password",value:t.newUser.password,minlength:t.minPasswordLength,maxlength:469,"aria-describedby":"password-email-hint",label:""===t.newUser.mailAddress?t.t("settings","Password (required)"):t.t("settings","Password"),autocapitalize:"none",autocomplete:"new-password",spellcheck:"false",required:""===t.newUser.mailAddress},on:{"update:value":function(e){return t.$set(t.newUser,"password",e)}}}),t._v(" "),e("NcTextField",{staticClass:"dialog__item",attrs:{"data-test":"email",type:"email",value:t.newUser.mailAddress,"aria-describedby":"password-email-hint",label:""===t.newUser.password||t.settings.newUserRequireEmail?t.t("settings","Email (required)"):t.t("settings","Email"),autocapitalize:"none",autocomplete:"off",spellcheck:"false",required:""===t.newUser.password||t.settings.newUserRequireEmail},on:{"update:value":function(e){return t.$set(t.newUser,"mailAddress",e)}}}),t._v(" "),e("div",{staticClass:"dialog__item"},[e("NcSelect",{staticClass:"dialog__select",attrs:{"data-test":"groups","input-label":t.settings.isAdmin||t.settings.isDelegatedAdmin?t.t("settings","Member of the following groups"):t.t("settings","Member of the following groups (required)"),placeholder:t.t("settings","Set account groups"),disabled:t.loading.groups||t.loading.all,options:t.availableGroups,value:t.newUser.groups,label:"name","close-on-select":!1,multiple:!0,taggable:t.settings.isAdmin||t.settings.isDelegatedAdmin,required:!t.settings.isAdmin&&!t.settings.isDelegatedAdmin,"create-option":t=>({id:t,name:t,isCreating:!0})},on:{search:t.searchGroups,"option:created":t.createGroup,"option:selected":e=>t.addGroup(e.at(-1))}})],1),t._v(" "),e("div",{staticClass:"dialog__item"},[e("NcSelect",{staticClass:"dialog__select",attrs:{"input-label":t.t("settings","Admin of the following groups"),placeholder:t.t("settings","Set account as admin for …"),disabled:t.loading.groups||t.loading.all,options:t.subAdminsGroups,"close-on-select":!1,multiple:!0,label:"name"},on:{search:t.searchGroups},model:{value:t.newUser.subAdminsGroups,callback:function(e){t.$set(t.newUser,"subAdminsGroups",e)},expression:"newUser.subAdminsGroups"}})],1),t._v(" "),e("div",{staticClass:"dialog__item"},[e("NcSelect",{staticClass:"dialog__select",attrs:{"input-label":t.t("settings","Quota"),placeholder:t.t("settings","Set account quota"),options:t.quotaOptions,clearable:!1,taggable:!0,"create-option":t.validateQuota},model:{value:t.newUser.quota,callback:function(e){t.$set(t.newUser,"quota",e)},expression:"newUser.quota"}})],1),t._v(" "),t.showConfig.showLanguages?e("div",{staticClass:"dialog__item"},[e("NcSelect",{staticClass:"dialog__select",attrs:{"input-label":t.t("settings","Language"),placeholder:t.t("settings","Set default language"),clearable:!1,selectable:t=>!t.languages,"filter-by":t.languageFilterBy,options:t.languages,label:"name"},model:{value:t.newUser.language,callback:function(e){t.$set(t.newUser,"language",e)},expression:"newUser.language"}})],1):t._e(),t._v(" "),e("div",{class:["dialog__item dialog__managers",{"icon-loading-small":t.loading.manager}]},[e("NcSelect",{staticClass:"dialog__select",attrs:{"input-label":t.managerInputLabel,placeholder:t.managerLabel,options:t.possibleManagers,"user-select":!0,label:"displayname"},on:{search:t.searchUserManager},model:{value:t.newUser.manager,callback:function(e){t.$set(t.newUser,"manager",e)},expression:"newUser.manager"}})],1)],1)])}),[],!1,null,"70bbf4c9",null);const H=W.exports,K=r.Ay.extend({name:"UserListFooter",components:{NcLoadingIcon:A.A},props:{loading:{type:Boolean,required:!0},filteredUsers:{type:Array,required:!0}},computed:{userCount(){return this.loading?this.n("settings","{userCount} account …","{userCount} accounts …",this.filteredUsers.length,{userCount:this.filteredUsers.length}):this.n("settings","{userCount} account","{userCount} accounts",this.filteredUsers.length,{userCount:this.filteredUsers.length})}},methods:{t:i.Tl,n:i.zw}});var j=a(95066),Y={};Y.styleTagTransform=L(),Y.setAttributes=k(),Y.insert=x().bind(null,"head"),Y.domAPI=f(),Y.insertStyleElement=G(),_()(j.A,Y),j.A&&j.A.locals&&j.A.locals;const X=(0,I.A)(K,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("tr",{staticClass:"footer"},[e("th",{attrs:{scope:"row"}},[e("span",{staticClass:"hidden-visually"},[t._v(t._s(t.t("settings","Total rows summary")))])]),t._v(" "),e("td",{staticClass:"footer__cell footer__cell--loading"},[t.loading?e("NcLoadingIcon",{attrs:{title:t.t("settings","Loading accounts …"),size:32}}):t._e()],1),t._v(" "),e("td",{staticClass:"footer__cell footer__cell--count footer__cell--multiline"},[e("span",{attrs:{"aria-describedby":"user-count-desc"}},[t._v(t._s(t.userCount))]),t._v(" "),e("span",{staticClass:"hidden-visually",attrs:{id:"user-count-desc"}},[t._v("\n\t\t\t"+t._s(t.t("settings","Scroll to load more rows"))+"\n\t\t")])])])}),[],!1,null,"db2a7c4e",null).exports,V=r.Ay.extend({name:"UserListHeader",props:{hasObfuscated:{type:Boolean,required:!0}},computed:{showConfig(){return this.$store.getters.getShowConfig},settings(){return this.$store.getters.getServerData},passwordLabel(){return this.hasObfuscated?(0,i.Tl)("settings","Password or insufficient permissions message"):(0,i.Tl)("settings","Password")}},methods:{t:i.Tl}});var J=a(24882),Z={};Z.styleTagTransform=L(),Z.setAttributes=k(),Z.insert=x().bind(null,"head"),Z.domAPI=f(),Z.insertStyleElement=G(),_()(J.A,Z),J.A&&J.A.locals&&J.A.locals;const tt=(0,I.A)(V,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("tr",{staticClass:"header"},[e("th",{staticClass:"header__cell header__cell--avatar",attrs:{"data-cy-user-list-header-avatar":"",scope:"col"}},[e("span",{staticClass:"hidden-visually"},[t._v("\n\t\t\t"+t._s(t.t("settings","Avatar"))+"\n\t\t")])]),t._v(" "),e("th",{staticClass:"header__cell header__cell--displayname",attrs:{"data-cy-user-list-header-displayname":"",scope:"col"}},[e("strong",[t._v("\n\t\t\t"+t._s(t.t("settings","Display name"))+"\n\t\t")])]),t._v(" "),e("th",{staticClass:"header__cell header__cell--username",attrs:{"data-cy-user-list-header-username":"",scope:"col"}},[e("span",[t._v("\n\t\t\t"+t._s(t.t("settings","Account name"))+"\n\t\t")])]),t._v(" "),e("th",{staticClass:"header__cell",class:{"header__cell--obfuscated":t.hasObfuscated},attrs:{"data-cy-user-list-header-password":"",scope:"col"}},[e("span",[t._v(t._s(t.passwordLabel))])]),t._v(" "),e("th",{staticClass:"header__cell",attrs:{"data-cy-user-list-header-email":"",scope:"col"}},[e("span",[t._v(t._s(t.t("settings","Email")))])]),t._v(" "),e("th",{staticClass:"header__cell header__cell--large",attrs:{"data-cy-user-list-header-groups":"",scope:"col"}},[e("span",[t._v(t._s(t.t("settings","Groups")))])]),t._v(" "),t.settings.isAdmin||t.settings.isDelegatedAdmin?e("th",{staticClass:"header__cell header__cell--large",attrs:{"data-cy-user-list-header-subadmins":"",scope:"col"}},[e("span",[t._v(t._s(t.t("settings","Group admin for")))])]):t._e(),t._v(" "),e("th",{staticClass:"header__cell",attrs:{"data-cy-user-list-header-quota":"",scope:"col"}},[e("span",[t._v(t._s(t.t("settings","Quota")))])]),t._v(" "),t.showConfig.showLanguages?e("th",{staticClass:"header__cell header__cell--large",attrs:{"data-cy-user-list-header-languages":"",scope:"col"}},[e("span",[t._v(t._s(t.t("settings","Language")))])]):t._e(),t._v(" "),t.showConfig.showUserBackend||t.showConfig.showStoragePath?e("th",{staticClass:"header__cell header__cell--large",attrs:{"data-cy-user-list-header-storage-location":"",scope:"col"}},[t.showConfig.showUserBackend?e("span",[t._v("\n\t\t\t"+t._s(t.t("settings","Account backend"))+"\n\t\t")]):t._e(),t._v(" "),t.showConfig.showStoragePath?e("span",{staticClass:"header__subtitle"},[t._v("\n\t\t\t"+t._s(t.t("settings","Storage location"))+"\n\t\t")]):t._e()]):t._e(),t._v(" "),t.showConfig.showFirstLogin?e("th",{staticClass:"header__cell",attrs:{"data-cy-user-list-header-first-login":"",scope:"col"}},[e("span",[t._v(t._s(t.t("settings","First login")))])]):t._e(),t._v(" "),t.showConfig.showLastLogin?e("th",{staticClass:"header__cell",attrs:{"data-cy-user-list-header-last-login":"",scope:"col"}},[e("span",[t._v(t._s(t.t("settings","Last login")))])]):t._e(),t._v(" "),e("th",{staticClass:"header__cell header__cell--large header__cell--fill",attrs:{"data-cy-user-list-header-manager":"",scope:"col"}},[e("span",[t._v(t._s(t.t("settings","Manager")))])]),t._v(" "),e("th",{staticClass:"header__cell header__cell--actions",attrs:{"data-cy-user-list-header-actions":"",scope:"col"}},[e("span",{staticClass:"hidden-visually"},[t._v("\n\t\t\t"+t._s(t.t("settings","Account actions"))+"\n\t\t")])])])}),[],!1,null,"5c0f8828",null).exports;var et=a(21777),st=a(56760),at=a(41944),it=a(95101),nt=a(86454),rt=a(57505),ot=a(24764),lt=a(65659),dt=a(19664);const ct=(0,r.pM)({components:{NcActionButton:rt.A,NcActions:ot.A,NcIconSvgWrapper:g.A},props:{actions:{type:Array,required:!0},disabled:{type:Boolean,required:!0},edit:{type:Boolean,required:!0},user:{type:Object,required:!0}},computed:{editSvg(){return this.edit?lt:dt},enabledActions(){return this.actions.filter((t=>"function"!=typeof t.enabled||t.enabled(this.user)))}},methods:{isSvg:function(t){if("string"!=typeof t)throw new TypeError(`Expected a \`string\`, got \`${typeof t}\``);if(0===(t=t.trim()).length)return!1;if(!0!==nt.XMLValidator.validate(t))return!1;let e;const s=new nt.XMLParser;try{e=s.parse(t)}catch{return!1}return!!e&&!!Object.keys(e).some((t=>"svg"===t.toLowerCase()))},toggleEdit(){this.$emit("update:edit",!this.edit)}}}),ut=(0,I.A)(ct,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("NcActions",{attrs:{"aria-label":t.t("settings","Toggle account actions menu"),disabled:t.disabled,inline:1}},[e("NcActionButton",{attrs:{"data-cy-user-list-action-toggle-edit":`${t.edit}`,disabled:t.disabled},on:{click:t.toggleEdit},scopedSlots:t._u([{key:"icon",fn:function(){return[e("NcIconSvgWrapper",{key:t.editSvg,attrs:{svg:t.editSvg,"aria-hidden":"true"}})]},proxy:!0}])},[t._v("\n\t\t"+t._s(t.edit?t.t("settings","Done"):t.t("settings","Edit"))+"\n\t\t")]),t._v(" "),t._l(t.enabledActions,(function(s,a){let{action:i,icon:n,text:r}=s;return e("NcActionButton",{key:a,attrs:{disabled:t.disabled,"aria-label":r,icon:n,"close-after-click":""},on:{click:e=>i(e,{...t.user})},scopedSlots:t._u([t.isSvg(n)?{key:"icon",fn:function(){return[e("NcIconSvgWrapper",{attrs:{svg:n,"aria-hidden":"true"}})]},proxy:!0}:null],null,!0)},[t._v("\n\t\t"+t._s(r)+"\n\t\t")])}))],2)}),[],!1,null,null,null).exports;var gt=a(76333);const At={props:{user:{type:Object,required:!0},settings:{type:Object,default:()=>({})},quotaOptions:{type:Array,default:()=>[]},languages:{type:Array,required:!0},externalActions:{type:Array,default:()=>[]}},setup(t){const{formattedFullTime:e}=(0,gt.m7)(1e3*t.user.firstLoginTimestamp,{relativeTime:!1,format:{timeStyle:"short",dateStyle:"short"}});return{formattedFullTime:e}},data(){return{availableGroups:this.user.groups.map((t=>({id:t,name:t}))),availableSubAdminGroups:this.user.subadmin.map((t=>({id:t,name:t}))),userGroups:this.user.groups.map((t=>({id:t,name:t}))),userSubAdminGroups:this.user.subadmin.map((t=>({id:t,name:t})))}},computed:{showConfig(){return this.$store.getters.getShowConfig},usedSpace(){const e=this.user.quota.used>0?this.user.quota.used:0;return t("settings","{size} used",{size:(0,O.v7)(e,!0)})},usedQuota(){let t=this.user.quota.quota;return t=t>0?Math.min(100,Math.round(this.user.quota.used/t*100)):95*(1-1/(this.user.quota.used/(10*Math.pow(2,30))+1)),isNaN(t)?0:t},userQuota(){if(this.user.quota.quota>=0){const t=(0,O.v7)(this.user.quota.quota);return this.quotaOptions.find((e=>e.id===t))||{id:t,label:t}}return"default"===this.user.quota.quota?this.quotaOptions[0]:this.quotaOptions[1]},minPasswordLength(){return this.$store.getters.getPasswordPolicyMinLength},userLanguage(){const t=this.languages[0].languages.concat(this.languages[1].languages).find((t=>t.code===this.user.language));return"object"!=typeof t&&""!==this.user.language?{code:this.user.language,name:this.user.language}:""!==this.user.language&&t},userFirstLogin(){return this.user.firstLoginTimestamp>0?this.formattedFullTime:this.user.firstLoginTimestamp<0?t("settings","Unknown"):t("settings","Never")},userLastLoginTooltip(){return this.user.lastLoginTimestamp>0?OC.Util.formatDate(1e3*this.user.lastLoginTimestamp):""},userLastLogin(){return this.user.lastLoginTimestamp>0?OC.Util.relativeModifiedDate(1e3*this.user.lastLoginTimestamp):t("settings","Never")}}};var pt=a(95668);const ht={name:"UserRow",components:{NcAvatar:at.A,NcLoadingIcon:A.A,NcProgressBar:it.A,NcSelect:T.A,NcTextField:E.A,UserRowActions:ut},mixins:[At],props:{user:{type:Object,required:!0},visible:{type:Boolean,required:!0},users:{type:Array,required:!0},hasObfuscated:{type:Boolean,required:!0},quotaOptions:{type:Array,required:!0},languages:{type:Array,required:!0},settings:{type:Object,required:!0},externalActions:{type:Array,default:()=>[]}},data(){return{selectedQuota:!1,rand:Math.random().toString(36).substring(2),loadingPossibleManagers:!1,possibleManagers:[],currentManager:"",editing:!1,loading:{all:!1,displayName:!1,password:!1,mailAddress:!1,groups:!1,groupsDetails:!1,subAdminGroupsDetails:!1,subadmins:!1,quota:!1,delete:!1,disable:!1,languages:!1,wipe:!1,manager:!1},editedDisplayName:this.user.displayname,editedPassword:"",editedMail:this.user.email??"",promise:null}},computed:{managerLabel:()=>t("settings","Set line manager"),isObfuscated(){return(0,pt.HK)(this.user)},showConfig(){return this.$store.getters.getShowConfig},isLoadingUser(){return this.loading.delete||this.loading.disable||this.loading.wipe},isLoadingField(){return this.loading.delete||this.loading.disable||this.loading.all},uniqueId(){return encodeURIComponent(this.user.id+this.rand)},userGroupsLabels(){return this.userGroups.map((t=>t.name??t.id)).join(", ")},userSubAdminGroupsLabels(){return this.userSubAdminGroups.map((t=>t.name??t.id)).join(", ")},usedSpace(){return this.user.quota?.used?t("settings","{size} used",{size:(0,O.v7)(this.user.quota?.used)}):t("settings","{size} used",{size:(0,O.v7)(0)})},canEdit(){return(0,et.HW)().uid!==this.user.id||this.settings.isAdmin||this.settings.isDelegatedAdmin},userQuota(){let e=this.user.quota?.quota;return"default"===e&&(e=this.settings.defaultQuota,"none"!==e&&(e=(0,O.lT)(e,!0))),"none"===e||-3===e?t("settings","Unlimited"):e>=0?(0,O.v7)(e):(0,O.v7)(0)},userActions(){const e=[{icon:"icon-delete",text:t("settings","Delete account"),action:this.deleteUser},{icon:"icon-delete",text:t("settings","Disconnect all devices and delete local data"),action:this.wipeUserDevices},{icon:this.user.enabled?"icon-close":"icon-add",text:this.user.enabled?t("settings","Disable account"):t("settings","Enable account"),action:this.enableDisableUser}];return null!==this.user.email&&""!==this.user.email&&e.push({icon:"icon-mail",text:t("settings","Resend welcome email"),action:this.sendWelcomeMail}),e.concat(this.externalActions)},editedUserQuota:{get(){return!1!==this.selectedQuota?this.selectedQuota:this.settings.defaultQuota!==pt.SA.id&&(0,O.lT)(this.settings.defaultQuota,!0)>=0?{id:this.settings.defaultQuota,label:this.settings.defaultQuota}:pt.SA},set(t){this.selectedQuota=t}},availableLanguages(){return this.languages[0].languages.concat(this.languages[1].languages)}},async beforeMount(){this.user.manager&&await this.initManager(this.user.manager)},methods:{async wipeUserDevices(){const e=this.user.id;await(0,st.C5)(),OC.dialogs.confirmDestructive(t("settings","In case of lost device or exiting the organization, this can remotely wipe the Nextcloud data from all devices associated with {userid}. Only works if the devices are connected to the internet.",{userid:e}),t("settings","Remote wipe of devices"),{type:OC.dialogs.YES_NO_BUTTONS,confirm:t("settings","Wipe {userid}'s devices",{userid:e}),confirmClasses:"error",cancel:t("settings","Cancel")},(s=>{s&&(this.loading.wipe=!0,this.loading.all=!0,this.$store.dispatch("wipeUserDevices",e).then((()=>(0,d.Te)(t("settings","Wiped {userid}'s devices",{userid:e}))),{timeout:2e3}).finally((()=>{this.loading.wipe=!1,this.loading.all=!1})))}),!0)},filterManagers(t){return t.filter((t=>t.id!==this.user.id))},async initManager(t){await this.$store.dispatch("getUser",t).then((t=>{this.currentManager=t?.data.ocs.data}))},async searchInitialUserManager(){this.loadingPossibleManagers=!0,await this.searchUserManager(),this.loadingPossibleManagers=!1},async loadGroupsDetails(){this.loading.groups=!0,this.loading.groupsDetails=!0;try{const t=await(0,P.Iu)({userId:this.user.id});this.availableGroups=this.availableGroups.map((e=>t.find((t=>t.id===e.id))??e))}catch(e){C.A.error(t("settings","Failed to load groups with details"),{error:e})}this.loading.groups=!1,this.loading.groupsDetails=!1},async loadSubAdminGroupsDetails(){this.loading.subadmins=!0,this.loading.subAdminGroupsDetails=!0;try{const t=await(0,P.FF)({userId:this.user.id});this.availableSubAdminGroups=this.availableSubAdminGroups.map((e=>t.find((t=>t.id===e.id))??e))}catch(e){C.A.error(t("settings","Failed to load sub admin groups with details"),{error:e})}this.loading.subadmins=!1,this.loading.subAdminGroupsDetails=!1},async searchGroups(e,s){if(""!==e){this.promise&&this.promise.cancel(),s(!0);try{this.promise=await(0,P.N_)({search:e,offset:0,limit:25});const t=await this.promise;this.availableGroups=t,this.availableSubAdminGroups=t.filter((t=>"admin"!==t.id))}catch(e){C.A.error(t("settings","Failed to search groups"),{error:e})}this.promise=null,s(!1)}},async searchUserManager(t){await this.$store.dispatch("searchUsers",{offset:0,limit:10,search:t}).then((t=>{const e=t?.data?this.filterManagers(Object.values(t?.data.ocs.data.users)):[];e.length>0&&(this.possibleManagers=e)}))},async updateUserManager(e){null===e&&(this.currentManager=""),this.loading.manager=!0;try{await this.$store.dispatch("setUserData",{userid:this.user.id,key:"manager",value:this.currentManager?this.currentManager.id:""})}catch(e){(0,d.Qg)(t("settings","Failed to update line manager")),console.error(e)}finally{this.loading.manager=!1}},async deleteUser(){const e=this.user.id;await(0,st.C5)(),OC.dialogs.confirmDestructive(t("settings","Fully delete {userid}'s account including all their personal files, app data, etc.",{userid:e}),t("settings","Account deletion"),{type:OC.dialogs.YES_NO_BUTTONS,confirm:t("settings","Delete {userid}'s account",{userid:e}),confirmClasses:"error",cancel:t("settings","Cancel")},(t=>{if(t)return this.loading.delete=!0,this.loading.all=!0,this.$store.dispatch("deleteUser",e).then((()=>{this.loading.delete=!1,this.loading.all=!1}))}),!0)},enableDisableUser(){this.loading.delete=!0,this.loading.all=!0;const t=this.user.id,e=!this.user.enabled;return this.$store.dispatch("enableDisableUser",{userid:t,enabled:e}).then((()=>{this.loading.delete=!1,this.loading.all=!1}))},async updateDisplayName(){this.loading.displayName=!0;try{await this.$store.dispatch("setUserData",{userid:this.user.id,key:"displayname",value:this.editedDisplayName}),this.editedDisplayName===this.user.displayname&&(0,d.Te)(t("settings","Display name was successfully changed"))}finally{this.loading.displayName=!1}},async updatePassword(){if(this.loading.password=!0,0===this.editedPassword.length)(0,d.Qg)(t("settings","Password can't be empty")),this.loading.password=!1;else try{await this.$store.dispatch("setUserData",{userid:this.user.id,key:"password",value:this.editedPassword}),this.editedPassword="",(0,d.Te)(t("settings","Password was successfully changed"))}finally{this.loading.password=!1}},async updateEmail(){if(this.loading.mailAddress=!0,""===this.editedMail)(0,d.Qg)(t("settings","Email can't be empty")),this.loading.mailAddress=!1,this.editedMail=this.user.email;else try{await this.$store.dispatch("setUserData",{userid:this.user.id,key:"email",value:this.editedMail}),this.editedMail===this.user.email&&(0,d.Te)(t("settings","Email was successfully changed"))}finally{this.loading.mailAddress=!1}},async createGroup(e){let{name:s}=e;this.loading.groups=!0;try{await this.$store.dispatch("addGroup",s),this.availableGroups.push({id:s,name:s}),this.availableSubAdminGroups.push({id:s,name:s});const t=this.user.id;await this.$store.dispatch("addUserGroup",{userid:t,gid:s}),this.userGroups.push({id:s,name:s})}catch(e){C.A.error(t("settings","Failed to create group"),{error:e})}this.loading.groups=!1},async addUserGroup(t){if(t.isCreating)return;const e=this.user.id,s=t.id;if(!1!==t.canAdd){this.loading.groups=!0;try{await this.$store.dispatch("addUserGroup",{userid:e,gid:s}),this.userGroups.push(t)}catch(t){console.error(t)}this.loading.groups=!1}},async removeUserGroup(t){if(!1===t.canRemove)return!1;this.loading.groups=!0;const e=this.user.id,s=t.id;try{await this.$store.dispatch("removeUserGroup",{userid:e,gid:s}),this.userGroups=this.userGroups.filter((t=>t.id!==s)),this.loading.groups=!1,this.$route.params.selectedGroup===s&&this.$store.commit("deleteUser",e)}catch{this.loading.groups=!1}},async addUserSubAdmin(t){this.loading.subadmins=!0;const e=this.user.id,s=t.id;try{await this.$store.dispatch("addUserSubAdmin",{userid:e,gid:s}),this.userSubAdminGroups.push(t)}catch(t){console.error(t)}this.loading.subadmins=!1},async removeUserSubAdmin(t){this.loading.subadmins=!0;const e=this.user.id,s=t.id;try{await this.$store.dispatch("removeUserSubAdmin",{userid:e,gid:s}),this.userSubAdminGroups=this.userSubAdminGroups.filter((t=>t.id!==s))}catch(t){console.error(t)}finally{this.loading.subadmins=!1}},async setUserQuota(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"none";"none"===t&&(t=pt.SA),this.loading.quota=!0,t=t.id?t.id:t;try{const e=((0,O.lT)(t,!0)||t).toString();await this.$store.dispatch("setUserData",{userid:this.user.id,key:"quota",value:e})}catch(t){console.error(t)}finally{this.loading.quota=!1}return t},validateQuota:t=>("object"==typeof t&&(t=t?.id||t.label),null===(0,O.lT)(t,!0)?pt.SA:{id:t=(0,O.v7)((0,O.lT)(t,!0)),label:t}),async setUserLanguage(t){this.loading.languages=!0;try{await this.$store.dispatch("setUserData",{userid:this.user.id,key:"language",value:t.code}),this.loading.languages=!1}catch(t){console.error(t)}return t},sendWelcomeMail(){this.loading.all=!0,this.$store.dispatch("sendWelcomeMail",this.user.id).then((()=>(0,d.Te)(t("settings","Welcome mail sent!"),{timeout:2e3}))).finally((()=>{this.loading.all=!1}))},async toggleEdit(){this.editing=!this.editing,this.editing&&(await this.$nextTick(),this.$refs.displayNameField?.$refs?.inputField?.$refs?.input?.focus(),this.loadGroupsDetails(),this.loadSubAdminGroupsDetails()),this.editedDisplayName!==this.user.displayname?this.editedDisplayName=this.user.displayname:this.editedMail!==this.user.email&&(this.editedMail=this.user.email??"")}}};var mt=a(50085),Ct={};Ct.styleTagTransform=L(),Ct.setAttributes=k(),Ct.insert=x().bind(null,"head"),Ct.domAPI=f(),Ct.insertStyleElement=G(),_()(mt.A,Ct),mt.A&&mt.A.locals&&mt.A.locals;var vt=(0,I.A)(ht,(function(){var t=this,e=t._self._c;return e("tr",{staticClass:"user-list__row",attrs:{"data-cy-user-row":t.user.id}},[e("td",{staticClass:"row__cell row__cell--avatar",attrs:{"data-cy-user-list-cell-avatar":""}},[t.isLoadingUser?e("NcLoadingIcon",{attrs:{name:t.t("settings","Loading account …"),size:32}}):t.visible?e("NcAvatar",{attrs:{"disable-menu":"","show-user-status":!1,user:t.user.id}}):t._e()],1),t._v(" "),e("td",{staticClass:"row__cell row__cell--displayname",attrs:{"data-cy-user-list-cell-displayname":""}},[t.editing&&t.user.backendCapabilities.setDisplayName?[e("NcTextField",{ref:"displayNameField",staticClass:"user-row-text-field",class:{"icon-loading-small":t.loading.displayName},attrs:{"data-cy-user-list-input-displayname":"","data-loading":t.loading.displayName||void 0,"trailing-button-label":t.t("settings","Submit"),"show-trailing-button":!0,disabled:t.loading.displayName||t.isLoadingField,label:t.t("settings","Change display name"),"trailing-button-icon":"arrowRight",value:t.editedDisplayName,autocapitalize:"off",autocomplete:"off",spellcheck:"false"},on:{"update:value":function(e){t.editedDisplayName=e},"trailing-button-click":t.updateDisplayName}})]:t.isObfuscated?t._e():e("strong",{attrs:{title:t.user.displayname?.length>20?t.user.displayname:null}},[t._v("\n\t\t\t"+t._s(t.user.displayname)+"\n\t\t")])],2),t._v(" "),e("td",{staticClass:"row__cell row__cell--username",attrs:{"data-cy-user-list-cell-username":""}},[e("span",{staticClass:"row__subtitle"},[t._v(t._s(t.user.id))])]),t._v(" "),e("td",{staticClass:"row__cell",class:{"row__cell--obfuscated":t.hasObfuscated},attrs:{"data-cy-user-list-cell-password":""}},[t.editing&&t.settings.canChangePassword&&t.user.backendCapabilities.setPassword?[e("NcTextField",{staticClass:"user-row-text-field",class:{"icon-loading-small":t.loading.password},attrs:{"data-cy-user-list-input-password":"","data-loading":t.loading.password||void 0,"trailing-button-label":t.t("settings","Submit"),"show-trailing-button":!0,disabled:t.loading.password||t.isLoadingField,minlength:t.minPasswordLength,maxlength:"469",label:t.t("settings","Set new password"),"trailing-button-icon":"arrowRight",value:t.editedPassword,autocapitalize:"off",autocomplete:"new-password",required:"",spellcheck:"false",type:"password"},on:{"update:value":function(e){t.editedPassword=e},"trailing-button-click":t.updatePassword}})]:t.isObfuscated?e("span",[t._v("\n\t\t\t"+t._s(t.t("settings","You do not have permissions to see the details of this account"))+"\n\t\t")]):t._e()],2),t._v(" "),e("td",{staticClass:"row__cell",attrs:{"data-cy-user-list-cell-email":""}},[t.editing?[e("NcTextField",{staticClass:"user-row-text-field",class:{"icon-loading-small":t.loading.mailAddress},attrs:{"data-cy-user-list-input-email":"","data-loading":t.loading.mailAddress||void 0,"show-trailing-button":!0,"trailing-button-label":t.t("settings","Submit"),label:t.t("settings","Set new email address"),disabled:t.loading.mailAddress||t.isLoadingField,"trailing-button-icon":"arrowRight",value:t.editedMail,autocapitalize:"off",autocomplete:"email",spellcheck:"false",type:"email"},on:{"update:value":function(e){t.editedMail=e},"trailing-button-click":t.updateEmail}})]:t.isObfuscated?t._e():e("span",{attrs:{title:t.user.email?.length>20?t.user.email:null}},[t._v("\n\t\t\t"+t._s(t.user.email)+"\n\t\t")])],2),t._v(" "),e("td",{staticClass:"row__cell row__cell--large row__cell--multiline",attrs:{"data-cy-user-list-cell-groups":""}},[t.editing?[e("label",{staticClass:"hidden-visually",attrs:{for:"groups"+t.uniqueId}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Add account to group"))+"\n\t\t\t")]),t._v(" "),e("NcSelect",{attrs:{"data-cy-user-list-input-groups":"","data-loading":t.loading.groups||void 0,"input-id":"groups"+t.uniqueId,"close-on-select":!1,disabled:t.isLoadingField||t.loading.groupsDetails,loading:t.loading.groups,multiple:!0,"append-to-body":!1,options:t.availableGroups,placeholder:t.t("settings","Add account to group"),taggable:t.settings.isAdmin||t.settings.isDelegatedAdmin,value:t.userGroups,label:"name","no-wrap":!0,"create-option":t=>({id:t,name:t,isCreating:!0})},on:{search:t.searchGroups,"option:created":t.createGroup,"option:selected":e=>t.addUserGroup(e.at(-1)),"option:deselected":t.removeUserGroup}})]:t.isObfuscated?t._e():e("span",{attrs:{title:t.userGroupsLabels?.length>40?t.userGroupsLabels:null}},[t._v("\n\t\t\t"+t._s(t.userGroupsLabels)+"\n\t\t")])],2),t._v(" "),t.settings.isAdmin||t.settings.isDelegatedAdmin?e("td",{staticClass:"row__cell row__cell--large row__cell--multiline",attrs:{"data-cy-user-list-cell-subadmins":""}},[t.editing&&(t.settings.isAdmin||t.settings.isDelegatedAdmin)?[e("label",{staticClass:"hidden-visually",attrs:{for:"subadmins"+t.uniqueId}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Set account as admin for"))+"\n\t\t\t")]),t._v(" "),e("NcSelect",{attrs:{"data-cy-user-list-input-subadmins":"","data-loading":t.loading.subadmins||void 0,"input-id":"subadmins"+t.uniqueId,"close-on-select":!1,disabled:t.isLoadingField||t.loading.subAdminGroupsDetails,loading:t.loading.subadmins,label:"name","append-to-body":!1,multiple:!0,"no-wrap":!0,options:t.availableSubAdminGroups,placeholder:t.t("settings","Set account as admin for"),value:t.userSubAdminGroups},on:{search:t.searchGroups,"option:deselected":t.removeUserSubAdmin,"option:selected":e=>t.addUserSubAdmin(e.at(-1))}})]:t.isObfuscated?t._e():e("span",{attrs:{title:t.userSubAdminGroupsLabels?.length>40?t.userSubAdminGroupsLabels:null}},[t._v("\n\t\t\t"+t._s(t.userSubAdminGroupsLabels)+"\n\t\t")])],2):t._e(),t._v(" "),e("td",{staticClass:"row__cell",attrs:{"data-cy-user-list-cell-quota":""}},[t.editing?[e("label",{staticClass:"hidden-visually",attrs:{for:"quota"+t.uniqueId}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Select account quota"))+"\n\t\t\t")]),t._v(" "),e("NcSelect",{attrs:{"close-on-select":!0,"create-option":t.validateQuota,"data-cy-user-list-input-quota":"","data-loading":t.loading.quota||void 0,disabled:t.isLoadingField,loading:t.loading.quota,"append-to-body":!1,clearable:!1,"input-id":"quota"+t.uniqueId,options:t.quotaOptions,placeholder:t.t("settings","Select account quota"),taggable:!0},on:{"option:selected":t.setUserQuota},model:{value:t.editedUserQuota,callback:function(e){t.editedUserQuota=e},expression:"editedUserQuota"}})]:t.isObfuscated?t._e():[e("span",{attrs:{id:"quota-progress"+t.uniqueId}},[t._v(t._s(t.userQuota)+" ("+t._s(t.usedSpace)+")")]),t._v(" "),e("NcProgressBar",{staticClass:"row__progress",class:{"row__progress--warn":t.usedQuota>80},attrs:{"aria-labelledby":"quota-progress"+t.uniqueId,value:t.usedQuota}})]],2),t._v(" "),t.showConfig.showLanguages?e("td",{staticClass:"row__cell row__cell--large",attrs:{"data-cy-user-list-cell-language":""}},[t.editing?[e("label",{staticClass:"hidden-visually",attrs:{for:"language"+t.uniqueId}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Set the language"))+"\n\t\t\t")]),t._v(" "),e("NcSelect",{attrs:{id:"language"+t.uniqueId,"data-cy-user-list-input-language":"","data-loading":t.loading.languages||void 0,"allow-empty":!1,disabled:t.isLoadingField,loading:t.loading.languages,clearable:!1,"append-to-body":!1,options:t.availableLanguages,placeholder:t.t("settings","No language set"),value:t.userLanguage,label:"name"},on:{input:t.setUserLanguage}})]:t.isObfuscated?t._e():e("span",[t._v("\n\t\t\t"+t._s(t.userLanguage.name)+"\n\t\t")])],2):t._e(),t._v(" "),t.showConfig.showUserBackend||t.showConfig.showStoragePath?e("td",{staticClass:"row__cell row__cell--large",attrs:{"data-cy-user-list-cell-storage-location":""}},[t.isObfuscated?t._e():[t.showConfig.showUserBackend?e("span",[t._v(t._s(t.user.backend))]):t._e(),t._v(" "),t.showConfig.showStoragePath?e("span",{staticClass:"row__subtitle",attrs:{title:t.user.storageLocation}},[t._v("\n\t\t\t\t"+t._s(t.user.storageLocation)+"\n\t\t\t")]):t._e()]],2):t._e(),t._v(" "),t.showConfig.showFirstLogin?e("td",{staticClass:"row__cell",attrs:{"data-cy-user-list-cell-first-login":""}},[t.isObfuscated?t._e():e("span",[t._v(t._s(t.userFirstLogin))])]):t._e(),t._v(" "),t.showConfig.showLastLogin?e("td",{staticClass:"row__cell",attrs:{title:t.userLastLoginTooltip,"data-cy-user-list-cell-last-login":""}},[t.isObfuscated?t._e():e("span",[t._v(t._s(t.userLastLogin))])]):t._e(),t._v(" "),e("td",{staticClass:"row__cell row__cell--large row__cell--fill",attrs:{"data-cy-user-list-cell-manager":""}},[t.editing?[e("label",{staticClass:"hidden-visually",attrs:{for:"manager"+t.uniqueId}},[t._v("\n\t\t\t\t"+t._s(t.managerLabel)+"\n\t\t\t")]),t._v(" "),e("NcSelect",{staticClass:"select--fill",attrs:{"data-cy-user-list-input-manager":"","data-loading":t.loading.manager||void 0,"input-id":"manager"+t.uniqueId,"close-on-select":!0,disabled:t.isLoadingField,"append-to-body":!1,loading:t.loadingPossibleManagers||t.loading.manager,label:"displayname",options:t.possibleManagers,placeholder:t.managerLabel},on:{open:t.searchInitialUserManager,search:t.searchUserManager,"option:selected":t.updateUserManager},model:{value:t.currentManager,callback:function(e){t.currentManager=e},expression:"currentManager"}})]:t.isObfuscated?t._e():e("span",[t._v("\n\t\t\t"+t._s(t.user.manager)+"\n\t\t")])],2),t._v(" "),e("td",{staticClass:"row__cell row__cell--actions",attrs:{"data-cy-user-list-cell-actions":""}},[t.visible&&!t.isObfuscated&&t.canEdit&&!t.loading.all?e("UserRowActions",{attrs:{actions:t.userActions,disabled:t.isLoadingField,edit:t.editing,user:t.user},on:{"update:edit":t.toggleEdit}}):t._e()],1)])}),[],!1,null,"e966b116",null);const wt=vt.exports,_t=Object.freeze({id:"",displayName:"",password:"",mailAddress:"",groups:[],manager:"",subAdminsGroups:[],quota:pt.MY,language:{code:"en",name:t("settings","Default language")}}),bt={name:"UserList",components:{Fragment:c.F,NcEmptyContent:u.A,NcIconSvgWrapper:g.A,NcLoadingIcon:A.A,NewUserDialog:H,UserListFooter:X,UserListHeader:tt,VirtualList:q},props:{selectedGroup:{type:String,default:null},externalActions:{type:Array,default:()=>[]}},setup:()=>({mdiAccountGroup:l.n7C,rowHeight:55,UserRow:wt}),data:()=>({loading:{all:!1,groups:!1,users:!1},newUser:{..._t},isInitialLoad:!0,searchQuery:""}),computed:{showConfig(){return this.$store.getters.getShowConfig},settings(){return this.$store.getters.getServerData},style(){return{"--row-height":`${this.rowHeight}px`}},hasObfuscated(){return this.filteredUsers.some((t=>(0,pt.HK)(t)))},users(){return this.$store.getters.getUsers},filteredUsers(){return"disabled"===this.selectedGroup?this.users.filter((t=>!1===t.enabled)):this.users.filter((t=>!1!==t.enabled))},groups(){return this.$store.getters.getSortedGroups.filter((t=>"__nc_internal_recent"!==t.id&&"disabled"!==t.id))},quotaOptions(){const t=this.settings.quotaPreset.reduce(((t,e)=>t.concat({id:e,label:e})),[]);return this.settings.allowUnlimitedQuota&&t.unshift(pt.SA),t.unshift(pt.MY),t},usersOffset(){return this.$store.getters.getUsersOffset},usersLimit(){return this.$store.getters.getUsersLimit},disabledUsersOffset(){return this.$store.getters.getDisabledUsersOffset},disabledUsersLimit(){return this.$store.getters.getDisabledUsersLimit},usersCount(){return this.users.length},languages(){return[{label:t("settings","Common languages"),languages:this.settings.languages.commonLanguages},{label:t("settings","Other languages"),languages:this.settings.languages.otherLanguages}]}},watch:{async selectedGroup(t){this.isInitialLoad=!0,await this.redirectIfDisabled(),this.$store.commit("resetUsers"),await this.loadUsers(),this.setNewUserDefaultGroup(t)},filteredUsers(t){C.A.debug(`${t.length} filtered user(s)`)}},async created(){await this.loadUsers()},async mounted(){this.settings.canChangePassword||OC.Notification.showTemporary(t("settings","Password change is disabled because the master key is disabled")),this.resetForm(),(0,n.B1)("nextcloud:unified-search.search",this.search),(0,n.B1)("nextcloud:unified-search.reset",this.resetSearch),await this.redirectIfDisabled()},beforeDestroy(){(0,n.al)("nextcloud:unified-search.search",this.search),(0,n.al)("nextcloud:unified-search.reset",this.resetSearch)},methods:{async handleScrollEnd(){await this.loadUsers()},async loadUsers(){this.loading.users=!0;try{"disabled"===this.selectedGroup?await this.$store.dispatch("getDisabledUsers",{offset:this.disabledUsersOffset,limit:this.disabledUsersLimit,search:this.searchQuery}):"__nc_internal_recent"===this.selectedGroup?await this.$store.dispatch("getRecentUsers",{offset:this.usersOffset,limit:this.usersLimit,search:this.searchQuery}):await this.$store.dispatch("getUsers",{offset:this.usersOffset,limit:this.usersLimit,group:this.selectedGroup,search:this.searchQuery}),C.A.debug(`${this.users.length} total user(s) loaded`)}catch(t){C.A.error("Failed to load accounts",{error:t}),(0,d.Qg)("Failed to load accounts")}this.loading.users=!1,this.isInitialLoad=!1},closeDialog(){this.$store.commit("setShowConfig",{key:"showNewUserForm",value:!1})},async search(t){let{query:e}=t;this.searchQuery=e,this.$store.commit("resetUsers"),await this.loadUsers()},resetSearch(){this.search({query:""})},resetForm(){this.newUser=Object.assign({},_t),this.settings.defaultLanguage&&r.Ay.set(this.newUser.language,"code",this.settings.defaultLanguage),this.setNewUserDefaultGroup(this.selectedGroup),this.loading.all=!1},setNewUserDefaultGroup(t){if(t||this.settings.isAdmin||this.settings.isDelegatedAdmin){if(t){const e=this.groups.find((e=>e.id===t));if(e)return void(this.newUser.groups=[e])}this.newUser.groups=[]}else{const t=this.$store.getters.getSubAdminGroups;1===t.length&&(this.newUser.groups=[...t])}},async redirectIfDisabled(){const t=this.$store.getters.getGroups;"disabled"===this.selectedGroup&&t.findIndex((t=>"disabled"===t.id&&0===t.usercount))>-1&&(this.$router.push({name:"users"}),await this.loadUsers())}}};var ft=a(79498),yt={};yt.styleTagTransform=L(),yt.setAttributes=k(),yt.insert=x().bind(null,"head"),yt.domAPI=f(),yt.insertStyleElement=G(),_()(ft.A,yt),ft.A&&ft.A.locals&&ft.A.locals;const xt=(0,I.A)(bt,(function(){var t=this,e=t._self._c;return e("Fragment",[t.showConfig.showNewUserForm?e("NewUserDialog",{attrs:{loading:t.loading,"new-user":t.newUser,"quota-options":t.quotaOptions},on:{reset:t.resetForm,closing:t.closeDialog}}):t._e(),t._v(" "),0===t.filteredUsers.length?e("NcEmptyContent",{staticClass:"empty",attrs:{name:t.isInitialLoad&&t.loading.users?null:t.t("settings","No accounts")},scopedSlots:t._u([{key:"icon",fn:function(){return[t.isInitialLoad&&t.loading.users?e("NcLoadingIcon",{attrs:{name:t.t("settings","Loading accounts …"),size:64}}):e("NcIconSvgWrapper",{attrs:{path:t.mdiAccountGroup,size:64}})]},proxy:!0}],null,!1,226056511)}):e("VirtualList",{style:t.style,attrs:{"data-component":t.UserRow,"data-sources":t.filteredUsers,"data-key":"id","data-cy-user-list":"","item-height":t.rowHeight,"extra-props":{users:t.users,settings:t.settings,hasObfuscated:t.hasObfuscated,quotaOptions:t.quotaOptions,languages:t.languages,externalActions:t.externalActions}},on:{"scroll-end":t.handleScrollEnd},scopedSlots:t._u([{key:"before",fn:function(){return[e("caption",{staticClass:"hidden-visually"},[t._v("\n\t\t\t\t"+t._s(t.t("settings","List of accounts. This list is not fully rendered for performance reasons. The accounts will be rendered as you navigate through the list."))+"\n\t\t\t")])]},proxy:!0},{key:"header",fn:function(){return[e("UserListHeader",{attrs:{"has-obfuscated":t.hasObfuscated}})]},proxy:!0},{key:"footer",fn:function(){return[e("UserListFooter",{attrs:{loading:t.loading.users,"filtered-users":t.filteredUsers}})]},proxy:!0}])})],1)}),[],!1,null,"1e8fee5a",null).exports,Nt=(0,r.pM)({name:"UserManagement",components:{NcAppContent:o.A,UserList:xt},data:()=>({externalActions:[]}),computed:{pageHeading(){return null===this.selectedGroupDecoded?(0,i.Tl)("settings","All accounts"):{admin:(0,i.Tl)("settings","Admins"),disabled:(0,i.Tl)("settings","Disabled accounts")}[this.selectedGroupDecoded]??(0,i.Tl)("settings","Account group: {group}",{group:this.selectedGroupDecoded})},selectedGroup(){return this.$route.params.selectedGroup},selectedGroupDecoded(){return this.selectedGroup?decodeURIComponent(this.selectedGroup):null}},beforeMount(){this.$store.dispatch("getPasswordPolicyMinLength")},created(){window.OCA=window.OCA??{},window.OCA.Settings=window.OCA.Settings??{},window.OCA.Settings.UserList=window.OCA.Settings.UserList??{},window.OCA.Settings.UserList.registerAction=this.registerAction,(0,n.Ic)("settings:user-management:loaded")},methods:{t:i.Tl,registerAction(t,e,s,a){return this.externalActions.push({icon:t,text:e,action:s,enabled:a}),this.externalActions}}});var kt=a(82009),St={};St.styleTagTransform=L(),St.setAttributes=k(),St.insert=x().bind(null,"head"),St.domAPI=f(),St.insertStyleElement=G(),_()(kt.A,St),kt.A&&kt.A.locals&&kt.A.locals;const Gt=(0,I.A)(Nt,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("NcAppContent",{attrs:{"page-heading":t.pageHeading}},[e("UserList",{attrs:{"selected-group":t.selectedGroupDecoded,"external-actions":t.externalActions}})],1)}),[],!1,null,"253f9eec",null).exports},76333:(t,e,s)=>{s.d(e,{AO:()=>F.N,Az:()=>o.N,B6:()=>u.N,EQ:()=>mt.N,K1:()=>st.N,Qz:()=>O.N,R1:()=>q.N,i$:()=>K.N,lT:()=>Q.N,m7:()=>Q.u,v:()=>Ct.N,x1:()=>M.A,yI:()=>V.A});var a=s(15800),i=s(6375),n=s(61744),r=s(97691),o=s(71116),l=s(74479),d=s(73346),c=s(26873),u=s(39092),g=s(15502),A=s(71418),p=s(51005),h=s(74407),m=s(47611),C=s(10363),v=s(11906),w=s(14363),_=s(25535),b=s(95063),f=s(27345),y=s(85865),x=s(85474),N=s(94174),k=s(13463),S=s(542),G=s(24784),U=s(14727),L=s(11041),D=s(18608),B=s(57718),I=s(92089),q=s(69048),O=s(24761),M=s(97012),F=s(13368),$=s(83125),T=s(21590),E=s(4798),P=s(75971),z=s(2738),R=s(54463),Q=s(44228),W=s(30040),H=s(48046),K=s(52045),j=s(20802),Y=s(25521),X=s(25285),V=s(35779),J=s(94427),Z=s(27403),tt=s(48679),et=s(26517),st=s(5260),at=s(56849),it=s(51310),nt=s(28240),rt=s(59892),ot=s(69496),lt=s(40083),dt=s(18722),ct=s(99316),ut=s(74484),gt=s(997),At=s(23573),pt=s(20028),ht=s(58103),mt=(s(58322),s(65692),s(65043),s(21777),s(30872)),Ct=s(59890),vt=(s(61338),s(94632)),wt=s(11712),_t=s(38769),bt=s(68147),ft=s(36432),yt=s(42535),xt=s(30709),Nt=s(3349),kt=s(23982),St=s(51725),Gt=s(23610),Ut=(s(23020),s(53429),s(94205),s(95462),s(23739),s(16343),s(29928),s(12311),s(63352),s(42892)),Lt=s(15074),Dt=(s(59656),s(75105),s(92471),s(16406),s(2508));a.N,i.N,n.A,r.N,o.N,l.A,d.N,c.A,g.A,A.A,p.N,u.N,h.N,m.A,C.A,v.N,w.N,_.A,b.N,f.A,y.A,x.N,N.N,k.N,S.A,G.N,U.A,L.N,D.A,pt.N,B.N,I.N,q.N,O.N,M.A,F.N,$.N,T.N,E.N,P.N,z.N,R.N,Q.N,W.A,H.A,K.N,j.N,Y.A,X.N,V.A,J.A,Z.A,tt.N,et.N,st.N,at.N,it.N,nt.N,rt.A,At.N,ot.A,lt.A,dt.N,ct.N,ut.N,gt.N,pt.a,ht.N,vt.N,mt.N,wt.N,_t.N,bt.N,ft.N,yt.N,xt.N,Ct.N,Nt.N,kt.N,St.N,Gt.A,Symbol.toStringTag,Ut.u,Lt.u,Dt.yw,Symbol.toStringTag},79496:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),i=s.n(a),n=s(76314),r=s.n(n)()(i());r.push([t.id,".modal__header[data-v-161509be]{margin:0}.modal__content[data-v-161509be]{display:flex;flex-direction:column;align-items:center;padding:20px;gap:4px 0}.modal__button-row[data-v-161509be]{display:flex;width:100%;justify-content:space-between}","",{version:3,sources:["webpack://./apps/settings/src/components/GroupListItem.vue"],names:[],mappings:"AAEC,gCACC,QAAA,CAGD,iCACC,YAAA,CACA,qBAAA,CACA,kBAAA,CACA,YAAA,CACA,SAAA,CAGD,oCACC,YAAA,CACA,UAAA,CACA,6BAAA",sourcesContent:["\n.modal {\n\t&__header {\n\t\tmargin: 0;\n\t}\n\n\t&__content {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t\tpadding: 20px;\n\t\tgap: 4px 0;\n\t}\n\n\t&__button-row {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t\tjustify-content: space-between;\n\t}\n}\n"],sourceRoot:""}]);const o=r},79498:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),i=s.n(a),n=s(76314),r=s.n(n)()(i());r.push([t.id,".empty[data-v-1e8fee5a] .icon-vue{width:64px;height:64px}.empty[data-v-1e8fee5a] .icon-vue svg{max-width:64px;max-height:64px}","",{version:3,sources:["webpack://./apps/settings/src/components/UserList.vue"],names:[],mappings:"AAKE,kCACC,UAAA,CACA,WAAA,CAEA,sCACC,cAAA,CACA,eAAA",sourcesContent:["\n@use './Users/shared/styles' as *;\n\n.empty {\n\t:deep {\n\t\t.icon-vue {\n\t\t\twidth: 64px;\n\t\t\theight: 64px;\n\n\t\t\tsvg {\n\t\t\t\tmax-width: 64px;\n\t\t\t\tmax-height: 64px;\n\t\t\t}\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const o=r},79722:t=>{t.exports="data:image/svg+xml,%3c%21--%20-%20SPDX-FileCopyrightText:%202020%20Google%20Inc.%20-%20SPDX-License-Identifier:%20Apache-2.0%20--%3e%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M5.6%207.4L7%206l6%206-6%206-1.4-1.4%204.6-4.6-4.6-4.6m6%200L13%206l6%206-6%206-1.4-1.4%204.6-4.6-4.6-4.6z%27/%3e%3c/svg%3e"},82009:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),i=s.n(a),n=s(76314),r=s.n(n)()(i());r.push([t.id,".app-content[data-v-253f9eec]{display:flex;overflow:hidden;flex-direction:column;max-height:100%}","",{version:3,sources:["webpack://./apps/settings/src/views/UserManagement.vue"],names:[],mappings:"AACA,8BAEC,YAAA,CACA,eAAA,CACA,qBAAA,CACA,eAAA",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"],sourceRoot:""}]);const o=r},86886:t=>{t.exports="data:image/svg+xml,%3c%21--%20-%20SPDX-FileCopyrightText:%202020%20Google%20Inc.%20-%20SPDX-License-Identifier:%20Apache-2.0%20--%3e%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M8.6%2016.6l4.6-4.6-4.6-4.6L10%206l6%206-6%206-1.4-1.4z%27/%3e%3c/svg%3e"},95066:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),i=s.n(a),n=s(76314),r=s.n(n)()(i());r.push([t.id,".footer[data-v-db2a7c4e]{position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background)}.footer__cell[data-v-db2a7c4e]{display:flex;flex-direction:column;justify-content:center;padding:0 var(--cell-padding);min-width:var(--cell-width);width:var(--cell-width);color:var(--color-main-text)}.footer__cell strong[data-v-db2a7c4e],.footer__cell span[data-v-db2a7c4e],.footer__cell label[data-v-db2a7c4e]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.footer__cell--avatar[data-v-db2a7c4e],.footer__cell--displayname[data-v-db2a7c4e]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.footer__cell--avatar[data-v-db2a7c4e]{inset-inline-start:0}.footer__cell--displayname[data-v-db2a7c4e]{inset-inline-start:var(--avatar-cell-width);border-inline-end:1px solid var(--color-border)}}.footer__cell--username[data-v-db2a7c4e]{padding-inline-start:calc(var(--default-grid-baseline)*3)}.footer__cell--avatar[data-v-db2a7c4e]{min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0;user-select:none}.footer__cell--multiline span[data-v-db2a7c4e]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.footer__cell--multiline span[data-v-db2a7c4e]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.footer__cell--large[data-v-db2a7c4e]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.footer__cell--obfuscated[data-v-db2a7c4e]{min-width:400px;width:400px}.footer__cell--fill[data-v-db2a7c4e]{min-width:var(--cell-width-large);width:100%}.footer__cell--actions[data-v-db2a7c4e]{position:sticky;inset-inline-end:0;z-index:var(--sticky-column-z-index);display:flex;flex-direction:row;align-items:center;min-width:110px;width:110px;background-color:var(--color-main-background);border-inline-start:1px solid var(--color-border)}.footer__subtitle[data-v-db2a7c4e]{color:var(--color-text-maxcontrast)}.footer__cell[data-v-db2a7c4e]{position:sticky;color:var(--color-text-maxcontrast)}.footer__cell--loading[data-v-db2a7c4e]{inset-inline-start:0;min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0}.footer__cell--count[data-v-db2a7c4e]{inset-inline-start:var(--avatar-cell-width);min-width:var(--cell-width);width:var(--cell-width)}","",{version:3,sources:["webpack://./apps/settings/src/components/Users/UserListFooter.vue","webpack://./apps/settings/src/components/Users/shared/styles.scss"],names:[],mappings:"AAGA,yBCGC,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CAIA,+BACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,6BAAA,CACA,2BAAA,CACA,uBAAA,CACA,4BAAA,CAEA,+GAGC,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CAGD,yBACC,mFAEC,eAAA,CACA,oCAAA,CACA,6CAAA,CAGD,uCACC,oBAAA,CAGD,4CACC,2CAAA,CACA,+CAAA,CAAA,CAIF,yCACC,yDAAA,CAGD,uCACC,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CACA,gBAAA,CAIA,+CACC,iBAAA,CACA,iBAAA,CAEA,iCAJD,+CAKE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,sCACC,iCAAA,CACA,6BAAA,CAGD,2CACC,eAAA,CACA,WAAA,CAID,qCACC,iCAAA,CACA,UAAA,CAGD,wCACC,eAAA,CACA,kBAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,iDAAA,CAIF,mCACC,mCAAA,CDpGD,+BACC,eAAA,CACA,mCAAA,CAEA,wCACC,oBAAA,CACA,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CAGD,sCACC,2CAAA,CACA,2BAAA,CACA,uBAAA",sourcesContent:["\n@use './shared/styles';\n\n.footer {\n\t@include styles.row;\n\t@include styles.cell;\n\n\t&__cell {\n\t\tposition: sticky;\n\t\tcolor: var(--color-text-maxcontrast);\n\n\t\t&--loading {\n\t\t\tinset-inline-start: 0;\n\t\t\tmin-width: var(--avatar-cell-width);\n\t\t\twidth: var(--avatar-cell-width);\n\t\t\talign-items: center;\n\t\t\tpadding: 0;\n\t\t}\n\n\t\t&--count {\n\t\t\tinset-inline-start: var(--avatar-cell-width);\n\t\t\tmin-width: var(--cell-width);\n\t\t\twidth: var(--cell-width);\n\t\t}\n\t}\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n@mixin row {\n\tposition: relative;\n\tdisplay: flex;\n\tmin-width: 100%;\n\twidth: fit-content;\n\theight: var(--row-height);\n\tbackground-color: var(--color-main-background);\n}\n\n@mixin cell {\n\t&__cell {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\tpadding: 0 var(--cell-padding);\n\t\tmin-width: var(--cell-width);\n\t\twidth: var(--cell-width);\n\t\tcolor: var(--color-main-text);\n\n\t\tstrong,\n\t\tspan,\n\t\tlabel {\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\t\t\toverflow-wrap: anywhere;\n\t\t}\n\n\t\t@media (min-width: 670px) { /* Show one &--large column between stickied columns */\n\t\t\t&--avatar,\n\t\t\t&--displayname {\n\t\t\t\tposition: sticky;\n\t\t\t\tz-index: var(--sticky-column-z-index);\n\t\t\t\tbackground-color: var(--color-main-background);\n\t\t\t}\n\n\t\t\t&--avatar {\n\t\t\t\tinset-inline-start: 0;\n\t\t\t}\n\n\t\t\t&--displayname {\n\t\t\t\tinset-inline-start: var(--avatar-cell-width);\n\t\t\t\tborder-inline-end: 1px solid var(--color-border);\n\t\t\t}\n\t\t}\n\n\t\t&--username {\n\t\t\tpadding-inline-start: calc(var(--default-grid-baseline) * 3);\n\t\t}\n\n\t\t&--avatar {\n\t\t\tmin-width: var(--avatar-cell-width);\n\t\t\twidth: var(--avatar-cell-width);\n\t\t\talign-items: center;\n\t\t\tpadding: 0;\n\t\t\tuser-select: none;\n\t\t}\n\n\t\t&--multiline {\n\t\t\tspan {\n\t\t\t\tline-height: 1.3em;\n\t\t\t\twhite-space: unset;\n\n\t\t\t\t@supports (-webkit-line-clamp: 2) {\n\t\t\t\t\tdisplay: -webkit-box;\n\t\t\t\t\t-webkit-line-clamp: 2;\n\t\t\t\t\t-webkit-box-orient: vertical;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&--large {\n\t\t\tmin-width: var(--cell-width-large);\n\t\t\twidth: var(--cell-width-large);\n\t\t}\n\n\t\t&--obfuscated {\n\t\t\tmin-width: 400px;\n\t\t\twidth: 400px;\n\t\t}\n\n\t\t// Fill remaining row space with cell\n\t\t&--fill {\n\t\t\tmin-width: var(--cell-width-large);\n\t\t\twidth: 100%;\n\t\t}\n\n\t\t&--actions {\n\t\t\tposition: sticky;\n\t\t\tinset-inline-end: 0;\n\t\t\tz-index: var(--sticky-column-z-index);\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: row;\n\t\t\talign-items: center;\n\t\t\tmin-width: 110px;\n\t\t\twidth: 110px;\n\t\t\tbackground-color: var(--color-main-background);\n\t\t\tborder-inline-start: 1px solid var(--color-border);\n\t\t}\n\t}\n\n\t&__subtitle {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n}\n"],sourceRoot:""}]);const o=r},95668:(t,e,s)=>{s.d(e,{HK:()=>r,MY:()=>n,SA:()=>i});var a=s(53334);const i={id:"none",label:(0,a.Tl)("settings","Unlimited")},n={id:"default",label:(0,a.Tl)("settings","Default quota")},r=t=>{const e=Object.keys(t);return 1===e.length&&"id"===e.at(0)}}}]); -//# sourceMappingURL=settings-users-3239.js.map?v=a1ded3f60f3185c4ac3b
\ No newline at end of file +"use strict";(self.webpackChunknextcloud=self.webpackChunknextcloud||[]).push([[3239],{6817:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),i=s.n(a),n=s(76314),r=s.n(n)()(i());r.push([t.id,".dialog__note[data-v-9f7a355c]{font-weight:normal}fieldset[data-v-9f7a355c]{font-weight:bold}","",{version:3,sources:["webpack://./apps/settings/src/components/Users/UserSettingsDialog.vue"],names:[],mappings:"AAEC,+BACC,kBAAA,CAIF,0BACC,gBAAA",sourcesContent:["\n.dialog {\n\t&__note {\n\t\tfont-weight: normal;\n\t}\n}\n\nfieldset {\n\tfont-weight: bold;\n}\n"],sourceRoot:""}]);const o=r},7073:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),i=s.n(a),n=s(76314),r=s.n(n)()(i());r.push([t.id,".user-list__row[data-v-7faa9864]{position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background)}.user-list__row[data-v-7faa9864]:hover{background-color:var(--color-background-hover)}.user-list__row:hover .row__cell[data-v-7faa9864]:not(.row__cell--actions){background-color:var(--color-background-hover)}.user-list__row .select--fill[data-v-7faa9864]{max-width:calc(var(--cell-width-large) - 2*var(--cell-padding))}.row__cell[data-v-7faa9864]{display:flex;flex-direction:column;justify-content:center;padding:0 var(--cell-padding);min-width:var(--cell-width);width:var(--cell-width);color:var(--color-main-text)}.row__cell strong[data-v-7faa9864],.row__cell span[data-v-7faa9864],.row__cell label[data-v-7faa9864]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.row__cell--avatar[data-v-7faa9864],.row__cell--displayname[data-v-7faa9864]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.row__cell--avatar[data-v-7faa9864]{inset-inline-start:0}.row__cell--displayname[data-v-7faa9864]{inset-inline-start:var(--avatar-cell-width);border-inline-end:1px solid var(--color-border)}}.row__cell--username[data-v-7faa9864]{padding-inline-start:calc(var(--default-grid-baseline)*3)}.row__cell--avatar[data-v-7faa9864]{min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0;user-select:none}.row__cell--multiline span[data-v-7faa9864]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.row__cell--multiline span[data-v-7faa9864]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.row__cell--large[data-v-7faa9864]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.row__cell--obfuscated[data-v-7faa9864]{min-width:400px;width:400px}.row__cell--fill[data-v-7faa9864]{min-width:var(--cell-width-large);width:100%}.row__cell--actions[data-v-7faa9864]{position:sticky;inset-inline-end:0;z-index:var(--sticky-column-z-index);display:flex;flex-direction:row;align-items:center;min-width:110px;width:110px;background-color:var(--color-main-background);border-inline-start:1px solid var(--color-border)}.row__subtitle[data-v-7faa9864]{color:var(--color-text-maxcontrast)}.row__cell[data-v-7faa9864]{border-bottom:1px solid var(--color-border)}.row__cell[data-v-7faa9864] .v-select.select{min-width:var(--cell-min-width)}.row__progress[data-v-7faa9864]{margin-top:4px}.row__progress--warn[data-v-7faa9864]::-moz-progress-bar{background:var(--color-warning) !important}.row__progress--warn[data-v-7faa9864]::-webkit-progress-value{background:var(--color-warning) !important}","",{version:3,sources:["webpack://./apps/settings/src/components/Users/UserRow.vue","webpack://./apps/settings/src/components/Users/shared/styles.scss"],names:[],mappings:"AAGA,iCCGC,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CDLA,uCACC,8CAAA,CAEA,2EACC,8CAAA,CAKF,+CACC,+DAAA,CCDD,4BACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,6BAAA,CACA,2BAAA,CACA,uBAAA,CACA,4BAAA,CAEA,sGAGC,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CAGD,yBACC,6EAEC,eAAA,CACA,oCAAA,CACA,6CAAA,CAGD,oCACC,oBAAA,CAGD,yCACC,2CAAA,CACA,+CAAA,CAAA,CAIF,sCACC,yDAAA,CAGD,oCACC,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CACA,gBAAA,CAIA,4CACC,iBAAA,CACA,iBAAA,CAEA,iCAJD,4CAKE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,mCACC,iCAAA,CACA,6BAAA,CAGD,wCACC,eAAA,CACA,WAAA,CAID,kCACC,iCAAA,CACA,UAAA,CAGD,qCACC,eAAA,CACA,kBAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,iDAAA,CAIF,gCACC,mCAAA,CDpFD,4BACC,2CAAA,CAGC,6CACC,+BAAA,CAKH,gCACC,cAAA,CAGC,yDACC,0CAAA,CAED,8DACC,0CAAA",sourcesContent:["\n@use './shared/styles';\n\n.user-list__row {\n\t@include styles.row;\n\n\t&:hover {\n\t\tbackground-color: var(--color-background-hover);\n\n\t\t.row__cell:not(.row__cell--actions) {\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t}\n\t}\n\n\t// Limit width of select in fill cell\n\t.select--fill {\n\t\tmax-width: calc(var(--cell-width-large) - (2 * var(--cell-padding)));\n\t}\n}\n\n.row {\n\t@include styles.cell;\n\n\t&__cell {\n\t\tborder-bottom: 1px solid var(--color-border);\n\n\t\t:deep {\n\t\t\t.v-select.select {\n\t\t\t\tmin-width: var(--cell-min-width);\n\t\t\t}\n\t\t}\n\t}\n\n\t&__progress {\n\t\tmargin-top: 4px;\n\n\t\t&--warn {\n\t\t\t&::-moz-progress-bar {\n\t\t\t\tbackground: var(--color-warning) !important;\n\t\t\t}\n\t\t\t&::-webkit-progress-value {\n\t\t\t\tbackground: var(--color-warning) !important;\n\t\t\t}\n\t\t}\n\t}\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n@mixin row {\n\tposition: relative;\n\tdisplay: flex;\n\tmin-width: 100%;\n\twidth: fit-content;\n\theight: var(--row-height);\n\tbackground-color: var(--color-main-background);\n}\n\n@mixin cell {\n\t&__cell {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\tpadding: 0 var(--cell-padding);\n\t\tmin-width: var(--cell-width);\n\t\twidth: var(--cell-width);\n\t\tcolor: var(--color-main-text);\n\n\t\tstrong,\n\t\tspan,\n\t\tlabel {\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\t\t\toverflow-wrap: anywhere;\n\t\t}\n\n\t\t@media (min-width: 670px) { /* Show one &--large column between stickied columns */\n\t\t\t&--avatar,\n\t\t\t&--displayname {\n\t\t\t\tposition: sticky;\n\t\t\t\tz-index: var(--sticky-column-z-index);\n\t\t\t\tbackground-color: var(--color-main-background);\n\t\t\t}\n\n\t\t\t&--avatar {\n\t\t\t\tinset-inline-start: 0;\n\t\t\t}\n\n\t\t\t&--displayname {\n\t\t\t\tinset-inline-start: var(--avatar-cell-width);\n\t\t\t\tborder-inline-end: 1px solid var(--color-border);\n\t\t\t}\n\t\t}\n\n\t\t&--username {\n\t\t\tpadding-inline-start: calc(var(--default-grid-baseline) * 3);\n\t\t}\n\n\t\t&--avatar {\n\t\t\tmin-width: var(--avatar-cell-width);\n\t\t\twidth: var(--avatar-cell-width);\n\t\t\talign-items: center;\n\t\t\tpadding: 0;\n\t\t\tuser-select: none;\n\t\t}\n\n\t\t&--multiline {\n\t\t\tspan {\n\t\t\t\tline-height: 1.3em;\n\t\t\t\twhite-space: unset;\n\n\t\t\t\t@supports (-webkit-line-clamp: 2) {\n\t\t\t\t\tdisplay: -webkit-box;\n\t\t\t\t\t-webkit-line-clamp: 2;\n\t\t\t\t\t-webkit-box-orient: vertical;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&--large {\n\t\t\tmin-width: var(--cell-width-large);\n\t\t\twidth: var(--cell-width-large);\n\t\t}\n\n\t\t&--obfuscated {\n\t\t\tmin-width: 400px;\n\t\t\twidth: 400px;\n\t\t}\n\n\t\t// Fill remaining row space with cell\n\t\t&--fill {\n\t\t\tmin-width: var(--cell-width-large);\n\t\t\twidth: 100%;\n\t\t}\n\n\t\t&--actions {\n\t\t\tposition: sticky;\n\t\t\tinset-inline-end: 0;\n\t\t\tz-index: var(--sticky-column-z-index);\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: row;\n\t\t\talign-items: center;\n\t\t\tmin-width: 110px;\n\t\t\twidth: 110px;\n\t\t\tbackground-color: var(--color-main-background);\n\t\t\tborder-inline-start: 1px solid var(--color-border);\n\t\t}\n\t}\n\n\t&__subtitle {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n}\n"],sourceRoot:""}]);const o=r},12795:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),i=s.n(a),n=s(76314),r=s.n(n)()(i());r.push([t.id,".user-list[data-v-21942da5]{--avatar-cell-width: 48px;--cell-padding: 7px;--cell-width: 200px;--cell-width-large: 300px;--cell-min-width: calc(var(--cell-width) - (2 * var(--cell-padding)));--sticky-column-z-index: calc(var(--vs-dropdown-z-index) + 1);display:block;overflow:auto;height:100%;will-change:scroll-position}.user-list__header[data-v-21942da5],.user-list__footer[data-v-21942da5]{position:sticky;display:block}.user-list__header[data-v-21942da5]{top:0;z-index:calc(var(--sticky-column-z-index) + 1)}.user-list__footer[data-v-21942da5]{inset-inline-start:0}.user-list__body[data-v-21942da5]{display:flex;flex-direction:column;width:100%}","",{version:3,sources:["webpack://./apps/settings/src/components/Users/VirtualList.vue"],names:[],mappings:"AACA,4BACC,yBAAA,CACA,mBAAA,CACA,mBAAA,CACA,yBAAA,CACA,qEAAA,CACA,6DAAA,CAGA,aAAA,CACA,aAAA,CACA,WAAA,CACA,2BAAA,CAEA,wEAEC,eAAA,CAEA,aAAA,CAGD,oCACC,KAAA,CACA,8CAAA,CAGD,oCACC,oBAAA,CAGD,kCACC,YAAA,CACA,qBAAA,CACA,UAAA",sourcesContent:["\n.user-list {\n\t--avatar-cell-width: 48px;\n\t--cell-padding: 7px;\n\t--cell-width: 200px;\n\t--cell-width-large: 300px;\n\t--cell-min-width: calc(var(--cell-width) - (2 * var(--cell-padding)));\n\t--sticky-column-z-index: calc(var(--vs-dropdown-z-index) + 1); // Keep the sticky column on top of the select dropdown\n\n\t// Necessary for virtual scroll optimized rendering\n\tdisplay: block;\n\toverflow: auto;\n\theight: 100%;\n\twill-change: scroll-position;\n\n\t&__header,\n\t&__footer {\n\t\tposition: sticky;\n\t\t// Fix sticky positioning in Firefox\n\t\tdisplay: block;\n\t}\n\n\t&__header {\n\t\ttop: 0;\n\t\tz-index: calc(var(--sticky-column-z-index) + 1);\n\t}\n\n\t&__footer {\n\t\tinset-inline-start: 0;\n\t}\n\n\t&__body {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\twidth: 100%;\n\t}\n}\n"],sourceRoot:""}]);const o=r},24882:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),i=s.n(a),n=s(76314),r=s.n(n)()(i());r.push([t.id,".header[data-v-5c0f8828]{border-bottom:1px solid var(--color-border);position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background)}.header__cell[data-v-5c0f8828]{display:flex;flex-direction:column;justify-content:center;padding:0 var(--cell-padding);min-width:var(--cell-width);width:var(--cell-width);color:var(--color-main-text)}.header__cell strong[data-v-5c0f8828],.header__cell span[data-v-5c0f8828],.header__cell label[data-v-5c0f8828]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.header__cell--avatar[data-v-5c0f8828],.header__cell--displayname[data-v-5c0f8828]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.header__cell--avatar[data-v-5c0f8828]{inset-inline-start:0}.header__cell--displayname[data-v-5c0f8828]{inset-inline-start:var(--avatar-cell-width);border-inline-end:1px solid var(--color-border)}}.header__cell--username[data-v-5c0f8828]{padding-inline-start:calc(var(--default-grid-baseline)*3)}.header__cell--avatar[data-v-5c0f8828]{min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0;user-select:none}.header__cell--multiline span[data-v-5c0f8828]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.header__cell--multiline span[data-v-5c0f8828]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.header__cell--large[data-v-5c0f8828]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.header__cell--obfuscated[data-v-5c0f8828]{min-width:400px;width:400px}.header__cell--fill[data-v-5c0f8828]{min-width:var(--cell-width-large);width:100%}.header__cell--actions[data-v-5c0f8828]{position:sticky;inset-inline-end:0;z-index:var(--sticky-column-z-index);display:flex;flex-direction:row;align-items:center;min-width:110px;width:110px;background-color:var(--color-main-background);border-inline-start:1px solid var(--color-border)}.header__subtitle[data-v-5c0f8828]{color:var(--color-text-maxcontrast)}","",{version:3,sources:["webpack://./apps/settings/src/components/Users/UserListHeader.vue","webpack://./apps/settings/src/components/Users/shared/styles.scss"],names:[],mappings:"AAGA,yBACC,2CAAA,CCEA,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CAIA,+BACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,6BAAA,CACA,2BAAA,CACA,uBAAA,CACA,4BAAA,CAEA,+GAGC,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CAGD,yBACC,mFAEC,eAAA,CACA,oCAAA,CACA,6CAAA,CAGD,uCACC,oBAAA,CAGD,4CACC,2CAAA,CACA,+CAAA,CAAA,CAIF,yCACC,yDAAA,CAGD,uCACC,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CACA,gBAAA,CAIA,+CACC,iBAAA,CACA,iBAAA,CAEA,iCAJD,+CAKE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,sCACC,iCAAA,CACA,6BAAA,CAGD,2CACC,eAAA,CACA,WAAA,CAID,qCACC,iCAAA,CACA,UAAA,CAGD,wCACC,eAAA,CACA,kBAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,iDAAA,CAIF,mCACC,mCAAA",sourcesContent:["\n@use './shared/styles';\n\n.header {\n\tborder-bottom: 1px solid var(--color-border);\n\n\t@include styles.row;\n\t@include styles.cell;\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n@mixin row {\n\tposition: relative;\n\tdisplay: flex;\n\tmin-width: 100%;\n\twidth: fit-content;\n\theight: var(--row-height);\n\tbackground-color: var(--color-main-background);\n}\n\n@mixin cell {\n\t&__cell {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\tpadding: 0 var(--cell-padding);\n\t\tmin-width: var(--cell-width);\n\t\twidth: var(--cell-width);\n\t\tcolor: var(--color-main-text);\n\n\t\tstrong,\n\t\tspan,\n\t\tlabel {\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\t\t\toverflow-wrap: anywhere;\n\t\t}\n\n\t\t@media (min-width: 670px) { /* Show one &--large column between stickied columns */\n\t\t\t&--avatar,\n\t\t\t&--displayname {\n\t\t\t\tposition: sticky;\n\t\t\t\tz-index: var(--sticky-column-z-index);\n\t\t\t\tbackground-color: var(--color-main-background);\n\t\t\t}\n\n\t\t\t&--avatar {\n\t\t\t\tinset-inline-start: 0;\n\t\t\t}\n\n\t\t\t&--displayname {\n\t\t\t\tinset-inline-start: var(--avatar-cell-width);\n\t\t\t\tborder-inline-end: 1px solid var(--color-border);\n\t\t\t}\n\t\t}\n\n\t\t&--username {\n\t\t\tpadding-inline-start: calc(var(--default-grid-baseline) * 3);\n\t\t}\n\n\t\t&--avatar {\n\t\t\tmin-width: var(--avatar-cell-width);\n\t\t\twidth: var(--avatar-cell-width);\n\t\t\talign-items: center;\n\t\t\tpadding: 0;\n\t\t\tuser-select: none;\n\t\t}\n\n\t\t&--multiline {\n\t\t\tspan {\n\t\t\t\tline-height: 1.3em;\n\t\t\t\twhite-space: unset;\n\n\t\t\t\t@supports (-webkit-line-clamp: 2) {\n\t\t\t\t\tdisplay: -webkit-box;\n\t\t\t\t\t-webkit-line-clamp: 2;\n\t\t\t\t\t-webkit-box-orient: vertical;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&--large {\n\t\t\tmin-width: var(--cell-width-large);\n\t\t\twidth: var(--cell-width-large);\n\t\t}\n\n\t\t&--obfuscated {\n\t\t\tmin-width: 400px;\n\t\t\twidth: 400px;\n\t\t}\n\n\t\t// Fill remaining row space with cell\n\t\t&--fill {\n\t\t\tmin-width: var(--cell-width-large);\n\t\t\twidth: 100%;\n\t\t}\n\n\t\t&--actions {\n\t\t\tposition: sticky;\n\t\t\tinset-inline-end: 0;\n\t\t\tz-index: var(--sticky-column-z-index);\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: row;\n\t\t\talign-items: center;\n\t\t\tmin-width: 110px;\n\t\t\twidth: 110px;\n\t\t\tbackground-color: var(--color-main-background);\n\t\t\tborder-inline-start: 1px solid var(--color-border);\n\t\t}\n\t}\n\n\t&__subtitle {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n}\n"],sourceRoot:""}]);const o=r},27514:t=>{t.exports="data:image/svg+xml,%3c%21--%20-%20SPDX-FileCopyrightText:%202020%20Google%20Inc.%20-%20SPDX-License-Identifier:%20Apache-2.0%20--%3e%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M18.4%207.4L17%206l-6%206%206%206%201.4-1.4-4.6-4.6%204.6-4.6m-6%200L11%206l-6%206%206%206%201.4-1.4L7.8%2012l4.6-4.6z%27/%3e%3c/svg%3e"},27518:t=>{t.exports="data:image/svg+xml,%3c%21--%20-%20SPDX-FileCopyrightText:%202020%20Google%20Inc.%20-%20SPDX-License-Identifier:%20Apache-2.0%20--%3e%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M15.4%2016.6L10.8%2012l4.6-4.6L14%206l-6%206%206%206%201.4-1.4z%27/%3e%3c/svg%3e"},46984:(t,e,s)=>{s.d(e,{FF:()=>d,Iu:()=>l,N_:()=>o});var a=s(65043),i=s(63814),n=s(36117);const r=t=>({id:t.id,name:t.displayname,usercount:t.usercount,disabled:t.disabled,canAdd:t.canAdd,canRemove:t.canRemove}),o=t=>{let{search:e,offset:s,limit:o}=t;const l=new AbortController;return new n.CancelablePromise((async(t,n,d)=>{d((()=>l.abort()));try{const{data:n}=await a.Ay.get((0,i.KT)("/cloud/groups/details?search={search}&offset={offset}&limit={limit}",{search:e,offset:s,limit:o}),{signal:l.signal});t((n.ocs?.data?.groups??[]).map(r))}catch(t){n(t)}}))},l=async t=>{let{userId:e}=t;const s=(0,i.KT)("/cloud/users/{userId}/groups/details",{userId:e}),{data:n}=await a.Ay.get(s);return(n.ocs?.data?.groups??[]).map(r)},d=async t=>{let{userId:e}=t;const s=(0,i.KT)("/cloud/users/{userId}/subadmins/details",{userId:e}),{data:n}=await a.Ay.get(s);return(n.ocs?.data?.groups??[]).map(r)}},49977:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),i=s.n(a),n=s(76314),r=s.n(n)()(i());r.push([t.id,".account-management__navigation[data-v-edf83404] .app-navigation__body{will-change:scroll-position}.account-management__system-list[data-v-edf83404]{height:auto !important;overflow:visible !important}.account-management__group-list[data-v-edf83404]{height:100% !important}.account-management__settings-toggle[data-v-edf83404]{margin-bottom:12px}","",{version:3,sources:["webpack://./apps/settings/src/views/UserManagementNavigation.vue"],names:[],mappings:"AAGE,uEACC,2BAAA,CAGF,kDACC,sBAAA,CACA,2BAAA,CAGD,iDACC,sBAAA,CAGD,sDACC,kBAAA",sourcesContent:["\n.account-management {\n\t&__navigation {\n\t\t:deep(.app-navigation__body) {\n\t\t\twill-change: scroll-position;\n\t\t}\n\t}\n\t&__system-list {\n\t\theight: auto !important;\n\t\toverflow: visible !important;\n\t}\n\n\t&__group-list {\n\t\theight: 100% !important;\n\t}\n\n\t&__settings-toggle {\n\t\tmargin-bottom: 12px;\n\t}\n}\n"],sourceRoot:""}]);const o=r},50540:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),i=s.n(a),n=s(76314),r=s.n(n)()(i());r.push([t.id,".dialog__form[data-v-70bbf4c9]{display:flex;flex-direction:column;align-items:center;padding:0 8px;gap:4px 0}.dialog__item[data-v-70bbf4c9]{width:100%}.dialog__item[data-v-70bbf4c9]:not(:focus):not(:active){border-color:var(--color-border-dark)}.dialog__hint[data-v-70bbf4c9]{color:var(--color-text-maxcontrast);margin-top:8px;align-self:flex-start}.dialog__label[data-v-70bbf4c9]{display:block;padding:4px 0}.dialog__select[data-v-70bbf4c9]{width:100%}.dialog__managers[data-v-70bbf4c9]{margin-bottom:12px}.dialog__submit[data-v-70bbf4c9]{margin-top:4px;margin-bottom:8px}.dialog[data-v-70bbf4c9] .dialog__actions{margin:auto}","",{version:3,sources:["webpack://./apps/settings/src/components/Users/NewUserDialog.vue"],names:[],mappings:"AAEC,+BACC,YAAA,CACA,qBAAA,CACA,kBAAA,CACA,aAAA,CACA,SAAA,CAGD,+BACC,UAAA,CAEA,wDACC,qCAAA,CAIF,+BACC,mCAAA,CACA,cAAA,CACA,qBAAA,CAGD,gCACC,aAAA,CACA,aAAA,CAGD,iCACC,UAAA,CAGD,mCACC,kBAAA,CAGD,iCACC,cAAA,CACA,iBAAA,CAIA,0CACC,WAAA",sourcesContent:["\n.dialog {\n\t&__form {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t\tpadding: 0 8px;\n\t\tgap: 4px 0;\n\t}\n\n\t&__item {\n\t\twidth: 100%;\n\n\t\t&:not(:focus):not(:active) {\n\t\t\tborder-color: var(--color-border-dark);\n\t\t}\n\t}\n\n\t&__hint {\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tmargin-top: 8px;\n\t\talign-self: flex-start;\n\t}\n\n\t&__label {\n\t\tdisplay: block;\n\t\tpadding: 4px 0;\n\t}\n\n\t&__select {\n\t\twidth: 100%;\n\t}\n\n\t&__managers {\n\t\tmargin-bottom: 12px;\n\t}\n\n\t&__submit {\n\t\tmargin-top: 4px;\n\t\tmargin-bottom: 8px;\n\t}\n\n\t:deep {\n\t\t.dialog__actions {\n\t\t\tmargin: auto;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const o=r},51285:(e,s,a)=>{a.r(s),a.d(s,{default:()=>ht});var i=a(85471),n=a(9165),r=a(53334),o=a(42530),l=a(52439),d=a(27345),c=a(85865),u=a(97012),g=a(85947),A=a(6695),p=a(35810),h=a(63814),m=a(65043),v=a(24784),C=a(14727),w=a(32073),_=a(40083),f=a(67607),b=a(15916),y=a(95668),x=a(36620);const N={name:"UserSettingsDialog",components:{NcAppSettingsDialog:v.N,NcAppSettingsSection:C.A,NcCheckboxRadioSwitch:w.A,NcNoteCard:_.A,NcSelect:f.A},props:{open:{type:Boolean,required:!0}},data:()=>({selectedQuota:!1,loadingSendMail:!1}),computed:{groupSorting:{get(){return this.$store.getters.getGroupSorting===b.q.GroupName?"name":"member-count"},set(t){this.$store.commit("setGroupSorting","name"===t?b.q.GroupName:b.q.UserCount)}},isGroupSortingEnforced(){return this.$store.getters.getServerData.forceSortGroupByName},isModalOpen:{get(){return this.open},set(t){this.$emit("update:open",t)}},showConfig(){return this.$store.getters.getShowConfig},settings(){return this.$store.getters.getServerData},showLanguages:{get(){return this.showConfig.showLanguages},set(t){this.setShowConfig("showLanguages",t)}},showFirstLogin:{get(){return this.showConfig.showFirstLogin},set(t){this.setShowConfig("showFirstLogin",t)}},showLastLogin:{get(){return this.showConfig.showLastLogin},set(t){this.setShowConfig("showLastLogin",t)}},showUserBackend:{get(){return this.showConfig.showUserBackend},set(t){this.setShowConfig("showUserBackend",t)}},showStoragePath:{get(){return this.showConfig.showStoragePath},set(t){this.setShowConfig("showStoragePath",t)}},quotaOptions(){const t=this.settings.quotaPreset.reduce(((t,e)=>t.concat({id:e,label:e})),[]);return this.settings.allowUnlimitedQuota&&t.unshift(y.SA),t},defaultQuota:{get(){return!1!==this.selectedQuota?this.selectedQuota:this.settings.defaultQuota!==y.SA.id&&OC.Util.computerFileSize(this.settings.defaultQuota)>=0?{id:this.settings.defaultQuota,label:this.settings.defaultQuota}:y.SA},set(t){this.selectedQuota=t}},sendWelcomeMail:{get(){return this.settings.newUserSendEmail},async set(t){try{this.loadingSendMail=!0,this.$store.commit("setServerData",{...this.settings,newUserSendEmail:t}),await m.Ay.post((0,h.Jv)("/settings/users/preferences/newUser.sendEmail"),{value:t?"yes":"no"})}catch(t){x.A.error("Could not update newUser.sendEmail preference",{error:t})}finally{this.loadingSendMail=!1}}}},methods:{filterQuotas(t,e,s){const a=s.toLocaleLowerCase().replaceAll(/\s/g,"");return(e||"").toLocaleLowerCase().replaceAll(/\s/g,"").indexOf(a)>-1},setShowConfig(t,e){this.$store.commit("setShowConfig",{key:t,value:e})},validateQuota(t){"object"==typeof t&&(t=t?.id||t.label);const e=(0,p.lT)(t,!0);return null===e?y.SA:{id:t=(0,p.v7)(e),label:t}},setDefaultQuota(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"none";"none"===t&&(t=y.SA),this.$store.dispatch("setAppConfig",{app:"files",key:"default_quota",value:t.id?t.id:t}).then((()=>{"object"!=typeof t&&(t={id:t,label:t}),this.defaultQuota=t}))}}};var k=a(85072),S=a.n(k),G=a(97825),U=a.n(G),L=a(77659),D=a.n(L),B=a(55056),I=a.n(B),q=a(10540),O=a.n(q),M=a(41113),F=a.n(M),$=a(6817),T={};T.styleTagTransform=F(),T.setAttributes=I(),T.insert=D().bind(null,"head"),T.domAPI=U(),T.insertStyleElement=O(),S()($.A,T),$.A&&$.A.locals&&$.A.locals;var E=a(14486);const P=(0,E.A)(N,(function(){var t=this,e=t._self._c;return e("NcAppSettingsDialog",{attrs:{open:t.isModalOpen,"show-navigation":!0,name:t.t("settings","Account management settings")},on:{"update:open":function(e){t.isModalOpen=e}}},[e("NcAppSettingsSection",{attrs:{id:"visibility-settings",name:t.t("settings","Visibility")}},[e("NcCheckboxRadioSwitch",{attrs:{type:"switch","data-test":"showLanguages",checked:t.showLanguages},on:{"update:checked":function(e){t.showLanguages=e}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Show language"))+"\n\t\t")]),t._v(" "),e("NcCheckboxRadioSwitch",{attrs:{type:"switch","data-test":"showUserBackend",checked:t.showUserBackend},on:{"update:checked":function(e){t.showUserBackend=e}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Show account backend"))+"\n\t\t")]),t._v(" "),e("NcCheckboxRadioSwitch",{attrs:{type:"switch","data-test":"showStoragePath",checked:t.showStoragePath},on:{"update:checked":function(e){t.showStoragePath=e}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Show storage path"))+"\n\t\t")]),t._v(" "),e("NcCheckboxRadioSwitch",{attrs:{type:"switch","data-test":"showFirstLogin",checked:t.showFirstLogin},on:{"update:checked":function(e){t.showFirstLogin=e}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Show first login"))+"\n\t\t")]),t._v(" "),e("NcCheckboxRadioSwitch",{attrs:{type:"switch","data-test":"showLastLogin",checked:t.showLastLogin},on:{"update:checked":function(e){t.showLastLogin=e}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Show last login"))+"\n\t\t")])],1),t._v(" "),e("NcAppSettingsSection",{attrs:{id:"groups-sorting",name:t.t("settings","Sorting")}},[t.isGroupSortingEnforced?e("NcNoteCard",{attrs:{type:"warning"}},[t._v("\n\t\t\t"+t._s(t.t("settings","The system config enforces sorting the groups by name. This also disables showing the member count."))+"\n\t\t")]):t._e(),t._v(" "),e("fieldset",[e("legend",[t._v(t._s(t.t("settings","Group list sorting")))]),t._v(" "),e("NcNoteCard",{staticClass:"dialog__note",attrs:{type:"info",text:t.t("settings","Sorting only applies to the currently loaded groups for performance reasons. Groups will be loaded as you navigate or search through the list.")}}),t._v(" "),e("NcCheckboxRadioSwitch",{attrs:{type:"radio",checked:t.groupSorting,"data-test":"sortGroupsByMemberCount",disabled:t.isGroupSortingEnforced,name:"group-sorting-mode",value:"member-count"},on:{"update:checked":function(e){t.groupSorting=e}}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","By member count"))+"\n\t\t\t")]),t._v(" "),e("NcCheckboxRadioSwitch",{attrs:{type:"radio",checked:t.groupSorting,"data-test":"sortGroupsByName",disabled:t.isGroupSortingEnforced,name:"group-sorting-mode",value:"name"},on:{"update:checked":function(e){t.groupSorting=e}}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","By name"))+"\n\t\t\t")])],1)],1),t._v(" "),e("NcAppSettingsSection",{attrs:{id:"email-settings",name:t.t("settings","Send email")}},[e("NcCheckboxRadioSwitch",{attrs:{type:"switch","data-test":"sendWelcomeMail",checked:t.sendWelcomeMail,disabled:t.loadingSendMail},on:{"update:checked":function(e){t.sendWelcomeMail=e}}},[t._v("\n\t\t\t"+t._s(t.t("settings","Send welcome email to new accounts"))+"\n\t\t")])],1),t._v(" "),e("NcAppSettingsSection",{attrs:{id:"default-settings",name:t.t("settings","Defaults")}},[e("NcSelect",{attrs:{clearable:!1,"create-option":t.validateQuota,"filter-by":t.filterQuotas,"input-label":t.t("settings","Default quota"),options:t.quotaOptions,placement:"top",placeholder:t.t("settings","Select default quota"),taggable:""},on:{"option:selected":t.setDefaultQuota},model:{value:t.defaultQuota,callback:function(e){t.defaultQuota=e},expression:"defaultQuota"}})],1)],1)}),[],!1,null,"9f7a355c",null).exports;var z=a(85168),R=a(13073),Q=a(54914),W=a(24387),H=a(44131),K=a(71418),j=a(14363),Y=a(94174),X=a(59892),V=a(57505),J=a(69496),Z=a(43261),tt=a(79759),et=a(2413);const st={name:"GroupListItem",components:{AccountGroup:Z.A,Delete:tt.A,Fragment:Q.F,NcActionButton:V.A,NcActionInput:H.A,NcAppNavigationItem:l.A,NcButton:u.A,NcCounterBubble:g.A,NcModal:J.A,NcNoteCard:_.A,Pencil:et.A},props:{active:{type:Boolean,required:!0},count:{type:Number,default:null},id:{type:String,required:!0},name:{type:String,required:!0}},data:()=>({loadingRenameGroup:!1,openGroupMenu:!1,showRemoveGroupModal:!1}),computed:{settings(){return this.$store.getters.getServerData}},methods:{handleGroupMenuOpen(){this.openGroupMenu=!0},async renameGroup(t){if(""===t.trim())return;const e=this.$refs.displayNameInput.$el.querySelector('input[type="text"]').value;if(""!==e.trim())try{this.openGroupMenu=!1,this.loadingRenameGroup=!0,await this.$store.dispatch("renameGroup",{groupid:t.trim(),displayName:e.trim()}),this.loadingRenameGroup=!1}catch{this.openGroupMenu=!0,this.loadingRenameGroup=!1}},async removeGroup(){try{await this.$store.dispatch("removeGroup",this.id),this.showRemoveGroupModal=!1}catch(e){(0,z.Qg)(t("settings",'Failed to remove group "{group}"',{group:this.name}))}}}};var at=a(79496),it={};it.styleTagTransform=F(),it.setAttributes=I(),it.insert=D().bind(null,"head"),it.domAPI=U(),it.insertStyleElement=O(),S()(at.A,it),at.A&&at.A.locals&&at.A.locals;const nt=(0,E.A)(st,(function(){var t=this,e=t._self._c;return e("Fragment",[t.showRemoveGroupModal?e("NcModal",{on:{close:function(e){t.showRemoveGroupModal=!1}}},[e("div",{staticClass:"modal__content"},[e("h2",{staticClass:"modal__header"},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Please confirm the group removal"))+"\n\t\t\t")]),t._v(" "),e("NcNoteCard",{attrs:{type:"warning","show-alert":""}},[t._v("\n\t\t\t\t"+t._s(t.t("settings",'You are about to remove the group "{group}". The accounts will NOT be deleted.',{group:t.name}))+"\n\t\t\t")]),t._v(" "),e("div",{staticClass:"modal__button-row"},[e("NcButton",{attrs:{type:"secondary"},on:{click:function(e){t.showRemoveGroupModal=!1}}},[t._v("\n\t\t\t\t\t"+t._s(t.t("settings","Cancel"))+"\n\t\t\t\t")]),t._v(" "),e("NcButton",{attrs:{type:"primary"},on:{click:t.removeGroup}},[t._v("\n\t\t\t\t\t"+t._s(t.t("settings","Confirm"))+"\n\t\t\t\t")])],1)],1)]):t._e(),t._v(" "),e("NcAppNavigationItem",{key:t.id,ref:"listItem",attrs:{exact:!0,name:t.name,to:{name:"group",params:{selectedGroup:encodeURIComponent(t.id)}},loading:t.loadingRenameGroup,"menu-open":t.openGroupMenu},on:{"update:menuOpen":t.handleGroupMenuOpen},scopedSlots:t._u([{key:"icon",fn:function(){return[e("AccountGroup",{attrs:{size:20}})]},proxy:!0},{key:"counter",fn:function(){return[t.count?e("NcCounterBubble",{attrs:{type:t.active?"highlighted":void 0}},[t._v("\n\t\t\t\t"+t._s(t.count)+"\n\t\t\t")]):t._e()]},proxy:!0},{key:"actions",fn:function(){return["admin"!==t.id&&"disabled"!==t.id&&(t.settings.isAdmin||t.settings.isDelegatedAdmin)?e("NcActionInput",{ref:"displayNameInput",attrs:{"trailing-button-label":t.t("settings","Submit"),type:"text",value:t.name,label:t.t("settings","Rename group")},on:{submit:function(e){return t.renameGroup(t.id)}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Pencil",{attrs:{size:20}})]},proxy:!0}],null,!1,580569589)}):t._e(),t._v(" "),"admin"!==t.id&&"disabled"!==t.id&&(t.settings.isAdmin||t.settings.isDelegatedAdmin)?e("NcActionButton",{on:{click:function(e){t.showRemoveGroupModal=!0}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Delete",{attrs:{size:20}})]},proxy:!0}],null,!1,2705356561)},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Remove group"))+"\n\t\t\t")]):t._e()]},proxy:!0}])})],1)}),[],!1,null,"161509be",null).exports;function rt(t){return void 0===t?null:{id:t.id,title:t.name,usercount:t.usercount,count:Math.max(0,t.usercount-t.disabled)}}const ot=t=>{const e=(0,i.EW)((()=>t.value.filter((t=>"disabled"!==t.id&&"__nc_internal_recent"!==t.id&&"admin"!==t.id)).map((t=>rt(t))).filter((t=>null!==t)))),s=(0,i.EW)((()=>rt(t.value.find((t=>"admin"===t.id))))),a=(0,i.EW)((()=>rt(t.value.find((t=>"disabled"===t.id)))));return{adminGroup:s,recentGroup:(0,i.EW)((()=>rt(t.value.find((t=>"__nc_internal_recent"===t.id))))),disabledGroup:a,userGroups:e}};var lt=a(14744),dt=a(46984);const ct=(0,i.pM)({__name:"AppNavigationGroupList",setup(t){const e=(0,lt.P)(),s=(0,W.lq)(),a=(0,W.rd)();(0,i.KC)((async()=>{await S()}));const o=(0,i.EW)((()=>s.params?.selectedGroup)),l=(0,i.EW)((()=>o.value?decodeURIComponent(o.value):null)),c=(0,i.EW)((()=>e.getters.getSortedGroups)),{userGroups:u}=ot(c),g=(0,i.EW)((()=>e.getters.getServerData)),p=(0,i.EW)((()=>g.value.isAdmin||g.value.isDelegatedAdmin)),h=(0,i.KR)(!1),m=(0,i.KR)(!1),v=(0,i.KR)(!1),C=(0,i.KR)(""),w=(0,i.KR)(!1),_=(0,i.KR)(0),f=(0,i.KR)(""),b=(0,i.KR)([]),y=(0,i.EW)((()=>b.value.findLast((t=>t?.$vnode?.key===u.value?.at(-1)?.id))?.$refs?.listItem?.$el)),N=(0,R.ITo)(y);(0,i.wB)(N,(async()=>{N.value&&await S()})),(0,i.wB)(f,(async()=>{e.commit("resetGroups"),_.value=0,await S()}));const k=(0,i.KR)();async function S(){if(p.value){k.value&&k.value.cancel(),w.value=!0;try{k.value=(0,dt.N_)({search:f.value,offset:_.value,limit:25});const t=await k.value;t.length>0&&(_.value+=25);for(const s of t)e.commit("addGroup",s)}catch(t){x.A.error((0,r.t)("settings","Failed to load groups"),{error:t})}k.value=void 0,w.value=!1}}return{__sfc:!0,store:e,route:s,router:a,selectedGroup:o,selectedGroupDecoded:l,groups:c,userGroups:u,settings:g,isAdminOrDelegatedAdmin:p,isAddGroupOpen:h,loadingAddGroup:m,hasAddGroupError:v,newGroupName:C,loadingGroups:w,offset:_,groupsSearchQuery:f,groupListItems:b,lastGroupListItem:y,isLastGroupVisible:N,promise:k,loadGroups:S,createGroup:async function(){v.value=!1;const t=C.value.trim();if(""!==t){h.value=!1,m.value=!0;try{await e.dispatch("addGroup",t),await a.push({name:"group",params:{selectedGroup:encodeURIComponent(t)}});const s=b.value.findLast((e=>e?.$vnode?.key===t));s?.$refs?.listItem?.$el?.scrollIntoView({behavior:"smooth",block:"nearest"}),C.value=""}catch{(0,z.Qg)((0,r.t)("settings","Failed to create group"))}m.value=!1}else v.value=!0},mdiAccountGroup:n.n7C,mdiPlus:n.biz,t:r.t,Fragment:Q.F,NcActionInput:H.A,NcActionText:K.A,NcAppNavigationCaption:j.N,NcAppNavigationList:d.A,NcAppNavigationSearch:Y.N,NcIconSvgWrapper:A.A,NcLoadingIcon:X.A,GroupListItem:nt}}}),ut=(0,E.A)(ct,(function(){var t=this,e=t._self._c,s=t._self._setupProxy;return e(s.Fragment,[e(s.NcAppNavigationCaption,{attrs:{name:s.t("settings","Groups"),disabled:s.loadingAddGroup,"aria-label":s.loadingAddGroup?s.t("settings","Creating group…"):s.t("settings","Create group"),"force-menu":"","is-heading":"",open:s.isAddGroupOpen},on:{"update:open":function(t){s.isAddGroupOpen=t}},scopedSlots:t._u([s.isAdminOrDelegatedAdmin?{key:"actionsTriggerIcon",fn:function(){return[s.loadingAddGroup?e(s.NcLoadingIcon):e(s.NcIconSvgWrapper,{attrs:{path:s.mdiPlus}})]},proxy:!0}:null,s.isAdminOrDelegatedAdmin?{key:"actions",fn:function(){return[e(s.NcActionText,{scopedSlots:t._u([{key:"icon",fn:function(){return[e(s.NcIconSvgWrapper,{attrs:{path:s.mdiAccountGroup}})]},proxy:!0}],null,!1,3607647275)},[t._v("\n\t\t\t\t"+t._s(s.t("settings","Create group"))+"\n\t\t\t")]),t._v(" "),e(s.NcActionInput,{attrs:{label:s.t("settings","Group name"),"data-cy-users-settings-new-group-name":"","label-outside":!1,disabled:s.loadingAddGroup,value:s.newGroupName,error:s.hasAddGroupError,"helper-text":s.hasAddGroupError?s.t("settings","Please enter a valid group name"):""},on:{"update:value":function(t){s.newGroupName=t},submit:s.createGroup}})]},proxy:!0}:null],null,!0)}),t._v(" "),e(s.NcAppNavigationSearch,{attrs:{label:s.t("settings","Search groups…")},model:{value:s.groupsSearchQuery,callback:function(t){s.groupsSearchQuery=t},expression:"groupsSearchQuery"}}),t._v(" "),e("p",{staticClass:"hidden-visually",attrs:{id:"group-list-desc"}},[t._v("\n\t\t"+t._s(s.t("settings","List of groups. This list is not fully populated for performance reasons. The groups will be loaded as you navigate or search through the list."))+"\n\t")]),t._v(" "),e(s.NcAppNavigationList,{staticClass:"account-management__group-list",attrs:{"aria-describedby":"group-list-desc","data-cy-users-settings-navigation-groups":"custom"}},[t._l(s.userGroups,(function(t){return e(s.GroupListItem,{key:t.id,ref:"groupListItems",refInFor:!0,attrs:{id:t.id,active:s.selectedGroupDecoded===t.id,name:t.title,count:t.count}})})),t._v(" "),s.loadingGroups?e("div",{attrs:{role:"note"}},[e(s.NcLoadingIcon,{attrs:{name:s.t("settings","Loading groups…")}})],1):t._e()],2)],1)}),[],!1,null,null,null).exports,gt=(0,i.pM)({__name:"UserManagementNavigation",setup(t){const e=(0,W.lq)(),s=(0,lt.P)(),a=(0,i.KR)(!1),p=(0,i.EW)((()=>e.params?.selectedGroup)),h=(0,i.EW)((()=>p.value?decodeURIComponent(p.value):null)),m=(0,i.EW)((()=>s.getters.getUserCount)),v=(0,i.EW)((()=>s.getters.getSortedGroups)),{adminGroup:C,recentGroup:w,disabledGroup:_}=ot(v),f=(0,i.EW)((()=>s.getters.getServerData)),b=(0,i.EW)((()=>f.value.isAdmin||f.value.isDelegatedAdmin));return{__sfc:!0,route:e,store:s,isDialogOpen:a,selectedGroup:p,selectedGroupDecoded:h,userCount:m,groups:v,adminGroup:C,recentGroup:w,disabledGroup:_,settings:f,isAdminOrDelegatedAdmin:b,showNewUserMenu:function(){s.commit("setShowConfig",{key:"showNewUserForm",value:!0})},mdiAccount:n.Gbn,mdiAccountOff:n.lBC,mdiCog:n.CZ3,mdiPlus:n.biz,mdiShieldAccount:n.Jey,mdiHistory:n.LP2,t:r.Tl,NcAppNavigation:o.A,NcAppNavigationItem:l.A,NcAppNavigationList:d.A,NcAppNavigationNew:c.A,NcButton:u.A,NcCounterBubble:g.A,NcIconSvgWrapper:A.A,UserSettingsDialog:P,AppNavigationGroupList:ut}}});var At=a(49977),pt={};pt.styleTagTransform=F(),pt.setAttributes=I(),pt.insert=D().bind(null,"head"),pt.domAPI=U(),pt.insertStyleElement=O(),S()(At.A,pt),At.A&&At.A.locals&&At.A.locals;const ht=(0,E.A)(gt,(function(){var t=this,e=t._self._c,s=t._self._setupProxy;return e(s.NcAppNavigation,{staticClass:"account-management__navigation",attrs:{"aria-label":s.t("settings","Account management")},scopedSlots:t._u([{key:"footer",fn:function(){return[e(s.NcButton,{staticClass:"account-management__settings-toggle",attrs:{type:"tertiary"},on:{click:function(t){s.isDialogOpen=!0}},scopedSlots:t._u([{key:"icon",fn:function(){return[e(s.NcIconSvgWrapper,{attrs:{path:s.mdiCog}})]},proxy:!0}])},[t._v("\n\t\t\t"+t._s(s.t("settings","Account management settings"))+"\n\t\t")]),t._v(" "),e(s.UserSettingsDialog,{attrs:{open:s.isDialogOpen},on:{"update:open":function(t){s.isDialogOpen=t}}})]},proxy:!0}])},[e(s.NcAppNavigationNew,{attrs:{"button-id":"new-user-button",text:s.t("settings","New account")},on:{click:s.showNewUserMenu,keyup:[function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:s.showNewUserMenu.apply(null,arguments)},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"space",32,e.key,[" ","Spacebar"])?null:s.showNewUserMenu.apply(null,arguments)}]},scopedSlots:t._u([{key:"icon",fn:function(){return[e(s.NcIconSvgWrapper,{attrs:{path:s.mdiPlus}})]},proxy:!0}])}),t._v(" "),e(s.NcAppNavigationList,{staticClass:"account-management__system-list",attrs:{"data-cy-users-settings-navigation-groups":"system"}},[e(s.NcAppNavigationItem,{attrs:{id:"everyone",exact:!0,name:s.t("settings","All accounts"),to:{name:"users"}},scopedSlots:t._u([{key:"icon",fn:function(){return[e(s.NcIconSvgWrapper,{attrs:{path:s.mdiAccount}})]},proxy:!0},{key:"counter",fn:function(){return[s.userCount?e(s.NcCounterBubble,{attrs:{type:s.selectedGroupDecoded?void 0:"highlighted"}},[t._v("\n\t\t\t\t\t"+t._s(s.userCount)+"\n\t\t\t\t")]):t._e()]},proxy:!0}])}),t._v(" "),s.settings.isAdmin?e(s.NcAppNavigationItem,{attrs:{id:"admin",exact:!0,name:s.t("settings","Admins"),to:{name:"group",params:{selectedGroup:"admin"}}},scopedSlots:t._u([{key:"icon",fn:function(){return[e(s.NcIconSvgWrapper,{attrs:{path:s.mdiShieldAccount}})]},proxy:!0},{key:"counter",fn:function(){return[s.adminGroup&&s.adminGroup.count>0?e(s.NcCounterBubble,{attrs:{type:"admin"===s.selectedGroupDecoded?"highlighted":void 0}},[t._v("\n\t\t\t\t\t"+t._s(s.adminGroup.count)+"\n\t\t\t\t")]):t._e()]},proxy:!0}],null,!1,2218088905)}):t._e(),t._v(" "),s.isAdminOrDelegatedAdmin?e(s.NcAppNavigationItem,{attrs:{id:"recent",exact:!0,name:s.t("settings","Recently active"),to:{name:"group",params:{selectedGroup:"__nc_internal_recent"}}},scopedSlots:t._u([{key:"icon",fn:function(){return[e(s.NcIconSvgWrapper,{attrs:{path:s.mdiHistory}})]},proxy:!0},{key:"counter",fn:function(){return[s.recentGroup?.usercount?e(s.NcCounterBubble,{attrs:{type:"__nc_internal_recent"===s.selectedGroupDecoded?"highlighted":void 0}},[t._v("\n\t\t\t\t\t"+t._s(s.recentGroup.usercount)+"\n\t\t\t\t")]):t._e()]},proxy:!0}],null,!1,2299424282)}):t._e(),t._v(" "),s.disabledGroup&&(s.disabledGroup.usercount>0||-1===s.disabledGroup.usercount)?e(s.NcAppNavigationItem,{attrs:{id:"disabled",exact:!0,name:s.t("settings","Disabled accounts"),to:{name:"group",params:{selectedGroup:"disabled"}}},scopedSlots:t._u([{key:"icon",fn:function(){return[e(s.NcIconSvgWrapper,{attrs:{path:s.mdiAccountOff}})]},proxy:!0},s.disabledGroup.usercount>0?{key:"counter",fn:function(){return[e(s.NcCounterBubble,{attrs:{type:"disabled"===s.selectedGroupDecoded?"highlighted":void 0}},[t._v("\n\t\t\t\t\t"+t._s(s.disabledGroup.usercount)+"\n\t\t\t\t")])]},proxy:!0}:null],null,!0)}):t._e()],1),t._v(" "),e(s.AppNavigationGroupList)],1)}),[],!1,null,"edf83404",null).exports},76333:(t,e,s)=>{s.d(e,{AO:()=>F.N,Az:()=>o.N,B6:()=>u.N,EQ:()=>mt.N,K1:()=>st.N,Qz:()=>O.N,R1:()=>q.N,i$:()=>K.N,lT:()=>Q.N,m7:()=>Q.u,v:()=>vt.N,x1:()=>M.A,yI:()=>V.A});var a=s(15800),i=s(6375),n=s(61744),r=s(97691),o=s(71116),l=s(74479),d=s(73346),c=s(26873),u=s(39092),g=s(15502),A=s(71418),p=s(51005),h=s(74407),m=s(47611),v=s(10363),C=s(11906),w=s(14363),_=s(25535),f=s(95063),b=s(27345),y=s(85865),x=s(85474),N=s(94174),k=s(13463),S=s(542),G=s(24784),U=s(14727),L=s(11041),D=s(18608),B=s(57718),I=s(92089),q=s(69048),O=s(24761),M=s(97012),F=s(13368),$=s(83125),T=s(21590),E=s(4798),P=s(75971),z=s(2738),R=s(54463),Q=s(44228),W=s(30040),H=s(48046),K=s(52045),j=s(20802),Y=s(25521),X=s(25285),V=s(35779),J=s(94427),Z=s(27403),tt=s(48679),et=s(26517),st=s(5260),at=s(56849),it=s(51310),nt=s(28240),rt=s(59892),ot=s(69496),lt=s(40083),dt=s(18722),ct=s(99316),ut=s(74484),gt=s(997),At=s(23573),pt=s(20028),ht=s(58103),mt=(s(58322),s(65692),s(65043),s(21777),s(30872)),vt=s(59890),Ct=(s(61338),s(94632)),wt=s(11712),_t=s(38769),ft=s(68147),bt=s(36432),yt=s(42535),xt=s(30709),Nt=s(3349),kt=s(23982),St=s(51725),Gt=s(23610),Ut=(s(23020),s(53429),s(94205),s(95462),s(23739),s(16343),s(29928),s(12311),s(63352),s(42892)),Lt=s(15074),Dt=(s(59656),s(75105),s(92471),s(16406),s(2508));a.N,i.N,n.A,r.N,o.N,l.A,d.N,c.A,g.A,A.A,p.N,u.N,h.N,m.A,v.A,C.N,w.N,_.A,f.N,b.A,y.A,x.N,N.N,k.N,S.A,G.N,U.A,L.N,D.A,pt.N,B.N,I.N,q.N,O.N,M.A,F.N,$.N,T.N,E.N,P.N,z.N,R.N,Q.N,W.A,H.A,K.N,j.N,Y.A,X.N,V.A,J.A,Z.A,tt.N,et.N,st.N,at.N,it.N,nt.N,rt.A,At.N,ot.A,lt.A,dt.N,ct.N,ut.N,gt.N,pt.a,ht.N,Ct.N,mt.N,wt.N,_t.N,ft.N,bt.N,yt.N,xt.N,vt.N,Nt.N,kt.N,St.N,Gt.A,Symbol.toStringTag,Ut.u,Lt.u,Dt.yw,Symbol.toStringTag},79496:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),i=s.n(a),n=s(76314),r=s.n(n)()(i());r.push([t.id,".modal__header[data-v-161509be]{margin:0}.modal__content[data-v-161509be]{display:flex;flex-direction:column;align-items:center;padding:20px;gap:4px 0}.modal__button-row[data-v-161509be]{display:flex;width:100%;justify-content:space-between}","",{version:3,sources:["webpack://./apps/settings/src/components/GroupListItem.vue"],names:[],mappings:"AAEC,gCACC,QAAA,CAGD,iCACC,YAAA,CACA,qBAAA,CACA,kBAAA,CACA,YAAA,CACA,SAAA,CAGD,oCACC,YAAA,CACA,UAAA,CACA,6BAAA",sourcesContent:["\n.modal {\n\t&__header {\n\t\tmargin: 0;\n\t}\n\n\t&__content {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t\tpadding: 20px;\n\t\tgap: 4px 0;\n\t}\n\n\t&__button-row {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t\tjustify-content: space-between;\n\t}\n}\n"],sourceRoot:""}]);const o=r},79498:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),i=s.n(a),n=s(76314),r=s.n(n)()(i());r.push([t.id,".empty[data-v-1e8fee5a] .icon-vue{width:64px;height:64px}.empty[data-v-1e8fee5a] .icon-vue svg{max-width:64px;max-height:64px}","",{version:3,sources:["webpack://./apps/settings/src/components/UserList.vue"],names:[],mappings:"AAKE,kCACC,UAAA,CACA,WAAA,CAEA,sCACC,cAAA,CACA,eAAA",sourcesContent:["\n@use './Users/shared/styles' as *;\n\n.empty {\n\t:deep {\n\t\t.icon-vue {\n\t\t\twidth: 64px;\n\t\t\theight: 64px;\n\n\t\t\tsvg {\n\t\t\t\tmax-width: 64px;\n\t\t\t\tmax-height: 64px;\n\t\t\t}\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const o=r},79722:t=>{t.exports="data:image/svg+xml,%3c%21--%20-%20SPDX-FileCopyrightText:%202020%20Google%20Inc.%20-%20SPDX-License-Identifier:%20Apache-2.0%20--%3e%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M5.6%207.4L7%206l6%206-6%206-1.4-1.4%204.6-4.6-4.6-4.6m6%200L13%206l6%206-6%206-1.4-1.4%204.6-4.6-4.6-4.6z%27/%3e%3c/svg%3e"},82009:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),i=s.n(a),n=s(76314),r=s.n(n)()(i());r.push([t.id,".app-content[data-v-253f9eec]{display:flex;overflow:hidden;flex-direction:column;max-height:100%}","",{version:3,sources:["webpack://./apps/settings/src/views/UserManagement.vue"],names:[],mappings:"AACA,8BAEC,YAAA,CACA,eAAA,CACA,qBAAA,CACA,eAAA",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"],sourceRoot:""}]);const o=r},86886:t=>{t.exports="data:image/svg+xml,%3c%21--%20-%20SPDX-FileCopyrightText:%202020%20Google%20Inc.%20-%20SPDX-License-Identifier:%20Apache-2.0%20--%3e%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20width=%2724%27%20height=%2724%27%20fill=%27%23222%27%3e%3cpath%20d=%27M8.6%2016.6l4.6-4.6-4.6-4.6L10%206l6%206-6%206-1.4-1.4z%27/%3e%3c/svg%3e"},95066:(t,e,s)=>{s.d(e,{A:()=>o});var a=s(71354),i=s.n(a),n=s(76314),r=s.n(n)()(i());r.push([t.id,".footer[data-v-db2a7c4e]{position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background)}.footer__cell[data-v-db2a7c4e]{display:flex;flex-direction:column;justify-content:center;padding:0 var(--cell-padding);min-width:var(--cell-width);width:var(--cell-width);color:var(--color-main-text)}.footer__cell strong[data-v-db2a7c4e],.footer__cell span[data-v-db2a7c4e],.footer__cell label[data-v-db2a7c4e]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.footer__cell--avatar[data-v-db2a7c4e],.footer__cell--displayname[data-v-db2a7c4e]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.footer__cell--avatar[data-v-db2a7c4e]{inset-inline-start:0}.footer__cell--displayname[data-v-db2a7c4e]{inset-inline-start:var(--avatar-cell-width);border-inline-end:1px solid var(--color-border)}}.footer__cell--username[data-v-db2a7c4e]{padding-inline-start:calc(var(--default-grid-baseline)*3)}.footer__cell--avatar[data-v-db2a7c4e]{min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0;user-select:none}.footer__cell--multiline span[data-v-db2a7c4e]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.footer__cell--multiline span[data-v-db2a7c4e]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.footer__cell--large[data-v-db2a7c4e]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.footer__cell--obfuscated[data-v-db2a7c4e]{min-width:400px;width:400px}.footer__cell--fill[data-v-db2a7c4e]{min-width:var(--cell-width-large);width:100%}.footer__cell--actions[data-v-db2a7c4e]{position:sticky;inset-inline-end:0;z-index:var(--sticky-column-z-index);display:flex;flex-direction:row;align-items:center;min-width:110px;width:110px;background-color:var(--color-main-background);border-inline-start:1px solid var(--color-border)}.footer__subtitle[data-v-db2a7c4e]{color:var(--color-text-maxcontrast)}.footer__cell[data-v-db2a7c4e]{position:sticky;color:var(--color-text-maxcontrast)}.footer__cell--loading[data-v-db2a7c4e]{inset-inline-start:0;min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0}.footer__cell--count[data-v-db2a7c4e]{inset-inline-start:var(--avatar-cell-width);min-width:var(--cell-width);width:var(--cell-width)}","",{version:3,sources:["webpack://./apps/settings/src/components/Users/UserListFooter.vue","webpack://./apps/settings/src/components/Users/shared/styles.scss"],names:[],mappings:"AAGA,yBCGC,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CAIA,+BACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,6BAAA,CACA,2BAAA,CACA,uBAAA,CACA,4BAAA,CAEA,+GAGC,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CAGD,yBACC,mFAEC,eAAA,CACA,oCAAA,CACA,6CAAA,CAGD,uCACC,oBAAA,CAGD,4CACC,2CAAA,CACA,+CAAA,CAAA,CAIF,yCACC,yDAAA,CAGD,uCACC,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CACA,gBAAA,CAIA,+CACC,iBAAA,CACA,iBAAA,CAEA,iCAJD,+CAKE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,sCACC,iCAAA,CACA,6BAAA,CAGD,2CACC,eAAA,CACA,WAAA,CAID,qCACC,iCAAA,CACA,UAAA,CAGD,wCACC,eAAA,CACA,kBAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,iDAAA,CAIF,mCACC,mCAAA,CDpGD,+BACC,eAAA,CACA,mCAAA,CAEA,wCACC,oBAAA,CACA,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CAGD,sCACC,2CAAA,CACA,2BAAA,CACA,uBAAA",sourcesContent:["\n@use './shared/styles';\n\n.footer {\n\t@include styles.row;\n\t@include styles.cell;\n\n\t&__cell {\n\t\tposition: sticky;\n\t\tcolor: var(--color-text-maxcontrast);\n\n\t\t&--loading {\n\t\t\tinset-inline-start: 0;\n\t\t\tmin-width: var(--avatar-cell-width);\n\t\t\twidth: var(--avatar-cell-width);\n\t\t\talign-items: center;\n\t\t\tpadding: 0;\n\t\t}\n\n\t\t&--count {\n\t\t\tinset-inline-start: var(--avatar-cell-width);\n\t\t\tmin-width: var(--cell-width);\n\t\t\twidth: var(--cell-width);\n\t\t}\n\t}\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n@mixin row {\n\tposition: relative;\n\tdisplay: flex;\n\tmin-width: 100%;\n\twidth: fit-content;\n\theight: var(--row-height);\n\tbackground-color: var(--color-main-background);\n}\n\n@mixin cell {\n\t&__cell {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\tpadding: 0 var(--cell-padding);\n\t\tmin-width: var(--cell-width);\n\t\twidth: var(--cell-width);\n\t\tcolor: var(--color-main-text);\n\n\t\tstrong,\n\t\tspan,\n\t\tlabel {\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\t\t\toverflow-wrap: anywhere;\n\t\t}\n\n\t\t@media (min-width: 670px) { /* Show one &--large column between stickied columns */\n\t\t\t&--avatar,\n\t\t\t&--displayname {\n\t\t\t\tposition: sticky;\n\t\t\t\tz-index: var(--sticky-column-z-index);\n\t\t\t\tbackground-color: var(--color-main-background);\n\t\t\t}\n\n\t\t\t&--avatar {\n\t\t\t\tinset-inline-start: 0;\n\t\t\t}\n\n\t\t\t&--displayname {\n\t\t\t\tinset-inline-start: var(--avatar-cell-width);\n\t\t\t\tborder-inline-end: 1px solid var(--color-border);\n\t\t\t}\n\t\t}\n\n\t\t&--username {\n\t\t\tpadding-inline-start: calc(var(--default-grid-baseline) * 3);\n\t\t}\n\n\t\t&--avatar {\n\t\t\tmin-width: var(--avatar-cell-width);\n\t\t\twidth: var(--avatar-cell-width);\n\t\t\talign-items: center;\n\t\t\tpadding: 0;\n\t\t\tuser-select: none;\n\t\t}\n\n\t\t&--multiline {\n\t\t\tspan {\n\t\t\t\tline-height: 1.3em;\n\t\t\t\twhite-space: unset;\n\n\t\t\t\t@supports (-webkit-line-clamp: 2) {\n\t\t\t\t\tdisplay: -webkit-box;\n\t\t\t\t\t-webkit-line-clamp: 2;\n\t\t\t\t\t-webkit-box-orient: vertical;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&--large {\n\t\t\tmin-width: var(--cell-width-large);\n\t\t\twidth: var(--cell-width-large);\n\t\t}\n\n\t\t&--obfuscated {\n\t\t\tmin-width: 400px;\n\t\t\twidth: 400px;\n\t\t}\n\n\t\t// Fill remaining row space with cell\n\t\t&--fill {\n\t\t\tmin-width: var(--cell-width-large);\n\t\t\twidth: 100%;\n\t\t}\n\n\t\t&--actions {\n\t\t\tposition: sticky;\n\t\t\tinset-inline-end: 0;\n\t\t\tz-index: var(--sticky-column-z-index);\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: row;\n\t\t\talign-items: center;\n\t\t\tmin-width: 110px;\n\t\t\twidth: 110px;\n\t\t\tbackground-color: var(--color-main-background);\n\t\t\tborder-inline-start: 1px solid var(--color-border);\n\t\t}\n\t}\n\n\t&__subtitle {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n}\n"],sourceRoot:""}]);const o=r},95668:(t,e,s)=>{s.d(e,{HK:()=>r,MY:()=>n,SA:()=>i});var a=s(53334);const i={id:"none",label:(0,a.Tl)("settings","Unlimited")},n={id:"default",label:(0,a.Tl)("settings","Default quota")},r=t=>{const e=Object.keys(t);return 1===e.length&&"id"===e.at(0)}},95802:(e,s,a)=>{a.r(s),a.d(s,{default:()=>Gt});var i=a(53334),n=a(61338),r=a(85471),o=a(18195),l=a(9165),d=a(85168),c=a(54914),u=a(35779),g=a(6695),A=a(59892),p=a(55042),h=a(17334),m=a.n(h),v=a(36620);r.Ay.directive("elementVisibility",p.Zx);const C=r.Ay.extend({name:"VirtualList",props:{dataComponent:{type:[Object,Function],required:!0},dataKey:{type:String,required:!0},dataSources:{type:Array,required:!0},itemHeight:{type:Number,required:!0},extraProps:{type:Object,default:()=>({})}},data:()=>({bufferItems:3,index:0,headerHeight:0,tableHeight:0,resizeObserver:null}),computed:{startIndex(){return Math.max(0,this.index-3)},shownItems(){return Math.ceil((this.tableHeight-this.headerHeight)/this.itemHeight)+6},renderedItems(){return this.dataSources.slice(this.startIndex,this.startIndex+this.shownItems)},tbodyStyle(){const t=this.startIndex+this.shownItems>this.dataSources.length,e=this.dataSources.length-this.startIndex-this.shownItems,s=Math.min(this.dataSources.length-this.startIndex,e);return{paddingTop:this.startIndex*this.itemHeight+"px",paddingBottom:t?0:s*this.itemHeight+"px"}}},mounted(){const t=this.$el,e=this.$refs?.tfoot,s=this.$refs?.thead;this.resizeObserver=new ResizeObserver(m()((()=>{this.headerHeight=s?.clientHeight??0,this.tableHeight=t?.clientHeight??0,v.A.debug("VirtualList resizeObserver updated"),this.onScroll()}),100,!1)),this.resizeObserver.observe(t),this.resizeObserver.observe(e),this.resizeObserver.observe(s),this.$el.addEventListener("scroll",this.onScroll)},beforeDestroy(){this.resizeObserver&&this.resizeObserver.disconnect()},methods:{handleFooterVisibility(t){t&&this.$emit("scroll-end")},onScroll(){this.index=Math.max(0,Math.round(this.$el.scrollTop/this.itemHeight))}}});var w=a(85072),_=a.n(w),f=a(97825),b=a.n(f),y=a(77659),x=a.n(y),N=a(55056),k=a.n(N),S=a(10540),G=a.n(S),U=a(41113),L=a.n(U),D=a(12795),B={};B.styleTagTransform=L(),B.setAttributes=k(),B.insert=x().bind(null,"head"),B.domAPI=b(),B.insertStyleElement=G(),_()(D.A,B),D.A&&D.A.locals&&D.A.locals;var I=a(14486);const q=(0,I.A)(C,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("table",{staticClass:"user-list"},[t._t("before"),t._v(" "),e("thead",{ref:"thead",staticClass:"user-list__header",attrs:{role:"rowgroup"}},[t._t("header")],2),t._v(" "),e("tbody",{staticClass:"user-list__body",style:t.tbodyStyle},t._l(t.renderedItems,(function(s,a){return e(t.dataComponent,t._b({key:s[t.dataKey],tag:"component",attrs:{user:s,visible:(a>=t.bufferItems||t.index<=t.bufferItems)&&a<t.shownItems-t.bufferItems}},"component",t.extraProps,!1))})),1),t._v(" "),e("tfoot",{directives:[{name:"element-visibility",rawName:"v-element-visibility",value:t.handleFooterVisibility,expression:"handleFooterVisibility"}],ref:"tfoot",staticClass:"user-list__footer",attrs:{role:"rowgroup"}},[t._t("footer")],2)],2)}),[],!1,null,"21942da5",null).exports;var O=a(35810),M=a(97012),F=a(94219),$=a(16044),T=a(67607),E=a(82182),P=a(46984);const z={name:"NewUserDialog",components:{NcButton:M.A,NcDialog:F.A,NcPasswordField:$.A,NcSelect:T.A,NcTextField:E.A},props:{loading:{type:Object,required:!0},newUser:{type:Object,required:!0},quotaOptions:{type:Array,required:!0}},data:()=>({availableGroups:[],possibleManagers:[],managerInputLabel:t("settings","Manager"),managerLabel:t("settings","Set line manager"),promise:null}),computed:{showConfig(){return this.$store.getters.getShowConfig},settings(){return this.$store.getters.getServerData},usernameLabel(){return this.settings.newUserGenerateUserID?t("settings","Account name will be autogenerated"):t("settings","Account name (required)")},minPasswordLength(){return this.$store.getters.getPasswordPolicyMinLength},subAdminsGroups(){return this.availableGroups.filter((t=>"admin"!==t.id&&"__nc_internal_recent"!==t.id&&"disabled"!==t.id))},languages(){return[{name:t("settings","Common languages"),languages:this.settings.languages.commonLanguages},...this.settings.languages.commonLanguages,{name:t("settings","Other languages"),languages:this.settings.languages.otherLanguages},...this.settings.languages.otherLanguages]}},async beforeMount(){await this.searchUserManager()},mounted(){this.isAdmin||this.isDelegatedAdmin?this.availableGroups=this.$store.getters.getSortedGroups.filter((t=>"__nc_internal_recent"!==t.id&&"disabled"!==t.id)):this.availableGroups=[...this.$store.getters.getSubAdminGroups],this.$refs.username?.focus?.()},methods:{async createUser(){this.loading.all=!0;try{await this.$store.dispatch("addUser",{userid:this.newUser.id,password:this.newUser.password,displayName:this.newUser.displayName,email:this.newUser.mailAddress,groups:this.newUser.groups.map((t=>t.id)),subadmin:this.newUser.subAdminsGroups.map((t=>t.id)),quota:this.newUser.quota.id,language:this.newUser.language.code,manager:this.newUser.manager.id}),this.$emit("reset"),this.$refs.username?.focus?.(),this.$emit("closing")}catch(t){if(this.loading.all=!1,t.response&&t.response.data&&t.response.data.ocs&&t.response.data.ocs.meta){const e=t.response.data.ocs.meta.statuscode;102===e?this.$refs.username?.focus?.():107===e&&this.$refs.password?.focus?.()}}},async searchGroups(e,s){if(this.isAdmin||this.isDelegatedAdmin){this.promise&&this.promise.cancel(),s(!0);try{this.promise=(0,P.N_)({search:e,offset:0,limit:25});const t=await this.promise;this.availableGroups=t}catch(e){v.A.error(t("settings","Failed to search groups"),{error:e})}this.promise=null,s(!1)}},async createGroup(e){let{name:s}=e;this.loading.groups=!0;try{await this.$store.dispatch("addGroup",s),this.availableGroups.push({id:s,name:s}),this.newUser.groups.push({id:s,name:s})}catch(e){v.A.error(t("settings","Failed to create group"),{error:e})}this.loading.groups=!1},async addGroup(t){t.isCreating||!1!==t.canAdd&&this.newUser.groups.push(t)},validateQuota(t){const e=OC.Util.computerFileSize(t);return null!==e&&e>=0?(t=(0,O.v7)((0,O.lT)(t)),this.newUser.quota={id:t,label:t},this.newUser.quota):(this.newUser.quota=this.quotaOptions[0],this.quotaOptions[0])},languageFilterBy:(t,e,s)=>t.languages?t.languages.some((t=>{let{name:e}=t;return e.toLocaleLowerCase().includes(s.toLocaleLowerCase())})):(e||"").toLocaleLowerCase().includes(s.toLocaleLowerCase()),async searchUserManager(t){await this.$store.dispatch("searchUsers",{offset:0,limit:10,search:t}).then((t=>{const e=t?.data?Object.values(t?.data.ocs.data.users):[];e.length>0&&(this.possibleManagers=e)}))}}};var R=a(50540),Q={};Q.styleTagTransform=L(),Q.setAttributes=k(),Q.insert=x().bind(null,"head"),Q.domAPI=b(),Q.insertStyleElement=G(),_()(R.A,Q),R.A&&R.A.locals&&R.A.locals;var W=(0,I.A)(z,(function(){var t=this,e=t._self._c;return e("NcDialog",t._g({staticClass:"dialog",attrs:{size:"small",name:t.t("settings","New account"),"out-transition":""},scopedSlots:t._u([{key:"actions",fn:function(){return[e("NcButton",{staticClass:"dialog__submit",attrs:{"data-test":"submit",form:"new-user-form",type:"primary","native-type":"submit"}},[t._v("\n\t\t\t"+t._s(t.t("settings","Add new account"))+"\n\t\t")])]},proxy:!0}])},t.$listeners),[e("form",{staticClass:"dialog__form",attrs:{id:"new-user-form","data-test":"form",disabled:t.loading.all},on:{submit:function(e){return e.preventDefault(),t.createUser.apply(null,arguments)}}},[e("NcTextField",{ref:"username",staticClass:"dialog__item",attrs:{"data-test":"username",value:t.newUser.id,disabled:t.settings.newUserGenerateUserID,label:t.usernameLabel,autocapitalize:"none",autocomplete:"off",spellcheck:"false",pattern:"[a-zA-Z0-9 _\\.@\\-']+",required:""},on:{"update:value":function(e){return t.$set(t.newUser,"id",e)}}}),t._v(" "),e("NcTextField",{staticClass:"dialog__item",attrs:{"data-test":"displayName",value:t.newUser.displayName,label:t.t("settings","Display name"),autocapitalize:"none",autocomplete:"off",spellcheck:"false"},on:{"update:value":function(e){return t.$set(t.newUser,"displayName",e)}}}),t._v(" "),t.settings.newUserRequireEmail?t._e():e("span",{staticClass:"dialog__hint",attrs:{id:"password-email-hint"}},[t._v("\n\t\t\t"+t._s(t.t("settings","Either password or email is required"))+"\n\t\t")]),t._v(" "),e("NcPasswordField",{ref:"password",staticClass:"dialog__item",attrs:{"data-test":"password",value:t.newUser.password,minlength:t.minPasswordLength,maxlength:469,"aria-describedby":"password-email-hint",label:""===t.newUser.mailAddress?t.t("settings","Password (required)"):t.t("settings","Password"),autocapitalize:"none",autocomplete:"new-password",spellcheck:"false",required:""===t.newUser.mailAddress},on:{"update:value":function(e){return t.$set(t.newUser,"password",e)}}}),t._v(" "),e("NcTextField",{staticClass:"dialog__item",attrs:{"data-test":"email",type:"email",value:t.newUser.mailAddress,"aria-describedby":"password-email-hint",label:""===t.newUser.password||t.settings.newUserRequireEmail?t.t("settings","Email (required)"):t.t("settings","Email"),autocapitalize:"none",autocomplete:"off",spellcheck:"false",required:""===t.newUser.password||t.settings.newUserRequireEmail},on:{"update:value":function(e){return t.$set(t.newUser,"mailAddress",e)}}}),t._v(" "),e("div",{staticClass:"dialog__item"},[e("NcSelect",{staticClass:"dialog__select",attrs:{"data-test":"groups","input-label":t.settings.isAdmin||t.settings.isDelegatedAdmin?t.t("settings","Member of the following groups"):t.t("settings","Member of the following groups (required)"),placeholder:t.t("settings","Set account groups"),disabled:t.loading.groups||t.loading.all,options:t.availableGroups,value:t.newUser.groups,label:"name","close-on-select":!1,multiple:!0,taggable:t.settings.isAdmin||t.settings.isDelegatedAdmin,required:!t.settings.isAdmin&&!t.settings.isDelegatedAdmin,"create-option":t=>({id:t,name:t,isCreating:!0})},on:{search:t.searchGroups,"option:created":t.createGroup,"option:selected":e=>t.addGroup(e.at(-1))}})],1),t._v(" "),e("div",{staticClass:"dialog__item"},[e("NcSelect",{staticClass:"dialog__select",attrs:{"input-label":t.t("settings","Admin of the following groups"),placeholder:t.t("settings","Set account as admin for …"),disabled:t.loading.groups||t.loading.all,options:t.subAdminsGroups,"close-on-select":!1,multiple:!0,label:"name"},on:{search:t.searchGroups},model:{value:t.newUser.subAdminsGroups,callback:function(e){t.$set(t.newUser,"subAdminsGroups",e)},expression:"newUser.subAdminsGroups"}})],1),t._v(" "),e("div",{staticClass:"dialog__item"},[e("NcSelect",{staticClass:"dialog__select",attrs:{"input-label":t.t("settings","Quota"),placeholder:t.t("settings","Set account quota"),options:t.quotaOptions,clearable:!1,taggable:!0,"create-option":t.validateQuota},model:{value:t.newUser.quota,callback:function(e){t.$set(t.newUser,"quota",e)},expression:"newUser.quota"}})],1),t._v(" "),t.showConfig.showLanguages?e("div",{staticClass:"dialog__item"},[e("NcSelect",{staticClass:"dialog__select",attrs:{"input-label":t.t("settings","Language"),placeholder:t.t("settings","Set default language"),clearable:!1,selectable:t=>!t.languages,"filter-by":t.languageFilterBy,options:t.languages,label:"name"},model:{value:t.newUser.language,callback:function(e){t.$set(t.newUser,"language",e)},expression:"newUser.language"}})],1):t._e(),t._v(" "),e("div",{class:["dialog__item dialog__managers",{"icon-loading-small":t.loading.manager}]},[e("NcSelect",{staticClass:"dialog__select",attrs:{"input-label":t.managerInputLabel,placeholder:t.managerLabel,options:t.possibleManagers,"user-select":!0,label:"displayname"},on:{search:t.searchUserManager},model:{value:t.newUser.manager,callback:function(e){t.$set(t.newUser,"manager",e)},expression:"newUser.manager"}})],1)],1)])}),[],!1,null,"70bbf4c9",null);const H=W.exports,K=r.Ay.extend({name:"UserListFooter",components:{NcLoadingIcon:A.A},props:{loading:{type:Boolean,required:!0},filteredUsers:{type:Array,required:!0}},computed:{userCount(){return this.loading?this.n("settings","{userCount} account …","{userCount} accounts …",this.filteredUsers.length,{userCount:this.filteredUsers.length}):this.n("settings","{userCount} account","{userCount} accounts",this.filteredUsers.length,{userCount:this.filteredUsers.length})}},methods:{t:i.Tl,n:i.zw}});var j=a(95066),Y={};Y.styleTagTransform=L(),Y.setAttributes=k(),Y.insert=x().bind(null,"head"),Y.domAPI=b(),Y.insertStyleElement=G(),_()(j.A,Y),j.A&&j.A.locals&&j.A.locals;const X=(0,I.A)(K,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("tr",{staticClass:"footer"},[e("th",{attrs:{scope:"row"}},[e("span",{staticClass:"hidden-visually"},[t._v(t._s(t.t("settings","Total rows summary")))])]),t._v(" "),e("td",{staticClass:"footer__cell footer__cell--loading"},[t.loading?e("NcLoadingIcon",{attrs:{title:t.t("settings","Loading accounts …"),size:32}}):t._e()],1),t._v(" "),e("td",{staticClass:"footer__cell footer__cell--count footer__cell--multiline"},[e("span",{attrs:{"aria-describedby":"user-count-desc"}},[t._v(t._s(t.userCount))]),t._v(" "),e("span",{staticClass:"hidden-visually",attrs:{id:"user-count-desc"}},[t._v("\n\t\t\t"+t._s(t.t("settings","Scroll to load more rows"))+"\n\t\t")])])])}),[],!1,null,"db2a7c4e",null).exports,V=r.Ay.extend({name:"UserListHeader",props:{hasObfuscated:{type:Boolean,required:!0}},computed:{showConfig(){return this.$store.getters.getShowConfig},settings(){return this.$store.getters.getServerData},passwordLabel(){return this.hasObfuscated?(0,i.Tl)("settings","Password or insufficient permissions message"):(0,i.Tl)("settings","Password")}},methods:{t:i.Tl}});var J=a(24882),Z={};Z.styleTagTransform=L(),Z.setAttributes=k(),Z.insert=x().bind(null,"head"),Z.domAPI=b(),Z.insertStyleElement=G(),_()(J.A,Z),J.A&&J.A.locals&&J.A.locals;const tt=(0,I.A)(V,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("tr",{staticClass:"header"},[e("th",{staticClass:"header__cell header__cell--avatar",attrs:{"data-cy-user-list-header-avatar":"",scope:"col"}},[e("span",{staticClass:"hidden-visually"},[t._v("\n\t\t\t"+t._s(t.t("settings","Avatar"))+"\n\t\t")])]),t._v(" "),e("th",{staticClass:"header__cell header__cell--displayname",attrs:{"data-cy-user-list-header-displayname":"",scope:"col"}},[e("strong",[t._v("\n\t\t\t"+t._s(t.t("settings","Display name"))+"\n\t\t")])]),t._v(" "),e("th",{staticClass:"header__cell header__cell--username",attrs:{"data-cy-user-list-header-username":"",scope:"col"}},[e("span",[t._v("\n\t\t\t"+t._s(t.t("settings","Account name"))+"\n\t\t")])]),t._v(" "),e("th",{staticClass:"header__cell",class:{"header__cell--obfuscated":t.hasObfuscated},attrs:{"data-cy-user-list-header-password":"",scope:"col"}},[e("span",[t._v(t._s(t.passwordLabel))])]),t._v(" "),e("th",{staticClass:"header__cell",attrs:{"data-cy-user-list-header-email":"",scope:"col"}},[e("span",[t._v(t._s(t.t("settings","Email")))])]),t._v(" "),e("th",{staticClass:"header__cell header__cell--large",attrs:{"data-cy-user-list-header-groups":"",scope:"col"}},[e("span",[t._v(t._s(t.t("settings","Groups")))])]),t._v(" "),t.settings.isAdmin||t.settings.isDelegatedAdmin?e("th",{staticClass:"header__cell header__cell--large",attrs:{"data-cy-user-list-header-subadmins":"",scope:"col"}},[e("span",[t._v(t._s(t.t("settings","Group admin for")))])]):t._e(),t._v(" "),e("th",{staticClass:"header__cell",attrs:{"data-cy-user-list-header-quota":"",scope:"col"}},[e("span",[t._v(t._s(t.t("settings","Quota")))])]),t._v(" "),t.showConfig.showLanguages?e("th",{staticClass:"header__cell header__cell--large",attrs:{"data-cy-user-list-header-languages":"",scope:"col"}},[e("span",[t._v(t._s(t.t("settings","Language")))])]):t._e(),t._v(" "),t.showConfig.showUserBackend||t.showConfig.showStoragePath?e("th",{staticClass:"header__cell header__cell--large",attrs:{"data-cy-user-list-header-storage-location":"",scope:"col"}},[t.showConfig.showUserBackend?e("span",[t._v("\n\t\t\t"+t._s(t.t("settings","Account backend"))+"\n\t\t")]):t._e(),t._v(" "),t.showConfig.showStoragePath?e("span",{staticClass:"header__subtitle"},[t._v("\n\t\t\t"+t._s(t.t("settings","Storage location"))+"\n\t\t")]):t._e()]):t._e(),t._v(" "),t.showConfig.showFirstLogin?e("th",{staticClass:"header__cell",attrs:{"data-cy-user-list-header-first-login":"",scope:"col"}},[e("span",[t._v(t._s(t.t("settings","First login")))])]):t._e(),t._v(" "),t.showConfig.showLastLogin?e("th",{staticClass:"header__cell",attrs:{"data-cy-user-list-header-last-login":"",scope:"col"}},[e("span",[t._v(t._s(t.t("settings","Last login")))])]):t._e(),t._v(" "),e("th",{staticClass:"header__cell header__cell--large header__cell--fill",attrs:{"data-cy-user-list-header-manager":"",scope:"col"}},[e("span",[t._v(t._s(t.t("settings","Manager")))])]),t._v(" "),e("th",{staticClass:"header__cell header__cell--actions",attrs:{"data-cy-user-list-header-actions":"",scope:"col"}},[e("span",{staticClass:"hidden-visually"},[t._v("\n\t\t\t"+t._s(t.t("settings","Account actions"))+"\n\t\t")])])])}),[],!1,null,"5c0f8828",null).exports;var et=a(21777),st=a(56760),at=a(41944),it=a(95101),nt=a(86454),rt=a(57505),ot=a(24764),lt=a(65659),dt=a(19664);const ct=(0,r.pM)({components:{NcActionButton:rt.A,NcActions:ot.A,NcIconSvgWrapper:g.A},props:{actions:{type:Array,required:!0},disabled:{type:Boolean,required:!0},edit:{type:Boolean,required:!0},user:{type:Object,required:!0}},computed:{editSvg(){return this.edit?lt:dt},enabledActions(){return this.actions.filter((t=>"function"!=typeof t.enabled||t.enabled(this.user)))}},methods:{isSvg:function(t){if("string"!=typeof t)throw new TypeError(`Expected a \`string\`, got \`${typeof t}\``);if(0===(t=t.trim()).length)return!1;if(!0!==nt.XMLValidator.validate(t))return!1;let e;const s=new nt.XMLParser;try{e=s.parse(t)}catch{return!1}return!!e&&!!Object.keys(e).some((t=>"svg"===t.toLowerCase()))},toggleEdit(){this.$emit("update:edit",!this.edit)}}}),ut=(0,I.A)(ct,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("NcActions",{attrs:{"aria-label":t.t("settings","Toggle account actions menu"),disabled:t.disabled,inline:1}},[e("NcActionButton",{attrs:{"data-cy-user-list-action-toggle-edit":`${t.edit}`,disabled:t.disabled},on:{click:t.toggleEdit},scopedSlots:t._u([{key:"icon",fn:function(){return[e("NcIconSvgWrapper",{key:t.editSvg,attrs:{svg:t.editSvg,"aria-hidden":"true"}})]},proxy:!0}])},[t._v("\n\t\t"+t._s(t.edit?t.t("settings","Done"):t.t("settings","Edit"))+"\n\t\t")]),t._v(" "),t._l(t.enabledActions,(function(s,a){let{action:i,icon:n,text:r}=s;return e("NcActionButton",{key:a,attrs:{disabled:t.disabled,"aria-label":r,icon:n,"close-after-click":""},on:{click:e=>i(e,{...t.user})},scopedSlots:t._u([t.isSvg(n)?{key:"icon",fn:function(){return[e("NcIconSvgWrapper",{attrs:{svg:n,"aria-hidden":"true"}})]},proxy:!0}:null],null,!0)},[t._v("\n\t\t"+t._s(r)+"\n\t\t")])}))],2)}),[],!1,null,null,null).exports;var gt=a(76333);const At={props:{user:{type:Object,required:!0},settings:{type:Object,default:()=>({})},quotaOptions:{type:Array,default:()=>[]},languages:{type:Array,required:!0},externalActions:{type:Array,default:()=>[]}},setup(t){const{formattedFullTime:e}=(0,gt.m7)(1e3*t.user.firstLoginTimestamp,{relativeTime:!1,format:{timeStyle:"short",dateStyle:"short"}});return{formattedFullTime:e}},data(){return{availableGroups:this.user.groups.map((t=>({id:t,name:t}))),availableSubAdminGroups:this.user.subadmin.map((t=>({id:t,name:t}))),userGroups:this.user.groups.map((t=>({id:t,name:t}))),userSubAdminGroups:this.user.subadmin.map((t=>({id:t,name:t})))}},computed:{showConfig(){return this.$store.getters.getShowConfig},usedSpace(){const e=this.user.quota.used>0?this.user.quota.used:0;return t("settings","{size} used",{size:(0,O.v7)(e,!0)})},usedQuota(){let t=this.user.quota.quota;return t=t>0?Math.min(100,Math.round(this.user.quota.used/t*100)):95*(1-1/(this.user.quota.used/(10*Math.pow(2,30))+1)),isNaN(t)?0:t},userQuota(){if(this.user.quota.quota>=0){const t=(0,O.v7)(this.user.quota.quota);return this.quotaOptions.find((e=>e.id===t))||{id:t,label:t}}return"default"===this.user.quota.quota?this.quotaOptions[0]:this.quotaOptions[1]},minPasswordLength(){return this.$store.getters.getPasswordPolicyMinLength},userLanguage(){const t=this.languages[0].languages.concat(this.languages[1].languages).find((t=>t.code===this.user.language));return"object"!=typeof t&&""!==this.user.language?{code:this.user.language,name:this.user.language}:""!==this.user.language&&t},userFirstLogin(){return this.user.firstLoginTimestamp>0?this.formattedFullTime:this.user.firstLoginTimestamp<0?t("settings","Unknown"):t("settings","Never")},userLastLoginTooltip(){return this.user.lastLoginTimestamp>0?OC.Util.formatDate(1e3*this.user.lastLoginTimestamp):""},userLastLogin(){return this.user.lastLoginTimestamp>0?OC.Util.relativeModifiedDate(1e3*this.user.lastLoginTimestamp):t("settings","Never")}}};var pt=a(95668);const ht={name:"UserRow",components:{NcAvatar:at.A,NcLoadingIcon:A.A,NcProgressBar:it.A,NcSelect:T.A,NcTextField:E.A,UserRowActions:ut},mixins:[At],props:{user:{type:Object,required:!0},visible:{type:Boolean,required:!0},users:{type:Array,required:!0},hasObfuscated:{type:Boolean,required:!0},quotaOptions:{type:Array,required:!0},languages:{type:Array,required:!0},settings:{type:Object,required:!0},externalActions:{type:Array,default:()=>[]}},data(){return{selectedQuota:!1,rand:Math.random().toString(36).substring(2),loadingPossibleManagers:!1,possibleManagers:[],currentManager:"",editing:!1,loading:{all:!1,displayName:!1,password:!1,mailAddress:!1,groups:!1,groupsDetails:!1,subAdminGroupsDetails:!1,subadmins:!1,quota:!1,delete:!1,disable:!1,languages:!1,wipe:!1,manager:!1},editedDisplayName:this.user.displayname,editedPassword:"",editedMail:this.user.email??"",promise:null}},computed:{managerLabel:()=>t("settings","Set line manager"),isObfuscated(){return(0,pt.HK)(this.user)},showConfig(){return this.$store.getters.getShowConfig},isLoadingUser(){return this.loading.delete||this.loading.disable||this.loading.wipe},isLoadingField(){return this.loading.delete||this.loading.disable||this.loading.all},uniqueId(){return encodeURIComponent(this.user.id+this.rand)},userGroupsLabels(){return this.userGroups.map((t=>t.name??t.id)).join(", ")},userSubAdminGroupsLabels(){return this.userSubAdminGroups.map((t=>t.name??t.id)).join(", ")},usedSpace(){return this.user.quota?.used?t("settings","{size} used",{size:(0,O.v7)(this.user.quota?.used)}):t("settings","{size} used",{size:(0,O.v7)(0)})},canEdit(){return(0,et.HW)().uid!==this.user.id||this.settings.isAdmin||this.settings.isDelegatedAdmin},userQuota(){let e=this.user.quota?.quota;return"default"===e&&(e=this.settings.defaultQuota,"none"!==e&&(e=(0,O.lT)(e,!0))),"none"===e||-3===e?t("settings","Unlimited"):e>=0?(0,O.v7)(e):(0,O.v7)(0)},userActions(){const e=[{icon:"icon-delete",text:t("settings","Delete account"),action:this.deleteUser},{icon:"icon-delete",text:t("settings","Disconnect all devices and delete local data"),action:this.wipeUserDevices},{icon:this.user.enabled?"icon-close":"icon-add",text:this.user.enabled?t("settings","Disable account"):t("settings","Enable account"),action:this.enableDisableUser}];return null!==this.user.email&&""!==this.user.email&&e.push({icon:"icon-mail",text:t("settings","Resend welcome email"),action:this.sendWelcomeMail}),e.concat(this.externalActions)},editedUserQuota:{get(){return!1!==this.selectedQuota?this.selectedQuota:this.settings.defaultQuota!==pt.SA.id&&(0,O.lT)(this.settings.defaultQuota,!0)>=0?{id:this.settings.defaultQuota,label:this.settings.defaultQuota}:pt.SA},set(t){this.selectedQuota=t}},availableLanguages(){return this.languages[0].languages.concat(this.languages[1].languages)}},async beforeMount(){this.user.manager&&await this.initManager(this.user.manager)},methods:{async wipeUserDevices(){const e=this.user.id;await(0,st.C5)(),OC.dialogs.confirmDestructive(t("settings","In case of lost device or exiting the organization, this can remotely wipe the Nextcloud data from all devices associated with {userid}. Only works if the devices are connected to the internet.",{userid:e}),t("settings","Remote wipe of devices"),{type:OC.dialogs.YES_NO_BUTTONS,confirm:t("settings","Wipe {userid}'s devices",{userid:e}),confirmClasses:"error",cancel:t("settings","Cancel")},(s=>{s&&(this.loading.wipe=!0,this.loading.all=!0,this.$store.dispatch("wipeUserDevices",e).then((()=>(0,d.Te)(t("settings","Wiped {userid}'s devices",{userid:e}))),{timeout:2e3}).finally((()=>{this.loading.wipe=!1,this.loading.all=!1})))}),!0)},filterManagers(t){return t.filter((t=>t.id!==this.user.id))},async initManager(t){await this.$store.dispatch("getUser",t).then((t=>{this.currentManager=t?.data.ocs.data}))},async searchInitialUserManager(){this.loadingPossibleManagers=!0,await this.searchUserManager(),this.loadingPossibleManagers=!1},async loadGroupsDetails(){this.loading.groups=!0,this.loading.groupsDetails=!0;try{const t=await(0,P.Iu)({userId:this.user.id});this.availableGroups=this.availableGroups.map((e=>t.find((t=>t.id===e.id))??e))}catch(e){v.A.error(t("settings","Failed to load groups with details"),{error:e})}this.loading.groups=!1,this.loading.groupsDetails=!1},async loadSubAdminGroupsDetails(){this.loading.subadmins=!0,this.loading.subAdminGroupsDetails=!0;try{const t=await(0,P.FF)({userId:this.user.id});this.availableSubAdminGroups=this.availableSubAdminGroups.map((e=>t.find((t=>t.id===e.id))??e))}catch(e){v.A.error(t("settings","Failed to load sub admin groups with details"),{error:e})}this.loading.subadmins=!1,this.loading.subAdminGroupsDetails=!1},async searchGroups(e,s){if(""!==e){this.promise&&this.promise.cancel(),s(!0);try{this.promise=await(0,P.N_)({search:e,offset:0,limit:25});const t=await this.promise;this.availableGroups=t,this.availableSubAdminGroups=t.filter((t=>"admin"!==t.id))}catch(e){v.A.error(t("settings","Failed to search groups"),{error:e})}this.promise=null,s(!1)}},async searchUserManager(t){await this.$store.dispatch("searchUsers",{offset:0,limit:10,search:t}).then((t=>{const e=t?.data?this.filterManagers(Object.values(t?.data.ocs.data.users)):[];e.length>0&&(this.possibleManagers=e)}))},async updateUserManager(){this.loading.manager=!0;const e=this.user.manager;try{await this.$store.dispatch("setUserData",{userid:this.user.id,key:"manager",value:this.currentManager?this.currentManager.id:""})}catch(s){(0,d.Qg)(t("settings","Failed to update line manager")),v.A.error("Failed to update manager:",{error:s}),this.currentManager=e}finally{this.loading.manager=!1}},async deleteUser(){const e=this.user.id;await(0,st.C5)(),OC.dialogs.confirmDestructive(t("settings","Fully delete {userid}'s account including all their personal files, app data, etc.",{userid:e}),t("settings","Account deletion"),{type:OC.dialogs.YES_NO_BUTTONS,confirm:t("settings","Delete {userid}'s account",{userid:e}),confirmClasses:"error",cancel:t("settings","Cancel")},(t=>{if(t)return this.loading.delete=!0,this.loading.all=!0,this.$store.dispatch("deleteUser",e).then((()=>{this.loading.delete=!1,this.loading.all=!1}))}),!0)},enableDisableUser(){this.loading.delete=!0,this.loading.all=!0;const t=this.user.id,e=!this.user.enabled;return this.$store.dispatch("enableDisableUser",{userid:t,enabled:e}).then((()=>{this.loading.delete=!1,this.loading.all=!1}))},async updateDisplayName(){this.loading.displayName=!0;try{await this.$store.dispatch("setUserData",{userid:this.user.id,key:"displayname",value:this.editedDisplayName}),this.editedDisplayName===this.user.displayname&&(0,d.Te)(t("settings","Display name was successfully changed"))}finally{this.loading.displayName=!1}},async updatePassword(){if(this.loading.password=!0,0===this.editedPassword.length)(0,d.Qg)(t("settings","Password can't be empty")),this.loading.password=!1;else try{await this.$store.dispatch("setUserData",{userid:this.user.id,key:"password",value:this.editedPassword}),this.editedPassword="",(0,d.Te)(t("settings","Password was successfully changed"))}finally{this.loading.password=!1}},async updateEmail(){if(this.loading.mailAddress=!0,""===this.editedMail)(0,d.Qg)(t("settings","Email can't be empty")),this.loading.mailAddress=!1,this.editedMail=this.user.email;else try{await this.$store.dispatch("setUserData",{userid:this.user.id,key:"email",value:this.editedMail}),this.editedMail===this.user.email&&(0,d.Te)(t("settings","Email was successfully changed"))}finally{this.loading.mailAddress=!1}},async createGroup(e){let{name:s}=e;this.loading.groups=!0;try{await this.$store.dispatch("addGroup",s),this.availableGroups.push({id:s,name:s}),this.availableSubAdminGroups.push({id:s,name:s});const t=this.user.id;await this.$store.dispatch("addUserGroup",{userid:t,gid:s}),this.userGroups.push({id:s,name:s})}catch(e){v.A.error(t("settings","Failed to create group"),{error:e})}this.loading.groups=!1},async addUserGroup(t){if(t.isCreating)return;const e=this.user.id,s=t.id;if(!1!==t.canAdd){this.loading.groups=!0;try{await this.$store.dispatch("addUserGroup",{userid:e,gid:s}),this.userGroups.push(t)}catch(t){console.error(t)}this.loading.groups=!1}},async removeUserGroup(t){if(!1===t.canRemove)return!1;this.loading.groups=!0;const e=this.user.id,s=t.id;try{await this.$store.dispatch("removeUserGroup",{userid:e,gid:s}),this.userGroups=this.userGroups.filter((t=>t.id!==s)),this.loading.groups=!1,this.$route.params.selectedGroup===s&&this.$store.commit("deleteUser",e)}catch{this.loading.groups=!1}},async addUserSubAdmin(t){this.loading.subadmins=!0;const e=this.user.id,s=t.id;try{await this.$store.dispatch("addUserSubAdmin",{userid:e,gid:s}),this.userSubAdminGroups.push(t)}catch(t){console.error(t)}this.loading.subadmins=!1},async removeUserSubAdmin(t){this.loading.subadmins=!0;const e=this.user.id,s=t.id;try{await this.$store.dispatch("removeUserSubAdmin",{userid:e,gid:s}),this.userSubAdminGroups=this.userSubAdminGroups.filter((t=>t.id!==s))}catch(t){console.error(t)}finally{this.loading.subadmins=!1}},async setUserQuota(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"none";"none"===t&&(t=pt.SA),this.loading.quota=!0,t=t.id?t.id:t;try{const e=((0,O.lT)(t,!0)||t).toString();await this.$store.dispatch("setUserData",{userid:this.user.id,key:"quota",value:e})}catch(t){console.error(t)}finally{this.loading.quota=!1}return t},validateQuota:t=>("object"==typeof t&&(t=t?.id||t.label),null===(0,O.lT)(t,!0)?pt.SA:{id:t=(0,O.v7)((0,O.lT)(t,!0)),label:t}),async setUserLanguage(t){this.loading.languages=!0;try{await this.$store.dispatch("setUserData",{userid:this.user.id,key:"language",value:t.code}),this.loading.languages=!1}catch(t){console.error(t)}return t},sendWelcomeMail(){this.loading.all=!0,this.$store.dispatch("sendWelcomeMail",this.user.id).then((()=>(0,d.Te)(t("settings","Welcome mail sent!"),{timeout:2e3}))).finally((()=>{this.loading.all=!1}))},async toggleEdit(){this.editing=!this.editing,this.editing&&(await this.$nextTick(),this.$refs.displayNameField?.$refs?.inputField?.$refs?.input?.focus(),this.loadGroupsDetails(),this.loadSubAdminGroupsDetails()),this.editedDisplayName!==this.user.displayname?this.editedDisplayName=this.user.displayname:this.editedMail!==this.user.email&&(this.editedMail=this.user.email??"")}}};var mt=a(7073),vt={};vt.styleTagTransform=L(),vt.setAttributes=k(),vt.insert=x().bind(null,"head"),vt.domAPI=b(),vt.insertStyleElement=G(),_()(mt.A,vt),mt.A&&mt.A.locals&&mt.A.locals;var Ct=(0,I.A)(ht,(function(){var t=this,e=t._self._c;return e("tr",{staticClass:"user-list__row",attrs:{"data-cy-user-row":t.user.id}},[e("td",{staticClass:"row__cell row__cell--avatar",attrs:{"data-cy-user-list-cell-avatar":""}},[t.isLoadingUser?e("NcLoadingIcon",{attrs:{name:t.t("settings","Loading account …"),size:32}}):t.visible?e("NcAvatar",{attrs:{"disable-menu":"","show-user-status":!1,user:t.user.id}}):t._e()],1),t._v(" "),e("td",{staticClass:"row__cell row__cell--displayname",attrs:{"data-cy-user-list-cell-displayname":""}},[t.editing&&t.user.backendCapabilities.setDisplayName?[e("NcTextField",{ref:"displayNameField",staticClass:"user-row-text-field",class:{"icon-loading-small":t.loading.displayName},attrs:{"data-cy-user-list-input-displayname":"","data-loading":t.loading.displayName||void 0,"trailing-button-label":t.t("settings","Submit"),"show-trailing-button":!0,disabled:t.loading.displayName||t.isLoadingField,label:t.t("settings","Change display name"),"trailing-button-icon":"arrowRight",value:t.editedDisplayName,autocapitalize:"off",autocomplete:"off",spellcheck:"false"},on:{"update:value":function(e){t.editedDisplayName=e},"trailing-button-click":t.updateDisplayName}})]:t.isObfuscated?t._e():e("strong",{attrs:{title:t.user.displayname?.length>20?t.user.displayname:null}},[t._v("\n\t\t\t"+t._s(t.user.displayname)+"\n\t\t")])],2),t._v(" "),e("td",{staticClass:"row__cell row__cell--username",attrs:{"data-cy-user-list-cell-username":""}},[e("span",{staticClass:"row__subtitle"},[t._v(t._s(t.user.id))])]),t._v(" "),e("td",{staticClass:"row__cell",class:{"row__cell--obfuscated":t.hasObfuscated},attrs:{"data-cy-user-list-cell-password":""}},[t.editing&&t.settings.canChangePassword&&t.user.backendCapabilities.setPassword?[e("NcTextField",{staticClass:"user-row-text-field",class:{"icon-loading-small":t.loading.password},attrs:{"data-cy-user-list-input-password":"","data-loading":t.loading.password||void 0,"trailing-button-label":t.t("settings","Submit"),"show-trailing-button":!0,disabled:t.loading.password||t.isLoadingField,minlength:t.minPasswordLength,maxlength:"469",label:t.t("settings","Set new password"),"trailing-button-icon":"arrowRight",value:t.editedPassword,autocapitalize:"off",autocomplete:"new-password",required:"",spellcheck:"false",type:"password"},on:{"update:value":function(e){t.editedPassword=e},"trailing-button-click":t.updatePassword}})]:t.isObfuscated?e("span",[t._v("\n\t\t\t"+t._s(t.t("settings","You do not have permissions to see the details of this account"))+"\n\t\t")]):t._e()],2),t._v(" "),e("td",{staticClass:"row__cell",attrs:{"data-cy-user-list-cell-email":""}},[t.editing?[e("NcTextField",{staticClass:"user-row-text-field",class:{"icon-loading-small":t.loading.mailAddress},attrs:{"data-cy-user-list-input-email":"","data-loading":t.loading.mailAddress||void 0,"show-trailing-button":!0,"trailing-button-label":t.t("settings","Submit"),label:t.t("settings","Set new email address"),disabled:t.loading.mailAddress||t.isLoadingField,"trailing-button-icon":"arrowRight",value:t.editedMail,autocapitalize:"off",autocomplete:"email",spellcheck:"false",type:"email"},on:{"update:value":function(e){t.editedMail=e},"trailing-button-click":t.updateEmail}})]:t.isObfuscated?t._e():e("span",{attrs:{title:t.user.email?.length>20?t.user.email:null}},[t._v("\n\t\t\t"+t._s(t.user.email)+"\n\t\t")])],2),t._v(" "),e("td",{staticClass:"row__cell row__cell--large row__cell--multiline",attrs:{"data-cy-user-list-cell-groups":""}},[t.editing?[e("label",{staticClass:"hidden-visually",attrs:{for:"groups"+t.uniqueId}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Add account to group"))+"\n\t\t\t")]),t._v(" "),e("NcSelect",{attrs:{"data-cy-user-list-input-groups":"","data-loading":t.loading.groups||void 0,"input-id":"groups"+t.uniqueId,"close-on-select":!1,disabled:t.isLoadingField||t.loading.groupsDetails,loading:t.loading.groups,multiple:!0,"append-to-body":!1,options:t.availableGroups,placeholder:t.t("settings","Add account to group"),taggable:t.settings.isAdmin||t.settings.isDelegatedAdmin,value:t.userGroups,label:"name","no-wrap":!0,"create-option":t=>({id:t,name:t,isCreating:!0})},on:{search:t.searchGroups,"option:created":t.createGroup,"option:selected":e=>t.addUserGroup(e.at(-1)),"option:deselected":t.removeUserGroup}})]:t.isObfuscated?t._e():e("span",{attrs:{title:t.userGroupsLabels?.length>40?t.userGroupsLabels:null}},[t._v("\n\t\t\t"+t._s(t.userGroupsLabels)+"\n\t\t")])],2),t._v(" "),t.settings.isAdmin||t.settings.isDelegatedAdmin?e("td",{staticClass:"row__cell row__cell--large row__cell--multiline",attrs:{"data-cy-user-list-cell-subadmins":""}},[t.editing&&(t.settings.isAdmin||t.settings.isDelegatedAdmin)?[e("label",{staticClass:"hidden-visually",attrs:{for:"subadmins"+t.uniqueId}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Set account as admin for"))+"\n\t\t\t")]),t._v(" "),e("NcSelect",{attrs:{"data-cy-user-list-input-subadmins":"","data-loading":t.loading.subadmins||void 0,"input-id":"subadmins"+t.uniqueId,"close-on-select":!1,disabled:t.isLoadingField||t.loading.subAdminGroupsDetails,loading:t.loading.subadmins,label:"name","append-to-body":!1,multiple:!0,"no-wrap":!0,options:t.availableSubAdminGroups,placeholder:t.t("settings","Set account as admin for"),value:t.userSubAdminGroups},on:{search:t.searchGroups,"option:deselected":t.removeUserSubAdmin,"option:selected":e=>t.addUserSubAdmin(e.at(-1))}})]:t.isObfuscated?t._e():e("span",{attrs:{title:t.userSubAdminGroupsLabels?.length>40?t.userSubAdminGroupsLabels:null}},[t._v("\n\t\t\t"+t._s(t.userSubAdminGroupsLabels)+"\n\t\t")])],2):t._e(),t._v(" "),e("td",{staticClass:"row__cell",attrs:{"data-cy-user-list-cell-quota":""}},[t.editing?[e("label",{staticClass:"hidden-visually",attrs:{for:"quota"+t.uniqueId}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Select account quota"))+"\n\t\t\t")]),t._v(" "),e("NcSelect",{attrs:{"close-on-select":!0,"create-option":t.validateQuota,"data-cy-user-list-input-quota":"","data-loading":t.loading.quota||void 0,disabled:t.isLoadingField,loading:t.loading.quota,"append-to-body":!1,clearable:!1,"input-id":"quota"+t.uniqueId,options:t.quotaOptions,placeholder:t.t("settings","Select account quota"),taggable:!0},on:{"option:selected":t.setUserQuota},model:{value:t.editedUserQuota,callback:function(e){t.editedUserQuota=e},expression:"editedUserQuota"}})]:t.isObfuscated?t._e():[e("span",{attrs:{id:"quota-progress"+t.uniqueId}},[t._v(t._s(t.userQuota)+" ("+t._s(t.usedSpace)+")")]),t._v(" "),e("NcProgressBar",{staticClass:"row__progress",class:{"row__progress--warn":t.usedQuota>80},attrs:{"aria-labelledby":"quota-progress"+t.uniqueId,value:t.usedQuota}})]],2),t._v(" "),t.showConfig.showLanguages?e("td",{staticClass:"row__cell row__cell--large",attrs:{"data-cy-user-list-cell-language":""}},[t.editing?[e("label",{staticClass:"hidden-visually",attrs:{for:"language"+t.uniqueId}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Set the language"))+"\n\t\t\t")]),t._v(" "),e("NcSelect",{attrs:{id:"language"+t.uniqueId,"data-cy-user-list-input-language":"","data-loading":t.loading.languages||void 0,"allow-empty":!1,disabled:t.isLoadingField,loading:t.loading.languages,clearable:!1,"append-to-body":!1,options:t.availableLanguages,placeholder:t.t("settings","No language set"),value:t.userLanguage,label:"name"},on:{input:t.setUserLanguage}})]:t.isObfuscated?t._e():e("span",[t._v("\n\t\t\t"+t._s(t.userLanguage.name)+"\n\t\t")])],2):t._e(),t._v(" "),t.showConfig.showUserBackend||t.showConfig.showStoragePath?e("td",{staticClass:"row__cell row__cell--large",attrs:{"data-cy-user-list-cell-storage-location":""}},[t.isObfuscated?t._e():[t.showConfig.showUserBackend?e("span",[t._v(t._s(t.user.backend))]):t._e(),t._v(" "),t.showConfig.showStoragePath?e("span",{staticClass:"row__subtitle",attrs:{title:t.user.storageLocation}},[t._v("\n\t\t\t\t"+t._s(t.user.storageLocation)+"\n\t\t\t")]):t._e()]],2):t._e(),t._v(" "),t.showConfig.showFirstLogin?e("td",{staticClass:"row__cell",attrs:{"data-cy-user-list-cell-first-login":""}},[t.isObfuscated?t._e():e("span",[t._v(t._s(t.userFirstLogin))])]):t._e(),t._v(" "),t.showConfig.showLastLogin?e("td",{staticClass:"row__cell",attrs:{title:t.userLastLoginTooltip,"data-cy-user-list-cell-last-login":""}},[t.isObfuscated?t._e():e("span",[t._v(t._s(t.userLastLogin))])]):t._e(),t._v(" "),e("td",{staticClass:"row__cell row__cell--large row__cell--fill",attrs:{"data-cy-user-list-cell-manager":""}},[t.editing?[e("label",{staticClass:"hidden-visually",attrs:{for:"manager"+t.uniqueId}},[t._v("\n\t\t\t\t"+t._s(t.managerLabel)+"\n\t\t\t")]),t._v(" "),e("NcSelect",{staticClass:"select--fill",attrs:{"data-cy-user-list-input-manager":"","data-loading":t.loading.manager||void 0,"input-id":"manager"+t.uniqueId,disabled:t.isLoadingField,loading:t.loadingPossibleManagers||t.loading.manager,options:t.possibleManagers,placeholder:t.managerLabel,label:"displayname",filterable:!1,"internal-search":!1,clearable:!0},on:{open:t.searchInitialUserManager,search:t.searchUserManager,"update:model-value":t.updateUserManager},model:{value:t.currentManager,callback:function(e){t.currentManager=e},expression:"currentManager"}})]:t.isObfuscated?t._e():e("span",[t._v("\n\t\t\t"+t._s(t.user.manager)+"\n\t\t")])],2),t._v(" "),e("td",{staticClass:"row__cell row__cell--actions",attrs:{"data-cy-user-list-cell-actions":""}},[t.visible&&!t.isObfuscated&&t.canEdit&&!t.loading.all?e("UserRowActions",{attrs:{actions:t.userActions,disabled:t.isLoadingField,edit:t.editing,user:t.user},on:{"update:edit":t.toggleEdit}}):t._e()],1)])}),[],!1,null,"7faa9864",null);const wt=Ct.exports,_t=Object.freeze({id:"",displayName:"",password:"",mailAddress:"",groups:[],manager:"",subAdminsGroups:[],quota:pt.MY,language:{code:"en",name:t("settings","Default language")}}),ft={name:"UserList",components:{Fragment:c.F,NcEmptyContent:u.A,NcIconSvgWrapper:g.A,NcLoadingIcon:A.A,NewUserDialog:H,UserListFooter:X,UserListHeader:tt,VirtualList:q},props:{selectedGroup:{type:String,default:null},externalActions:{type:Array,default:()=>[]}},setup:()=>({mdiAccountGroup:l.n7C,rowHeight:55,UserRow:wt}),data:()=>({loading:{all:!1,groups:!1,users:!1},newUser:{..._t},isInitialLoad:!0,searchQuery:""}),computed:{showConfig(){return this.$store.getters.getShowConfig},settings(){return this.$store.getters.getServerData},style(){return{"--row-height":`${this.rowHeight}px`}},hasObfuscated(){return this.filteredUsers.some((t=>(0,pt.HK)(t)))},users(){return this.$store.getters.getUsers},filteredUsers(){return"disabled"===this.selectedGroup?this.users.filter((t=>!1===t.enabled)):this.users.filter((t=>!1!==t.enabled))},groups(){return this.$store.getters.getSortedGroups.filter((t=>"__nc_internal_recent"!==t.id&&"disabled"!==t.id))},quotaOptions(){const t=this.settings.quotaPreset.reduce(((t,e)=>t.concat({id:e,label:e})),[]);return this.settings.allowUnlimitedQuota&&t.unshift(pt.SA),t.unshift(pt.MY),t},usersOffset(){return this.$store.getters.getUsersOffset},usersLimit(){return this.$store.getters.getUsersLimit},disabledUsersOffset(){return this.$store.getters.getDisabledUsersOffset},disabledUsersLimit(){return this.$store.getters.getDisabledUsersLimit},usersCount(){return this.users.length},languages(){return[{label:t("settings","Common languages"),languages:this.settings.languages.commonLanguages},{label:t("settings","Other languages"),languages:this.settings.languages.otherLanguages}]}},watch:{async selectedGroup(t){this.isInitialLoad=!0,await this.redirectIfDisabled(),this.$store.commit("resetUsers"),await this.loadUsers(),this.setNewUserDefaultGroup(t)},filteredUsers(t){v.A.debug(`${t.length} filtered user(s)`)}},async created(){await this.loadUsers()},async mounted(){this.settings.canChangePassword||OC.Notification.showTemporary(t("settings","Password change is disabled because the master key is disabled")),this.resetForm(),(0,n.B1)("nextcloud:unified-search.search",this.search),(0,n.B1)("nextcloud:unified-search.reset",this.resetSearch),await this.redirectIfDisabled()},beforeDestroy(){(0,n.al)("nextcloud:unified-search.search",this.search),(0,n.al)("nextcloud:unified-search.reset",this.resetSearch)},methods:{async handleScrollEnd(){await this.loadUsers()},async loadUsers(){this.loading.users=!0;try{"disabled"===this.selectedGroup?await this.$store.dispatch("getDisabledUsers",{offset:this.disabledUsersOffset,limit:this.disabledUsersLimit,search:this.searchQuery}):"__nc_internal_recent"===this.selectedGroup?await this.$store.dispatch("getRecentUsers",{offset:this.usersOffset,limit:this.usersLimit,search:this.searchQuery}):await this.$store.dispatch("getUsers",{offset:this.usersOffset,limit:this.usersLimit,group:this.selectedGroup,search:this.searchQuery}),v.A.debug(`${this.users.length} total user(s) loaded`)}catch(t){v.A.error("Failed to load accounts",{error:t}),(0,d.Qg)("Failed to load accounts")}this.loading.users=!1,this.isInitialLoad=!1},closeDialog(){this.$store.commit("setShowConfig",{key:"showNewUserForm",value:!1})},async search(t){let{query:e}=t;this.searchQuery=e,this.$store.commit("resetUsers"),await this.loadUsers()},resetSearch(){this.search({query:""})},resetForm(){this.newUser=Object.assign({},_t),this.settings.defaultLanguage&&r.Ay.set(this.newUser.language,"code",this.settings.defaultLanguage),this.setNewUserDefaultGroup(this.selectedGroup),this.loading.all=!1},setNewUserDefaultGroup(t){if(t||this.settings.isAdmin||this.settings.isDelegatedAdmin){if(t){const e=this.groups.find((e=>e.id===t));if(e)return void(this.newUser.groups=[e])}this.newUser.groups=[]}else{const t=this.$store.getters.getSubAdminGroups;1===t.length&&(this.newUser.groups=[...t])}},async redirectIfDisabled(){const t=this.$store.getters.getGroups;"disabled"===this.selectedGroup&&t.findIndex((t=>"disabled"===t.id&&0===t.usercount))>-1&&(this.$router.push({name:"users"}),await this.loadUsers())}}};var bt=a(79498),yt={};yt.styleTagTransform=L(),yt.setAttributes=k(),yt.insert=x().bind(null,"head"),yt.domAPI=b(),yt.insertStyleElement=G(),_()(bt.A,yt),bt.A&&bt.A.locals&&bt.A.locals;const xt=(0,I.A)(ft,(function(){var t=this,e=t._self._c;return e("Fragment",[t.showConfig.showNewUserForm?e("NewUserDialog",{attrs:{loading:t.loading,"new-user":t.newUser,"quota-options":t.quotaOptions},on:{reset:t.resetForm,closing:t.closeDialog}}):t._e(),t._v(" "),0===t.filteredUsers.length?e("NcEmptyContent",{staticClass:"empty",attrs:{name:t.isInitialLoad&&t.loading.users?null:t.t("settings","No accounts")},scopedSlots:t._u([{key:"icon",fn:function(){return[t.isInitialLoad&&t.loading.users?e("NcLoadingIcon",{attrs:{name:t.t("settings","Loading accounts …"),size:64}}):e("NcIconSvgWrapper",{attrs:{path:t.mdiAccountGroup,size:64}})]},proxy:!0}],null,!1,226056511)}):e("VirtualList",{style:t.style,attrs:{"data-component":t.UserRow,"data-sources":t.filteredUsers,"data-key":"id","data-cy-user-list":"","item-height":t.rowHeight,"extra-props":{users:t.users,settings:t.settings,hasObfuscated:t.hasObfuscated,quotaOptions:t.quotaOptions,languages:t.languages,externalActions:t.externalActions}},on:{"scroll-end":t.handleScrollEnd},scopedSlots:t._u([{key:"before",fn:function(){return[e("caption",{staticClass:"hidden-visually"},[t._v("\n\t\t\t\t"+t._s(t.t("settings","List of accounts. This list is not fully rendered for performance reasons. The accounts will be rendered as you navigate through the list."))+"\n\t\t\t")])]},proxy:!0},{key:"header",fn:function(){return[e("UserListHeader",{attrs:{"has-obfuscated":t.hasObfuscated}})]},proxy:!0},{key:"footer",fn:function(){return[e("UserListFooter",{attrs:{loading:t.loading.users,"filtered-users":t.filteredUsers}})]},proxy:!0}])})],1)}),[],!1,null,"1e8fee5a",null).exports,Nt=(0,r.pM)({name:"UserManagement",components:{NcAppContent:o.A,UserList:xt},data:()=>({externalActions:[]}),computed:{pageHeading(){return null===this.selectedGroupDecoded?(0,i.Tl)("settings","All accounts"):{admin:(0,i.Tl)("settings","Admins"),disabled:(0,i.Tl)("settings","Disabled accounts")}[this.selectedGroupDecoded]??(0,i.Tl)("settings","Account group: {group}",{group:this.selectedGroupDecoded})},selectedGroup(){return this.$route.params.selectedGroup},selectedGroupDecoded(){return this.selectedGroup?decodeURIComponent(this.selectedGroup):null}},beforeMount(){this.$store.dispatch("getPasswordPolicyMinLength")},created(){window.OCA=window.OCA??{},window.OCA.Settings=window.OCA.Settings??{},window.OCA.Settings.UserList=window.OCA.Settings.UserList??{},window.OCA.Settings.UserList.registerAction=this.registerAction,(0,n.Ic)("settings:user-management:loaded")},methods:{t:i.Tl,registerAction(t,e,s,a){return this.externalActions.push({icon:t,text:e,action:s,enabled:a}),this.externalActions}}});var kt=a(82009),St={};St.styleTagTransform=L(),St.setAttributes=k(),St.insert=x().bind(null,"head"),St.domAPI=b(),St.insertStyleElement=G(),_()(kt.A,St),kt.A&&kt.A.locals&&kt.A.locals;const Gt=(0,I.A)(Nt,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("NcAppContent",{attrs:{"page-heading":t.pageHeading}},[e("UserList",{attrs:{"selected-group":t.selectedGroupDecoded,"external-actions":t.externalActions}})],1)}),[],!1,null,"253f9eec",null).exports}}]); +//# sourceMappingURL=settings-users-3239.js.map?v=0828a85406800581fcfe
\ No newline at end of file diff --git a/dist/settings-users-3239.js.map b/dist/settings-users-3239.js.map index d412cdfbe3c..116555f72c0 100644 --- a/dist/settings-users-3239.js.map +++ b/dist/settings-users-3239.js.map @@ -1 +1 @@ -{"version":3,"file":"settings-users-3239.js?v=a1ded3f60f3185c4ac3b","mappings":"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","sources":["webpack:///nextcloud/apps/settings/src/components/Users/UserSettingsDialog.vue?vue&type=style&index=0&id=9f7a355c&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/Users/VirtualList.vue?vue&type=style&index=0&id=21942da5&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/Users/UserListHeader.vue?vue&type=style&index=0&id=5c0f8828&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/service/groups.ts","webpack:///nextcloud/apps/settings/src/views/UserManagementNavigation.vue?vue&type=style&index=0&id=edf83404&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/Users/UserRow.vue?vue&type=style&index=0&id=e966b116&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/Users/NewUserDialog.vue?vue&type=style&index=0&id=70bbf4c9&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/views/UserManagementNavigation.vue","webpack:///nextcloud/apps/settings/src/components/Users/UserSettingsDialog.vue","webpack:///nextcloud/apps/settings/src/components/Users/UserSettingsDialog.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/Users/UserSettingsDialog.vue?da91","webpack://nextcloud/./apps/settings/src/components/Users/UserSettingsDialog.vue?f361","webpack://nextcloud/./apps/settings/src/components/Users/UserSettingsDialog.vue?824e","webpack:///nextcloud/apps/settings/src/components/AppNavigationGroupList.vue","webpack:///nextcloud/apps/settings/src/components/GroupListItem.vue","webpack:///nextcloud/apps/settings/src/components/GroupListItem.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/GroupListItem.vue?2db5","webpack://nextcloud/./apps/settings/src/components/GroupListItem.vue?7b19","webpack://nextcloud/./apps/settings/src/components/GroupListItem.vue?9f48","webpack:///nextcloud/apps/settings/src/composables/useGroupsNavigation.ts","webpack:///nextcloud/apps/settings/src/components/AppNavigationGroupList.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/settings/src/components/AppNavigationGroupList.vue?c74f","webpack:///nextcloud/apps/settings/src/views/UserManagementNavigation.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/settings/src/views/UserManagementNavigation.vue?3dcd","webpack://nextcloud/./apps/settings/src/views/UserManagementNavigation.vue?28b6","webpack://nextcloud/./apps/settings/src/views/UserManagement.vue?4b28","webpack:///nextcloud/apps/settings/src/components/Users/VirtualList.vue","webpack:///nextcloud/apps/settings/src/components/Users/VirtualList.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/settings/src/components/Users/VirtualList.vue?7ade","webpack://nextcloud/./apps/settings/src/components/Users/VirtualList.vue?1915","webpack://nextcloud/./apps/settings/src/components/Users/NewUserDialog.vue?dc2d","webpack:///nextcloud/apps/settings/src/components/Users/NewUserDialog.vue","webpack:///nextcloud/apps/settings/src/components/Users/NewUserDialog.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/Users/NewUserDialog.vue?9f19","webpack://nextcloud/./apps/settings/src/components/Users/NewUserDialog.vue?64c6","webpack:///nextcloud/apps/settings/src/components/Users/UserListFooter.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/settings/src/components/Users/UserListFooter.vue","webpack://nextcloud/./apps/settings/src/components/Users/UserListFooter.vue?b1db","webpack://nextcloud/./apps/settings/src/components/Users/UserListFooter.vue?b843","webpack:///nextcloud/apps/settings/src/components/Users/UserListHeader.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/settings/src/components/Users/UserListHeader.vue","webpack://nextcloud/./apps/settings/src/components/Users/UserListHeader.vue?e7ff","webpack://nextcloud/./apps/settings/src/components/Users/UserListHeader.vue?758a","webpack://nextcloud/./apps/settings/src/components/Users/UserRow.vue?5434","webpack:///nextcloud/apps/settings/src/components/Users/UserRowActions.vue","webpack:///nextcloud/apps/settings/src/components/Users/UserRowActions.vue?vue&type=script&lang=ts","webpack:///nextcloud/node_modules/is-svg/index.js","webpack://nextcloud/./apps/settings/src/components/Users/UserRowActions.vue?3c2a","webpack:///nextcloud/apps/settings/src/mixins/UserRowMixin.js","webpack:///nextcloud/apps/settings/src/components/Users/UserRow.vue","webpack:///nextcloud/apps/settings/src/components/Users/UserRow.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/Users/UserRow.vue?586d","webpack://nextcloud/./apps/settings/src/components/Users/UserRow.vue?eb6e","webpack:///nextcloud/apps/settings/src/components/UserList.vue","webpack:///nextcloud/apps/settings/src/components/UserList.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/UserList.vue?750d","webpack://nextcloud/./apps/settings/src/components/UserList.vue?02a4","webpack://nextcloud/./apps/settings/src/components/UserList.vue?c96e","webpack:///nextcloud/apps/settings/src/views/UserManagement.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/settings/src/views/UserManagement.vue","webpack://nextcloud/./apps/settings/src/views/UserManagement.vue?c771","webpack://nextcloud/./apps/settings/src/views/UserManagement.vue?fd5a","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/index.mjs","webpack:///nextcloud/apps/settings/src/components/GroupListItem.vue?vue&type=style&index=0&id=161509be&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/UserList.vue?vue&type=style&index=0&id=1e8fee5a&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/views/UserManagement.vue?vue&type=style&index=0&id=253f9eec&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/Users/UserListFooter.vue?vue&type=style&index=0&id=db2a7c4e&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/utils/userUtils.ts"],"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, `.dialog__note[data-v-9f7a355c]{font-weight:normal}fieldset[data-v-9f7a355c]{font-weight:bold}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/UserSettingsDialog.vue\"],\"names\":[],\"mappings\":\"AAEC,+BACC,kBAAA,CAIF,0BACC,gBAAA\",\"sourcesContent\":[\"\\n.dialog {\\n\\t&__note {\\n\\t\\tfont-weight: normal;\\n\\t}\\n}\\n\\nfieldset {\\n\\tfont-weight: bold;\\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-list[data-v-21942da5]{--avatar-cell-width: 48px;--cell-padding: 7px;--cell-width: 200px;--cell-width-large: 300px;--cell-min-width: calc(var(--cell-width) - (2 * var(--cell-padding)));--sticky-column-z-index: calc(var(--vs-dropdown-z-index) + 1);display:block;overflow:auto;height:100%;will-change:scroll-position}.user-list__header[data-v-21942da5],.user-list__footer[data-v-21942da5]{position:sticky;display:block}.user-list__header[data-v-21942da5]{top:0;z-index:calc(var(--sticky-column-z-index) + 1)}.user-list__footer[data-v-21942da5]{inset-inline-start:0}.user-list__body[data-v-21942da5]{display:flex;flex-direction:column;width:100%}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/VirtualList.vue\"],\"names\":[],\"mappings\":\"AACA,4BACC,yBAAA,CACA,mBAAA,CACA,mBAAA,CACA,yBAAA,CACA,qEAAA,CACA,6DAAA,CAGA,aAAA,CACA,aAAA,CACA,WAAA,CACA,2BAAA,CAEA,wEAEC,eAAA,CAEA,aAAA,CAGD,oCACC,KAAA,CACA,8CAAA,CAGD,oCACC,oBAAA,CAGD,kCACC,YAAA,CACA,qBAAA,CACA,UAAA\",\"sourcesContent\":[\"\\n.user-list {\\n\\t--avatar-cell-width: 48px;\\n\\t--cell-padding: 7px;\\n\\t--cell-width: 200px;\\n\\t--cell-width-large: 300px;\\n\\t--cell-min-width: calc(var(--cell-width) - (2 * var(--cell-padding)));\\n\\t--sticky-column-z-index: calc(var(--vs-dropdown-z-index) + 1); // Keep the sticky column on top of the select dropdown\\n\\n\\t// Necessary for virtual scroll optimized rendering\\n\\tdisplay: block;\\n\\toverflow: auto;\\n\\theight: 100%;\\n\\twill-change: scroll-position;\\n\\n\\t&__header,\\n\\t&__footer {\\n\\t\\tposition: sticky;\\n\\t\\t// Fix sticky positioning in Firefox\\n\\t\\tdisplay: block;\\n\\t}\\n\\n\\t&__header {\\n\\t\\ttop: 0;\\n\\t\\tz-index: calc(var(--sticky-column-z-index) + 1);\\n\\t}\\n\\n\\t&__footer {\\n\\t\\tinset-inline-start: 0;\\n\\t}\\n\\n\\t&__body {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\twidth: 100%;\\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[data-v-5c0f8828]{border-bottom:1px solid var(--color-border);position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background)}.header__cell[data-v-5c0f8828]{display:flex;flex-direction:column;justify-content:center;padding:0 var(--cell-padding);min-width:var(--cell-width);width:var(--cell-width);color:var(--color-main-text)}.header__cell strong[data-v-5c0f8828],.header__cell span[data-v-5c0f8828],.header__cell label[data-v-5c0f8828]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.header__cell--avatar[data-v-5c0f8828],.header__cell--displayname[data-v-5c0f8828]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.header__cell--avatar[data-v-5c0f8828]{inset-inline-start:0}.header__cell--displayname[data-v-5c0f8828]{inset-inline-start:var(--avatar-cell-width);border-inline-end:1px solid var(--color-border)}}.header__cell--username[data-v-5c0f8828]{padding-inline-start:calc(var(--default-grid-baseline)*3)}.header__cell--avatar[data-v-5c0f8828]{min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0;user-select:none}.header__cell--multiline span[data-v-5c0f8828]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.header__cell--multiline span[data-v-5c0f8828]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.header__cell--large[data-v-5c0f8828]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.header__cell--obfuscated[data-v-5c0f8828]{min-width:400px;width:400px}.header__cell--fill[data-v-5c0f8828]{min-width:var(--cell-width-large);width:100%}.header__cell--actions[data-v-5c0f8828]{position:sticky;inset-inline-end:0;z-index:var(--sticky-column-z-index);display:flex;flex-direction:row;align-items:center;min-width:110px;width:110px;background-color:var(--color-main-background);border-inline-start:1px solid var(--color-border)}.header__subtitle[data-v-5c0f8828]{color:var(--color-text-maxcontrast)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/UserListHeader.vue\",\"webpack://./apps/settings/src/components/Users/shared/styles.scss\"],\"names\":[],\"mappings\":\"AAGA,yBACC,2CAAA,CCEA,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CAIA,+BACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,6BAAA,CACA,2BAAA,CACA,uBAAA,CACA,4BAAA,CAEA,+GAGC,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CAGD,yBACC,mFAEC,eAAA,CACA,oCAAA,CACA,6CAAA,CAGD,uCACC,oBAAA,CAGD,4CACC,2CAAA,CACA,+CAAA,CAAA,CAIF,yCACC,yDAAA,CAGD,uCACC,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CACA,gBAAA,CAIA,+CACC,iBAAA,CACA,iBAAA,CAEA,iCAJD,+CAKE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,sCACC,iCAAA,CACA,6BAAA,CAGD,2CACC,eAAA,CACA,WAAA,CAID,qCACC,iCAAA,CACA,UAAA,CAGD,wCACC,eAAA,CACA,kBAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,iDAAA,CAIF,mCACC,mCAAA\",\"sourcesContent\":[\"\\n@use './shared/styles';\\n\\n.header {\\n\\tborder-bottom: 1px solid var(--color-border);\\n\\n\\t@include styles.row;\\n\\t@include styles.cell;\\n}\\n\",\"/**\\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n\\n@mixin row {\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\tmin-width: 100%;\\n\\twidth: fit-content;\\n\\theight: var(--row-height);\\n\\tbackground-color: var(--color-main-background);\\n}\\n\\n@mixin cell {\\n\\t&__cell {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: center;\\n\\t\\tpadding: 0 var(--cell-padding);\\n\\t\\tmin-width: var(--cell-width);\\n\\t\\twidth: var(--cell-width);\\n\\t\\tcolor: var(--color-main-text);\\n\\n\\t\\tstrong,\\n\\t\\tspan,\\n\\t\\tlabel {\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\toverflow-wrap: anywhere;\\n\\t\\t}\\n\\n\\t\\t@media (min-width: 670px) { /* Show one &--large column between stickied columns */\\n\\t\\t\\t&--avatar,\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tposition: sticky;\\n\\t\\t\\t\\tz-index: var(--sticky-column-z-index);\\n\\t\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--avatar {\\n\\t\\t\\t\\tinset-inline-start: 0;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tinset-inline-start: var(--avatar-cell-width);\\n\\t\\t\\t\\tborder-inline-end: 1px solid var(--color-border);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--username {\\n\\t\\t\\tpadding-inline-start: calc(var(--default-grid-baseline) * 3);\\n\\t\\t}\\n\\n\\t\\t&--avatar {\\n\\t\\t\\tmin-width: var(--avatar-cell-width);\\n\\t\\t\\twidth: var(--avatar-cell-width);\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\tuser-select: none;\\n\\t\\t}\\n\\n\\t\\t&--multiline {\\n\\t\\t\\tspan {\\n\\t\\t\\t\\tline-height: 1.3em;\\n\\t\\t\\t\\twhite-space: unset;\\n\\n\\t\\t\\t\\t@supports (-webkit-line-clamp: 2) {\\n\\t\\t\\t\\t\\tdisplay: -webkit-box;\\n\\t\\t\\t\\t\\t-webkit-line-clamp: 2;\\n\\t\\t\\t\\t\\t-webkit-box-orient: vertical;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--large {\\n\\t\\t\\tmin-width: var(--cell-width-large);\\n\\t\\t\\twidth: var(--cell-width-large);\\n\\t\\t}\\n\\n\\t\\t&--obfuscated {\\n\\t\\t\\tmin-width: 400px;\\n\\t\\t\\twidth: 400px;\\n\\t\\t}\\n\\n\\t\\t// Fill remaining row space with cell\\n\\t\\t&--fill {\\n\\t\\t\\tmin-width: var(--cell-width-large);\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\n\\t\\t&--actions {\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\tinset-inline-end: 0;\\n\\t\\t\\tz-index: var(--sticky-column-z-index);\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: row;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tmin-width: 110px;\\n\\t\\t\\twidth: 110px;\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\tborder-inline-start: 1px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t&__subtitle {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport axios from '@nextcloud/axios';\nimport { generateOcsUrl } from '@nextcloud/router';\nimport { CancelablePromise } from 'cancelable-promise';\nconst formatGroup = (group) => ({\n id: group.id,\n name: group.displayname,\n usercount: group.usercount,\n disabled: group.disabled,\n canAdd: group.canAdd,\n canRemove: group.canRemove,\n});\n/**\n * Search groups\n *\n * @param {object} options Options\n * @param {string} options.search Search query\n * @param {number} options.offset Offset\n * @param {number} options.limit Limit\n */\nexport const searchGroups = ({ search, offset, limit }) => {\n const controller = new AbortController();\n return new CancelablePromise(async (resolve, reject, onCancel) => {\n onCancel(() => controller.abort());\n try {\n const { data } = await axios.get(generateOcsUrl('/cloud/groups/details?search={search}&offset={offset}&limit={limit}', { search, offset, limit }), {\n signal: controller.signal,\n });\n const groups = data.ocs?.data?.groups ?? [];\n const formattedGroups = groups.map(formatGroup);\n resolve(formattedGroups);\n }\n catch (error) {\n reject(error);\n }\n });\n};\n/**\n * Load user groups\n *\n * @param {object} options Options\n * @param {string} options.userId User id\n */\nexport const loadUserGroups = async ({ userId }) => {\n const url = generateOcsUrl('/cloud/users/{userId}/groups/details', { userId });\n const { data } = await axios.get(url);\n const groups = data.ocs?.data?.groups ?? [];\n const formattedGroups = groups.map(formatGroup);\n return formattedGroups;\n};\n/**\n * Load user subadmin groups\n *\n * @param {object} options Options\n * @param {string} options.userId User id\n */\nexport const loadUserSubAdminGroups = async ({ userId }) => {\n const url = generateOcsUrl('/cloud/users/{userId}/subadmins/details', { userId });\n const { data } = await axios.get(url);\n const groups = data.ocs?.data?.groups ?? [];\n const formattedGroups = groups.map(formatGroup);\n return formattedGroups;\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, `.account-management__navigation[data-v-edf83404] .app-navigation__body{will-change:scroll-position}.account-management__system-list[data-v-edf83404]{height:auto !important;overflow:visible !important}.account-management__group-list[data-v-edf83404]{height:100% !important}.account-management__settings-toggle[data-v-edf83404]{margin-bottom:12px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/views/UserManagementNavigation.vue\"],\"names\":[],\"mappings\":\"AAGE,uEACC,2BAAA,CAGF,kDACC,sBAAA,CACA,2BAAA,CAGD,iDACC,sBAAA,CAGD,sDACC,kBAAA\",\"sourcesContent\":[\"\\n.account-management {\\n\\t&__navigation {\\n\\t\\t:deep(.app-navigation__body) {\\n\\t\\t\\twill-change: scroll-position;\\n\\t\\t}\\n\\t}\\n\\t&__system-list {\\n\\t\\theight: auto !important;\\n\\t\\toverflow: visible !important;\\n\\t}\\n\\n\\t&__group-list {\\n\\t\\theight: 100% !important;\\n\\t}\\n\\n\\t&__settings-toggle {\\n\\t\\tmargin-bottom: 12px;\\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-list__row[data-v-e966b116]{position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background)}.user-list__row[data-v-e966b116]:hover{background-color:var(--color-background-hover)}.user-list__row:hover .row__cell[data-v-e966b116]:not(.row__cell--actions){background-color:var(--color-background-hover)}.user-list__row .select--fill[data-v-e966b116]{max-width:calc(var(--cell-width-large) - 2*var(--cell-padding))}.row__cell[data-v-e966b116]{display:flex;flex-direction:column;justify-content:center;padding:0 var(--cell-padding);min-width:var(--cell-width);width:var(--cell-width);color:var(--color-main-text)}.row__cell strong[data-v-e966b116],.row__cell span[data-v-e966b116],.row__cell label[data-v-e966b116]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.row__cell--avatar[data-v-e966b116],.row__cell--displayname[data-v-e966b116]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.row__cell--avatar[data-v-e966b116]{inset-inline-start:0}.row__cell--displayname[data-v-e966b116]{inset-inline-start:var(--avatar-cell-width);border-inline-end:1px solid var(--color-border)}}.row__cell--username[data-v-e966b116]{padding-inline-start:calc(var(--default-grid-baseline)*3)}.row__cell--avatar[data-v-e966b116]{min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0;user-select:none}.row__cell--multiline span[data-v-e966b116]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.row__cell--multiline span[data-v-e966b116]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.row__cell--large[data-v-e966b116]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.row__cell--obfuscated[data-v-e966b116]{min-width:400px;width:400px}.row__cell--fill[data-v-e966b116]{min-width:var(--cell-width-large);width:100%}.row__cell--actions[data-v-e966b116]{position:sticky;inset-inline-end:0;z-index:var(--sticky-column-z-index);display:flex;flex-direction:row;align-items:center;min-width:110px;width:110px;background-color:var(--color-main-background);border-inline-start:1px solid var(--color-border)}.row__subtitle[data-v-e966b116]{color:var(--color-text-maxcontrast)}.row__cell[data-v-e966b116]{border-bottom:1px solid var(--color-border)}.row__cell[data-v-e966b116] .v-select.select{min-width:var(--cell-min-width)}.row__progress[data-v-e966b116]{margin-top:4px}.row__progress--warn[data-v-e966b116]::-moz-progress-bar{background:var(--color-warning) !important}.row__progress--warn[data-v-e966b116]::-webkit-progress-value{background:var(--color-warning) !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/UserRow.vue\",\"webpack://./apps/settings/src/components/Users/shared/styles.scss\"],\"names\":[],\"mappings\":\"AAGA,iCCGC,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CDLA,uCACC,8CAAA,CAEA,2EACC,8CAAA,CAKF,+CACC,+DAAA,CCDD,4BACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,6BAAA,CACA,2BAAA,CACA,uBAAA,CACA,4BAAA,CAEA,sGAGC,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CAGD,yBACC,6EAEC,eAAA,CACA,oCAAA,CACA,6CAAA,CAGD,oCACC,oBAAA,CAGD,yCACC,2CAAA,CACA,+CAAA,CAAA,CAIF,sCACC,yDAAA,CAGD,oCACC,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CACA,gBAAA,CAIA,4CACC,iBAAA,CACA,iBAAA,CAEA,iCAJD,4CAKE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,mCACC,iCAAA,CACA,6BAAA,CAGD,wCACC,eAAA,CACA,WAAA,CAID,kCACC,iCAAA,CACA,UAAA,CAGD,qCACC,eAAA,CACA,kBAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,iDAAA,CAIF,gCACC,mCAAA,CDpFD,4BACC,2CAAA,CAGC,6CACC,+BAAA,CAKH,gCACC,cAAA,CAGC,yDACC,0CAAA,CAED,8DACC,0CAAA\",\"sourcesContent\":[\"\\n@use './shared/styles';\\n\\n.user-list__row {\\n\\t@include styles.row;\\n\\n\\t&:hover {\\n\\t\\tbackground-color: var(--color-background-hover);\\n\\n\\t\\t.row__cell:not(.row__cell--actions) {\\n\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t}\\n\\t}\\n\\n\\t// Limit width of select in fill cell\\n\\t.select--fill {\\n\\t\\tmax-width: calc(var(--cell-width-large) - (2 * var(--cell-padding)));\\n\\t}\\n}\\n\\n.row {\\n\\t@include styles.cell;\\n\\n\\t&__cell {\\n\\t\\tborder-bottom: 1px solid var(--color-border);\\n\\n\\t\\t:deep {\\n\\t\\t\\t.v-select.select {\\n\\t\\t\\t\\tmin-width: var(--cell-min-width);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__progress {\\n\\t\\tmargin-top: 4px;\\n\\n\\t\\t&--warn {\\n\\t\\t\\t&::-moz-progress-bar {\\n\\t\\t\\t\\tbackground: var(--color-warning) !important;\\n\\t\\t\\t}\\n\\t\\t\\t&::-webkit-progress-value {\\n\\t\\t\\t\\tbackground: var(--color-warning) !important;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\",\"/**\\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n\\n@mixin row {\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\tmin-width: 100%;\\n\\twidth: fit-content;\\n\\theight: var(--row-height);\\n\\tbackground-color: var(--color-main-background);\\n}\\n\\n@mixin cell {\\n\\t&__cell {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: center;\\n\\t\\tpadding: 0 var(--cell-padding);\\n\\t\\tmin-width: var(--cell-width);\\n\\t\\twidth: var(--cell-width);\\n\\t\\tcolor: var(--color-main-text);\\n\\n\\t\\tstrong,\\n\\t\\tspan,\\n\\t\\tlabel {\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\toverflow-wrap: anywhere;\\n\\t\\t}\\n\\n\\t\\t@media (min-width: 670px) { /* Show one &--large column between stickied columns */\\n\\t\\t\\t&--avatar,\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tposition: sticky;\\n\\t\\t\\t\\tz-index: var(--sticky-column-z-index);\\n\\t\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--avatar {\\n\\t\\t\\t\\tinset-inline-start: 0;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tinset-inline-start: var(--avatar-cell-width);\\n\\t\\t\\t\\tborder-inline-end: 1px solid var(--color-border);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--username {\\n\\t\\t\\tpadding-inline-start: calc(var(--default-grid-baseline) * 3);\\n\\t\\t}\\n\\n\\t\\t&--avatar {\\n\\t\\t\\tmin-width: var(--avatar-cell-width);\\n\\t\\t\\twidth: var(--avatar-cell-width);\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\tuser-select: none;\\n\\t\\t}\\n\\n\\t\\t&--multiline {\\n\\t\\t\\tspan {\\n\\t\\t\\t\\tline-height: 1.3em;\\n\\t\\t\\t\\twhite-space: unset;\\n\\n\\t\\t\\t\\t@supports (-webkit-line-clamp: 2) {\\n\\t\\t\\t\\t\\tdisplay: -webkit-box;\\n\\t\\t\\t\\t\\t-webkit-line-clamp: 2;\\n\\t\\t\\t\\t\\t-webkit-box-orient: vertical;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--large {\\n\\t\\t\\tmin-width: var(--cell-width-large);\\n\\t\\t\\twidth: var(--cell-width-large);\\n\\t\\t}\\n\\n\\t\\t&--obfuscated {\\n\\t\\t\\tmin-width: 400px;\\n\\t\\t\\twidth: 400px;\\n\\t\\t}\\n\\n\\t\\t// Fill remaining row space with cell\\n\\t\\t&--fill {\\n\\t\\t\\tmin-width: var(--cell-width-large);\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\n\\t\\t&--actions {\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\tinset-inline-end: 0;\\n\\t\\t\\tz-index: var(--sticky-column-z-index);\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: row;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tmin-width: 110px;\\n\\t\\t\\twidth: 110px;\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\tborder-inline-start: 1px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t&__subtitle {\\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, `.dialog__form[data-v-70bbf4c9]{display:flex;flex-direction:column;align-items:center;padding:0 8px;gap:4px 0}.dialog__item[data-v-70bbf4c9]{width:100%}.dialog__item[data-v-70bbf4c9]:not(:focus):not(:active){border-color:var(--color-border-dark)}.dialog__hint[data-v-70bbf4c9]{color:var(--color-text-maxcontrast);margin-top:8px;align-self:flex-start}.dialog__label[data-v-70bbf4c9]{display:block;padding:4px 0}.dialog__select[data-v-70bbf4c9]{width:100%}.dialog__managers[data-v-70bbf4c9]{margin-bottom:12px}.dialog__submit[data-v-70bbf4c9]{margin-top:4px;margin-bottom:8px}.dialog[data-v-70bbf4c9] .dialog__actions{margin:auto}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/NewUserDialog.vue\"],\"names\":[],\"mappings\":\"AAEC,+BACC,YAAA,CACA,qBAAA,CACA,kBAAA,CACA,aAAA,CACA,SAAA,CAGD,+BACC,UAAA,CAEA,wDACC,qCAAA,CAIF,+BACC,mCAAA,CACA,cAAA,CACA,qBAAA,CAGD,gCACC,aAAA,CACA,aAAA,CAGD,iCACC,UAAA,CAGD,mCACC,kBAAA,CAGD,iCACC,cAAA,CACA,iBAAA,CAIA,0CACC,WAAA\",\"sourcesContent\":[\"\\n.dialog {\\n\\t&__form {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\talign-items: center;\\n\\t\\tpadding: 0 8px;\\n\\t\\tgap: 4px 0;\\n\\t}\\n\\n\\t&__item {\\n\\t\\twidth: 100%;\\n\\n\\t\\t&:not(:focus):not(:active) {\\n\\t\\t\\tborder-color: var(--color-border-dark);\\n\\t\\t}\\n\\t}\\n\\n\\t&__hint {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\tmargin-top: 8px;\\n\\t\\talign-self: flex-start;\\n\\t}\\n\\n\\t&__label {\\n\\t\\tdisplay: block;\\n\\t\\tpadding: 4px 0;\\n\\t}\\n\\n\\t&__select {\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t&__managers {\\n\\t\\tmargin-bottom: 12px;\\n\\t}\\n\\n\\t&__submit {\\n\\t\\tmargin-top: 4px;\\n\\t\\tmargin-bottom: 8px;\\n\\t}\\n\\n\\t:deep {\\n\\t\\t.dialog__actions {\\n\\t\\t\\tmargin: auto;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppNavigation,{staticClass:\"account-management__navigation\",attrs:{\"aria-label\":_setup.t('settings', 'Account management')},scopedSlots:_vm._u([{key:\"footer\",fn:function(){return [_c(_setup.NcButton,{staticClass:\"account-management__settings-toggle\",attrs:{\"type\":\"tertiary\"},on:{\"click\":function($event){_setup.isDialogOpen = true}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiCog}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_setup.t('settings', 'Account management settings'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c(_setup.UserSettingsDialog,{attrs:{\"open\":_setup.isDialogOpen},on:{\"update:open\":function($event){_setup.isDialogOpen=$event}}})]},proxy:true}])},[_c(_setup.NcAppNavigationNew,{attrs:{\"button-id\":\"new-user-button\",\"text\":_setup.t('settings','New account')},on:{\"click\":_setup.showNewUserMenu,\"keyup\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _setup.showNewUserMenu.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"space\",32,$event.key,[\" \",\"Spacebar\"]))return null;return _setup.showNewUserMenu.apply(null, arguments)}]},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiPlus}})]},proxy:true}])}),_vm._v(\" \"),_c(_setup.NcAppNavigationList,{staticClass:\"account-management__system-list\",attrs:{\"data-cy-users-settings-navigation-groups\":\"system\"}},[_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"everyone\",\"exact\":true,\"name\":_setup.t('settings', 'All accounts'),\"to\":{ name: 'users' }},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiAccount}})]},proxy:true},{key:\"counter\",fn:function(){return [(_setup.userCount)?_c(_setup.NcCounterBubble,{attrs:{\"type\":!_setup.selectedGroupDecoded ? 'highlighted' : undefined}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_setup.userCount)+\"\\n\\t\\t\\t\\t\")]):_vm._e()]},proxy:true}])}),_vm._v(\" \"),(_setup.settings.isAdmin)?_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"admin\",\"exact\":true,\"name\":_setup.t('settings', 'Admins'),\"to\":{ name: 'group', params: { selectedGroup: 'admin' } }},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiShieldAccount}})]},proxy:true},{key:\"counter\",fn:function(){return [(_setup.adminGroup && _setup.adminGroup.count > 0)?_c(_setup.NcCounterBubble,{attrs:{\"type\":_setup.selectedGroupDecoded === 'admin' ? 'highlighted' : undefined}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_setup.adminGroup.count)+\"\\n\\t\\t\\t\\t\")]):_vm._e()]},proxy:true}],null,false,2218088905)}):_vm._e(),_vm._v(\" \"),(_setup.isAdminOrDelegatedAdmin)?_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"recent\",\"exact\":true,\"name\":_setup.t('settings', 'Recently active'),\"to\":{ name: 'group', params: { selectedGroup: '__nc_internal_recent' } }},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiHistory}})]},proxy:true},{key:\"counter\",fn:function(){return [(_setup.recentGroup?.usercount)?_c(_setup.NcCounterBubble,{attrs:{\"type\":_setup.selectedGroupDecoded === '__nc_internal_recent' ? 'highlighted' : undefined}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_setup.recentGroup.usercount)+\"\\n\\t\\t\\t\\t\")]):_vm._e()]},proxy:true}],null,false,2299424282)}):_vm._e(),_vm._v(\" \"),(_setup.disabledGroup && (_setup.disabledGroup.usercount > 0 || _setup.disabledGroup.usercount === -1))?_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"disabled\",\"exact\":true,\"name\":_setup.t('settings', 'Disabled accounts'),\"to\":{ name: 'group', params: { selectedGroup: 'disabled' } }},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiAccountOff}})]},proxy:true},(_setup.disabledGroup.usercount > 0)?{key:\"counter\",fn:function(){return [_c(_setup.NcCounterBubble,{attrs:{\"type\":_setup.selectedGroupDecoded === 'disabled' ? 'highlighted' : undefined}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_setup.disabledGroup.usercount)+\"\\n\\t\\t\\t\\t\")])]},proxy:true}:null],null,true)}):_vm._e()],1),_vm._v(\" \"),_c(_setup.AppNavigationGroupList)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<NcAppSettingsDialog :open.sync=\"isModalOpen\"\n\t\t:show-navigation=\"true\"\n\t\t:name=\"t('settings', 'Account management settings')\">\n\t\t<NcAppSettingsSection id=\"visibility-settings\"\n\t\t\t:name=\"t('settings', 'Visibility')\">\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t\tdata-test=\"showLanguages\"\n\t\t\t\t:checked.sync=\"showLanguages\">\n\t\t\t\t{{ t('settings', 'Show language') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t\tdata-test=\"showUserBackend\"\n\t\t\t\t:checked.sync=\"showUserBackend\">\n\t\t\t\t{{ t('settings', 'Show account backend') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t\tdata-test=\"showStoragePath\"\n\t\t\t\t:checked.sync=\"showStoragePath\">\n\t\t\t\t{{ t('settings', 'Show storage path') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t\tdata-test=\"showFirstLogin\"\n\t\t\t\t:checked.sync=\"showFirstLogin\">\n\t\t\t\t{{ t('settings', 'Show first login') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t\tdata-test=\"showLastLogin\"\n\t\t\t\t:checked.sync=\"showLastLogin\">\n\t\t\t\t{{ t('settings', 'Show last login') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</NcAppSettingsSection>\n\n\t\t<NcAppSettingsSection id=\"groups-sorting\"\n\t\t\t:name=\"t('settings', 'Sorting')\">\n\t\t\t<NcNoteCard v-if=\"isGroupSortingEnforced\" type=\"warning\">\n\t\t\t\t{{ t('settings', 'The system config enforces sorting the groups by name. This also disables showing the member count.') }}\n\t\t\t</NcNoteCard>\n\t\t\t<fieldset>\n\t\t\t\t<legend>{{ t('settings', 'Group list sorting') }}</legend>\n\t\t\t\t<NcNoteCard class=\"dialog__note\"\n\t\t\t\t\ttype=\"info\"\n\t\t\t\t\t:text=\"t('settings', 'Sorting only applies to the currently loaded groups for performance reasons. Groups will be loaded as you navigate or search through the list.')\" />\n\t\t\t\t<NcCheckboxRadioSwitch type=\"radio\"\n\t\t\t\t\t:checked.sync=\"groupSorting\"\n\t\t\t\t\tdata-test=\"sortGroupsByMemberCount\"\n\t\t\t\t\t:disabled=\"isGroupSortingEnforced\"\n\t\t\t\t\tname=\"group-sorting-mode\"\n\t\t\t\t\tvalue=\"member-count\">\n\t\t\t\t\t{{ t('settings', 'By member count') }}\n\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t<NcCheckboxRadioSwitch type=\"radio\"\n\t\t\t\t\t:checked.sync=\"groupSorting\"\n\t\t\t\t\tdata-test=\"sortGroupsByName\"\n\t\t\t\t\t:disabled=\"isGroupSortingEnforced\"\n\t\t\t\t\tname=\"group-sorting-mode\"\n\t\t\t\t\tvalue=\"name\">\n\t\t\t\t\t{{ t('settings', 'By name') }}\n\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t</fieldset>\n\t\t</NcAppSettingsSection>\n\n\t\t<NcAppSettingsSection id=\"email-settings\"\n\t\t\t:name=\"t('settings', 'Send email')\">\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t\tdata-test=\"sendWelcomeMail\"\n\t\t\t\t:checked.sync=\"sendWelcomeMail\"\n\t\t\t\t:disabled=\"loadingSendMail\">\n\t\t\t\t{{ t('settings', 'Send welcome email to new accounts') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</NcAppSettingsSection>\n\n\t\t<NcAppSettingsSection id=\"default-settings\"\n\t\t\t:name=\"t('settings', 'Defaults')\">\n\t\t\t<NcSelect v-model=\"defaultQuota\"\n\t\t\t\t:clearable=\"false\"\n\t\t\t\t:create-option=\"validateQuota\"\n\t\t\t\t:filter-by=\"filterQuotas\"\n\t\t\t\t:input-label=\"t('settings', 'Default quota')\"\n\t\t\t\t:options=\"quotaOptions\"\n\t\t\t\tplacement=\"top\"\n\t\t\t\t:placeholder=\"t('settings', 'Select default quota')\"\n\t\t\t\ttaggable\n\t\t\t\t@option:selected=\"setDefaultQuota\" />\n\t\t</NcAppSettingsSection>\n\t</NcAppSettingsDialog>\n</template>\n\n<script>\nimport { formatFileSize, parseFileSize } from '@nextcloud/files'\nimport { generateUrl } from '@nextcloud/router'\n\nimport axios from '@nextcloud/axios'\nimport NcAppSettingsDialog from '@nextcloud/vue/components/NcAppSettingsDialog'\nimport NcAppSettingsSection from '@nextcloud/vue/components/NcAppSettingsSection'\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/components/NcCheckboxRadioSwitch'\nimport NcNoteCard from '@nextcloud/vue/components/NcNoteCard'\nimport NcSelect from '@nextcloud/vue/components/NcSelect'\n\nimport { GroupSorting } from '../../constants/GroupManagement.ts'\nimport { unlimitedQuota } from '../../utils/userUtils.ts'\nimport logger from '../../logger.ts'\n\nexport default {\n\tname: 'UserSettingsDialog',\n\n\tcomponents: {\n\t\tNcAppSettingsDialog,\n\t\tNcAppSettingsSection,\n\t\tNcCheckboxRadioSwitch,\n\t\tNcNoteCard,\n\t\tNcSelect,\n\t},\n\n\tprops: {\n\t\topen: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tselectedQuota: false,\n\t\t\tloadingSendMail: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tgroupSorting: {\n\t\t\tget() {\n\t\t\t\treturn this.$store.getters.getGroupSorting === GroupSorting.GroupName ? 'name' : 'member-count'\n\t\t\t},\n\t\t\tset(sorting) {\n\t\t\t\tthis.$store.commit('setGroupSorting', sorting === 'name' ? GroupSorting.GroupName : GroupSorting.UserCount)\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Admin has configured `sort_groups_by_name` in the system config\n\t\t */\n\t\tisGroupSortingEnforced() {\n\t\t\treturn this.$store.getters.getServerData.forceSortGroupByName\n\t\t},\n\n\t\tisModalOpen: {\n\t\t\tget() {\n\t\t\t\treturn this.open\n\t\t\t},\n\t\t\tset(open) {\n\t\t\t\tthis.$emit('update:open', open)\n\t\t\t},\n\t\t},\n\n\t\tshowConfig() {\n\t\t\treturn this.$store.getters.getShowConfig\n\t\t},\n\n\t\tsettings() {\n\t\t\treturn this.$store.getters.getServerData\n\t\t},\n\n\t\tshowLanguages: {\n\t\t\tget() {\n\t\t\t\treturn this.showConfig.showLanguages\n\t\t\t},\n\t\t\tset(status) {\n\t\t\t\tthis.setShowConfig('showLanguages', status)\n\t\t\t},\n\t\t},\n\n\t\tshowFirstLogin: {\n\t\t\tget() {\n\t\t\t\treturn this.showConfig.showFirstLogin\n\t\t\t},\n\t\t\tset(status) {\n\t\t\t\tthis.setShowConfig('showFirstLogin', status)\n\t\t\t},\n\t\t},\n\n\t\tshowLastLogin: {\n\t\t\tget() {\n\t\t\t\treturn this.showConfig.showLastLogin\n\t\t\t},\n\t\t\tset(status) {\n\t\t\t\tthis.setShowConfig('showLastLogin', status)\n\t\t\t},\n\t\t},\n\n\t\tshowUserBackend: {\n\t\t\tget() {\n\t\t\t\treturn this.showConfig.showUserBackend\n\t\t\t},\n\t\t\tset(status) {\n\t\t\t\tthis.setShowConfig('showUserBackend', status)\n\t\t\t},\n\t\t},\n\n\t\tshowStoragePath: {\n\t\t\tget() {\n\t\t\t\treturn this.showConfig.showStoragePath\n\t\t\t},\n\t\t\tset(status) {\n\t\t\t\tthis.setShowConfig('showStoragePath', status)\n\t\t\t},\n\t\t},\n\n\t\tquotaOptions() {\n\t\t\t// convert the preset array into objects\n\t\t\tconst quotaPreset = this.settings.quotaPreset.reduce((acc, cur) => acc.concat({ id: cur, label: cur }), [])\n\t\t\t// add default presets\n\t\t\tif (this.settings.allowUnlimitedQuota) {\n\t\t\t\tquotaPreset.unshift(unlimitedQuota)\n\t\t\t}\n\t\t\treturn quotaPreset\n\t\t},\n\n\t\tdefaultQuota: {\n\t\t\tget() {\n\t\t\t\tif (this.selectedQuota !== false) {\n\t\t\t\t\treturn this.selectedQuota\n\t\t\t\t}\n\t\t\t\tif (this.settings.defaultQuota !== unlimitedQuota.id && OC.Util.computerFileSize(this.settings.defaultQuota) >= 0) {\n\t\t\t\t\t// if value is valid, let's map the quotaOptions or return custom quota\n\t\t\t\t\treturn { id: this.settings.defaultQuota, label: this.settings.defaultQuota }\n\t\t\t\t}\n\t\t\t\treturn unlimitedQuota // unlimited\n\t\t\t},\n\t\t\tset(quota) {\n\t\t\t\tthis.selectedQuota = quota\n\t\t\t},\n\t\t},\n\n\t\tsendWelcomeMail: {\n\t\t\tget() {\n\t\t\t\treturn this.settings.newUserSendEmail\n\t\t\t},\n\t\t\tasync set(value) {\n\t\t\t\ttry {\n\t\t\t\t\tthis.loadingSendMail = true\n\t\t\t\t\tthis.$store.commit('setServerData', {\n\t\t\t\t\t\t...this.settings,\n\t\t\t\t\t\tnewUserSendEmail: value,\n\t\t\t\t\t})\n\t\t\t\t\tawait axios.post(generateUrl('/settings/users/preferences/newUser.sendEmail'), { value: value ? 'yes' : 'no' })\n\t\t\t\t} catch (error) {\n\t\t\t\t\tlogger.error('Could not update newUser.sendEmail preference', { error })\n\t\t\t\t} finally {\n\t\t\t\t\tthis.loadingSendMail = false\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Check if a quota matches the current search.\n\t\t * This is a custom filter function to allow to map \"1GB\" to the label \"1 GB\" (ignoring whitespaces).\n\t\t *\n\t\t * @param option The quota to check\n\t\t * @param label The label of the quota\n\t\t * @param search The search string\n\t\t */\n\t\tfilterQuotas(option, label, search) {\n\t\t\tconst searchValue = search.toLocaleLowerCase().replaceAll(/\\s/g, '')\n\t\t\treturn (label || '')\n\t\t\t\t.toLocaleLowerCase()\n\t\t\t\t.replaceAll(/\\s/g, '')\n\t\t\t\t.indexOf(searchValue) > -1\n\t\t},\n\n\t\tsetShowConfig(key, status) {\n\t\t\tthis.$store.commit('setShowConfig', { key, value: status })\n\t\t},\n\n\t\t/**\n\t\t * Validate quota string to make sure it's a valid human file size\n\t\t *\n\t\t * @param {string | object} quota Quota in readable format '5 GB' or Object {id: '5 GB', label: '5GB'}\n\t\t * @return {object} The validated quota object or unlimited quota if input is invalid\n\t\t */\n\t\tvalidateQuota(quota) {\n\t\t\tif (typeof quota === 'object') {\n\t\t\t\tquota = quota?.id || quota.label\n\t\t\t}\n\t\t\t// only used for new presets sent through @Tag\n\t\t\tconst validQuota = parseFileSize(quota, true)\n\t\t\tif (validQuota === null) {\n\t\t\t\treturn unlimitedQuota\n\t\t\t}\n\t\t\t// unify format output\n\t\t\tquota = formatFileSize(validQuota)\n\t\t\treturn { id: quota, label: quota }\n\t\t},\n\n\t\t/**\n\t\t * Dispatch default quota set request\n\t\t *\n\t\t * @param {string | object} quota Quota in readable format '5 GB' or Object {id: '5 GB', label: '5GB'}\n\t\t */\n\t\tsetDefaultQuota(quota = 'none') {\n\t\t\t// Make sure correct label is set for unlimited quota\n\t\t\tif (quota === 'none') {\n\t\t\t\tquota = unlimitedQuota\n\t\t\t}\n\t\t\tthis.$store.dispatch('setAppConfig', {\n\t\t\t\tapp: 'files',\n\t\t\t\tkey: 'default_quota',\n\t\t\t\t// ensure we only send the preset id\n\t\t\t\tvalue: quota.id ? quota.id : quota,\n\t\t\t}).then(() => {\n\t\t\t\tif (typeof quota !== 'object') {\n\t\t\t\t\tquota = { id: quota, label: quota }\n\t\t\t\t}\n\t\t\t\tthis.defaultQuota = quota\n\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.dialog {\n\t&__note {\n\t\tfont-weight: normal;\n\t}\n}\n\nfieldset {\n\tfont-weight: bold;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserSettingsDialog.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!./UserSettingsDialog.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!./UserSettingsDialog.vue?vue&type=style&index=0&id=9f7a355c&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./UserSettingsDialog.vue?vue&type=style&index=0&id=9f7a355c&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserSettingsDialog.vue?vue&type=template&id=9f7a355c&scoped=true\"\nimport script from \"./UserSettingsDialog.vue?vue&type=script&lang=js\"\nexport * from \"./UserSettingsDialog.vue?vue&type=script&lang=js\"\nimport style0 from \"./UserSettingsDialog.vue?vue&type=style&index=0&id=9f7a355c&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 \"9f7a355c\",\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.isModalOpen,\"show-navigation\":true,\"name\":_vm.t('settings', 'Account management settings')},on:{\"update:open\":function($event){_vm.isModalOpen=$event}}},[_c('NcAppSettingsSection',{attrs:{\"id\":\"visibility-settings\",\"name\":_vm.t('settings', 'Visibility')}},[_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"data-test\":\"showLanguages\",\"checked\":_vm.showLanguages},on:{\"update:checked\":function($event){_vm.showLanguages=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Show language'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"data-test\":\"showUserBackend\",\"checked\":_vm.showUserBackend},on:{\"update:checked\":function($event){_vm.showUserBackend=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Show account backend'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"data-test\":\"showStoragePath\",\"checked\":_vm.showStoragePath},on:{\"update:checked\":function($event){_vm.showStoragePath=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Show storage path'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"data-test\":\"showFirstLogin\",\"checked\":_vm.showFirstLogin},on:{\"update:checked\":function($event){_vm.showFirstLogin=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Show first login'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"data-test\":\"showLastLogin\",\"checked\":_vm.showLastLogin},on:{\"update:checked\":function($event){_vm.showLastLogin=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Show last login'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_c('NcAppSettingsSection',{attrs:{\"id\":\"groups-sorting\",\"name\":_vm.t('settings', 'Sorting')}},[(_vm.isGroupSortingEnforced)?_c('NcNoteCard',{attrs:{\"type\":\"warning\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'The system config enforces sorting the groups by name. This also disables showing the member count.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('fieldset',[_c('legend',[_vm._v(_vm._s(_vm.t('settings', 'Group list sorting')))]),_vm._v(\" \"),_c('NcNoteCard',{staticClass:\"dialog__note\",attrs:{\"type\":\"info\",\"text\":_vm.t('settings', 'Sorting only applies to the currently loaded groups for performance reasons. Groups will be loaded as you navigate or search through the list.')}}),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"radio\",\"checked\":_vm.groupSorting,\"data-test\":\"sortGroupsByMemberCount\",\"disabled\":_vm.isGroupSortingEnforced,\"name\":\"group-sorting-mode\",\"value\":\"member-count\"},on:{\"update:checked\":function($event){_vm.groupSorting=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'By member count'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"radio\",\"checked\":_vm.groupSorting,\"data-test\":\"sortGroupsByName\",\"disabled\":_vm.isGroupSortingEnforced,\"name\":\"group-sorting-mode\",\"value\":\"name\"},on:{\"update:checked\":function($event){_vm.groupSorting=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'By name'))+\"\\n\\t\\t\\t\")])],1)],1),_vm._v(\" \"),_c('NcAppSettingsSection',{attrs:{\"id\":\"email-settings\",\"name\":_vm.t('settings', 'Send email')}},[_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"data-test\":\"sendWelcomeMail\",\"checked\":_vm.sendWelcomeMail,\"disabled\":_vm.loadingSendMail},on:{\"update:checked\":function($event){_vm.sendWelcomeMail=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Send welcome email to new accounts'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_c('NcAppSettingsSection',{attrs:{\"id\":\"default-settings\",\"name\":_vm.t('settings', 'Defaults')}},[_c('NcSelect',{attrs:{\"clearable\":false,\"create-option\":_vm.validateQuota,\"filter-by\":_vm.filterQuotas,\"input-label\":_vm.t('settings', 'Default quota'),\"options\":_vm.quotaOptions,\"placement\":\"top\",\"placeholder\":_vm.t('settings', 'Select default quota'),\"taggable\":\"\"},on:{\"option:selected\":_vm.setDefaultQuota},model:{value:(_vm.defaultQuota),callback:function ($$v) {_vm.defaultQuota=$$v},expression:\"defaultQuota\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.Fragment,[_c(_setup.NcAppNavigationCaption,{attrs:{\"name\":_setup.t('settings', 'Groups'),\"disabled\":_setup.loadingAddGroup,\"aria-label\":_setup.loadingAddGroup ? _setup.t('settings', 'Creating group…') : _setup.t('settings', 'Create group'),\"force-menu\":\"\",\"is-heading\":\"\",\"open\":_setup.isAddGroupOpen},on:{\"update:open\":function($event){_setup.isAddGroupOpen=$event}},scopedSlots:_vm._u([(_setup.isAdminOrDelegatedAdmin)?{key:\"actionsTriggerIcon\",fn:function(){return [(_setup.loadingAddGroup)?_c(_setup.NcLoadingIcon):_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiPlus}})]},proxy:true}:null,(_setup.isAdminOrDelegatedAdmin)?{key:\"actions\",fn:function(){return [_c(_setup.NcActionText,{scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiAccountGroup}})]},proxy:true}],null,false,3607647275)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_setup.t('settings', 'Create group'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c(_setup.NcActionInput,{attrs:{\"label\":_setup.t('settings', 'Group name'),\"data-cy-users-settings-new-group-name\":\"\",\"label-outside\":false,\"disabled\":_setup.loadingAddGroup,\"value\":_setup.newGroupName,\"error\":_setup.hasAddGroupError,\"helper-text\":_setup.hasAddGroupError ? _setup.t('settings', 'Please enter a valid group name') : ''},on:{\"update:value\":function($event){_setup.newGroupName=$event},\"submit\":_setup.createGroup}})]},proxy:true}:null],null,true)}),_vm._v(\" \"),_c(_setup.NcAppNavigationSearch,{attrs:{\"label\":_setup.t('settings', 'Search groups…')},model:{value:(_setup.groupsSearchQuery),callback:function ($$v) {_setup.groupsSearchQuery=$$v},expression:\"groupsSearchQuery\"}}),_vm._v(\" \"),_c('p',{staticClass:\"hidden-visually\",attrs:{\"id\":\"group-list-desc\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_setup.t('settings', 'List of groups. This list is not fully populated for performance reasons. The groups will be loaded as you navigate or search through the list.'))+\"\\n\\t\")]),_vm._v(\" \"),_c(_setup.NcAppNavigationList,{staticClass:\"account-management__group-list\",attrs:{\"aria-describedby\":\"group-list-desc\",\"data-cy-users-settings-navigation-groups\":\"custom\"}},[_vm._l((_setup.userGroups),function(group){return _c(_setup.GroupListItem,{key:group.id,ref:\"groupListItems\",refInFor:true,attrs:{\"id\":group.id,\"active\":_setup.selectedGroupDecoded === group.id,\"name\":group.title,\"count\":group.count}})}),_vm._v(\" \"),(_setup.loadingGroups)?_c('div',{attrs:{\"role\":\"note\"}},[_c(_setup.NcLoadingIcon,{attrs:{\"name\":_setup.t('settings', 'Loading groups…')}})],1):_vm._e()],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<Fragment>\n\t\t<NcModal v-if=\"showRemoveGroupModal\"\n\t\t\t@close=\"showRemoveGroupModal = false\">\n\t\t\t<div class=\"modal__content\">\n\t\t\t\t<h2 class=\"modal__header\">\n\t\t\t\t\t{{ t('settings', 'Please confirm the group removal') }}\n\t\t\t\t</h2>\n\t\t\t\t<NcNoteCard type=\"warning\"\n\t\t\t\t\tshow-alert>\n\t\t\t\t\t{{ t('settings', 'You are about to remove the group \"{group}\". The accounts will NOT be deleted.', { group: name }) }}\n\t\t\t\t</NcNoteCard>\n\t\t\t\t<div class=\"modal__button-row\">\n\t\t\t\t\t<NcButton type=\"secondary\"\n\t\t\t\t\t\t@click=\"showRemoveGroupModal = false\">\n\t\t\t\t\t\t{{ t('settings', 'Cancel') }}\n\t\t\t\t\t</NcButton>\n\t\t\t\t\t<NcButton type=\"primary\"\n\t\t\t\t\t\t@click=\"removeGroup\">\n\t\t\t\t\t\t{{ t('settings', 'Confirm') }}\n\t\t\t\t\t</NcButton>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</NcModal>\n\n\t\t<NcAppNavigationItem :key=\"id\"\n\t\t\tref=\"listItem\"\n\t\t\t:exact=\"true\"\n\t\t\t:name=\"name\"\n\t\t\t:to=\"{ name: 'group', params: { selectedGroup: encodeURIComponent(id) } }\"\n\t\t\t:loading=\"loadingRenameGroup\"\n\t\t\t:menu-open=\"openGroupMenu\"\n\t\t\t@update:menuOpen=\"handleGroupMenuOpen\">\n\t\t\t<template #icon>\n\t\t\t\t<AccountGroup :size=\"20\" />\n\t\t\t</template>\n\t\t\t<template #counter>\n\t\t\t\t<NcCounterBubble v-if=\"count\"\n\t\t\t\t\t:type=\"active ? 'highlighted' : undefined\">\n\t\t\t\t\t{{ count }}\n\t\t\t\t</NcCounterBubble>\n\t\t\t</template>\n\t\t\t<template #actions>\n\t\t\t\t<NcActionInput v-if=\"id !== 'admin' && id !== 'disabled' && (settings.isAdmin || settings.isDelegatedAdmin)\"\n\t\t\t\t\tref=\"displayNameInput\"\n\t\t\t\t\t:trailing-button-label=\"t('settings', 'Submit')\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t:value=\"name\"\n\t\t\t\t\t:label=\" t('settings', 'Rename group')\"\n\t\t\t\t\t@submit=\"renameGroup(id)\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<Pencil :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t</NcActionInput>\n\t\t\t\t<NcActionButton v-if=\"id !== 'admin' && id !== 'disabled' && (settings.isAdmin || settings.isDelegatedAdmin)\"\n\t\t\t\t\t@click=\"showRemoveGroupModal = true\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<Delete :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ t('settings', 'Remove group') }}\n\t\t\t\t</NcActionButton>\n\t\t\t</template>\n\t\t</NcAppNavigationItem>\n\t</Fragment>\n</template>\n\n<script>\nimport { Fragment } from 'vue-frag'\n\nimport NcActionButton from '@nextcloud/vue/components/NcActionButton'\nimport NcActionInput from '@nextcloud/vue/components/NcActionInput'\nimport NcAppNavigationItem from '@nextcloud/vue/components/NcAppNavigationItem'\nimport NcButton from '@nextcloud/vue/components/NcButton'\nimport NcCounterBubble from '@nextcloud/vue/components/NcCounterBubble'\nimport NcModal from '@nextcloud/vue/components/NcModal'\nimport NcNoteCard from '@nextcloud/vue/components/NcNoteCard'\n\nimport AccountGroup from 'vue-material-design-icons/AccountGroup.vue'\nimport Delete from 'vue-material-design-icons/Delete.vue'\nimport Pencil from 'vue-material-design-icons/Pencil.vue'\n\nimport { showError } from '@nextcloud/dialogs'\n\nexport default {\n\tname: 'GroupListItem',\n\tcomponents: {\n\t\tAccountGroup,\n\t\tDelete,\n\t\tFragment,\n\t\tNcActionButton,\n\t\tNcActionInput,\n\t\tNcAppNavigationItem,\n\t\tNcButton,\n\t\tNcCounterBubble,\n\t\tNcModal,\n\t\tNcNoteCard,\n\t\tPencil,\n\t},\n\tprops: {\n\t\t/**\n\t\t * If this group is currently selected\n\t\t */\n\t\tactive: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\t/**\n\t\t * Number of members within this group\n\t\t */\n\t\tcount: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t\t/**\n\t\t * Identifier of this group\n\t\t */\n\t\tid: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\t/**\n\t\t * Name of this group\n\t\t */\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tloadingRenameGroup: false,\n\t\t\topenGroupMenu: false,\n\t\t\tshowRemoveGroupModal: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\tsettings() {\n\t\t\treturn this.$store.getters.getServerData\n\t\t},\n\t},\n\tmethods: {\n\t\thandleGroupMenuOpen() {\n\t\t\tthis.openGroupMenu = true\n\t\t},\n\t\tasync renameGroup(gid) {\n\t\t\t// check if group id is valid\n\t\t\tif (gid.trim() === '') {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst displayName = this.$refs.displayNameInput.$el.querySelector('input[type=\"text\"]').value\n\n\t\t\t// check if group name is valid\n\t\t\tif (displayName.trim() === '') {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tthis.openGroupMenu = false\n\t\t\t\tthis.loadingRenameGroup = true\n\t\t\t\tawait this.$store.dispatch('renameGroup', {\n\t\t\t\t\tgroupid: gid.trim(),\n\t\t\t\t\tdisplayName: displayName.trim(),\n\t\t\t\t})\n\n\t\t\t\tthis.loadingRenameGroup = false\n\t\t\t} catch {\n\t\t\t\tthis.openGroupMenu = true\n\t\t\t\tthis.loadingRenameGroup = false\n\t\t\t}\n\t\t},\n\t\tasync removeGroup() {\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('removeGroup', this.id)\n\t\t\t\tthis.showRemoveGroupModal = false\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('settings', 'Failed to remove group \"{group}\"', { group: this.name }))\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.modal {\n\t&__header {\n\t\tmargin: 0;\n\t}\n\n\t&__content {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t\tpadding: 20px;\n\t\tgap: 4px 0;\n\t}\n\n\t&__button-row {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t\tjustify-content: space-between;\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!./GroupListItem.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!./GroupListItem.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!./GroupListItem.vue?vue&type=style&index=0&id=161509be&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./GroupListItem.vue?vue&type=style&index=0&id=161509be&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./GroupListItem.vue?vue&type=template&id=161509be&scoped=true\"\nimport script from \"./GroupListItem.vue?vue&type=script&lang=js\"\nexport * from \"./GroupListItem.vue?vue&type=script&lang=js\"\nimport style0 from \"./GroupListItem.vue?vue&type=style&index=0&id=161509be&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 \"161509be\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('Fragment',[(_vm.showRemoveGroupModal)?_c('NcModal',{on:{\"close\":function($event){_vm.showRemoveGroupModal = false}}},[_c('div',{staticClass:\"modal__content\"},[_c('h2',{staticClass:\"modal__header\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Please confirm the group removal'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcNoteCard',{attrs:{\"type\":\"warning\",\"show-alert\":\"\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'You are about to remove the group \"{group}\". The accounts will NOT be deleted.', { group: _vm.name }))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('div',{staticClass:\"modal__button-row\"},[_c('NcButton',{attrs:{\"type\":\"secondary\"},on:{\"click\":function($event){_vm.showRemoveGroupModal = false}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Cancel'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcButton',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.removeGroup}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Confirm'))+\"\\n\\t\\t\\t\\t\")])],1)],1)]):_vm._e(),_vm._v(\" \"),_c('NcAppNavigationItem',{key:_vm.id,ref:\"listItem\",attrs:{\"exact\":true,\"name\":_vm.name,\"to\":{ name: 'group', params: { selectedGroup: encodeURIComponent(_vm.id) } },\"loading\":_vm.loadingRenameGroup,\"menu-open\":_vm.openGroupMenu},on:{\"update:menuOpen\":_vm.handleGroupMenuOpen},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('AccountGroup',{attrs:{\"size\":20}})]},proxy:true},{key:\"counter\",fn:function(){return [(_vm.count)?_c('NcCounterBubble',{attrs:{\"type\":_vm.active ? 'highlighted' : undefined}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.count)+\"\\n\\t\\t\\t\")]):_vm._e()]},proxy:true},{key:\"actions\",fn:function(){return [(_vm.id !== 'admin' && _vm.id !== 'disabled' && (_vm.settings.isAdmin || _vm.settings.isDelegatedAdmin))?_c('NcActionInput',{ref:\"displayNameInput\",attrs:{\"trailing-button-label\":_vm.t('settings', 'Submit'),\"type\":\"text\",\"value\":_vm.name,\"label\":_vm.t('settings', 'Rename group')},on:{\"submit\":function($event){return _vm.renameGroup(_vm.id)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Pencil',{attrs:{\"size\":20}})]},proxy:true}],null,false,580569589)}):_vm._e(),_vm._v(\" \"),(_vm.id !== 'admin' && _vm.id !== 'disabled' && (_vm.settings.isAdmin || _vm.settings.isDelegatedAdmin))?_c('NcActionButton',{on:{\"click\":function($event){_vm.showRemoveGroupModal = true}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Delete',{attrs:{\"size\":20}})]},proxy:true}],null,false,2705356561)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Remove group'))+\"\\n\\t\\t\\t\")]):_vm._e()]},proxy:true}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { computed } from 'vue';\n/**\n * Format a group to a menu entry\n *\n * @param group the group\n */\nfunction formatGroupMenu(group) {\n if (typeof group === 'undefined') {\n return null;\n }\n const item = {\n id: group.id,\n title: group.name,\n usercount: group.usercount,\n count: Math.max(0, group.usercount - group.disabled),\n };\n return item;\n}\nexport const useFormatGroups = (groups) => {\n /**\n * All non-disabled non-admin groups\n */\n const userGroups = computed(() => {\n const formatted = groups.value\n // filter out disabled and admin\n .filter(group => group.id !== 'disabled' && group.id !== '__nc_internal_recent' && group.id !== 'admin')\n // format group\n .map(group => formatGroupMenu(group))\n // remove invalid\n .filter(group => group !== null);\n return formatted;\n });\n /**\n * The admin group if found otherwise null\n */\n const adminGroup = computed(() => formatGroupMenu(groups.value.find(group => group.id === 'admin')));\n /**\n * The group of disabled users\n */\n const disabledGroup = computed(() => formatGroupMenu(groups.value.find(group => group.id === 'disabled')));\n /**\n * The group of recent users\n */\n const recentGroup = computed(() => formatGroupMenu(groups.value.find(group => group.id === '__nc_internal_recent')));\n return { adminGroup, recentGroup, disabledGroup, userGroups };\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!./AppNavigationGroupList.vue?vue&type=script&setup=true&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!./AppNavigationGroupList.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./AppNavigationGroupList.vue?vue&type=template&id=2057c7ae\"\nimport script from \"./AppNavigationGroupList.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppNavigationGroupList.vue?vue&type=script&setup=true&lang=ts\"\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!./UserManagementNavigation.vue?vue&type=script&setup=true&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!./UserManagementNavigation.vue?vue&type=script&setup=true&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!./UserManagementNavigation.vue?vue&type=style&index=0&id=edf83404&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./UserManagementNavigation.vue?vue&type=style&index=0&id=edf83404&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserManagementNavigation.vue?vue&type=template&id=edf83404&scoped=true\"\nimport script from \"./UserManagementNavigation.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserManagementNavigation.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./UserManagementNavigation.vue?vue&type=style&index=0&id=edf83404&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 \"edf83404\",\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('NcAppContent',{attrs:{\"page-heading\":_vm.pageHeading}},[_c('UserList',{attrs:{\"selected-group\":_vm.selectedGroupDecoded,\"external-actions\":_vm.externalActions}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('table',{staticClass:\"user-list\"},[_vm._t(\"before\"),_vm._v(\" \"),_c('thead',{ref:\"thead\",staticClass:\"user-list__header\",attrs:{\"role\":\"rowgroup\"}},[_vm._t(\"header\")],2),_vm._v(\" \"),_c('tbody',{staticClass:\"user-list__body\",style:(_vm.tbodyStyle)},_vm._l((_vm.renderedItems),function(item,i){return _c(_vm.dataComponent,_vm._b({key:item[_vm.dataKey],tag:\"component\",attrs:{\"user\":item,\"visible\":(i >= _vm.bufferItems || _vm.index <= _vm.bufferItems) && (i < _vm.shownItems - _vm.bufferItems)}},'component',_vm.extraProps,false))}),1),_vm._v(\" \"),_c('tfoot',{directives:[{name:\"element-visibility\",rawName:\"v-element-visibility\",value:(_vm.handleFooterVisibility),expression:\"handleFooterVisibility\"}],ref:\"tfoot\",staticClass:\"user-list__footer\",attrs:{\"role\":\"rowgroup\"}},[_vm._t(\"footer\")],2)],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!./VirtualList.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!./VirtualList.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!./VirtualList.vue?vue&type=style&index=0&id=21942da5&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./VirtualList.vue?vue&type=style&index=0&id=21942da5&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./VirtualList.vue?vue&type=template&id=21942da5&scoped=true\"\nimport script from \"./VirtualList.vue?vue&type=script&lang=ts\"\nexport * from \"./VirtualList.vue?vue&type=script&lang=ts\"\nimport style0 from \"./VirtualList.vue?vue&type=style&index=0&id=21942da5&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 \"21942da5\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcDialog',_vm._g({staticClass:\"dialog\",attrs:{\"size\":\"small\",\"name\":_vm.t('settings', 'New account'),\"out-transition\":\"\"},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('NcButton',{staticClass:\"dialog__submit\",attrs:{\"data-test\":\"submit\",\"form\":\"new-user-form\",\"type\":\"primary\",\"native-type\":\"submit\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Add new account'))+\"\\n\\t\\t\")])]},proxy:true}])},_vm.$listeners),[_c('form',{staticClass:\"dialog__form\",attrs:{\"id\":\"new-user-form\",\"data-test\":\"form\",\"disabled\":_vm.loading.all},on:{\"submit\":function($event){$event.preventDefault();return _vm.createUser.apply(null, arguments)}}},[_c('NcTextField',{ref:\"username\",staticClass:\"dialog__item\",attrs:{\"data-test\":\"username\",\"value\":_vm.newUser.id,\"disabled\":_vm.settings.newUserGenerateUserID,\"label\":_vm.usernameLabel,\"autocapitalize\":\"none\",\"autocomplete\":\"off\",\"spellcheck\":\"false\",\"pattern\":\"[a-zA-Z0-9 _\\\\.@\\\\-']+\",\"required\":\"\"},on:{\"update:value\":function($event){return _vm.$set(_vm.newUser, \"id\", $event)}}}),_vm._v(\" \"),_c('NcTextField',{staticClass:\"dialog__item\",attrs:{\"data-test\":\"displayName\",\"value\":_vm.newUser.displayName,\"label\":_vm.t('settings', 'Display name'),\"autocapitalize\":\"none\",\"autocomplete\":\"off\",\"spellcheck\":\"false\"},on:{\"update:value\":function($event){return _vm.$set(_vm.newUser, \"displayName\", $event)}}}),_vm._v(\" \"),(!_vm.settings.newUserRequireEmail)?_c('span',{staticClass:\"dialog__hint\",attrs:{\"id\":\"password-email-hint\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Either password or email is required'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcPasswordField',{ref:\"password\",staticClass:\"dialog__item\",attrs:{\"data-test\":\"password\",\"value\":_vm.newUser.password,\"minlength\":_vm.minPasswordLength,\"maxlength\":469,\"aria-describedby\":\"password-email-hint\",\"label\":_vm.newUser.mailAddress === '' ? _vm.t('settings', 'Password (required)') : _vm.t('settings', 'Password'),\"autocapitalize\":\"none\",\"autocomplete\":\"new-password\",\"spellcheck\":\"false\",\"required\":_vm.newUser.mailAddress === ''},on:{\"update:value\":function($event){return _vm.$set(_vm.newUser, \"password\", $event)}}}),_vm._v(\" \"),_c('NcTextField',{staticClass:\"dialog__item\",attrs:{\"data-test\":\"email\",\"type\":\"email\",\"value\":_vm.newUser.mailAddress,\"aria-describedby\":\"password-email-hint\",\"label\":_vm.newUser.password === '' || _vm.settings.newUserRequireEmail ? _vm.t('settings', 'Email (required)') : _vm.t('settings', 'Email'),\"autocapitalize\":\"none\",\"autocomplete\":\"off\",\"spellcheck\":\"false\",\"required\":_vm.newUser.password === '' || _vm.settings.newUserRequireEmail},on:{\"update:value\":function($event){return _vm.$set(_vm.newUser, \"mailAddress\", $event)}}}),_vm._v(\" \"),_c('div',{staticClass:\"dialog__item\"},[_c('NcSelect',{staticClass:\"dialog__select\",attrs:{\"data-test\":\"groups\",\"input-label\":!_vm.settings.isAdmin && !_vm.settings.isDelegatedAdmin ? _vm.t('settings', 'Member of the following groups (required)') : _vm.t('settings', 'Member of the following groups'),\"placeholder\":_vm.t('settings', 'Set account groups'),\"disabled\":_vm.loading.groups || _vm.loading.all,\"options\":_vm.availableGroups,\"value\":_vm.newUser.groups,\"label\":\"name\",\"close-on-select\":false,\"multiple\":true,\"taggable\":_vm.settings.isAdmin || _vm.settings.isDelegatedAdmin,\"required\":!_vm.settings.isAdmin && !_vm.settings.isDelegatedAdmin,\"create-option\":(value) => ({ id: value, name: value, isCreating: true })},on:{\"search\":_vm.searchGroups,\"option:created\":_vm.createGroup,\"option:selected\":options => _vm.addGroup(options.at(-1))}})],1),_vm._v(\" \"),_c('div',{staticClass:\"dialog__item\"},[_c('NcSelect',{staticClass:\"dialog__select\",attrs:{\"input-label\":_vm.t('settings', 'Admin of the following groups'),\"placeholder\":_vm.t('settings', 'Set account as admin for …'),\"disabled\":_vm.loading.groups || _vm.loading.all,\"options\":_vm.subAdminsGroups,\"close-on-select\":false,\"multiple\":true,\"label\":\"name\"},on:{\"search\":_vm.searchGroups},model:{value:(_vm.newUser.subAdminsGroups),callback:function ($$v) {_vm.$set(_vm.newUser, \"subAdminsGroups\", $$v)},expression:\"newUser.subAdminsGroups\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"dialog__item\"},[_c('NcSelect',{staticClass:\"dialog__select\",attrs:{\"input-label\":_vm.t('settings', 'Quota'),\"placeholder\":_vm.t('settings', 'Set account quota'),\"options\":_vm.quotaOptions,\"clearable\":false,\"taggable\":true,\"create-option\":_vm.validateQuota},model:{value:(_vm.newUser.quota),callback:function ($$v) {_vm.$set(_vm.newUser, \"quota\", $$v)},expression:\"newUser.quota\"}})],1),_vm._v(\" \"),(_vm.showConfig.showLanguages)?_c('div',{staticClass:\"dialog__item\"},[_c('NcSelect',{staticClass:\"dialog__select\",attrs:{\"input-label\":_vm.t('settings', 'Language'),\"placeholder\":_vm.t('settings', 'Set default language'),\"clearable\":false,\"selectable\":option => !option.languages,\"filter-by\":_vm.languageFilterBy,\"options\":_vm.languages,\"label\":\"name\"},model:{value:(_vm.newUser.language),callback:function ($$v) {_vm.$set(_vm.newUser, \"language\", $$v)},expression:\"newUser.language\"}})],1):_vm._e(),_vm._v(\" \"),_c('div',{class:['dialog__item dialog__managers', { 'icon-loading-small': _vm.loading.manager }]},[_c('NcSelect',{staticClass:\"dialog__select\",attrs:{\"input-label\":_vm.managerInputLabel,\"placeholder\":_vm.managerLabel,\"options\":_vm.possibleManagers,\"user-select\":true,\"label\":\"displayname\"},on:{\"search\":_vm.searchUserManager},model:{value:(_vm.newUser.manager),callback:function ($$v) {_vm.$set(_vm.newUser, \"manager\", $$v)},expression:\"newUser.manager\"}})],1)],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<NcDialog class=\"dialog\"\n\t\tsize=\"small\"\n\t\t:name=\"t('settings', 'New account')\"\n\t\tout-transition\n\t\tv-on=\"$listeners\">\n\t\t<form id=\"new-user-form\"\n\t\t\tclass=\"dialog__form\"\n\t\t\tdata-test=\"form\"\n\t\t\t:disabled=\"loading.all\"\n\t\t\t@submit.prevent=\"createUser\">\n\t\t\t<NcTextField ref=\"username\"\n\t\t\t\tclass=\"dialog__item\"\n\t\t\t\tdata-test=\"username\"\n\t\t\t\t:value.sync=\"newUser.id\"\n\t\t\t\t:disabled=\"settings.newUserGenerateUserID\"\n\t\t\t\t:label=\"usernameLabel\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\tautocomplete=\"off\"\n\t\t\t\tspellcheck=\"false\"\n\t\t\t\tpattern=\"[a-zA-Z0-9 _\\.@\\-']+\"\n\t\t\t\trequired />\n\t\t\t<NcTextField class=\"dialog__item\"\n\t\t\t\tdata-test=\"displayName\"\n\t\t\t\t:value.sync=\"newUser.displayName\"\n\t\t\t\t:label=\"t('settings', 'Display name')\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\tautocomplete=\"off\"\n\t\t\t\tspellcheck=\"false\" />\n\t\t\t<span v-if=\"!settings.newUserRequireEmail\"\n\t\t\t\tid=\"password-email-hint\"\n\t\t\t\tclass=\"dialog__hint\">\n\t\t\t\t{{ t('settings', 'Either password or email is required') }}\n\t\t\t</span>\n\t\t\t<NcPasswordField ref=\"password\"\n\t\t\t\tclass=\"dialog__item\"\n\t\t\t\tdata-test=\"password\"\n\t\t\t\t:value.sync=\"newUser.password\"\n\t\t\t\t:minlength=\"minPasswordLength\"\n\t\t\t\t:maxlength=\"469\"\n\t\t\t\taria-describedby=\"password-email-hint\"\n\t\t\t\t:label=\"newUser.mailAddress === '' ? t('settings', 'Password (required)') : t('settings', 'Password')\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\tspellcheck=\"false\"\n\t\t\t\t:required=\"newUser.mailAddress === ''\" />\n\t\t\t<NcTextField class=\"dialog__item\"\n\t\t\t\tdata-test=\"email\"\n\t\t\t\ttype=\"email\"\n\t\t\t\t:value.sync=\"newUser.mailAddress\"\n\t\t\t\taria-describedby=\"password-email-hint\"\n\t\t\t\t:label=\"newUser.password === '' || settings.newUserRequireEmail ? t('settings', 'Email (required)') : t('settings', 'Email')\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\tautocomplete=\"off\"\n\t\t\t\tspellcheck=\"false\"\n\t\t\t\t:required=\"newUser.password === '' || settings.newUserRequireEmail\" />\n\t\t\t<div class=\"dialog__item\">\n\t\t\t\t<NcSelect class=\"dialog__select\"\n\t\t\t\t\tdata-test=\"groups\"\n\t\t\t\t\t:input-label=\"!settings.isAdmin && !settings.isDelegatedAdmin ? t('settings', 'Member of the following groups (required)') : t('settings', 'Member of the following groups')\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Set account groups')\"\n\t\t\t\t\t:disabled=\"loading.groups || loading.all\"\n\t\t\t\t\t:options=\"availableGroups\"\n\t\t\t\t\t:value=\"newUser.groups\"\n\t\t\t\t\tlabel=\"name\"\n\t\t\t\t\t:close-on-select=\"false\"\n\t\t\t\t\t:multiple=\"true\"\n\t\t\t\t\t:taggable=\"settings.isAdmin || settings.isDelegatedAdmin\"\n\t\t\t\t\t:required=\"!settings.isAdmin && !settings.isDelegatedAdmin\"\n\t\t\t\t\t:create-option=\"(value) => ({ id: value, name: value, isCreating: true })\"\n\t\t\t\t\t@search=\"searchGroups\"\n\t\t\t\t\t@option:created=\"createGroup\"\n\t\t\t\t\t@option:selected=\"options => addGroup(options.at(-1))\" />\n\t\t\t\t\t<!-- If user is not admin, they are a subadmin.\n\t\t\t\t\t\tSubadmins can't create users outside their groups\n\t\t\t\t\t\tTherefore, empty select is forbidden -->\n\t\t\t</div>\n\t\t\t<div class=\"dialog__item\">\n\t\t\t\t<NcSelect v-model=\"newUser.subAdminsGroups\"\n\t\t\t\t\tclass=\"dialog__select\"\n\t\t\t\t\t:input-label=\"t('settings', 'Admin of the following groups')\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Set account as admin for …')\"\n\t\t\t\t\t:disabled=\"loading.groups || loading.all\"\n\t\t\t\t\t:options=\"subAdminsGroups\"\n\t\t\t\t\t:close-on-select=\"false\"\n\t\t\t\t\t:multiple=\"true\"\n\t\t\t\t\tlabel=\"name\"\n\t\t\t\t\t@search=\"searchGroups\" />\n\t\t\t</div>\n\t\t\t<div class=\"dialog__item\">\n\t\t\t\t<NcSelect v-model=\"newUser.quota\"\n\t\t\t\t\tclass=\"dialog__select\"\n\t\t\t\t\t:input-label=\"t('settings', 'Quota')\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Set account quota')\"\n\t\t\t\t\t:options=\"quotaOptions\"\n\t\t\t\t\t:clearable=\"false\"\n\t\t\t\t\t:taggable=\"true\"\n\t\t\t\t\t:create-option=\"validateQuota\" />\n\t\t\t</div>\n\t\t\t<div v-if=\"showConfig.showLanguages\"\n\t\t\t\tclass=\"dialog__item\">\n\t\t\t\t<NcSelect v-model=\"newUser.language\"\n\t\t\t\t\tclass=\"dialog__select\"\n\t\t\t\t\t:input-label=\"t('settings', 'Language')\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Set default language')\"\n\t\t\t\t\t:clearable=\"false\"\n\t\t\t\t\t:selectable=\"option => !option.languages\"\n\t\t\t\t\t:filter-by=\"languageFilterBy\"\n\t\t\t\t\t:options=\"languages\"\n\t\t\t\t\tlabel=\"name\" />\n\t\t\t</div>\n\t\t\t<div :class=\"['dialog__item dialog__managers', { 'icon-loading-small': loading.manager }]\">\n\t\t\t\t<NcSelect v-model=\"newUser.manager\"\n\t\t\t\t\tclass=\"dialog__select\"\n\t\t\t\t\t:input-label=\"managerInputLabel\"\n\t\t\t\t\t:placeholder=\"managerLabel\"\n\t\t\t\t\t:options=\"possibleManagers\"\n\t\t\t\t\t:user-select=\"true\"\n\t\t\t\t\tlabel=\"displayname\"\n\t\t\t\t\t@search=\"searchUserManager\" />\n\t\t\t</div>\n\t\t</form>\n\n\t\t<template #actions>\n\t\t\t<NcButton class=\"dialog__submit\"\n\t\t\t\tdata-test=\"submit\"\n\t\t\t\tform=\"new-user-form\"\n\t\t\t\ttype=\"primary\"\n\t\t\t\tnative-type=\"submit\">\n\t\t\t\t{{ t('settings', 'Add new account') }}\n\t\t\t</NcButton>\n\t\t</template>\n\t</NcDialog>\n</template>\n\n<script>\nimport { formatFileSize, parseFileSize } from '@nextcloud/files'\nimport NcButton from '@nextcloud/vue/components/NcButton'\nimport NcDialog from '@nextcloud/vue/components/NcDialog'\nimport NcPasswordField from '@nextcloud/vue/components/NcPasswordField'\nimport NcSelect from '@nextcloud/vue/components/NcSelect'\nimport NcTextField from '@nextcloud/vue/components/NcTextField'\n\nimport { searchGroups } from '../../service/groups.ts'\nimport logger from '../../logger.ts'\n\nexport default {\n\tname: 'NewUserDialog',\n\n\tcomponents: {\n\t\tNcButton,\n\t\tNcDialog,\n\t\tNcPasswordField,\n\t\tNcSelect,\n\t\tNcTextField,\n\t},\n\n\tprops: {\n\t\tloading: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\n\t\tnewUser: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\n\t\tquotaOptions: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tavailableGroups: [],\n\t\t\tpossibleManagers: [],\n\t\t\t// TRANSLATORS This string describes a manager in the context of an organization\n\t\t\tmanagerInputLabel: t('settings', 'Manager'),\n\t\t\t// TRANSLATORS This string describes a manager in the context of an organization\n\t\t\tmanagerLabel: t('settings', 'Set line manager'),\n\t\t\t// Cancelable promise for search groups request\n\t\t\tpromise: null,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tshowConfig() {\n\t\t\treturn this.$store.getters.getShowConfig\n\t\t},\n\n\t\tsettings() {\n\t\t\treturn this.$store.getters.getServerData\n\t\t},\n\n\t\tusernameLabel() {\n\t\t\tif (this.settings.newUserGenerateUserID) {\n\t\t\t\treturn t('settings', 'Account name will be autogenerated')\n\t\t\t}\n\t\t\treturn t('settings', 'Account name (required)')\n\t\t},\n\n\t\tminPasswordLength() {\n\t\t\treturn this.$store.getters.getPasswordPolicyMinLength\n\t\t},\n\n\t\tsubAdminsGroups() {\n\t\t\t// data provided php side\n\t\t\treturn this.availableGroups.filter(group => group.id !== 'admin' && group.id !== '__nc_internal_recent' && group.id !== 'disabled')\n\t\t},\n\n\t\tlanguages() {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tname: t('settings', 'Common languages'),\n\t\t\t\t\tlanguages: this.settings.languages.commonLanguages,\n\t\t\t\t},\n\t\t\t\t...this.settings.languages.commonLanguages,\n\t\t\t\t{\n\t\t\t\t\tname: t('settings', 'Other languages'),\n\t\t\t\t\tlanguages: this.settings.languages.otherLanguages,\n\t\t\t\t},\n\t\t\t\t...this.settings.languages.otherLanguages,\n\t\t\t]\n\t\t},\n\t},\n\n\tasync beforeMount() {\n\t\tawait this.searchUserManager()\n\t},\n\n\tmounted() {\n\t\t// admins also can assign the system groups\n\t\tif (this.isAdmin || this.isDelegatedAdmin) {\n\t\t\tthis.availableGroups = this.$store.getters.getSortedGroups.filter(group => group.id !== '__nc_internal_recent' && group.id !== 'disabled')\n\t\t} else {\n\t\t\tthis.availableGroups = [...this.$store.getters.getSubAdminGroups]\n\t\t}\n\n\t\tthis.$refs.username?.focus?.()\n\t},\n\n\tmethods: {\n\t\tasync createUser() {\n\t\t\tthis.loading.all = true\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('addUser', {\n\t\t\t\t\tuserid: this.newUser.id,\n\t\t\t\t\tpassword: this.newUser.password,\n\t\t\t\t\tdisplayName: this.newUser.displayName,\n\t\t\t\t\temail: this.newUser.mailAddress,\n\t\t\t\t\tgroups: this.newUser.groups.map(group => group.id),\n\t\t\t\t\tsubadmin: this.newUser.subAdminsGroups.map(group => group.id),\n\t\t\t\t\tquota: this.newUser.quota.id,\n\t\t\t\t\tlanguage: this.newUser.language.code,\n\t\t\t\t\tmanager: this.newUser.manager.id,\n\t\t\t\t})\n\n\t\t\t\tthis.$emit('reset')\n\t\t\t\tthis.$refs.username?.focus?.()\n\t\t\t\tthis.$emit('closing')\n\t\t\t} catch (error) {\n\t\t\t\tthis.loading.all = false\n\t\t\t\tif (error.response && error.response.data && error.response.data.ocs && error.response.data.ocs.meta) {\n\t\t\t\t\tconst statuscode = error.response.data.ocs.meta.statuscode\n\t\t\t\t\tif (statuscode === 102) {\n\t\t\t\t\t\t// wrong username\n\t\t\t\t\t\tthis.$refs.username?.focus?.()\n\t\t\t\t\t} else if (statuscode === 107) {\n\t\t\t\t\t\t// wrong password\n\t\t\t\t\t\tthis.$refs.password?.focus?.()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tasync searchGroups(query, toggleLoading) {\n\t\t\tif (!this.isAdmin && !this.isDelegatedAdmin) {\n\t\t\t\t// managers cannot search for groups\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (this.promise) {\n\t\t\t\tthis.promise.cancel()\n\t\t\t}\n\t\t\ttoggleLoading(true)\n\t\t\ttry {\n\t\t\t\tthis.promise = searchGroups({\n\t\t\t\t\tsearch: query,\n\t\t\t\t\toffset: 0,\n\t\t\t\t\tlimit: 25,\n\t\t\t\t})\n\t\t\t\tconst groups = await this.promise\n\t\t\t\tthis.availableGroups = groups\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error(t('settings', 'Failed to search groups'), { error })\n\t\t\t}\n\t\t\tthis.promise = null\n\t\t\ttoggleLoading(false)\n\t\t},\n\n\t\t/**\n\t\t * Create a new group\n\t\t *\n\t\t * @param {any} group Group\n\t\t * @param {string} group.name Group id\n\t\t */\n\t\tasync createGroup({ name: gid }) {\n\t\t\tthis.loading.groups = true\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('addGroup', gid)\n\t\t\t\tthis.availableGroups.push({ id: gid, name: gid })\n\t\t\t\tthis.newUser.groups.push({ id: gid, name: gid })\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error(t('settings', 'Failed to create group'), { error })\n\t\t\t}\n\t\t\tthis.loading.groups = false\n\t\t},\n\n\t\t/**\n\t\t * Add user to group\n\t\t *\n\t\t * @param {object} group Group object\n\t\t */\n\t\tasync addGroup(group) {\n\t\t\tif (group.isCreating) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (group.canAdd === false) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.newUser.groups.push(group)\n\t\t},\n\n\t\t/**\n\t\t * Validate quota string to make sure it's a valid human file size\n\t\t *\n\t\t * @param {string} quota Quota in readable format '5 GB'\n\t\t * @return {object}\n\t\t */\n\t\tvalidateQuota(quota) {\n\t\t\t// only used for new presets sent through @Tag\n\t\t\tconst validQuota = OC.Util.computerFileSize(quota)\n\t\t\tif (validQuota !== null && validQuota >= 0) {\n\t\t\t\t// unify format output\n\t\t\t\tquota = formatFileSize(parseFileSize(quota))\n\t\t\t\tthis.newUser.quota = { id: quota, label: quota }\n\t\t\t\treturn this.newUser.quota\n\t\t\t}\n\t\t\t// Default is unlimited\n\t\t\tthis.newUser.quota = this.quotaOptions[0]\n\t\t\treturn this.quotaOptions[0]\n\t\t},\n\n\t\tlanguageFilterBy(option, label, search) {\n\t\t\t// Show group header of the language\n\t\t\tif (option.languages) {\n\t\t\t\treturn option.languages.some(\n\t\t\t\t\t({ name }) => name.toLocaleLowerCase().includes(search.toLocaleLowerCase()),\n\t\t\t\t)\n\t\t\t}\n\n\t\t\treturn (label || '').toLocaleLowerCase().includes(search.toLocaleLowerCase())\n\t\t},\n\n\t\tasync searchUserManager(query) {\n\t\t\tawait this.$store.dispatch(\n\t\t\t\t'searchUsers',\n\t\t\t\t{\n\t\t\t\t\toffset: 0,\n\t\t\t\t\tlimit: 10,\n\t\t\t\t\tsearch: query,\n\t\t\t\t},\n\t\t\t).then(response => {\n\t\t\t\tconst users = response?.data ? Object.values(response?.data.ocs.data.users) : []\n\t\t\t\tif (users.length > 0) {\n\t\t\t\t\tthis.possibleManagers = users\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.dialog {\n\t&__form {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t\tpadding: 0 8px;\n\t\tgap: 4px 0;\n\t}\n\n\t&__item {\n\t\twidth: 100%;\n\n\t\t&:not(:focus):not(:active) {\n\t\t\tborder-color: var(--color-border-dark);\n\t\t}\n\t}\n\n\t&__hint {\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tmargin-top: 8px;\n\t\talign-self: flex-start;\n\t}\n\n\t&__label {\n\t\tdisplay: block;\n\t\tpadding: 4px 0;\n\t}\n\n\t&__select {\n\t\twidth: 100%;\n\t}\n\n\t&__managers {\n\t\tmargin-bottom: 12px;\n\t}\n\n\t&__submit {\n\t\tmargin-top: 4px;\n\t\tmargin-bottom: 8px;\n\t}\n\n\t:deep {\n\t\t.dialog__actions {\n\t\t\tmargin: auto;\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!./NewUserDialog.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!./NewUserDialog.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!./NewUserDialog.vue?vue&type=style&index=0&id=70bbf4c9&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./NewUserDialog.vue?vue&type=style&index=0&id=70bbf4c9&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./NewUserDialog.vue?vue&type=template&id=70bbf4c9&scoped=true\"\nimport script from \"./NewUserDialog.vue?vue&type=script&lang=js\"\nexport * from \"./NewUserDialog.vue?vue&type=script&lang=js\"\nimport style0 from \"./NewUserDialog.vue?vue&type=style&index=0&id=70bbf4c9&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 \"70bbf4c9\",\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!./UserListFooter.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!./UserListFooter.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',{staticClass:\"footer\"},[_c('th',{attrs:{\"scope\":\"row\"}},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Total rows summary')))])]),_vm._v(\" \"),_c('td',{staticClass:\"footer__cell footer__cell--loading\"},[(_vm.loading)?_c('NcLoadingIcon',{attrs:{\"title\":_vm.t('settings', 'Loading accounts …'),\"size\":32}}):_vm._e()],1),_vm._v(\" \"),_c('td',{staticClass:\"footer__cell footer__cell--count footer__cell--multiline\"},[_c('span',{attrs:{\"aria-describedby\":\"user-count-desc\"}},[_vm._v(_vm._s(_vm.userCount))]),_vm._v(\" \"),_c('span',{staticClass:\"hidden-visually\",attrs:{\"id\":\"user-count-desc\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Scroll to load more rows'))+\"\\n\\t\\t\")])])])\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!./UserListFooter.vue?vue&type=style&index=0&id=db2a7c4e&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./UserListFooter.vue?vue&type=style&index=0&id=db2a7c4e&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserListFooter.vue?vue&type=template&id=db2a7c4e&scoped=true\"\nimport script from \"./UserListFooter.vue?vue&type=script&lang=ts\"\nexport * from \"./UserListFooter.vue?vue&type=script&lang=ts\"\nimport style0 from \"./UserListFooter.vue?vue&type=style&index=0&id=db2a7c4e&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 \"db2a7c4e\",\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!./UserListHeader.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!./UserListHeader.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',{staticClass:\"header\"},[_c('th',{staticClass:\"header__cell header__cell--avatar\",attrs:{\"data-cy-user-list-header-avatar\":\"\",\"scope\":\"col\"}},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Avatar'))+\"\\n\\t\\t\")])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell header__cell--displayname\",attrs:{\"data-cy-user-list-header-displayname\":\"\",\"scope\":\"col\"}},[_c('strong',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Display name'))+\"\\n\\t\\t\")])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell header__cell--username\",attrs:{\"data-cy-user-list-header-username\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Account name'))+\"\\n\\t\\t\")])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell\",class:{ 'header__cell--obfuscated': _vm.hasObfuscated },attrs:{\"data-cy-user-list-header-password\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.passwordLabel))])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell\",attrs:{\"data-cy-user-list-header-email\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Email')))])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell header__cell--large\",attrs:{\"data-cy-user-list-header-groups\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Groups')))])]),_vm._v(\" \"),(_vm.settings.isAdmin || _vm.settings.isDelegatedAdmin)?_c('th',{staticClass:\"header__cell header__cell--large\",attrs:{\"data-cy-user-list-header-subadmins\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Group admin for')))])]):_vm._e(),_vm._v(\" \"),_c('th',{staticClass:\"header__cell\",attrs:{\"data-cy-user-list-header-quota\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Quota')))])]),_vm._v(\" \"),(_vm.showConfig.showLanguages)?_c('th',{staticClass:\"header__cell header__cell--large\",attrs:{\"data-cy-user-list-header-languages\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Language')))])]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showUserBackend || _vm.showConfig.showStoragePath)?_c('th',{staticClass:\"header__cell header__cell--large\",attrs:{\"data-cy-user-list-header-storage-location\":\"\",\"scope\":\"col\"}},[(_vm.showConfig.showUserBackend)?_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Account backend'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showStoragePath)?_c('span',{staticClass:\"header__subtitle\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Storage location'))+\"\\n\\t\\t\")]):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showFirstLogin)?_c('th',{staticClass:\"header__cell\",attrs:{\"data-cy-user-list-header-first-login\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'First login')))])]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showLastLogin)?_c('th',{staticClass:\"header__cell\",attrs:{\"data-cy-user-list-header-last-login\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Last login')))])]):_vm._e(),_vm._v(\" \"),_c('th',{staticClass:\"header__cell header__cell--large header__cell--fill\",attrs:{\"data-cy-user-list-header-manager\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Manager')))])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell header__cell--actions\",attrs:{\"data-cy-user-list-header-actions\":\"\",\"scope\":\"col\"}},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Account actions'))+\"\\n\\t\\t\")])])])\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!./UserListHeader.vue?vue&type=style&index=0&id=5c0f8828&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./UserListHeader.vue?vue&type=style&index=0&id=5c0f8828&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserListHeader.vue?vue&type=template&id=5c0f8828&scoped=true\"\nimport script from \"./UserListHeader.vue?vue&type=script&lang=ts\"\nexport * from \"./UserListHeader.vue?vue&type=script&lang=ts\"\nimport style0 from \"./UserListHeader.vue?vue&type=style&index=0&id=5c0f8828&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 \"5c0f8828\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('tr',{staticClass:\"user-list__row\",attrs:{\"data-cy-user-row\":_vm.user.id}},[_c('td',{staticClass:\"row__cell row__cell--avatar\",attrs:{\"data-cy-user-list-cell-avatar\":\"\"}},[(_vm.isLoadingUser)?_c('NcLoadingIcon',{attrs:{\"name\":_vm.t('settings', 'Loading account …'),\"size\":32}}):(_vm.visible)?_c('NcAvatar',{attrs:{\"disable-menu\":\"\",\"show-user-status\":false,\"user\":_vm.user.id}}):_vm._e()],1),_vm._v(\" \"),_c('td',{staticClass:\"row__cell row__cell--displayname\",attrs:{\"data-cy-user-list-cell-displayname\":\"\"}},[(_vm.editing && _vm.user.backendCapabilities.setDisplayName)?[_c('NcTextField',{ref:\"displayNameField\",staticClass:\"user-row-text-field\",class:{ 'icon-loading-small': _vm.loading.displayName },attrs:{\"data-cy-user-list-input-displayname\":\"\",\"data-loading\":_vm.loading.displayName || undefined,\"trailing-button-label\":_vm.t('settings', 'Submit'),\"show-trailing-button\":true,\"disabled\":_vm.loading.displayName || _vm.isLoadingField,\"label\":_vm.t('settings', 'Change display name'),\"trailing-button-icon\":\"arrowRight\",\"value\":_vm.editedDisplayName,\"autocapitalize\":\"off\",\"autocomplete\":\"off\",\"spellcheck\":\"false\"},on:{\"update:value\":function($event){_vm.editedDisplayName=$event},\"trailing-button-click\":_vm.updateDisplayName}})]:(!_vm.isObfuscated)?_c('strong',{attrs:{\"title\":_vm.user.displayname?.length > 20 ? _vm.user.displayname : null}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.user.displayname)+\"\\n\\t\\t\")]):_vm._e()],2),_vm._v(\" \"),_c('td',{staticClass:\"row__cell row__cell--username\",attrs:{\"data-cy-user-list-cell-username\":\"\"}},[_c('span',{staticClass:\"row__subtitle\"},[_vm._v(_vm._s(_vm.user.id))])]),_vm._v(\" \"),_c('td',{staticClass:\"row__cell\",class:{ 'row__cell--obfuscated': _vm.hasObfuscated },attrs:{\"data-cy-user-list-cell-password\":\"\"}},[(_vm.editing && _vm.settings.canChangePassword && _vm.user.backendCapabilities.setPassword)?[_c('NcTextField',{staticClass:\"user-row-text-field\",class:{'icon-loading-small': _vm.loading.password},attrs:{\"data-cy-user-list-input-password\":\"\",\"data-loading\":_vm.loading.password || undefined,\"trailing-button-label\":_vm.t('settings', 'Submit'),\"show-trailing-button\":true,\"disabled\":_vm.loading.password || _vm.isLoadingField,\"minlength\":_vm.minPasswordLength,\"maxlength\":\"469\",\"label\":_vm.t('settings', 'Set new password'),\"trailing-button-icon\":\"arrowRight\",\"value\":_vm.editedPassword,\"autocapitalize\":\"off\",\"autocomplete\":\"new-password\",\"required\":\"\",\"spellcheck\":\"false\",\"type\":\"password\"},on:{\"update:value\":function($event){_vm.editedPassword=$event},\"trailing-button-click\":_vm.updatePassword}})]:(_vm.isObfuscated)?_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'You do not have permissions to see the details of this account'))+\"\\n\\t\\t\")]):_vm._e()],2),_vm._v(\" \"),_c('td',{staticClass:\"row__cell\",attrs:{\"data-cy-user-list-cell-email\":\"\"}},[(_vm.editing)?[_c('NcTextField',{staticClass:\"user-row-text-field\",class:{'icon-loading-small': _vm.loading.mailAddress},attrs:{\"data-cy-user-list-input-email\":\"\",\"data-loading\":_vm.loading.mailAddress || undefined,\"show-trailing-button\":true,\"trailing-button-label\":_vm.t('settings', 'Submit'),\"label\":_vm.t('settings', 'Set new email address'),\"disabled\":_vm.loading.mailAddress || _vm.isLoadingField,\"trailing-button-icon\":\"arrowRight\",\"value\":_vm.editedMail,\"autocapitalize\":\"off\",\"autocomplete\":\"email\",\"spellcheck\":\"false\",\"type\":\"email\"},on:{\"update:value\":function($event){_vm.editedMail=$event},\"trailing-button-click\":_vm.updateEmail}})]:(!_vm.isObfuscated)?_c('span',{attrs:{\"title\":_vm.user.email?.length > 20 ? _vm.user.email : null}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.user.email)+\"\\n\\t\\t\")]):_vm._e()],2),_vm._v(\" \"),_c('td',{staticClass:\"row__cell row__cell--large row__cell--multiline\",attrs:{\"data-cy-user-list-cell-groups\":\"\"}},[(_vm.editing)?[_c('label',{staticClass:\"hidden-visually\",attrs:{\"for\":'groups' + _vm.uniqueId}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Add account to group'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{attrs:{\"data-cy-user-list-input-groups\":\"\",\"data-loading\":_vm.loading.groups || undefined,\"input-id\":'groups' + _vm.uniqueId,\"close-on-select\":false,\"disabled\":_vm.isLoadingField || _vm.loading.groupsDetails,\"loading\":_vm.loading.groups,\"multiple\":true,\"append-to-body\":false,\"options\":_vm.availableGroups,\"placeholder\":_vm.t('settings', 'Add account to group'),\"taggable\":_vm.settings.isAdmin || _vm.settings.isDelegatedAdmin,\"value\":_vm.userGroups,\"label\":\"name\",\"no-wrap\":true,\"create-option\":(value) => ({ id: value, name: value, isCreating: true })},on:{\"search\":_vm.searchGroups,\"option:created\":_vm.createGroup,\"option:selected\":options => _vm.addUserGroup(options.at(-1)),\"option:deselected\":_vm.removeUserGroup}})]:(!_vm.isObfuscated)?_c('span',{attrs:{\"title\":_vm.userGroupsLabels?.length > 40 ? _vm.userGroupsLabels : null}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.userGroupsLabels)+\"\\n\\t\\t\")]):_vm._e()],2),_vm._v(\" \"),(_vm.settings.isAdmin || _vm.settings.isDelegatedAdmin)?_c('td',{staticClass:\"row__cell row__cell--large row__cell--multiline\",attrs:{\"data-cy-user-list-cell-subadmins\":\"\"}},[(_vm.editing && (_vm.settings.isAdmin || _vm.settings.isDelegatedAdmin))?[_c('label',{staticClass:\"hidden-visually\",attrs:{\"for\":'subadmins' + _vm.uniqueId}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Set account as admin for'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{attrs:{\"data-cy-user-list-input-subadmins\":\"\",\"data-loading\":_vm.loading.subadmins || undefined,\"input-id\":'subadmins' + _vm.uniqueId,\"close-on-select\":false,\"disabled\":_vm.isLoadingField || _vm.loading.subAdminGroupsDetails,\"loading\":_vm.loading.subadmins,\"label\":\"name\",\"append-to-body\":false,\"multiple\":true,\"no-wrap\":true,\"options\":_vm.availableSubAdminGroups,\"placeholder\":_vm.t('settings', 'Set account as admin for'),\"value\":_vm.userSubAdminGroups},on:{\"search\":_vm.searchGroups,\"option:deselected\":_vm.removeUserSubAdmin,\"option:selected\":options => _vm.addUserSubAdmin(options.at(-1))}})]:(!_vm.isObfuscated)?_c('span',{attrs:{\"title\":_vm.userSubAdminGroupsLabels?.length > 40 ? _vm.userSubAdminGroupsLabels : null}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.userSubAdminGroupsLabels)+\"\\n\\t\\t\")]):_vm._e()],2):_vm._e(),_vm._v(\" \"),_c('td',{staticClass:\"row__cell\",attrs:{\"data-cy-user-list-cell-quota\":\"\"}},[(_vm.editing)?[_c('label',{staticClass:\"hidden-visually\",attrs:{\"for\":'quota' + _vm.uniqueId}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Select account quota'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{attrs:{\"close-on-select\":true,\"create-option\":_vm.validateQuota,\"data-cy-user-list-input-quota\":\"\",\"data-loading\":_vm.loading.quota || undefined,\"disabled\":_vm.isLoadingField,\"loading\":_vm.loading.quota,\"append-to-body\":false,\"clearable\":false,\"input-id\":'quota' + _vm.uniqueId,\"options\":_vm.quotaOptions,\"placeholder\":_vm.t('settings', 'Select account quota'),\"taggable\":true},on:{\"option:selected\":_vm.setUserQuota},model:{value:(_vm.editedUserQuota),callback:function ($$v) {_vm.editedUserQuota=$$v},expression:\"editedUserQuota\"}})]:(!_vm.isObfuscated)?[_c('span',{attrs:{\"id\":'quota-progress' + _vm.uniqueId}},[_vm._v(_vm._s(_vm.userQuota)+\" (\"+_vm._s(_vm.usedSpace)+\")\")]),_vm._v(\" \"),_c('NcProgressBar',{staticClass:\"row__progress\",class:{\n\t\t\t\t\t'row__progress--warn': _vm.usedQuota > 80,\n\t\t\t\t},attrs:{\"aria-labelledby\":'quota-progress' + _vm.uniqueId,\"value\":_vm.usedQuota}})]:_vm._e()],2),_vm._v(\" \"),(_vm.showConfig.showLanguages)?_c('td',{staticClass:\"row__cell row__cell--large\",attrs:{\"data-cy-user-list-cell-language\":\"\"}},[(_vm.editing)?[_c('label',{staticClass:\"hidden-visually\",attrs:{\"for\":'language' + _vm.uniqueId}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Set the language'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{attrs:{\"id\":'language' + _vm.uniqueId,\"data-cy-user-list-input-language\":\"\",\"data-loading\":_vm.loading.languages || undefined,\"allow-empty\":false,\"disabled\":_vm.isLoadingField,\"loading\":_vm.loading.languages,\"clearable\":false,\"append-to-body\":false,\"options\":_vm.availableLanguages,\"placeholder\":_vm.t('settings', 'No language set'),\"value\":_vm.userLanguage,\"label\":\"name\"},on:{\"input\":_vm.setUserLanguage}})]:(!_vm.isObfuscated)?_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.userLanguage.name)+\"\\n\\t\\t\")]):_vm._e()],2):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showUserBackend || _vm.showConfig.showStoragePath)?_c('td',{staticClass:\"row__cell row__cell--large\",attrs:{\"data-cy-user-list-cell-storage-location\":\"\"}},[(!_vm.isObfuscated)?[(_vm.showConfig.showUserBackend)?_c('span',[_vm._v(_vm._s(_vm.user.backend))]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showStoragePath)?_c('span',{staticClass:\"row__subtitle\",attrs:{\"title\":_vm.user.storageLocation}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.user.storageLocation)+\"\\n\\t\\t\\t\")]):_vm._e()]:_vm._e()],2):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showFirstLogin)?_c('td',{staticClass:\"row__cell\",attrs:{\"data-cy-user-list-cell-first-login\":\"\"}},[(!_vm.isObfuscated)?_c('span',[_vm._v(_vm._s(_vm.userFirstLogin))]):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showLastLogin)?_c('td',{staticClass:\"row__cell\",attrs:{\"title\":_vm.userLastLoginTooltip,\"data-cy-user-list-cell-last-login\":\"\"}},[(!_vm.isObfuscated)?_c('span',[_vm._v(_vm._s(_vm.userLastLogin))]):_vm._e()]):_vm._e(),_vm._v(\" \"),_c('td',{staticClass:\"row__cell row__cell--large row__cell--fill\",attrs:{\"data-cy-user-list-cell-manager\":\"\"}},[(_vm.editing)?[_c('label',{staticClass:\"hidden-visually\",attrs:{\"for\":'manager' + _vm.uniqueId}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.managerLabel)+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{staticClass:\"select--fill\",attrs:{\"data-cy-user-list-input-manager\":\"\",\"data-loading\":_vm.loading.manager || undefined,\"input-id\":'manager' + _vm.uniqueId,\"close-on-select\":true,\"disabled\":_vm.isLoadingField,\"append-to-body\":false,\"loading\":_vm.loadingPossibleManagers || _vm.loading.manager,\"label\":\"displayname\",\"options\":_vm.possibleManagers,\"placeholder\":_vm.managerLabel},on:{\"open\":_vm.searchInitialUserManager,\"search\":_vm.searchUserManager,\"option:selected\":_vm.updateUserManager},model:{value:(_vm.currentManager),callback:function ($$v) {_vm.currentManager=$$v},expression:\"currentManager\"}})]:(!_vm.isObfuscated)?_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.user.manager)+\"\\n\\t\\t\")]):_vm._e()],2),_vm._v(\" \"),_c('td',{staticClass:\"row__cell row__cell--actions\",attrs:{\"data-cy-user-list-cell-actions\":\"\"}},[(_vm.visible && !_vm.isObfuscated && _vm.canEdit && !_vm.loading.all)?_c('UserRowActions',{attrs:{\"actions\":_vm.userActions,\"disabled\":_vm.isLoadingField,\"edit\":_vm.editing,\"user\":_vm.user},on:{\"update:edit\":_vm.toggleEdit}}):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcActions',{attrs:{\"aria-label\":_vm.t('settings', 'Toggle account actions menu'),\"disabled\":_vm.disabled,\"inline\":1}},[_c('NcActionButton',{attrs:{\"data-cy-user-list-action-toggle-edit\":`${_vm.edit}`,\"disabled\":_vm.disabled},on:{\"click\":_vm.toggleEdit},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{key:_vm.editSvg,attrs:{\"svg\":_vm.editSvg,\"aria-hidden\":\"true\"}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.edit ? _vm.t('settings', 'Done') : _vm.t('settings', 'Edit'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_vm._l((_vm.enabledActions),function({ action, icon, text },index){return _c('NcActionButton',{key:index,attrs:{\"disabled\":_vm.disabled,\"aria-label\":text,\"icon\":icon,\"close-after-click\":\"\"},on:{\"click\":(event) => action(event, { ..._vm.user })},scopedSlots:_vm._u([(_vm.isSvg(icon))?{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"svg\":icon,\"aria-hidden\":\"true\"}})]},proxy:true}:null],null,true)},[_vm._v(\"\\n\\t\\t\"+_vm._s(text)+\"\\n\\t\\t\")])})],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!./UserRowActions.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!./UserRowActions.vue?vue&type=script&lang=ts\"","import {XMLParser, XMLValidator} from 'fast-xml-parser';\n\nexport default function isSvg(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n\t}\n\n\tstring = string.trim();\n\n\tif (string.length === 0) {\n\t\treturn false;\n\t}\n\n\t// Has to be `!==` as it can also return an object with error info.\n\tif (XMLValidator.validate(string) !== true) {\n\t\treturn false;\n\t}\n\n\tlet jsonObject;\n\tconst parser = new XMLParser();\n\n\ttry {\n\t\tjsonObject = parser.parse(string);\n\t} catch {\n\t\treturn false;\n\t}\n\n\tif (!jsonObject) {\n\t\treturn false;\n\t}\n\n\tif (!Object.keys(jsonObject).some(x => x.toLowerCase() === 'svg')) {\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n","import { render, staticRenderFns } from \"./UserRowActions.vue?vue&type=template&id=61782548\"\nimport script from \"./UserRowActions.vue?vue&type=script&lang=ts\"\nexport * from \"./UserRowActions.vue?vue&type=script&lang=ts\"\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 * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { formatFileSize } from '@nextcloud/files'\nimport { useFormatDateTime } from '@nextcloud/vue'\n\nexport default {\n\tprops: {\n\t\tuser: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tsettings: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => ({}),\n\t\t},\n\t\tquotaOptions: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tlanguages: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\texternalActions: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t},\n\tsetup(props) {\n\t\tconst { formattedFullTime } = useFormatDateTime(props.user.firstLoginTimestamp * 1000, {\n\t\t\trelativeTime: false,\n\t\t\tformat: {\n\t\t\t\ttimeStyle: 'short',\n\t\t\t\tdateStyle: 'short',\n\t\t\t},\n\t\t})\n\t\treturn {\n\t\t\tformattedFullTime,\n\t\t}\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tavailableGroups: this.user.groups.map(id => ({ id, name: id })),\n\t\t\tavailableSubAdminGroups: this.user.subadmin.map(id => ({ id, name: id })),\n\t\t\tuserGroups: this.user.groups.map(id => ({ id, name: id })),\n\t\t\tuserSubAdminGroups: this.user.subadmin.map(id => ({ id, name: id })),\n\t\t}\n\t},\n\tcomputed: {\n\t\tshowConfig() {\n\t\t\treturn this.$store.getters.getShowConfig\n\t\t},\n\n\t\t/* QUOTA MANAGEMENT */\n\t\tusedSpace() {\n\t\t\tconst quotaUsed = this.user.quota.used > 0 ? this.user.quota.used : 0\n\t\t\treturn t('settings', '{size} used', { size: formatFileSize(quotaUsed, true) })\n\t\t},\n\n\t\tusedQuota() {\n\t\t\tlet quota = this.user.quota.quota\n\t\t\tif (quota > 0) {\n\t\t\t\tquota = Math.min(100, Math.round(this.user.quota.used / quota * 100))\n\t\t\t} else {\n\t\t\t\tconst usedInGB = this.user.quota.used / (10 * Math.pow(2, 30))\n\t\t\t\t// asymptotic curve approaching 50% at 10GB to visualize used stace with infinite quota\n\t\t\t\tquota = 95 * (1 - (1 / (usedInGB + 1)))\n\t\t\t}\n\t\t\treturn isNaN(quota) ? 0 : quota\n\t\t},\n\n\t\t// Mapping saved values to objects\n\t\tuserQuota() {\n\t\t\tif (this.user.quota.quota >= 0) {\n\t\t\t\t// if value is valid, let's map the quotaOptions or return custom quota\n\t\t\t\tconst humanQuota = formatFileSize(this.user.quota.quota)\n\t\t\t\tconst userQuota = this.quotaOptions.find(quota => quota.id === humanQuota)\n\t\t\t\treturn userQuota || { id: humanQuota, label: humanQuota }\n\t\t\t} else if (this.user.quota.quota === 'default') {\n\t\t\t\t// default quota is replaced by the proper value on load\n\t\t\t\treturn this.quotaOptions[0]\n\t\t\t}\n\t\t\treturn this.quotaOptions[1] // unlimited\n\t\t},\n\n\t\t/* PASSWORD POLICY? */\n\t\tminPasswordLength() {\n\t\t\treturn this.$store.getters.getPasswordPolicyMinLength\n\t\t},\n\n\t\t/* LANGUAGE */\n\t\tuserLanguage() {\n\t\t\tconst availableLanguages = this.languages[0].languages.concat(this.languages[1].languages)\n\t\t\tconst userLang = availableLanguages.find(lang => lang.code === this.user.language)\n\t\t\tif (typeof userLang !== 'object' && this.user.language !== '') {\n\t\t\t\treturn {\n\t\t\t\t\tcode: this.user.language,\n\t\t\t\t\tname: this.user.language,\n\t\t\t\t}\n\t\t\t} else if (this.user.language === '') {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn userLang\n\t\t},\n\n\t\tuserFirstLogin() {\n\t\t\tif (this.user.firstLoginTimestamp > 0) {\n\t\t\t\treturn this.formattedFullTime\n\t\t\t}\n\t\t\tif (this.user.firstLoginTimestamp < 0) {\n\t\t\t\treturn t('settings', 'Unknown')\n\t\t\t}\n\t\t\treturn t('settings', 'Never')\n\t\t},\n\n\t\t/* LAST LOGIN */\n\t\tuserLastLoginTooltip() {\n\t\t\tif (this.user.lastLoginTimestamp > 0) {\n\t\t\t\treturn OC.Util.formatDate(this.user.lastLoginTimestamp * 1000)\n\t\t\t}\n\t\t\treturn ''\n\t\t},\n\t\tuserLastLogin() {\n\t\t\tif (this.user.lastLoginTimestamp > 0) {\n\t\t\t\treturn OC.Util.relativeModifiedDate(this.user.lastLoginTimestamp * 1000)\n\t\t\t}\n\t\t\treturn t('settings', 'Never')\n\t\t},\n\t},\n}\n","<!--\n - SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<tr class=\"user-list__row\"\n\t\t:data-cy-user-row=\"user.id\">\n\t\t<td class=\"row__cell row__cell--avatar\" data-cy-user-list-cell-avatar>\n\t\t\t<NcLoadingIcon v-if=\"isLoadingUser\"\n\t\t\t\t:name=\"t('settings', 'Loading account …')\"\n\t\t\t\t:size=\"32\" />\n\t\t\t<NcAvatar v-else-if=\"visible\"\n\t\t\t\tdisable-menu\n\t\t\t\t:show-user-status=\"false\"\n\t\t\t\t:user=\"user.id\" />\n\t\t</td>\n\n\t\t<td class=\"row__cell row__cell--displayname\" data-cy-user-list-cell-displayname>\n\t\t\t<template v-if=\"editing && user.backendCapabilities.setDisplayName\">\n\t\t\t\t<NcTextField ref=\"displayNameField\"\n\t\t\t\t\tclass=\"user-row-text-field\"\n\t\t\t\t\tdata-cy-user-list-input-displayname\n\t\t\t\t\t:data-loading=\"loading.displayName || undefined\"\n\t\t\t\t\t:trailing-button-label=\"t('settings', 'Submit')\"\n\t\t\t\t\t:class=\"{ 'icon-loading-small': loading.displayName }\"\n\t\t\t\t\t:show-trailing-button=\"true\"\n\t\t\t\t\t:disabled=\"loading.displayName || isLoadingField\"\n\t\t\t\t\t:label=\"t('settings', 'Change display name')\"\n\t\t\t\t\ttrailing-button-icon=\"arrowRight\"\n\t\t\t\t\t:value.sync=\"editedDisplayName\"\n\t\t\t\t\tautocapitalize=\"off\"\n\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\tspellcheck=\"false\"\n\t\t\t\t\t@trailing-button-click=\"updateDisplayName\" />\n\t\t\t</template>\n\t\t\t<strong v-else-if=\"!isObfuscated\"\n\t\t\t\t:title=\"user.displayname?.length > 20 ? user.displayname : null\">\n\t\t\t\t{{ user.displayname }}\n\t\t\t</strong>\n\t\t</td>\n\n\t\t<td class=\"row__cell row__cell--username\" data-cy-user-list-cell-username>\n\t\t\t<span class=\"row__subtitle\">{{ user.id }}</span>\n\t\t</td>\n\n\t\t<td data-cy-user-list-cell-password\n\t\t\tclass=\"row__cell\"\n\t\t\t:class=\"{ 'row__cell--obfuscated': hasObfuscated }\">\n\t\t\t<template v-if=\"editing && settings.canChangePassword && user.backendCapabilities.setPassword\">\n\t\t\t\t<NcTextField class=\"user-row-text-field\"\n\t\t\t\t\tdata-cy-user-list-input-password\n\t\t\t\t\t:data-loading=\"loading.password || undefined\"\n\t\t\t\t\t:trailing-button-label=\"t('settings', 'Submit')\"\n\t\t\t\t\t:class=\"{'icon-loading-small': loading.password}\"\n\t\t\t\t\t:show-trailing-button=\"true\"\n\t\t\t\t\t:disabled=\"loading.password || isLoadingField\"\n\t\t\t\t\t:minlength=\"minPasswordLength\"\n\t\t\t\t\tmaxlength=\"469\"\n\t\t\t\t\t:label=\"t('settings', 'Set new password')\"\n\t\t\t\t\ttrailing-button-icon=\"arrowRight\"\n\t\t\t\t\t:value.sync=\"editedPassword\"\n\t\t\t\t\tautocapitalize=\"off\"\n\t\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t\trequired\n\t\t\t\t\tspellcheck=\"false\"\n\t\t\t\t\ttype=\"password\"\n\t\t\t\t\t@trailing-button-click=\"updatePassword\" />\n\t\t\t</template>\n\t\t\t<span v-else-if=\"isObfuscated\">\n\t\t\t\t{{ t('settings', 'You do not have permissions to see the details of this account') }}\n\t\t\t</span>\n\t\t</td>\n\n\t\t<td class=\"row__cell\" data-cy-user-list-cell-email>\n\t\t\t<template v-if=\"editing\">\n\t\t\t\t<NcTextField class=\"user-row-text-field\"\n\t\t\t\t\t:class=\"{'icon-loading-small': loading.mailAddress}\"\n\t\t\t\t\tdata-cy-user-list-input-email\n\t\t\t\t\t:data-loading=\"loading.mailAddress || undefined\"\n\t\t\t\t\t:show-trailing-button=\"true\"\n\t\t\t\t\t:trailing-button-label=\"t('settings', 'Submit')\"\n\t\t\t\t\t:label=\"t('settings', 'Set new email address')\"\n\t\t\t\t\t:disabled=\"loading.mailAddress || isLoadingField\"\n\t\t\t\t\ttrailing-button-icon=\"arrowRight\"\n\t\t\t\t\t:value.sync=\"editedMail\"\n\t\t\t\t\tautocapitalize=\"off\"\n\t\t\t\t\tautocomplete=\"email\"\n\t\t\t\t\tspellcheck=\"false\"\n\t\t\t\t\ttype=\"email\"\n\t\t\t\t\t@trailing-button-click=\"updateEmail\" />\n\t\t\t</template>\n\t\t\t<span v-else-if=\"!isObfuscated\"\n\t\t\t\t:title=\"user.email?.length > 20 ? user.email : null\">\n\t\t\t\t{{ user.email }}\n\t\t\t</span>\n\t\t</td>\n\n\t\t<td class=\"row__cell row__cell--large row__cell--multiline\" data-cy-user-list-cell-groups>\n\t\t\t<template v-if=\"editing\">\n\t\t\t\t<label class=\"hidden-visually\"\n\t\t\t\t\t:for=\"'groups' + uniqueId\">\n\t\t\t\t\t{{ t('settings', 'Add account to group') }}\n\t\t\t\t</label>\n\t\t\t\t<NcSelect data-cy-user-list-input-groups\n\t\t\t\t\t:data-loading=\"loading.groups || undefined\"\n\t\t\t\t\t:input-id=\"'groups' + uniqueId\"\n\t\t\t\t\t:close-on-select=\"false\"\n\t\t\t\t\t:disabled=\"isLoadingField || loading.groupsDetails\"\n\t\t\t\t\t:loading=\"loading.groups\"\n\t\t\t\t\t:multiple=\"true\"\n\t\t\t\t\t:append-to-body=\"false\"\n\t\t\t\t\t:options=\"availableGroups\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Add account to group')\"\n\t\t\t\t\t:taggable=\"settings.isAdmin || settings.isDelegatedAdmin\"\n\t\t\t\t\t:value=\"userGroups\"\n\t\t\t\t\tlabel=\"name\"\n\t\t\t\t\t:no-wrap=\"true\"\n\t\t\t\t\t:create-option=\"(value) => ({ id: value, name: value, isCreating: true })\"\n\t\t\t\t\t@search=\"searchGroups\"\n\t\t\t\t\t@option:created=\"createGroup\"\n\t\t\t\t\t@option:selected=\"options => addUserGroup(options.at(-1))\"\n\t\t\t\t\t@option:deselected=\"removeUserGroup\" />\n\t\t\t</template>\n\t\t\t<span v-else-if=\"!isObfuscated\"\n\t\t\t\t:title=\"userGroupsLabels?.length > 40 ? userGroupsLabels : null\">\n\t\t\t\t{{ userGroupsLabels }}\n\t\t\t</span>\n\t\t</td>\n\n\t\t<td v-if=\"settings.isAdmin || settings.isDelegatedAdmin\"\n\t\t\tdata-cy-user-list-cell-subadmins\n\t\t\tclass=\"row__cell row__cell--large row__cell--multiline\">\n\t\t\t<template v-if=\"editing && (settings.isAdmin || settings.isDelegatedAdmin)\">\n\t\t\t\t<label class=\"hidden-visually\"\n\t\t\t\t\t:for=\"'subadmins' + uniqueId\">\n\t\t\t\t\t{{ t('settings', 'Set account as admin for') }}\n\t\t\t\t</label>\n\t\t\t\t<NcSelect data-cy-user-list-input-subadmins\n\t\t\t\t\t:data-loading=\"loading.subadmins || undefined\"\n\t\t\t\t\t:input-id=\"'subadmins' + uniqueId\"\n\t\t\t\t\t:close-on-select=\"false\"\n\t\t\t\t\t:disabled=\"isLoadingField || loading.subAdminGroupsDetails\"\n\t\t\t\t\t:loading=\"loading.subadmins\"\n\t\t\t\t\tlabel=\"name\"\n\t\t\t\t\t:append-to-body=\"false\"\n\t\t\t\t\t:multiple=\"true\"\n\t\t\t\t\t:no-wrap=\"true\"\n\t\t\t\t\t:options=\"availableSubAdminGroups\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Set account as admin for')\"\n\t\t\t\t\t:value=\"userSubAdminGroups\"\n\t\t\t\t\t@search=\"searchGroups\"\n\t\t\t\t\t@option:deselected=\"removeUserSubAdmin\"\n\t\t\t\t\t@option:selected=\"options => addUserSubAdmin(options.at(-1))\" />\n\t\t\t</template>\n\t\t\t<span v-else-if=\"!isObfuscated\"\n\t\t\t\t:title=\"userSubAdminGroupsLabels?.length > 40 ? userSubAdminGroupsLabels : null\">\n\t\t\t\t{{ userSubAdminGroupsLabels }}\n\t\t\t</span>\n\t\t</td>\n\n\t\t<td class=\"row__cell\" data-cy-user-list-cell-quota>\n\t\t\t<template v-if=\"editing\">\n\t\t\t\t<label class=\"hidden-visually\"\n\t\t\t\t\t:for=\"'quota' + uniqueId\">\n\t\t\t\t\t{{ t('settings', 'Select account quota') }}\n\t\t\t\t</label>\n\t\t\t\t<NcSelect v-model=\"editedUserQuota\"\n\t\t\t\t\t:close-on-select=\"true\"\n\t\t\t\t\t:create-option=\"validateQuota\"\n\t\t\t\t\tdata-cy-user-list-input-quota\n\t\t\t\t\t:data-loading=\"loading.quota || undefined\"\n\t\t\t\t\t:disabled=\"isLoadingField\"\n\t\t\t\t\t:loading=\"loading.quota\"\n\t\t\t\t\t:append-to-body=\"false\"\n\t\t\t\t\t:clearable=\"false\"\n\t\t\t\t\t:input-id=\"'quota' + uniqueId\"\n\t\t\t\t\t:options=\"quotaOptions\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Select account quota')\"\n\t\t\t\t\t:taggable=\"true\"\n\t\t\t\t\t@option:selected=\"setUserQuota\" />\n\t\t\t</template>\n\t\t\t<template v-else-if=\"!isObfuscated\">\n\t\t\t\t<span :id=\"'quota-progress' + uniqueId\">{{ userQuota }} ({{ usedSpace }})</span>\n\t\t\t\t<NcProgressBar :aria-labelledby=\"'quota-progress' + uniqueId\"\n\t\t\t\t\tclass=\"row__progress\"\n\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t'row__progress--warn': usedQuota > 80,\n\t\t\t\t\t}\"\n\t\t\t\t\t:value=\"usedQuota\" />\n\t\t\t</template>\n\t\t</td>\n\n\t\t<td v-if=\"showConfig.showLanguages\"\n\t\t\tclass=\"row__cell row__cell--large\"\n\t\t\tdata-cy-user-list-cell-language>\n\t\t\t<template v-if=\"editing\">\n\t\t\t\t<label class=\"hidden-visually\"\n\t\t\t\t\t:for=\"'language' + uniqueId\">\n\t\t\t\t\t{{ t('settings', 'Set the language') }}\n\t\t\t\t</label>\n\t\t\t\t<NcSelect :id=\"'language' + uniqueId\"\n\t\t\t\t\tdata-cy-user-list-input-language\n\t\t\t\t\t:data-loading=\"loading.languages || undefined\"\n\t\t\t\t\t:allow-empty=\"false\"\n\t\t\t\t\t:disabled=\"isLoadingField\"\n\t\t\t\t\t:loading=\"loading.languages\"\n\t\t\t\t\t:clearable=\"false\"\n\t\t\t\t\t:append-to-body=\"false\"\n\t\t\t\t\t:options=\"availableLanguages\"\n\t\t\t\t\t:placeholder=\"t('settings', 'No language set')\"\n\t\t\t\t\t:value=\"userLanguage\"\n\t\t\t\t\tlabel=\"name\"\n\t\t\t\t\t@input=\"setUserLanguage\" />\n\t\t\t</template>\n\t\t\t<span v-else-if=\"!isObfuscated\">\n\t\t\t\t{{ userLanguage.name }}\n\t\t\t</span>\n\t\t</td>\n\n\t\t<td v-if=\"showConfig.showUserBackend || showConfig.showStoragePath\"\n\t\t\tdata-cy-user-list-cell-storage-location\n\t\t\tclass=\"row__cell row__cell--large\">\n\t\t\t<template v-if=\"!isObfuscated\">\n\t\t\t\t<span v-if=\"showConfig.showUserBackend\">{{ user.backend }}</span>\n\t\t\t\t<span v-if=\"showConfig.showStoragePath\"\n\t\t\t\t\t:title=\"user.storageLocation\"\n\t\t\t\t\tclass=\"row__subtitle\">\n\t\t\t\t\t{{ user.storageLocation }}\n\t\t\t\t</span>\n\t\t\t</template>\n\t\t</td>\n\n\t\t<td v-if=\"showConfig.showFirstLogin\"\n\t\t\tclass=\"row__cell\"\n\t\t\tdata-cy-user-list-cell-first-login>\n\t\t\t<span v-if=\"!isObfuscated\">{{ userFirstLogin }}</span>\n\t\t</td>\n\n\t\t<td v-if=\"showConfig.showLastLogin\"\n\t\t\t:title=\"userLastLoginTooltip\"\n\t\t\tclass=\"row__cell\"\n\t\t\tdata-cy-user-list-cell-last-login>\n\t\t\t<span v-if=\"!isObfuscated\">{{ userLastLogin }}</span>\n\t\t</td>\n\n\t\t<td class=\"row__cell row__cell--large row__cell--fill\" data-cy-user-list-cell-manager>\n\t\t\t<template v-if=\"editing\">\n\t\t\t\t<label class=\"hidden-visually\"\n\t\t\t\t\t:for=\"'manager' + uniqueId\">\n\t\t\t\t\t{{ managerLabel }}\n\t\t\t\t</label>\n\t\t\t\t<NcSelect v-model=\"currentManager\"\n\t\t\t\t\tclass=\"select--fill\"\n\t\t\t\t\tdata-cy-user-list-input-manager\n\t\t\t\t\t:data-loading=\"loading.manager || undefined\"\n\t\t\t\t\t:input-id=\"'manager' + uniqueId\"\n\t\t\t\t\t:close-on-select=\"true\"\n\t\t\t\t\t:disabled=\"isLoadingField\"\n\t\t\t\t\t:append-to-body=\"false\"\n\t\t\t\t\t:loading=\"loadingPossibleManagers || loading.manager\"\n\t\t\t\t\tlabel=\"displayname\"\n\t\t\t\t\t:options=\"possibleManagers\"\n\t\t\t\t\t:placeholder=\"managerLabel\"\n\t\t\t\t\t@open=\"searchInitialUserManager\"\n\t\t\t\t\t@search=\"searchUserManager\"\n\t\t\t\t\t@option:selected=\"updateUserManager\" />\n\t\t\t</template>\n\t\t\t<span v-else-if=\"!isObfuscated\">\n\t\t\t\t{{ user.manager }}\n\t\t\t</span>\n\t\t</td>\n\n\t\t<td class=\"row__cell row__cell--actions\" data-cy-user-list-cell-actions>\n\t\t\t<UserRowActions v-if=\"visible && !isObfuscated && canEdit && !loading.all\"\n\t\t\t\t:actions=\"userActions\"\n\t\t\t\t:disabled=\"isLoadingField\"\n\t\t\t\t:edit=\"editing\"\n\t\t\t\t:user=\"user\"\n\t\t\t\t@update:edit=\"toggleEdit\" />\n\t\t</td>\n\t</tr>\n</template>\n\n<script>\nimport { formatFileSize, parseFileSize } from '@nextcloud/files'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { showSuccess, showError } from '@nextcloud/dialogs'\nimport { confirmPassword } from '@nextcloud/password-confirmation'\n\nimport NcAvatar from '@nextcloud/vue/components/NcAvatar'\nimport NcLoadingIcon from '@nextcloud/vue/components/NcLoadingIcon'\nimport NcProgressBar from '@nextcloud/vue/components/NcProgressBar'\nimport NcSelect from '@nextcloud/vue/components/NcSelect'\nimport NcTextField from '@nextcloud/vue/components/NcTextField'\n\nimport UserRowActions from './UserRowActions.vue'\n\nimport UserRowMixin from '../../mixins/UserRowMixin.js'\nimport { isObfuscated, unlimitedQuota } from '../../utils/userUtils.ts'\nimport { searchGroups, loadUserGroups, loadUserSubAdminGroups } from '../../service/groups.ts'\nimport logger from '../../logger.ts'\n\nexport default {\n\tname: 'UserRow',\n\n\tcomponents: {\n\t\tNcAvatar,\n\t\tNcLoadingIcon,\n\t\tNcProgressBar,\n\t\tNcSelect,\n\t\tNcTextField,\n\t\tUserRowActions,\n\t},\n\n\tmixins: [\n\t\tUserRowMixin,\n\t],\n\n\tprops: {\n\t\tuser: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tvisible: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tusers: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\thasObfuscated: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tquotaOptions: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\tlanguages: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\tsettings: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\texternalActions: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tselectedQuota: false,\n\t\t\trand: Math.random().toString(36).substring(2),\n\t\t\tloadingPossibleManagers: false,\n\t\t\tpossibleManagers: [],\n\t\t\tcurrentManager: '',\n\t\t\tediting: false,\n\t\t\tloading: {\n\t\t\t\tall: false,\n\t\t\t\tdisplayName: false,\n\t\t\t\tpassword: false,\n\t\t\t\tmailAddress: false,\n\t\t\t\tgroups: false,\n\t\t\t\tgroupsDetails: false,\n\t\t\t\tsubAdminGroupsDetails: false,\n\t\t\t\tsubadmins: false,\n\t\t\t\tquota: false,\n\t\t\t\tdelete: false,\n\t\t\t\tdisable: false,\n\t\t\t\tlanguages: false,\n\t\t\t\twipe: false,\n\t\t\t\tmanager: false,\n\t\t\t},\n\t\t\teditedDisplayName: this.user.displayname,\n\t\t\teditedPassword: '',\n\t\t\teditedMail: this.user.email ?? '',\n\t\t\t// Cancelable promise for search groups request\n\t\t\tpromise: null,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tmanagerLabel() {\n\t\t\t// TRANSLATORS This string describes a person's manager in the context of an organization\n\t\t\treturn t('settings', 'Set line manager')\n\t\t},\n\n\t\tisObfuscated() {\n\t\t\treturn isObfuscated(this.user)\n\t\t},\n\n\t\tshowConfig() {\n\t\t\treturn this.$store.getters.getShowConfig\n\t\t},\n\n\t\tisLoadingUser() {\n\t\t\treturn this.loading.delete || this.loading.disable || this.loading.wipe\n\t\t},\n\n\t\tisLoadingField() {\n\t\t\treturn this.loading.delete || this.loading.disable || this.loading.all\n\t\t},\n\n\t\tuniqueId() {\n\t\t\treturn encodeURIComponent(this.user.id + this.rand)\n\t\t},\n\n\t\tuserGroupsLabels() {\n\t\t\treturn this.userGroups\n\t\t\t\t.map(group => group.name ?? group.id)\n\t\t\t\t.join(', ')\n\t\t},\n\n\t\tuserSubAdminGroupsLabels() {\n\t\t\treturn this.userSubAdminGroups\n\t\t\t\t.map(group => group.name ?? group.id)\n\t\t\t\t.join(', ')\n\t\t},\n\n\t\tusedSpace() {\n\t\t\tif (this.user.quota?.used) {\n\t\t\t\treturn t('settings', '{size} used', { size: formatFileSize(this.user.quota?.used) })\n\t\t\t}\n\t\t\treturn t('settings', '{size} used', { size: formatFileSize(0) })\n\t\t},\n\n\t\tcanEdit() {\n\t\t\treturn getCurrentUser().uid !== this.user.id || this.settings.isAdmin || this.settings.isDelegatedAdmin\n\t\t},\n\n\t\tuserQuota() {\n\t\t\tlet quota = this.user.quota?.quota\n\n\t\t\tif (quota === 'default') {\n\t\t\t\tquota = this.settings.defaultQuota\n\t\t\t\tif (quota !== 'none') {\n\t\t\t\t\t// convert to numeric value to match what the server would usually return\n\t\t\t\t\tquota = parseFileSize(quota, true)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// when the default quota is unlimited, the server returns -3 here, map it to \"none\"\n\t\t\tif (quota === 'none' || quota === -3) {\n\t\t\t\treturn t('settings', 'Unlimited')\n\t\t\t} else if (quota >= 0) {\n\t\t\t\treturn formatFileSize(quota)\n\t\t\t}\n\t\t\treturn formatFileSize(0)\n\t\t},\n\n\t\tuserActions() {\n\t\t\tconst actions = [\n\t\t\t\t{\n\t\t\t\t\ticon: 'icon-delete',\n\t\t\t\t\ttext: t('settings', 'Delete account'),\n\t\t\t\t\taction: this.deleteUser,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ticon: 'icon-delete',\n\t\t\t\t\ttext: t('settings', 'Disconnect all devices and delete local data'),\n\t\t\t\t\taction: this.wipeUserDevices,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ticon: this.user.enabled ? 'icon-close' : 'icon-add',\n\t\t\t\t\ttext: this.user.enabled ? t('settings', 'Disable account') : t('settings', 'Enable account'),\n\t\t\t\t\taction: this.enableDisableUser,\n\t\t\t\t},\n\t\t\t]\n\t\t\tif (this.user.email !== null && this.user.email !== '') {\n\t\t\t\tactions.push({\n\t\t\t\t\ticon: 'icon-mail',\n\t\t\t\t\ttext: t('settings', 'Resend welcome email'),\n\t\t\t\t\taction: this.sendWelcomeMail,\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn actions.concat(this.externalActions)\n\t\t},\n\n\t\t// mapping saved values to objects\n\t\teditedUserQuota: {\n\t\t\tget() {\n\t\t\t\tif (this.selectedQuota !== false) {\n\t\t\t\t\treturn this.selectedQuota\n\t\t\t\t}\n\t\t\t\tif (this.settings.defaultQuota !== unlimitedQuota.id && parseFileSize(this.settings.defaultQuota, true) >= 0) {\n\t\t\t\t\t// if value is valid, let's map the quotaOptions or return custom quota\n\t\t\t\t\treturn { id: this.settings.defaultQuota, label: this.settings.defaultQuota }\n\t\t\t\t}\n\t\t\t\treturn unlimitedQuota // unlimited\n\t\t\t},\n\t\t\tset(quota) {\n\t\t\t\tthis.selectedQuota = quota\n\t\t\t},\n\t\t},\n\n\t\tavailableLanguages() {\n\t\t\treturn this.languages[0].languages.concat(this.languages[1].languages)\n\t\t},\n\t},\n\n\tasync beforeMount() {\n\t\tif (this.user.manager) {\n\t\t\tawait this.initManager(this.user.manager)\n\t\t}\n\t},\n\n\tmethods: {\n\t\tasync wipeUserDevices() {\n\t\t\tconst userid = this.user.id\n\t\t\tawait confirmPassword()\n\t\t\tOC.dialogs.confirmDestructive(\n\t\t\t\tt('settings', 'In case of lost device or exiting the organization, this can remotely wipe the Nextcloud data from all devices associated with {userid}. Only works if the devices are connected to the internet.', { userid }),\n\t\t\t\tt('settings', 'Remote wipe of devices'),\n\t\t\t\t{\n\t\t\t\t\ttype: OC.dialogs.YES_NO_BUTTONS,\n\t\t\t\t\tconfirm: t('settings', 'Wipe {userid}\\'s devices', { userid }),\n\t\t\t\t\tconfirmClasses: 'error',\n\t\t\t\t\tcancel: t('settings', 'Cancel'),\n\t\t\t\t},\n\t\t\t\t(result) => {\n\t\t\t\t\tif (result) {\n\t\t\t\t\t\tthis.loading.wipe = true\n\t\t\t\t\t\tthis.loading.all = true\n\t\t\t\t\t\tthis.$store.dispatch('wipeUserDevices', userid)\n\t\t\t\t\t\t\t.then(() => showSuccess(t('settings', 'Wiped {userid}\\'s devices', { userid })), { timeout: 2000 })\n\t\t\t\t\t\t\t.finally(() => {\n\t\t\t\t\t\t\t\tthis.loading.wipe = false\n\t\t\t\t\t\t\t\tthis.loading.all = false\n\t\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\ttrue,\n\t\t\t)\n\t\t},\n\n\t\tfilterManagers(managers) {\n\t\t\treturn managers.filter((manager) => manager.id !== this.user.id)\n\t\t},\n\n\t\tasync initManager(userId) {\n\t\t\tawait this.$store.dispatch('getUser', userId).then(response => {\n\t\t\t\tthis.currentManager = response?.data.ocs.data\n\t\t\t})\n\t\t},\n\n\t\tasync searchInitialUserManager() {\n\t\t\tthis.loadingPossibleManagers = true\n\t\t\tawait this.searchUserManager()\n\t\t\tthis.loadingPossibleManagers = false\n\t\t},\n\n\t\tasync loadGroupsDetails() {\n\t\t\tthis.loading.groups = true\n\t\t\tthis.loading.groupsDetails = true\n\t\t\ttry {\n\t\t\t\tconst groups = await loadUserGroups({ userId: this.user.id })\n\t\t\t\tthis.availableGroups = this.availableGroups.map(availableGroup => groups.find(group => group.id === availableGroup.id) ?? availableGroup)\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error(t('settings', 'Failed to load groups with details'), { error })\n\t\t\t}\n\t\t\tthis.loading.groups = false\n\t\t\tthis.loading.groupsDetails = false\n\t\t},\n\n\t\tasync loadSubAdminGroupsDetails() {\n\t\t\tthis.loading.subadmins = true\n\t\t\tthis.loading.subAdminGroupsDetails = true\n\t\t\ttry {\n\t\t\t\tconst groups = await loadUserSubAdminGroups({ userId: this.user.id })\n\t\t\t\tthis.availableSubAdminGroups = this.availableSubAdminGroups.map(availableGroup => groups.find(group => group.id === availableGroup.id) ?? availableGroup)\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error(t('settings', 'Failed to load sub admin groups with details'), { error })\n\t\t\t}\n\t\t\tthis.loading.subadmins = false\n\t\t\tthis.loading.subAdminGroupsDetails = false\n\t\t},\n\n\t\tasync searchGroups(query, toggleLoading) {\n\t\t\tif (query === '') {\n\t\t\t\treturn // Prevent unexpected search behaviour e.g. on option:created\n\t\t\t}\n\t\t\tif (this.promise) {\n\t\t\t\tthis.promise.cancel()\n\t\t\t}\n\t\t\ttoggleLoading(true)\n\t\t\ttry {\n\t\t\t\tthis.promise = await searchGroups({\n\t\t\t\t\tsearch: query,\n\t\t\t\t\toffset: 0,\n\t\t\t\t\tlimit: 25,\n\t\t\t\t})\n\t\t\t\tconst groups = await this.promise\n\t\t\t\tthis.availableGroups = groups\n\t\t\t\tthis.availableSubAdminGroups = groups.filter(group => group.id !== 'admin')\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error(t('settings', 'Failed to search groups'), { error })\n\t\t\t}\n\t\t\tthis.promise = null\n\t\t\ttoggleLoading(false)\n\t\t},\n\n\t\tasync searchUserManager(query) {\n\t\t\tawait this.$store.dispatch('searchUsers', { offset: 0, limit: 10, search: query }).then(response => {\n\t\t\t\tconst users = response?.data ? this.filterManagers(Object.values(response?.data.ocs.data.users)) : []\n\t\t\t\tif (users.length > 0) {\n\t\t\t\t\tthis.possibleManagers = users\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\n\t\tasync updateUserManager(manager) {\n\t\t\tif (manager === null) {\n\t\t\t\tthis.currentManager = ''\n\t\t\t}\n\t\t\tthis.loading.manager = true\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('setUserData', {\n\t\t\t\t\tuserid: this.user.id,\n\t\t\t\t\tkey: 'manager',\n\t\t\t\t\tvalue: this.currentManager ? this.currentManager.id : '',\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\t// TRANSLATORS This string describes a line manager in the context of an organization\n\t\t\t\tshowError(t('settings', 'Failed to update line manager'))\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tthis.loading.manager = false\n\t\t\t}\n\t\t},\n\n\t\tasync deleteUser() {\n\t\t\tconst userid = this.user.id\n\t\t\tawait confirmPassword()\n\t\t\tOC.dialogs.confirmDestructive(\n\t\t\t\tt('settings', 'Fully delete {userid}\\'s account including all their personal files, app data, etc.', { userid }),\n\t\t\t\tt('settings', 'Account deletion'),\n\t\t\t\t{\n\t\t\t\t\ttype: OC.dialogs.YES_NO_BUTTONS,\n\t\t\t\t\tconfirm: t('settings', 'Delete {userid}\\'s account', { userid }),\n\t\t\t\t\tconfirmClasses: 'error',\n\t\t\t\t\tcancel: t('settings', 'Cancel'),\n\t\t\t\t},\n\t\t\t\t(result) => {\n\t\t\t\t\tif (result) {\n\t\t\t\t\t\tthis.loading.delete = true\n\t\t\t\t\t\tthis.loading.all = true\n\t\t\t\t\t\treturn this.$store.dispatch('deleteUser', userid)\n\t\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\t\tthis.loading.delete = false\n\t\t\t\t\t\t\t\tthis.loading.all = false\n\t\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\ttrue,\n\t\t\t)\n\t\t},\n\n\t\tenableDisableUser() {\n\t\t\tthis.loading.delete = true\n\t\t\tthis.loading.all = true\n\t\t\tconst userid = this.user.id\n\t\t\tconst enabled = !this.user.enabled\n\t\t\treturn this.$store.dispatch('enableDisableUser', {\n\t\t\t\tuserid,\n\t\t\t\tenabled,\n\t\t\t})\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.loading.delete = false\n\t\t\t\t\tthis.loading.all = false\n\t\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Set user displayName\n\t\t */\n\t\tasync updateDisplayName() {\n\t\t\tthis.loading.displayName = true\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('setUserData', {\n\t\t\t\t\tuserid: this.user.id,\n\t\t\t\t\tkey: 'displayname',\n\t\t\t\t\tvalue: this.editedDisplayName,\n\t\t\t\t})\n\n\t\t\t\tif (this.editedDisplayName === this.user.displayname) {\n\t\t\t\t\tshowSuccess(t('settings', 'Display name was successfully changed'))\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tthis.loading.displayName = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Set user password\n\t\t */\n\t\tasync updatePassword() {\n\t\t\tthis.loading.password = true\n\t\t\tif (this.editedPassword.length === 0) {\n\t\t\t\tshowError(t('settings', \"Password can't be empty\"))\n\t\t\t\tthis.loading.password = false\n\t\t\t} else {\n\t\t\t\ttry {\n\t\t\t\t\tawait this.$store.dispatch('setUserData', {\n\t\t\t\t\t\tuserid: this.user.id,\n\t\t\t\t\t\tkey: 'password',\n\t\t\t\t\t\tvalue: this.editedPassword,\n\t\t\t\t\t})\n\t\t\t\t\tthis.editedPassword = ''\n\t\t\t\t\tshowSuccess(t('settings', 'Password was successfully changed'))\n\t\t\t\t} finally {\n\t\t\t\t\tthis.loading.password = false\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Set user mailAddress\n\t\t */\n\t\tasync updateEmail() {\n\t\t\tthis.loading.mailAddress = true\n\t\t\tif (this.editedMail === '') {\n\t\t\t\tshowError(t('settings', \"Email can't be empty\"))\n\t\t\t\tthis.loading.mailAddress = false\n\t\t\t\tthis.editedMail = this.user.email\n\t\t\t} else {\n\t\t\t\ttry {\n\t\t\t\t\tawait this.$store.dispatch('setUserData', {\n\t\t\t\t\t\tuserid: this.user.id,\n\t\t\t\t\t\tkey: 'email',\n\t\t\t\t\t\tvalue: this.editedMail,\n\t\t\t\t\t})\n\n\t\t\t\t\tif (this.editedMail === this.user.email) {\n\t\t\t\t\t\tshowSuccess(t('settings', 'Email was successfully changed'))\n\t\t\t\t\t}\n\t\t\t\t} finally {\n\t\t\t\t\tthis.loading.mailAddress = false\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Create a new group and add user to it\n\t\t *\n\t\t * @param {string} gid Group id\n\t\t */\n\t\tasync createGroup({ name: gid }) {\n\t\t\tthis.loading.groups = true\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('addGroup', gid)\n\t\t\t\tthis.availableGroups.push({ id: gid, name: gid })\n\t\t\t\tthis.availableSubAdminGroups.push({ id: gid, name: gid })\n\t\t\t\tconst userid = this.user.id\n\t\t\t\tawait this.$store.dispatch('addUserGroup', { userid, gid })\n\t\t\t\tthis.userGroups.push({ id: gid, name: gid })\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error(t('settings', 'Failed to create group'), { error })\n\t\t\t}\n\t\t\tthis.loading.groups = false\n\t\t},\n\n\t\t/**\n\t\t * Add user to group\n\t\t *\n\t\t * @param {object} group Group object\n\t\t */\n\t\tasync addUserGroup(group) {\n\t\t\tif (group.isCreating) {\n\t\t\t\t// This is NcSelect's internal value for a new inputted group name\n\t\t\t\t// Ignore\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst userid = this.user.id\n\t\t\tconst gid = group.id\n\t\t\tif (group.canAdd === false) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.loading.groups = true\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('addUserGroup', { userid, gid })\n\t\t\t\tthis.userGroups.push(group)\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error)\n\t\t\t}\n\t\t\tthis.loading.groups = false\n\t\t},\n\n\t\t/**\n\t\t * Remove user from group\n\t\t *\n\t\t * @param {object} group Group object\n\t\t */\n\t\tasync removeUserGroup(group) {\n\t\t\tif (group.canRemove === false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tthis.loading.groups = true\n\t\t\tconst userid = this.user.id\n\t\t\tconst gid = group.id\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('removeUserGroup', {\n\t\t\t\t\tuserid,\n\t\t\t\t\tgid,\n\t\t\t\t})\n\t\t\t\tthis.userGroups = this.userGroups.filter(group => group.id !== gid)\n\t\t\t\tthis.loading.groups = false\n\t\t\t\t// remove user from current list if current list is the removed group\n\t\t\t\tif (this.$route.params.selectedGroup === gid) {\n\t\t\t\t\tthis.$store.commit('deleteUser', userid)\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\tthis.loading.groups = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Add user to group\n\t\t *\n\t\t * @param {object} group Group object\n\t\t */\n\t\tasync addUserSubAdmin(group) {\n\t\t\tthis.loading.subadmins = true\n\t\t\tconst userid = this.user.id\n\t\t\tconst gid = group.id\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('addUserSubAdmin', {\n\t\t\t\t\tuserid,\n\t\t\t\t\tgid,\n\t\t\t\t})\n\t\t\t\tthis.userSubAdminGroups.push(group)\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error)\n\t\t\t}\n\t\t\tthis.loading.subadmins = false\n\t\t},\n\n\t\t/**\n\t\t * Remove user from group\n\t\t *\n\t\t * @param {object} group Group object\n\t\t */\n\t\tasync removeUserSubAdmin(group) {\n\t\t\tthis.loading.subadmins = true\n\t\t\tconst userid = this.user.id\n\t\t\tconst gid = group.id\n\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('removeUserSubAdmin', {\n\t\t\t\t\tuserid,\n\t\t\t\t\tgid,\n\t\t\t\t})\n\t\t\t\tthis.userSubAdminGroups = this.userSubAdminGroups.filter(group => group.id !== gid)\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tthis.loading.subadmins = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Dispatch quota set request\n\t\t *\n\t\t * @param {string | object} quota Quota in readable format '5 GB' or Object {id: '5 GB', label: '5GB'}\n\t\t * @return {string}\n\t\t */\n\t\tasync setUserQuota(quota = 'none') {\n\t\t\t// Make sure correct label is set for unlimited quota\n\t\t\tif (quota === 'none') {\n\t\t\t\tquota = unlimitedQuota\n\t\t\t}\n\t\t\tthis.loading.quota = true\n\n\t\t\t// ensure we only send the preset id\n\t\t\tquota = quota.id ? quota.id : quota\n\n\t\t\ttry {\n\t\t\t\t// If human readable format, convert to raw float format\n\t\t\t\t// Else just send the raw string\n\t\t\t\tconst value = (parseFileSize(quota, true) || quota).toString()\n\t\t\t\tawait this.$store.dispatch('setUserData', {\n\t\t\t\t\tuserid: this.user.id,\n\t\t\t\t\tkey: 'quota',\n\t\t\t\t\tvalue,\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tthis.loading.quota = false\n\t\t\t}\n\t\t\treturn quota\n\t\t},\n\n\t\t/**\n\t\t * Validate quota string to make sure it's a valid human file size\n\t\t *\n\t\t * @param {string | object} quota Quota in readable format '5 GB' or Object {id: '5 GB', label: '5GB'}\n\t\t * @return {object} The validated quota object or unlimited quota if input is invalid\n\t\t */\n\t\tvalidateQuota(quota) {\n\t\t\tif (typeof quota === 'object') {\n\t\t\t\tquota = quota?.id || quota.label\n\t\t\t}\n\t\t\t// only used for new presets sent through @Tag\n\t\t\tconst validQuota = parseFileSize(quota, true)\n\t\t\tif (validQuota === null) {\n\t\t\t\treturn unlimitedQuota\n\t\t\t} else {\n\t\t\t\t// unify format output\n\t\t\t\tquota = formatFileSize(parseFileSize(quota, true))\n\t\t\t\treturn { id: quota, label: quota }\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Dispatch language set request\n\t\t *\n\t\t * @param {object} lang language object {code:'en', name:'English'}\n\t\t * @return {object}\n\t\t */\n\t\tasync setUserLanguage(lang) {\n\t\t\tthis.loading.languages = true\n\t\t\t// ensure we only send the preset id\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('setUserData', {\n\t\t\t\t\tuserid: this.user.id,\n\t\t\t\t\tkey: 'language',\n\t\t\t\t\tvalue: lang.code,\n\t\t\t\t})\n\t\t\t\tthis.loading.languages = false\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error)\n\t\t\t}\n\t\t\treturn lang\n\t\t},\n\n\t\t/**\n\t\t * Dispatch new welcome mail request\n\t\t */\n\t\tsendWelcomeMail() {\n\t\t\tthis.loading.all = true\n\t\t\tthis.$store.dispatch('sendWelcomeMail', this.user.id)\n\t\t\t\t.then(() => showSuccess(t('settings', 'Welcome mail sent!'), { timeout: 2000 }))\n\t\t\t\t.finally(() => {\n\t\t\t\t\tthis.loading.all = false\n\t\t\t\t})\n\t\t},\n\n\t\tasync toggleEdit() {\n\t\t\tthis.editing = !this.editing\n\t\t\tif (this.editing) {\n\t\t\t\tawait this.$nextTick()\n\t\t\t\tthis.$refs.displayNameField?.$refs?.inputField?.$refs?.input?.focus()\n\t\t\t\tthis.loadGroupsDetails()\n\t\t\t\tthis.loadSubAdminGroupsDetails()\n\t\t\t}\n\t\t\tif (this.editedDisplayName !== this.user.displayname) {\n\t\t\t\tthis.editedDisplayName = this.user.displayname\n\t\t\t} else if (this.editedMail !== this.user.email) {\n\t\t\t\tthis.editedMail = this.user.email ?? ''\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@use './shared/styles';\n\n.user-list__row {\n\t@include styles.row;\n\n\t&:hover {\n\t\tbackground-color: var(--color-background-hover);\n\n\t\t.row__cell:not(.row__cell--actions) {\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t}\n\t}\n\n\t// Limit width of select in fill cell\n\t.select--fill {\n\t\tmax-width: calc(var(--cell-width-large) - (2 * var(--cell-padding)));\n\t}\n}\n\n.row {\n\t@include styles.cell;\n\n\t&__cell {\n\t\tborder-bottom: 1px solid var(--color-border);\n\n\t\t:deep {\n\t\t\t.v-select.select {\n\t\t\t\tmin-width: var(--cell-min-width);\n\t\t\t}\n\t\t}\n\t}\n\n\t&__progress {\n\t\tmargin-top: 4px;\n\n\t\t&--warn {\n\t\t\t&::-moz-progress-bar {\n\t\t\t\tbackground: var(--color-warning) !important;\n\t\t\t}\n\t\t\t&::-webkit-progress-value {\n\t\t\t\tbackground: var(--color-warning) !important;\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!./UserRow.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!./UserRow.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!./UserRow.vue?vue&type=style&index=0&id=e966b116&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./UserRow.vue?vue&type=style&index=0&id=e966b116&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserRow.vue?vue&type=template&id=e966b116&scoped=true\"\nimport script from \"./UserRow.vue?vue&type=script&lang=js\"\nexport * from \"./UserRow.vue?vue&type=script&lang=js\"\nimport style0 from \"./UserRow.vue?vue&type=style&index=0&id=e966b116&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 \"e966b116\",\n null\n \n)\n\nexport default component.exports","<!--\n - SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<Fragment>\n\t\t<NewUserDialog v-if=\"showConfig.showNewUserForm\"\n\t\t\t:loading=\"loading\"\n\t\t\t:new-user=\"newUser\"\n\t\t\t:quota-options=\"quotaOptions\"\n\t\t\t@reset=\"resetForm\"\n\t\t\t@closing=\"closeDialog\" />\n\n\t\t<NcEmptyContent v-if=\"filteredUsers.length === 0\"\n\t\t\tclass=\"empty\"\n\t\t\t:name=\"isInitialLoad && loading.users ? null : t('settings', 'No accounts')\">\n\t\t\t<template #icon>\n\t\t\t\t<NcLoadingIcon v-if=\"isInitialLoad && loading.users\"\n\t\t\t\t\t:name=\"t('settings', 'Loading accounts …')\"\n\t\t\t\t\t:size=\"64\" />\n\t\t\t\t<NcIconSvgWrapper v-else :path=\"mdiAccountGroup\" :size=\"64\" />\n\t\t\t</template>\n\t\t</NcEmptyContent>\n\n\t\t<VirtualList v-else\n\t\t\t:data-component=\"UserRow\"\n\t\t\t:data-sources=\"filteredUsers\"\n\t\t\tdata-key=\"id\"\n\t\t\tdata-cy-user-list\n\t\t\t:item-height=\"rowHeight\"\n\t\t\t:style=\"style\"\n\t\t\t:extra-props=\"{\n\t\t\t\tusers,\n\t\t\t\tsettings,\n\t\t\t\thasObfuscated,\n\t\t\t\tquotaOptions,\n\t\t\t\tlanguages,\n\t\t\t\texternalActions,\n\t\t\t}\"\n\t\t\t@scroll-end=\"handleScrollEnd\">\n\t\t\t<template #before>\n\t\t\t\t<caption class=\"hidden-visually\">\n\t\t\t\t\t{{ t('settings', 'List of accounts. This list is not fully rendered for performance reasons. The accounts will be rendered as you navigate through the list.') }}\n\t\t\t\t</caption>\n\t\t\t</template>\n\n\t\t\t<template #header>\n\t\t\t\t<UserListHeader :has-obfuscated=\"hasObfuscated\" />\n\t\t\t</template>\n\n\t\t\t<template #footer>\n\t\t\t\t<UserListFooter :loading=\"loading.users\"\n\t\t\t\t\t:filtered-users=\"filteredUsers\" />\n\t\t\t</template>\n\t\t</VirtualList>\n\t</Fragment>\n</template>\n\n<script>\nimport { mdiAccountGroup } from '@mdi/js'\nimport { showError } from '@nextcloud/dialogs'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\nimport { Fragment } from 'vue-frag'\n\nimport Vue from 'vue'\nimport NcEmptyContent from '@nextcloud/vue/components/NcEmptyContent'\nimport NcIconSvgWrapper from '@nextcloud/vue/components/NcIconSvgWrapper'\nimport NcLoadingIcon from '@nextcloud/vue/components/NcLoadingIcon'\n\nimport VirtualList from './Users/VirtualList.vue'\nimport NewUserDialog from './Users/NewUserDialog.vue'\nimport UserListFooter from './Users/UserListFooter.vue'\nimport UserListHeader from './Users/UserListHeader.vue'\nimport UserRow from './Users/UserRow.vue'\n\nimport { defaultQuota, isObfuscated, unlimitedQuota } from '../utils/userUtils.ts'\nimport logger from '../logger.ts'\n\nconst newUser = Object.freeze({\n\tid: '',\n\tdisplayName: '',\n\tpassword: '',\n\tmailAddress: '',\n\tgroups: [],\n\tmanager: '',\n\tsubAdminsGroups: [],\n\tquota: defaultQuota,\n\tlanguage: {\n\t\tcode: 'en',\n\t\tname: t('settings', 'Default language'),\n\t},\n})\n\nexport default {\n\tname: 'UserList',\n\n\tcomponents: {\n\t\tFragment,\n\t\tNcEmptyContent,\n\t\tNcIconSvgWrapper,\n\t\tNcLoadingIcon,\n\t\tNewUserDialog,\n\t\tUserListFooter,\n\t\tUserListHeader,\n\t\tVirtualList,\n\t},\n\n\tprops: {\n\t\tselectedGroup: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\texternalActions: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t},\n\n\tsetup() {\n\t\t// non reactive properties\n\t\treturn {\n\t\t\tmdiAccountGroup,\n\t\t\trowHeight: 55,\n\n\t\t\tUserRow,\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloading: {\n\t\t\t\tall: false,\n\t\t\t\tgroups: false,\n\t\t\t\tusers: false,\n\t\t\t},\n\t\t\tnewUser: { ...newUser },\n\t\t\tisInitialLoad: true,\n\t\t\tsearchQuery: '',\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tshowConfig() {\n\t\t\treturn this.$store.getters.getShowConfig\n\t\t},\n\n\t\tsettings() {\n\t\t\treturn this.$store.getters.getServerData\n\t\t},\n\n\t\tstyle() {\n\t\t\treturn {\n\t\t\t\t'--row-height': `${this.rowHeight}px`,\n\t\t\t}\n\t\t},\n\n\t\thasObfuscated() {\n\t\t\treturn this.filteredUsers.some(user => isObfuscated(user))\n\t\t},\n\n\t\tusers() {\n\t\t\treturn this.$store.getters.getUsers\n\t\t},\n\n\t\tfilteredUsers() {\n\t\t\tif (this.selectedGroup === 'disabled') {\n\t\t\t\treturn this.users.filter(user => user.enabled === false)\n\t\t\t}\n\t\t\treturn this.users.filter(user => user.enabled !== false)\n\t\t},\n\n\t\tgroups() {\n\t\t\treturn this.$store.getters.getSortedGroups\n\t\t\t\t.filter(group => group.id !== '__nc_internal_recent' && group.id !== 'disabled')\n\t\t},\n\n\t\tquotaOptions() {\n\t\t\t// convert the preset array into objects\n\t\t\tconst quotaPreset = this.settings.quotaPreset.reduce((acc, cur) => acc.concat({\n\t\t\t\tid: cur,\n\t\t\t\tlabel: cur,\n\t\t\t}), [])\n\t\t\t// add default presets\n\t\t\tif (this.settings.allowUnlimitedQuota) {\n\t\t\t\tquotaPreset.unshift(unlimitedQuota)\n\t\t\t}\n\t\t\tquotaPreset.unshift(defaultQuota)\n\t\t\treturn quotaPreset\n\t\t},\n\n\t\tusersOffset() {\n\t\t\treturn this.$store.getters.getUsersOffset\n\t\t},\n\n\t\tusersLimit() {\n\t\t\treturn this.$store.getters.getUsersLimit\n\t\t},\n\n\t\tdisabledUsersOffset() {\n\t\t\treturn this.$store.getters.getDisabledUsersOffset\n\t\t},\n\n\t\tdisabledUsersLimit() {\n\t\t\treturn this.$store.getters.getDisabledUsersLimit\n\t\t},\n\n\t\tusersCount() {\n\t\t\treturn this.users.length\n\t\t},\n\n\t\t/* LANGUAGES */\n\t\tlanguages() {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tlabel: t('settings', 'Common languages'),\n\t\t\t\t\tlanguages: this.settings.languages.commonLanguages,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: t('settings', 'Other languages'),\n\t\t\t\t\tlanguages: this.settings.languages.otherLanguages,\n\t\t\t\t},\n\t\t\t]\n\t\t},\n\t},\n\n\twatch: {\n\t\t// watch url change and group select\n\t\tasync selectedGroup(val) {\n\t\t\tthis.isInitialLoad = true\n\t\t\t// if selected is the disabled group but it's empty\n\t\t\tawait this.redirectIfDisabled()\n\t\t\tthis.$store.commit('resetUsers')\n\t\t\tawait this.loadUsers()\n\t\t\tthis.setNewUserDefaultGroup(val)\n\t\t},\n\n\t\tfilteredUsers(filteredUsers) {\n\t\t\tlogger.debug(`${filteredUsers.length} filtered user(s)`)\n\t\t},\n\t},\n\n\tasync created() {\n\t\tawait this.loadUsers()\n\t},\n\n\tasync mounted() {\n\t\tif (!this.settings.canChangePassword) {\n\t\t\tOC.Notification.showTemporary(t('settings', 'Password change is disabled because the master key is disabled'))\n\t\t}\n\n\t\t/**\n\t\t * Reset and init new user form\n\t\t */\n\t\tthis.resetForm()\n\n\t\t/**\n\t\t * Register search\n\t\t */\n\t\tsubscribe('nextcloud:unified-search.search', this.search)\n\t\tsubscribe('nextcloud:unified-search.reset', this.resetSearch)\n\n\t\t/**\n\t\t * If disabled group but empty, redirect\n\t\t */\n\t\tawait this.redirectIfDisabled()\n\t},\n\n\tbeforeDestroy() {\n\t\tunsubscribe('nextcloud:unified-search.search', this.search)\n\t\tunsubscribe('nextcloud:unified-search.reset', this.resetSearch)\n\t},\n\n\tmethods: {\n\t\tasync handleScrollEnd() {\n\t\t\tawait this.loadUsers()\n\t\t},\n\n\t\tasync loadUsers() {\n\t\t\tthis.loading.users = true\n\t\t\ttry {\n\t\t\t\tif (this.selectedGroup === 'disabled') {\n\t\t\t\t\tawait this.$store.dispatch('getDisabledUsers', {\n\t\t\t\t\t\toffset: this.disabledUsersOffset,\n\t\t\t\t\t\tlimit: this.disabledUsersLimit,\n\t\t\t\t\t\tsearch: this.searchQuery,\n\t\t\t\t\t})\n\t\t\t\t} else if (this.selectedGroup === '__nc_internal_recent') {\n\t\t\t\t\tawait this.$store.dispatch('getRecentUsers', {\n\t\t\t\t\t\toffset: this.usersOffset,\n\t\t\t\t\t\tlimit: this.usersLimit,\n\t\t\t\t\t\tsearch: this.searchQuery,\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\tawait this.$store.dispatch('getUsers', {\n\t\t\t\t\t\toffset: this.usersOffset,\n\t\t\t\t\t\tlimit: this.usersLimit,\n\t\t\t\t\t\tgroup: this.selectedGroup,\n\t\t\t\t\t\tsearch: this.searchQuery,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tlogger.debug(`${this.users.length} total user(s) loaded`)\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error('Failed to load accounts', { error })\n\t\t\t\tshowError('Failed to load accounts')\n\t\t\t}\n\t\t\tthis.loading.users = false\n\t\t\tthis.isInitialLoad = false\n\t\t},\n\n\t\tcloseDialog() {\n\t\t\tthis.$store.commit('setShowConfig', {\n\t\t\t\tkey: 'showNewUserForm',\n\t\t\t\tvalue: false,\n\t\t\t})\n\t\t},\n\n\t\tasync search({ query }) {\n\t\t\tthis.searchQuery = query\n\t\t\tthis.$store.commit('resetUsers')\n\t\t\tawait this.loadUsers()\n\t\t},\n\n\t\tresetSearch() {\n\t\t\tthis.search({ query: '' })\n\t\t},\n\n\t\tresetForm() {\n\t\t\t// revert form to original state\n\t\t\tthis.newUser = Object.assign({}, newUser)\n\n\t\t\t/**\n\t\t\t * Init default language from server data. The use of this.settings\n\t\t\t * requires a computed variable, which break the v-model binding of the form,\n\t\t\t * this is a much easier solution than getter and setter on a computed var\n\t\t\t */\n\t\t\tif (this.settings.defaultLanguage) {\n\t\t\t\tVue.set(this.newUser.language, 'code', this.settings.defaultLanguage)\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * In case the user directly loaded the user list within a group\n\t\t\t * the watch won't be triggered. We need to initialize it.\n\t\t\t */\n\t\t\tthis.setNewUserDefaultGroup(this.selectedGroup)\n\n\t\t\tthis.loading.all = false\n\t\t},\n\n\t\tsetNewUserDefaultGroup(value) {\n\t\t\t// Is no value set, but user is a line manager we set their group as this is a requirement for line manager\n\t\t\tif (!value && !this.settings.isAdmin && !this.settings.isDelegatedAdmin) {\n\t\t\t\tconst groups = this.$store.getters.getSubAdminGroups\n\t\t\t\t// if there are multiple groups we do not know which to add,\n\t\t\t\t// so we cannot make the managers life easier by preselecting it.\n\t\t\t\tif (groups.length === 1) {\n\t\t\t\t\tthis.newUser.groups = [...groups]\n\t\t\t\t}\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\t// setting new account default group to the current selected one\n\t\t\t\tconst currentGroup = this.groups.find(group => group.id === value)\n\t\t\t\tif (currentGroup) {\n\t\t\t\t\tthis.newUser.groups = [currentGroup]\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t\t// fallback, empty selected group\n\t\t\tthis.newUser.groups = []\n\t\t},\n\n\t\t/**\n\t\t * If the selected group is the disabled group but the count is 0\n\t\t * redirect to the all users page.\n\t\t * we only check for 0 because we don't have the count on ldap\n\t\t * and we therefore set the usercount to -1 in this specific case\n\t\t */\n\t\tasync redirectIfDisabled() {\n\t\t\tconst allGroups = this.$store.getters.getGroups\n\t\t\tif (this.selectedGroup === 'disabled'\n\t\t\t\t\t\t&& allGroups.findIndex(group => group.id === 'disabled' && group.usercount === 0) > -1) {\n\t\t\t\t// disabled group is empty, redirection to all users\n\t\t\t\tthis.$router.push({ name: 'users' })\n\t\t\t\tawait this.loadUsers()\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@use './Users/shared/styles' as *;\n\n.empty {\n\t:deep {\n\t\t.icon-vue {\n\t\t\twidth: 64px;\n\t\t\theight: 64px;\n\n\t\t\tsvg {\n\t\t\t\tmax-width: 64px;\n\t\t\t\tmax-height: 64px;\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!./UserList.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!./UserList.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!./UserList.vue?vue&type=style&index=0&id=1e8fee5a&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./UserList.vue?vue&type=style&index=0&id=1e8fee5a&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserList.vue?vue&type=template&id=1e8fee5a&scoped=true\"\nimport script from \"./UserList.vue?vue&type=script&lang=js\"\nexport * from \"./UserList.vue?vue&type=script&lang=js\"\nimport style0 from \"./UserList.vue?vue&type=style&index=0&id=1e8fee5a&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 \"1e8fee5a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('Fragment',[(_vm.showConfig.showNewUserForm)?_c('NewUserDialog',{attrs:{\"loading\":_vm.loading,\"new-user\":_vm.newUser,\"quota-options\":_vm.quotaOptions},on:{\"reset\":_vm.resetForm,\"closing\":_vm.closeDialog}}):_vm._e(),_vm._v(\" \"),(_vm.filteredUsers.length === 0)?_c('NcEmptyContent',{staticClass:\"empty\",attrs:{\"name\":_vm.isInitialLoad && _vm.loading.users ? null : _vm.t('settings', 'No accounts')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.isInitialLoad && _vm.loading.users)?_c('NcLoadingIcon',{attrs:{\"name\":_vm.t('settings', 'Loading accounts …'),\"size\":64}}):_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiAccountGroup,\"size\":64}})]},proxy:true}],null,false,226056511)}):_c('VirtualList',{style:(_vm.style),attrs:{\"data-component\":_vm.UserRow,\"data-sources\":_vm.filteredUsers,\"data-key\":\"id\",\"data-cy-user-list\":\"\",\"item-height\":_vm.rowHeight,\"extra-props\":{\n\t\t\tusers: _vm.users,\n\t\t\tsettings: _vm.settings,\n\t\t\thasObfuscated: _vm.hasObfuscated,\n\t\t\tquotaOptions: _vm.quotaOptions,\n\t\t\tlanguages: _vm.languages,\n\t\t\texternalActions: _vm.externalActions,\n\t\t}},on:{\"scroll-end\":_vm.handleScrollEnd},scopedSlots:_vm._u([{key:\"before\",fn:function(){return [_c('caption',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'List of accounts. This list is not fully rendered for performance reasons. The accounts will be rendered as you navigate through the list.'))+\"\\n\\t\\t\\t\")])]},proxy:true},{key:\"header\",fn:function(){return [_c('UserListHeader',{attrs:{\"has-obfuscated\":_vm.hasObfuscated}})]},proxy:true},{key:\"footer\",fn:function(){return [_c('UserListFooter',{attrs:{\"loading\":_vm.loading.users,\"filtered-users\":_vm.filteredUsers}})]},proxy:true}])})],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!./UserManagement.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!./UserManagement.vue?vue&type=script&lang=js\"","<!--\n - SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<NcAppContent :page-heading=\"pageHeading\">\n\t\t<UserList :selected-group=\"selectedGroupDecoded\"\n\t\t\t:external-actions=\"externalActions\" />\n\t</NcAppContent>\n</template>\n\n<script>\nimport { translate as t } from '@nextcloud/l10n'\nimport { emit } from '@nextcloud/event-bus'\nimport { defineComponent } from 'vue'\n\nimport NcAppContent from '@nextcloud/vue/components/NcAppContent'\nimport UserList from '../components/UserList.vue'\n\nexport default defineComponent({\n\tname: 'UserManagement',\n\n\tcomponents: {\n\t\tNcAppContent,\n\t\tUserList,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\t// temporary value used for multiselect change\n\t\t\texternalActions: [],\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tpageHeading() {\n\t\t\tif (this.selectedGroupDecoded === null) {\n\t\t\t\treturn t('settings', 'All accounts')\n\t\t\t}\n\t\t\tconst matchHeading = {\n\t\t\t\tadmin: t('settings', 'Admins'),\n\t\t\t\tdisabled: t('settings', 'Disabled accounts'),\n\t\t\t}\n\t\t\treturn matchHeading[this.selectedGroupDecoded] ?? t('settings', 'Account group: {group}', { group: this.selectedGroupDecoded })\n\t\t},\n\n\t\tselectedGroup() {\n\t\t\treturn this.$route.params.selectedGroup\n\t\t},\n\n\t\tselectedGroupDecoded() {\n\t\t\treturn this.selectedGroup ? decodeURIComponent(this.selectedGroup) : null\n\t\t},\n\t},\n\n\tbeforeMount() {\n\t\tthis.$store.dispatch('getPasswordPolicyMinLength')\n\t},\n\n\tcreated() {\n\t\t// init the OCA.Settings.UserList object\n\t\twindow.OCA = window.OCA ?? {}\n\t\twindow.OCA.Settings = window.OCA.Settings ?? {}\n\t\twindow.OCA.Settings.UserList = window.OCA.Settings.UserList ?? {}\n\t\t// and add the registerAction method\n\t\twindow.OCA.Settings.UserList.registerAction = this.registerAction\n\t\temit('settings:user-management:loaded')\n\t},\n\n\tmethods: {\n\t\tt,\n\n\t\t/**\n\t\t * Register a new action for the user menu\n\t\t *\n\t\t * @param {string} icon the icon class\n\t\t * @param {string} text the text to display\n\t\t * @param {Function} action the function to run\n\t\t * @param {(user: Record<string, unknown>) => boolean} enabled return true if the action is enabled for the user\n\t\t * @return {Array}\n\t\t */\n\t\tregisterAction(icon, text, action, enabled) {\n\t\t\tthis.externalActions.push({\n\t\t\t\ticon,\n\t\t\t\ttext,\n\t\t\t\taction,\n\t\t\t\tenabled,\n\t\t\t})\n\t\t\treturn this.externalActions\n\t\t},\n\t},\n})\n</script>\n\n<style lang=\"scss\" scoped>\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</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!./UserManagement.vue?vue&type=style&index=0&id=253f9eec&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./UserManagement.vue?vue&type=style&index=0&id=253f9eec&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserManagement.vue?vue&type=template&id=253f9eec&scoped=true\"\nimport script from \"./UserManagement.vue?vue&type=script&lang=js\"\nexport * from \"./UserManagement.vue?vue&type=script&lang=js\"\nimport style0 from \"./UserManagement.vue?vue&type=style&index=0&id=253f9eec&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 \"253f9eec\",\n null\n \n)\n\nexport default component.exports","import { N as NcActionButton } from \"./chunks/NcActionButton-Gpv56vuS.mjs\";\nimport { N as NcActionButtonGroup } from \"./chunks/NcActionButtonGroup-BteTNhIn.mjs\";\nimport NcActionCaption from \"./Components/NcActionCaption.mjs\";\nimport { N as NcActionCheckbox } from \"./chunks/NcActionCheckbox-DSMKeccY.mjs\";\nimport { N as NcActionInput } from \"./chunks/NcActionInput-QO_UKY2v.mjs\";\nimport NcActionLink from \"./Components/NcActionLink.mjs\";\nimport { N as NcActionRadio } from \"./chunks/NcActionRadio-yAm71xxU.mjs\";\nimport NcActionRouter from \"./Components/NcActionRouter.mjs\";\nimport { N as NcActions } from \"./chunks/NcActions-CucWK-m-.mjs\";\nimport NcActionSeparator from \"./Components/NcActionSeparator.mjs\";\nimport NcActionText from \"./Components/NcActionText.mjs\";\nimport { N as NcActionTextEditable } from \"./chunks/NcActionTextEditable-BYqqHPj2.mjs\";\nimport { N as NcAppContent } from \"./chunks/NcAppContent-_x1Bvwg-.mjs\";\nimport NcAppContentDetails from \"./Components/NcAppContentDetails.mjs\";\nimport NcAppContentList from \"./Components/NcAppContentList.mjs\";\nimport { N as NcAppNavigation } from \"./chunks/NcAppNavigation-H8Gvbq5E.mjs\";\nimport { N as NcAppNavigationCaption } from \"./chunks/NcAppNavigationCaption-C0Fkd9G7.mjs\";\nimport NcAppNavigationIconBullet from \"./Components/NcAppNavigationIconBullet.mjs\";\nimport { N as NcAppNavigationItem } from \"./chunks/NcAppNavigationItem-CDut0DWY.mjs\";\nimport NcAppNavigationList from \"./Components/NcAppNavigationList.mjs\";\nimport NcAppNavigationNew from \"./Components/NcAppNavigationNew.mjs\";\nimport { N as NcAppNavigationNewItem } from \"./chunks/NcAppNavigationNewItem-DGjgp78o.mjs\";\nimport { N as NcAppNavigationSearch } from \"./chunks/NcAppNavigationSearch-DTW6CtnU.mjs\";\nimport { N as NcAppNavigationSettings } from \"./chunks/NcAppNavigationSettings-C0QuEMmn.mjs\";\nimport NcAppNavigationSpacer from \"./Components/NcAppNavigationSpacer.mjs\";\nimport { N as NcAppSettingsDialog } from \"./chunks/NcAppSettingsDialog-Dl-kMSpe.mjs\";\nimport NcAppSettingsSection from \"./Components/NcAppSettingsSection.mjs\";\nimport { N as NcAppSidebar } from \"./chunks/NcAppSidebar-C5fqF8Ll.mjs\";\nimport NcAppSidebarTab from \"./Components/NcAppSidebarTab.mjs\";\nimport { N as NcAvatar } from \"./chunks/NcAvatar-Db8tkJt9.mjs\";\nimport { u } from \"./chunks/NcAvatar-Db8tkJt9.mjs\";\nimport { N as NcBlurHash } from \"./chunks/NcBlurHash-do2wxY-0.mjs\";\nimport { N as NcBreadcrumb } from \"./chunks/NcBreadcrumb-CuKf9Utm.mjs\";\nimport { N as NcBreadcrumbs } from \"./chunks/NcBreadcrumbs-DR2_1tNR.mjs\";\nimport NcButton from \"./Components/NcButton.mjs\";\nimport { N as NcCheckboxRadioSwitch } from \"./chunks/NcCheckboxRadioSwitch-Di9rSADK.mjs\";\nimport { N as NcCollectionList } from \"./chunks/NcCollectionList-N169E0Rf.mjs\";\nimport { N as NcColorPicker } from \"./chunks/NcColorPicker-BzSsZRm3.mjs\";\nimport { N as NcContent } from \"./chunks/NcContent-BHl5YDYI.mjs\";\nimport { N as NcCounterBubble } from \"./chunks/NcCounterBubble-CDfRYl8B.mjs\";\nimport { N as NcDashboardWidget } from \"./chunks/NcDashboardWidget-DwWee7mc.mjs\";\nimport { N as NcDashboardWidgetItem } from \"./chunks/NcDashboardWidgetItem-Csgi1gF2.mjs\";\nimport { N as NcDateTime } from \"./chunks/NcDateTime-BR6BBvML.mjs\";\nimport { u as u2 } from \"./chunks/NcDateTime-BR6BBvML.mjs\";\nimport NcDateTimePicker from \"./Components/NcDateTimePicker.mjs\";\nimport NcDateTimePickerNative from \"./Components/NcDateTimePickerNative.mjs\";\nimport { N as NcDialog } from \"./chunks/NcDialog-D2lwwZL-.mjs\";\nimport { N as NcDialogButton } from \"./chunks/NcDialogButton-BB56HcBl.mjs\";\nimport NcEllipsisedOption from \"./Components/NcEllipsisedOption.mjs\";\nimport { N as NcEmojiPicker } from \"./chunks/NcEmojiPicker-DyBFXXm7.mjs\";\nimport NcEmptyContent from \"./Components/NcEmptyContent.mjs\";\nimport NcGuestContent from \"./Components/NcGuestContent.mjs\";\nimport NcHeaderButton from \"./Components/NcHeaderButton.mjs\";\nimport { N as NcHeaderMenu } from \"./chunks/NcHeaderMenu-Bc1ucNsv.mjs\";\nimport { N as NcHighlight } from \"./chunks/index-Bz6q9mZw.mjs\";\nimport { N as NcIconSvgWrapper } from \"./chunks/NcIconSvgWrapper-RKuZn260.mjs\";\nimport { N as NcInputField } from \"./chunks/NcInputField-DTtUueUZ.mjs\";\nimport { N as NcListItem } from \"./chunks/NcListItem-BGoyHTZy.mjs\";\nimport { N as NcListItemIcon } from \"./chunks/NcListItemIcon-BG5v_qys.mjs\";\nimport NcLoadingIcon from \"./Components/NcLoadingIcon.mjs\";\nimport NcModal from \"./Components/NcModal.mjs\";\nimport NcNoteCard from \"./Components/NcNoteCard.mjs\";\nimport { N as NcPasswordField } from \"./chunks/NcPasswordField-CTKHRVC4.mjs\";\nimport { N as NcPopover } from \"./chunks/NcPopover-m0hDmALa.mjs\";\nimport { N as NcProgressBar } from \"./chunks/NcProgressBar-DegJ2JjE.mjs\";\nimport { N as NcRelatedResourcesPanel } from \"./chunks/NcRelatedResourcesPanel-CmiW_ds0.mjs\";\nimport { N as NcMentionBubble } from \"./chunks/index-G8WQDZ8G.mjs\";\nimport { r } from \"./chunks/index-G8WQDZ8G.mjs\";\nimport { N as NcAutoCompleteResult, a as NcRichContenteditable } from \"./chunks/NcRichContenteditable-CE1hvtcT.mjs\";\nimport { N as NcRichText } from \"./chunks/NcRichText-D6qJ5S5v.mjs\";\nimport { N, h, d, i, b, r as r2, c, a } from \"./chunks/index-56SXuvlv.mjs\";\nimport \"@vueuse/core\";\nimport \"vue\";\nimport \"vue-router\";\nimport { a as a2, g, b as b2, c as c2, d as d2, s } from \"./chunks/referencePickerModal-CMKHbYwz.mjs\";\nimport \"unist-util-visit\";\nimport \"unist-builder\";\nimport \"@nextcloud/router\";\nimport \"@nextcloud/axios\";\nimport \"@nextcloud/sharing/public\";\nimport \"@nextcloud/auth\";\nimport { N as NcSelect } from \"./chunks/NcSelect-TmGBPLzc.mjs\";\nimport { N as NcTextField } from \"./chunks/NcTextField-DRANdaIf.mjs\";\nimport \"@nextcloud/event-bus\";\nimport { N as NcSavingIndicatorIcon } from \"./chunks/NcSavingIndicatorIcon-nv1147dk.mjs\";\nimport { N as NcSelectTags } from \"./chunks/NcSelectTags-li-HYR2n.mjs\";\nimport { N as NcSelectUsers } from \"./chunks/NcSelectUsers-BQO_sQJ8.mjs\";\nimport { N as NcSettingsInputText } from \"./chunks/NcSettingsInputText-t1FMnLKA.mjs\";\nimport { N as NcSettingsSection } from \"./chunks/NcSettingsSection-EC3SmiDX.mjs\";\nimport { N as NcSettingsSelectGroup } from \"./chunks/NcSettingsSelectGroup-dzvfki-M.mjs\";\nimport { N as NcTextArea } from \"./chunks/NcTextArea-BHERsE_g.mjs\";\nimport { N as NcTimezonePicker } from \"./chunks/NcTimezonePicker-C17Rji1h.mjs\";\nimport { N as NcUserBubble } from \"./chunks/NcUserBubble-cO5krePG.mjs\";\nimport { N as NcUserStatusIcon } from \"./chunks/NcUserStatusIcon-WEKmuaoU.mjs\";\nimport NcVNodes from \"./Components/NcVNodes.mjs\";\nimport { isFullscreenState, useIsFullscreen } from \"./Composables/useIsFullscreen.mjs\";\nimport { MOBILE_BREAKPOINT, MOBILE_SMALL_BREAKPOINT, isMobileState, useIsMobile, useIsSmallMobile } from \"./Composables/useIsMobile.mjs\";\nimport { useHotKey } from \"./Composables/useHotKey.mjs\";\nimport { useIsDarkTheme, useIsDarkThemeElement } from \"./Composables/useIsDarkTheme.mjs\";\nimport { isA11yActivation } from \"./Functions/a11y.mjs\";\nimport { getEnabledContactsMenuActions, registerContactsMenuAction } from \"./Functions/contactsMenu.mjs\";\nimport { spawnDialog } from \"./Functions/dialog.mjs\";\nimport { E, a as a3, e, g as g2, s as s2 } from \"./chunks/emoji-BY_D0V5K.mjs\";\nimport { checkIfDarkTheme, isDarkTheme } from \"./Functions/isDarkTheme.mjs\";\nimport { preloadImage } from \"./Functions/preloadImage.mjs\";\nimport { u as u3 } from \"./chunks/usernameToColor-DJfepfog.mjs\";\nimport { directive } from \"./Directives/Focus.mjs\";\nimport { directive as directive$1 } from \"./Directives/Linkify.mjs\";\nimport \"./Directives/Tooltip.mjs\";\nimport { default as default2 } from \"./Mixins/clickOutsideOptions.mjs\";\nimport { default as default3 } from \"./Mixins/isFullscreen.mjs\";\nimport { default as default4 } from \"./Mixins/isMobile.mjs\";\nimport { VTooltip } from \"floating-vue\";\nimport { VTooltip as VTooltip2 } from \"floating-vue\";\nconst NcComponents = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n NcActionButton,\n NcActionButtonGroup,\n NcActionCaption,\n NcActionCheckbox,\n NcActionInput,\n NcActionLink,\n NcActionRadio,\n NcActionRouter,\n NcActionSeparator,\n NcActionText,\n NcActionTextEditable,\n NcActions,\n NcAppContent,\n NcAppContentDetails,\n NcAppContentList,\n NcAppNavigation,\n NcAppNavigationCaption,\n NcAppNavigationIconBullet,\n NcAppNavigationItem,\n NcAppNavigationList,\n NcAppNavigationNew,\n NcAppNavigationNewItem,\n NcAppNavigationSearch,\n NcAppNavigationSettings,\n NcAppNavigationSpacer,\n NcAppSettingsDialog,\n NcAppSettingsSection,\n NcAppSidebar,\n NcAppSidebarTab,\n NcAutoCompleteResult,\n NcAvatar,\n NcBlurHash,\n NcBreadcrumb,\n NcBreadcrumbs,\n NcButton,\n NcCheckboxRadioSwitch,\n NcCollectionList,\n NcColorPicker,\n NcContent,\n NcCounterBubble,\n NcDashboardWidget,\n NcDashboardWidgetItem,\n NcDateTime,\n NcDateTimePicker,\n NcDateTimePickerNative,\n NcDialog,\n NcDialogButton,\n NcEllipsisedOption,\n NcEmojiPicker,\n NcEmptyContent,\n NcGuestContent,\n NcHeaderButton,\n NcHeaderMenu,\n NcHighlight,\n NcIconSvgWrapper,\n NcInputField,\n NcListItem,\n NcListItemIcon,\n NcLoadingIcon,\n NcMentionBubble,\n NcModal,\n NcNoteCard,\n NcPasswordField,\n NcPopover,\n NcProgressBar,\n NcRelatedResourcesPanel,\n NcRichContenteditable,\n NcRichText,\n NcSavingIndicatorIcon,\n NcSelect,\n NcSelectTags,\n NcSelectUsers,\n NcSettingsInputText,\n NcSettingsSection,\n NcSettingsSelectGroup,\n NcTextArea,\n NcTextField,\n NcTimezonePicker,\n NcUserBubble,\n NcUserStatusIcon,\n NcVNodes\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst NcDirectives = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n Focus: directive,\n Linkify: directive$1,\n Tooltip: VTooltip\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst NextcloudVuePlugin = {\n install(Vue) {\n Object.entries(NcComponents).forEach(([name, component]) => {\n Vue.component(component.name || name, component);\n });\n Object.entries(NcDirectives).forEach(([name, directive2]) => {\n Vue.directive(name, directive2);\n });\n }\n};\nexport {\n E as EmojiSkinTone,\n directive as Focus,\n directive$1 as Linkify,\n MOBILE_BREAKPOINT,\n MOBILE_SMALL_BREAKPOINT,\n NcActionButton,\n NcActionButtonGroup,\n NcActionCaption,\n NcActionCheckbox,\n NcActionInput,\n NcActionLink,\n NcActionRadio,\n NcActionRouter,\n NcActionSeparator,\n NcActionText,\n NcActionTextEditable,\n NcActions,\n NcAppContent,\n NcAppContentDetails,\n NcAppContentList,\n NcAppNavigation,\n NcAppNavigationCaption,\n NcAppNavigationIconBullet,\n NcAppNavigationItem,\n NcAppNavigationList,\n NcAppNavigationNew,\n NcAppNavigationNewItem,\n NcAppNavigationSearch,\n NcAppNavigationSettings,\n NcAppNavigationSpacer,\n NcAppSettingsDialog,\n NcAppSettingsSection,\n NcAppSidebar,\n NcAppSidebarTab,\n NcAutoCompleteResult,\n NcAvatar,\n NcBlurHash,\n NcBreadcrumb,\n NcBreadcrumbs,\n NcButton,\n NcCheckboxRadioSwitch,\n NcCollectionList,\n NcColorPicker,\n NcContent,\n NcCounterBubble,\n N as NcCustomPickerRenderResult,\n NcDashboardWidget,\n NcDashboardWidgetItem,\n NcDateTime,\n NcDateTimePicker,\n NcDateTimePickerNative,\n NcDialog,\n NcDialogButton,\n NcEllipsisedOption,\n NcEmojiPicker,\n NcEmptyContent,\n NcGuestContent,\n NcHeaderButton,\n NcHeaderMenu,\n NcHighlight,\n NcIconSvgWrapper,\n NcInputField,\n NcListItem,\n NcListItemIcon,\n NcLoadingIcon,\n NcMentionBubble,\n NcModal,\n NcNoteCard,\n NcPasswordField,\n NcPopover,\n NcProgressBar,\n NcRelatedResourcesPanel,\n NcRichContenteditable,\n NcRichText,\n NcSavingIndicatorIcon,\n NcSelect,\n NcSelectTags,\n NcSelectUsers,\n NcSettingsInputText,\n NcSettingsSection,\n NcSettingsSelectGroup,\n NcTextArea,\n NcTextField,\n NcTimezonePicker,\n NcUserBubble,\n NcUserStatusIcon,\n NcVNodes,\n NextcloudVuePlugin,\n VTooltip2 as Tooltip,\n a2 as anyLinkProviderId,\n checkIfDarkTheme,\n default2 as clickOutsideOptions,\n a3 as emojiAddRecent,\n e as emojiSearch,\n g2 as getCurrentSkinTone,\n getEnabledContactsMenuActions,\n g as getLinkWithPicker,\n b2 as getProvider,\n c2 as getProviders,\n h as hasInteractiveView,\n isA11yActivation,\n d as isCustomPickerElementRegistered,\n isDarkTheme,\n default3 as isFullscreen,\n isFullscreenState,\n default4 as isMobile,\n isMobileState,\n i as isWidgetRegistered,\n preloadImage,\n registerContactsMenuAction,\n b as registerCustomPickerElement,\n r2 as registerWidget,\n c as renderCustomPickerElement,\n a as renderWidget,\n r as richEditor,\n d2 as searchProvider,\n s2 as setCurrentSkinTone,\n s as sortProviders,\n spawnDialog,\n u2 as useFormatDateTime,\n useHotKey,\n useIsDarkTheme,\n useIsDarkThemeElement,\n useIsFullscreen,\n useIsMobile,\n useIsSmallMobile,\n u as userStatus,\n u3 as usernameToColor\n};\n//# sourceMappingURL=index.mjs.map\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, `.modal__header[data-v-161509be]{margin:0}.modal__content[data-v-161509be]{display:flex;flex-direction:column;align-items:center;padding:20px;gap:4px 0}.modal__button-row[data-v-161509be]{display:flex;width:100%;justify-content:space-between}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/GroupListItem.vue\"],\"names\":[],\"mappings\":\"AAEC,gCACC,QAAA,CAGD,iCACC,YAAA,CACA,qBAAA,CACA,kBAAA,CACA,YAAA,CACA,SAAA,CAGD,oCACC,YAAA,CACA,UAAA,CACA,6BAAA\",\"sourcesContent\":[\"\\n.modal {\\n\\t&__header {\\n\\t\\tmargin: 0;\\n\\t}\\n\\n\\t&__content {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\talign-items: center;\\n\\t\\tpadding: 20px;\\n\\t\\tgap: 4px 0;\\n\\t}\\n\\n\\t&__button-row {\\n\\t\\tdisplay: flex;\\n\\t\\twidth: 100%;\\n\\t\\tjustify-content: space-between;\\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, `.empty[data-v-1e8fee5a] .icon-vue{width:64px;height:64px}.empty[data-v-1e8fee5a] .icon-vue svg{max-width:64px;max-height:64px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/UserList.vue\"],\"names\":[],\"mappings\":\"AAKE,kCACC,UAAA,CACA,WAAA,CAEA,sCACC,cAAA,CACA,eAAA\",\"sourcesContent\":[\"\\n@use './Users/shared/styles' as *;\\n\\n.empty {\\n\\t:deep {\\n\\t\\t.icon-vue {\\n\\t\\t\\twidth: 64px;\\n\\t\\t\\theight: 64px;\\n\\n\\t\\t\\tsvg {\\n\\t\\t\\t\\tmax-width: 64px;\\n\\t\\t\\t\\tmax-height: 64px;\\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, `.app-content[data-v-253f9eec]{display:flex;overflow:hidden;flex-direction:column;max-height:100%}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/views/UserManagement.vue\"],\"names\":[],\"mappings\":\"AACA,8BAEC,YAAA,CACA,eAAA,CACA,qBAAA,CACA,eAAA\",\"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\"],\"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, `.footer[data-v-db2a7c4e]{position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background)}.footer__cell[data-v-db2a7c4e]{display:flex;flex-direction:column;justify-content:center;padding:0 var(--cell-padding);min-width:var(--cell-width);width:var(--cell-width);color:var(--color-main-text)}.footer__cell strong[data-v-db2a7c4e],.footer__cell span[data-v-db2a7c4e],.footer__cell label[data-v-db2a7c4e]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.footer__cell--avatar[data-v-db2a7c4e],.footer__cell--displayname[data-v-db2a7c4e]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.footer__cell--avatar[data-v-db2a7c4e]{inset-inline-start:0}.footer__cell--displayname[data-v-db2a7c4e]{inset-inline-start:var(--avatar-cell-width);border-inline-end:1px solid var(--color-border)}}.footer__cell--username[data-v-db2a7c4e]{padding-inline-start:calc(var(--default-grid-baseline)*3)}.footer__cell--avatar[data-v-db2a7c4e]{min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0;user-select:none}.footer__cell--multiline span[data-v-db2a7c4e]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.footer__cell--multiline span[data-v-db2a7c4e]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.footer__cell--large[data-v-db2a7c4e]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.footer__cell--obfuscated[data-v-db2a7c4e]{min-width:400px;width:400px}.footer__cell--fill[data-v-db2a7c4e]{min-width:var(--cell-width-large);width:100%}.footer__cell--actions[data-v-db2a7c4e]{position:sticky;inset-inline-end:0;z-index:var(--sticky-column-z-index);display:flex;flex-direction:row;align-items:center;min-width:110px;width:110px;background-color:var(--color-main-background);border-inline-start:1px solid var(--color-border)}.footer__subtitle[data-v-db2a7c4e]{color:var(--color-text-maxcontrast)}.footer__cell[data-v-db2a7c4e]{position:sticky;color:var(--color-text-maxcontrast)}.footer__cell--loading[data-v-db2a7c4e]{inset-inline-start:0;min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0}.footer__cell--count[data-v-db2a7c4e]{inset-inline-start:var(--avatar-cell-width);min-width:var(--cell-width);width:var(--cell-width)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/UserListFooter.vue\",\"webpack://./apps/settings/src/components/Users/shared/styles.scss\"],\"names\":[],\"mappings\":\"AAGA,yBCGC,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CAIA,+BACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,6BAAA,CACA,2BAAA,CACA,uBAAA,CACA,4BAAA,CAEA,+GAGC,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CAGD,yBACC,mFAEC,eAAA,CACA,oCAAA,CACA,6CAAA,CAGD,uCACC,oBAAA,CAGD,4CACC,2CAAA,CACA,+CAAA,CAAA,CAIF,yCACC,yDAAA,CAGD,uCACC,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CACA,gBAAA,CAIA,+CACC,iBAAA,CACA,iBAAA,CAEA,iCAJD,+CAKE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,sCACC,iCAAA,CACA,6BAAA,CAGD,2CACC,eAAA,CACA,WAAA,CAID,qCACC,iCAAA,CACA,UAAA,CAGD,wCACC,eAAA,CACA,kBAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,iDAAA,CAIF,mCACC,mCAAA,CDpGD,+BACC,eAAA,CACA,mCAAA,CAEA,wCACC,oBAAA,CACA,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CAGD,sCACC,2CAAA,CACA,2BAAA,CACA,uBAAA\",\"sourcesContent\":[\"\\n@use './shared/styles';\\n\\n.footer {\\n\\t@include styles.row;\\n\\t@include styles.cell;\\n\\n\\t&__cell {\\n\\t\\tposition: sticky;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\n\\t\\t&--loading {\\n\\t\\t\\tinset-inline-start: 0;\\n\\t\\t\\tmin-width: var(--avatar-cell-width);\\n\\t\\t\\twidth: var(--avatar-cell-width);\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tpadding: 0;\\n\\t\\t}\\n\\n\\t\\t&--count {\\n\\t\\t\\tinset-inline-start: var(--avatar-cell-width);\\n\\t\\t\\tmin-width: var(--cell-width);\\n\\t\\t\\twidth: var(--cell-width);\\n\\t\\t}\\n\\t}\\n}\\n\",\"/**\\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n\\n@mixin row {\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\tmin-width: 100%;\\n\\twidth: fit-content;\\n\\theight: var(--row-height);\\n\\tbackground-color: var(--color-main-background);\\n}\\n\\n@mixin cell {\\n\\t&__cell {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: center;\\n\\t\\tpadding: 0 var(--cell-padding);\\n\\t\\tmin-width: var(--cell-width);\\n\\t\\twidth: var(--cell-width);\\n\\t\\tcolor: var(--color-main-text);\\n\\n\\t\\tstrong,\\n\\t\\tspan,\\n\\t\\tlabel {\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\toverflow-wrap: anywhere;\\n\\t\\t}\\n\\n\\t\\t@media (min-width: 670px) { /* Show one &--large column between stickied columns */\\n\\t\\t\\t&--avatar,\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tposition: sticky;\\n\\t\\t\\t\\tz-index: var(--sticky-column-z-index);\\n\\t\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--avatar {\\n\\t\\t\\t\\tinset-inline-start: 0;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tinset-inline-start: var(--avatar-cell-width);\\n\\t\\t\\t\\tborder-inline-end: 1px solid var(--color-border);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--username {\\n\\t\\t\\tpadding-inline-start: calc(var(--default-grid-baseline) * 3);\\n\\t\\t}\\n\\n\\t\\t&--avatar {\\n\\t\\t\\tmin-width: var(--avatar-cell-width);\\n\\t\\t\\twidth: var(--avatar-cell-width);\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\tuser-select: none;\\n\\t\\t}\\n\\n\\t\\t&--multiline {\\n\\t\\t\\tspan {\\n\\t\\t\\t\\tline-height: 1.3em;\\n\\t\\t\\t\\twhite-space: unset;\\n\\n\\t\\t\\t\\t@supports (-webkit-line-clamp: 2) {\\n\\t\\t\\t\\t\\tdisplay: -webkit-box;\\n\\t\\t\\t\\t\\t-webkit-line-clamp: 2;\\n\\t\\t\\t\\t\\t-webkit-box-orient: vertical;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--large {\\n\\t\\t\\tmin-width: var(--cell-width-large);\\n\\t\\t\\twidth: var(--cell-width-large);\\n\\t\\t}\\n\\n\\t\\t&--obfuscated {\\n\\t\\t\\tmin-width: 400px;\\n\\t\\t\\twidth: 400px;\\n\\t\\t}\\n\\n\\t\\t// Fill remaining row space with cell\\n\\t\\t&--fill {\\n\\t\\t\\tmin-width: var(--cell-width-large);\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\n\\t\\t&--actions {\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\tinset-inline-end: 0;\\n\\t\\t\\tz-index: var(--sticky-column-z-index);\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: row;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tmin-width: 110px;\\n\\t\\t\\twidth: 110px;\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\tborder-inline-start: 1px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t&__subtitle {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { translate as t } from '@nextcloud/l10n';\nexport const unlimitedQuota = {\n id: 'none',\n label: t('settings', 'Unlimited'),\n};\nexport const defaultQuota = {\n id: 'default',\n label: t('settings', 'Default quota'),\n};\n/**\n * Return `true` if the logged in user does not have permissions to view the\n * data of `user`\n * @param user The user to check\n * @param user.id Id of the user\n */\nexport const isObfuscated = (user) => {\n const keys = Object.keys(user);\n return keys.length === 1 && keys.at(0) === 'id';\n};\n"],"names":["___CSS_LOADER_EXPORT___","push","module","id","formatGroup","group","name","displayname","usercount","disabled","canAdd","canRemove","searchGroups","_ref","search","offset","limit","controller","AbortController","CancelablePromise","async","resolve","reject","onCancel","abort","data","axios","get","generateOcsUrl","signal","ocs","groups","map","error","loadUserGroups","userId","_ref2","url","loadUserSubAdminGroups","_ref3","components","NcAppSettingsDialog","NcAppSettingsSection","NcCheckboxRadioSwitch","NcNoteCard","NcSelect","props","open","type","Boolean","required","selectedQuota","loadingSendMail","computed","groupSorting","$store","getters","getGroupSorting","GroupSorting","GroupName","set","sorting","commit","UserCount","isGroupSortingEnforced","getServerData","forceSortGroupByName","isModalOpen","$emit","showConfig","getShowConfig","settings","showLanguages","status","setShowConfig","showFirstLogin","showLastLogin","showUserBackend","showStoragePath","quotaOptions","quotaPreset","reduce","acc","cur","concat","label","allowUnlimitedQuota","unshift","unlimitedQuota","defaultQuota","OC","Util","computerFileSize","quota","sendWelcomeMail","newUserSendEmail","value","post","generateUrl","logger","methods","filterQuotas","option","searchValue","toLocaleLowerCase","replaceAll","indexOf","key","validateQuota","validQuota","parseFileSize","formatFileSize","setDefaultQuota","arguments","length","undefined","dispatch","app","then","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_vm","this","_c","_self","attrs","t","on","$event","_v","_s","_e","staticClass","model","callback","$$v","expression","AccountGroup","Delete","Fragment","NcActionButton","NcActionInput","NcAppNavigationItem","NcButton","NcCounterBubble","NcModal","Pencil","active","count","Number","default","String","loadingRenameGroup","openGroupMenu","showRemoveGroupModal","handleGroupMenuOpen","renameGroup","gid","trim","displayName","$refs","displayNameInput","$el","querySelector","groupid","removeGroup","showError","ref","params","selectedGroup","encodeURIComponent","scopedSlots","_u","fn","proxy","isAdmin","isDelegatedAdmin","formatGroupMenu","title","Math","max","useFormatGroups","userGroups","filter","adminGroup","find","disabledGroup","recentGroup","_defineComponent","__name","setup","__props","store","useStore","route","useRoute","router","useRouter","onBeforeMount","loadGroups","selectedGroupDecoded","decodeURIComponent","getSortedGroups","isAdminOrDelegatedAdmin","isAddGroupOpen","loadingAddGroup","hasAddGroupError","newGroupName","loadingGroups","groupsSearchQuery","groupListItems","lastGroupListItem","findLast","component","$vnode","at","listItem","isLastGroupVisible","useElementVisibility","watch","promise","cancel","__sfc","createGroup","groupId","newGroupListItem","scrollIntoView","behavior","block","mdiAccountGroup","mdiPlus","NcActionText","NcAppNavigationCaption","NcAppNavigationList","NcAppNavigationSearch","NcIconSvgWrapper","NcLoadingIcon","GroupListItem","_setup","_setupProxy","_l","refInFor","isDialogOpen","userCount","getUserCount","showNewUserMenu","mdiAccount","mdiAccountOff","mdiCog","mdiShieldAccount","mdiHistory","NcAppNavigation","NcAppNavigationNew","UserSettingsDialog","AppNavigationGroupList","_k","keyCode","apply","Vue","directive","vElementVisibility","extend","dataComponent","Object","Function","dataKey","dataSources","Array","itemHeight","extraProps","bufferItems","index","headerHeight","tableHeight","resizeObserver","startIndex","shownItems","ceil","renderedItems","slice","tbodyStyle","isOverScrolled","lastIndex","hiddenAfterItems","min","paddingTop","paddingBottom","mounted","root","tfoot","thead","ResizeObserver","debounce","clientHeight","debug","onScroll","observe","addEventListener","beforeDestroy","disconnect","handleFooterVisibility","visible","round","scrollTop","_t","style","item","i","_b","tag","directives","rawName","NcDialog","NcPasswordField","NcTextField","loading","newUser","availableGroups","possibleManagers","managerInputLabel","managerLabel","usernameLabel","newUserGenerateUserID","minPasswordLength","getPasswordPolicyMinLength","subAdminsGroups","languages","commonLanguages","otherLanguages","beforeMount","searchUserManager","getSubAdminGroups","username","focus","createUser","all","userid","password","email","mailAddress","subadmin","language","code","manager","response","meta","statuscode","query","toggleLoading","addGroup","isCreating","languageFilterBy","some","includes","users","values","_g","$listeners","preventDefault","$set","newUserRequireEmail","class","filteredUsers","n","hasObfuscated","passwordLabel","defineComponent","NcActions","actions","edit","user","editSvg","SvgCheck","SvgPencil","enabledActions","action","enabled","isSvg","string","TypeError","XMLValidator","validate","jsonObject","parser","XMLParser","parse","keys","x","toLowerCase","toggleEdit","icon","text","event","externalActions","formattedFullTime","useFormatDateTime","firstLoginTimestamp","relativeTime","format","timeStyle","dateStyle","availableSubAdminGroups","userSubAdminGroups","usedSpace","quotaUsed","used","size","usedQuota","pow","isNaN","userQuota","humanQuota","userLanguage","userLang","lang","userFirstLogin","userLastLoginTooltip","lastLoginTimestamp","formatDate","userLastLogin","relativeModifiedDate","NcAvatar","NcProgressBar","UserRowActions","mixins","UserRowMixin","rand","random","toString","substring","loadingPossibleManagers","currentManager","editing","groupsDetails","subAdminGroupsDetails","subadmins","delete","disable","wipe","editedDisplayName","editedPassword","editedMail","isObfuscated","isLoadingUser","isLoadingField","uniqueId","userGroupsLabels","join","userSubAdminGroupsLabels","canEdit","getCurrentUser","uid","userActions","deleteUser","wipeUserDevices","enableDisableUser","editedUserQuota","availableLanguages","initManager","confirmPassword","dialogs","confirmDestructive","YES_NO_BUTTONS","confirm","confirmClasses","result","showSuccess","timeout","finally","filterManagers","managers","searchInitialUserManager","loadGroupsDetails","availableGroup","loadSubAdminGroupsDetails","updateUserManager","console","updateDisplayName","updatePassword","updateEmail","addUserGroup","removeUserGroup","$route","addUserSubAdmin","removeUserSubAdmin","setUserQuota","setUserLanguage","$nextTick","displayNameField","inputField","input","backendCapabilities","setDisplayName","canChangePassword","setPassword","backend","storageLocation","freeze","NcEmptyContent","NewUserDialog","UserListFooter","UserListHeader","VirtualList","rowHeight","UserRow","isInitialLoad","searchQuery","getUsers","usersOffset","getUsersOffset","usersLimit","getUsersLimit","disabledUsersOffset","getDisabledUsersOffset","disabledUsersLimit","getDisabledUsersLimit","usersCount","val","redirectIfDisabled","loadUsers","setNewUserDefaultGroup","created","Notification","showTemporary","resetForm","subscribe","resetSearch","unsubscribe","handleScrollEnd","closeDialog","assign","defaultLanguage","currentGroup","allGroups","getGroups","findIndex","$router","showNewUserForm","NcAppContent","UserList","pageHeading","admin","window","OCA","Settings","registerAction","emit","Symbol","toStringTag"],"sourceRoot":""}
\ No newline at end of file +{"version":3,"file":"settings-users-3239.js?v=0828a85406800581fcfe","mappings":"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","sources":["webpack:///nextcloud/apps/settings/src/components/Users/UserSettingsDialog.vue?vue&type=style&index=0&id=9f7a355c&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/Users/UserRow.vue?vue&type=style&index=0&id=7faa9864&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/Users/VirtualList.vue?vue&type=style&index=0&id=21942da5&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/Users/UserListHeader.vue?vue&type=style&index=0&id=5c0f8828&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/service/groups.ts","webpack:///nextcloud/apps/settings/src/views/UserManagementNavigation.vue?vue&type=style&index=0&id=edf83404&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/settings/src/components/Users/NewUserDialog.vue?vue&type=style&index=0&id=70bbf4c9&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/views/UserManagementNavigation.vue","webpack:///nextcloud/apps/settings/src/components/Users/UserSettingsDialog.vue","webpack:///nextcloud/apps/settings/src/components/Users/UserSettingsDialog.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/Users/UserSettingsDialog.vue?da91","webpack://nextcloud/./apps/settings/src/components/Users/UserSettingsDialog.vue?f361","webpack://nextcloud/./apps/settings/src/components/Users/UserSettingsDialog.vue?824e","webpack:///nextcloud/apps/settings/src/components/AppNavigationGroupList.vue","webpack:///nextcloud/apps/settings/src/components/GroupListItem.vue","webpack:///nextcloud/apps/settings/src/components/GroupListItem.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/GroupListItem.vue?2db5","webpack://nextcloud/./apps/settings/src/components/GroupListItem.vue?7b19","webpack://nextcloud/./apps/settings/src/components/GroupListItem.vue?9f48","webpack:///nextcloud/apps/settings/src/composables/useGroupsNavigation.ts","webpack:///nextcloud/apps/settings/src/components/AppNavigationGroupList.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/settings/src/components/AppNavigationGroupList.vue?c74f","webpack:///nextcloud/apps/settings/src/views/UserManagementNavigation.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/settings/src/views/UserManagementNavigation.vue?3dcd","webpack://nextcloud/./apps/settings/src/views/UserManagementNavigation.vue?28b6","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/index.mjs","webpack:///nextcloud/apps/settings/src/components/GroupListItem.vue?vue&type=style&index=0&id=161509be&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/UserList.vue?vue&type=style&index=0&id=1e8fee5a&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/views/UserManagement.vue?vue&type=style&index=0&id=253f9eec&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/components/Users/UserListFooter.vue?vue&type=style&index=0&id=db2a7c4e&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/settings/src/utils/userUtils.ts","webpack://nextcloud/./apps/settings/src/views/UserManagement.vue?4b28","webpack:///nextcloud/apps/settings/src/components/Users/VirtualList.vue","webpack:///nextcloud/apps/settings/src/components/Users/VirtualList.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/settings/src/components/Users/VirtualList.vue?7ade","webpack://nextcloud/./apps/settings/src/components/Users/VirtualList.vue?1915","webpack://nextcloud/./apps/settings/src/components/Users/NewUserDialog.vue?dc2d","webpack:///nextcloud/apps/settings/src/components/Users/NewUserDialog.vue","webpack:///nextcloud/apps/settings/src/components/Users/NewUserDialog.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/Users/NewUserDialog.vue?9f19","webpack://nextcloud/./apps/settings/src/components/Users/NewUserDialog.vue?64c6","webpack:///nextcloud/apps/settings/src/components/Users/UserListFooter.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/settings/src/components/Users/UserListFooter.vue","webpack://nextcloud/./apps/settings/src/components/Users/UserListFooter.vue?b1db","webpack://nextcloud/./apps/settings/src/components/Users/UserListFooter.vue?b843","webpack:///nextcloud/apps/settings/src/components/Users/UserListHeader.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/settings/src/components/Users/UserListHeader.vue","webpack://nextcloud/./apps/settings/src/components/Users/UserListHeader.vue?e7ff","webpack://nextcloud/./apps/settings/src/components/Users/UserListHeader.vue?758a","webpack://nextcloud/./apps/settings/src/components/Users/UserRow.vue?5434","webpack:///nextcloud/apps/settings/src/components/Users/UserRowActions.vue","webpack:///nextcloud/apps/settings/src/components/Users/UserRowActions.vue?vue&type=script&lang=ts","webpack:///nextcloud/node_modules/is-svg/index.js","webpack://nextcloud/./apps/settings/src/components/Users/UserRowActions.vue?3c2a","webpack:///nextcloud/apps/settings/src/mixins/UserRowMixin.js","webpack:///nextcloud/apps/settings/src/components/Users/UserRow.vue","webpack:///nextcloud/apps/settings/src/components/Users/UserRow.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/Users/UserRow.vue?d087","webpack://nextcloud/./apps/settings/src/components/Users/UserRow.vue?eb6e","webpack:///nextcloud/apps/settings/src/components/UserList.vue","webpack:///nextcloud/apps/settings/src/components/UserList.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/settings/src/components/UserList.vue?750d","webpack://nextcloud/./apps/settings/src/components/UserList.vue?02a4","webpack://nextcloud/./apps/settings/src/components/UserList.vue?c96e","webpack:///nextcloud/apps/settings/src/views/UserManagement.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/settings/src/views/UserManagement.vue","webpack://nextcloud/./apps/settings/src/views/UserManagement.vue?c771","webpack://nextcloud/./apps/settings/src/views/UserManagement.vue?fd5a"],"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, `.dialog__note[data-v-9f7a355c]{font-weight:normal}fieldset[data-v-9f7a355c]{font-weight:bold}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/UserSettingsDialog.vue\"],\"names\":[],\"mappings\":\"AAEC,+BACC,kBAAA,CAIF,0BACC,gBAAA\",\"sourcesContent\":[\"\\n.dialog {\\n\\t&__note {\\n\\t\\tfont-weight: normal;\\n\\t}\\n}\\n\\nfieldset {\\n\\tfont-weight: bold;\\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-list__row[data-v-7faa9864]{position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background)}.user-list__row[data-v-7faa9864]:hover{background-color:var(--color-background-hover)}.user-list__row:hover .row__cell[data-v-7faa9864]:not(.row__cell--actions){background-color:var(--color-background-hover)}.user-list__row .select--fill[data-v-7faa9864]{max-width:calc(var(--cell-width-large) - 2*var(--cell-padding))}.row__cell[data-v-7faa9864]{display:flex;flex-direction:column;justify-content:center;padding:0 var(--cell-padding);min-width:var(--cell-width);width:var(--cell-width);color:var(--color-main-text)}.row__cell strong[data-v-7faa9864],.row__cell span[data-v-7faa9864],.row__cell label[data-v-7faa9864]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.row__cell--avatar[data-v-7faa9864],.row__cell--displayname[data-v-7faa9864]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.row__cell--avatar[data-v-7faa9864]{inset-inline-start:0}.row__cell--displayname[data-v-7faa9864]{inset-inline-start:var(--avatar-cell-width);border-inline-end:1px solid var(--color-border)}}.row__cell--username[data-v-7faa9864]{padding-inline-start:calc(var(--default-grid-baseline)*3)}.row__cell--avatar[data-v-7faa9864]{min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0;user-select:none}.row__cell--multiline span[data-v-7faa9864]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.row__cell--multiline span[data-v-7faa9864]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.row__cell--large[data-v-7faa9864]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.row__cell--obfuscated[data-v-7faa9864]{min-width:400px;width:400px}.row__cell--fill[data-v-7faa9864]{min-width:var(--cell-width-large);width:100%}.row__cell--actions[data-v-7faa9864]{position:sticky;inset-inline-end:0;z-index:var(--sticky-column-z-index);display:flex;flex-direction:row;align-items:center;min-width:110px;width:110px;background-color:var(--color-main-background);border-inline-start:1px solid var(--color-border)}.row__subtitle[data-v-7faa9864]{color:var(--color-text-maxcontrast)}.row__cell[data-v-7faa9864]{border-bottom:1px solid var(--color-border)}.row__cell[data-v-7faa9864] .v-select.select{min-width:var(--cell-min-width)}.row__progress[data-v-7faa9864]{margin-top:4px}.row__progress--warn[data-v-7faa9864]::-moz-progress-bar{background:var(--color-warning) !important}.row__progress--warn[data-v-7faa9864]::-webkit-progress-value{background:var(--color-warning) !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/UserRow.vue\",\"webpack://./apps/settings/src/components/Users/shared/styles.scss\"],\"names\":[],\"mappings\":\"AAGA,iCCGC,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CDLA,uCACC,8CAAA,CAEA,2EACC,8CAAA,CAKF,+CACC,+DAAA,CCDD,4BACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,6BAAA,CACA,2BAAA,CACA,uBAAA,CACA,4BAAA,CAEA,sGAGC,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CAGD,yBACC,6EAEC,eAAA,CACA,oCAAA,CACA,6CAAA,CAGD,oCACC,oBAAA,CAGD,yCACC,2CAAA,CACA,+CAAA,CAAA,CAIF,sCACC,yDAAA,CAGD,oCACC,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CACA,gBAAA,CAIA,4CACC,iBAAA,CACA,iBAAA,CAEA,iCAJD,4CAKE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,mCACC,iCAAA,CACA,6BAAA,CAGD,wCACC,eAAA,CACA,WAAA,CAID,kCACC,iCAAA,CACA,UAAA,CAGD,qCACC,eAAA,CACA,kBAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,iDAAA,CAIF,gCACC,mCAAA,CDpFD,4BACC,2CAAA,CAGC,6CACC,+BAAA,CAKH,gCACC,cAAA,CAGC,yDACC,0CAAA,CAED,8DACC,0CAAA\",\"sourcesContent\":[\"\\n@use './shared/styles';\\n\\n.user-list__row {\\n\\t@include styles.row;\\n\\n\\t&:hover {\\n\\t\\tbackground-color: var(--color-background-hover);\\n\\n\\t\\t.row__cell:not(.row__cell--actions) {\\n\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t}\\n\\t}\\n\\n\\t// Limit width of select in fill cell\\n\\t.select--fill {\\n\\t\\tmax-width: calc(var(--cell-width-large) - (2 * var(--cell-padding)));\\n\\t}\\n}\\n\\n.row {\\n\\t@include styles.cell;\\n\\n\\t&__cell {\\n\\t\\tborder-bottom: 1px solid var(--color-border);\\n\\n\\t\\t:deep {\\n\\t\\t\\t.v-select.select {\\n\\t\\t\\t\\tmin-width: var(--cell-min-width);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__progress {\\n\\t\\tmargin-top: 4px;\\n\\n\\t\\t&--warn {\\n\\t\\t\\t&::-moz-progress-bar {\\n\\t\\t\\t\\tbackground: var(--color-warning) !important;\\n\\t\\t\\t}\\n\\t\\t\\t&::-webkit-progress-value {\\n\\t\\t\\t\\tbackground: var(--color-warning) !important;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\",\"/**\\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n\\n@mixin row {\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\tmin-width: 100%;\\n\\twidth: fit-content;\\n\\theight: var(--row-height);\\n\\tbackground-color: var(--color-main-background);\\n}\\n\\n@mixin cell {\\n\\t&__cell {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: center;\\n\\t\\tpadding: 0 var(--cell-padding);\\n\\t\\tmin-width: var(--cell-width);\\n\\t\\twidth: var(--cell-width);\\n\\t\\tcolor: var(--color-main-text);\\n\\n\\t\\tstrong,\\n\\t\\tspan,\\n\\t\\tlabel {\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\toverflow-wrap: anywhere;\\n\\t\\t}\\n\\n\\t\\t@media (min-width: 670px) { /* Show one &--large column between stickied columns */\\n\\t\\t\\t&--avatar,\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tposition: sticky;\\n\\t\\t\\t\\tz-index: var(--sticky-column-z-index);\\n\\t\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--avatar {\\n\\t\\t\\t\\tinset-inline-start: 0;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tinset-inline-start: var(--avatar-cell-width);\\n\\t\\t\\t\\tborder-inline-end: 1px solid var(--color-border);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--username {\\n\\t\\t\\tpadding-inline-start: calc(var(--default-grid-baseline) * 3);\\n\\t\\t}\\n\\n\\t\\t&--avatar {\\n\\t\\t\\tmin-width: var(--avatar-cell-width);\\n\\t\\t\\twidth: var(--avatar-cell-width);\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\tuser-select: none;\\n\\t\\t}\\n\\n\\t\\t&--multiline {\\n\\t\\t\\tspan {\\n\\t\\t\\t\\tline-height: 1.3em;\\n\\t\\t\\t\\twhite-space: unset;\\n\\n\\t\\t\\t\\t@supports (-webkit-line-clamp: 2) {\\n\\t\\t\\t\\t\\tdisplay: -webkit-box;\\n\\t\\t\\t\\t\\t-webkit-line-clamp: 2;\\n\\t\\t\\t\\t\\t-webkit-box-orient: vertical;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--large {\\n\\t\\t\\tmin-width: var(--cell-width-large);\\n\\t\\t\\twidth: var(--cell-width-large);\\n\\t\\t}\\n\\n\\t\\t&--obfuscated {\\n\\t\\t\\tmin-width: 400px;\\n\\t\\t\\twidth: 400px;\\n\\t\\t}\\n\\n\\t\\t// Fill remaining row space with cell\\n\\t\\t&--fill {\\n\\t\\t\\tmin-width: var(--cell-width-large);\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\n\\t\\t&--actions {\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\tinset-inline-end: 0;\\n\\t\\t\\tz-index: var(--sticky-column-z-index);\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: row;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tmin-width: 110px;\\n\\t\\t\\twidth: 110px;\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\tborder-inline-start: 1px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t&__subtitle {\\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, `.user-list[data-v-21942da5]{--avatar-cell-width: 48px;--cell-padding: 7px;--cell-width: 200px;--cell-width-large: 300px;--cell-min-width: calc(var(--cell-width) - (2 * var(--cell-padding)));--sticky-column-z-index: calc(var(--vs-dropdown-z-index) + 1);display:block;overflow:auto;height:100%;will-change:scroll-position}.user-list__header[data-v-21942da5],.user-list__footer[data-v-21942da5]{position:sticky;display:block}.user-list__header[data-v-21942da5]{top:0;z-index:calc(var(--sticky-column-z-index) + 1)}.user-list__footer[data-v-21942da5]{inset-inline-start:0}.user-list__body[data-v-21942da5]{display:flex;flex-direction:column;width:100%}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/VirtualList.vue\"],\"names\":[],\"mappings\":\"AACA,4BACC,yBAAA,CACA,mBAAA,CACA,mBAAA,CACA,yBAAA,CACA,qEAAA,CACA,6DAAA,CAGA,aAAA,CACA,aAAA,CACA,WAAA,CACA,2BAAA,CAEA,wEAEC,eAAA,CAEA,aAAA,CAGD,oCACC,KAAA,CACA,8CAAA,CAGD,oCACC,oBAAA,CAGD,kCACC,YAAA,CACA,qBAAA,CACA,UAAA\",\"sourcesContent\":[\"\\n.user-list {\\n\\t--avatar-cell-width: 48px;\\n\\t--cell-padding: 7px;\\n\\t--cell-width: 200px;\\n\\t--cell-width-large: 300px;\\n\\t--cell-min-width: calc(var(--cell-width) - (2 * var(--cell-padding)));\\n\\t--sticky-column-z-index: calc(var(--vs-dropdown-z-index) + 1); // Keep the sticky column on top of the select dropdown\\n\\n\\t// Necessary for virtual scroll optimized rendering\\n\\tdisplay: block;\\n\\toverflow: auto;\\n\\theight: 100%;\\n\\twill-change: scroll-position;\\n\\n\\t&__header,\\n\\t&__footer {\\n\\t\\tposition: sticky;\\n\\t\\t// Fix sticky positioning in Firefox\\n\\t\\tdisplay: block;\\n\\t}\\n\\n\\t&__header {\\n\\t\\ttop: 0;\\n\\t\\tz-index: calc(var(--sticky-column-z-index) + 1);\\n\\t}\\n\\n\\t&__footer {\\n\\t\\tinset-inline-start: 0;\\n\\t}\\n\\n\\t&__body {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\twidth: 100%;\\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[data-v-5c0f8828]{border-bottom:1px solid var(--color-border);position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background)}.header__cell[data-v-5c0f8828]{display:flex;flex-direction:column;justify-content:center;padding:0 var(--cell-padding);min-width:var(--cell-width);width:var(--cell-width);color:var(--color-main-text)}.header__cell strong[data-v-5c0f8828],.header__cell span[data-v-5c0f8828],.header__cell label[data-v-5c0f8828]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.header__cell--avatar[data-v-5c0f8828],.header__cell--displayname[data-v-5c0f8828]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.header__cell--avatar[data-v-5c0f8828]{inset-inline-start:0}.header__cell--displayname[data-v-5c0f8828]{inset-inline-start:var(--avatar-cell-width);border-inline-end:1px solid var(--color-border)}}.header__cell--username[data-v-5c0f8828]{padding-inline-start:calc(var(--default-grid-baseline)*3)}.header__cell--avatar[data-v-5c0f8828]{min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0;user-select:none}.header__cell--multiline span[data-v-5c0f8828]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.header__cell--multiline span[data-v-5c0f8828]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.header__cell--large[data-v-5c0f8828]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.header__cell--obfuscated[data-v-5c0f8828]{min-width:400px;width:400px}.header__cell--fill[data-v-5c0f8828]{min-width:var(--cell-width-large);width:100%}.header__cell--actions[data-v-5c0f8828]{position:sticky;inset-inline-end:0;z-index:var(--sticky-column-z-index);display:flex;flex-direction:row;align-items:center;min-width:110px;width:110px;background-color:var(--color-main-background);border-inline-start:1px solid var(--color-border)}.header__subtitle[data-v-5c0f8828]{color:var(--color-text-maxcontrast)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/UserListHeader.vue\",\"webpack://./apps/settings/src/components/Users/shared/styles.scss\"],\"names\":[],\"mappings\":\"AAGA,yBACC,2CAAA,CCEA,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CAIA,+BACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,6BAAA,CACA,2BAAA,CACA,uBAAA,CACA,4BAAA,CAEA,+GAGC,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CAGD,yBACC,mFAEC,eAAA,CACA,oCAAA,CACA,6CAAA,CAGD,uCACC,oBAAA,CAGD,4CACC,2CAAA,CACA,+CAAA,CAAA,CAIF,yCACC,yDAAA,CAGD,uCACC,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CACA,gBAAA,CAIA,+CACC,iBAAA,CACA,iBAAA,CAEA,iCAJD,+CAKE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,sCACC,iCAAA,CACA,6BAAA,CAGD,2CACC,eAAA,CACA,WAAA,CAID,qCACC,iCAAA,CACA,UAAA,CAGD,wCACC,eAAA,CACA,kBAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,iDAAA,CAIF,mCACC,mCAAA\",\"sourcesContent\":[\"\\n@use './shared/styles';\\n\\n.header {\\n\\tborder-bottom: 1px solid var(--color-border);\\n\\n\\t@include styles.row;\\n\\t@include styles.cell;\\n}\\n\",\"/**\\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n\\n@mixin row {\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\tmin-width: 100%;\\n\\twidth: fit-content;\\n\\theight: var(--row-height);\\n\\tbackground-color: var(--color-main-background);\\n}\\n\\n@mixin cell {\\n\\t&__cell {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: center;\\n\\t\\tpadding: 0 var(--cell-padding);\\n\\t\\tmin-width: var(--cell-width);\\n\\t\\twidth: var(--cell-width);\\n\\t\\tcolor: var(--color-main-text);\\n\\n\\t\\tstrong,\\n\\t\\tspan,\\n\\t\\tlabel {\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\toverflow-wrap: anywhere;\\n\\t\\t}\\n\\n\\t\\t@media (min-width: 670px) { /* Show one &--large column between stickied columns */\\n\\t\\t\\t&--avatar,\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tposition: sticky;\\n\\t\\t\\t\\tz-index: var(--sticky-column-z-index);\\n\\t\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--avatar {\\n\\t\\t\\t\\tinset-inline-start: 0;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tinset-inline-start: var(--avatar-cell-width);\\n\\t\\t\\t\\tborder-inline-end: 1px solid var(--color-border);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--username {\\n\\t\\t\\tpadding-inline-start: calc(var(--default-grid-baseline) * 3);\\n\\t\\t}\\n\\n\\t\\t&--avatar {\\n\\t\\t\\tmin-width: var(--avatar-cell-width);\\n\\t\\t\\twidth: var(--avatar-cell-width);\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\tuser-select: none;\\n\\t\\t}\\n\\n\\t\\t&--multiline {\\n\\t\\t\\tspan {\\n\\t\\t\\t\\tline-height: 1.3em;\\n\\t\\t\\t\\twhite-space: unset;\\n\\n\\t\\t\\t\\t@supports (-webkit-line-clamp: 2) {\\n\\t\\t\\t\\t\\tdisplay: -webkit-box;\\n\\t\\t\\t\\t\\t-webkit-line-clamp: 2;\\n\\t\\t\\t\\t\\t-webkit-box-orient: vertical;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--large {\\n\\t\\t\\tmin-width: var(--cell-width-large);\\n\\t\\t\\twidth: var(--cell-width-large);\\n\\t\\t}\\n\\n\\t\\t&--obfuscated {\\n\\t\\t\\tmin-width: 400px;\\n\\t\\t\\twidth: 400px;\\n\\t\\t}\\n\\n\\t\\t// Fill remaining row space with cell\\n\\t\\t&--fill {\\n\\t\\t\\tmin-width: var(--cell-width-large);\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\n\\t\\t&--actions {\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\tinset-inline-end: 0;\\n\\t\\t\\tz-index: var(--sticky-column-z-index);\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: row;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tmin-width: 110px;\\n\\t\\t\\twidth: 110px;\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\tborder-inline-start: 1px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t&__subtitle {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport axios from '@nextcloud/axios';\nimport { generateOcsUrl } from '@nextcloud/router';\nimport { CancelablePromise } from 'cancelable-promise';\nconst formatGroup = (group) => ({\n id: group.id,\n name: group.displayname,\n usercount: group.usercount,\n disabled: group.disabled,\n canAdd: group.canAdd,\n canRemove: group.canRemove,\n});\n/**\n * Search groups\n *\n * @param {object} options Options\n * @param {string} options.search Search query\n * @param {number} options.offset Offset\n * @param {number} options.limit Limit\n */\nexport const searchGroups = ({ search, offset, limit }) => {\n const controller = new AbortController();\n return new CancelablePromise(async (resolve, reject, onCancel) => {\n onCancel(() => controller.abort());\n try {\n const { data } = await axios.get(generateOcsUrl('/cloud/groups/details?search={search}&offset={offset}&limit={limit}', { search, offset, limit }), {\n signal: controller.signal,\n });\n const groups = data.ocs?.data?.groups ?? [];\n const formattedGroups = groups.map(formatGroup);\n resolve(formattedGroups);\n }\n catch (error) {\n reject(error);\n }\n });\n};\n/**\n * Load user groups\n *\n * @param {object} options Options\n * @param {string} options.userId User id\n */\nexport const loadUserGroups = async ({ userId }) => {\n const url = generateOcsUrl('/cloud/users/{userId}/groups/details', { userId });\n const { data } = await axios.get(url);\n const groups = data.ocs?.data?.groups ?? [];\n const formattedGroups = groups.map(formatGroup);\n return formattedGroups;\n};\n/**\n * Load user subadmin groups\n *\n * @param {object} options Options\n * @param {string} options.userId User id\n */\nexport const loadUserSubAdminGroups = async ({ userId }) => {\n const url = generateOcsUrl('/cloud/users/{userId}/subadmins/details', { userId });\n const { data } = await axios.get(url);\n const groups = data.ocs?.data?.groups ?? [];\n const formattedGroups = groups.map(formatGroup);\n return formattedGroups;\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, `.account-management__navigation[data-v-edf83404] .app-navigation__body{will-change:scroll-position}.account-management__system-list[data-v-edf83404]{height:auto !important;overflow:visible !important}.account-management__group-list[data-v-edf83404]{height:100% !important}.account-management__settings-toggle[data-v-edf83404]{margin-bottom:12px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/views/UserManagementNavigation.vue\"],\"names\":[],\"mappings\":\"AAGE,uEACC,2BAAA,CAGF,kDACC,sBAAA,CACA,2BAAA,CAGD,iDACC,sBAAA,CAGD,sDACC,kBAAA\",\"sourcesContent\":[\"\\n.account-management {\\n\\t&__navigation {\\n\\t\\t:deep(.app-navigation__body) {\\n\\t\\t\\twill-change: scroll-position;\\n\\t\\t}\\n\\t}\\n\\t&__system-list {\\n\\t\\theight: auto !important;\\n\\t\\toverflow: visible !important;\\n\\t}\\n\\n\\t&__group-list {\\n\\t\\theight: 100% !important;\\n\\t}\\n\\n\\t&__settings-toggle {\\n\\t\\tmargin-bottom: 12px;\\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, `.dialog__form[data-v-70bbf4c9]{display:flex;flex-direction:column;align-items:center;padding:0 8px;gap:4px 0}.dialog__item[data-v-70bbf4c9]{width:100%}.dialog__item[data-v-70bbf4c9]:not(:focus):not(:active){border-color:var(--color-border-dark)}.dialog__hint[data-v-70bbf4c9]{color:var(--color-text-maxcontrast);margin-top:8px;align-self:flex-start}.dialog__label[data-v-70bbf4c9]{display:block;padding:4px 0}.dialog__select[data-v-70bbf4c9]{width:100%}.dialog__managers[data-v-70bbf4c9]{margin-bottom:12px}.dialog__submit[data-v-70bbf4c9]{margin-top:4px;margin-bottom:8px}.dialog[data-v-70bbf4c9] .dialog__actions{margin:auto}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/NewUserDialog.vue\"],\"names\":[],\"mappings\":\"AAEC,+BACC,YAAA,CACA,qBAAA,CACA,kBAAA,CACA,aAAA,CACA,SAAA,CAGD,+BACC,UAAA,CAEA,wDACC,qCAAA,CAIF,+BACC,mCAAA,CACA,cAAA,CACA,qBAAA,CAGD,gCACC,aAAA,CACA,aAAA,CAGD,iCACC,UAAA,CAGD,mCACC,kBAAA,CAGD,iCACC,cAAA,CACA,iBAAA,CAIA,0CACC,WAAA\",\"sourcesContent\":[\"\\n.dialog {\\n\\t&__form {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\talign-items: center;\\n\\t\\tpadding: 0 8px;\\n\\t\\tgap: 4px 0;\\n\\t}\\n\\n\\t&__item {\\n\\t\\twidth: 100%;\\n\\n\\t\\t&:not(:focus):not(:active) {\\n\\t\\t\\tborder-color: var(--color-border-dark);\\n\\t\\t}\\n\\t}\\n\\n\\t&__hint {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\tmargin-top: 8px;\\n\\t\\talign-self: flex-start;\\n\\t}\\n\\n\\t&__label {\\n\\t\\tdisplay: block;\\n\\t\\tpadding: 4px 0;\\n\\t}\\n\\n\\t&__select {\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t&__managers {\\n\\t\\tmargin-bottom: 12px;\\n\\t}\\n\\n\\t&__submit {\\n\\t\\tmargin-top: 4px;\\n\\t\\tmargin-bottom: 8px;\\n\\t}\\n\\n\\t:deep {\\n\\t\\t.dialog__actions {\\n\\t\\t\\tmargin: auto;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppNavigation,{staticClass:\"account-management__navigation\",attrs:{\"aria-label\":_setup.t('settings', 'Account management')},scopedSlots:_vm._u([{key:\"footer\",fn:function(){return [_c(_setup.NcButton,{staticClass:\"account-management__settings-toggle\",attrs:{\"type\":\"tertiary\"},on:{\"click\":function($event){_setup.isDialogOpen = true}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiCog}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_setup.t('settings', 'Account management settings'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c(_setup.UserSettingsDialog,{attrs:{\"open\":_setup.isDialogOpen},on:{\"update:open\":function($event){_setup.isDialogOpen=$event}}})]},proxy:true}])},[_c(_setup.NcAppNavigationNew,{attrs:{\"button-id\":\"new-user-button\",\"text\":_setup.t('settings','New account')},on:{\"click\":_setup.showNewUserMenu,\"keyup\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _setup.showNewUserMenu.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"space\",32,$event.key,[\" \",\"Spacebar\"]))return null;return _setup.showNewUserMenu.apply(null, arguments)}]},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiPlus}})]},proxy:true}])}),_vm._v(\" \"),_c(_setup.NcAppNavigationList,{staticClass:\"account-management__system-list\",attrs:{\"data-cy-users-settings-navigation-groups\":\"system\"}},[_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"everyone\",\"exact\":true,\"name\":_setup.t('settings', 'All accounts'),\"to\":{ name: 'users' }},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiAccount}})]},proxy:true},{key:\"counter\",fn:function(){return [(_setup.userCount)?_c(_setup.NcCounterBubble,{attrs:{\"type\":!_setup.selectedGroupDecoded ? 'highlighted' : undefined}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_setup.userCount)+\"\\n\\t\\t\\t\\t\")]):_vm._e()]},proxy:true}])}),_vm._v(\" \"),(_setup.settings.isAdmin)?_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"admin\",\"exact\":true,\"name\":_setup.t('settings', 'Admins'),\"to\":{ name: 'group', params: { selectedGroup: 'admin' } }},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiShieldAccount}})]},proxy:true},{key:\"counter\",fn:function(){return [(_setup.adminGroup && _setup.adminGroup.count > 0)?_c(_setup.NcCounterBubble,{attrs:{\"type\":_setup.selectedGroupDecoded === 'admin' ? 'highlighted' : undefined}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_setup.adminGroup.count)+\"\\n\\t\\t\\t\\t\")]):_vm._e()]},proxy:true}],null,false,2218088905)}):_vm._e(),_vm._v(\" \"),(_setup.isAdminOrDelegatedAdmin)?_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"recent\",\"exact\":true,\"name\":_setup.t('settings', 'Recently active'),\"to\":{ name: 'group', params: { selectedGroup: '__nc_internal_recent' } }},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiHistory}})]},proxy:true},{key:\"counter\",fn:function(){return [(_setup.recentGroup?.usercount)?_c(_setup.NcCounterBubble,{attrs:{\"type\":_setup.selectedGroupDecoded === '__nc_internal_recent' ? 'highlighted' : undefined}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_setup.recentGroup.usercount)+\"\\n\\t\\t\\t\\t\")]):_vm._e()]},proxy:true}],null,false,2299424282)}):_vm._e(),_vm._v(\" \"),(_setup.disabledGroup && (_setup.disabledGroup.usercount > 0 || _setup.disabledGroup.usercount === -1))?_c(_setup.NcAppNavigationItem,{attrs:{\"id\":\"disabled\",\"exact\":true,\"name\":_setup.t('settings', 'Disabled accounts'),\"to\":{ name: 'group', params: { selectedGroup: 'disabled' } }},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiAccountOff}})]},proxy:true},(_setup.disabledGroup.usercount > 0)?{key:\"counter\",fn:function(){return [_c(_setup.NcCounterBubble,{attrs:{\"type\":_setup.selectedGroupDecoded === 'disabled' ? 'highlighted' : undefined}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_setup.disabledGroup.usercount)+\"\\n\\t\\t\\t\\t\")])]},proxy:true}:null],null,true)}):_vm._e()],1),_vm._v(\" \"),_c(_setup.AppNavigationGroupList)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<NcAppSettingsDialog :open.sync=\"isModalOpen\"\n\t\t:show-navigation=\"true\"\n\t\t:name=\"t('settings', 'Account management settings')\">\n\t\t<NcAppSettingsSection id=\"visibility-settings\"\n\t\t\t:name=\"t('settings', 'Visibility')\">\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t\tdata-test=\"showLanguages\"\n\t\t\t\t:checked.sync=\"showLanguages\">\n\t\t\t\t{{ t('settings', 'Show language') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t\tdata-test=\"showUserBackend\"\n\t\t\t\t:checked.sync=\"showUserBackend\">\n\t\t\t\t{{ t('settings', 'Show account backend') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t\tdata-test=\"showStoragePath\"\n\t\t\t\t:checked.sync=\"showStoragePath\">\n\t\t\t\t{{ t('settings', 'Show storage path') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t\tdata-test=\"showFirstLogin\"\n\t\t\t\t:checked.sync=\"showFirstLogin\">\n\t\t\t\t{{ t('settings', 'Show first login') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t\tdata-test=\"showLastLogin\"\n\t\t\t\t:checked.sync=\"showLastLogin\">\n\t\t\t\t{{ t('settings', 'Show last login') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</NcAppSettingsSection>\n\n\t\t<NcAppSettingsSection id=\"groups-sorting\"\n\t\t\t:name=\"t('settings', 'Sorting')\">\n\t\t\t<NcNoteCard v-if=\"isGroupSortingEnforced\" type=\"warning\">\n\t\t\t\t{{ t('settings', 'The system config enforces sorting the groups by name. This also disables showing the member count.') }}\n\t\t\t</NcNoteCard>\n\t\t\t<fieldset>\n\t\t\t\t<legend>{{ t('settings', 'Group list sorting') }}</legend>\n\t\t\t\t<NcNoteCard class=\"dialog__note\"\n\t\t\t\t\ttype=\"info\"\n\t\t\t\t\t:text=\"t('settings', 'Sorting only applies to the currently loaded groups for performance reasons. Groups will be loaded as you navigate or search through the list.')\" />\n\t\t\t\t<NcCheckboxRadioSwitch type=\"radio\"\n\t\t\t\t\t:checked.sync=\"groupSorting\"\n\t\t\t\t\tdata-test=\"sortGroupsByMemberCount\"\n\t\t\t\t\t:disabled=\"isGroupSortingEnforced\"\n\t\t\t\t\tname=\"group-sorting-mode\"\n\t\t\t\t\tvalue=\"member-count\">\n\t\t\t\t\t{{ t('settings', 'By member count') }}\n\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t\t<NcCheckboxRadioSwitch type=\"radio\"\n\t\t\t\t\t:checked.sync=\"groupSorting\"\n\t\t\t\t\tdata-test=\"sortGroupsByName\"\n\t\t\t\t\t:disabled=\"isGroupSortingEnforced\"\n\t\t\t\t\tname=\"group-sorting-mode\"\n\t\t\t\t\tvalue=\"name\">\n\t\t\t\t\t{{ t('settings', 'By name') }}\n\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t</fieldset>\n\t\t</NcAppSettingsSection>\n\n\t\t<NcAppSettingsSection id=\"email-settings\"\n\t\t\t:name=\"t('settings', 'Send email')\">\n\t\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t\tdata-test=\"sendWelcomeMail\"\n\t\t\t\t:checked.sync=\"sendWelcomeMail\"\n\t\t\t\t:disabled=\"loadingSendMail\">\n\t\t\t\t{{ t('settings', 'Send welcome email to new accounts') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</NcAppSettingsSection>\n\n\t\t<NcAppSettingsSection id=\"default-settings\"\n\t\t\t:name=\"t('settings', 'Defaults')\">\n\t\t\t<NcSelect v-model=\"defaultQuota\"\n\t\t\t\t:clearable=\"false\"\n\t\t\t\t:create-option=\"validateQuota\"\n\t\t\t\t:filter-by=\"filterQuotas\"\n\t\t\t\t:input-label=\"t('settings', 'Default quota')\"\n\t\t\t\t:options=\"quotaOptions\"\n\t\t\t\tplacement=\"top\"\n\t\t\t\t:placeholder=\"t('settings', 'Select default quota')\"\n\t\t\t\ttaggable\n\t\t\t\t@option:selected=\"setDefaultQuota\" />\n\t\t</NcAppSettingsSection>\n\t</NcAppSettingsDialog>\n</template>\n\n<script>\nimport { formatFileSize, parseFileSize } from '@nextcloud/files'\nimport { generateUrl } from '@nextcloud/router'\n\nimport axios from '@nextcloud/axios'\nimport NcAppSettingsDialog from '@nextcloud/vue/components/NcAppSettingsDialog'\nimport NcAppSettingsSection from '@nextcloud/vue/components/NcAppSettingsSection'\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/components/NcCheckboxRadioSwitch'\nimport NcNoteCard from '@nextcloud/vue/components/NcNoteCard'\nimport NcSelect from '@nextcloud/vue/components/NcSelect'\n\nimport { GroupSorting } from '../../constants/GroupManagement.ts'\nimport { unlimitedQuota } from '../../utils/userUtils.ts'\nimport logger from '../../logger.ts'\n\nexport default {\n\tname: 'UserSettingsDialog',\n\n\tcomponents: {\n\t\tNcAppSettingsDialog,\n\t\tNcAppSettingsSection,\n\t\tNcCheckboxRadioSwitch,\n\t\tNcNoteCard,\n\t\tNcSelect,\n\t},\n\n\tprops: {\n\t\topen: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tselectedQuota: false,\n\t\t\tloadingSendMail: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tgroupSorting: {\n\t\t\tget() {\n\t\t\t\treturn this.$store.getters.getGroupSorting === GroupSorting.GroupName ? 'name' : 'member-count'\n\t\t\t},\n\t\t\tset(sorting) {\n\t\t\t\tthis.$store.commit('setGroupSorting', sorting === 'name' ? GroupSorting.GroupName : GroupSorting.UserCount)\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Admin has configured `sort_groups_by_name` in the system config\n\t\t */\n\t\tisGroupSortingEnforced() {\n\t\t\treturn this.$store.getters.getServerData.forceSortGroupByName\n\t\t},\n\n\t\tisModalOpen: {\n\t\t\tget() {\n\t\t\t\treturn this.open\n\t\t\t},\n\t\t\tset(open) {\n\t\t\t\tthis.$emit('update:open', open)\n\t\t\t},\n\t\t},\n\n\t\tshowConfig() {\n\t\t\treturn this.$store.getters.getShowConfig\n\t\t},\n\n\t\tsettings() {\n\t\t\treturn this.$store.getters.getServerData\n\t\t},\n\n\t\tshowLanguages: {\n\t\t\tget() {\n\t\t\t\treturn this.showConfig.showLanguages\n\t\t\t},\n\t\t\tset(status) {\n\t\t\t\tthis.setShowConfig('showLanguages', status)\n\t\t\t},\n\t\t},\n\n\t\tshowFirstLogin: {\n\t\t\tget() {\n\t\t\t\treturn this.showConfig.showFirstLogin\n\t\t\t},\n\t\t\tset(status) {\n\t\t\t\tthis.setShowConfig('showFirstLogin', status)\n\t\t\t},\n\t\t},\n\n\t\tshowLastLogin: {\n\t\t\tget() {\n\t\t\t\treturn this.showConfig.showLastLogin\n\t\t\t},\n\t\t\tset(status) {\n\t\t\t\tthis.setShowConfig('showLastLogin', status)\n\t\t\t},\n\t\t},\n\n\t\tshowUserBackend: {\n\t\t\tget() {\n\t\t\t\treturn this.showConfig.showUserBackend\n\t\t\t},\n\t\t\tset(status) {\n\t\t\t\tthis.setShowConfig('showUserBackend', status)\n\t\t\t},\n\t\t},\n\n\t\tshowStoragePath: {\n\t\t\tget() {\n\t\t\t\treturn this.showConfig.showStoragePath\n\t\t\t},\n\t\t\tset(status) {\n\t\t\t\tthis.setShowConfig('showStoragePath', status)\n\t\t\t},\n\t\t},\n\n\t\tquotaOptions() {\n\t\t\t// convert the preset array into objects\n\t\t\tconst quotaPreset = this.settings.quotaPreset.reduce((acc, cur) => acc.concat({ id: cur, label: cur }), [])\n\t\t\t// add default presets\n\t\t\tif (this.settings.allowUnlimitedQuota) {\n\t\t\t\tquotaPreset.unshift(unlimitedQuota)\n\t\t\t}\n\t\t\treturn quotaPreset\n\t\t},\n\n\t\tdefaultQuota: {\n\t\t\tget() {\n\t\t\t\tif (this.selectedQuota !== false) {\n\t\t\t\t\treturn this.selectedQuota\n\t\t\t\t}\n\t\t\t\tif (this.settings.defaultQuota !== unlimitedQuota.id && OC.Util.computerFileSize(this.settings.defaultQuota) >= 0) {\n\t\t\t\t\t// if value is valid, let's map the quotaOptions or return custom quota\n\t\t\t\t\treturn { id: this.settings.defaultQuota, label: this.settings.defaultQuota }\n\t\t\t\t}\n\t\t\t\treturn unlimitedQuota // unlimited\n\t\t\t},\n\t\t\tset(quota) {\n\t\t\t\tthis.selectedQuota = quota\n\t\t\t},\n\t\t},\n\n\t\tsendWelcomeMail: {\n\t\t\tget() {\n\t\t\t\treturn this.settings.newUserSendEmail\n\t\t\t},\n\t\t\tasync set(value) {\n\t\t\t\ttry {\n\t\t\t\t\tthis.loadingSendMail = true\n\t\t\t\t\tthis.$store.commit('setServerData', {\n\t\t\t\t\t\t...this.settings,\n\t\t\t\t\t\tnewUserSendEmail: value,\n\t\t\t\t\t})\n\t\t\t\t\tawait axios.post(generateUrl('/settings/users/preferences/newUser.sendEmail'), { value: value ? 'yes' : 'no' })\n\t\t\t\t} catch (error) {\n\t\t\t\t\tlogger.error('Could not update newUser.sendEmail preference', { error })\n\t\t\t\t} finally {\n\t\t\t\t\tthis.loadingSendMail = false\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Check if a quota matches the current search.\n\t\t * This is a custom filter function to allow to map \"1GB\" to the label \"1 GB\" (ignoring whitespaces).\n\t\t *\n\t\t * @param option The quota to check\n\t\t * @param label The label of the quota\n\t\t * @param search The search string\n\t\t */\n\t\tfilterQuotas(option, label, search) {\n\t\t\tconst searchValue = search.toLocaleLowerCase().replaceAll(/\\s/g, '')\n\t\t\treturn (label || '')\n\t\t\t\t.toLocaleLowerCase()\n\t\t\t\t.replaceAll(/\\s/g, '')\n\t\t\t\t.indexOf(searchValue) > -1\n\t\t},\n\n\t\tsetShowConfig(key, status) {\n\t\t\tthis.$store.commit('setShowConfig', { key, value: status })\n\t\t},\n\n\t\t/**\n\t\t * Validate quota string to make sure it's a valid human file size\n\t\t *\n\t\t * @param {string | object} quota Quota in readable format '5 GB' or Object {id: '5 GB', label: '5GB'}\n\t\t * @return {object} The validated quota object or unlimited quota if input is invalid\n\t\t */\n\t\tvalidateQuota(quota) {\n\t\t\tif (typeof quota === 'object') {\n\t\t\t\tquota = quota?.id || quota.label\n\t\t\t}\n\t\t\t// only used for new presets sent through @Tag\n\t\t\tconst validQuota = parseFileSize(quota, true)\n\t\t\tif (validQuota === null) {\n\t\t\t\treturn unlimitedQuota\n\t\t\t}\n\t\t\t// unify format output\n\t\t\tquota = formatFileSize(validQuota)\n\t\t\treturn { id: quota, label: quota }\n\t\t},\n\n\t\t/**\n\t\t * Dispatch default quota set request\n\t\t *\n\t\t * @param {string | object} quota Quota in readable format '5 GB' or Object {id: '5 GB', label: '5GB'}\n\t\t */\n\t\tsetDefaultQuota(quota = 'none') {\n\t\t\t// Make sure correct label is set for unlimited quota\n\t\t\tif (quota === 'none') {\n\t\t\t\tquota = unlimitedQuota\n\t\t\t}\n\t\t\tthis.$store.dispatch('setAppConfig', {\n\t\t\t\tapp: 'files',\n\t\t\t\tkey: 'default_quota',\n\t\t\t\t// ensure we only send the preset id\n\t\t\t\tvalue: quota.id ? quota.id : quota,\n\t\t\t}).then(() => {\n\t\t\t\tif (typeof quota !== 'object') {\n\t\t\t\t\tquota = { id: quota, label: quota }\n\t\t\t\t}\n\t\t\t\tthis.defaultQuota = quota\n\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.dialog {\n\t&__note {\n\t\tfont-weight: normal;\n\t}\n}\n\nfieldset {\n\tfont-weight: bold;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserSettingsDialog.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!./UserSettingsDialog.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!./UserSettingsDialog.vue?vue&type=style&index=0&id=9f7a355c&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./UserSettingsDialog.vue?vue&type=style&index=0&id=9f7a355c&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserSettingsDialog.vue?vue&type=template&id=9f7a355c&scoped=true\"\nimport script from \"./UserSettingsDialog.vue?vue&type=script&lang=js\"\nexport * from \"./UserSettingsDialog.vue?vue&type=script&lang=js\"\nimport style0 from \"./UserSettingsDialog.vue?vue&type=style&index=0&id=9f7a355c&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 \"9f7a355c\",\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.isModalOpen,\"show-navigation\":true,\"name\":_vm.t('settings', 'Account management settings')},on:{\"update:open\":function($event){_vm.isModalOpen=$event}}},[_c('NcAppSettingsSection',{attrs:{\"id\":\"visibility-settings\",\"name\":_vm.t('settings', 'Visibility')}},[_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"data-test\":\"showLanguages\",\"checked\":_vm.showLanguages},on:{\"update:checked\":function($event){_vm.showLanguages=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Show language'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"data-test\":\"showUserBackend\",\"checked\":_vm.showUserBackend},on:{\"update:checked\":function($event){_vm.showUserBackend=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Show account backend'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"data-test\":\"showStoragePath\",\"checked\":_vm.showStoragePath},on:{\"update:checked\":function($event){_vm.showStoragePath=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Show storage path'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"data-test\":\"showFirstLogin\",\"checked\":_vm.showFirstLogin},on:{\"update:checked\":function($event){_vm.showFirstLogin=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Show first login'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"data-test\":\"showLastLogin\",\"checked\":_vm.showLastLogin},on:{\"update:checked\":function($event){_vm.showLastLogin=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Show last login'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_c('NcAppSettingsSection',{attrs:{\"id\":\"groups-sorting\",\"name\":_vm.t('settings', 'Sorting')}},[(_vm.isGroupSortingEnforced)?_c('NcNoteCard',{attrs:{\"type\":\"warning\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'The system config enforces sorting the groups by name. This also disables showing the member count.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('fieldset',[_c('legend',[_vm._v(_vm._s(_vm.t('settings', 'Group list sorting')))]),_vm._v(\" \"),_c('NcNoteCard',{staticClass:\"dialog__note\",attrs:{\"type\":\"info\",\"text\":_vm.t('settings', 'Sorting only applies to the currently loaded groups for performance reasons. Groups will be loaded as you navigate or search through the list.')}}),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"radio\",\"checked\":_vm.groupSorting,\"data-test\":\"sortGroupsByMemberCount\",\"disabled\":_vm.isGroupSortingEnforced,\"name\":\"group-sorting-mode\",\"value\":\"member-count\"},on:{\"update:checked\":function($event){_vm.groupSorting=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'By member count'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"radio\",\"checked\":_vm.groupSorting,\"data-test\":\"sortGroupsByName\",\"disabled\":_vm.isGroupSortingEnforced,\"name\":\"group-sorting-mode\",\"value\":\"name\"},on:{\"update:checked\":function($event){_vm.groupSorting=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'By name'))+\"\\n\\t\\t\\t\")])],1)],1),_vm._v(\" \"),_c('NcAppSettingsSection',{attrs:{\"id\":\"email-settings\",\"name\":_vm.t('settings', 'Send email')}},[_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"data-test\":\"sendWelcomeMail\",\"checked\":_vm.sendWelcomeMail,\"disabled\":_vm.loadingSendMail},on:{\"update:checked\":function($event){_vm.sendWelcomeMail=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Send welcome email to new accounts'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_c('NcAppSettingsSection',{attrs:{\"id\":\"default-settings\",\"name\":_vm.t('settings', 'Defaults')}},[_c('NcSelect',{attrs:{\"clearable\":false,\"create-option\":_vm.validateQuota,\"filter-by\":_vm.filterQuotas,\"input-label\":_vm.t('settings', 'Default quota'),\"options\":_vm.quotaOptions,\"placement\":\"top\",\"placeholder\":_vm.t('settings', 'Select default quota'),\"taggable\":\"\"},on:{\"option:selected\":_vm.setDefaultQuota},model:{value:(_vm.defaultQuota),callback:function ($$v) {_vm.defaultQuota=$$v},expression:\"defaultQuota\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.Fragment,[_c(_setup.NcAppNavigationCaption,{attrs:{\"name\":_setup.t('settings', 'Groups'),\"disabled\":_setup.loadingAddGroup,\"aria-label\":_setup.loadingAddGroup ? _setup.t('settings', 'Creating group…') : _setup.t('settings', 'Create group'),\"force-menu\":\"\",\"is-heading\":\"\",\"open\":_setup.isAddGroupOpen},on:{\"update:open\":function($event){_setup.isAddGroupOpen=$event}},scopedSlots:_vm._u([(_setup.isAdminOrDelegatedAdmin)?{key:\"actionsTriggerIcon\",fn:function(){return [(_setup.loadingAddGroup)?_c(_setup.NcLoadingIcon):_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiPlus}})]},proxy:true}:null,(_setup.isAdminOrDelegatedAdmin)?{key:\"actions\",fn:function(){return [_c(_setup.NcActionText,{scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiAccountGroup}})]},proxy:true}],null,false,3607647275)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_setup.t('settings', 'Create group'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c(_setup.NcActionInput,{attrs:{\"label\":_setup.t('settings', 'Group name'),\"data-cy-users-settings-new-group-name\":\"\",\"label-outside\":false,\"disabled\":_setup.loadingAddGroup,\"value\":_setup.newGroupName,\"error\":_setup.hasAddGroupError,\"helper-text\":_setup.hasAddGroupError ? _setup.t('settings', 'Please enter a valid group name') : ''},on:{\"update:value\":function($event){_setup.newGroupName=$event},\"submit\":_setup.createGroup}})]},proxy:true}:null],null,true)}),_vm._v(\" \"),_c(_setup.NcAppNavigationSearch,{attrs:{\"label\":_setup.t('settings', 'Search groups…')},model:{value:(_setup.groupsSearchQuery),callback:function ($$v) {_setup.groupsSearchQuery=$$v},expression:\"groupsSearchQuery\"}}),_vm._v(\" \"),_c('p',{staticClass:\"hidden-visually\",attrs:{\"id\":\"group-list-desc\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_setup.t('settings', 'List of groups. This list is not fully populated for performance reasons. The groups will be loaded as you navigate or search through the list.'))+\"\\n\\t\")]),_vm._v(\" \"),_c(_setup.NcAppNavigationList,{staticClass:\"account-management__group-list\",attrs:{\"aria-describedby\":\"group-list-desc\",\"data-cy-users-settings-navigation-groups\":\"custom\"}},[_vm._l((_setup.userGroups),function(group){return _c(_setup.GroupListItem,{key:group.id,ref:\"groupListItems\",refInFor:true,attrs:{\"id\":group.id,\"active\":_setup.selectedGroupDecoded === group.id,\"name\":group.title,\"count\":group.count}})}),_vm._v(\" \"),(_setup.loadingGroups)?_c('div',{attrs:{\"role\":\"note\"}},[_c(_setup.NcLoadingIcon,{attrs:{\"name\":_setup.t('settings', 'Loading groups…')}})],1):_vm._e()],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<Fragment>\n\t\t<NcModal v-if=\"showRemoveGroupModal\"\n\t\t\t@close=\"showRemoveGroupModal = false\">\n\t\t\t<div class=\"modal__content\">\n\t\t\t\t<h2 class=\"modal__header\">\n\t\t\t\t\t{{ t('settings', 'Please confirm the group removal') }}\n\t\t\t\t</h2>\n\t\t\t\t<NcNoteCard type=\"warning\"\n\t\t\t\t\tshow-alert>\n\t\t\t\t\t{{ t('settings', 'You are about to remove the group \"{group}\". The accounts will NOT be deleted.', { group: name }) }}\n\t\t\t\t</NcNoteCard>\n\t\t\t\t<div class=\"modal__button-row\">\n\t\t\t\t\t<NcButton type=\"secondary\"\n\t\t\t\t\t\t@click=\"showRemoveGroupModal = false\">\n\t\t\t\t\t\t{{ t('settings', 'Cancel') }}\n\t\t\t\t\t</NcButton>\n\t\t\t\t\t<NcButton type=\"primary\"\n\t\t\t\t\t\t@click=\"removeGroup\">\n\t\t\t\t\t\t{{ t('settings', 'Confirm') }}\n\t\t\t\t\t</NcButton>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</NcModal>\n\n\t\t<NcAppNavigationItem :key=\"id\"\n\t\t\tref=\"listItem\"\n\t\t\t:exact=\"true\"\n\t\t\t:name=\"name\"\n\t\t\t:to=\"{ name: 'group', params: { selectedGroup: encodeURIComponent(id) } }\"\n\t\t\t:loading=\"loadingRenameGroup\"\n\t\t\t:menu-open=\"openGroupMenu\"\n\t\t\t@update:menuOpen=\"handleGroupMenuOpen\">\n\t\t\t<template #icon>\n\t\t\t\t<AccountGroup :size=\"20\" />\n\t\t\t</template>\n\t\t\t<template #counter>\n\t\t\t\t<NcCounterBubble v-if=\"count\"\n\t\t\t\t\t:type=\"active ? 'highlighted' : undefined\">\n\t\t\t\t\t{{ count }}\n\t\t\t\t</NcCounterBubble>\n\t\t\t</template>\n\t\t\t<template #actions>\n\t\t\t\t<NcActionInput v-if=\"id !== 'admin' && id !== 'disabled' && (settings.isAdmin || settings.isDelegatedAdmin)\"\n\t\t\t\t\tref=\"displayNameInput\"\n\t\t\t\t\t:trailing-button-label=\"t('settings', 'Submit')\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t:value=\"name\"\n\t\t\t\t\t:label=\" t('settings', 'Rename group')\"\n\t\t\t\t\t@submit=\"renameGroup(id)\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<Pencil :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t</NcActionInput>\n\t\t\t\t<NcActionButton v-if=\"id !== 'admin' && id !== 'disabled' && (settings.isAdmin || settings.isDelegatedAdmin)\"\n\t\t\t\t\t@click=\"showRemoveGroupModal = true\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<Delete :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ t('settings', 'Remove group') }}\n\t\t\t\t</NcActionButton>\n\t\t\t</template>\n\t\t</NcAppNavigationItem>\n\t</Fragment>\n</template>\n\n<script>\nimport { Fragment } from 'vue-frag'\n\nimport NcActionButton from '@nextcloud/vue/components/NcActionButton'\nimport NcActionInput from '@nextcloud/vue/components/NcActionInput'\nimport NcAppNavigationItem from '@nextcloud/vue/components/NcAppNavigationItem'\nimport NcButton from '@nextcloud/vue/components/NcButton'\nimport NcCounterBubble from '@nextcloud/vue/components/NcCounterBubble'\nimport NcModal from '@nextcloud/vue/components/NcModal'\nimport NcNoteCard from '@nextcloud/vue/components/NcNoteCard'\n\nimport AccountGroup from 'vue-material-design-icons/AccountGroup.vue'\nimport Delete from 'vue-material-design-icons/Delete.vue'\nimport Pencil from 'vue-material-design-icons/Pencil.vue'\n\nimport { showError } from '@nextcloud/dialogs'\n\nexport default {\n\tname: 'GroupListItem',\n\tcomponents: {\n\t\tAccountGroup,\n\t\tDelete,\n\t\tFragment,\n\t\tNcActionButton,\n\t\tNcActionInput,\n\t\tNcAppNavigationItem,\n\t\tNcButton,\n\t\tNcCounterBubble,\n\t\tNcModal,\n\t\tNcNoteCard,\n\t\tPencil,\n\t},\n\tprops: {\n\t\t/**\n\t\t * If this group is currently selected\n\t\t */\n\t\tactive: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\t/**\n\t\t * Number of members within this group\n\t\t */\n\t\tcount: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t\t/**\n\t\t * Identifier of this group\n\t\t */\n\t\tid: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\t/**\n\t\t * Name of this group\n\t\t */\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tloadingRenameGroup: false,\n\t\t\topenGroupMenu: false,\n\t\t\tshowRemoveGroupModal: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\tsettings() {\n\t\t\treturn this.$store.getters.getServerData\n\t\t},\n\t},\n\tmethods: {\n\t\thandleGroupMenuOpen() {\n\t\t\tthis.openGroupMenu = true\n\t\t},\n\t\tasync renameGroup(gid) {\n\t\t\t// check if group id is valid\n\t\t\tif (gid.trim() === '') {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst displayName = this.$refs.displayNameInput.$el.querySelector('input[type=\"text\"]').value\n\n\t\t\t// check if group name is valid\n\t\t\tif (displayName.trim() === '') {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tthis.openGroupMenu = false\n\t\t\t\tthis.loadingRenameGroup = true\n\t\t\t\tawait this.$store.dispatch('renameGroup', {\n\t\t\t\t\tgroupid: gid.trim(),\n\t\t\t\t\tdisplayName: displayName.trim(),\n\t\t\t\t})\n\n\t\t\t\tthis.loadingRenameGroup = false\n\t\t\t} catch {\n\t\t\t\tthis.openGroupMenu = true\n\t\t\t\tthis.loadingRenameGroup = false\n\t\t\t}\n\t\t},\n\t\tasync removeGroup() {\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('removeGroup', this.id)\n\t\t\t\tthis.showRemoveGroupModal = false\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('settings', 'Failed to remove group \"{group}\"', { group: this.name }))\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.modal {\n\t&__header {\n\t\tmargin: 0;\n\t}\n\n\t&__content {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t\tpadding: 20px;\n\t\tgap: 4px 0;\n\t}\n\n\t&__button-row {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t\tjustify-content: space-between;\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!./GroupListItem.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!./GroupListItem.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!./GroupListItem.vue?vue&type=style&index=0&id=161509be&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./GroupListItem.vue?vue&type=style&index=0&id=161509be&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./GroupListItem.vue?vue&type=template&id=161509be&scoped=true\"\nimport script from \"./GroupListItem.vue?vue&type=script&lang=js\"\nexport * from \"./GroupListItem.vue?vue&type=script&lang=js\"\nimport style0 from \"./GroupListItem.vue?vue&type=style&index=0&id=161509be&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 \"161509be\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('Fragment',[(_vm.showRemoveGroupModal)?_c('NcModal',{on:{\"close\":function($event){_vm.showRemoveGroupModal = false}}},[_c('div',{staticClass:\"modal__content\"},[_c('h2',{staticClass:\"modal__header\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Please confirm the group removal'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcNoteCard',{attrs:{\"type\":\"warning\",\"show-alert\":\"\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'You are about to remove the group \"{group}\". The accounts will NOT be deleted.', { group: _vm.name }))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('div',{staticClass:\"modal__button-row\"},[_c('NcButton',{attrs:{\"type\":\"secondary\"},on:{\"click\":function($event){_vm.showRemoveGroupModal = false}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Cancel'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcButton',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.removeGroup}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Confirm'))+\"\\n\\t\\t\\t\\t\")])],1)],1)]):_vm._e(),_vm._v(\" \"),_c('NcAppNavigationItem',{key:_vm.id,ref:\"listItem\",attrs:{\"exact\":true,\"name\":_vm.name,\"to\":{ name: 'group', params: { selectedGroup: encodeURIComponent(_vm.id) } },\"loading\":_vm.loadingRenameGroup,\"menu-open\":_vm.openGroupMenu},on:{\"update:menuOpen\":_vm.handleGroupMenuOpen},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('AccountGroup',{attrs:{\"size\":20}})]},proxy:true},{key:\"counter\",fn:function(){return [(_vm.count)?_c('NcCounterBubble',{attrs:{\"type\":_vm.active ? 'highlighted' : undefined}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.count)+\"\\n\\t\\t\\t\")]):_vm._e()]},proxy:true},{key:\"actions\",fn:function(){return [(_vm.id !== 'admin' && _vm.id !== 'disabled' && (_vm.settings.isAdmin || _vm.settings.isDelegatedAdmin))?_c('NcActionInput',{ref:\"displayNameInput\",attrs:{\"trailing-button-label\":_vm.t('settings', 'Submit'),\"type\":\"text\",\"value\":_vm.name,\"label\":_vm.t('settings', 'Rename group')},on:{\"submit\":function($event){return _vm.renameGroup(_vm.id)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Pencil',{attrs:{\"size\":20}})]},proxy:true}],null,false,580569589)}):_vm._e(),_vm._v(\" \"),(_vm.id !== 'admin' && _vm.id !== 'disabled' && (_vm.settings.isAdmin || _vm.settings.isDelegatedAdmin))?_c('NcActionButton',{on:{\"click\":function($event){_vm.showRemoveGroupModal = true}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Delete',{attrs:{\"size\":20}})]},proxy:true}],null,false,2705356561)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Remove group'))+\"\\n\\t\\t\\t\")]):_vm._e()]},proxy:true}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { computed } from 'vue';\n/**\n * Format a group to a menu entry\n *\n * @param group the group\n */\nfunction formatGroupMenu(group) {\n if (typeof group === 'undefined') {\n return null;\n }\n const item = {\n id: group.id,\n title: group.name,\n usercount: group.usercount,\n count: Math.max(0, group.usercount - group.disabled),\n };\n return item;\n}\nexport const useFormatGroups = (groups) => {\n /**\n * All non-disabled non-admin groups\n */\n const userGroups = computed(() => {\n const formatted = groups.value\n // filter out disabled and admin\n .filter(group => group.id !== 'disabled' && group.id !== '__nc_internal_recent' && group.id !== 'admin')\n // format group\n .map(group => formatGroupMenu(group))\n // remove invalid\n .filter(group => group !== null);\n return formatted;\n });\n /**\n * The admin group if found otherwise null\n */\n const adminGroup = computed(() => formatGroupMenu(groups.value.find(group => group.id === 'admin')));\n /**\n * The group of disabled users\n */\n const disabledGroup = computed(() => formatGroupMenu(groups.value.find(group => group.id === 'disabled')));\n /**\n * The group of recent users\n */\n const recentGroup = computed(() => formatGroupMenu(groups.value.find(group => group.id === '__nc_internal_recent')));\n return { adminGroup, recentGroup, disabledGroup, userGroups };\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!./AppNavigationGroupList.vue?vue&type=script&setup=true&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!./AppNavigationGroupList.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./AppNavigationGroupList.vue?vue&type=template&id=2057c7ae\"\nimport script from \"./AppNavigationGroupList.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AppNavigationGroupList.vue?vue&type=script&setup=true&lang=ts\"\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!./UserManagementNavigation.vue?vue&type=script&setup=true&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!./UserManagementNavigation.vue?vue&type=script&setup=true&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!./UserManagementNavigation.vue?vue&type=style&index=0&id=edf83404&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./UserManagementNavigation.vue?vue&type=style&index=0&id=edf83404&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserManagementNavigation.vue?vue&type=template&id=edf83404&scoped=true\"\nimport script from \"./UserManagementNavigation.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UserManagementNavigation.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./UserManagementNavigation.vue?vue&type=style&index=0&id=edf83404&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 \"edf83404\",\n null\n \n)\n\nexport default component.exports","import { N as NcActionButton } from \"./chunks/NcActionButton-Gpv56vuS.mjs\";\nimport { N as NcActionButtonGroup } from \"./chunks/NcActionButtonGroup-BteTNhIn.mjs\";\nimport NcActionCaption from \"./Components/NcActionCaption.mjs\";\nimport { N as NcActionCheckbox } from \"./chunks/NcActionCheckbox-DSMKeccY.mjs\";\nimport { N as NcActionInput } from \"./chunks/NcActionInput-QO_UKY2v.mjs\";\nimport NcActionLink from \"./Components/NcActionLink.mjs\";\nimport { N as NcActionRadio } from \"./chunks/NcActionRadio-yAm71xxU.mjs\";\nimport NcActionRouter from \"./Components/NcActionRouter.mjs\";\nimport { N as NcActions } from \"./chunks/NcActions-CucWK-m-.mjs\";\nimport NcActionSeparator from \"./Components/NcActionSeparator.mjs\";\nimport NcActionText from \"./Components/NcActionText.mjs\";\nimport { N as NcActionTextEditable } from \"./chunks/NcActionTextEditable-BYqqHPj2.mjs\";\nimport { N as NcAppContent } from \"./chunks/NcAppContent-_x1Bvwg-.mjs\";\nimport NcAppContentDetails from \"./Components/NcAppContentDetails.mjs\";\nimport NcAppContentList from \"./Components/NcAppContentList.mjs\";\nimport { N as NcAppNavigation } from \"./chunks/NcAppNavigation-H8Gvbq5E.mjs\";\nimport { N as NcAppNavigationCaption } from \"./chunks/NcAppNavigationCaption-C0Fkd9G7.mjs\";\nimport NcAppNavigationIconBullet from \"./Components/NcAppNavigationIconBullet.mjs\";\nimport { N as NcAppNavigationItem } from \"./chunks/NcAppNavigationItem-CDut0DWY.mjs\";\nimport NcAppNavigationList from \"./Components/NcAppNavigationList.mjs\";\nimport NcAppNavigationNew from \"./Components/NcAppNavigationNew.mjs\";\nimport { N as NcAppNavigationNewItem } from \"./chunks/NcAppNavigationNewItem-DGjgp78o.mjs\";\nimport { N as NcAppNavigationSearch } from \"./chunks/NcAppNavigationSearch-DTW6CtnU.mjs\";\nimport { N as NcAppNavigationSettings } from \"./chunks/NcAppNavigationSettings-C0QuEMmn.mjs\";\nimport NcAppNavigationSpacer from \"./Components/NcAppNavigationSpacer.mjs\";\nimport { N as NcAppSettingsDialog } from \"./chunks/NcAppSettingsDialog-Dl-kMSpe.mjs\";\nimport NcAppSettingsSection from \"./Components/NcAppSettingsSection.mjs\";\nimport { N as NcAppSidebar } from \"./chunks/NcAppSidebar-C5fqF8Ll.mjs\";\nimport NcAppSidebarTab from \"./Components/NcAppSidebarTab.mjs\";\nimport { N as NcAvatar } from \"./chunks/NcAvatar-Db8tkJt9.mjs\";\nimport { u } from \"./chunks/NcAvatar-Db8tkJt9.mjs\";\nimport { N as NcBlurHash } from \"./chunks/NcBlurHash-do2wxY-0.mjs\";\nimport { N as NcBreadcrumb } from \"./chunks/NcBreadcrumb-CuKf9Utm.mjs\";\nimport { N as NcBreadcrumbs } from \"./chunks/NcBreadcrumbs-DR2_1tNR.mjs\";\nimport NcButton from \"./Components/NcButton.mjs\";\nimport { N as NcCheckboxRadioSwitch } from \"./chunks/NcCheckboxRadioSwitch-Di9rSADK.mjs\";\nimport { N as NcCollectionList } from \"./chunks/NcCollectionList-N169E0Rf.mjs\";\nimport { N as NcColorPicker } from \"./chunks/NcColorPicker-BzSsZRm3.mjs\";\nimport { N as NcContent } from \"./chunks/NcContent-BHl5YDYI.mjs\";\nimport { N as NcCounterBubble } from \"./chunks/NcCounterBubble-CDfRYl8B.mjs\";\nimport { N as NcDashboardWidget } from \"./chunks/NcDashboardWidget-DwWee7mc.mjs\";\nimport { N as NcDashboardWidgetItem } from \"./chunks/NcDashboardWidgetItem-Csgi1gF2.mjs\";\nimport { N as NcDateTime } from \"./chunks/NcDateTime-BR6BBvML.mjs\";\nimport { u as u2 } from \"./chunks/NcDateTime-BR6BBvML.mjs\";\nimport NcDateTimePicker from \"./Components/NcDateTimePicker.mjs\";\nimport NcDateTimePickerNative from \"./Components/NcDateTimePickerNative.mjs\";\nimport { N as NcDialog } from \"./chunks/NcDialog-D2lwwZL-.mjs\";\nimport { N as NcDialogButton } from \"./chunks/NcDialogButton-BB56HcBl.mjs\";\nimport NcEllipsisedOption from \"./Components/NcEllipsisedOption.mjs\";\nimport { N as NcEmojiPicker } from \"./chunks/NcEmojiPicker-DyBFXXm7.mjs\";\nimport NcEmptyContent from \"./Components/NcEmptyContent.mjs\";\nimport NcGuestContent from \"./Components/NcGuestContent.mjs\";\nimport NcHeaderButton from \"./Components/NcHeaderButton.mjs\";\nimport { N as NcHeaderMenu } from \"./chunks/NcHeaderMenu-Bc1ucNsv.mjs\";\nimport { N as NcHighlight } from \"./chunks/index-Bz6q9mZw.mjs\";\nimport { N as NcIconSvgWrapper } from \"./chunks/NcIconSvgWrapper-RKuZn260.mjs\";\nimport { N as NcInputField } from \"./chunks/NcInputField-DTtUueUZ.mjs\";\nimport { N as NcListItem } from \"./chunks/NcListItem-BGoyHTZy.mjs\";\nimport { N as NcListItemIcon } from \"./chunks/NcListItemIcon-BG5v_qys.mjs\";\nimport NcLoadingIcon from \"./Components/NcLoadingIcon.mjs\";\nimport NcModal from \"./Components/NcModal.mjs\";\nimport NcNoteCard from \"./Components/NcNoteCard.mjs\";\nimport { N as NcPasswordField } from \"./chunks/NcPasswordField-CTKHRVC4.mjs\";\nimport { N as NcPopover } from \"./chunks/NcPopover-m0hDmALa.mjs\";\nimport { N as NcProgressBar } from \"./chunks/NcProgressBar-DegJ2JjE.mjs\";\nimport { N as NcRelatedResourcesPanel } from \"./chunks/NcRelatedResourcesPanel-CmiW_ds0.mjs\";\nimport { N as NcMentionBubble } from \"./chunks/index-G8WQDZ8G.mjs\";\nimport { r } from \"./chunks/index-G8WQDZ8G.mjs\";\nimport { N as NcAutoCompleteResult, a as NcRichContenteditable } from \"./chunks/NcRichContenteditable-CE1hvtcT.mjs\";\nimport { N as NcRichText } from \"./chunks/NcRichText-D6qJ5S5v.mjs\";\nimport { N, h, d, i, b, r as r2, c, a } from \"./chunks/index-56SXuvlv.mjs\";\nimport \"@vueuse/core\";\nimport \"vue\";\nimport \"vue-router\";\nimport { a as a2, g, b as b2, c as c2, d as d2, s } from \"./chunks/referencePickerModal-CMKHbYwz.mjs\";\nimport \"unist-util-visit\";\nimport \"unist-builder\";\nimport \"@nextcloud/router\";\nimport \"@nextcloud/axios\";\nimport \"@nextcloud/sharing/public\";\nimport \"@nextcloud/auth\";\nimport { N as NcSelect } from \"./chunks/NcSelect-TmGBPLzc.mjs\";\nimport { N as NcTextField } from \"./chunks/NcTextField-DRANdaIf.mjs\";\nimport \"@nextcloud/event-bus\";\nimport { N as NcSavingIndicatorIcon } from \"./chunks/NcSavingIndicatorIcon-nv1147dk.mjs\";\nimport { N as NcSelectTags } from \"./chunks/NcSelectTags-li-HYR2n.mjs\";\nimport { N as NcSelectUsers } from \"./chunks/NcSelectUsers-BQO_sQJ8.mjs\";\nimport { N as NcSettingsInputText } from \"./chunks/NcSettingsInputText-t1FMnLKA.mjs\";\nimport { N as NcSettingsSection } from \"./chunks/NcSettingsSection-EC3SmiDX.mjs\";\nimport { N as NcSettingsSelectGroup } from \"./chunks/NcSettingsSelectGroup-dzvfki-M.mjs\";\nimport { N as NcTextArea } from \"./chunks/NcTextArea-BHERsE_g.mjs\";\nimport { N as NcTimezonePicker } from \"./chunks/NcTimezonePicker-C17Rji1h.mjs\";\nimport { N as NcUserBubble } from \"./chunks/NcUserBubble-cO5krePG.mjs\";\nimport { N as NcUserStatusIcon } from \"./chunks/NcUserStatusIcon-WEKmuaoU.mjs\";\nimport NcVNodes from \"./Components/NcVNodes.mjs\";\nimport { isFullscreenState, useIsFullscreen } from \"./Composables/useIsFullscreen.mjs\";\nimport { MOBILE_BREAKPOINT, MOBILE_SMALL_BREAKPOINT, isMobileState, useIsMobile, useIsSmallMobile } from \"./Composables/useIsMobile.mjs\";\nimport { useHotKey } from \"./Composables/useHotKey.mjs\";\nimport { useIsDarkTheme, useIsDarkThemeElement } from \"./Composables/useIsDarkTheme.mjs\";\nimport { isA11yActivation } from \"./Functions/a11y.mjs\";\nimport { getEnabledContactsMenuActions, registerContactsMenuAction } from \"./Functions/contactsMenu.mjs\";\nimport { spawnDialog } from \"./Functions/dialog.mjs\";\nimport { E, a as a3, e, g as g2, s as s2 } from \"./chunks/emoji-BY_D0V5K.mjs\";\nimport { checkIfDarkTheme, isDarkTheme } from \"./Functions/isDarkTheme.mjs\";\nimport { preloadImage } from \"./Functions/preloadImage.mjs\";\nimport { u as u3 } from \"./chunks/usernameToColor-DJfepfog.mjs\";\nimport { directive } from \"./Directives/Focus.mjs\";\nimport { directive as directive$1 } from \"./Directives/Linkify.mjs\";\nimport \"./Directives/Tooltip.mjs\";\nimport { default as default2 } from \"./Mixins/clickOutsideOptions.mjs\";\nimport { default as default3 } from \"./Mixins/isFullscreen.mjs\";\nimport { default as default4 } from \"./Mixins/isMobile.mjs\";\nimport { VTooltip } from \"floating-vue\";\nimport { VTooltip as VTooltip2 } from \"floating-vue\";\nconst NcComponents = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n NcActionButton,\n NcActionButtonGroup,\n NcActionCaption,\n NcActionCheckbox,\n NcActionInput,\n NcActionLink,\n NcActionRadio,\n NcActionRouter,\n NcActionSeparator,\n NcActionText,\n NcActionTextEditable,\n NcActions,\n NcAppContent,\n NcAppContentDetails,\n NcAppContentList,\n NcAppNavigation,\n NcAppNavigationCaption,\n NcAppNavigationIconBullet,\n NcAppNavigationItem,\n NcAppNavigationList,\n NcAppNavigationNew,\n NcAppNavigationNewItem,\n NcAppNavigationSearch,\n NcAppNavigationSettings,\n NcAppNavigationSpacer,\n NcAppSettingsDialog,\n NcAppSettingsSection,\n NcAppSidebar,\n NcAppSidebarTab,\n NcAutoCompleteResult,\n NcAvatar,\n NcBlurHash,\n NcBreadcrumb,\n NcBreadcrumbs,\n NcButton,\n NcCheckboxRadioSwitch,\n NcCollectionList,\n NcColorPicker,\n NcContent,\n NcCounterBubble,\n NcDashboardWidget,\n NcDashboardWidgetItem,\n NcDateTime,\n NcDateTimePicker,\n NcDateTimePickerNative,\n NcDialog,\n NcDialogButton,\n NcEllipsisedOption,\n NcEmojiPicker,\n NcEmptyContent,\n NcGuestContent,\n NcHeaderButton,\n NcHeaderMenu,\n NcHighlight,\n NcIconSvgWrapper,\n NcInputField,\n NcListItem,\n NcListItemIcon,\n NcLoadingIcon,\n NcMentionBubble,\n NcModal,\n NcNoteCard,\n NcPasswordField,\n NcPopover,\n NcProgressBar,\n NcRelatedResourcesPanel,\n NcRichContenteditable,\n NcRichText,\n NcSavingIndicatorIcon,\n NcSelect,\n NcSelectTags,\n NcSelectUsers,\n NcSettingsInputText,\n NcSettingsSection,\n NcSettingsSelectGroup,\n NcTextArea,\n NcTextField,\n NcTimezonePicker,\n NcUserBubble,\n NcUserStatusIcon,\n NcVNodes\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst NcDirectives = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n Focus: directive,\n Linkify: directive$1,\n Tooltip: VTooltip\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst NextcloudVuePlugin = {\n install(Vue) {\n Object.entries(NcComponents).forEach(([name, component]) => {\n Vue.component(component.name || name, component);\n });\n Object.entries(NcDirectives).forEach(([name, directive2]) => {\n Vue.directive(name, directive2);\n });\n }\n};\nexport {\n E as EmojiSkinTone,\n directive as Focus,\n directive$1 as Linkify,\n MOBILE_BREAKPOINT,\n MOBILE_SMALL_BREAKPOINT,\n NcActionButton,\n NcActionButtonGroup,\n NcActionCaption,\n NcActionCheckbox,\n NcActionInput,\n NcActionLink,\n NcActionRadio,\n NcActionRouter,\n NcActionSeparator,\n NcActionText,\n NcActionTextEditable,\n NcActions,\n NcAppContent,\n NcAppContentDetails,\n NcAppContentList,\n NcAppNavigation,\n NcAppNavigationCaption,\n NcAppNavigationIconBullet,\n NcAppNavigationItem,\n NcAppNavigationList,\n NcAppNavigationNew,\n NcAppNavigationNewItem,\n NcAppNavigationSearch,\n NcAppNavigationSettings,\n NcAppNavigationSpacer,\n NcAppSettingsDialog,\n NcAppSettingsSection,\n NcAppSidebar,\n NcAppSidebarTab,\n NcAutoCompleteResult,\n NcAvatar,\n NcBlurHash,\n NcBreadcrumb,\n NcBreadcrumbs,\n NcButton,\n NcCheckboxRadioSwitch,\n NcCollectionList,\n NcColorPicker,\n NcContent,\n NcCounterBubble,\n N as NcCustomPickerRenderResult,\n NcDashboardWidget,\n NcDashboardWidgetItem,\n NcDateTime,\n NcDateTimePicker,\n NcDateTimePickerNative,\n NcDialog,\n NcDialogButton,\n NcEllipsisedOption,\n NcEmojiPicker,\n NcEmptyContent,\n NcGuestContent,\n NcHeaderButton,\n NcHeaderMenu,\n NcHighlight,\n NcIconSvgWrapper,\n NcInputField,\n NcListItem,\n NcListItemIcon,\n NcLoadingIcon,\n NcMentionBubble,\n NcModal,\n NcNoteCard,\n NcPasswordField,\n NcPopover,\n NcProgressBar,\n NcRelatedResourcesPanel,\n NcRichContenteditable,\n NcRichText,\n NcSavingIndicatorIcon,\n NcSelect,\n NcSelectTags,\n NcSelectUsers,\n NcSettingsInputText,\n NcSettingsSection,\n NcSettingsSelectGroup,\n NcTextArea,\n NcTextField,\n NcTimezonePicker,\n NcUserBubble,\n NcUserStatusIcon,\n NcVNodes,\n NextcloudVuePlugin,\n VTooltip2 as Tooltip,\n a2 as anyLinkProviderId,\n checkIfDarkTheme,\n default2 as clickOutsideOptions,\n a3 as emojiAddRecent,\n e as emojiSearch,\n g2 as getCurrentSkinTone,\n getEnabledContactsMenuActions,\n g as getLinkWithPicker,\n b2 as getProvider,\n c2 as getProviders,\n h as hasInteractiveView,\n isA11yActivation,\n d as isCustomPickerElementRegistered,\n isDarkTheme,\n default3 as isFullscreen,\n isFullscreenState,\n default4 as isMobile,\n isMobileState,\n i as isWidgetRegistered,\n preloadImage,\n registerContactsMenuAction,\n b as registerCustomPickerElement,\n r2 as registerWidget,\n c as renderCustomPickerElement,\n a as renderWidget,\n r as richEditor,\n d2 as searchProvider,\n s2 as setCurrentSkinTone,\n s as sortProviders,\n spawnDialog,\n u2 as useFormatDateTime,\n useHotKey,\n useIsDarkTheme,\n useIsDarkThemeElement,\n useIsFullscreen,\n useIsMobile,\n useIsSmallMobile,\n u as userStatus,\n u3 as usernameToColor\n};\n//# sourceMappingURL=index.mjs.map\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, `.modal__header[data-v-161509be]{margin:0}.modal__content[data-v-161509be]{display:flex;flex-direction:column;align-items:center;padding:20px;gap:4px 0}.modal__button-row[data-v-161509be]{display:flex;width:100%;justify-content:space-between}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/GroupListItem.vue\"],\"names\":[],\"mappings\":\"AAEC,gCACC,QAAA,CAGD,iCACC,YAAA,CACA,qBAAA,CACA,kBAAA,CACA,YAAA,CACA,SAAA,CAGD,oCACC,YAAA,CACA,UAAA,CACA,6BAAA\",\"sourcesContent\":[\"\\n.modal {\\n\\t&__header {\\n\\t\\tmargin: 0;\\n\\t}\\n\\n\\t&__content {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\talign-items: center;\\n\\t\\tpadding: 20px;\\n\\t\\tgap: 4px 0;\\n\\t}\\n\\n\\t&__button-row {\\n\\t\\tdisplay: flex;\\n\\t\\twidth: 100%;\\n\\t\\tjustify-content: space-between;\\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, `.empty[data-v-1e8fee5a] .icon-vue{width:64px;height:64px}.empty[data-v-1e8fee5a] .icon-vue svg{max-width:64px;max-height:64px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/UserList.vue\"],\"names\":[],\"mappings\":\"AAKE,kCACC,UAAA,CACA,WAAA,CAEA,sCACC,cAAA,CACA,eAAA\",\"sourcesContent\":[\"\\n@use './Users/shared/styles' as *;\\n\\n.empty {\\n\\t:deep {\\n\\t\\t.icon-vue {\\n\\t\\t\\twidth: 64px;\\n\\t\\t\\theight: 64px;\\n\\n\\t\\t\\tsvg {\\n\\t\\t\\t\\tmax-width: 64px;\\n\\t\\t\\t\\tmax-height: 64px;\\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, `.app-content[data-v-253f9eec]{display:flex;overflow:hidden;flex-direction:column;max-height:100%}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/views/UserManagement.vue\"],\"names\":[],\"mappings\":\"AACA,8BAEC,YAAA,CACA,eAAA,CACA,qBAAA,CACA,eAAA\",\"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\"],\"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, `.footer[data-v-db2a7c4e]{position:relative;display:flex;min-width:100%;width:fit-content;height:var(--row-height);background-color:var(--color-main-background)}.footer__cell[data-v-db2a7c4e]{display:flex;flex-direction:column;justify-content:center;padding:0 var(--cell-padding);min-width:var(--cell-width);width:var(--cell-width);color:var(--color-main-text)}.footer__cell strong[data-v-db2a7c4e],.footer__cell span[data-v-db2a7c4e],.footer__cell label[data-v-db2a7c4e]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow-wrap:anywhere}@media(min-width: 670px){.footer__cell--avatar[data-v-db2a7c4e],.footer__cell--displayname[data-v-db2a7c4e]{position:sticky;z-index:var(--sticky-column-z-index);background-color:var(--color-main-background)}.footer__cell--avatar[data-v-db2a7c4e]{inset-inline-start:0}.footer__cell--displayname[data-v-db2a7c4e]{inset-inline-start:var(--avatar-cell-width);border-inline-end:1px solid var(--color-border)}}.footer__cell--username[data-v-db2a7c4e]{padding-inline-start:calc(var(--default-grid-baseline)*3)}.footer__cell--avatar[data-v-db2a7c4e]{min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0;user-select:none}.footer__cell--multiline span[data-v-db2a7c4e]{line-height:1.3em;white-space:unset}@supports(-webkit-line-clamp: 2){.footer__cell--multiline span[data-v-db2a7c4e]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.footer__cell--large[data-v-db2a7c4e]{min-width:var(--cell-width-large);width:var(--cell-width-large)}.footer__cell--obfuscated[data-v-db2a7c4e]{min-width:400px;width:400px}.footer__cell--fill[data-v-db2a7c4e]{min-width:var(--cell-width-large);width:100%}.footer__cell--actions[data-v-db2a7c4e]{position:sticky;inset-inline-end:0;z-index:var(--sticky-column-z-index);display:flex;flex-direction:row;align-items:center;min-width:110px;width:110px;background-color:var(--color-main-background);border-inline-start:1px solid var(--color-border)}.footer__subtitle[data-v-db2a7c4e]{color:var(--color-text-maxcontrast)}.footer__cell[data-v-db2a7c4e]{position:sticky;color:var(--color-text-maxcontrast)}.footer__cell--loading[data-v-db2a7c4e]{inset-inline-start:0;min-width:var(--avatar-cell-width);width:var(--avatar-cell-width);align-items:center;padding:0}.footer__cell--count[data-v-db2a7c4e]{inset-inline-start:var(--avatar-cell-width);min-width:var(--cell-width);width:var(--cell-width)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/Users/UserListFooter.vue\",\"webpack://./apps/settings/src/components/Users/shared/styles.scss\"],\"names\":[],\"mappings\":\"AAGA,yBCGC,iBAAA,CACA,YAAA,CACA,cAAA,CACA,iBAAA,CACA,wBAAA,CACA,6CAAA,CAIA,+BACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,6BAAA,CACA,2BAAA,CACA,uBAAA,CACA,4BAAA,CAEA,+GAGC,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,sBAAA,CAGD,yBACC,mFAEC,eAAA,CACA,oCAAA,CACA,6CAAA,CAGD,uCACC,oBAAA,CAGD,4CACC,2CAAA,CACA,+CAAA,CAAA,CAIF,yCACC,yDAAA,CAGD,uCACC,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CACA,gBAAA,CAIA,+CACC,iBAAA,CACA,iBAAA,CAEA,iCAJD,+CAKE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,sCACC,iCAAA,CACA,6BAAA,CAGD,2CACC,eAAA,CACA,WAAA,CAID,qCACC,iCAAA,CACA,UAAA,CAGD,wCACC,eAAA,CACA,kBAAA,CACA,oCAAA,CACA,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA,CACA,WAAA,CACA,6CAAA,CACA,iDAAA,CAIF,mCACC,mCAAA,CDpGD,+BACC,eAAA,CACA,mCAAA,CAEA,wCACC,oBAAA,CACA,kCAAA,CACA,8BAAA,CACA,kBAAA,CACA,SAAA,CAGD,sCACC,2CAAA,CACA,2BAAA,CACA,uBAAA\",\"sourcesContent\":[\"\\n@use './shared/styles';\\n\\n.footer {\\n\\t@include styles.row;\\n\\t@include styles.cell;\\n\\n\\t&__cell {\\n\\t\\tposition: sticky;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\n\\t\\t&--loading {\\n\\t\\t\\tinset-inline-start: 0;\\n\\t\\t\\tmin-width: var(--avatar-cell-width);\\n\\t\\t\\twidth: var(--avatar-cell-width);\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tpadding: 0;\\n\\t\\t}\\n\\n\\t\\t&--count {\\n\\t\\t\\tinset-inline-start: var(--avatar-cell-width);\\n\\t\\t\\tmin-width: var(--cell-width);\\n\\t\\t\\twidth: var(--cell-width);\\n\\t\\t}\\n\\t}\\n}\\n\",\"/**\\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n\\n@mixin row {\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\tmin-width: 100%;\\n\\twidth: fit-content;\\n\\theight: var(--row-height);\\n\\tbackground-color: var(--color-main-background);\\n}\\n\\n@mixin cell {\\n\\t&__cell {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: center;\\n\\t\\tpadding: 0 var(--cell-padding);\\n\\t\\tmin-width: var(--cell-width);\\n\\t\\twidth: var(--cell-width);\\n\\t\\tcolor: var(--color-main-text);\\n\\n\\t\\tstrong,\\n\\t\\tspan,\\n\\t\\tlabel {\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\toverflow-wrap: anywhere;\\n\\t\\t}\\n\\n\\t\\t@media (min-width: 670px) { /* Show one &--large column between stickied columns */\\n\\t\\t\\t&--avatar,\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tposition: sticky;\\n\\t\\t\\t\\tz-index: var(--sticky-column-z-index);\\n\\t\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--avatar {\\n\\t\\t\\t\\tinset-inline-start: 0;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--displayname {\\n\\t\\t\\t\\tinset-inline-start: var(--avatar-cell-width);\\n\\t\\t\\t\\tborder-inline-end: 1px solid var(--color-border);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--username {\\n\\t\\t\\tpadding-inline-start: calc(var(--default-grid-baseline) * 3);\\n\\t\\t}\\n\\n\\t\\t&--avatar {\\n\\t\\t\\tmin-width: var(--avatar-cell-width);\\n\\t\\t\\twidth: var(--avatar-cell-width);\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\tuser-select: none;\\n\\t\\t}\\n\\n\\t\\t&--multiline {\\n\\t\\t\\tspan {\\n\\t\\t\\t\\tline-height: 1.3em;\\n\\t\\t\\t\\twhite-space: unset;\\n\\n\\t\\t\\t\\t@supports (-webkit-line-clamp: 2) {\\n\\t\\t\\t\\t\\tdisplay: -webkit-box;\\n\\t\\t\\t\\t\\t-webkit-line-clamp: 2;\\n\\t\\t\\t\\t\\t-webkit-box-orient: vertical;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&--large {\\n\\t\\t\\tmin-width: var(--cell-width-large);\\n\\t\\t\\twidth: var(--cell-width-large);\\n\\t\\t}\\n\\n\\t\\t&--obfuscated {\\n\\t\\t\\tmin-width: 400px;\\n\\t\\t\\twidth: 400px;\\n\\t\\t}\\n\\n\\t\\t// Fill remaining row space with cell\\n\\t\\t&--fill {\\n\\t\\t\\tmin-width: var(--cell-width-large);\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\n\\t\\t&--actions {\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\tinset-inline-end: 0;\\n\\t\\t\\tz-index: var(--sticky-column-z-index);\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: row;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tmin-width: 110px;\\n\\t\\t\\twidth: 110px;\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\tborder-inline-start: 1px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t&__subtitle {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { translate as t } from '@nextcloud/l10n';\nexport const unlimitedQuota = {\n id: 'none',\n label: t('settings', 'Unlimited'),\n};\nexport const defaultQuota = {\n id: 'default',\n label: t('settings', 'Default quota'),\n};\n/**\n * Return `true` if the logged in user does not have permissions to view the\n * data of `user`\n * @param user The user to check\n * @param user.id Id of the user\n */\nexport const isObfuscated = (user) => {\n const keys = Object.keys(user);\n return keys.length === 1 && keys.at(0) === 'id';\n};\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcAppContent',{attrs:{\"page-heading\":_vm.pageHeading}},[_c('UserList',{attrs:{\"selected-group\":_vm.selectedGroupDecoded,\"external-actions\":_vm.externalActions}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('table',{staticClass:\"user-list\"},[_vm._t(\"before\"),_vm._v(\" \"),_c('thead',{ref:\"thead\",staticClass:\"user-list__header\",attrs:{\"role\":\"rowgroup\"}},[_vm._t(\"header\")],2),_vm._v(\" \"),_c('tbody',{staticClass:\"user-list__body\",style:(_vm.tbodyStyle)},_vm._l((_vm.renderedItems),function(item,i){return _c(_vm.dataComponent,_vm._b({key:item[_vm.dataKey],tag:\"component\",attrs:{\"user\":item,\"visible\":(i >= _vm.bufferItems || _vm.index <= _vm.bufferItems) && (i < _vm.shownItems - _vm.bufferItems)}},'component',_vm.extraProps,false))}),1),_vm._v(\" \"),_c('tfoot',{directives:[{name:\"element-visibility\",rawName:\"v-element-visibility\",value:(_vm.handleFooterVisibility),expression:\"handleFooterVisibility\"}],ref:\"tfoot\",staticClass:\"user-list__footer\",attrs:{\"role\":\"rowgroup\"}},[_vm._t(\"footer\")],2)],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!./VirtualList.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!./VirtualList.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!./VirtualList.vue?vue&type=style&index=0&id=21942da5&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./VirtualList.vue?vue&type=style&index=0&id=21942da5&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./VirtualList.vue?vue&type=template&id=21942da5&scoped=true\"\nimport script from \"./VirtualList.vue?vue&type=script&lang=ts\"\nexport * from \"./VirtualList.vue?vue&type=script&lang=ts\"\nimport style0 from \"./VirtualList.vue?vue&type=style&index=0&id=21942da5&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 \"21942da5\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcDialog',_vm._g({staticClass:\"dialog\",attrs:{\"size\":\"small\",\"name\":_vm.t('settings', 'New account'),\"out-transition\":\"\"},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('NcButton',{staticClass:\"dialog__submit\",attrs:{\"data-test\":\"submit\",\"form\":\"new-user-form\",\"type\":\"primary\",\"native-type\":\"submit\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Add new account'))+\"\\n\\t\\t\")])]},proxy:true}])},_vm.$listeners),[_c('form',{staticClass:\"dialog__form\",attrs:{\"id\":\"new-user-form\",\"data-test\":\"form\",\"disabled\":_vm.loading.all},on:{\"submit\":function($event){$event.preventDefault();return _vm.createUser.apply(null, arguments)}}},[_c('NcTextField',{ref:\"username\",staticClass:\"dialog__item\",attrs:{\"data-test\":\"username\",\"value\":_vm.newUser.id,\"disabled\":_vm.settings.newUserGenerateUserID,\"label\":_vm.usernameLabel,\"autocapitalize\":\"none\",\"autocomplete\":\"off\",\"spellcheck\":\"false\",\"pattern\":\"[a-zA-Z0-9 _\\\\.@\\\\-']+\",\"required\":\"\"},on:{\"update:value\":function($event){return _vm.$set(_vm.newUser, \"id\", $event)}}}),_vm._v(\" \"),_c('NcTextField',{staticClass:\"dialog__item\",attrs:{\"data-test\":\"displayName\",\"value\":_vm.newUser.displayName,\"label\":_vm.t('settings', 'Display name'),\"autocapitalize\":\"none\",\"autocomplete\":\"off\",\"spellcheck\":\"false\"},on:{\"update:value\":function($event){return _vm.$set(_vm.newUser, \"displayName\", $event)}}}),_vm._v(\" \"),(!_vm.settings.newUserRequireEmail)?_c('span',{staticClass:\"dialog__hint\",attrs:{\"id\":\"password-email-hint\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Either password or email is required'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcPasswordField',{ref:\"password\",staticClass:\"dialog__item\",attrs:{\"data-test\":\"password\",\"value\":_vm.newUser.password,\"minlength\":_vm.minPasswordLength,\"maxlength\":469,\"aria-describedby\":\"password-email-hint\",\"label\":_vm.newUser.mailAddress === '' ? _vm.t('settings', 'Password (required)') : _vm.t('settings', 'Password'),\"autocapitalize\":\"none\",\"autocomplete\":\"new-password\",\"spellcheck\":\"false\",\"required\":_vm.newUser.mailAddress === ''},on:{\"update:value\":function($event){return _vm.$set(_vm.newUser, \"password\", $event)}}}),_vm._v(\" \"),_c('NcTextField',{staticClass:\"dialog__item\",attrs:{\"data-test\":\"email\",\"type\":\"email\",\"value\":_vm.newUser.mailAddress,\"aria-describedby\":\"password-email-hint\",\"label\":_vm.newUser.password === '' || _vm.settings.newUserRequireEmail ? _vm.t('settings', 'Email (required)') : _vm.t('settings', 'Email'),\"autocapitalize\":\"none\",\"autocomplete\":\"off\",\"spellcheck\":\"false\",\"required\":_vm.newUser.password === '' || _vm.settings.newUserRequireEmail},on:{\"update:value\":function($event){return _vm.$set(_vm.newUser, \"mailAddress\", $event)}}}),_vm._v(\" \"),_c('div',{staticClass:\"dialog__item\"},[_c('NcSelect',{staticClass:\"dialog__select\",attrs:{\"data-test\":\"groups\",\"input-label\":!_vm.settings.isAdmin && !_vm.settings.isDelegatedAdmin ? _vm.t('settings', 'Member of the following groups (required)') : _vm.t('settings', 'Member of the following groups'),\"placeholder\":_vm.t('settings', 'Set account groups'),\"disabled\":_vm.loading.groups || _vm.loading.all,\"options\":_vm.availableGroups,\"value\":_vm.newUser.groups,\"label\":\"name\",\"close-on-select\":false,\"multiple\":true,\"taggable\":_vm.settings.isAdmin || _vm.settings.isDelegatedAdmin,\"required\":!_vm.settings.isAdmin && !_vm.settings.isDelegatedAdmin,\"create-option\":(value) => ({ id: value, name: value, isCreating: true })},on:{\"search\":_vm.searchGroups,\"option:created\":_vm.createGroup,\"option:selected\":options => _vm.addGroup(options.at(-1))}})],1),_vm._v(\" \"),_c('div',{staticClass:\"dialog__item\"},[_c('NcSelect',{staticClass:\"dialog__select\",attrs:{\"input-label\":_vm.t('settings', 'Admin of the following groups'),\"placeholder\":_vm.t('settings', 'Set account as admin for …'),\"disabled\":_vm.loading.groups || _vm.loading.all,\"options\":_vm.subAdminsGroups,\"close-on-select\":false,\"multiple\":true,\"label\":\"name\"},on:{\"search\":_vm.searchGroups},model:{value:(_vm.newUser.subAdminsGroups),callback:function ($$v) {_vm.$set(_vm.newUser, \"subAdminsGroups\", $$v)},expression:\"newUser.subAdminsGroups\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"dialog__item\"},[_c('NcSelect',{staticClass:\"dialog__select\",attrs:{\"input-label\":_vm.t('settings', 'Quota'),\"placeholder\":_vm.t('settings', 'Set account quota'),\"options\":_vm.quotaOptions,\"clearable\":false,\"taggable\":true,\"create-option\":_vm.validateQuota},model:{value:(_vm.newUser.quota),callback:function ($$v) {_vm.$set(_vm.newUser, \"quota\", $$v)},expression:\"newUser.quota\"}})],1),_vm._v(\" \"),(_vm.showConfig.showLanguages)?_c('div',{staticClass:\"dialog__item\"},[_c('NcSelect',{staticClass:\"dialog__select\",attrs:{\"input-label\":_vm.t('settings', 'Language'),\"placeholder\":_vm.t('settings', 'Set default language'),\"clearable\":false,\"selectable\":option => !option.languages,\"filter-by\":_vm.languageFilterBy,\"options\":_vm.languages,\"label\":\"name\"},model:{value:(_vm.newUser.language),callback:function ($$v) {_vm.$set(_vm.newUser, \"language\", $$v)},expression:\"newUser.language\"}})],1):_vm._e(),_vm._v(\" \"),_c('div',{class:['dialog__item dialog__managers', { 'icon-loading-small': _vm.loading.manager }]},[_c('NcSelect',{staticClass:\"dialog__select\",attrs:{\"input-label\":_vm.managerInputLabel,\"placeholder\":_vm.managerLabel,\"options\":_vm.possibleManagers,\"user-select\":true,\"label\":\"displayname\"},on:{\"search\":_vm.searchUserManager},model:{value:(_vm.newUser.manager),callback:function ($$v) {_vm.$set(_vm.newUser, \"manager\", $$v)},expression:\"newUser.manager\"}})],1)],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<NcDialog class=\"dialog\"\n\t\tsize=\"small\"\n\t\t:name=\"t('settings', 'New account')\"\n\t\tout-transition\n\t\tv-on=\"$listeners\">\n\t\t<form id=\"new-user-form\"\n\t\t\tclass=\"dialog__form\"\n\t\t\tdata-test=\"form\"\n\t\t\t:disabled=\"loading.all\"\n\t\t\t@submit.prevent=\"createUser\">\n\t\t\t<NcTextField ref=\"username\"\n\t\t\t\tclass=\"dialog__item\"\n\t\t\t\tdata-test=\"username\"\n\t\t\t\t:value.sync=\"newUser.id\"\n\t\t\t\t:disabled=\"settings.newUserGenerateUserID\"\n\t\t\t\t:label=\"usernameLabel\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\tautocomplete=\"off\"\n\t\t\t\tspellcheck=\"false\"\n\t\t\t\tpattern=\"[a-zA-Z0-9 _\\.@\\-']+\"\n\t\t\t\trequired />\n\t\t\t<NcTextField class=\"dialog__item\"\n\t\t\t\tdata-test=\"displayName\"\n\t\t\t\t:value.sync=\"newUser.displayName\"\n\t\t\t\t:label=\"t('settings', 'Display name')\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\tautocomplete=\"off\"\n\t\t\t\tspellcheck=\"false\" />\n\t\t\t<span v-if=\"!settings.newUserRequireEmail\"\n\t\t\t\tid=\"password-email-hint\"\n\t\t\t\tclass=\"dialog__hint\">\n\t\t\t\t{{ t('settings', 'Either password or email is required') }}\n\t\t\t</span>\n\t\t\t<NcPasswordField ref=\"password\"\n\t\t\t\tclass=\"dialog__item\"\n\t\t\t\tdata-test=\"password\"\n\t\t\t\t:value.sync=\"newUser.password\"\n\t\t\t\t:minlength=\"minPasswordLength\"\n\t\t\t\t:maxlength=\"469\"\n\t\t\t\taria-describedby=\"password-email-hint\"\n\t\t\t\t:label=\"newUser.mailAddress === '' ? t('settings', 'Password (required)') : t('settings', 'Password')\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\tspellcheck=\"false\"\n\t\t\t\t:required=\"newUser.mailAddress === ''\" />\n\t\t\t<NcTextField class=\"dialog__item\"\n\t\t\t\tdata-test=\"email\"\n\t\t\t\ttype=\"email\"\n\t\t\t\t:value.sync=\"newUser.mailAddress\"\n\t\t\t\taria-describedby=\"password-email-hint\"\n\t\t\t\t:label=\"newUser.password === '' || settings.newUserRequireEmail ? t('settings', 'Email (required)') : t('settings', 'Email')\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\tautocomplete=\"off\"\n\t\t\t\tspellcheck=\"false\"\n\t\t\t\t:required=\"newUser.password === '' || settings.newUserRequireEmail\" />\n\t\t\t<div class=\"dialog__item\">\n\t\t\t\t<NcSelect class=\"dialog__select\"\n\t\t\t\t\tdata-test=\"groups\"\n\t\t\t\t\t:input-label=\"!settings.isAdmin && !settings.isDelegatedAdmin ? t('settings', 'Member of the following groups (required)') : t('settings', 'Member of the following groups')\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Set account groups')\"\n\t\t\t\t\t:disabled=\"loading.groups || loading.all\"\n\t\t\t\t\t:options=\"availableGroups\"\n\t\t\t\t\t:value=\"newUser.groups\"\n\t\t\t\t\tlabel=\"name\"\n\t\t\t\t\t:close-on-select=\"false\"\n\t\t\t\t\t:multiple=\"true\"\n\t\t\t\t\t:taggable=\"settings.isAdmin || settings.isDelegatedAdmin\"\n\t\t\t\t\t:required=\"!settings.isAdmin && !settings.isDelegatedAdmin\"\n\t\t\t\t\t:create-option=\"(value) => ({ id: value, name: value, isCreating: true })\"\n\t\t\t\t\t@search=\"searchGroups\"\n\t\t\t\t\t@option:created=\"createGroup\"\n\t\t\t\t\t@option:selected=\"options => addGroup(options.at(-1))\" />\n\t\t\t\t\t<!-- If user is not admin, they are a subadmin.\n\t\t\t\t\t\tSubadmins can't create users outside their groups\n\t\t\t\t\t\tTherefore, empty select is forbidden -->\n\t\t\t</div>\n\t\t\t<div class=\"dialog__item\">\n\t\t\t\t<NcSelect v-model=\"newUser.subAdminsGroups\"\n\t\t\t\t\tclass=\"dialog__select\"\n\t\t\t\t\t:input-label=\"t('settings', 'Admin of the following groups')\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Set account as admin for …')\"\n\t\t\t\t\t:disabled=\"loading.groups || loading.all\"\n\t\t\t\t\t:options=\"subAdminsGroups\"\n\t\t\t\t\t:close-on-select=\"false\"\n\t\t\t\t\t:multiple=\"true\"\n\t\t\t\t\tlabel=\"name\"\n\t\t\t\t\t@search=\"searchGroups\" />\n\t\t\t</div>\n\t\t\t<div class=\"dialog__item\">\n\t\t\t\t<NcSelect v-model=\"newUser.quota\"\n\t\t\t\t\tclass=\"dialog__select\"\n\t\t\t\t\t:input-label=\"t('settings', 'Quota')\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Set account quota')\"\n\t\t\t\t\t:options=\"quotaOptions\"\n\t\t\t\t\t:clearable=\"false\"\n\t\t\t\t\t:taggable=\"true\"\n\t\t\t\t\t:create-option=\"validateQuota\" />\n\t\t\t</div>\n\t\t\t<div v-if=\"showConfig.showLanguages\"\n\t\t\t\tclass=\"dialog__item\">\n\t\t\t\t<NcSelect v-model=\"newUser.language\"\n\t\t\t\t\tclass=\"dialog__select\"\n\t\t\t\t\t:input-label=\"t('settings', 'Language')\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Set default language')\"\n\t\t\t\t\t:clearable=\"false\"\n\t\t\t\t\t:selectable=\"option => !option.languages\"\n\t\t\t\t\t:filter-by=\"languageFilterBy\"\n\t\t\t\t\t:options=\"languages\"\n\t\t\t\t\tlabel=\"name\" />\n\t\t\t</div>\n\t\t\t<div :class=\"['dialog__item dialog__managers', { 'icon-loading-small': loading.manager }]\">\n\t\t\t\t<NcSelect v-model=\"newUser.manager\"\n\t\t\t\t\tclass=\"dialog__select\"\n\t\t\t\t\t:input-label=\"managerInputLabel\"\n\t\t\t\t\t:placeholder=\"managerLabel\"\n\t\t\t\t\t:options=\"possibleManagers\"\n\t\t\t\t\t:user-select=\"true\"\n\t\t\t\t\tlabel=\"displayname\"\n\t\t\t\t\t@search=\"searchUserManager\" />\n\t\t\t</div>\n\t\t</form>\n\n\t\t<template #actions>\n\t\t\t<NcButton class=\"dialog__submit\"\n\t\t\t\tdata-test=\"submit\"\n\t\t\t\tform=\"new-user-form\"\n\t\t\t\ttype=\"primary\"\n\t\t\t\tnative-type=\"submit\">\n\t\t\t\t{{ t('settings', 'Add new account') }}\n\t\t\t</NcButton>\n\t\t</template>\n\t</NcDialog>\n</template>\n\n<script>\nimport { formatFileSize, parseFileSize } from '@nextcloud/files'\nimport NcButton from '@nextcloud/vue/components/NcButton'\nimport NcDialog from '@nextcloud/vue/components/NcDialog'\nimport NcPasswordField from '@nextcloud/vue/components/NcPasswordField'\nimport NcSelect from '@nextcloud/vue/components/NcSelect'\nimport NcTextField from '@nextcloud/vue/components/NcTextField'\n\nimport { searchGroups } from '../../service/groups.ts'\nimport logger from '../../logger.ts'\n\nexport default {\n\tname: 'NewUserDialog',\n\n\tcomponents: {\n\t\tNcButton,\n\t\tNcDialog,\n\t\tNcPasswordField,\n\t\tNcSelect,\n\t\tNcTextField,\n\t},\n\n\tprops: {\n\t\tloading: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\n\t\tnewUser: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\n\t\tquotaOptions: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tavailableGroups: [],\n\t\t\tpossibleManagers: [],\n\t\t\t// TRANSLATORS This string describes a manager in the context of an organization\n\t\t\tmanagerInputLabel: t('settings', 'Manager'),\n\t\t\t// TRANSLATORS This string describes a manager in the context of an organization\n\t\t\tmanagerLabel: t('settings', 'Set line manager'),\n\t\t\t// Cancelable promise for search groups request\n\t\t\tpromise: null,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tshowConfig() {\n\t\t\treturn this.$store.getters.getShowConfig\n\t\t},\n\n\t\tsettings() {\n\t\t\treturn this.$store.getters.getServerData\n\t\t},\n\n\t\tusernameLabel() {\n\t\t\tif (this.settings.newUserGenerateUserID) {\n\t\t\t\treturn t('settings', 'Account name will be autogenerated')\n\t\t\t}\n\t\t\treturn t('settings', 'Account name (required)')\n\t\t},\n\n\t\tminPasswordLength() {\n\t\t\treturn this.$store.getters.getPasswordPolicyMinLength\n\t\t},\n\n\t\tsubAdminsGroups() {\n\t\t\t// data provided php side\n\t\t\treturn this.availableGroups.filter(group => group.id !== 'admin' && group.id !== '__nc_internal_recent' && group.id !== 'disabled')\n\t\t},\n\n\t\tlanguages() {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tname: t('settings', 'Common languages'),\n\t\t\t\t\tlanguages: this.settings.languages.commonLanguages,\n\t\t\t\t},\n\t\t\t\t...this.settings.languages.commonLanguages,\n\t\t\t\t{\n\t\t\t\t\tname: t('settings', 'Other languages'),\n\t\t\t\t\tlanguages: this.settings.languages.otherLanguages,\n\t\t\t\t},\n\t\t\t\t...this.settings.languages.otherLanguages,\n\t\t\t]\n\t\t},\n\t},\n\n\tasync beforeMount() {\n\t\tawait this.searchUserManager()\n\t},\n\n\tmounted() {\n\t\t// admins also can assign the system groups\n\t\tif (this.isAdmin || this.isDelegatedAdmin) {\n\t\t\tthis.availableGroups = this.$store.getters.getSortedGroups.filter(group => group.id !== '__nc_internal_recent' && group.id !== 'disabled')\n\t\t} else {\n\t\t\tthis.availableGroups = [...this.$store.getters.getSubAdminGroups]\n\t\t}\n\n\t\tthis.$refs.username?.focus?.()\n\t},\n\n\tmethods: {\n\t\tasync createUser() {\n\t\t\tthis.loading.all = true\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('addUser', {\n\t\t\t\t\tuserid: this.newUser.id,\n\t\t\t\t\tpassword: this.newUser.password,\n\t\t\t\t\tdisplayName: this.newUser.displayName,\n\t\t\t\t\temail: this.newUser.mailAddress,\n\t\t\t\t\tgroups: this.newUser.groups.map(group => group.id),\n\t\t\t\t\tsubadmin: this.newUser.subAdminsGroups.map(group => group.id),\n\t\t\t\t\tquota: this.newUser.quota.id,\n\t\t\t\t\tlanguage: this.newUser.language.code,\n\t\t\t\t\tmanager: this.newUser.manager.id,\n\t\t\t\t})\n\n\t\t\t\tthis.$emit('reset')\n\t\t\t\tthis.$refs.username?.focus?.()\n\t\t\t\tthis.$emit('closing')\n\t\t\t} catch (error) {\n\t\t\t\tthis.loading.all = false\n\t\t\t\tif (error.response && error.response.data && error.response.data.ocs && error.response.data.ocs.meta) {\n\t\t\t\t\tconst statuscode = error.response.data.ocs.meta.statuscode\n\t\t\t\t\tif (statuscode === 102) {\n\t\t\t\t\t\t// wrong username\n\t\t\t\t\t\tthis.$refs.username?.focus?.()\n\t\t\t\t\t} else if (statuscode === 107) {\n\t\t\t\t\t\t// wrong password\n\t\t\t\t\t\tthis.$refs.password?.focus?.()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tasync searchGroups(query, toggleLoading) {\n\t\t\tif (!this.isAdmin && !this.isDelegatedAdmin) {\n\t\t\t\t// managers cannot search for groups\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (this.promise) {\n\t\t\t\tthis.promise.cancel()\n\t\t\t}\n\t\t\ttoggleLoading(true)\n\t\t\ttry {\n\t\t\t\tthis.promise = searchGroups({\n\t\t\t\t\tsearch: query,\n\t\t\t\t\toffset: 0,\n\t\t\t\t\tlimit: 25,\n\t\t\t\t})\n\t\t\t\tconst groups = await this.promise\n\t\t\t\tthis.availableGroups = groups\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error(t('settings', 'Failed to search groups'), { error })\n\t\t\t}\n\t\t\tthis.promise = null\n\t\t\ttoggleLoading(false)\n\t\t},\n\n\t\t/**\n\t\t * Create a new group\n\t\t *\n\t\t * @param {any} group Group\n\t\t * @param {string} group.name Group id\n\t\t */\n\t\tasync createGroup({ name: gid }) {\n\t\t\tthis.loading.groups = true\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('addGroup', gid)\n\t\t\t\tthis.availableGroups.push({ id: gid, name: gid })\n\t\t\t\tthis.newUser.groups.push({ id: gid, name: gid })\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error(t('settings', 'Failed to create group'), { error })\n\t\t\t}\n\t\t\tthis.loading.groups = false\n\t\t},\n\n\t\t/**\n\t\t * Add user to group\n\t\t *\n\t\t * @param {object} group Group object\n\t\t */\n\t\tasync addGroup(group) {\n\t\t\tif (group.isCreating) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (group.canAdd === false) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.newUser.groups.push(group)\n\t\t},\n\n\t\t/**\n\t\t * Validate quota string to make sure it's a valid human file size\n\t\t *\n\t\t * @param {string} quota Quota in readable format '5 GB'\n\t\t * @return {object}\n\t\t */\n\t\tvalidateQuota(quota) {\n\t\t\t// only used for new presets sent through @Tag\n\t\t\tconst validQuota = OC.Util.computerFileSize(quota)\n\t\t\tif (validQuota !== null && validQuota >= 0) {\n\t\t\t\t// unify format output\n\t\t\t\tquota = formatFileSize(parseFileSize(quota))\n\t\t\t\tthis.newUser.quota = { id: quota, label: quota }\n\t\t\t\treturn this.newUser.quota\n\t\t\t}\n\t\t\t// Default is unlimited\n\t\t\tthis.newUser.quota = this.quotaOptions[0]\n\t\t\treturn this.quotaOptions[0]\n\t\t},\n\n\t\tlanguageFilterBy(option, label, search) {\n\t\t\t// Show group header of the language\n\t\t\tif (option.languages) {\n\t\t\t\treturn option.languages.some(\n\t\t\t\t\t({ name }) => name.toLocaleLowerCase().includes(search.toLocaleLowerCase()),\n\t\t\t\t)\n\t\t\t}\n\n\t\t\treturn (label || '').toLocaleLowerCase().includes(search.toLocaleLowerCase())\n\t\t},\n\n\t\tasync searchUserManager(query) {\n\t\t\tawait this.$store.dispatch(\n\t\t\t\t'searchUsers',\n\t\t\t\t{\n\t\t\t\t\toffset: 0,\n\t\t\t\t\tlimit: 10,\n\t\t\t\t\tsearch: query,\n\t\t\t\t},\n\t\t\t).then(response => {\n\t\t\t\tconst users = response?.data ? Object.values(response?.data.ocs.data.users) : []\n\t\t\t\tif (users.length > 0) {\n\t\t\t\t\tthis.possibleManagers = users\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.dialog {\n\t&__form {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t\tpadding: 0 8px;\n\t\tgap: 4px 0;\n\t}\n\n\t&__item {\n\t\twidth: 100%;\n\n\t\t&:not(:focus):not(:active) {\n\t\t\tborder-color: var(--color-border-dark);\n\t\t}\n\t}\n\n\t&__hint {\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tmargin-top: 8px;\n\t\talign-self: flex-start;\n\t}\n\n\t&__label {\n\t\tdisplay: block;\n\t\tpadding: 4px 0;\n\t}\n\n\t&__select {\n\t\twidth: 100%;\n\t}\n\n\t&__managers {\n\t\tmargin-bottom: 12px;\n\t}\n\n\t&__submit {\n\t\tmargin-top: 4px;\n\t\tmargin-bottom: 8px;\n\t}\n\n\t:deep {\n\t\t.dialog__actions {\n\t\t\tmargin: auto;\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!./NewUserDialog.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!./NewUserDialog.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!./NewUserDialog.vue?vue&type=style&index=0&id=70bbf4c9&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./NewUserDialog.vue?vue&type=style&index=0&id=70bbf4c9&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./NewUserDialog.vue?vue&type=template&id=70bbf4c9&scoped=true\"\nimport script from \"./NewUserDialog.vue?vue&type=script&lang=js\"\nexport * from \"./NewUserDialog.vue?vue&type=script&lang=js\"\nimport style0 from \"./NewUserDialog.vue?vue&type=style&index=0&id=70bbf4c9&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 \"70bbf4c9\",\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!./UserListFooter.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!./UserListFooter.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',{staticClass:\"footer\"},[_c('th',{attrs:{\"scope\":\"row\"}},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_vm.t('settings', 'Total rows summary')))])]),_vm._v(\" \"),_c('td',{staticClass:\"footer__cell footer__cell--loading\"},[(_vm.loading)?_c('NcLoadingIcon',{attrs:{\"title\":_vm.t('settings', 'Loading accounts …'),\"size\":32}}):_vm._e()],1),_vm._v(\" \"),_c('td',{staticClass:\"footer__cell footer__cell--count footer__cell--multiline\"},[_c('span',{attrs:{\"aria-describedby\":\"user-count-desc\"}},[_vm._v(_vm._s(_vm.userCount))]),_vm._v(\" \"),_c('span',{staticClass:\"hidden-visually\",attrs:{\"id\":\"user-count-desc\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Scroll to load more rows'))+\"\\n\\t\\t\")])])])\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!./UserListFooter.vue?vue&type=style&index=0&id=db2a7c4e&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./UserListFooter.vue?vue&type=style&index=0&id=db2a7c4e&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserListFooter.vue?vue&type=template&id=db2a7c4e&scoped=true\"\nimport script from \"./UserListFooter.vue?vue&type=script&lang=ts\"\nexport * from \"./UserListFooter.vue?vue&type=script&lang=ts\"\nimport style0 from \"./UserListFooter.vue?vue&type=style&index=0&id=db2a7c4e&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 \"db2a7c4e\",\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!./UserListHeader.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!./UserListHeader.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',{staticClass:\"header\"},[_c('th',{staticClass:\"header__cell header__cell--avatar\",attrs:{\"data-cy-user-list-header-avatar\":\"\",\"scope\":\"col\"}},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Avatar'))+\"\\n\\t\\t\")])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell header__cell--displayname\",attrs:{\"data-cy-user-list-header-displayname\":\"\",\"scope\":\"col\"}},[_c('strong',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Display name'))+\"\\n\\t\\t\")])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell header__cell--username\",attrs:{\"data-cy-user-list-header-username\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Account name'))+\"\\n\\t\\t\")])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell\",class:{ 'header__cell--obfuscated': _vm.hasObfuscated },attrs:{\"data-cy-user-list-header-password\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.passwordLabel))])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell\",attrs:{\"data-cy-user-list-header-email\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Email')))])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell header__cell--large\",attrs:{\"data-cy-user-list-header-groups\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Groups')))])]),_vm._v(\" \"),(_vm.settings.isAdmin || _vm.settings.isDelegatedAdmin)?_c('th',{staticClass:\"header__cell header__cell--large\",attrs:{\"data-cy-user-list-header-subadmins\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Group admin for')))])]):_vm._e(),_vm._v(\" \"),_c('th',{staticClass:\"header__cell\",attrs:{\"data-cy-user-list-header-quota\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Quota')))])]),_vm._v(\" \"),(_vm.showConfig.showLanguages)?_c('th',{staticClass:\"header__cell header__cell--large\",attrs:{\"data-cy-user-list-header-languages\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Language')))])]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showUserBackend || _vm.showConfig.showStoragePath)?_c('th',{staticClass:\"header__cell header__cell--large\",attrs:{\"data-cy-user-list-header-storage-location\":\"\",\"scope\":\"col\"}},[(_vm.showConfig.showUserBackend)?_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Account backend'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showStoragePath)?_c('span',{staticClass:\"header__subtitle\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Storage location'))+\"\\n\\t\\t\")]):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showFirstLogin)?_c('th',{staticClass:\"header__cell\",attrs:{\"data-cy-user-list-header-first-login\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'First login')))])]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showLastLogin)?_c('th',{staticClass:\"header__cell\",attrs:{\"data-cy-user-list-header-last-login\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Last login')))])]):_vm._e(),_vm._v(\" \"),_c('th',{staticClass:\"header__cell header__cell--large header__cell--fill\",attrs:{\"data-cy-user-list-header-manager\":\"\",\"scope\":\"col\"}},[_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Manager')))])]),_vm._v(\" \"),_c('th',{staticClass:\"header__cell header__cell--actions\",attrs:{\"data-cy-user-list-header-actions\":\"\",\"scope\":\"col\"}},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Account actions'))+\"\\n\\t\\t\")])])])\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!./UserListHeader.vue?vue&type=style&index=0&id=5c0f8828&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./UserListHeader.vue?vue&type=style&index=0&id=5c0f8828&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserListHeader.vue?vue&type=template&id=5c0f8828&scoped=true\"\nimport script from \"./UserListHeader.vue?vue&type=script&lang=ts\"\nexport * from \"./UserListHeader.vue?vue&type=script&lang=ts\"\nimport style0 from \"./UserListHeader.vue?vue&type=style&index=0&id=5c0f8828&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 \"5c0f8828\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('tr',{staticClass:\"user-list__row\",attrs:{\"data-cy-user-row\":_vm.user.id}},[_c('td',{staticClass:\"row__cell row__cell--avatar\",attrs:{\"data-cy-user-list-cell-avatar\":\"\"}},[(_vm.isLoadingUser)?_c('NcLoadingIcon',{attrs:{\"name\":_vm.t('settings', 'Loading account …'),\"size\":32}}):(_vm.visible)?_c('NcAvatar',{attrs:{\"disable-menu\":\"\",\"show-user-status\":false,\"user\":_vm.user.id}}):_vm._e()],1),_vm._v(\" \"),_c('td',{staticClass:\"row__cell row__cell--displayname\",attrs:{\"data-cy-user-list-cell-displayname\":\"\"}},[(_vm.editing && _vm.user.backendCapabilities.setDisplayName)?[_c('NcTextField',{ref:\"displayNameField\",staticClass:\"user-row-text-field\",class:{ 'icon-loading-small': _vm.loading.displayName },attrs:{\"data-cy-user-list-input-displayname\":\"\",\"data-loading\":_vm.loading.displayName || undefined,\"trailing-button-label\":_vm.t('settings', 'Submit'),\"show-trailing-button\":true,\"disabled\":_vm.loading.displayName || _vm.isLoadingField,\"label\":_vm.t('settings', 'Change display name'),\"trailing-button-icon\":\"arrowRight\",\"value\":_vm.editedDisplayName,\"autocapitalize\":\"off\",\"autocomplete\":\"off\",\"spellcheck\":\"false\"},on:{\"update:value\":function($event){_vm.editedDisplayName=$event},\"trailing-button-click\":_vm.updateDisplayName}})]:(!_vm.isObfuscated)?_c('strong',{attrs:{\"title\":_vm.user.displayname?.length > 20 ? _vm.user.displayname : null}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.user.displayname)+\"\\n\\t\\t\")]):_vm._e()],2),_vm._v(\" \"),_c('td',{staticClass:\"row__cell row__cell--username\",attrs:{\"data-cy-user-list-cell-username\":\"\"}},[_c('span',{staticClass:\"row__subtitle\"},[_vm._v(_vm._s(_vm.user.id))])]),_vm._v(\" \"),_c('td',{staticClass:\"row__cell\",class:{ 'row__cell--obfuscated': _vm.hasObfuscated },attrs:{\"data-cy-user-list-cell-password\":\"\"}},[(_vm.editing && _vm.settings.canChangePassword && _vm.user.backendCapabilities.setPassword)?[_c('NcTextField',{staticClass:\"user-row-text-field\",class:{'icon-loading-small': _vm.loading.password},attrs:{\"data-cy-user-list-input-password\":\"\",\"data-loading\":_vm.loading.password || undefined,\"trailing-button-label\":_vm.t('settings', 'Submit'),\"show-trailing-button\":true,\"disabled\":_vm.loading.password || _vm.isLoadingField,\"minlength\":_vm.minPasswordLength,\"maxlength\":\"469\",\"label\":_vm.t('settings', 'Set new password'),\"trailing-button-icon\":\"arrowRight\",\"value\":_vm.editedPassword,\"autocapitalize\":\"off\",\"autocomplete\":\"new-password\",\"required\":\"\",\"spellcheck\":\"false\",\"type\":\"password\"},on:{\"update:value\":function($event){_vm.editedPassword=$event},\"trailing-button-click\":_vm.updatePassword}})]:(_vm.isObfuscated)?_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'You do not have permissions to see the details of this account'))+\"\\n\\t\\t\")]):_vm._e()],2),_vm._v(\" \"),_c('td',{staticClass:\"row__cell\",attrs:{\"data-cy-user-list-cell-email\":\"\"}},[(_vm.editing)?[_c('NcTextField',{staticClass:\"user-row-text-field\",class:{'icon-loading-small': _vm.loading.mailAddress},attrs:{\"data-cy-user-list-input-email\":\"\",\"data-loading\":_vm.loading.mailAddress || undefined,\"show-trailing-button\":true,\"trailing-button-label\":_vm.t('settings', 'Submit'),\"label\":_vm.t('settings', 'Set new email address'),\"disabled\":_vm.loading.mailAddress || _vm.isLoadingField,\"trailing-button-icon\":\"arrowRight\",\"value\":_vm.editedMail,\"autocapitalize\":\"off\",\"autocomplete\":\"email\",\"spellcheck\":\"false\",\"type\":\"email\"},on:{\"update:value\":function($event){_vm.editedMail=$event},\"trailing-button-click\":_vm.updateEmail}})]:(!_vm.isObfuscated)?_c('span',{attrs:{\"title\":_vm.user.email?.length > 20 ? _vm.user.email : null}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.user.email)+\"\\n\\t\\t\")]):_vm._e()],2),_vm._v(\" \"),_c('td',{staticClass:\"row__cell row__cell--large row__cell--multiline\",attrs:{\"data-cy-user-list-cell-groups\":\"\"}},[(_vm.editing)?[_c('label',{staticClass:\"hidden-visually\",attrs:{\"for\":'groups' + _vm.uniqueId}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Add account to group'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{attrs:{\"data-cy-user-list-input-groups\":\"\",\"data-loading\":_vm.loading.groups || undefined,\"input-id\":'groups' + _vm.uniqueId,\"close-on-select\":false,\"disabled\":_vm.isLoadingField || _vm.loading.groupsDetails,\"loading\":_vm.loading.groups,\"multiple\":true,\"append-to-body\":false,\"options\":_vm.availableGroups,\"placeholder\":_vm.t('settings', 'Add account to group'),\"taggable\":_vm.settings.isAdmin || _vm.settings.isDelegatedAdmin,\"value\":_vm.userGroups,\"label\":\"name\",\"no-wrap\":true,\"create-option\":(value) => ({ id: value, name: value, isCreating: true })},on:{\"search\":_vm.searchGroups,\"option:created\":_vm.createGroup,\"option:selected\":options => _vm.addUserGroup(options.at(-1)),\"option:deselected\":_vm.removeUserGroup}})]:(!_vm.isObfuscated)?_c('span',{attrs:{\"title\":_vm.userGroupsLabels?.length > 40 ? _vm.userGroupsLabels : null}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.userGroupsLabels)+\"\\n\\t\\t\")]):_vm._e()],2),_vm._v(\" \"),(_vm.settings.isAdmin || _vm.settings.isDelegatedAdmin)?_c('td',{staticClass:\"row__cell row__cell--large row__cell--multiline\",attrs:{\"data-cy-user-list-cell-subadmins\":\"\"}},[(_vm.editing && (_vm.settings.isAdmin || _vm.settings.isDelegatedAdmin))?[_c('label',{staticClass:\"hidden-visually\",attrs:{\"for\":'subadmins' + _vm.uniqueId}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Set account as admin for'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{attrs:{\"data-cy-user-list-input-subadmins\":\"\",\"data-loading\":_vm.loading.subadmins || undefined,\"input-id\":'subadmins' + _vm.uniqueId,\"close-on-select\":false,\"disabled\":_vm.isLoadingField || _vm.loading.subAdminGroupsDetails,\"loading\":_vm.loading.subadmins,\"label\":\"name\",\"append-to-body\":false,\"multiple\":true,\"no-wrap\":true,\"options\":_vm.availableSubAdminGroups,\"placeholder\":_vm.t('settings', 'Set account as admin for'),\"value\":_vm.userSubAdminGroups},on:{\"search\":_vm.searchGroups,\"option:deselected\":_vm.removeUserSubAdmin,\"option:selected\":options => _vm.addUserSubAdmin(options.at(-1))}})]:(!_vm.isObfuscated)?_c('span',{attrs:{\"title\":_vm.userSubAdminGroupsLabels?.length > 40 ? _vm.userSubAdminGroupsLabels : null}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.userSubAdminGroupsLabels)+\"\\n\\t\\t\")]):_vm._e()],2):_vm._e(),_vm._v(\" \"),_c('td',{staticClass:\"row__cell\",attrs:{\"data-cy-user-list-cell-quota\":\"\"}},[(_vm.editing)?[_c('label',{staticClass:\"hidden-visually\",attrs:{\"for\":'quota' + _vm.uniqueId}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Select account quota'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{attrs:{\"close-on-select\":true,\"create-option\":_vm.validateQuota,\"data-cy-user-list-input-quota\":\"\",\"data-loading\":_vm.loading.quota || undefined,\"disabled\":_vm.isLoadingField,\"loading\":_vm.loading.quota,\"append-to-body\":false,\"clearable\":false,\"input-id\":'quota' + _vm.uniqueId,\"options\":_vm.quotaOptions,\"placeholder\":_vm.t('settings', 'Select account quota'),\"taggable\":true},on:{\"option:selected\":_vm.setUserQuota},model:{value:(_vm.editedUserQuota),callback:function ($$v) {_vm.editedUserQuota=$$v},expression:\"editedUserQuota\"}})]:(!_vm.isObfuscated)?[_c('span',{attrs:{\"id\":'quota-progress' + _vm.uniqueId}},[_vm._v(_vm._s(_vm.userQuota)+\" (\"+_vm._s(_vm.usedSpace)+\")\")]),_vm._v(\" \"),_c('NcProgressBar',{staticClass:\"row__progress\",class:{\n\t\t\t\t\t'row__progress--warn': _vm.usedQuota > 80,\n\t\t\t\t},attrs:{\"aria-labelledby\":'quota-progress' + _vm.uniqueId,\"value\":_vm.usedQuota}})]:_vm._e()],2),_vm._v(\" \"),(_vm.showConfig.showLanguages)?_c('td',{staticClass:\"row__cell row__cell--large\",attrs:{\"data-cy-user-list-cell-language\":\"\"}},[(_vm.editing)?[_c('label',{staticClass:\"hidden-visually\",attrs:{\"for\":'language' + _vm.uniqueId}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Set the language'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{attrs:{\"id\":'language' + _vm.uniqueId,\"data-cy-user-list-input-language\":\"\",\"data-loading\":_vm.loading.languages || undefined,\"allow-empty\":false,\"disabled\":_vm.isLoadingField,\"loading\":_vm.loading.languages,\"clearable\":false,\"append-to-body\":false,\"options\":_vm.availableLanguages,\"placeholder\":_vm.t('settings', 'No language set'),\"value\":_vm.userLanguage,\"label\":\"name\"},on:{\"input\":_vm.setUserLanguage}})]:(!_vm.isObfuscated)?_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.userLanguage.name)+\"\\n\\t\\t\")]):_vm._e()],2):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showUserBackend || _vm.showConfig.showStoragePath)?_c('td',{staticClass:\"row__cell row__cell--large\",attrs:{\"data-cy-user-list-cell-storage-location\":\"\"}},[(!_vm.isObfuscated)?[(_vm.showConfig.showUserBackend)?_c('span',[_vm._v(_vm._s(_vm.user.backend))]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showStoragePath)?_c('span',{staticClass:\"row__subtitle\",attrs:{\"title\":_vm.user.storageLocation}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.user.storageLocation)+\"\\n\\t\\t\\t\")]):_vm._e()]:_vm._e()],2):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showFirstLogin)?_c('td',{staticClass:\"row__cell\",attrs:{\"data-cy-user-list-cell-first-login\":\"\"}},[(!_vm.isObfuscated)?_c('span',[_vm._v(_vm._s(_vm.userFirstLogin))]):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showLastLogin)?_c('td',{staticClass:\"row__cell\",attrs:{\"title\":_vm.userLastLoginTooltip,\"data-cy-user-list-cell-last-login\":\"\"}},[(!_vm.isObfuscated)?_c('span',[_vm._v(_vm._s(_vm.userLastLogin))]):_vm._e()]):_vm._e(),_vm._v(\" \"),_c('td',{staticClass:\"row__cell row__cell--large row__cell--fill\",attrs:{\"data-cy-user-list-cell-manager\":\"\"}},[(_vm.editing)?[_c('label',{staticClass:\"hidden-visually\",attrs:{\"for\":'manager' + _vm.uniqueId}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.managerLabel)+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcSelect',{staticClass:\"select--fill\",attrs:{\"data-cy-user-list-input-manager\":\"\",\"data-loading\":_vm.loading.manager || undefined,\"input-id\":'manager' + _vm.uniqueId,\"disabled\":_vm.isLoadingField,\"loading\":_vm.loadingPossibleManagers || _vm.loading.manager,\"options\":_vm.possibleManagers,\"placeholder\":_vm.managerLabel,\"label\":\"displayname\",\"filterable\":false,\"internal-search\":false,\"clearable\":true},on:{\"open\":_vm.searchInitialUserManager,\"search\":_vm.searchUserManager,\"update:model-value\":_vm.updateUserManager},model:{value:(_vm.currentManager),callback:function ($$v) {_vm.currentManager=$$v},expression:\"currentManager\"}})]:(!_vm.isObfuscated)?_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.user.manager)+\"\\n\\t\\t\")]):_vm._e()],2),_vm._v(\" \"),_c('td',{staticClass:\"row__cell row__cell--actions\",attrs:{\"data-cy-user-list-cell-actions\":\"\"}},[(_vm.visible && !_vm.isObfuscated && _vm.canEdit && !_vm.loading.all)?_c('UserRowActions',{attrs:{\"actions\":_vm.userActions,\"disabled\":_vm.isLoadingField,\"edit\":_vm.editing,\"user\":_vm.user},on:{\"update:edit\":_vm.toggleEdit}}):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcActions',{attrs:{\"aria-label\":_vm.t('settings', 'Toggle account actions menu'),\"disabled\":_vm.disabled,\"inline\":1}},[_c('NcActionButton',{attrs:{\"data-cy-user-list-action-toggle-edit\":`${_vm.edit}`,\"disabled\":_vm.disabled},on:{\"click\":_vm.toggleEdit},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{key:_vm.editSvg,attrs:{\"svg\":_vm.editSvg,\"aria-hidden\":\"true\"}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.edit ? _vm.t('settings', 'Done') : _vm.t('settings', 'Edit'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_vm._l((_vm.enabledActions),function({ action, icon, text },index){return _c('NcActionButton',{key:index,attrs:{\"disabled\":_vm.disabled,\"aria-label\":text,\"icon\":icon,\"close-after-click\":\"\"},on:{\"click\":(event) => action(event, { ..._vm.user })},scopedSlots:_vm._u([(_vm.isSvg(icon))?{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"svg\":icon,\"aria-hidden\":\"true\"}})]},proxy:true}:null],null,true)},[_vm._v(\"\\n\\t\\t\"+_vm._s(text)+\"\\n\\t\\t\")])})],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!./UserRowActions.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!./UserRowActions.vue?vue&type=script&lang=ts\"","import {XMLParser, XMLValidator} from 'fast-xml-parser';\n\nexport default function isSvg(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n\t}\n\n\tstring = string.trim();\n\n\tif (string.length === 0) {\n\t\treturn false;\n\t}\n\n\t// Has to be `!==` as it can also return an object with error info.\n\tif (XMLValidator.validate(string) !== true) {\n\t\treturn false;\n\t}\n\n\tlet jsonObject;\n\tconst parser = new XMLParser();\n\n\ttry {\n\t\tjsonObject = parser.parse(string);\n\t} catch {\n\t\treturn false;\n\t}\n\n\tif (!jsonObject) {\n\t\treturn false;\n\t}\n\n\tif (!Object.keys(jsonObject).some(x => x.toLowerCase() === 'svg')) {\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n","import { render, staticRenderFns } from \"./UserRowActions.vue?vue&type=template&id=61782548\"\nimport script from \"./UserRowActions.vue?vue&type=script&lang=ts\"\nexport * from \"./UserRowActions.vue?vue&type=script&lang=ts\"\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 * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { formatFileSize } from '@nextcloud/files'\nimport { useFormatDateTime } from '@nextcloud/vue'\n\nexport default {\n\tprops: {\n\t\tuser: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tsettings: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => ({}),\n\t\t},\n\t\tquotaOptions: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tlanguages: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\texternalActions: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t},\n\tsetup(props) {\n\t\tconst { formattedFullTime } = useFormatDateTime(props.user.firstLoginTimestamp * 1000, {\n\t\t\trelativeTime: false,\n\t\t\tformat: {\n\t\t\t\ttimeStyle: 'short',\n\t\t\t\tdateStyle: 'short',\n\t\t\t},\n\t\t})\n\t\treturn {\n\t\t\tformattedFullTime,\n\t\t}\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tavailableGroups: this.user.groups.map(id => ({ id, name: id })),\n\t\t\tavailableSubAdminGroups: this.user.subadmin.map(id => ({ id, name: id })),\n\t\t\tuserGroups: this.user.groups.map(id => ({ id, name: id })),\n\t\t\tuserSubAdminGroups: this.user.subadmin.map(id => ({ id, name: id })),\n\t\t}\n\t},\n\tcomputed: {\n\t\tshowConfig() {\n\t\t\treturn this.$store.getters.getShowConfig\n\t\t},\n\n\t\t/* QUOTA MANAGEMENT */\n\t\tusedSpace() {\n\t\t\tconst quotaUsed = this.user.quota.used > 0 ? this.user.quota.used : 0\n\t\t\treturn t('settings', '{size} used', { size: formatFileSize(quotaUsed, true) })\n\t\t},\n\n\t\tusedQuota() {\n\t\t\tlet quota = this.user.quota.quota\n\t\t\tif (quota > 0) {\n\t\t\t\tquota = Math.min(100, Math.round(this.user.quota.used / quota * 100))\n\t\t\t} else {\n\t\t\t\tconst usedInGB = this.user.quota.used / (10 * Math.pow(2, 30))\n\t\t\t\t// asymptotic curve approaching 50% at 10GB to visualize used stace with infinite quota\n\t\t\t\tquota = 95 * (1 - (1 / (usedInGB + 1)))\n\t\t\t}\n\t\t\treturn isNaN(quota) ? 0 : quota\n\t\t},\n\n\t\t// Mapping saved values to objects\n\t\tuserQuota() {\n\t\t\tif (this.user.quota.quota >= 0) {\n\t\t\t\t// if value is valid, let's map the quotaOptions or return custom quota\n\t\t\t\tconst humanQuota = formatFileSize(this.user.quota.quota)\n\t\t\t\tconst userQuota = this.quotaOptions.find(quota => quota.id === humanQuota)\n\t\t\t\treturn userQuota || { id: humanQuota, label: humanQuota }\n\t\t\t} else if (this.user.quota.quota === 'default') {\n\t\t\t\t// default quota is replaced by the proper value on load\n\t\t\t\treturn this.quotaOptions[0]\n\t\t\t}\n\t\t\treturn this.quotaOptions[1] // unlimited\n\t\t},\n\n\t\t/* PASSWORD POLICY? */\n\t\tminPasswordLength() {\n\t\t\treturn this.$store.getters.getPasswordPolicyMinLength\n\t\t},\n\n\t\t/* LANGUAGE */\n\t\tuserLanguage() {\n\t\t\tconst availableLanguages = this.languages[0].languages.concat(this.languages[1].languages)\n\t\t\tconst userLang = availableLanguages.find(lang => lang.code === this.user.language)\n\t\t\tif (typeof userLang !== 'object' && this.user.language !== '') {\n\t\t\t\treturn {\n\t\t\t\t\tcode: this.user.language,\n\t\t\t\t\tname: this.user.language,\n\t\t\t\t}\n\t\t\t} else if (this.user.language === '') {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn userLang\n\t\t},\n\n\t\tuserFirstLogin() {\n\t\t\tif (this.user.firstLoginTimestamp > 0) {\n\t\t\t\treturn this.formattedFullTime\n\t\t\t}\n\t\t\tif (this.user.firstLoginTimestamp < 0) {\n\t\t\t\treturn t('settings', 'Unknown')\n\t\t\t}\n\t\t\treturn t('settings', 'Never')\n\t\t},\n\n\t\t/* LAST LOGIN */\n\t\tuserLastLoginTooltip() {\n\t\t\tif (this.user.lastLoginTimestamp > 0) {\n\t\t\t\treturn OC.Util.formatDate(this.user.lastLoginTimestamp * 1000)\n\t\t\t}\n\t\t\treturn ''\n\t\t},\n\t\tuserLastLogin() {\n\t\t\tif (this.user.lastLoginTimestamp > 0) {\n\t\t\t\treturn OC.Util.relativeModifiedDate(this.user.lastLoginTimestamp * 1000)\n\t\t\t}\n\t\t\treturn t('settings', 'Never')\n\t\t},\n\t},\n}\n","<!--\n - SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<tr class=\"user-list__row\"\n\t\t:data-cy-user-row=\"user.id\">\n\t\t<td class=\"row__cell row__cell--avatar\" data-cy-user-list-cell-avatar>\n\t\t\t<NcLoadingIcon v-if=\"isLoadingUser\"\n\t\t\t\t:name=\"t('settings', 'Loading account …')\"\n\t\t\t\t:size=\"32\" />\n\t\t\t<NcAvatar v-else-if=\"visible\"\n\t\t\t\tdisable-menu\n\t\t\t\t:show-user-status=\"false\"\n\t\t\t\t:user=\"user.id\" />\n\t\t</td>\n\n\t\t<td class=\"row__cell row__cell--displayname\" data-cy-user-list-cell-displayname>\n\t\t\t<template v-if=\"editing && user.backendCapabilities.setDisplayName\">\n\t\t\t\t<NcTextField ref=\"displayNameField\"\n\t\t\t\t\tclass=\"user-row-text-field\"\n\t\t\t\t\tdata-cy-user-list-input-displayname\n\t\t\t\t\t:data-loading=\"loading.displayName || undefined\"\n\t\t\t\t\t:trailing-button-label=\"t('settings', 'Submit')\"\n\t\t\t\t\t:class=\"{ 'icon-loading-small': loading.displayName }\"\n\t\t\t\t\t:show-trailing-button=\"true\"\n\t\t\t\t\t:disabled=\"loading.displayName || isLoadingField\"\n\t\t\t\t\t:label=\"t('settings', 'Change display name')\"\n\t\t\t\t\ttrailing-button-icon=\"arrowRight\"\n\t\t\t\t\t:value.sync=\"editedDisplayName\"\n\t\t\t\t\tautocapitalize=\"off\"\n\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\tspellcheck=\"false\"\n\t\t\t\t\t@trailing-button-click=\"updateDisplayName\" />\n\t\t\t</template>\n\t\t\t<strong v-else-if=\"!isObfuscated\"\n\t\t\t\t:title=\"user.displayname?.length > 20 ? user.displayname : null\">\n\t\t\t\t{{ user.displayname }}\n\t\t\t</strong>\n\t\t</td>\n\n\t\t<td class=\"row__cell row__cell--username\" data-cy-user-list-cell-username>\n\t\t\t<span class=\"row__subtitle\">{{ user.id }}</span>\n\t\t</td>\n\n\t\t<td data-cy-user-list-cell-password\n\t\t\tclass=\"row__cell\"\n\t\t\t:class=\"{ 'row__cell--obfuscated': hasObfuscated }\">\n\t\t\t<template v-if=\"editing && settings.canChangePassword && user.backendCapabilities.setPassword\">\n\t\t\t\t<NcTextField class=\"user-row-text-field\"\n\t\t\t\t\tdata-cy-user-list-input-password\n\t\t\t\t\t:data-loading=\"loading.password || undefined\"\n\t\t\t\t\t:trailing-button-label=\"t('settings', 'Submit')\"\n\t\t\t\t\t:class=\"{'icon-loading-small': loading.password}\"\n\t\t\t\t\t:show-trailing-button=\"true\"\n\t\t\t\t\t:disabled=\"loading.password || isLoadingField\"\n\t\t\t\t\t:minlength=\"minPasswordLength\"\n\t\t\t\t\tmaxlength=\"469\"\n\t\t\t\t\t:label=\"t('settings', 'Set new password')\"\n\t\t\t\t\ttrailing-button-icon=\"arrowRight\"\n\t\t\t\t\t:value.sync=\"editedPassword\"\n\t\t\t\t\tautocapitalize=\"off\"\n\t\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t\trequired\n\t\t\t\t\tspellcheck=\"false\"\n\t\t\t\t\ttype=\"password\"\n\t\t\t\t\t@trailing-button-click=\"updatePassword\" />\n\t\t\t</template>\n\t\t\t<span v-else-if=\"isObfuscated\">\n\t\t\t\t{{ t('settings', 'You do not have permissions to see the details of this account') }}\n\t\t\t</span>\n\t\t</td>\n\n\t\t<td class=\"row__cell\" data-cy-user-list-cell-email>\n\t\t\t<template v-if=\"editing\">\n\t\t\t\t<NcTextField class=\"user-row-text-field\"\n\t\t\t\t\t:class=\"{'icon-loading-small': loading.mailAddress}\"\n\t\t\t\t\tdata-cy-user-list-input-email\n\t\t\t\t\t:data-loading=\"loading.mailAddress || undefined\"\n\t\t\t\t\t:show-trailing-button=\"true\"\n\t\t\t\t\t:trailing-button-label=\"t('settings', 'Submit')\"\n\t\t\t\t\t:label=\"t('settings', 'Set new email address')\"\n\t\t\t\t\t:disabled=\"loading.mailAddress || isLoadingField\"\n\t\t\t\t\ttrailing-button-icon=\"arrowRight\"\n\t\t\t\t\t:value.sync=\"editedMail\"\n\t\t\t\t\tautocapitalize=\"off\"\n\t\t\t\t\tautocomplete=\"email\"\n\t\t\t\t\tspellcheck=\"false\"\n\t\t\t\t\ttype=\"email\"\n\t\t\t\t\t@trailing-button-click=\"updateEmail\" />\n\t\t\t</template>\n\t\t\t<span v-else-if=\"!isObfuscated\"\n\t\t\t\t:title=\"user.email?.length > 20 ? user.email : null\">\n\t\t\t\t{{ user.email }}\n\t\t\t</span>\n\t\t</td>\n\n\t\t<td class=\"row__cell row__cell--large row__cell--multiline\" data-cy-user-list-cell-groups>\n\t\t\t<template v-if=\"editing\">\n\t\t\t\t<label class=\"hidden-visually\"\n\t\t\t\t\t:for=\"'groups' + uniqueId\">\n\t\t\t\t\t{{ t('settings', 'Add account to group') }}\n\t\t\t\t</label>\n\t\t\t\t<NcSelect data-cy-user-list-input-groups\n\t\t\t\t\t:data-loading=\"loading.groups || undefined\"\n\t\t\t\t\t:input-id=\"'groups' + uniqueId\"\n\t\t\t\t\t:close-on-select=\"false\"\n\t\t\t\t\t:disabled=\"isLoadingField || loading.groupsDetails\"\n\t\t\t\t\t:loading=\"loading.groups\"\n\t\t\t\t\t:multiple=\"true\"\n\t\t\t\t\t:append-to-body=\"false\"\n\t\t\t\t\t:options=\"availableGroups\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Add account to group')\"\n\t\t\t\t\t:taggable=\"settings.isAdmin || settings.isDelegatedAdmin\"\n\t\t\t\t\t:value=\"userGroups\"\n\t\t\t\t\tlabel=\"name\"\n\t\t\t\t\t:no-wrap=\"true\"\n\t\t\t\t\t:create-option=\"(value) => ({ id: value, name: value, isCreating: true })\"\n\t\t\t\t\t@search=\"searchGroups\"\n\t\t\t\t\t@option:created=\"createGroup\"\n\t\t\t\t\t@option:selected=\"options => addUserGroup(options.at(-1))\"\n\t\t\t\t\t@option:deselected=\"removeUserGroup\" />\n\t\t\t</template>\n\t\t\t<span v-else-if=\"!isObfuscated\"\n\t\t\t\t:title=\"userGroupsLabels?.length > 40 ? userGroupsLabels : null\">\n\t\t\t\t{{ userGroupsLabels }}\n\t\t\t</span>\n\t\t</td>\n\n\t\t<td v-if=\"settings.isAdmin || settings.isDelegatedAdmin\"\n\t\t\tdata-cy-user-list-cell-subadmins\n\t\t\tclass=\"row__cell row__cell--large row__cell--multiline\">\n\t\t\t<template v-if=\"editing && (settings.isAdmin || settings.isDelegatedAdmin)\">\n\t\t\t\t<label class=\"hidden-visually\"\n\t\t\t\t\t:for=\"'subadmins' + uniqueId\">\n\t\t\t\t\t{{ t('settings', 'Set account as admin for') }}\n\t\t\t\t</label>\n\t\t\t\t<NcSelect data-cy-user-list-input-subadmins\n\t\t\t\t\t:data-loading=\"loading.subadmins || undefined\"\n\t\t\t\t\t:input-id=\"'subadmins' + uniqueId\"\n\t\t\t\t\t:close-on-select=\"false\"\n\t\t\t\t\t:disabled=\"isLoadingField || loading.subAdminGroupsDetails\"\n\t\t\t\t\t:loading=\"loading.subadmins\"\n\t\t\t\t\tlabel=\"name\"\n\t\t\t\t\t:append-to-body=\"false\"\n\t\t\t\t\t:multiple=\"true\"\n\t\t\t\t\t:no-wrap=\"true\"\n\t\t\t\t\t:options=\"availableSubAdminGroups\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Set account as admin for')\"\n\t\t\t\t\t:value=\"userSubAdminGroups\"\n\t\t\t\t\t@search=\"searchGroups\"\n\t\t\t\t\t@option:deselected=\"removeUserSubAdmin\"\n\t\t\t\t\t@option:selected=\"options => addUserSubAdmin(options.at(-1))\" />\n\t\t\t</template>\n\t\t\t<span v-else-if=\"!isObfuscated\"\n\t\t\t\t:title=\"userSubAdminGroupsLabels?.length > 40 ? userSubAdminGroupsLabels : null\">\n\t\t\t\t{{ userSubAdminGroupsLabels }}\n\t\t\t</span>\n\t\t</td>\n\n\t\t<td class=\"row__cell\" data-cy-user-list-cell-quota>\n\t\t\t<template v-if=\"editing\">\n\t\t\t\t<label class=\"hidden-visually\"\n\t\t\t\t\t:for=\"'quota' + uniqueId\">\n\t\t\t\t\t{{ t('settings', 'Select account quota') }}\n\t\t\t\t</label>\n\t\t\t\t<NcSelect v-model=\"editedUserQuota\"\n\t\t\t\t\t:close-on-select=\"true\"\n\t\t\t\t\t:create-option=\"validateQuota\"\n\t\t\t\t\tdata-cy-user-list-input-quota\n\t\t\t\t\t:data-loading=\"loading.quota || undefined\"\n\t\t\t\t\t:disabled=\"isLoadingField\"\n\t\t\t\t\t:loading=\"loading.quota\"\n\t\t\t\t\t:append-to-body=\"false\"\n\t\t\t\t\t:clearable=\"false\"\n\t\t\t\t\t:input-id=\"'quota' + uniqueId\"\n\t\t\t\t\t:options=\"quotaOptions\"\n\t\t\t\t\t:placeholder=\"t('settings', 'Select account quota')\"\n\t\t\t\t\t:taggable=\"true\"\n\t\t\t\t\t@option:selected=\"setUserQuota\" />\n\t\t\t</template>\n\t\t\t<template v-else-if=\"!isObfuscated\">\n\t\t\t\t<span :id=\"'quota-progress' + uniqueId\">{{ userQuota }} ({{ usedSpace }})</span>\n\t\t\t\t<NcProgressBar :aria-labelledby=\"'quota-progress' + uniqueId\"\n\t\t\t\t\tclass=\"row__progress\"\n\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t'row__progress--warn': usedQuota > 80,\n\t\t\t\t\t}\"\n\t\t\t\t\t:value=\"usedQuota\" />\n\t\t\t</template>\n\t\t</td>\n\n\t\t<td v-if=\"showConfig.showLanguages\"\n\t\t\tclass=\"row__cell row__cell--large\"\n\t\t\tdata-cy-user-list-cell-language>\n\t\t\t<template v-if=\"editing\">\n\t\t\t\t<label class=\"hidden-visually\"\n\t\t\t\t\t:for=\"'language' + uniqueId\">\n\t\t\t\t\t{{ t('settings', 'Set the language') }}\n\t\t\t\t</label>\n\t\t\t\t<NcSelect :id=\"'language' + uniqueId\"\n\t\t\t\t\tdata-cy-user-list-input-language\n\t\t\t\t\t:data-loading=\"loading.languages || undefined\"\n\t\t\t\t\t:allow-empty=\"false\"\n\t\t\t\t\t:disabled=\"isLoadingField\"\n\t\t\t\t\t:loading=\"loading.languages\"\n\t\t\t\t\t:clearable=\"false\"\n\t\t\t\t\t:append-to-body=\"false\"\n\t\t\t\t\t:options=\"availableLanguages\"\n\t\t\t\t\t:placeholder=\"t('settings', 'No language set')\"\n\t\t\t\t\t:value=\"userLanguage\"\n\t\t\t\t\tlabel=\"name\"\n\t\t\t\t\t@input=\"setUserLanguage\" />\n\t\t\t</template>\n\t\t\t<span v-else-if=\"!isObfuscated\">\n\t\t\t\t{{ userLanguage.name }}\n\t\t\t</span>\n\t\t</td>\n\n\t\t<td v-if=\"showConfig.showUserBackend || showConfig.showStoragePath\"\n\t\t\tdata-cy-user-list-cell-storage-location\n\t\t\tclass=\"row__cell row__cell--large\">\n\t\t\t<template v-if=\"!isObfuscated\">\n\t\t\t\t<span v-if=\"showConfig.showUserBackend\">{{ user.backend }}</span>\n\t\t\t\t<span v-if=\"showConfig.showStoragePath\"\n\t\t\t\t\t:title=\"user.storageLocation\"\n\t\t\t\t\tclass=\"row__subtitle\">\n\t\t\t\t\t{{ user.storageLocation }}\n\t\t\t\t</span>\n\t\t\t</template>\n\t\t</td>\n\n\t\t<td v-if=\"showConfig.showFirstLogin\"\n\t\t\tclass=\"row__cell\"\n\t\t\tdata-cy-user-list-cell-first-login>\n\t\t\t<span v-if=\"!isObfuscated\">{{ userFirstLogin }}</span>\n\t\t</td>\n\n\t\t<td v-if=\"showConfig.showLastLogin\"\n\t\t\t:title=\"userLastLoginTooltip\"\n\t\t\tclass=\"row__cell\"\n\t\t\tdata-cy-user-list-cell-last-login>\n\t\t\t<span v-if=\"!isObfuscated\">{{ userLastLogin }}</span>\n\t\t</td>\n\n\t\t<td class=\"row__cell row__cell--large row__cell--fill\" data-cy-user-list-cell-manager>\n\t\t\t<template v-if=\"editing\">\n\t\t\t\t<label class=\"hidden-visually\"\n\t\t\t\t\t:for=\"'manager' + uniqueId\">\n\t\t\t\t\t{{ managerLabel }}\n\t\t\t\t</label>\n\t\t\t\t<NcSelect v-model=\"currentManager\"\n\t\t\t\t\tclass=\"select--fill\"\n\t\t\t\t\tdata-cy-user-list-input-manager\n\t\t\t\t\t:data-loading=\"loading.manager || undefined\"\n\t\t\t\t\t:input-id=\"'manager' + uniqueId\"\n\t\t\t\t\t:disabled=\"isLoadingField\"\n\t\t\t\t\t:loading=\"loadingPossibleManagers || loading.manager\"\n\t\t\t\t\t:options=\"possibleManagers\"\n\t\t\t\t\t:placeholder=\"managerLabel\"\n\t\t\t\t\tlabel=\"displayname\"\n\t\t\t\t\t:filterable=\"false\"\n\t\t\t\t\t:internal-search=\"false\"\n\t\t\t\t\t:clearable=\"true\"\n\t\t\t\t\t@open=\"searchInitialUserManager\"\n\t\t\t\t\t@search=\"searchUserManager\"\n\t\t\t\t\t@update:model-value=\"updateUserManager\" />\n\t\t\t</template>\n\t\t\t<span v-else-if=\"!isObfuscated\">\n\t\t\t\t{{ user.manager }}\n\t\t\t</span>\n\t\t</td>\n\n\t\t<td class=\"row__cell row__cell--actions\" data-cy-user-list-cell-actions>\n\t\t\t<UserRowActions v-if=\"visible && !isObfuscated && canEdit && !loading.all\"\n\t\t\t\t:actions=\"userActions\"\n\t\t\t\t:disabled=\"isLoadingField\"\n\t\t\t\t:edit=\"editing\"\n\t\t\t\t:user=\"user\"\n\t\t\t\t@update:edit=\"toggleEdit\" />\n\t\t</td>\n\t</tr>\n</template>\n\n<script>\nimport { formatFileSize, parseFileSize } from '@nextcloud/files'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { showSuccess, showError } from '@nextcloud/dialogs'\nimport { confirmPassword } from '@nextcloud/password-confirmation'\n\nimport NcAvatar from '@nextcloud/vue/components/NcAvatar'\nimport NcLoadingIcon from '@nextcloud/vue/components/NcLoadingIcon'\nimport NcProgressBar from '@nextcloud/vue/components/NcProgressBar'\nimport NcSelect from '@nextcloud/vue/components/NcSelect'\nimport NcTextField from '@nextcloud/vue/components/NcTextField'\n\nimport UserRowActions from './UserRowActions.vue'\n\nimport UserRowMixin from '../../mixins/UserRowMixin.js'\nimport { isObfuscated, unlimitedQuota } from '../../utils/userUtils.ts'\nimport { searchGroups, loadUserGroups, loadUserSubAdminGroups } from '../../service/groups.ts'\nimport logger from '../../logger.ts'\n\nexport default {\n\tname: 'UserRow',\n\n\tcomponents: {\n\t\tNcAvatar,\n\t\tNcLoadingIcon,\n\t\tNcProgressBar,\n\t\tNcSelect,\n\t\tNcTextField,\n\t\tUserRowActions,\n\t},\n\n\tmixins: [\n\t\tUserRowMixin,\n\t],\n\n\tprops: {\n\t\tuser: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tvisible: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tusers: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\thasObfuscated: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tquotaOptions: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\tlanguages: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\tsettings: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\texternalActions: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tselectedQuota: false,\n\t\t\trand: Math.random().toString(36).substring(2),\n\t\t\tloadingPossibleManagers: false,\n\t\t\tpossibleManagers: [],\n\t\t\tcurrentManager: '',\n\t\t\tediting: false,\n\t\t\tloading: {\n\t\t\t\tall: false,\n\t\t\t\tdisplayName: false,\n\t\t\t\tpassword: false,\n\t\t\t\tmailAddress: false,\n\t\t\t\tgroups: false,\n\t\t\t\tgroupsDetails: false,\n\t\t\t\tsubAdminGroupsDetails: false,\n\t\t\t\tsubadmins: false,\n\t\t\t\tquota: false,\n\t\t\t\tdelete: false,\n\t\t\t\tdisable: false,\n\t\t\t\tlanguages: false,\n\t\t\t\twipe: false,\n\t\t\t\tmanager: false,\n\t\t\t},\n\t\t\teditedDisplayName: this.user.displayname,\n\t\t\teditedPassword: '',\n\t\t\teditedMail: this.user.email ?? '',\n\t\t\t// Cancelable promise for search groups request\n\t\t\tpromise: null,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tmanagerLabel() {\n\t\t\t// TRANSLATORS This string describes a person's manager in the context of an organization\n\t\t\treturn t('settings', 'Set line manager')\n\t\t},\n\n\t\tisObfuscated() {\n\t\t\treturn isObfuscated(this.user)\n\t\t},\n\n\t\tshowConfig() {\n\t\t\treturn this.$store.getters.getShowConfig\n\t\t},\n\n\t\tisLoadingUser() {\n\t\t\treturn this.loading.delete || this.loading.disable || this.loading.wipe\n\t\t},\n\n\t\tisLoadingField() {\n\t\t\treturn this.loading.delete || this.loading.disable || this.loading.all\n\t\t},\n\n\t\tuniqueId() {\n\t\t\treturn encodeURIComponent(this.user.id + this.rand)\n\t\t},\n\n\t\tuserGroupsLabels() {\n\t\t\treturn this.userGroups\n\t\t\t\t.map(group => group.name ?? group.id)\n\t\t\t\t.join(', ')\n\t\t},\n\n\t\tuserSubAdminGroupsLabels() {\n\t\t\treturn this.userSubAdminGroups\n\t\t\t\t.map(group => group.name ?? group.id)\n\t\t\t\t.join(', ')\n\t\t},\n\n\t\tusedSpace() {\n\t\t\tif (this.user.quota?.used) {\n\t\t\t\treturn t('settings', '{size} used', { size: formatFileSize(this.user.quota?.used) })\n\t\t\t}\n\t\t\treturn t('settings', '{size} used', { size: formatFileSize(0) })\n\t\t},\n\n\t\tcanEdit() {\n\t\t\treturn getCurrentUser().uid !== this.user.id || this.settings.isAdmin || this.settings.isDelegatedAdmin\n\t\t},\n\n\t\tuserQuota() {\n\t\t\tlet quota = this.user.quota?.quota\n\n\t\t\tif (quota === 'default') {\n\t\t\t\tquota = this.settings.defaultQuota\n\t\t\t\tif (quota !== 'none') {\n\t\t\t\t\t// convert to numeric value to match what the server would usually return\n\t\t\t\t\tquota = parseFileSize(quota, true)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// when the default quota is unlimited, the server returns -3 here, map it to \"none\"\n\t\t\tif (quota === 'none' || quota === -3) {\n\t\t\t\treturn t('settings', 'Unlimited')\n\t\t\t} else if (quota >= 0) {\n\t\t\t\treturn formatFileSize(quota)\n\t\t\t}\n\t\t\treturn formatFileSize(0)\n\t\t},\n\n\t\tuserActions() {\n\t\t\tconst actions = [\n\t\t\t\t{\n\t\t\t\t\ticon: 'icon-delete',\n\t\t\t\t\ttext: t('settings', 'Delete account'),\n\t\t\t\t\taction: this.deleteUser,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ticon: 'icon-delete',\n\t\t\t\t\ttext: t('settings', 'Disconnect all devices and delete local data'),\n\t\t\t\t\taction: this.wipeUserDevices,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ticon: this.user.enabled ? 'icon-close' : 'icon-add',\n\t\t\t\t\ttext: this.user.enabled ? t('settings', 'Disable account') : t('settings', 'Enable account'),\n\t\t\t\t\taction: this.enableDisableUser,\n\t\t\t\t},\n\t\t\t]\n\t\t\tif (this.user.email !== null && this.user.email !== '') {\n\t\t\t\tactions.push({\n\t\t\t\t\ticon: 'icon-mail',\n\t\t\t\t\ttext: t('settings', 'Resend welcome email'),\n\t\t\t\t\taction: this.sendWelcomeMail,\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn actions.concat(this.externalActions)\n\t\t},\n\n\t\t// mapping saved values to objects\n\t\teditedUserQuota: {\n\t\t\tget() {\n\t\t\t\tif (this.selectedQuota !== false) {\n\t\t\t\t\treturn this.selectedQuota\n\t\t\t\t}\n\t\t\t\tif (this.settings.defaultQuota !== unlimitedQuota.id && parseFileSize(this.settings.defaultQuota, true) >= 0) {\n\t\t\t\t\t// if value is valid, let's map the quotaOptions or return custom quota\n\t\t\t\t\treturn { id: this.settings.defaultQuota, label: this.settings.defaultQuota }\n\t\t\t\t}\n\t\t\t\treturn unlimitedQuota // unlimited\n\t\t\t},\n\t\t\tset(quota) {\n\t\t\t\tthis.selectedQuota = quota\n\t\t\t},\n\t\t},\n\n\t\tavailableLanguages() {\n\t\t\treturn this.languages[0].languages.concat(this.languages[1].languages)\n\t\t},\n\t},\n\tasync beforeMount() {\n\t\tif (this.user.manager) {\n\t\t\tawait this.initManager(this.user.manager)\n\t\t}\n\t},\n\n\tmethods: {\n\t\tasync wipeUserDevices() {\n\t\t\tconst userid = this.user.id\n\t\t\tawait confirmPassword()\n\t\t\tOC.dialogs.confirmDestructive(\n\t\t\t\tt('settings', 'In case of lost device or exiting the organization, this can remotely wipe the Nextcloud data from all devices associated with {userid}. Only works if the devices are connected to the internet.', { userid }),\n\t\t\t\tt('settings', 'Remote wipe of devices'),\n\t\t\t\t{\n\t\t\t\t\ttype: OC.dialogs.YES_NO_BUTTONS,\n\t\t\t\t\tconfirm: t('settings', 'Wipe {userid}\\'s devices', { userid }),\n\t\t\t\t\tconfirmClasses: 'error',\n\t\t\t\t\tcancel: t('settings', 'Cancel'),\n\t\t\t\t},\n\t\t\t\t(result) => {\n\t\t\t\t\tif (result) {\n\t\t\t\t\t\tthis.loading.wipe = true\n\t\t\t\t\t\tthis.loading.all = true\n\t\t\t\t\t\tthis.$store.dispatch('wipeUserDevices', userid)\n\t\t\t\t\t\t\t.then(() => showSuccess(t('settings', 'Wiped {userid}\\'s devices', { userid })), { timeout: 2000 })\n\t\t\t\t\t\t\t.finally(() => {\n\t\t\t\t\t\t\t\tthis.loading.wipe = false\n\t\t\t\t\t\t\t\tthis.loading.all = false\n\t\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\ttrue,\n\t\t\t)\n\t\t},\n\n\t\tfilterManagers(managers) {\n\t\t\treturn managers.filter((manager) => manager.id !== this.user.id)\n\t\t},\n\n\t\tasync initManager(userId) {\n\t\t\tawait this.$store.dispatch('getUser', userId).then(response => {\n\t\t\t\tthis.currentManager = response?.data.ocs.data\n\t\t\t})\n\t\t},\n\n\t\tasync searchInitialUserManager() {\n\t\t\tthis.loadingPossibleManagers = true\n\t\t\tawait this.searchUserManager()\n\t\t\tthis.loadingPossibleManagers = false\n\t\t},\n\n\t\tasync loadGroupsDetails() {\n\t\t\tthis.loading.groups = true\n\t\t\tthis.loading.groupsDetails = true\n\t\t\ttry {\n\t\t\t\tconst groups = await loadUserGroups({ userId: this.user.id })\n\t\t\t\tthis.availableGroups = this.availableGroups.map(availableGroup => groups.find(group => group.id === availableGroup.id) ?? availableGroup)\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error(t('settings', 'Failed to load groups with details'), { error })\n\t\t\t}\n\t\t\tthis.loading.groups = false\n\t\t\tthis.loading.groupsDetails = false\n\t\t},\n\n\t\tasync loadSubAdminGroupsDetails() {\n\t\t\tthis.loading.subadmins = true\n\t\t\tthis.loading.subAdminGroupsDetails = true\n\t\t\ttry {\n\t\t\t\tconst groups = await loadUserSubAdminGroups({ userId: this.user.id })\n\t\t\t\tthis.availableSubAdminGroups = this.availableSubAdminGroups.map(availableGroup => groups.find(group => group.id === availableGroup.id) ?? availableGroup)\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error(t('settings', 'Failed to load sub admin groups with details'), { error })\n\t\t\t}\n\t\t\tthis.loading.subadmins = false\n\t\t\tthis.loading.subAdminGroupsDetails = false\n\t\t},\n\n\t\tasync searchGroups(query, toggleLoading) {\n\t\t\tif (query === '') {\n\t\t\t\treturn // Prevent unexpected search behaviour e.g. on option:created\n\t\t\t}\n\t\t\tif (this.promise) {\n\t\t\t\tthis.promise.cancel()\n\t\t\t}\n\t\t\ttoggleLoading(true)\n\t\t\ttry {\n\t\t\t\tthis.promise = await searchGroups({\n\t\t\t\t\tsearch: query,\n\t\t\t\t\toffset: 0,\n\t\t\t\t\tlimit: 25,\n\t\t\t\t})\n\t\t\t\tconst groups = await this.promise\n\t\t\t\tthis.availableGroups = groups\n\t\t\t\tthis.availableSubAdminGroups = groups.filter(group => group.id !== 'admin')\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error(t('settings', 'Failed to search groups'), { error })\n\t\t\t}\n\t\t\tthis.promise = null\n\t\t\ttoggleLoading(false)\n\t\t},\n\n\t\tasync searchUserManager(query) {\n\t\t\tawait this.$store.dispatch('searchUsers', { offset: 0, limit: 10, search: query }).then(response => {\n\t\t\t\tconst users = response?.data ? this.filterManagers(Object.values(response?.data.ocs.data.users)) : []\n\t\t\t\tif (users.length > 0) {\n\t\t\t\t\tthis.possibleManagers = users\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\n\t\tasync updateUserManager() {\n\t\t\tthis.loading.manager = true\n\n\t\t\t// Store the current manager before making changes\n\t\t\tconst previousManager = this.user.manager\n\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('setUserData', {\n\t\t\t\t\tuserid: this.user.id,\n\t\t\t\t\tkey: 'manager',\n\t\t\t\t\tvalue: this.currentManager ? this.currentManager.id : '',\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\t// TRANSLATORS This string describes a line manager in the context of an organization\n\t\t\t\tshowError(t('settings', 'Failed to update line manager'))\n\t\t\t\tlogger.error('Failed to update manager:', { error })\n\n\t\t\t\t// Revert to the previous manager in the UI on error\n\t\t\t\tthis.currentManager = previousManager\n\t\t\t} finally {\n\t\t\t\tthis.loading.manager = false\n\t\t\t}\n\t\t},\n\n\t\tasync deleteUser() {\n\t\t\tconst userid = this.user.id\n\t\t\tawait confirmPassword()\n\t\t\tOC.dialogs.confirmDestructive(\n\t\t\t\tt('settings', 'Fully delete {userid}\\'s account including all their personal files, app data, etc.', { userid }),\n\t\t\t\tt('settings', 'Account deletion'),\n\t\t\t\t{\n\t\t\t\t\ttype: OC.dialogs.YES_NO_BUTTONS,\n\t\t\t\t\tconfirm: t('settings', 'Delete {userid}\\'s account', { userid }),\n\t\t\t\t\tconfirmClasses: 'error',\n\t\t\t\t\tcancel: t('settings', 'Cancel'),\n\t\t\t\t},\n\t\t\t\t(result) => {\n\t\t\t\t\tif (result) {\n\t\t\t\t\t\tthis.loading.delete = true\n\t\t\t\t\t\tthis.loading.all = true\n\t\t\t\t\t\treturn this.$store.dispatch('deleteUser', userid)\n\t\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\t\tthis.loading.delete = false\n\t\t\t\t\t\t\t\tthis.loading.all = false\n\t\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\ttrue,\n\t\t\t)\n\t\t},\n\n\t\tenableDisableUser() {\n\t\t\tthis.loading.delete = true\n\t\t\tthis.loading.all = true\n\t\t\tconst userid = this.user.id\n\t\t\tconst enabled = !this.user.enabled\n\t\t\treturn this.$store.dispatch('enableDisableUser', {\n\t\t\t\tuserid,\n\t\t\t\tenabled,\n\t\t\t})\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.loading.delete = false\n\t\t\t\t\tthis.loading.all = false\n\t\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Set user displayName\n\t\t */\n\t\tasync updateDisplayName() {\n\t\t\tthis.loading.displayName = true\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('setUserData', {\n\t\t\t\t\tuserid: this.user.id,\n\t\t\t\t\tkey: 'displayname',\n\t\t\t\t\tvalue: this.editedDisplayName,\n\t\t\t\t})\n\n\t\t\t\tif (this.editedDisplayName === this.user.displayname) {\n\t\t\t\t\tshowSuccess(t('settings', 'Display name was successfully changed'))\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tthis.loading.displayName = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Set user password\n\t\t */\n\t\tasync updatePassword() {\n\t\t\tthis.loading.password = true\n\t\t\tif (this.editedPassword.length === 0) {\n\t\t\t\tshowError(t('settings', \"Password can't be empty\"))\n\t\t\t\tthis.loading.password = false\n\t\t\t} else {\n\t\t\t\ttry {\n\t\t\t\t\tawait this.$store.dispatch('setUserData', {\n\t\t\t\t\t\tuserid: this.user.id,\n\t\t\t\t\t\tkey: 'password',\n\t\t\t\t\t\tvalue: this.editedPassword,\n\t\t\t\t\t})\n\t\t\t\t\tthis.editedPassword = ''\n\t\t\t\t\tshowSuccess(t('settings', 'Password was successfully changed'))\n\t\t\t\t} finally {\n\t\t\t\t\tthis.loading.password = false\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Set user mailAddress\n\t\t */\n\t\tasync updateEmail() {\n\t\t\tthis.loading.mailAddress = true\n\t\t\tif (this.editedMail === '') {\n\t\t\t\tshowError(t('settings', \"Email can't be empty\"))\n\t\t\t\tthis.loading.mailAddress = false\n\t\t\t\tthis.editedMail = this.user.email\n\t\t\t} else {\n\t\t\t\ttry {\n\t\t\t\t\tawait this.$store.dispatch('setUserData', {\n\t\t\t\t\t\tuserid: this.user.id,\n\t\t\t\t\t\tkey: 'email',\n\t\t\t\t\t\tvalue: this.editedMail,\n\t\t\t\t\t})\n\n\t\t\t\t\tif (this.editedMail === this.user.email) {\n\t\t\t\t\t\tshowSuccess(t('settings', 'Email was successfully changed'))\n\t\t\t\t\t}\n\t\t\t\t} finally {\n\t\t\t\t\tthis.loading.mailAddress = false\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Create a new group and add user to it\n\t\t *\n\t\t * @param {string} gid Group id\n\t\t */\n\t\tasync createGroup({ name: gid }) {\n\t\t\tthis.loading.groups = true\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('addGroup', gid)\n\t\t\t\tthis.availableGroups.push({ id: gid, name: gid })\n\t\t\t\tthis.availableSubAdminGroups.push({ id: gid, name: gid })\n\t\t\t\tconst userid = this.user.id\n\t\t\t\tawait this.$store.dispatch('addUserGroup', { userid, gid })\n\t\t\t\tthis.userGroups.push({ id: gid, name: gid })\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error(t('settings', 'Failed to create group'), { error })\n\t\t\t}\n\t\t\tthis.loading.groups = false\n\t\t},\n\n\t\t/**\n\t\t * Add user to group\n\t\t *\n\t\t * @param {object} group Group object\n\t\t */\n\t\tasync addUserGroup(group) {\n\t\t\tif (group.isCreating) {\n\t\t\t\t// This is NcSelect's internal value for a new inputted group name\n\t\t\t\t// Ignore\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst userid = this.user.id\n\t\t\tconst gid = group.id\n\t\t\tif (group.canAdd === false) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.loading.groups = true\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('addUserGroup', { userid, gid })\n\t\t\t\tthis.userGroups.push(group)\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error)\n\t\t\t}\n\t\t\tthis.loading.groups = false\n\t\t},\n\n\t\t/**\n\t\t * Remove user from group\n\t\t *\n\t\t * @param {object} group Group object\n\t\t */\n\t\tasync removeUserGroup(group) {\n\t\t\tif (group.canRemove === false) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tthis.loading.groups = true\n\t\t\tconst userid = this.user.id\n\t\t\tconst gid = group.id\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('removeUserGroup', {\n\t\t\t\t\tuserid,\n\t\t\t\t\tgid,\n\t\t\t\t})\n\t\t\t\tthis.userGroups = this.userGroups.filter(group => group.id !== gid)\n\t\t\t\tthis.loading.groups = false\n\t\t\t\t// remove user from current list if current list is the removed group\n\t\t\t\tif (this.$route.params.selectedGroup === gid) {\n\t\t\t\t\tthis.$store.commit('deleteUser', userid)\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\tthis.loading.groups = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Add user to group\n\t\t *\n\t\t * @param {object} group Group object\n\t\t */\n\t\tasync addUserSubAdmin(group) {\n\t\t\tthis.loading.subadmins = true\n\t\t\tconst userid = this.user.id\n\t\t\tconst gid = group.id\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('addUserSubAdmin', {\n\t\t\t\t\tuserid,\n\t\t\t\t\tgid,\n\t\t\t\t})\n\t\t\t\tthis.userSubAdminGroups.push(group)\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error)\n\t\t\t}\n\t\t\tthis.loading.subadmins = false\n\t\t},\n\n\t\t/**\n\t\t * Remove user from group\n\t\t *\n\t\t * @param {object} group Group object\n\t\t */\n\t\tasync removeUserSubAdmin(group) {\n\t\t\tthis.loading.subadmins = true\n\t\t\tconst userid = this.user.id\n\t\t\tconst gid = group.id\n\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('removeUserSubAdmin', {\n\t\t\t\t\tuserid,\n\t\t\t\t\tgid,\n\t\t\t\t})\n\t\t\t\tthis.userSubAdminGroups = this.userSubAdminGroups.filter(group => group.id !== gid)\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tthis.loading.subadmins = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Dispatch quota set request\n\t\t *\n\t\t * @param {string | object} quota Quota in readable format '5 GB' or Object {id: '5 GB', label: '5GB'}\n\t\t * @return {string}\n\t\t */\n\t\tasync setUserQuota(quota = 'none') {\n\t\t\t// Make sure correct label is set for unlimited quota\n\t\t\tif (quota === 'none') {\n\t\t\t\tquota = unlimitedQuota\n\t\t\t}\n\t\t\tthis.loading.quota = true\n\n\t\t\t// ensure we only send the preset id\n\t\t\tquota = quota.id ? quota.id : quota\n\n\t\t\ttry {\n\t\t\t\t// If human readable format, convert to raw float format\n\t\t\t\t// Else just send the raw string\n\t\t\t\tconst value = (parseFileSize(quota, true) || quota).toString()\n\t\t\t\tawait this.$store.dispatch('setUserData', {\n\t\t\t\t\tuserid: this.user.id,\n\t\t\t\t\tkey: 'quota',\n\t\t\t\t\tvalue,\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tthis.loading.quota = false\n\t\t\t}\n\t\t\treturn quota\n\t\t},\n\n\t\t/**\n\t\t * Validate quota string to make sure it's a valid human file size\n\t\t *\n\t\t * @param {string | object} quota Quota in readable format '5 GB' or Object {id: '5 GB', label: '5GB'}\n\t\t * @return {object} The validated quota object or unlimited quota if input is invalid\n\t\t */\n\t\tvalidateQuota(quota) {\n\t\t\tif (typeof quota === 'object') {\n\t\t\t\tquota = quota?.id || quota.label\n\t\t\t}\n\t\t\t// only used for new presets sent through @Tag\n\t\t\tconst validQuota = parseFileSize(quota, true)\n\t\t\tif (validQuota === null) {\n\t\t\t\treturn unlimitedQuota\n\t\t\t} else {\n\t\t\t\t// unify format output\n\t\t\t\tquota = formatFileSize(parseFileSize(quota, true))\n\t\t\t\treturn { id: quota, label: quota }\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Dispatch language set request\n\t\t *\n\t\t * @param {object} lang language object {code:'en', name:'English'}\n\t\t * @return {object}\n\t\t */\n\t\tasync setUserLanguage(lang) {\n\t\t\tthis.loading.languages = true\n\t\t\t// ensure we only send the preset id\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('setUserData', {\n\t\t\t\t\tuserid: this.user.id,\n\t\t\t\t\tkey: 'language',\n\t\t\t\t\tvalue: lang.code,\n\t\t\t\t})\n\t\t\t\tthis.loading.languages = false\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error)\n\t\t\t}\n\t\t\treturn lang\n\t\t},\n\n\t\t/**\n\t\t * Dispatch new welcome mail request\n\t\t */\n\t\tsendWelcomeMail() {\n\t\t\tthis.loading.all = true\n\t\t\tthis.$store.dispatch('sendWelcomeMail', this.user.id)\n\t\t\t\t.then(() => showSuccess(t('settings', 'Welcome mail sent!'), { timeout: 2000 }))\n\t\t\t\t.finally(() => {\n\t\t\t\t\tthis.loading.all = false\n\t\t\t\t})\n\t\t},\n\n\t\tasync toggleEdit() {\n\t\t\tthis.editing = !this.editing\n\t\t\tif (this.editing) {\n\t\t\t\tawait this.$nextTick()\n\t\t\t\tthis.$refs.displayNameField?.$refs?.inputField?.$refs?.input?.focus()\n\t\t\t\tthis.loadGroupsDetails()\n\t\t\t\tthis.loadSubAdminGroupsDetails()\n\t\t\t}\n\t\t\tif (this.editedDisplayName !== this.user.displayname) {\n\t\t\t\tthis.editedDisplayName = this.user.displayname\n\t\t\t} else if (this.editedMail !== this.user.email) {\n\t\t\t\tthis.editedMail = this.user.email ?? ''\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@use './shared/styles';\n\n.user-list__row {\n\t@include styles.row;\n\n\t&:hover {\n\t\tbackground-color: var(--color-background-hover);\n\n\t\t.row__cell:not(.row__cell--actions) {\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t}\n\t}\n\n\t// Limit width of select in fill cell\n\t.select--fill {\n\t\tmax-width: calc(var(--cell-width-large) - (2 * var(--cell-padding)));\n\t}\n}\n\n.row {\n\t@include styles.cell;\n\n\t&__cell {\n\t\tborder-bottom: 1px solid var(--color-border);\n\n\t\t:deep {\n\t\t\t.v-select.select {\n\t\t\t\tmin-width: var(--cell-min-width);\n\t\t\t}\n\t\t}\n\t}\n\n\t&__progress {\n\t\tmargin-top: 4px;\n\n\t\t&--warn {\n\t\t\t&::-moz-progress-bar {\n\t\t\t\tbackground: var(--color-warning) !important;\n\t\t\t}\n\t\t\t&::-webkit-progress-value {\n\t\t\t\tbackground: var(--color-warning) !important;\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!./UserRow.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!./UserRow.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!./UserRow.vue?vue&type=style&index=0&id=7faa9864&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./UserRow.vue?vue&type=style&index=0&id=7faa9864&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserRow.vue?vue&type=template&id=7faa9864&scoped=true\"\nimport script from \"./UserRow.vue?vue&type=script&lang=js\"\nexport * from \"./UserRow.vue?vue&type=script&lang=js\"\nimport style0 from \"./UserRow.vue?vue&type=style&index=0&id=7faa9864&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 \"7faa9864\",\n null\n \n)\n\nexport default component.exports","<!--\n - SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<Fragment>\n\t\t<NewUserDialog v-if=\"showConfig.showNewUserForm\"\n\t\t\t:loading=\"loading\"\n\t\t\t:new-user=\"newUser\"\n\t\t\t:quota-options=\"quotaOptions\"\n\t\t\t@reset=\"resetForm\"\n\t\t\t@closing=\"closeDialog\" />\n\n\t\t<NcEmptyContent v-if=\"filteredUsers.length === 0\"\n\t\t\tclass=\"empty\"\n\t\t\t:name=\"isInitialLoad && loading.users ? null : t('settings', 'No accounts')\">\n\t\t\t<template #icon>\n\t\t\t\t<NcLoadingIcon v-if=\"isInitialLoad && loading.users\"\n\t\t\t\t\t:name=\"t('settings', 'Loading accounts …')\"\n\t\t\t\t\t:size=\"64\" />\n\t\t\t\t<NcIconSvgWrapper v-else :path=\"mdiAccountGroup\" :size=\"64\" />\n\t\t\t</template>\n\t\t</NcEmptyContent>\n\n\t\t<VirtualList v-else\n\t\t\t:data-component=\"UserRow\"\n\t\t\t:data-sources=\"filteredUsers\"\n\t\t\tdata-key=\"id\"\n\t\t\tdata-cy-user-list\n\t\t\t:item-height=\"rowHeight\"\n\t\t\t:style=\"style\"\n\t\t\t:extra-props=\"{\n\t\t\t\tusers,\n\t\t\t\tsettings,\n\t\t\t\thasObfuscated,\n\t\t\t\tquotaOptions,\n\t\t\t\tlanguages,\n\t\t\t\texternalActions,\n\t\t\t}\"\n\t\t\t@scroll-end=\"handleScrollEnd\">\n\t\t\t<template #before>\n\t\t\t\t<caption class=\"hidden-visually\">\n\t\t\t\t\t{{ t('settings', 'List of accounts. This list is not fully rendered for performance reasons. The accounts will be rendered as you navigate through the list.') }}\n\t\t\t\t</caption>\n\t\t\t</template>\n\n\t\t\t<template #header>\n\t\t\t\t<UserListHeader :has-obfuscated=\"hasObfuscated\" />\n\t\t\t</template>\n\n\t\t\t<template #footer>\n\t\t\t\t<UserListFooter :loading=\"loading.users\"\n\t\t\t\t\t:filtered-users=\"filteredUsers\" />\n\t\t\t</template>\n\t\t</VirtualList>\n\t</Fragment>\n</template>\n\n<script>\nimport { mdiAccountGroup } from '@mdi/js'\nimport { showError } from '@nextcloud/dialogs'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\nimport { Fragment } from 'vue-frag'\n\nimport Vue from 'vue'\nimport NcEmptyContent from '@nextcloud/vue/components/NcEmptyContent'\nimport NcIconSvgWrapper from '@nextcloud/vue/components/NcIconSvgWrapper'\nimport NcLoadingIcon from '@nextcloud/vue/components/NcLoadingIcon'\n\nimport VirtualList from './Users/VirtualList.vue'\nimport NewUserDialog from './Users/NewUserDialog.vue'\nimport UserListFooter from './Users/UserListFooter.vue'\nimport UserListHeader from './Users/UserListHeader.vue'\nimport UserRow from './Users/UserRow.vue'\n\nimport { defaultQuota, isObfuscated, unlimitedQuota } from '../utils/userUtils.ts'\nimport logger from '../logger.ts'\n\nconst newUser = Object.freeze({\n\tid: '',\n\tdisplayName: '',\n\tpassword: '',\n\tmailAddress: '',\n\tgroups: [],\n\tmanager: '',\n\tsubAdminsGroups: [],\n\tquota: defaultQuota,\n\tlanguage: {\n\t\tcode: 'en',\n\t\tname: t('settings', 'Default language'),\n\t},\n})\n\nexport default {\n\tname: 'UserList',\n\n\tcomponents: {\n\t\tFragment,\n\t\tNcEmptyContent,\n\t\tNcIconSvgWrapper,\n\t\tNcLoadingIcon,\n\t\tNewUserDialog,\n\t\tUserListFooter,\n\t\tUserListHeader,\n\t\tVirtualList,\n\t},\n\n\tprops: {\n\t\tselectedGroup: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\texternalActions: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t},\n\n\tsetup() {\n\t\t// non reactive properties\n\t\treturn {\n\t\t\tmdiAccountGroup,\n\t\t\trowHeight: 55,\n\n\t\t\tUserRow,\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloading: {\n\t\t\t\tall: false,\n\t\t\t\tgroups: false,\n\t\t\t\tusers: false,\n\t\t\t},\n\t\t\tnewUser: { ...newUser },\n\t\t\tisInitialLoad: true,\n\t\t\tsearchQuery: '',\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tshowConfig() {\n\t\t\treturn this.$store.getters.getShowConfig\n\t\t},\n\n\t\tsettings() {\n\t\t\treturn this.$store.getters.getServerData\n\t\t},\n\n\t\tstyle() {\n\t\t\treturn {\n\t\t\t\t'--row-height': `${this.rowHeight}px`,\n\t\t\t}\n\t\t},\n\n\t\thasObfuscated() {\n\t\t\treturn this.filteredUsers.some(user => isObfuscated(user))\n\t\t},\n\n\t\tusers() {\n\t\t\treturn this.$store.getters.getUsers\n\t\t},\n\n\t\tfilteredUsers() {\n\t\t\tif (this.selectedGroup === 'disabled') {\n\t\t\t\treturn this.users.filter(user => user.enabled === false)\n\t\t\t}\n\t\t\treturn this.users.filter(user => user.enabled !== false)\n\t\t},\n\n\t\tgroups() {\n\t\t\treturn this.$store.getters.getSortedGroups\n\t\t\t\t.filter(group => group.id !== '__nc_internal_recent' && group.id !== 'disabled')\n\t\t},\n\n\t\tquotaOptions() {\n\t\t\t// convert the preset array into objects\n\t\t\tconst quotaPreset = this.settings.quotaPreset.reduce((acc, cur) => acc.concat({\n\t\t\t\tid: cur,\n\t\t\t\tlabel: cur,\n\t\t\t}), [])\n\t\t\t// add default presets\n\t\t\tif (this.settings.allowUnlimitedQuota) {\n\t\t\t\tquotaPreset.unshift(unlimitedQuota)\n\t\t\t}\n\t\t\tquotaPreset.unshift(defaultQuota)\n\t\t\treturn quotaPreset\n\t\t},\n\n\t\tusersOffset() {\n\t\t\treturn this.$store.getters.getUsersOffset\n\t\t},\n\n\t\tusersLimit() {\n\t\t\treturn this.$store.getters.getUsersLimit\n\t\t},\n\n\t\tdisabledUsersOffset() {\n\t\t\treturn this.$store.getters.getDisabledUsersOffset\n\t\t},\n\n\t\tdisabledUsersLimit() {\n\t\t\treturn this.$store.getters.getDisabledUsersLimit\n\t\t},\n\n\t\tusersCount() {\n\t\t\treturn this.users.length\n\t\t},\n\n\t\t/* LANGUAGES */\n\t\tlanguages() {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tlabel: t('settings', 'Common languages'),\n\t\t\t\t\tlanguages: this.settings.languages.commonLanguages,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: t('settings', 'Other languages'),\n\t\t\t\t\tlanguages: this.settings.languages.otherLanguages,\n\t\t\t\t},\n\t\t\t]\n\t\t},\n\t},\n\n\twatch: {\n\t\t// watch url change and group select\n\t\tasync selectedGroup(val) {\n\t\t\tthis.isInitialLoad = true\n\t\t\t// if selected is the disabled group but it's empty\n\t\t\tawait this.redirectIfDisabled()\n\t\t\tthis.$store.commit('resetUsers')\n\t\t\tawait this.loadUsers()\n\t\t\tthis.setNewUserDefaultGroup(val)\n\t\t},\n\n\t\tfilteredUsers(filteredUsers) {\n\t\t\tlogger.debug(`${filteredUsers.length} filtered user(s)`)\n\t\t},\n\t},\n\n\tasync created() {\n\t\tawait this.loadUsers()\n\t},\n\n\tasync mounted() {\n\t\tif (!this.settings.canChangePassword) {\n\t\t\tOC.Notification.showTemporary(t('settings', 'Password change is disabled because the master key is disabled'))\n\t\t}\n\n\t\t/**\n\t\t * Reset and init new user form\n\t\t */\n\t\tthis.resetForm()\n\n\t\t/**\n\t\t * Register search\n\t\t */\n\t\tsubscribe('nextcloud:unified-search.search', this.search)\n\t\tsubscribe('nextcloud:unified-search.reset', this.resetSearch)\n\n\t\t/**\n\t\t * If disabled group but empty, redirect\n\t\t */\n\t\tawait this.redirectIfDisabled()\n\t},\n\n\tbeforeDestroy() {\n\t\tunsubscribe('nextcloud:unified-search.search', this.search)\n\t\tunsubscribe('nextcloud:unified-search.reset', this.resetSearch)\n\t},\n\n\tmethods: {\n\t\tasync handleScrollEnd() {\n\t\t\tawait this.loadUsers()\n\t\t},\n\n\t\tasync loadUsers() {\n\t\t\tthis.loading.users = true\n\t\t\ttry {\n\t\t\t\tif (this.selectedGroup === 'disabled') {\n\t\t\t\t\tawait this.$store.dispatch('getDisabledUsers', {\n\t\t\t\t\t\toffset: this.disabledUsersOffset,\n\t\t\t\t\t\tlimit: this.disabledUsersLimit,\n\t\t\t\t\t\tsearch: this.searchQuery,\n\t\t\t\t\t})\n\t\t\t\t} else if (this.selectedGroup === '__nc_internal_recent') {\n\t\t\t\t\tawait this.$store.dispatch('getRecentUsers', {\n\t\t\t\t\t\toffset: this.usersOffset,\n\t\t\t\t\t\tlimit: this.usersLimit,\n\t\t\t\t\t\tsearch: this.searchQuery,\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\tawait this.$store.dispatch('getUsers', {\n\t\t\t\t\t\toffset: this.usersOffset,\n\t\t\t\t\t\tlimit: this.usersLimit,\n\t\t\t\t\t\tgroup: this.selectedGroup,\n\t\t\t\t\t\tsearch: this.searchQuery,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tlogger.debug(`${this.users.length} total user(s) loaded`)\n\t\t\t} catch (error) {\n\t\t\t\tlogger.error('Failed to load accounts', { error })\n\t\t\t\tshowError('Failed to load accounts')\n\t\t\t}\n\t\t\tthis.loading.users = false\n\t\t\tthis.isInitialLoad = false\n\t\t},\n\n\t\tcloseDialog() {\n\t\t\tthis.$store.commit('setShowConfig', {\n\t\t\t\tkey: 'showNewUserForm',\n\t\t\t\tvalue: false,\n\t\t\t})\n\t\t},\n\n\t\tasync search({ query }) {\n\t\t\tthis.searchQuery = query\n\t\t\tthis.$store.commit('resetUsers')\n\t\t\tawait this.loadUsers()\n\t\t},\n\n\t\tresetSearch() {\n\t\t\tthis.search({ query: '' })\n\t\t},\n\n\t\tresetForm() {\n\t\t\t// revert form to original state\n\t\t\tthis.newUser = Object.assign({}, newUser)\n\n\t\t\t/**\n\t\t\t * Init default language from server data. The use of this.settings\n\t\t\t * requires a computed variable, which break the v-model binding of the form,\n\t\t\t * this is a much easier solution than getter and setter on a computed var\n\t\t\t */\n\t\t\tif (this.settings.defaultLanguage) {\n\t\t\t\tVue.set(this.newUser.language, 'code', this.settings.defaultLanguage)\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * In case the user directly loaded the user list within a group\n\t\t\t * the watch won't be triggered. We need to initialize it.\n\t\t\t */\n\t\t\tthis.setNewUserDefaultGroup(this.selectedGroup)\n\n\t\t\tthis.loading.all = false\n\t\t},\n\n\t\tsetNewUserDefaultGroup(value) {\n\t\t\t// Is no value set, but user is a line manager we set their group as this is a requirement for line manager\n\t\t\tif (!value && !this.settings.isAdmin && !this.settings.isDelegatedAdmin) {\n\t\t\t\tconst groups = this.$store.getters.getSubAdminGroups\n\t\t\t\t// if there are multiple groups we do not know which to add,\n\t\t\t\t// so we cannot make the managers life easier by preselecting it.\n\t\t\t\tif (groups.length === 1) {\n\t\t\t\t\tthis.newUser.groups = [...groups]\n\t\t\t\t}\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\t// setting new account default group to the current selected one\n\t\t\t\tconst currentGroup = this.groups.find(group => group.id === value)\n\t\t\t\tif (currentGroup) {\n\t\t\t\t\tthis.newUser.groups = [currentGroup]\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t\t// fallback, empty selected group\n\t\t\tthis.newUser.groups = []\n\t\t},\n\n\t\t/**\n\t\t * If the selected group is the disabled group but the count is 0\n\t\t * redirect to the all users page.\n\t\t * we only check for 0 because we don't have the count on ldap\n\t\t * and we therefore set the usercount to -1 in this specific case\n\t\t */\n\t\tasync redirectIfDisabled() {\n\t\t\tconst allGroups = this.$store.getters.getGroups\n\t\t\tif (this.selectedGroup === 'disabled'\n\t\t\t\t\t\t&& allGroups.findIndex(group => group.id === 'disabled' && group.usercount === 0) > -1) {\n\t\t\t\t// disabled group is empty, redirection to all users\n\t\t\t\tthis.$router.push({ name: 'users' })\n\t\t\t\tawait this.loadUsers()\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@use './Users/shared/styles' as *;\n\n.empty {\n\t:deep {\n\t\t.icon-vue {\n\t\t\twidth: 64px;\n\t\t\theight: 64px;\n\n\t\t\tsvg {\n\t\t\t\tmax-width: 64px;\n\t\t\t\tmax-height: 64px;\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!./UserList.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!./UserList.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!./UserList.vue?vue&type=style&index=0&id=1e8fee5a&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./UserList.vue?vue&type=style&index=0&id=1e8fee5a&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserList.vue?vue&type=template&id=1e8fee5a&scoped=true\"\nimport script from \"./UserList.vue?vue&type=script&lang=js\"\nexport * from \"./UserList.vue?vue&type=script&lang=js\"\nimport style0 from \"./UserList.vue?vue&type=style&index=0&id=1e8fee5a&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 \"1e8fee5a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('Fragment',[(_vm.showConfig.showNewUserForm)?_c('NewUserDialog',{attrs:{\"loading\":_vm.loading,\"new-user\":_vm.newUser,\"quota-options\":_vm.quotaOptions},on:{\"reset\":_vm.resetForm,\"closing\":_vm.closeDialog}}):_vm._e(),_vm._v(\" \"),(_vm.filteredUsers.length === 0)?_c('NcEmptyContent',{staticClass:\"empty\",attrs:{\"name\":_vm.isInitialLoad && _vm.loading.users ? null : _vm.t('settings', 'No accounts')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.isInitialLoad && _vm.loading.users)?_c('NcLoadingIcon',{attrs:{\"name\":_vm.t('settings', 'Loading accounts …'),\"size\":64}}):_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiAccountGroup,\"size\":64}})]},proxy:true}],null,false,226056511)}):_c('VirtualList',{style:(_vm.style),attrs:{\"data-component\":_vm.UserRow,\"data-sources\":_vm.filteredUsers,\"data-key\":\"id\",\"data-cy-user-list\":\"\",\"item-height\":_vm.rowHeight,\"extra-props\":{\n\t\t\tusers: _vm.users,\n\t\t\tsettings: _vm.settings,\n\t\t\thasObfuscated: _vm.hasObfuscated,\n\t\t\tquotaOptions: _vm.quotaOptions,\n\t\t\tlanguages: _vm.languages,\n\t\t\texternalActions: _vm.externalActions,\n\t\t}},on:{\"scroll-end\":_vm.handleScrollEnd},scopedSlots:_vm._u([{key:\"before\",fn:function(){return [_c('caption',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'List of accounts. This list is not fully rendered for performance reasons. The accounts will be rendered as you navigate through the list.'))+\"\\n\\t\\t\\t\")])]},proxy:true},{key:\"header\",fn:function(){return [_c('UserListHeader',{attrs:{\"has-obfuscated\":_vm.hasObfuscated}})]},proxy:true},{key:\"footer\",fn:function(){return [_c('UserListFooter',{attrs:{\"loading\":_vm.loading.users,\"filtered-users\":_vm.filteredUsers}})]},proxy:true}])})],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!./UserManagement.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!./UserManagement.vue?vue&type=script&lang=js\"","<!--\n - SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<NcAppContent :page-heading=\"pageHeading\">\n\t\t<UserList :selected-group=\"selectedGroupDecoded\"\n\t\t\t:external-actions=\"externalActions\" />\n\t</NcAppContent>\n</template>\n\n<script>\nimport { translate as t } from '@nextcloud/l10n'\nimport { emit } from '@nextcloud/event-bus'\nimport { defineComponent } from 'vue'\n\nimport NcAppContent from '@nextcloud/vue/components/NcAppContent'\nimport UserList from '../components/UserList.vue'\n\nexport default defineComponent({\n\tname: 'UserManagement',\n\n\tcomponents: {\n\t\tNcAppContent,\n\t\tUserList,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\t// temporary value used for multiselect change\n\t\t\texternalActions: [],\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tpageHeading() {\n\t\t\tif (this.selectedGroupDecoded === null) {\n\t\t\t\treturn t('settings', 'All accounts')\n\t\t\t}\n\t\t\tconst matchHeading = {\n\t\t\t\tadmin: t('settings', 'Admins'),\n\t\t\t\tdisabled: t('settings', 'Disabled accounts'),\n\t\t\t}\n\t\t\treturn matchHeading[this.selectedGroupDecoded] ?? t('settings', 'Account group: {group}', { group: this.selectedGroupDecoded })\n\t\t},\n\n\t\tselectedGroup() {\n\t\t\treturn this.$route.params.selectedGroup\n\t\t},\n\n\t\tselectedGroupDecoded() {\n\t\t\treturn this.selectedGroup ? decodeURIComponent(this.selectedGroup) : null\n\t\t},\n\t},\n\n\tbeforeMount() {\n\t\tthis.$store.dispatch('getPasswordPolicyMinLength')\n\t},\n\n\tcreated() {\n\t\t// init the OCA.Settings.UserList object\n\t\twindow.OCA = window.OCA ?? {}\n\t\twindow.OCA.Settings = window.OCA.Settings ?? {}\n\t\twindow.OCA.Settings.UserList = window.OCA.Settings.UserList ?? {}\n\t\t// and add the registerAction method\n\t\twindow.OCA.Settings.UserList.registerAction = this.registerAction\n\t\temit('settings:user-management:loaded')\n\t},\n\n\tmethods: {\n\t\tt,\n\n\t\t/**\n\t\t * Register a new action for the user menu\n\t\t *\n\t\t * @param {string} icon the icon class\n\t\t * @param {string} text the text to display\n\t\t * @param {Function} action the function to run\n\t\t * @param {(user: Record<string, unknown>) => boolean} enabled return true if the action is enabled for the user\n\t\t * @return {Array}\n\t\t */\n\t\tregisterAction(icon, text, action, enabled) {\n\t\t\tthis.externalActions.push({\n\t\t\t\ticon,\n\t\t\t\ttext,\n\t\t\t\taction,\n\t\t\t\tenabled,\n\t\t\t})\n\t\t\treturn this.externalActions\n\t\t},\n\t},\n})\n</script>\n\n<style lang=\"scss\" scoped>\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</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!./UserManagement.vue?vue&type=style&index=0&id=253f9eec&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./UserManagement.vue?vue&type=style&index=0&id=253f9eec&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserManagement.vue?vue&type=template&id=253f9eec&scoped=true\"\nimport script from \"./UserManagement.vue?vue&type=script&lang=js\"\nexport * from \"./UserManagement.vue?vue&type=script&lang=js\"\nimport style0 from \"./UserManagement.vue?vue&type=style&index=0&id=253f9eec&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 \"253f9eec\",\n null\n \n)\n\nexport default component.exports"],"names":["___CSS_LOADER_EXPORT___","push","module","id","formatGroup","group","name","displayname","usercount","disabled","canAdd","canRemove","searchGroups","_ref","search","offset","limit","controller","AbortController","CancelablePromise","async","resolve","reject","onCancel","abort","data","axios","get","generateOcsUrl","signal","ocs","groups","map","error","loadUserGroups","userId","_ref2","url","loadUserSubAdminGroups","_ref3","components","NcAppSettingsDialog","NcAppSettingsSection","NcCheckboxRadioSwitch","NcNoteCard","NcSelect","props","open","type","Boolean","required","selectedQuota","loadingSendMail","computed","groupSorting","$store","getters","getGroupSorting","GroupSorting","GroupName","set","sorting","commit","UserCount","isGroupSortingEnforced","getServerData","forceSortGroupByName","isModalOpen","$emit","showConfig","getShowConfig","settings","showLanguages","status","setShowConfig","showFirstLogin","showLastLogin","showUserBackend","showStoragePath","quotaOptions","quotaPreset","reduce","acc","cur","concat","label","allowUnlimitedQuota","unshift","unlimitedQuota","defaultQuota","OC","Util","computerFileSize","quota","sendWelcomeMail","newUserSendEmail","value","post","generateUrl","logger","methods","filterQuotas","option","searchValue","toLocaleLowerCase","replaceAll","indexOf","key","validateQuota","validQuota","parseFileSize","formatFileSize","setDefaultQuota","arguments","length","undefined","dispatch","app","then","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_vm","this","_c","_self","attrs","t","on","$event","_v","_s","_e","staticClass","model","callback","$$v","expression","AccountGroup","Delete","Fragment","NcActionButton","NcActionInput","NcAppNavigationItem","NcButton","NcCounterBubble","NcModal","Pencil","active","count","Number","default","String","loadingRenameGroup","openGroupMenu","showRemoveGroupModal","handleGroupMenuOpen","renameGroup","gid","trim","displayName","$refs","displayNameInput","$el","querySelector","groupid","removeGroup","showError","ref","params","selectedGroup","encodeURIComponent","scopedSlots","_u","fn","proxy","isAdmin","isDelegatedAdmin","formatGroupMenu","title","Math","max","useFormatGroups","userGroups","filter","adminGroup","find","disabledGroup","recentGroup","_defineComponent","__name","setup","__props","store","useStore","route","useRoute","router","useRouter","onBeforeMount","loadGroups","selectedGroupDecoded","decodeURIComponent","getSortedGroups","isAdminOrDelegatedAdmin","isAddGroupOpen","loadingAddGroup","hasAddGroupError","newGroupName","loadingGroups","groupsSearchQuery","groupListItems","lastGroupListItem","findLast","component","$vnode","at","listItem","isLastGroupVisible","useElementVisibility","watch","promise","cancel","__sfc","createGroup","groupId","newGroupListItem","scrollIntoView","behavior","block","mdiAccountGroup","mdiPlus","NcActionText","NcAppNavigationCaption","NcAppNavigationList","NcAppNavigationSearch","NcIconSvgWrapper","NcLoadingIcon","GroupListItem","_setup","_setupProxy","_l","refInFor","isDialogOpen","userCount","getUserCount","showNewUserMenu","mdiAccount","mdiAccountOff","mdiCog","mdiShieldAccount","mdiHistory","NcAppNavigation","NcAppNavigationNew","UserSettingsDialog","AppNavigationGroupList","_k","keyCode","apply","Symbol","toStringTag","isObfuscated","user","keys","Object","Vue","directive","vElementVisibility","extend","dataComponent","Function","dataKey","dataSources","Array","itemHeight","extraProps","bufferItems","index","headerHeight","tableHeight","resizeObserver","startIndex","shownItems","ceil","renderedItems","slice","tbodyStyle","isOverScrolled","lastIndex","hiddenAfterItems","min","paddingTop","paddingBottom","mounted","root","tfoot","thead","ResizeObserver","debounce","clientHeight","debug","onScroll","observe","addEventListener","beforeDestroy","disconnect","handleFooterVisibility","visible","round","scrollTop","_t","style","item","i","_b","tag","directives","rawName","NcDialog","NcPasswordField","NcTextField","loading","newUser","availableGroups","possibleManagers","managerInputLabel","managerLabel","usernameLabel","newUserGenerateUserID","minPasswordLength","getPasswordPolicyMinLength","subAdminsGroups","languages","commonLanguages","otherLanguages","beforeMount","searchUserManager","getSubAdminGroups","username","focus","createUser","all","userid","password","email","mailAddress","subadmin","language","code","manager","response","meta","statuscode","query","toggleLoading","addGroup","isCreating","languageFilterBy","some","includes","users","values","_g","$listeners","preventDefault","$set","newUserRequireEmail","class","filteredUsers","n","hasObfuscated","passwordLabel","defineComponent","NcActions","actions","edit","editSvg","SvgCheck","SvgPencil","enabledActions","action","enabled","isSvg","string","TypeError","XMLValidator","validate","jsonObject","parser","XMLParser","parse","x","toLowerCase","toggleEdit","icon","text","event","externalActions","formattedFullTime","useFormatDateTime","firstLoginTimestamp","relativeTime","format","timeStyle","dateStyle","availableSubAdminGroups","userSubAdminGroups","usedSpace","quotaUsed","used","size","usedQuota","pow","isNaN","userQuota","humanQuota","userLanguage","userLang","lang","userFirstLogin","userLastLoginTooltip","lastLoginTimestamp","formatDate","userLastLogin","relativeModifiedDate","NcAvatar","NcProgressBar","UserRowActions","mixins","UserRowMixin","rand","random","toString","substring","loadingPossibleManagers","currentManager","editing","groupsDetails","subAdminGroupsDetails","subadmins","delete","disable","wipe","editedDisplayName","editedPassword","editedMail","isLoadingUser","isLoadingField","uniqueId","userGroupsLabels","join","userSubAdminGroupsLabels","canEdit","getCurrentUser","uid","userActions","deleteUser","wipeUserDevices","enableDisableUser","editedUserQuota","availableLanguages","initManager","confirmPassword","dialogs","confirmDestructive","YES_NO_BUTTONS","confirm","confirmClasses","result","showSuccess","timeout","finally","filterManagers","managers","searchInitialUserManager","loadGroupsDetails","availableGroup","loadSubAdminGroupsDetails","updateUserManager","previousManager","updateDisplayName","updatePassword","updateEmail","addUserGroup","console","removeUserGroup","$route","addUserSubAdmin","removeUserSubAdmin","setUserQuota","setUserLanguage","$nextTick","displayNameField","inputField","input","backendCapabilities","setDisplayName","canChangePassword","setPassword","backend","storageLocation","freeze","NcEmptyContent","NewUserDialog","UserListFooter","UserListHeader","VirtualList","rowHeight","UserRow","isInitialLoad","searchQuery","getUsers","usersOffset","getUsersOffset","usersLimit","getUsersLimit","disabledUsersOffset","getDisabledUsersOffset","disabledUsersLimit","getDisabledUsersLimit","usersCount","val","redirectIfDisabled","loadUsers","setNewUserDefaultGroup","created","Notification","showTemporary","resetForm","subscribe","resetSearch","unsubscribe","handleScrollEnd","closeDialog","assign","defaultLanguage","currentGroup","allGroups","getGroups","findIndex","$router","showNewUserForm","NcAppContent","UserList","pageHeading","admin","window","OCA","Settings","registerAction","emit"],"sourceRoot":""}
\ No newline at end of file diff --git a/dist/settings-vue-settings-apps-users-management.js b/dist/settings-vue-settings-apps-users-management.js index 49c035a242d..c865be84481 100644 --- a/dist/settings-vue-settings-apps-users-management.js +++ b/dist/settings-vue-settings-apps-users-management.js @@ -1,2 +1,2 @@ -(()=>{var e,r,s,i={6028:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var s=r(65043),i=r(56760);r(51257);const n=function(e){return e.replace(/\/$/,"")},o={requireAdmin:()=>(0,i.C5)(),get:(e,t)=>s.Ay.get(n(e),t),post:(e,t)=>s.Ay.post(n(e),t),patch:(e,t)=>s.Ay.patch(n(e),t),put:(e,t)=>s.Ay.put(n(e),t),delete:(e,t)=>s.Ay.delete(n(e),{params:t})}},12836:(e,t,r)=>{"use strict";var s=r(85471),i=r(95353),n=r(80284),o=r(58723),a=r(53334),u=r(22378);const l=(0,s.pM)({__name:"SettingsApp",setup:e=>({__sfc:!0,NcContent:u.A})}),c=(0,r(14486).A)(l,(function(){var e=this,t=e._self._c;return t(e._self._setupProxy.NcContent,{attrs:{"app-name":"settings"}},[t("router-view",{attrs:{name:"navigation"}}),e._v(" "),t("router-view"),e._v(" "),t("router-view",{attrs:{name:"sidebar"}})],1)}),[],!1,null,null,null).exports;var d=r(40173),p=r(63814);const h=[{name:"users",path:"/:index(index.php/)?settings/users",components:{default:()=>Promise.all([r.e(4208),r.e(7265),r.e(3239)]).then(r.bind(r,68539)),navigation:()=>Promise.all([r.e(4208),r.e(7265),r.e(3239)]).then(r.bind(r,51285))},props:!0,children:[{path:":selectedGroup",name:"group"}]},{path:"/:index(index.php/)?settings/apps",name:"apps",redirect:{name:"apps-category",params:{category:(0,r(32981).C)("settings","appstoreEnabled",!0)?"discover":"installed"}},components:{default:()=>Promise.all([r.e(4208),r.e(7265),r.e(4529)]).then(r.bind(r,1368)),navigation:()=>Promise.all([r.e(4208),r.e(7265),r.e(4529)]).then(r.bind(r,78451)),sidebar:()=>Promise.all([r.e(4208),r.e(7265),r.e(4529)]).then(r.bind(r,84694))},children:[{path:":category",name:"apps-category",children:[{path:":id",name:"apps-details"}]}]}];s.Ay.use(d.Ay);const g=new d.Ay({mode:"history",base:(0,p.Jv)(""),linkActiveClass:"active",routes:h});var m=r(14744),f=r(21777),E=r(65899);r.nc=(0,f.aV)(),s.Ay.prototype.t=a.t,s.Ay.prototype.n=a.n,s.Ay.use(E.R2),s.Ay.use(n.Ay,{defaultHtml:!1}),s.Ay.use(i.Ay);const A=(0,m.P)();(0,o.O)(A,g);const b=(0,E.Ey)();new s.Ay({router:g,store:A,pinia:b,render:e=>e(c),el:"#content"})},14744:(e,r,s)=>{"use strict";s.d(r,{P:()=>D});var i=s(95353),n=s(59097),o=s(87485),a=s(35810),u=s(85168),l=s(63814),c=s(32981),d=s(65043),p=s(15916),h=s(53334);const g=Intl.Collator([(0,h.Z0)(),(0,h.lO)()],{numeric:!0,usage:"sort"});var m=s(6028),f=s(36620);const E=(0,c.C)("settings","usersSettings",{}),A=(0,n.c0)("settings").persist(!0).build(),b={id:"",name:"",usercount:0,disabled:0,canAdd:!0,canRemove:!0},I={users:[],groups:[...E.getSubAdminGroups??[],...E.systemGroups??[]],orderBy:E.sortGroups??p.q.UserCount,minPasswordLength:0,usersOffset:0,usersLimit:25,disabledUsersOffset:0,disabledUsersLimit:25,userCount:E.userCount??0,showConfig:{showStoragePath:"true"===A.getItem("account_settings__showStoragePath"),showUserBackend:"true"===A.getItem("account_settings__showUserBackend"),showFirstLogin:"true"===A.getItem("account_settings__showFirstLogin"),showLastLogin:"true"===A.getItem("account_settings__showLastLogin"),showNewUserForm:"true"===A.getItem("account_settings__showNewUserForm"),showLanguages:"true"===A.getItem("account_settings__showLanguages")}},N={appendUsers(e,t){const r=e.users.map((e=>{let{id:t}=e;return t})),s=Object.values(t).filter((e=>{let{id:t}=e;return!r.includes(t)})),i=e.users.concat(s);e.usersOffset+=e.usersLimit,e.users=i},updateDisabledUsers(e,t){e.disabledUsersOffset+=e.disabledUsersLimit},setPasswordPolicyMinLength(e,t){e.minPasswordLength=""!==t?t:0},addGroup(e,t){try{if(void 0!==e.groups.find((e=>e.id===t.id)))return;const r=Object.assign({},b,t);e.groups.unshift(r)}catch(e){console.error("Can't create group",e)}},renameGroup(e,t){let{gid:r,displayName:s}=t;const i=e.groups.findIndex((e=>e.id===r));if(i>=0){const t=e.groups[i];t.name=s,e.groups.splice(i,1,t)}},removeGroup(e,t){const r=e.groups.findIndex((e=>e.id===t));r>=0&&e.groups.splice(r,1)},addUserGroup(e,t){let{userid:r,gid:s}=t;const i=e.groups.find((e=>e.id===s)),n=e.users.find((e=>e.id===r));i&&n.enabled&&e.userCount>0&&i.usercount++,n.groups.push(s)},removeUserGroup(e,t){let{userid:r,gid:s}=t;const i=e.groups.find((e=>e.id===s)),n=e.users.find((e=>e.id===r));i&&n.enabled&&e.userCount>0&&i.usercount--;const o=n.groups;o.splice(o.indexOf(s),1)},addUserSubAdmin(e,t){let{userid:r,gid:s}=t;e.users.find((e=>e.id===r)).subadmin.push(s)},removeUserSubAdmin(e,t){let{userid:r,gid:s}=t;const i=e.users.find((e=>e.id===r)).subadmin;i.splice(i.indexOf(s),1)},deleteUser(e,t){const r=e.users.findIndex((e=>e.id===t));this.commit("updateUserCounts",{user:e.users[r],actionType:"remove"}),e.users.splice(r,1)},addUserData(e,t){const r=t.data.ocs.data;e.users.unshift(r),this.commit("updateUserCounts",{user:r,actionType:"create"})},enableDisableUser(e,t){let{userid:r,enabled:s}=t;const i=e.users.find((e=>e.id===r));i.enabled=s,this.commit("updateUserCounts",{user:i,actionType:s?"enable":"disable"})},updateUserCounts(e,t){let{user:r,actionType:s}=t;if(0===e.userCount)return;const i=e.groups.find((e=>"__nc_internal_recent"===e.id)),n=e.groups.find((e=>"disabled"===e.id));switch(s){case"enable":case"disable":n.usercount+=r.enabled?-1:1,i.usercount+=r.enabled?1:-1,e.userCount+=r.enabled?1:-1,r.groups.forEach((t=>{const s=e.groups.find((e=>e.id===t));s&&(s.disabled+=r.enabled?-1:1)}));break;case"create":i.usercount++,e.userCount++,r.groups.forEach((t=>{const r=e.groups.find((e=>e.id===t));r&&r.usercount++}));break;case"remove":r.enabled?(i.usercount--,e.userCount--,r.groups.forEach((t=>{const r=e.groups.find((e=>e.id===t));r?r.usercount--:console.warn("User group "+t+" does not exist during user removal")}))):(n.usercount--,r.groups.forEach((t=>{const r=e.groups.find((e=>e.id===t));r&&r.disabled--})));break;default:f.A.error(`Unknown action type in updateUserCounts: '${s}'`)}},setUserData(e,t){let{userid:r,key:s,value:i}=t;if("quota"===s){const t=(0,a.lT)(i,!0);e.users.find((e=>e.id===r))[s][s]=null!==t?t:i}else e.users.find((e=>e.id===r))[s]=i},resetUsers(e){e.users=[],e.usersOffset=0,e.disabledUsersOffset=0},resetGroups(e){e.groups=[...E.getSubAdminGroups??[],...E.systemGroups??[]]},setShowConfig(e,t){let{key:r,value:s}=t;A.setItem(`account_settings__${r}`,JSON.stringify(s)),e.showConfig[r]=s},setGroupSorting(e,r){const s=e.orderBy;e.orderBy=r,d.Ay.post((0,l.Jv)("/settings/users/preferences/group.sortBy"),{value:String(r)}).catch((r=>{e.orderBy=s,(0,u.Qg)(t("settings","Could not set group sorting")),f.A.error(r)}))}},v={getUsers:e=>e.users,getGroups:e=>e.groups,getSubAdminGroups:()=>E.subAdminGroups??[],getSortedGroups(e){const t=[...e.groups];return e.orderBy===p.q.UserCount?t.sort(((e,t)=>{const r=e.usercount-e.disabled,s=t.usercount-t.disabled;return r<s?1:s<r?-1:g.compare(e.name,t.name)})):t.sort(((e,t)=>g.compare(e.name,t.name)))},getGroupSorting:e=>e.orderBy,getPasswordPolicyMinLength:e=>e.minPasswordLength,getUsersOffset:e=>e.usersOffset,getUsersLimit:e=>e.usersLimit,getDisabledUsersOffset:e=>e.disabledUsersOffset,getDisabledUsersLimit:e=>e.disabledUsersLimit,getUserCount:e=>e.userCount,getShowConfig:e=>e.showConfig},L=d.Ay.CancelToken;let y=null;const O={state:I,mutations:N,getters:v,actions:{searchUsers(e,t){let{offset:r,limit:s,search:i}=t;return i="string"==typeof i?i:"",m.A.get((0,l.KT)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:r,limit:s,search:i})).catch((t=>{d.Ay.isCancel(t)||e.commit("API_FAILURE",t)}))},getUser:(e,t)=>m.A.get((0,l.KT)(`cloud/users/${t}`)).catch((t=>{d.Ay.isCancel(t)||e.commit("API_FAILURE",t)})),getUsers(e,t){let{offset:r,limit:s,search:i,group:n}=t;return y&&y.cancel("Operation canceled by another search request."),y=L.source(),i="string"==typeof i?i:"",i=i.replace(/in:[^\s]+/g,"").trim(),n="string"==typeof n?n:"",""!==n?m.A.get((0,l.KT)("cloud/groups/{group}/users/details?offset={offset}&limit={limit}&search={search}",{group:encodeURIComponent(n),offset:r,limit:s,search:i}),{cancelToken:y.token}).then((t=>{const r=Object.keys(t.data.ocs.data.users).length;return r>0&&e.commit("appendUsers",t.data.ocs.data.users),r})).catch((t=>{d.Ay.isCancel(t)||e.commit("API_FAILURE",t)})):m.A.get((0,l.KT)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:r,limit:s,search:i}),{cancelToken:y.token}).then((t=>{const r=Object.keys(t.data.ocs.data.users).length;return r>0&&e.commit("appendUsers",t.data.ocs.data.users),r})).catch((t=>{d.Ay.isCancel(t)||e.commit("API_FAILURE",t)}))},async getRecentUsers(e,t){let{offset:r,limit:s,search:i}=t;const n=(0,l.KT)("cloud/users/recent?offset={offset}&limit={limit}&search={search}",{offset:r,limit:s,search:i});try{const t=await m.A.get(n),r=Object.keys(t.data.ocs.data.users).length;return r>0&&e.commit("appendUsers",t.data.ocs.data.users),r}catch(t){e.commit("API_FAILURE",t)}},async getDisabledUsers(e,t){let{offset:r,limit:s,search:i}=t;const n=(0,l.KT)("cloud/users/disabled?offset={offset}&limit={limit}&search={search}",{offset:r,limit:s,search:i});try{const t=await m.A.get(n),r=Object.keys(t.data.ocs.data.users).length;return r>0&&(e.commit("appendUsers",t.data.ocs.data.users),e.commit("updateDisabledUsers",t.data.ocs.data.users)),r}catch(t){e.commit("API_FAILURE",t)}},getGroups(e,t){let{offset:r,limit:s,search:i}=t;i="string"==typeof i?i:"";const n=-1===s?"":`&limit=${s}`;return m.A.get((0,l.KT)("cloud/groups?offset={offset}&search={search}",{offset:r,search:i})+n).then((t=>Object.keys(t.data.ocs.data.groups).length>0&&(t.data.ocs.data.groups.forEach((function(t){e.commit("addGroup",{id:t,name:t})})),!0))).catch((t=>e.commit("API_FAILURE",t)))},getUsersFromList(e,t){let{offset:r,limit:s,search:i}=t;return i="string"==typeof i?i:"",m.A.get((0,l.KT)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:r,limit:s,search:i})).then((t=>Object.keys(t.data.ocs.data.users).length>0&&(e.commit("appendUsers",t.data.ocs.data.users),!0))).catch((t=>e.commit("API_FAILURE",t)))},getUsersFromGroup(e,t){let{groupid:r,offset:s,limit:i}=t;return m.A.get((0,l.KT)("cloud/users/{groupId}/details?offset={offset}&limit={limit}",{groupId:encodeURIComponent(r),offset:s,limit:i})).then((t=>e.commit("getUsersFromList",t.data.ocs.data.users))).catch((t=>e.commit("API_FAILURE",t)))},getPasswordPolicyMinLength:e=>!(!(0,o.F)().password_policy||!(0,o.F)().password_policy.minLength)&&(e.commit("setPasswordPolicyMinLength",(0,o.F)().password_policy.minLength),(0,o.F)().password_policy.minLength),addGroup:(e,t)=>m.A.requireAdmin().then((r=>m.A.post((0,l.KT)("cloud/groups"),{groupid:t}).then((r=>(e.commit("addGroup",{id:t,name:t}),{gid:t,displayName:t}))).catch((e=>{throw e})))).catch((r=>{throw e.commit("API_FAILURE",{gid:t,error:r}),r})),renameGroup(e,t){let{groupid:r,displayName:s}=t;return m.A.requireAdmin().then((t=>m.A.put((0,l.KT)("cloud/groups/{groupId}",{groupId:encodeURIComponent(r)}),{key:"displayname",value:s}).then((t=>(e.commit("renameGroup",{gid:r,displayName:s}),{groupid:r,displayName:s}))).catch((e=>{throw e})))).catch((t=>{throw e.commit("API_FAILURE",{groupid:r,error:t}),t}))},removeGroup:(e,t)=>m.A.requireAdmin().then((r=>m.A.delete((0,l.KT)("cloud/groups/{groupId}",{groupId:encodeURIComponent(t)})).then((r=>e.commit("removeGroup",t))).catch((e=>{throw e})))).catch((r=>e.commit("API_FAILURE",{gid:t,error:r}))),addUserGroup(e,t){let{userid:r,gid:s}=t;return m.A.requireAdmin().then((t=>m.A.post((0,l.KT)("cloud/users/{userid}/groups",{userid:r}),{groupid:s}).then((t=>e.commit("addUserGroup",{userid:r,gid:s}))).catch((e=>{throw e})))).catch((t=>e.commit("API_FAILURE",{userid:r,error:t})))},removeUserGroup(e,t){let{userid:r,gid:s}=t;return m.A.requireAdmin().then((t=>m.A.delete((0,l.KT)("cloud/users/{userid}/groups",{userid:r}),{groupid:s}).then((t=>e.commit("removeUserGroup",{userid:r,gid:s}))).catch((e=>{throw e})))).catch((t=>{throw e.commit("API_FAILURE",{userid:r,error:t}),t}))},addUserSubAdmin(e,t){let{userid:r,gid:s}=t;return m.A.requireAdmin().then((t=>m.A.post((0,l.KT)("cloud/users/{userid}/subadmins",{userid:r}),{groupid:s}).then((t=>e.commit("addUserSubAdmin",{userid:r,gid:s}))).catch((e=>{throw e})))).catch((t=>e.commit("API_FAILURE",{userid:r,error:t})))},removeUserSubAdmin(e,t){let{userid:r,gid:s}=t;return m.A.requireAdmin().then((t=>m.A.delete((0,l.KT)("cloud/users/{userid}/subadmins",{userid:r}),{groupid:s}).then((t=>e.commit("removeUserSubAdmin",{userid:r,gid:s}))).catch((e=>{throw e})))).catch((t=>e.commit("API_FAILURE",{userid:r,error:t})))},async wipeUserDevices(e,t){try{return await m.A.requireAdmin(),await m.A.post((0,l.KT)("cloud/users/{userid}/wipe",{userid:t}))}catch(r){return e.commit("API_FAILURE",{userid:t,error:r}),Promise.reject(new Error("Failed to wipe user devices"))}},deleteUser:(e,t)=>m.A.requireAdmin().then((r=>m.A.delete((0,l.KT)("cloud/users/{userid}",{userid:t})).then((r=>e.commit("deleteUser",t))).catch((e=>{throw e})))).catch((r=>e.commit("API_FAILURE",{userid:t,error:r}))),addUser(e,t){let{commit:r,dispatch:s}=e,{userid:i,password:n,displayName:o,email:a,groups:u,subadmin:c,quota:d,language:p,manager:h}=t;return m.A.requireAdmin().then((e=>m.A.post((0,l.KT)("cloud/users"),{userid:i,password:n,displayName:o,email:a,groups:u,subadmin:c,quota:d,language:p,manager:h}).then((e=>s("addUserData",i||e.data.ocs.data.id))).catch((e=>{throw e})))).catch((e=>{throw r("API_FAILURE",{userid:i,error:e}),e}))},addUserData:(e,t)=>m.A.requireAdmin().then((r=>m.A.get((0,l.KT)("cloud/users/{userid}",{userid:t})).then((t=>e.commit("addUserData",t))).catch((e=>{throw e})))).catch((r=>e.commit("API_FAILURE",{userid:t,error:r}))),enableDisableUser(e,t){let{userid:r,enabled:s=!0}=t;const i=s?"enable":"disable";return m.A.requireAdmin().then((t=>m.A.put((0,l.KT)("cloud/users/{userid}/{userStatus}",{userid:r,userStatus:i})).then((t=>e.commit("enableDisableUser",{userid:r,enabled:s}))).catch((e=>{throw e})))).catch((t=>e.commit("API_FAILURE",{userid:r,error:t})))},async setUserData(e,t){let{userid:r,key:s,value:i}=t;const n=["email","displayname","manager"];if(-1!==["email","language","quota","displayname","password","manager"].indexOf(s)&&"string"==typeof i&&(-1===n.indexOf(s)&&i.length>0||-1!==n.indexOf(s)))try{return await m.A.requireAdmin(),await m.A.put((0,l.KT)("cloud/users/{userid}",{userid:r}),{key:s,value:i}),e.commit("setUserData",{userid:r,key:s,value:i})}catch(t){e.commit("API_FAILURE",{userid:r,error:t})}return Promise.reject(new Error("Invalid request data"))},sendWelcomeMail:(e,t)=>m.A.requireAdmin().then((e=>m.A.post((0,l.KT)("cloud/users/{userid}/welcome",{userid:t})).then((e=>!0)).catch((e=>{throw e})))).catch((r=>e.commit("API_FAILURE",{userid:t,error:r})))}};var x=s(85471);const T={apps:[],bundles:(0,c.C)("settings","appstoreBundles",[]),categories:[],updateCount:(0,c.C)("settings","appstoreUpdateCount",0),loading:{},gettingCategoriesPromise:null,appApiEnabled:(0,c.C)("settings","appApiEnabled",!1)},P={APPS_API_FAILURE(e,r){(0,u.Qg)(t("settings","An error occurred during the request. Unable to proceed.")+"<br>"+r.error.response.data.data.message,{isHTML:!0}),console.error(e,r)},initCategories(e,t){let{categories:r,updateCount:s}=t;e.categories=r,e.updateCount=s},updateCategories(e,t){e.gettingCategoriesPromise=t},setUpdateCount(e,t){e.updateCount=t},addCategory(e,t){e.categories.push(t)},appendCategories(e,t){e.categories=t},setAllApps(e,t){e.apps=t},setError(e,t){let{appId:r,error:s}=t;Array.isArray(r)||(r=[r]),r.forEach((t=>{e.apps.find((e=>e.id===t)).error=s}))},clearError(e,t){let{appId:r,error:s}=t;e.apps.find((e=>e.id===r)).error=null},enableApp(e,t){let{appId:r,groups:s}=t;const i=e.apps.find((e=>e.id===r));i.active=!0,i.groups=s,"app_api"===i.id&&(e.appApiEnabled=!0)},setInstallState(e,t){let{appId:r,canInstall:s}=t;const i=e.apps.find((e=>e.id===r));i&&(i.canInstall=!0===s)},disableApp(e,t){const r=e.apps.find((e=>e.id===t));r.active=!1,r.groups=[],r.removable&&(r.canUnInstall=!0),"app_api"===r.id&&(e.appApiEnabled=!1)},uninstallApp(e,t){e.apps.find((e=>e.id===t)).active=!1,e.apps.find((e=>e.id===t)).groups=[],e.apps.find((e=>e.id===t)).needsDownload=!0,e.apps.find((e=>e.id===t)).installed=!1,e.apps.find((e=>e.id===t)).canUnInstall=!1,e.apps.find((e=>e.id===t)).canInstall=!0,"app_api"===t&&(e.appApiEnabled=!1)},updateApp(e,t){const r=e.apps.find((e=>e.id===t)),s=r.update;r.update=null,r.version=s,e.updateCount--},resetApps(e){e.apps=[]},reset(e){e.apps=[],e.categories=[],e.updateCount=0},startLoading(e,t){Array.isArray(t)?t.forEach((t=>{x.Ay.set(e.loading,t,!0)})):x.Ay.set(e.loading,t,!0)},stopLoading(e,t){Array.isArray(t)?t.forEach((t=>{x.Ay.set(e.loading,t,!1)})):x.Ay.set(e.loading,t,!1)}},R={enableApp(e,r){let s,{appId:i,groups:n}=r;return s=Array.isArray(i)?i:[i],m.A.requireAdmin().then((r=>(e.commit("startLoading",s),e.commit("startLoading","install"),m.A.post((0,l.Jv)("settings/apps/enable"),{appIds:s,groups:n}).then((r=>(e.commit("stopLoading",s),e.commit("stopLoading","install"),s.forEach((t=>{e.commit("enableApp",{appId:t,groups:n})})),d.Ay.get((0,l.Jv)("apps/files/")).then((()=>{r.data.update_required&&((0,u.cf)(t("settings","The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds."),{onClick:()=>window.location.reload(),close:!1}),setTimeout((function(){location.reload()}),5e3))})).catch((()=>{Array.isArray(i)||((0,u.Qg)(t("settings","Error: This app cannot be enabled because it makes the server unstable")),e.commit("setError",{appId:s,error:t("settings","Error: This app cannot be enabled because it makes the server unstable")}),e.dispatch("disableApp",{appId:i}))}))))).catch((t=>{e.commit("stopLoading",s),e.commit("stopLoading","install"),e.commit("setError",{appId:s,error:t.response.data.data.message}),e.commit("APPS_API_FAILURE",{appId:i,error:t})}))))).catch((t=>e.commit("API_FAILURE",{appId:i,error:t})))},forceEnableApp(e,t){let r,{appId:s,groups:i}=t;return r=Array.isArray(s)?s:[s],m.A.requireAdmin().then((()=>(e.commit("startLoading",r),e.commit("startLoading","install"),m.A.post((0,l.Jv)("settings/apps/force"),{appId:s}).then((t=>{e.commit("setInstallState",{appId:s,canInstall:!0})})).catch((t=>{e.commit("stopLoading",r),e.commit("stopLoading","install"),e.commit("setError",{appId:r,error:t.response.data.data.message}),e.commit("APPS_API_FAILURE",{appId:s,error:t})})).finally((()=>{e.commit("stopLoading",r),e.commit("stopLoading","install")}))))).catch((t=>e.commit("API_FAILURE",{appId:s,error:t})))},disableApp(e,t){let r,{appId:s}=t;return r=Array.isArray(s)?s:[s],m.A.requireAdmin().then((t=>(e.commit("startLoading",r),m.A.post((0,l.Jv)("settings/apps/disable"),{appIds:r}).then((t=>(e.commit("stopLoading",r),r.forEach((t=>{e.commit("disableApp",t)})),!0))).catch((t=>{e.commit("stopLoading",r),e.commit("APPS_API_FAILURE",{appId:s,error:t})}))))).catch((t=>e.commit("API_FAILURE",{appId:s,error:t})))},uninstallApp(e,t){let{appId:r}=t;return m.A.requireAdmin().then((t=>(e.commit("startLoading",r),m.A.get((0,l.Jv)(`settings/apps/uninstall/${r}`)).then((t=>(e.commit("stopLoading",r),e.commit("uninstallApp",r),!0))).catch((t=>{e.commit("stopLoading",r),e.commit("APPS_API_FAILURE",{appId:r,error:t})}))))).catch((t=>e.commit("API_FAILURE",{appId:r,error:t})))},updateApp(e,t){let{appId:r}=t;return m.A.requireAdmin().then((t=>(e.commit("startLoading",r),e.commit("startLoading","install"),m.A.get((0,l.Jv)(`settings/apps/update/${r}`)).then((t=>(e.commit("stopLoading","install"),e.commit("stopLoading",r),e.commit("updateApp",r),!0))).catch((t=>{e.commit("stopLoading",r),e.commit("stopLoading","install"),e.commit("APPS_API_FAILURE",{appId:r,error:t})}))))).catch((t=>e.commit("API_FAILURE",{appId:r,error:t})))},getAllApps:e=>(e.commit("startLoading","list"),m.A.get((0,l.Jv)("settings/apps/list")).then((t=>(e.commit("setAllApps",t.data.apps),e.commit("stopLoading","list"),!0))).catch((t=>e.commit("API_FAILURE",t)))),async getCategories(e){let{shouldRefetchCategories:t=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(t||!e.state.gettingCategoriesPromise){e.commit("startLoading","categories");try{const t=m.A.get((0,l.Jv)("settings/apps/categories"));e.commit("updateCategories",t);const r=await t;return r.data.length>0?(e.commit("appendCategories",r.data),e.commit("stopLoading","categories"),!0):(e.commit("stopLoading","categories"),!1)}catch(t){e.commit("API_FAILURE",t)}}return e.state.gettingCategoriesPromise}},w={state:T,mutations:P,getters:{isAppApiEnabled:e=>e.appApiEnabled,loading:e=>function(t){return e.loading[t]},getCategories:e=>e.categories,getAllApps:e=>e.apps,getAppBundles:e=>e.bundles,getUpdateCount:e=>e.updateCount,getCategoryById:e=>t=>e.categories.find((e=>e.id===t))},actions:R},C={serverData:(0,c.C)("settings","usersSettings",{})},U={setServerData(e,t){e.serverData=t}},S={state:C,mutations:U,getters:{getServerData:e=>e.serverData},actions:{}},$={state:{},mutations:{},getters:{},actions:{setAppConfig(e,t){let{app:r,key:s,value:i}=t;return m.A.requireAdmin().then((e=>m.A.post((0,l.KT)("apps/provisioning_api/api/v1/config/apps/{app}/{key}",{app:r,key:s}),{value:i}).catch((e=>{throw e})))).catch((t=>e.commit("API_FAILURE",{app:r,key:s,value:i,error:t})))}}},_={API_FAILURE(e,r){try{const e=r.error.response.data.ocs.meta.message;(0,u.Qg)(t("settings","An error occurred during the request. Unable to proceed.")+"<br>"+e,{isHTML:!0})}catch(e){(0,u.Qg)(t("settings","An error occurred during the request. Unable to proceed."))}console.error(e,r)}};let F=null;const D=()=>(null===F&&(F=new i.il({modules:{users:O,apps:w,settings:S,oc:$},strict:!1,mutations:_})),F)},15916:(e,t,r)=>{"use strict";var s;r.d(t,{q:()=>s}),function(e){e[e.UserCount=1]="UserCount",e[e.GroupName=2]="GroupName"}(s||(s={}))},35810:(e,t,r)=>{"use strict";r.d(t,{Al:()=>s.r,H4:()=>s.c,Q$:()=>s.e,R3:()=>s.n,VL:()=>s.l,lJ:()=>s.d,lT:()=>c,pt:()=>s.F,ur:()=>p,v7:()=>l});var s=r(68251),i=(r(43627),r(53334)),n=r(380),o=r(65606);Error;const a=["B","KB","MB","GB","TB","PB"],u=["B","KiB","MiB","GiB","TiB","PiB"];function l(e,t=!1,r=!1,s=!1){r=r&&!s,"string"==typeof e&&(e=Number(e));let n=e>0?Math.floor(Math.log(e)/Math.log(s?1e3:1024)):0;n=Math.min((r?u.length:a.length)-1,n);const o=r?u[n]:a[n];let l=(e/Math.pow(s?1e3:1024,n)).toFixed(1);return!0===t&&0===n?("0.0"!==l?"< 1 ":"0 ")+(r?u[1]:a[1]):(l=n<2?parseFloat(l).toFixed(0):parseFloat(l).toLocaleString((0,i.lO)()),l+" "+o)}function c(e,t=!1){try{e=`${e}`.toLocaleLowerCase().replaceAll(/\s+/g,"").replaceAll(",",".")}catch(e){return null}const r=e.match(/^([0-9]*(\.[0-9]*)?)([kmgtp]?)(i?)b?$/);if(null===r||"."===r[1]||""===r[1])return null;const s=`${r[1]}`,i="i"===r[4]||t?1024:1e3;return Math.round(Number.parseFloat(s)*i**{"":0,k:1,m:2,g:3,t:4,p:5,e:6}[r[3]])}function d(e){return e instanceof Date?e.toISOString():String(e)}function p(e,t={}){const r={sortingMode:"basename",sortingOrder:"asc",...t};return function(e,t,r){r=r??[];const s=(t=t??[e=>e]).map(((e,t)=>"asc"===(r[t]??"asc")?1:-1)),n=Intl.Collator([(0,i.Z0)(),(0,i.lO)()],{numeric:!0,usage:"sort"});return[...e].sort(((e,r)=>{for(const[i,o]of t.entries()){const t=n.compare(d(o(e)),d(o(r)));if(0!==t)return t*s[i]}return 0}))}(e,[...r.sortFavoritesFirst?[e=>1!==e.attributes?.favorite]:[],...r.sortFoldersFirst?[e=>"folder"!==e.type]:[],..."basename"!==r.sortingMode?[e=>e[r.sortingMode]]:[],e=>{return(t=e.displayname||e.attributes?.displayname||e.basename).lastIndexOf(".")>0?t.slice(0,t.lastIndexOf(".")):t;var t},e=>e.basename],[...r.sortFavoritesFirst?["asc"]:[],...r.sortFoldersFirst?["asc"]:[],..."mtime"===r.sortingMode?["asc"===r.sortingOrder?"desc":"asc"]:[],..."mtime"!==r.sortingMode&&"basename"!==r.sortingMode?[r.sortingOrder]:[],r.sortingOrder,r.sortingOrder])}var h,g,m={},f={};function E(){return h||(h=1,function(e){const t=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",r="["+t+"]["+t+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*",s=new RegExp("^"+r+"$");e.isExist=function(e){return void 0!==e},e.isEmptyObject=function(e){return 0===Object.keys(e).length},e.merge=function(e,t,r){if(t){const s=Object.keys(t),i=s.length;for(let n=0;n<i;n++)e[s[n]]="strict"===r?[t[s[n]]]:t[s[n]]}},e.getValue=function(t){return e.isExist(t)?t:""},e.isName=function(e){return!(null==s.exec(e))},e.getAllMatches=function(e,t){const r=[];let s=t.exec(e);for(;s;){const i=[];i.startIndex=t.lastIndex-s[0].length;const n=s.length;for(let e=0;e<n;e++)i.push(s[e]);r.push(i),s=t.exec(e)}return r},e.nameRegexp=r}(f)),f}function A(){if(g)return m;g=1;const e=E(),t={allowBooleanAttributes:!1,unpairedTags:[]};function r(e){return" "===e||"\t"===e||"\n"===e||"\r"===e}function s(e,t){const r=t;for(;t<e.length;t++)if("?"!=e[t]&&" "!=e[t]);else{const s=e.substr(r,t-r);if(t>5&&"xml"===s)return d("InvalidXml","XML declaration allowed only at the start of the document.",h(e,t));if("?"==e[t]&&">"==e[t+1]){t++;break}}return t}function i(e,t){if(e.length>t+5&&"-"===e[t+1]&&"-"===e[t+2]){for(t+=3;t<e.length;t++)if("-"===e[t]&&"-"===e[t+1]&&">"===e[t+2]){t+=2;break}}else if(e.length>t+8&&"D"===e[t+1]&&"O"===e[t+2]&&"C"===e[t+3]&&"T"===e[t+4]&&"Y"===e[t+5]&&"P"===e[t+6]&&"E"===e[t+7]){let r=1;for(t+=8;t<e.length;t++)if("<"===e[t])r++;else if(">"===e[t]&&(r--,0===r))break}else if(e.length>t+9&&"["===e[t+1]&&"C"===e[t+2]&&"D"===e[t+3]&&"A"===e[t+4]&&"T"===e[t+5]&&"A"===e[t+6]&&"["===e[t+7])for(t+=8;t<e.length;t++)if("]"===e[t]&&"]"===e[t+1]&&">"===e[t+2]){t+=2;break}return t}m.validate=function(n,o){o=Object.assign({},t,o);const u=[];let p=!1,g=!1;"\ufeff"===n[0]&&(n=n.substr(1));for(let t=0;t<n.length;t++)if("<"===n[t]&&"?"===n[t+1]){if(t+=2,t=s(n,t),t.err)return t}else{if("<"!==n[t]){if(r(n[t]))continue;return d("InvalidChar","char '"+n[t]+"' is not expected.",h(n,t))}{let f=t;if(t++,"!"===n[t]){t=i(n,t);continue}{let E=!1;"/"===n[t]&&(E=!0,t++);let A="";for(;t<n.length&&">"!==n[t]&&" "!==n[t]&&"\t"!==n[t]&&"\n"!==n[t]&&"\r"!==n[t];t++)A+=n[t];if(A=A.trim(),"/"===A[A.length-1]&&(A=A.substring(0,A.length-1),t--),m=A,!e.isName(m)){let e;return e=0===A.trim().length?"Invalid space after '<'.":"Tag '"+A+"' is an invalid name.",d("InvalidTag",e,h(n,t))}const b=a(n,t);if(!1===b)return d("InvalidAttr","Attributes for '"+A+"' have open quote.",h(n,t));let I=b.value;if(t=b.index,"/"===I[I.length-1]){const e=t-I.length;I=I.substring(0,I.length-1);const r=l(I,o);if(!0!==r)return d(r.err.code,r.err.msg,h(n,e+r.err.line));p=!0}else if(E){if(!b.tagClosed)return d("InvalidTag","Closing tag '"+A+"' doesn't have proper closing.",h(n,t));if(I.trim().length>0)return d("InvalidTag","Closing tag '"+A+"' can't have attributes or invalid starting.",h(n,f));if(0===u.length)return d("InvalidTag","Closing tag '"+A+"' has not been opened.",h(n,f));{const e=u.pop();if(A!==e.tagName){let t=h(n,e.tagStartPos);return d("InvalidTag","Expected closing tag '"+e.tagName+"' (opened in line "+t.line+", col "+t.col+") instead of closing tag '"+A+"'.",h(n,f))}0==u.length&&(g=!0)}}else{const e=l(I,o);if(!0!==e)return d(e.err.code,e.err.msg,h(n,t-I.length+e.err.line));if(!0===g)return d("InvalidXml","Multiple possible root nodes found.",h(n,t));-1!==o.unpairedTags.indexOf(A)||u.push({tagName:A,tagStartPos:f}),p=!0}for(t++;t<n.length;t++)if("<"===n[t]){if("!"===n[t+1]){t++,t=i(n,t);continue}if("?"!==n[t+1])break;if(t=s(n,++t),t.err)return t}else if("&"===n[t]){const e=c(n,t);if(-1==e)return d("InvalidChar","char '&' is not expected.",h(n,t));t=e}else if(!0===g&&!r(n[t]))return d("InvalidXml","Extra text at the end",h(n,t));"<"===n[t]&&t--}}}var m;return p?1==u.length?d("InvalidTag","Unclosed tag '"+u[0].tagName+"'.",h(n,u[0].tagStartPos)):!(u.length>0)||d("InvalidXml","Invalid '"+JSON.stringify(u.map((e=>e.tagName)),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):d("InvalidXml","Start tag expected.",1)};const n='"',o="'";function a(e,t){let r="",s="",i=!1;for(;t<e.length;t++){if(e[t]===n||e[t]===o)""===s?s=e[t]:s!==e[t]||(s="");else if(">"===e[t]&&""===s){i=!0;break}r+=e[t]}return""===s&&{value:r,index:t,tagClosed:i}}const u=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function l(t,r){const s=e.getAllMatches(t,u),i={};for(let e=0;e<s.length;e++){if(0===s[e][1].length)return d("InvalidAttr","Attribute '"+s[e][2]+"' has no space in starting.",f(s[e]));if(void 0!==s[e][3]&&void 0===s[e][4])return d("InvalidAttr","Attribute '"+s[e][2]+"' is without value.",f(s[e]));if(void 0===s[e][3]&&!r.allowBooleanAttributes)return d("InvalidAttr","boolean attribute '"+s[e][2]+"' is not allowed.",f(s[e]));const t=s[e][2];if(!p(t))return d("InvalidAttr","Attribute '"+t+"' is an invalid name.",f(s[e]));if(i.hasOwnProperty(t))return d("InvalidAttr","Attribute '"+t+"' is repeated.",f(s[e]));i[t]=1}return!0}function c(e,t){if(";"===e[++t])return-1;if("#"===e[t])return function(e,t){let r=/\d/;for("x"===e[t]&&(t++,r=/[\da-fA-F]/);t<e.length;t++){if(";"===e[t])return t;if(!e[t].match(r))break}return-1}(e,++t);let r=0;for(;t<e.length;t++,r++)if(!(e[t].match(/\w/)&&r<20)){if(";"===e[t])break;return-1}return t}function d(e,t,r){return{err:{code:e,msg:t,line:r.line||r,col:r.col}}}function p(t){return e.isName(t)}function h(e,t){const r=e.substring(0,t).split(/\r?\n/);return{line:r.length,col:r[r.length-1].length+1}}function f(e){return e.startIndex+e[1].length}return m}var b,I,N,v,L,y,O,x,T,P,R,w={};function C(){return T?x:(T=1,x=function(e){return"function"==typeof e?e:Array.isArray(e)?t=>{for(const r of e){if("string"==typeof r&&t===r)return!0;if(r instanceof RegExp&&r.test(t))return!0}}:()=>!1})}var U,S,$,_,F,D,G,k,M,j,B,V,X,q={};function K(){if(U)return q;function e(i,n,o){let a;const u={};for(let l=0;l<i.length;l++){const c=i[l],d=t(c);let p="";if(p=void 0===o?d:o+"."+d,d===n.textNodeName)void 0===a?a=c[d]:a+=""+c[d];else{if(void 0===d)continue;if(c[d]){let t=e(c[d],n,p);const i=s(t,n);c[":@"]?r(t,c[":@"],p,n):1!==Object.keys(t).length||void 0===t[n.textNodeName]||n.alwaysCreateTextNode?0===Object.keys(t).length&&(n.alwaysCreateTextNode?t[n.textNodeName]="":t=""):t=t[n.textNodeName],void 0!==u[d]&&u.hasOwnProperty(d)?(Array.isArray(u[d])||(u[d]=[u[d]]),u[d].push(t)):n.isArray(d,p,i)?u[d]=[t]:u[d]=t}}}return"string"==typeof a?a.length>0&&(u[n.textNodeName]=a):void 0!==a&&(u[n.textNodeName]=a),u}function t(e){const t=Object.keys(e);for(let e=0;e<t.length;e++){const r=t[e];if(":@"!==r)return r}}function r(e,t,r,s){if(t){const i=Object.keys(t),n=i.length;for(let o=0;o<n;o++){const n=i[o];s.isArray(n,r+"."+n,!0,!0)?e[n]=[t[n]]:e[n]=t[n]}}}function s(e,t){const{textNodeName:r}=t,s=Object.keys(e).length;return 0===s||!(1!==s||!e[r]&&"boolean"!=typeof e[r]&&0!==e[r])}return U=1,q.prettify=function(t,r){return e(t,r)},q}function H(){if($)return S;$=1;const{buildOptions:e}=function(){if(b)return w;b=1;const e={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(e,t){return t},attributeValueProcessor:function(e,t){return t},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(e,t,r){return e}};return w.buildOptions=function(t){return Object.assign({},e,t)},w.defaultOptions=e,w}(),t=function(){if(R)return P;R=1;const e=E(),t=N?I:(N=1,I=class{constructor(e){this.tagname=e,this.child=[],this[":@"]={}}add(e,t){"__proto__"===e&&(e="#__proto__"),this.child.push({[e]:t})}addChild(e){"__proto__"===e.tagname&&(e.tagname="#__proto__"),e[":@"]&&Object.keys(e[":@"]).length>0?this.child.push({[e.tagname]:e.child,":@":e[":@"]}):this.child.push({[e.tagname]:e.child})}}),r=function(){if(L)return v;L=1;const e=E();function t(e,t){let r="";for(;t<e.length&&"'"!==e[t]&&'"'!==e[t];t++)r+=e[t];if(r=r.trim(),-1!==r.indexOf(" "))throw new Error("External entites are not supported");const s=e[t++];let i="";for(;t<e.length&&e[t]!==s;t++)i+=e[t];return[r,i,t]}function r(e,t){return"!"===e[t+1]&&"E"===e[t+2]&&"N"===e[t+3]&&"T"===e[t+4]&&"I"===e[t+5]&&"T"===e[t+6]&&"Y"===e[t+7]}function s(e,t){return"!"===e[t+1]&&"E"===e[t+2]&&"L"===e[t+3]&&"E"===e[t+4]&&"M"===e[t+5]&&"E"===e[t+6]&&"N"===e[t+7]&&"T"===e[t+8]}function i(e,t){return"!"===e[t+1]&&"A"===e[t+2]&&"T"===e[t+3]&&"T"===e[t+4]&&"L"===e[t+5]&&"I"===e[t+6]&&"S"===e[t+7]&&"T"===e[t+8]}function n(e,t){return"!"===e[t+1]&&"N"===e[t+2]&&"O"===e[t+3]&&"T"===e[t+4]&&"A"===e[t+5]&&"T"===e[t+6]&&"I"===e[t+7]&&"O"===e[t+8]&&"N"===e[t+9]}function o(t){if(e.isName(t))return t;throw new Error(`Invalid entity name ${t}`)}return v=function(e,a){const u={};if("O"!==e[a+3]||"C"!==e[a+4]||"T"!==e[a+5]||"Y"!==e[a+6]||"P"!==e[a+7]||"E"!==e[a+8])throw new Error("Invalid Tag instead of DOCTYPE");{a+=9;let l=1,c=!1,d=!1,p="";for(;a<e.length;a++)if("<"!==e[a]||d)if(">"===e[a]){if(d?"-"===e[a-1]&&"-"===e[a-2]&&(d=!1,l--):l--,0===l)break}else"["===e[a]?c=!0:p+=e[a];else{if(c&&r(e,a)){let r,s;a+=7,[r,s,a]=t(e,a+1),-1===s.indexOf("&")&&(u[o(r)]={regx:RegExp(`&${r};`,"g"),val:s})}else c&&s(e,a)||c&&i(e,a)?a+=8:c&&n(e,a)?a+=9:d=!0;l++,p=""}if(0!==l)throw new Error("Unclosed DOCTYPE")}return{entities:u,i:a}}}(),s=function(){if(O)return y;O=1;const e=/^[-+]?0x[a-fA-F0-9]+$/,t=/^([\-\+])?(0*)(\.[0-9]+([eE]\-?[0-9]+)?|[0-9]+(\.[0-9]+([eE]\-?[0-9]+)?)?)$/;!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt),!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat);const r={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};return y=function(s,i={}){if(i=Object.assign({},r,i),!s||"string"!=typeof s)return s;let n=s.trim();if(void 0!==i.skipLike&&i.skipLike.test(n))return s;if(i.hex&&e.test(n))return Number.parseInt(n,16);{const e=t.exec(n);if(e){const t=e[1],r=e[2];let a=(o=e[3])&&-1!==o.indexOf(".")?("."===(o=o.replace(/0+$/,""))?o="0":"."===o[0]?o="0"+o:"."===o[o.length-1]&&(o=o.substr(0,o.length-1)),o):o;const u=e[4]||e[6];if(!i.leadingZeros&&r.length>0&&t&&"."!==n[2])return s;if(!i.leadingZeros&&r.length>0&&!t&&"."!==n[1])return s;{const e=Number(n),o=""+e;return-1!==o.search(/[eE]/)||u?i.eNotation?e:s:-1!==n.indexOf(".")?"0"===o&&""===a||o===a||t&&o==="-"+a?e:s:r?a===o||t+a===o?e:s:n===o||n===t+o?e:s}}return s}var o}}(),i=C();function n(e){const t=Object.keys(e);for(let r=0;r<t.length;r++){const s=t[r];this.lastEntities[s]={regex:new RegExp("&"+s+";","g"),val:e[s]}}}function o(e,t,r,s,i,n,o){if(void 0!==e&&(this.options.trimValues&&!s&&(e=e.trim()),e.length>0)){o||(e=this.replaceEntitiesValue(e));const s=this.options.tagValueProcessor(t,e,r,i,n);return null==s?e:typeof s!=typeof e||s!==e?s:this.options.trimValues||e.trim()===e?b(e,this.options.parseTagValue,this.options.numberParseOptions):e}}function a(e){if(this.options.removeNSPrefix){const t=e.split(":"),r="/"===e.charAt(0)?"/":"";if("xmlns"===t[0])return"";2===t.length&&(e=r+t[1])}return e}const u=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function l(t,r,s){if(!0!==this.options.ignoreAttributes&&"string"==typeof t){const s=e.getAllMatches(t,u),i=s.length,n={};for(let e=0;e<i;e++){const t=this.resolveNameSpace(s[e][1]);if(this.ignoreAttributesFn(t,r))continue;let i=s[e][4],o=this.options.attributeNamePrefix+t;if(t.length)if(this.options.transformAttributeName&&(o=this.options.transformAttributeName(o)),"__proto__"===o&&(o="#__proto__"),void 0!==i){this.options.trimValues&&(i=i.trim()),i=this.replaceEntitiesValue(i);const e=this.options.attributeValueProcessor(t,i,r);n[o]=null==e?i:typeof e!=typeof i||e!==i?e:b(i,this.options.parseAttributeValue,this.options.numberParseOptions)}else this.options.allowBooleanAttributes&&(n[o]=!0)}if(!Object.keys(n).length)return;if(this.options.attributesGroupName){const e={};return e[this.options.attributesGroupName]=n,e}return n}}const c=function(e){e=e.replace(/\r\n?/g,"\n");const s=new t("!xml");let i=s,n="",o="";for(let a=0;a<e.length;a++)if("<"===e[a])if("/"===e[a+1]){const t=m(e,">",a,"Closing Tag is not closed.");let r=e.substring(a+2,t).trim();if(this.options.removeNSPrefix){const e=r.indexOf(":");-1!==e&&(r=r.substr(e+1))}this.options.transformTagName&&(r=this.options.transformTagName(r)),i&&(n=this.saveTextToParentTag(n,i,o));const s=o.substring(o.lastIndexOf(".")+1);if(r&&-1!==this.options.unpairedTags.indexOf(r))throw new Error(`Unpaired tag can not be used as closing tag: </${r}>`);let u=0;s&&-1!==this.options.unpairedTags.indexOf(s)?(u=o.lastIndexOf(".",o.lastIndexOf(".")-1),this.tagsNodeStack.pop()):u=o.lastIndexOf("."),o=o.substring(0,u),i=this.tagsNodeStack.pop(),n="",a=t}else if("?"===e[a+1]){let r=f(e,a,!1,"?>");if(!r)throw new Error("Pi Tag is not closed.");if(n=this.saveTextToParentTag(n,i,o),this.options.ignoreDeclaration&&"?xml"===r.tagName||this.options.ignorePiTags);else{const e=new t(r.tagName);e.add(this.options.textNodeName,""),r.tagName!==r.tagExp&&r.attrExpPresent&&(e[":@"]=this.buildAttributesMap(r.tagExp,o,r.tagName)),this.addChild(i,e,o)}a=r.closeIndex+1}else if("!--"===e.substr(a+1,3)){const t=m(e,"--\x3e",a+4,"Comment is not closed.");if(this.options.commentPropName){const r=e.substring(a+4,t-2);n=this.saveTextToParentTag(n,i,o),i.add(this.options.commentPropName,[{[this.options.textNodeName]:r}])}a=t}else if("!D"===e.substr(a+1,2)){const t=r(e,a);this.docTypeEntities=t.entities,a=t.i}else if("!["===e.substr(a+1,2)){const t=m(e,"]]>",a,"CDATA is not closed.")-2,r=e.substring(a+9,t);n=this.saveTextToParentTag(n,i,o);let s=this.parseTextData(r,i.tagname,o,!0,!1,!0,!0);null==s&&(s=""),this.options.cdataPropName?i.add(this.options.cdataPropName,[{[this.options.textNodeName]:r}]):i.add(this.options.textNodeName,s),a=t+2}else{let r=f(e,a,this.options.removeNSPrefix),u=r.tagName;const l=r.rawTagName;let c=r.tagExp,d=r.attrExpPresent,p=r.closeIndex;this.options.transformTagName&&(u=this.options.transformTagName(u)),i&&n&&"!xml"!==i.tagname&&(n=this.saveTextToParentTag(n,i,o,!1));const h=i;if(h&&-1!==this.options.unpairedTags.indexOf(h.tagname)&&(i=this.tagsNodeStack.pop(),o=o.substring(0,o.lastIndexOf("."))),u!==s.tagname&&(o+=o?"."+u:u),this.isItStopNode(this.options.stopNodes,o,u)){let s="";if(c.length>0&&c.lastIndexOf("/")===c.length-1)"/"===u[u.length-1]?(u=u.substr(0,u.length-1),o=o.substr(0,o.length-1),c=u):c=c.substr(0,c.length-1),a=r.closeIndex;else if(-1!==this.options.unpairedTags.indexOf(u))a=r.closeIndex;else{const t=this.readStopNodeData(e,l,p+1);if(!t)throw new Error(`Unexpected end of ${l}`);a=t.i,s=t.tagContent}const n=new t(u);u!==c&&d&&(n[":@"]=this.buildAttributesMap(c,o,u)),s&&(s=this.parseTextData(s,u,o,!0,d,!0,!0)),o=o.substr(0,o.lastIndexOf(".")),n.add(this.options.textNodeName,s),this.addChild(i,n,o)}else{if(c.length>0&&c.lastIndexOf("/")===c.length-1){"/"===u[u.length-1]?(u=u.substr(0,u.length-1),o=o.substr(0,o.length-1),c=u):c=c.substr(0,c.length-1),this.options.transformTagName&&(u=this.options.transformTagName(u));const e=new t(u);u!==c&&d&&(e[":@"]=this.buildAttributesMap(c,o,u)),this.addChild(i,e,o),o=o.substr(0,o.lastIndexOf("."))}else{const e=new t(u);this.tagsNodeStack.push(i),u!==c&&d&&(e[":@"]=this.buildAttributesMap(c,o,u)),this.addChild(i,e,o),i=e}n="",a=p}}else n+=e[a];return s.child};function d(e,t,r){const s=this.options.updateTag(t.tagname,r,t[":@"]);!1===s||("string"==typeof s?(t.tagname=s,e.addChild(t)):e.addChild(t))}const p=function(e){if(this.options.processEntities){for(let t in this.docTypeEntities){const r=this.docTypeEntities[t];e=e.replace(r.regx,r.val)}for(let t in this.lastEntities){const r=this.lastEntities[t];e=e.replace(r.regex,r.val)}if(this.options.htmlEntities)for(let t in this.htmlEntities){const r=this.htmlEntities[t];e=e.replace(r.regex,r.val)}e=e.replace(this.ampEntity.regex,this.ampEntity.val)}return e};function h(e,t,r,s){return e&&(void 0===s&&(s=0===Object.keys(t.child).length),void 0!==(e=this.parseTextData(e,t.tagname,r,!1,!!t[":@"]&&0!==Object.keys(t[":@"]).length,s))&&""!==e&&t.add(this.options.textNodeName,e),e=""),e}function g(e,t,r){const s="*."+r;for(const r in e){const i=e[r];if(s===i||t===i)return!0}return!1}function m(e,t,r,s){const i=e.indexOf(t,r);if(-1===i)throw new Error(s);return i+t.length-1}function f(e,t,r,s=">"){const i=function(e,t,r=">"){let s,i="";for(let n=t;n<e.length;n++){let t=e[n];if(s)t===s&&(s="");else if('"'===t||"'"===t)s=t;else if(t===r[0]){if(!r[1])return{data:i,index:n};if(e[n+1]===r[1])return{data:i,index:n}}else"\t"===t&&(t=" ");i+=t}}(e,t+1,s);if(!i)return;let n=i.data;const o=i.index,a=n.search(/\s/);let u=n,l=!0;-1!==a&&(u=n.substring(0,a),n=n.substring(a+1).trimStart());const c=u;if(r){const e=u.indexOf(":");-1!==e&&(u=u.substr(e+1),l=u!==i.data.substr(e+1))}return{tagName:u,tagExp:n,closeIndex:o,attrExpPresent:l,rawTagName:c}}function A(e,t,r){const s=r;let i=1;for(;r<e.length;r++)if("<"===e[r])if("/"===e[r+1]){const n=m(e,">",r,`${t} is not closed`);if(e.substring(r+2,n).trim()===t&&(i--,0===i))return{tagContent:e.substring(s,r),i:n};r=n}else if("?"===e[r+1])r=m(e,"?>",r+1,"StopNode is not closed.");else if("!--"===e.substr(r+1,3))r=m(e,"--\x3e",r+3,"StopNode is not closed.");else if("!["===e.substr(r+1,2))r=m(e,"]]>",r,"StopNode is not closed.")-2;else{const s=f(e,r,">");s&&((s&&s.tagName)===t&&"/"!==s.tagExp[s.tagExp.length-1]&&i++,r=s.closeIndex)}}function b(t,r,i){if(r&&"string"==typeof t){const e=t.trim();return"true"===e||"false"!==e&&s(t,i)}return e.isExist(t)?t:""}return P=class{constructor(e){this.options=e,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"¢"},pound:{regex:/&(pound|#163);/g,val:"£"},yen:{regex:/&(yen|#165);/g,val:"¥"},euro:{regex:/&(euro|#8364);/g,val:"€"},copyright:{regex:/&(copy|#169);/g,val:"©"},reg:{regex:/&(reg|#174);/g,val:"®"},inr:{regex:/&(inr|#8377);/g,val:"₹"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(e,t)=>String.fromCharCode(Number.parseInt(t,10))},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(e,t)=>String.fromCharCode(Number.parseInt(t,16))}},this.addExternalEntities=n,this.parseXml=c,this.parseTextData=o,this.resolveNameSpace=a,this.buildAttributesMap=l,this.isItStopNode=g,this.replaceEntitiesValue=p,this.readStopNodeData=A,this.saveTextToParentTag=h,this.addChild=d,this.ignoreAttributesFn=i(this.options.ignoreAttributes)}}}(),{prettify:r}=K(),s=A();return S=class{constructor(t){this.externalEntities={},this.options=e(t)}parse(e,i){if("string"==typeof e);else{if(!e.toString)throw new Error("XML data is accepted in String or Bytes[] form.");e=e.toString()}if(i){!0===i&&(i={});const t=s.validate(e,i);if(!0!==t)throw Error(`${t.err.msg}:${t.err.line}:${t.err.col}`)}const n=new t(this.options);n.addExternalEntities(this.externalEntities);const o=n.parseXml(e);return this.options.preserveOrder||void 0===o?o:r(o,this.options)}addEntity(e,t){if(-1!==t.indexOf("&"))throw new Error("Entity value can't have '&'");if(-1!==e.indexOf("&")||-1!==e.indexOf(";"))throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for '
'");if("&"===t)throw new Error("An entity with value '&' is not permitted");this.externalEntities[e]=t}}}function J(){if(F)return _;function e(n,o,a,u){let l="",c=!1;for(let d=0;d<n.length;d++){const p=n[d],h=t(p);if(void 0===h)continue;let g="";if(g=0===a.length?h:`${a}.${h}`,h===o.textNodeName){let e=p[h];s(g,o)||(e=o.tagValueProcessor(h,e),e=i(e,o)),c&&(l+=u),l+=e,c=!1;continue}if(h===o.cdataPropName){c&&(l+=u),l+=`<![CDATA[${p[h][0][o.textNodeName]}]]>`,c=!1;continue}if(h===o.commentPropName){l+=u+`\x3c!--${p[h][0][o.textNodeName]}--\x3e`,c=!0;continue}if("?"===h[0]){const e=r(p[":@"],o),t="?xml"===h?"":u;let s=p[h][0][o.textNodeName];s=0!==s.length?" "+s:"",l+=t+`<${h}${s}${e}?>`,c=!0;continue}let m=u;""!==m&&(m+=o.indentBy);const f=u+`<${h}${r(p[":@"],o)}`,E=e(p[h],o,g,m);-1!==o.unpairedTags.indexOf(h)?o.suppressUnpairedNode?l+=f+">":l+=f+"/>":E&&0!==E.length||!o.suppressEmptyNode?E&&E.endsWith(">")?l+=f+`>${E}${u}</${h}>`:(l+=f+">",E&&""!==u&&(E.includes("/>")||E.includes("</"))?l+=u+o.indentBy+E+u:l+=E,l+=`</${h}>`):l+=f+"/>",c=!0}return l}function t(e){const t=Object.keys(e);for(let r=0;r<t.length;r++){const s=t[r];if(e.hasOwnProperty(s)&&":@"!==s)return s}}function r(e,t){let r="";if(e&&!t.ignoreAttributes)for(let s in e){if(!e.hasOwnProperty(s))continue;let n=t.attributeValueProcessor(s,e[s]);n=i(n,t),!0===n&&t.suppressBooleanAttributes?r+=` ${s.substr(t.attributeNamePrefix.length)}`:r+=` ${s.substr(t.attributeNamePrefix.length)}="${n}"`}return r}function s(e,t){let r=(e=e.substr(0,e.length-t.textNodeName.length-1)).substr(e.lastIndexOf(".")+1);for(let s in t.stopNodes)if(t.stopNodes[s]===e||t.stopNodes[s]==="*."+r)return!0;return!1}function i(e,t){if(e&&e.length>0&&t.processEntities)for(let r=0;r<t.entities.length;r++){const s=t.entities[r];e=e.replace(s.regex,s.val)}return e}return F=1,_=function(t,r){let s="";return r.format&&r.indentBy.length>0&&(s="\n"),e(t,r,"",s)}}function Y(){if(B)return j;B=1;const e="object"==typeof o&&o.env&&o.env.NODE_DEBUG&&/\bsemver\b/i.test(o.env.NODE_DEBUG)?(...e)=>console.error("SEMVER",...e):()=>{};return j=e}function Z(){if(X)return V;X=1;const e=Number.MAX_SAFE_INTEGER||9007199254740991;return V={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_BUILD_LENGTH:250,MAX_SAFE_INTEGER:e,RELEASE_TYPES:["major","premajor","minor","preminor","patch","prepatch","prerelease"],SEMVER_SPEC_VERSION:"2.0.0",FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}}!function(){if(M)return k;M=1;const e=A(),t=H(),r=function(){if(G)return D;G=1;const e=J(),t=C(),r={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(e,t){return t},attributeValueProcessor:function(e,t){return t},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&"},{regex:new RegExp(">","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1};function s(e){this.options=Object.assign({},r,e),!0===this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.ignoreAttributesFn=t(this.options.ignoreAttributes),this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=o),this.processTextOrObjNode=i,this.options.format?(this.indentate=n,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function i(e,t,r,s){const i=this.j2x(e,r+1,s.concat(t));return void 0!==e[this.options.textNodeName]&&1===Object.keys(e).length?this.buildTextValNode(e[this.options.textNodeName],t,i.attrStr,r):this.buildObjectNode(i.val,t,i.attrStr,r)}function n(e){return this.options.indentBy.repeat(e)}function o(e){return!(!e.startsWith(this.options.attributeNamePrefix)||e===this.options.textNodeName)&&e.substr(this.attrPrefixLen)}return s.prototype.build=function(t){return this.options.preserveOrder?e(t,this.options):(Array.isArray(t)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(t={[this.options.arrayNodeName]:t}),this.j2x(t,0,[]).val)},s.prototype.j2x=function(e,t,r){let s="",i="";const n=r.join(".");for(let o in e)if(Object.prototype.hasOwnProperty.call(e,o))if(void 0===e[o])this.isAttribute(o)&&(i+="");else if(null===e[o])this.isAttribute(o)?i+="":"?"===o[0]?i+=this.indentate(t)+"<"+o+"?"+this.tagEndChar:i+=this.indentate(t)+"<"+o+"/"+this.tagEndChar;else if(e[o]instanceof Date)i+=this.buildTextValNode(e[o],o,"",t);else if("object"!=typeof e[o]){const r=this.isAttribute(o);if(r&&!this.ignoreAttributesFn(r,n))s+=this.buildAttrPairStr(r,""+e[o]);else if(!r)if(o===this.options.textNodeName){let t=this.options.tagValueProcessor(o,""+e[o]);i+=this.replaceEntitiesValue(t)}else i+=this.buildTextValNode(e[o],o,"",t)}else if(Array.isArray(e[o])){const s=e[o].length;let n="",a="";for(let u=0;u<s;u++){const s=e[o][u];if(void 0===s);else if(null===s)"?"===o[0]?i+=this.indentate(t)+"<"+o+"?"+this.tagEndChar:i+=this.indentate(t)+"<"+o+"/"+this.tagEndChar;else if("object"==typeof s)if(this.options.oneListGroup){const e=this.j2x(s,t+1,r.concat(o));n+=e.val,this.options.attributesGroupName&&s.hasOwnProperty(this.options.attributesGroupName)&&(a+=e.attrStr)}else n+=this.processTextOrObjNode(s,o,t,r);else if(this.options.oneListGroup){let e=this.options.tagValueProcessor(o,s);e=this.replaceEntitiesValue(e),n+=e}else n+=this.buildTextValNode(s,o,"",t)}this.options.oneListGroup&&(n=this.buildObjectNode(n,o,a,t)),i+=n}else if(this.options.attributesGroupName&&o===this.options.attributesGroupName){const t=Object.keys(e[o]),r=t.length;for(let i=0;i<r;i++)s+=this.buildAttrPairStr(t[i],""+e[o][t[i]])}else i+=this.processTextOrObjNode(e[o],o,t,r);return{attrStr:s,val:i}},s.prototype.buildAttrPairStr=function(e,t){return t=this.options.attributeValueProcessor(e,""+t),t=this.replaceEntitiesValue(t),this.options.suppressBooleanAttributes&&"true"===t?" "+e:" "+e+'="'+t+'"'},s.prototype.buildObjectNode=function(e,t,r,s){if(""===e)return"?"===t[0]?this.indentate(s)+"<"+t+r+"?"+this.tagEndChar:this.indentate(s)+"<"+t+r+this.closeTag(t)+this.tagEndChar;{let i="</"+t+this.tagEndChar,n="";return"?"===t[0]&&(n="?",i=""),!r&&""!==r||-1!==e.indexOf("<")?!1!==this.options.commentPropName&&t===this.options.commentPropName&&0===n.length?this.indentate(s)+`\x3c!--${e}--\x3e`+this.newLine:this.indentate(s)+"<"+t+r+n+this.tagEndChar+e+this.indentate(s)+i:this.indentate(s)+"<"+t+r+n+">"+e+i}},s.prototype.closeTag=function(e){let t="";return-1!==this.options.unpairedTags.indexOf(e)?this.options.suppressUnpairedNode||(t="/"):t=this.options.suppressEmptyNode?"/":`></${e}`,t},s.prototype.buildTextValNode=function(e,t,r,s){if(!1!==this.options.cdataPropName&&t===this.options.cdataPropName)return this.indentate(s)+`<![CDATA[${e}]]>`+this.newLine;if(!1!==this.options.commentPropName&&t===this.options.commentPropName)return this.indentate(s)+`\x3c!--${e}--\x3e`+this.newLine;if("?"===t[0])return this.indentate(s)+"<"+t+r+"?"+this.tagEndChar;{let i=this.options.tagValueProcessor(t,e);return i=this.replaceEntitiesValue(i),""===i?this.indentate(s)+"<"+t+r+this.closeTag(t)+this.tagEndChar:this.indentate(s)+"<"+t+r+">"+i+"</"+t+this.tagEndChar}},s.prototype.replaceEntitiesValue=function(e){if(e&&e.length>0&&this.options.processEntities)for(let t=0;t<this.options.entities.length;t++){const r=this.options.entities[t];e=e.replace(r.regex,r.val)}return e},D=s}();k={XMLParser:t,XMLValidator:e,XMLBuilder:r}}();var z,Q,W,ee,te,re,se,ie,ne,oe,ae,ue,le,ce={exports:{}};function de(){if(se)return re;se=1;const e=Y(),{MAX_LENGTH:t,MAX_SAFE_INTEGER:r}=Z(),{safeRe:s,t:i}=(z||(z=1,function(e,t){const{MAX_SAFE_COMPONENT_LENGTH:r,MAX_SAFE_BUILD_LENGTH:s,MAX_LENGTH:i}=Z(),n=Y(),o=(t=e.exports={}).re=[],a=t.safeRe=[],u=t.src=[],l=t.t={};let c=0;const d="[a-zA-Z0-9-]",p=[["\\s",1],["\\d",i],[d,s]],h=(e,t,r)=>{const s=(e=>{for(const[t,r]of p)e=e.split(`${t}*`).join(`${t}{0,${r}}`).split(`${t}+`).join(`${t}{1,${r}}`);return e})(t),i=c++;n(e,i,t),l[e]=i,u[i]=t,o[i]=new RegExp(t,r?"g":void 0),a[i]=new RegExp(s,r?"g":void 0)};h("NUMERICIDENTIFIER","0|[1-9]\\d*"),h("NUMERICIDENTIFIERLOOSE","\\d+"),h("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${d}*`),h("MAINVERSION",`(${u[l.NUMERICIDENTIFIER]})\\.(${u[l.NUMERICIDENTIFIER]})\\.(${u[l.NUMERICIDENTIFIER]})`),h("MAINVERSIONLOOSE",`(${u[l.NUMERICIDENTIFIERLOOSE]})\\.(${u[l.NUMERICIDENTIFIERLOOSE]})\\.(${u[l.NUMERICIDENTIFIERLOOSE]})`),h("PRERELEASEIDENTIFIER",`(?:${u[l.NUMERICIDENTIFIER]}|${u[l.NONNUMERICIDENTIFIER]})`),h("PRERELEASEIDENTIFIERLOOSE",`(?:${u[l.NUMERICIDENTIFIERLOOSE]}|${u[l.NONNUMERICIDENTIFIER]})`),h("PRERELEASE",`(?:-(${u[l.PRERELEASEIDENTIFIER]}(?:\\.${u[l.PRERELEASEIDENTIFIER]})*))`),h("PRERELEASELOOSE",`(?:-?(${u[l.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${u[l.PRERELEASEIDENTIFIERLOOSE]})*))`),h("BUILDIDENTIFIER",`${d}+`),h("BUILD",`(?:\\+(${u[l.BUILDIDENTIFIER]}(?:\\.${u[l.BUILDIDENTIFIER]})*))`),h("FULLPLAIN",`v?${u[l.MAINVERSION]}${u[l.PRERELEASE]}?${u[l.BUILD]}?`),h("FULL",`^${u[l.FULLPLAIN]}$`),h("LOOSEPLAIN",`[v=\\s]*${u[l.MAINVERSIONLOOSE]}${u[l.PRERELEASELOOSE]}?${u[l.BUILD]}?`),h("LOOSE",`^${u[l.LOOSEPLAIN]}$`),h("GTLT","((?:<|>)?=?)"),h("XRANGEIDENTIFIERLOOSE",`${u[l.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),h("XRANGEIDENTIFIER",`${u[l.NUMERICIDENTIFIER]}|x|X|\\*`),h("XRANGEPLAIN",`[v=\\s]*(${u[l.XRANGEIDENTIFIER]})(?:\\.(${u[l.XRANGEIDENTIFIER]})(?:\\.(${u[l.XRANGEIDENTIFIER]})(?:${u[l.PRERELEASE]})?${u[l.BUILD]}?)?)?`),h("XRANGEPLAINLOOSE",`[v=\\s]*(${u[l.XRANGEIDENTIFIERLOOSE]})(?:\\.(${u[l.XRANGEIDENTIFIERLOOSE]})(?:\\.(${u[l.XRANGEIDENTIFIERLOOSE]})(?:${u[l.PRERELEASELOOSE]})?${u[l.BUILD]}?)?)?`),h("XRANGE",`^${u[l.GTLT]}\\s*${u[l.XRANGEPLAIN]}$`),h("XRANGELOOSE",`^${u[l.GTLT]}\\s*${u[l.XRANGEPLAINLOOSE]}$`),h("COERCEPLAIN",`(^|[^\\d])(\\d{1,${r}})(?:\\.(\\d{1,${r}}))?(?:\\.(\\d{1,${r}}))?`),h("COERCE",`${u[l.COERCEPLAIN]}(?:$|[^\\d])`),h("COERCEFULL",u[l.COERCEPLAIN]+`(?:${u[l.PRERELEASE]})?(?:${u[l.BUILD]})?(?:$|[^\\d])`),h("COERCERTL",u[l.COERCE],!0),h("COERCERTLFULL",u[l.COERCEFULL],!0),h("LONETILDE","(?:~>?)"),h("TILDETRIM",`(\\s*)${u[l.LONETILDE]}\\s+`,!0),t.tildeTrimReplace="$1~",h("TILDE",`^${u[l.LONETILDE]}${u[l.XRANGEPLAIN]}$`),h("TILDELOOSE",`^${u[l.LONETILDE]}${u[l.XRANGEPLAINLOOSE]}$`),h("LONECARET","(?:\\^)"),h("CARETTRIM",`(\\s*)${u[l.LONECARET]}\\s+`,!0),t.caretTrimReplace="$1^",h("CARET",`^${u[l.LONECARET]}${u[l.XRANGEPLAIN]}$`),h("CARETLOOSE",`^${u[l.LONECARET]}${u[l.XRANGEPLAINLOOSE]}$`),h("COMPARATORLOOSE",`^${u[l.GTLT]}\\s*(${u[l.LOOSEPLAIN]})$|^$`),h("COMPARATOR",`^${u[l.GTLT]}\\s*(${u[l.FULLPLAIN]})$|^$`),h("COMPARATORTRIM",`(\\s*)${u[l.GTLT]}\\s*(${u[l.LOOSEPLAIN]}|${u[l.XRANGEPLAIN]})`,!0),t.comparatorTrimReplace="$1$2$3",h("HYPHENRANGE",`^\\s*(${u[l.XRANGEPLAIN]})\\s+-\\s+(${u[l.XRANGEPLAIN]})\\s*$`),h("HYPHENRANGELOOSE",`^\\s*(${u[l.XRANGEPLAINLOOSE]})\\s+-\\s+(${u[l.XRANGEPLAINLOOSE]})\\s*$`),h("STAR","(<|>)?=?\\s*\\*"),h("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),h("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")}(ce,ce.exports)),ce.exports),n=function(){if(W)return Q;W=1;const e=Object.freeze({loose:!0}),t=Object.freeze({});return Q=r=>r?"object"!=typeof r?e:r:t}(),{compareIdentifiers:o}=function(){if(te)return ee;te=1;const e=/^[0-9]+$/,t=(t,r)=>{const s=e.test(t),i=e.test(r);return s&&i&&(t=+t,r=+r),t===r?0:s&&!i?-1:i&&!s?1:t<r?-1:1};return ee={compareIdentifiers:t,rcompareIdentifiers:(e,r)=>t(r,e)}}();class a{constructor(o,u){if(u=n(u),o instanceof a){if(o.loose===!!u.loose&&o.includePrerelease===!!u.includePrerelease)return o;o=o.version}else if("string"!=typeof o)throw new TypeError(`Invalid version. Must be a string. Got type "${typeof o}".`);if(o.length>t)throw new TypeError(`version is longer than ${t} characters`);e("SemVer",o,u),this.options=u,this.loose=!!u.loose,this.includePrerelease=!!u.includePrerelease;const l=o.trim().match(u.loose?s[i.LOOSE]:s[i.FULL]);if(!l)throw new TypeError(`Invalid Version: ${o}`);if(this.raw=o,this.major=+l[1],this.minor=+l[2],this.patch=+l[3],this.major>r||this.major<0)throw new TypeError("Invalid major version");if(this.minor>r||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>r||this.patch<0)throw new TypeError("Invalid patch version");l[4]?this.prerelease=l[4].split(".").map((e=>{if(/^[0-9]+$/.test(e)){const t=+e;if(t>=0&&t<r)return t}return e})):this.prerelease=[],this.build=l[5]?l[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(t){if(e("SemVer.compare",this.version,this.options,t),!(t instanceof a)){if("string"==typeof t&&t===this.version)return 0;t=new a(t,this.options)}return t.version===this.version?0:this.compareMain(t)||this.comparePre(t)}compareMain(e){return e instanceof a||(e=new a(e,this.options)),o(this.major,e.major)||o(this.minor,e.minor)||o(this.patch,e.patch)}comparePre(t){if(t instanceof a||(t=new a(t,this.options)),this.prerelease.length&&!t.prerelease.length)return-1;if(!this.prerelease.length&&t.prerelease.length)return 1;if(!this.prerelease.length&&!t.prerelease.length)return 0;let r=0;do{const s=this.prerelease[r],i=t.prerelease[r];if(e("prerelease compare",r,s,i),void 0===s&&void 0===i)return 0;if(void 0===i)return 1;if(void 0===s)return-1;if(s!==i)return o(s,i)}while(++r)}compareBuild(t){t instanceof a||(t=new a(t,this.options));let r=0;do{const s=this.build[r],i=t.build[r];if(e("build compare",r,s,i),void 0===s&&void 0===i)return 0;if(void 0===i)return 1;if(void 0===s)return-1;if(s!==i)return o(s,i)}while(++r)}inc(e,t,r){switch(e){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",t,r);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",t,r);break;case"prepatch":this.prerelease.length=0,this.inc("patch",t,r),this.inc("pre",t,r);break;case"prerelease":0===this.prerelease.length&&this.inc("patch",t,r),this.inc("pre",t,r);break;case"major":0===this.minor&&0===this.patch&&0!==this.prerelease.length||this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":0===this.patch&&0!==this.prerelease.length||this.minor++,this.patch=0,this.prerelease=[];break;case"patch":0===this.prerelease.length&&this.patch++,this.prerelease=[];break;case"pre":{const e=Number(r)?1:0;if(!t&&!1===r)throw new Error("invalid increment argument: identifier is empty");if(0===this.prerelease.length)this.prerelease=[e];else{let s=this.prerelease.length;for(;--s>=0;)"number"==typeof this.prerelease[s]&&(this.prerelease[s]++,s=-2);if(-1===s){if(t===this.prerelease.join(".")&&!1===r)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(e)}}if(t){let s=[t,e];!1===r&&(s=[t]),0===o(this.prerelease[0],t)?isNaN(this.prerelease[1])&&(this.prerelease=s):this.prerelease=s}break}default:throw new Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}}return re=a}!function(){if(ae)return oe;ae=1;const e=function(){if(ne)return ie;ne=1;const e=de();return ie=(t,r,s=!1)=>{if(t instanceof e)return t;try{return new e(t,r)}catch(e){if(!s)return null;throw e}}}();oe=(t,r)=>{const s=e(t,r);return s?s.version:null}}(),function(){if(le)return ue;le=1;const e=de();ue=(t,r)=>new e(t,r).major}(),n.m},36620:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});const s=(0,r(35947).YK)().setApp("settings").detectUser().build()},58723:(e,t)=>{function r(e,t){var s={name:e.name,path:e.path,hash:e.hash,query:e.query,params:e.params,fullPath:e.fullPath,meta:e.meta};return t&&(s.from=r(t)),Object.freeze(s)}t.O=function(e,t,s){var i=(s||{}).moduleName||"route";e.registerModule(i,{namespaced:!0,state:r(t.currentRoute),mutations:{ROUTE_CHANGED:function(t,s){e.state[i]=r(s.to,s.from)}}});var n,o=!1,a=e.watch((function(e){return e[i]}),(function(e){var r=e.fullPath;r!==n&&(null!=n&&(o=!0,t.push(e)),n=r)}),{sync:!0}),u=t.afterEach((function(t,r){o?o=!1:(n=t.fullPath,e.commit(i+"/ROUTE_CHANGED",{to:t,from:r}))}));return function(){null!=u&&u(),null!=a&&a(),e.unregisterModule(i)}}}},n={};function o(e){var t=n[e];if(void 0!==t)return t.exports;var r=n[e]={id:e,loaded:!1,exports:{}};return i[e].call(r.exports,r,r.exports,o),r.loaded=!0,r.exports}o.m=i,e=[],o.O=(t,r,s,i)=>{if(!r){var n=1/0;for(c=0;c<e.length;c++){r=e[c][0],s=e[c][1],i=e[c][2];for(var a=!0,u=0;u<r.length;u++)(!1&i||n>=i)&&Object.keys(o.O).every((e=>o.O[e](r[u])))?r.splice(u--,1):(a=!1,i<n&&(n=i));if(a){e.splice(c--,1);var l=s();void 0!==l&&(t=l)}}return t}i=i||0;for(var c=e.length;c>0&&e[c-1][2]>i;c--)e[c]=e[c-1];e[c]=[r,s,i]},o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var r in t)o.o(t,r)&&!o.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce(((t,r)=>(o.f[r](e,t),t)),[])),o.u=e=>(({3239:"settings-users",4529:"settings-apps-view"}[e]||e)+"-"+e+".js?v="+{459:"975afd1e02f53abf8034",1023:"06cf5496a0a2d7ef494a",2441:"2c050d23f9070dfa7f03",3239:"a1ded3f60f3185c4ac3b",4529:"ab85428fc71ea1124397",5862:"142cd48ca8ec32e57725",6227:"3494381758c4754ef3f5",7265:"3ea08242e475ac7a22e1",8737:"1ee3b21131ac8193a04d"}[e]),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),r={},s="nextcloud:",o.l=(e,t,i,n)=>{if(r[e])r[e].push(t);else{var a,u;if(void 0!==i)for(var l=document.getElementsByTagName("script"),c=0;c<l.length;c++){var d=l[c];if(d.getAttribute("src")==e||d.getAttribute("data-webpack")==s+i){a=d;break}}a||(u=!0,(a=document.createElement("script")).charset="utf-8",a.timeout=120,o.nc&&a.setAttribute("nonce",o.nc),a.setAttribute("data-webpack",s+i),a.src=e),r[e]=[t];var p=(t,s)=>{a.onerror=a.onload=null,clearTimeout(h);var i=r[e];if(delete r[e],a.parentNode&&a.parentNode.removeChild(a),i&&i.forEach((e=>e(s))),t)return t(s)},h=setTimeout(p.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=p.bind(null,a.onerror),a.onload=p.bind(null,a.onload),u&&document.head.appendChild(a)}},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=2689,(()=>{var e;o.g.importScripts&&(e=o.g.location+"");var t=o.g.document;if(!e&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");if(r.length)for(var s=r.length-1;s>-1&&(!e||!/^http(s?):/.test(e));)e=r[s--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),o.p=e})(),(()=>{o.b=document.baseURI||self.location.href;var e={2689:0};o.f.j=(t,r)=>{var s=o.o(e,t)?e[t]:void 0;if(0!==s)if(s)r.push(s[2]);else{var i=new Promise(((r,i)=>s=e[t]=[r,i]));r.push(s[2]=i);var n=o.p+o.u(t),a=new Error;o.l(n,(r=>{if(o.o(e,t)&&(0!==(s=e[t])&&(e[t]=void 0),s)){var i=r&&("load"===r.type?"missing":r.type),n=r&&r.target&&r.target.src;a.message="Loading chunk "+t+" failed.\n("+i+": "+n+")",a.name="ChunkLoadError",a.type=i,a.request=n,s[1](a)}}),"chunk-"+t,t)}},o.O.j=t=>0===e[t];var t=(t,r)=>{var s,i,n=r[0],a=r[1],u=r[2],l=0;if(n.some((t=>0!==e[t]))){for(s in a)o.o(a,s)&&(o.m[s]=a[s]);if(u)var c=u(o)}for(t&&t(r);l<n.length;l++)i=n[l],o.o(e,i)&&e[i]&&e[i][0](),e[i]=0;return o.O(c)},r=self.webpackChunknextcloud=self.webpackChunknextcloud||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),o.nc=void 0;var a=o.O(void 0,[4208],(()=>o(12836)));a=o.O(a)})(); -//# sourceMappingURL=settings-vue-settings-apps-users-management.js.map?v=32edbf048c42a2067726
\ No newline at end of file +(()=>{var e,r,s,i={6028:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var s=r(65043),i=r(56760);r(51257);const n=function(e){return e.replace(/\/$/,"")},o={requireAdmin:()=>(0,i.C5)(),get:(e,t)=>s.Ay.get(n(e),t),post:(e,t)=>s.Ay.post(n(e),t),patch:(e,t)=>s.Ay.patch(n(e),t),put:(e,t)=>s.Ay.put(n(e),t),delete:(e,t)=>s.Ay.delete(n(e),{params:t})}},12836:(e,t,r)=>{"use strict";var s=r(85471),i=r(95353),n=r(80284),o=r(58723),a=r(53334),u=r(22378);const l=(0,s.pM)({__name:"SettingsApp",setup:e=>({__sfc:!0,NcContent:u.A})}),c=(0,r(14486).A)(l,(function(){var e=this,t=e._self._c;return t(e._self._setupProxy.NcContent,{attrs:{"app-name":"settings"}},[t("router-view",{attrs:{name:"navigation"}}),e._v(" "),t("router-view"),e._v(" "),t("router-view",{attrs:{name:"sidebar"}})],1)}),[],!1,null,null,null).exports;var d=r(40173),p=r(63814);const h=[{name:"users",path:"/:index(index.php/)?settings/users",components:{default:()=>Promise.all([r.e(4208),r.e(7265),r.e(3239)]).then(r.bind(r,95802)),navigation:()=>Promise.all([r.e(4208),r.e(7265),r.e(3239)]).then(r.bind(r,51285))},props:!0,children:[{path:":selectedGroup",name:"group"}]},{path:"/:index(index.php/)?settings/apps",name:"apps",redirect:{name:"apps-category",params:{category:(0,r(32981).C)("settings","appstoreEnabled",!0)?"discover":"installed"}},components:{default:()=>Promise.all([r.e(4208),r.e(7265),r.e(4529)]).then(r.bind(r,1368)),navigation:()=>Promise.all([r.e(4208),r.e(7265),r.e(4529)]).then(r.bind(r,78451)),sidebar:()=>Promise.all([r.e(4208),r.e(7265),r.e(4529)]).then(r.bind(r,84694))},children:[{path:":category",name:"apps-category",children:[{path:":id",name:"apps-details"}]}]}];s.Ay.use(d.Ay);const g=new d.Ay({mode:"history",base:(0,p.Jv)(""),linkActiveClass:"active",routes:h});var m=r(14744),f=r(21777),E=r(65899);r.nc=(0,f.aV)(),s.Ay.prototype.t=a.t,s.Ay.prototype.n=a.n,s.Ay.use(E.R2),s.Ay.use(n.Ay,{defaultHtml:!1}),s.Ay.use(i.Ay);const A=(0,m.P)();(0,o.O)(A,g);const b=(0,E.Ey)();new s.Ay({router:g,store:A,pinia:b,render:e=>e(c),el:"#content"})},14744:(e,r,s)=>{"use strict";s.d(r,{P:()=>D});var i=s(95353),n=s(59097),o=s(87485),a=s(35810),u=s(85168),l=s(63814),c=s(32981),d=s(65043),p=s(15916),h=s(53334);const g=Intl.Collator([(0,h.Z0)(),(0,h.lO)()],{numeric:!0,usage:"sort"});var m=s(6028),f=s(36620);const E=(0,c.C)("settings","usersSettings",{}),A=(0,n.c0)("settings").persist(!0).build(),b={id:"",name:"",usercount:0,disabled:0,canAdd:!0,canRemove:!0},I={users:[],groups:[...E.getSubAdminGroups??[],...E.systemGroups??[]],orderBy:E.sortGroups??p.q.UserCount,minPasswordLength:0,usersOffset:0,usersLimit:25,disabledUsersOffset:0,disabledUsersLimit:25,userCount:E.userCount??0,showConfig:{showStoragePath:"true"===A.getItem("account_settings__showStoragePath"),showUserBackend:"true"===A.getItem("account_settings__showUserBackend"),showFirstLogin:"true"===A.getItem("account_settings__showFirstLogin"),showLastLogin:"true"===A.getItem("account_settings__showLastLogin"),showNewUserForm:"true"===A.getItem("account_settings__showNewUserForm"),showLanguages:"true"===A.getItem("account_settings__showLanguages")}},N={appendUsers(e,t){const r=e.users.map((e=>{let{id:t}=e;return t})),s=Object.values(t).filter((e=>{let{id:t}=e;return!r.includes(t)})),i=e.users.concat(s);e.usersOffset+=e.usersLimit,e.users=i},updateDisabledUsers(e,t){e.disabledUsersOffset+=e.disabledUsersLimit},setPasswordPolicyMinLength(e,t){e.minPasswordLength=""!==t?t:0},addGroup(e,t){try{if(void 0!==e.groups.find((e=>e.id===t.id)))return;const r=Object.assign({},b,t);e.groups.unshift(r)}catch(e){console.error("Can't create group",e)}},renameGroup(e,t){let{gid:r,displayName:s}=t;const i=e.groups.findIndex((e=>e.id===r));if(i>=0){const t=e.groups[i];t.name=s,e.groups.splice(i,1,t)}},removeGroup(e,t){const r=e.groups.findIndex((e=>e.id===t));r>=0&&e.groups.splice(r,1)},addUserGroup(e,t){let{userid:r,gid:s}=t;const i=e.groups.find((e=>e.id===s)),n=e.users.find((e=>e.id===r));i&&n.enabled&&e.userCount>0&&i.usercount++,n.groups.push(s)},removeUserGroup(e,t){let{userid:r,gid:s}=t;const i=e.groups.find((e=>e.id===s)),n=e.users.find((e=>e.id===r));i&&n.enabled&&e.userCount>0&&i.usercount--;const o=n.groups;o.splice(o.indexOf(s),1)},addUserSubAdmin(e,t){let{userid:r,gid:s}=t;e.users.find((e=>e.id===r)).subadmin.push(s)},removeUserSubAdmin(e,t){let{userid:r,gid:s}=t;const i=e.users.find((e=>e.id===r)).subadmin;i.splice(i.indexOf(s),1)},deleteUser(e,t){const r=e.users.findIndex((e=>e.id===t));this.commit("updateUserCounts",{user:e.users[r],actionType:"remove"}),e.users.splice(r,1)},addUserData(e,t){const r=t.data.ocs.data;e.users.unshift(r),this.commit("updateUserCounts",{user:r,actionType:"create"})},enableDisableUser(e,t){let{userid:r,enabled:s}=t;const i=e.users.find((e=>e.id===r));i.enabled=s,this.commit("updateUserCounts",{user:i,actionType:s?"enable":"disable"})},updateUserCounts(e,t){let{user:r,actionType:s}=t;if(0===e.userCount)return;const i=e.groups.find((e=>"__nc_internal_recent"===e.id)),n=e.groups.find((e=>"disabled"===e.id));switch(s){case"enable":case"disable":n.usercount+=r.enabled?-1:1,i.usercount+=r.enabled?1:-1,e.userCount+=r.enabled?1:-1,r.groups.forEach((t=>{const s=e.groups.find((e=>e.id===t));s&&(s.disabled+=r.enabled?-1:1)}));break;case"create":i.usercount++,e.userCount++,r.groups.forEach((t=>{const r=e.groups.find((e=>e.id===t));r&&r.usercount++}));break;case"remove":r.enabled?(i.usercount--,e.userCount--,r.groups.forEach((t=>{const r=e.groups.find((e=>e.id===t));r?r.usercount--:console.warn("User group "+t+" does not exist during user removal")}))):(n.usercount--,r.groups.forEach((t=>{const r=e.groups.find((e=>e.id===t));r&&r.disabled--})));break;default:f.A.error(`Unknown action type in updateUserCounts: '${s}'`)}},setUserData(e,t){let{userid:r,key:s,value:i}=t;if("quota"===s){const t=(0,a.lT)(i,!0);e.users.find((e=>e.id===r))[s][s]=null!==t?t:i}else e.users.find((e=>e.id===r))[s]=i},resetUsers(e){e.users=[],e.usersOffset=0,e.disabledUsersOffset=0},resetGroups(e){e.groups=[...E.getSubAdminGroups??[],...E.systemGroups??[]]},setShowConfig(e,t){let{key:r,value:s}=t;A.setItem(`account_settings__${r}`,JSON.stringify(s)),e.showConfig[r]=s},setGroupSorting(e,r){const s=e.orderBy;e.orderBy=r,d.Ay.post((0,l.Jv)("/settings/users/preferences/group.sortBy"),{value:String(r)}).catch((r=>{e.orderBy=s,(0,u.Qg)(t("settings","Could not set group sorting")),f.A.error(r)}))}},v={getUsers:e=>e.users,getGroups:e=>e.groups,getSubAdminGroups:()=>E.subAdminGroups??[],getSortedGroups(e){const t=[...e.groups];return e.orderBy===p.q.UserCount?t.sort(((e,t)=>{const r=e.usercount-e.disabled,s=t.usercount-t.disabled;return r<s?1:s<r?-1:g.compare(e.name,t.name)})):t.sort(((e,t)=>g.compare(e.name,t.name)))},getGroupSorting:e=>e.orderBy,getPasswordPolicyMinLength:e=>e.minPasswordLength,getUsersOffset:e=>e.usersOffset,getUsersLimit:e=>e.usersLimit,getDisabledUsersOffset:e=>e.disabledUsersOffset,getDisabledUsersLimit:e=>e.disabledUsersLimit,getUserCount:e=>e.userCount,getShowConfig:e=>e.showConfig},L=d.Ay.CancelToken;let y=null;const O={state:I,mutations:N,getters:v,actions:{searchUsers(e,t){let{offset:r,limit:s,search:i}=t;return i="string"==typeof i?i:"",m.A.get((0,l.KT)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:r,limit:s,search:i})).catch((t=>{d.Ay.isCancel(t)||e.commit("API_FAILURE",t)}))},getUser:(e,t)=>m.A.get((0,l.KT)(`cloud/users/${t}`)).catch((t=>{d.Ay.isCancel(t)||e.commit("API_FAILURE",t)})),getUsers(e,t){let{offset:r,limit:s,search:i,group:n}=t;return y&&y.cancel("Operation canceled by another search request."),y=L.source(),i="string"==typeof i?i:"",i=i.replace(/in:[^\s]+/g,"").trim(),n="string"==typeof n?n:"",""!==n?m.A.get((0,l.KT)("cloud/groups/{group}/users/details?offset={offset}&limit={limit}&search={search}",{group:encodeURIComponent(n),offset:r,limit:s,search:i}),{cancelToken:y.token}).then((t=>{const r=Object.keys(t.data.ocs.data.users).length;return r>0&&e.commit("appendUsers",t.data.ocs.data.users),r})).catch((t=>{d.Ay.isCancel(t)||e.commit("API_FAILURE",t)})):m.A.get((0,l.KT)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:r,limit:s,search:i}),{cancelToken:y.token}).then((t=>{const r=Object.keys(t.data.ocs.data.users).length;return r>0&&e.commit("appendUsers",t.data.ocs.data.users),r})).catch((t=>{d.Ay.isCancel(t)||e.commit("API_FAILURE",t)}))},async getRecentUsers(e,t){let{offset:r,limit:s,search:i}=t;const n=(0,l.KT)("cloud/users/recent?offset={offset}&limit={limit}&search={search}",{offset:r,limit:s,search:i});try{const t=await m.A.get(n),r=Object.keys(t.data.ocs.data.users).length;return r>0&&e.commit("appendUsers",t.data.ocs.data.users),r}catch(t){e.commit("API_FAILURE",t)}},async getDisabledUsers(e,t){let{offset:r,limit:s,search:i}=t;const n=(0,l.KT)("cloud/users/disabled?offset={offset}&limit={limit}&search={search}",{offset:r,limit:s,search:i});try{const t=await m.A.get(n),r=Object.keys(t.data.ocs.data.users).length;return r>0&&(e.commit("appendUsers",t.data.ocs.data.users),e.commit("updateDisabledUsers",t.data.ocs.data.users)),r}catch(t){e.commit("API_FAILURE",t)}},getGroups(e,t){let{offset:r,limit:s,search:i}=t;i="string"==typeof i?i:"";const n=-1===s?"":`&limit=${s}`;return m.A.get((0,l.KT)("cloud/groups?offset={offset}&search={search}",{offset:r,search:i})+n).then((t=>Object.keys(t.data.ocs.data.groups).length>0&&(t.data.ocs.data.groups.forEach((function(t){e.commit("addGroup",{id:t,name:t})})),!0))).catch((t=>e.commit("API_FAILURE",t)))},getUsersFromList(e,t){let{offset:r,limit:s,search:i}=t;return i="string"==typeof i?i:"",m.A.get((0,l.KT)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:r,limit:s,search:i})).then((t=>Object.keys(t.data.ocs.data.users).length>0&&(e.commit("appendUsers",t.data.ocs.data.users),!0))).catch((t=>e.commit("API_FAILURE",t)))},getUsersFromGroup(e,t){let{groupid:r,offset:s,limit:i}=t;return m.A.get((0,l.KT)("cloud/users/{groupId}/details?offset={offset}&limit={limit}",{groupId:encodeURIComponent(r),offset:s,limit:i})).then((t=>e.commit("getUsersFromList",t.data.ocs.data.users))).catch((t=>e.commit("API_FAILURE",t)))},getPasswordPolicyMinLength:e=>!(!(0,o.F)().password_policy||!(0,o.F)().password_policy.minLength)&&(e.commit("setPasswordPolicyMinLength",(0,o.F)().password_policy.minLength),(0,o.F)().password_policy.minLength),addGroup:(e,t)=>m.A.requireAdmin().then((r=>m.A.post((0,l.KT)("cloud/groups"),{groupid:t}).then((r=>(e.commit("addGroup",{id:t,name:t}),{gid:t,displayName:t}))).catch((e=>{throw e})))).catch((r=>{throw e.commit("API_FAILURE",{gid:t,error:r}),r})),renameGroup(e,t){let{groupid:r,displayName:s}=t;return m.A.requireAdmin().then((t=>m.A.put((0,l.KT)("cloud/groups/{groupId}",{groupId:encodeURIComponent(r)}),{key:"displayname",value:s}).then((t=>(e.commit("renameGroup",{gid:r,displayName:s}),{groupid:r,displayName:s}))).catch((e=>{throw e})))).catch((t=>{throw e.commit("API_FAILURE",{groupid:r,error:t}),t}))},removeGroup:(e,t)=>m.A.requireAdmin().then((r=>m.A.delete((0,l.KT)("cloud/groups/{groupId}",{groupId:encodeURIComponent(t)})).then((r=>e.commit("removeGroup",t))).catch((e=>{throw e})))).catch((r=>e.commit("API_FAILURE",{gid:t,error:r}))),addUserGroup(e,t){let{userid:r,gid:s}=t;return m.A.requireAdmin().then((t=>m.A.post((0,l.KT)("cloud/users/{userid}/groups",{userid:r}),{groupid:s}).then((t=>e.commit("addUserGroup",{userid:r,gid:s}))).catch((e=>{throw e})))).catch((t=>e.commit("API_FAILURE",{userid:r,error:t})))},removeUserGroup(e,t){let{userid:r,gid:s}=t;return m.A.requireAdmin().then((t=>m.A.delete((0,l.KT)("cloud/users/{userid}/groups",{userid:r}),{groupid:s}).then((t=>e.commit("removeUserGroup",{userid:r,gid:s}))).catch((e=>{throw e})))).catch((t=>{throw e.commit("API_FAILURE",{userid:r,error:t}),t}))},addUserSubAdmin(e,t){let{userid:r,gid:s}=t;return m.A.requireAdmin().then((t=>m.A.post((0,l.KT)("cloud/users/{userid}/subadmins",{userid:r}),{groupid:s}).then((t=>e.commit("addUserSubAdmin",{userid:r,gid:s}))).catch((e=>{throw e})))).catch((t=>e.commit("API_FAILURE",{userid:r,error:t})))},removeUserSubAdmin(e,t){let{userid:r,gid:s}=t;return m.A.requireAdmin().then((t=>m.A.delete((0,l.KT)("cloud/users/{userid}/subadmins",{userid:r}),{groupid:s}).then((t=>e.commit("removeUserSubAdmin",{userid:r,gid:s}))).catch((e=>{throw e})))).catch((t=>e.commit("API_FAILURE",{userid:r,error:t})))},async wipeUserDevices(e,t){try{return await m.A.requireAdmin(),await m.A.post((0,l.KT)("cloud/users/{userid}/wipe",{userid:t}))}catch(r){return e.commit("API_FAILURE",{userid:t,error:r}),Promise.reject(new Error("Failed to wipe user devices"))}},deleteUser:(e,t)=>m.A.requireAdmin().then((r=>m.A.delete((0,l.KT)("cloud/users/{userid}",{userid:t})).then((r=>e.commit("deleteUser",t))).catch((e=>{throw e})))).catch((r=>e.commit("API_FAILURE",{userid:t,error:r}))),addUser(e,t){let{commit:r,dispatch:s}=e,{userid:i,password:n,displayName:o,email:a,groups:u,subadmin:c,quota:d,language:p,manager:h}=t;return m.A.requireAdmin().then((e=>m.A.post((0,l.KT)("cloud/users"),{userid:i,password:n,displayName:o,email:a,groups:u,subadmin:c,quota:d,language:p,manager:h}).then((e=>s("addUserData",i||e.data.ocs.data.id))).catch((e=>{throw e})))).catch((e=>{throw r("API_FAILURE",{userid:i,error:e}),e}))},addUserData:(e,t)=>m.A.requireAdmin().then((r=>m.A.get((0,l.KT)("cloud/users/{userid}",{userid:t})).then((t=>e.commit("addUserData",t))).catch((e=>{throw e})))).catch((r=>e.commit("API_FAILURE",{userid:t,error:r}))),enableDisableUser(e,t){let{userid:r,enabled:s=!0}=t;const i=s?"enable":"disable";return m.A.requireAdmin().then((t=>m.A.put((0,l.KT)("cloud/users/{userid}/{userStatus}",{userid:r,userStatus:i})).then((t=>e.commit("enableDisableUser",{userid:r,enabled:s}))).catch((e=>{throw e})))).catch((t=>e.commit("API_FAILURE",{userid:r,error:t})))},async setUserData(e,t){let{userid:r,key:s,value:i}=t;if(!["email","language","quota","displayname","password","manager"].includes(s))throw new Error("Invalid request data");if(""===i&&!["email","displayname","manager"].includes(s))throw new Error("Value cannot be empty for this field");try{return await m.A.requireAdmin(),await m.A.put((0,l.KT)("cloud/users/{userid}",{userid:r}),{key:s,value:i}),e.commit("setUserData",{userid:r,key:s,value:i})}catch(t){throw e.commit("API_FAILURE",{userid:r,error:t}),t}},sendWelcomeMail:(e,t)=>m.A.requireAdmin().then((e=>m.A.post((0,l.KT)("cloud/users/{userid}/welcome",{userid:t})).then((e=>!0)).catch((e=>{throw e})))).catch((r=>e.commit("API_FAILURE",{userid:t,error:r})))}};var x=s(85471);const T={apps:[],bundles:(0,c.C)("settings","appstoreBundles",[]),categories:[],updateCount:(0,c.C)("settings","appstoreUpdateCount",0),loading:{},gettingCategoriesPromise:null,appApiEnabled:(0,c.C)("settings","appApiEnabled",!1)},P={APPS_API_FAILURE(e,r){(0,u.Qg)(t("settings","An error occurred during the request. Unable to proceed.")+"<br>"+r.error.response.data.data.message,{isHTML:!0}),console.error(e,r)},initCategories(e,t){let{categories:r,updateCount:s}=t;e.categories=r,e.updateCount=s},updateCategories(e,t){e.gettingCategoriesPromise=t},setUpdateCount(e,t){e.updateCount=t},addCategory(e,t){e.categories.push(t)},appendCategories(e,t){e.categories=t},setAllApps(e,t){e.apps=t},setError(e,t){let{appId:r,error:s}=t;Array.isArray(r)||(r=[r]),r.forEach((t=>{e.apps.find((e=>e.id===t)).error=s}))},clearError(e,t){let{appId:r,error:s}=t;e.apps.find((e=>e.id===r)).error=null},enableApp(e,t){let{appId:r,groups:s}=t;const i=e.apps.find((e=>e.id===r));i.active=!0,i.groups=s,"app_api"===i.id&&(e.appApiEnabled=!0)},setInstallState(e,t){let{appId:r,canInstall:s}=t;const i=e.apps.find((e=>e.id===r));i&&(i.canInstall=!0===s)},disableApp(e,t){const r=e.apps.find((e=>e.id===t));r.active=!1,r.groups=[],r.removable&&(r.canUnInstall=!0),"app_api"===r.id&&(e.appApiEnabled=!1)},uninstallApp(e,t){e.apps.find((e=>e.id===t)).active=!1,e.apps.find((e=>e.id===t)).groups=[],e.apps.find((e=>e.id===t)).needsDownload=!0,e.apps.find((e=>e.id===t)).installed=!1,e.apps.find((e=>e.id===t)).canUnInstall=!1,e.apps.find((e=>e.id===t)).canInstall=!0,"app_api"===t&&(e.appApiEnabled=!1)},updateApp(e,t){const r=e.apps.find((e=>e.id===t)),s=r.update;r.update=null,r.version=s,e.updateCount--},resetApps(e){e.apps=[]},reset(e){e.apps=[],e.categories=[],e.updateCount=0},startLoading(e,t){Array.isArray(t)?t.forEach((t=>{x.Ay.set(e.loading,t,!0)})):x.Ay.set(e.loading,t,!0)},stopLoading(e,t){Array.isArray(t)?t.forEach((t=>{x.Ay.set(e.loading,t,!1)})):x.Ay.set(e.loading,t,!1)}},R={enableApp(e,r){let s,{appId:i,groups:n}=r;return s=Array.isArray(i)?i:[i],m.A.requireAdmin().then((r=>(e.commit("startLoading",s),e.commit("startLoading","install"),m.A.post((0,l.Jv)("settings/apps/enable"),{appIds:s,groups:n}).then((r=>(e.commit("stopLoading",s),e.commit("stopLoading","install"),s.forEach((t=>{e.commit("enableApp",{appId:t,groups:n})})),d.Ay.get((0,l.Jv)("apps/files/")).then((()=>{r.data.update_required&&((0,u.cf)(t("settings","The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds."),{onClick:()=>window.location.reload(),close:!1}),setTimeout((function(){location.reload()}),5e3))})).catch((()=>{Array.isArray(i)||((0,u.Qg)(t("settings","Error: This app cannot be enabled because it makes the server unstable")),e.commit("setError",{appId:s,error:t("settings","Error: This app cannot be enabled because it makes the server unstable")}),e.dispatch("disableApp",{appId:i}))}))))).catch((t=>{e.commit("stopLoading",s),e.commit("stopLoading","install"),e.commit("setError",{appId:s,error:t.response.data.data.message}),e.commit("APPS_API_FAILURE",{appId:i,error:t})}))))).catch((t=>e.commit("API_FAILURE",{appId:i,error:t})))},forceEnableApp(e,t){let r,{appId:s,groups:i}=t;return r=Array.isArray(s)?s:[s],m.A.requireAdmin().then((()=>(e.commit("startLoading",r),e.commit("startLoading","install"),m.A.post((0,l.Jv)("settings/apps/force"),{appId:s}).then((t=>{e.commit("setInstallState",{appId:s,canInstall:!0})})).catch((t=>{e.commit("stopLoading",r),e.commit("stopLoading","install"),e.commit("setError",{appId:r,error:t.response.data.data.message}),e.commit("APPS_API_FAILURE",{appId:s,error:t})})).finally((()=>{e.commit("stopLoading",r),e.commit("stopLoading","install")}))))).catch((t=>e.commit("API_FAILURE",{appId:s,error:t})))},disableApp(e,t){let r,{appId:s}=t;return r=Array.isArray(s)?s:[s],m.A.requireAdmin().then((t=>(e.commit("startLoading",r),m.A.post((0,l.Jv)("settings/apps/disable"),{appIds:r}).then((t=>(e.commit("stopLoading",r),r.forEach((t=>{e.commit("disableApp",t)})),!0))).catch((t=>{e.commit("stopLoading",r),e.commit("APPS_API_FAILURE",{appId:s,error:t})}))))).catch((t=>e.commit("API_FAILURE",{appId:s,error:t})))},uninstallApp(e,t){let{appId:r}=t;return m.A.requireAdmin().then((t=>(e.commit("startLoading",r),m.A.get((0,l.Jv)(`settings/apps/uninstall/${r}`)).then((t=>(e.commit("stopLoading",r),e.commit("uninstallApp",r),!0))).catch((t=>{e.commit("stopLoading",r),e.commit("APPS_API_FAILURE",{appId:r,error:t})}))))).catch((t=>e.commit("API_FAILURE",{appId:r,error:t})))},updateApp(e,t){let{appId:r}=t;return m.A.requireAdmin().then((t=>(e.commit("startLoading",r),e.commit("startLoading","install"),m.A.get((0,l.Jv)(`settings/apps/update/${r}`)).then((t=>(e.commit("stopLoading","install"),e.commit("stopLoading",r),e.commit("updateApp",r),!0))).catch((t=>{e.commit("stopLoading",r),e.commit("stopLoading","install"),e.commit("APPS_API_FAILURE",{appId:r,error:t})}))))).catch((t=>e.commit("API_FAILURE",{appId:r,error:t})))},getAllApps:e=>(e.commit("startLoading","list"),m.A.get((0,l.Jv)("settings/apps/list")).then((t=>(e.commit("setAllApps",t.data.apps),e.commit("stopLoading","list"),!0))).catch((t=>e.commit("API_FAILURE",t)))),async getCategories(e){let{shouldRefetchCategories:t=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(t||!e.state.gettingCategoriesPromise){e.commit("startLoading","categories");try{const t=m.A.get((0,l.Jv)("settings/apps/categories"));e.commit("updateCategories",t);const r=await t;return r.data.length>0?(e.commit("appendCategories",r.data),e.commit("stopLoading","categories"),!0):(e.commit("stopLoading","categories"),!1)}catch(t){e.commit("API_FAILURE",t)}}return e.state.gettingCategoriesPromise}},w={state:T,mutations:P,getters:{isAppApiEnabled:e=>e.appApiEnabled,loading:e=>function(t){return e.loading[t]},getCategories:e=>e.categories,getAllApps:e=>e.apps,getAppBundles:e=>e.bundles,getUpdateCount:e=>e.updateCount,getCategoryById:e=>t=>e.categories.find((e=>e.id===t))},actions:R},C={serverData:(0,c.C)("settings","usersSettings",{})},U={setServerData(e,t){e.serverData=t}},S={state:C,mutations:U,getters:{getServerData:e=>e.serverData},actions:{}},$={state:{},mutations:{},getters:{},actions:{setAppConfig(e,t){let{app:r,key:s,value:i}=t;return m.A.requireAdmin().then((e=>m.A.post((0,l.KT)("apps/provisioning_api/api/v1/config/apps/{app}/{key}",{app:r,key:s}),{value:i}).catch((e=>{throw e})))).catch((t=>e.commit("API_FAILURE",{app:r,key:s,value:i,error:t})))}}},_={API_FAILURE(e,r){try{const e=r.error.response.data.ocs.meta.message;(0,u.Qg)(t("settings","An error occurred during the request. Unable to proceed.")+"<br>"+e,{isHTML:!0})}catch(e){(0,u.Qg)(t("settings","An error occurred during the request. Unable to proceed."))}console.error(e,r)}};let F=null;const D=()=>(null===F&&(F=new i.il({modules:{users:O,apps:w,settings:S,oc:$},strict:!1,mutations:_})),F)},15916:(e,t,r)=>{"use strict";var s;r.d(t,{q:()=>s}),function(e){e[e.UserCount=1]="UserCount",e[e.GroupName=2]="GroupName"}(s||(s={}))},35810:(e,t,r)=>{"use strict";r.d(t,{Al:()=>s.r,H4:()=>s.c,Q$:()=>s.e,R3:()=>s.n,VL:()=>s.l,lJ:()=>s.d,lT:()=>c,pt:()=>s.F,ur:()=>p,v7:()=>l});var s=r(68251),i=(r(43627),r(53334)),n=r(380),o=r(65606);Error;const a=["B","KB","MB","GB","TB","PB"],u=["B","KiB","MiB","GiB","TiB","PiB"];function l(e,t=!1,r=!1,s=!1){r=r&&!s,"string"==typeof e&&(e=Number(e));let n=e>0?Math.floor(Math.log(e)/Math.log(s?1e3:1024)):0;n=Math.min((r?u.length:a.length)-1,n);const o=r?u[n]:a[n];let l=(e/Math.pow(s?1e3:1024,n)).toFixed(1);return!0===t&&0===n?("0.0"!==l?"< 1 ":"0 ")+(r?u[1]:a[1]):(l=n<2?parseFloat(l).toFixed(0):parseFloat(l).toLocaleString((0,i.lO)()),l+" "+o)}function c(e,t=!1){try{e=`${e}`.toLocaleLowerCase().replaceAll(/\s+/g,"").replaceAll(",",".")}catch(e){return null}const r=e.match(/^([0-9]*(\.[0-9]*)?)([kmgtp]?)(i?)b?$/);if(null===r||"."===r[1]||""===r[1])return null;const s=`${r[1]}`,i="i"===r[4]||t?1024:1e3;return Math.round(Number.parseFloat(s)*i**{"":0,k:1,m:2,g:3,t:4,p:5,e:6}[r[3]])}function d(e){return e instanceof Date?e.toISOString():String(e)}function p(e,t={}){const r={sortingMode:"basename",sortingOrder:"asc",...t};return function(e,t,r){r=r??[];const s=(t=t??[e=>e]).map(((e,t)=>"asc"===(r[t]??"asc")?1:-1)),n=Intl.Collator([(0,i.Z0)(),(0,i.lO)()],{numeric:!0,usage:"sort"});return[...e].sort(((e,r)=>{for(const[i,o]of t.entries()){const t=n.compare(d(o(e)),d(o(r)));if(0!==t)return t*s[i]}return 0}))}(e,[...r.sortFavoritesFirst?[e=>1!==e.attributes?.favorite]:[],...r.sortFoldersFirst?[e=>"folder"!==e.type]:[],..."basename"!==r.sortingMode?[e=>e[r.sortingMode]]:[],e=>{return(t=e.displayname||e.attributes?.displayname||e.basename).lastIndexOf(".")>0?t.slice(0,t.lastIndexOf(".")):t;var t},e=>e.basename],[...r.sortFavoritesFirst?["asc"]:[],...r.sortFoldersFirst?["asc"]:[],..."mtime"===r.sortingMode?["asc"===r.sortingOrder?"desc":"asc"]:[],..."mtime"!==r.sortingMode&&"basename"!==r.sortingMode?[r.sortingOrder]:[],r.sortingOrder,r.sortingOrder])}var h,g,m={},f={};function E(){return h||(h=1,function(e){const t=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",r="["+t+"]["+t+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*",s=new RegExp("^"+r+"$");e.isExist=function(e){return void 0!==e},e.isEmptyObject=function(e){return 0===Object.keys(e).length},e.merge=function(e,t,r){if(t){const s=Object.keys(t),i=s.length;for(let n=0;n<i;n++)e[s[n]]="strict"===r?[t[s[n]]]:t[s[n]]}},e.getValue=function(t){return e.isExist(t)?t:""},e.isName=function(e){return!(null==s.exec(e))},e.getAllMatches=function(e,t){const r=[];let s=t.exec(e);for(;s;){const i=[];i.startIndex=t.lastIndex-s[0].length;const n=s.length;for(let e=0;e<n;e++)i.push(s[e]);r.push(i),s=t.exec(e)}return r},e.nameRegexp=r}(f)),f}function A(){if(g)return m;g=1;const e=E(),t={allowBooleanAttributes:!1,unpairedTags:[]};function r(e){return" "===e||"\t"===e||"\n"===e||"\r"===e}function s(e,t){const r=t;for(;t<e.length;t++)if("?"!=e[t]&&" "!=e[t]);else{const s=e.substr(r,t-r);if(t>5&&"xml"===s)return d("InvalidXml","XML declaration allowed only at the start of the document.",h(e,t));if("?"==e[t]&&">"==e[t+1]){t++;break}}return t}function i(e,t){if(e.length>t+5&&"-"===e[t+1]&&"-"===e[t+2]){for(t+=3;t<e.length;t++)if("-"===e[t]&&"-"===e[t+1]&&">"===e[t+2]){t+=2;break}}else if(e.length>t+8&&"D"===e[t+1]&&"O"===e[t+2]&&"C"===e[t+3]&&"T"===e[t+4]&&"Y"===e[t+5]&&"P"===e[t+6]&&"E"===e[t+7]){let r=1;for(t+=8;t<e.length;t++)if("<"===e[t])r++;else if(">"===e[t]&&(r--,0===r))break}else if(e.length>t+9&&"["===e[t+1]&&"C"===e[t+2]&&"D"===e[t+3]&&"A"===e[t+4]&&"T"===e[t+5]&&"A"===e[t+6]&&"["===e[t+7])for(t+=8;t<e.length;t++)if("]"===e[t]&&"]"===e[t+1]&&">"===e[t+2]){t+=2;break}return t}m.validate=function(n,o){o=Object.assign({},t,o);const u=[];let p=!1,g=!1;"\ufeff"===n[0]&&(n=n.substr(1));for(let t=0;t<n.length;t++)if("<"===n[t]&&"?"===n[t+1]){if(t+=2,t=s(n,t),t.err)return t}else{if("<"!==n[t]){if(r(n[t]))continue;return d("InvalidChar","char '"+n[t]+"' is not expected.",h(n,t))}{let f=t;if(t++,"!"===n[t]){t=i(n,t);continue}{let E=!1;"/"===n[t]&&(E=!0,t++);let A="";for(;t<n.length&&">"!==n[t]&&" "!==n[t]&&"\t"!==n[t]&&"\n"!==n[t]&&"\r"!==n[t];t++)A+=n[t];if(A=A.trim(),"/"===A[A.length-1]&&(A=A.substring(0,A.length-1),t--),m=A,!e.isName(m)){let e;return e=0===A.trim().length?"Invalid space after '<'.":"Tag '"+A+"' is an invalid name.",d("InvalidTag",e,h(n,t))}const b=a(n,t);if(!1===b)return d("InvalidAttr","Attributes for '"+A+"' have open quote.",h(n,t));let I=b.value;if(t=b.index,"/"===I[I.length-1]){const e=t-I.length;I=I.substring(0,I.length-1);const r=l(I,o);if(!0!==r)return d(r.err.code,r.err.msg,h(n,e+r.err.line));p=!0}else if(E){if(!b.tagClosed)return d("InvalidTag","Closing tag '"+A+"' doesn't have proper closing.",h(n,t));if(I.trim().length>0)return d("InvalidTag","Closing tag '"+A+"' can't have attributes or invalid starting.",h(n,f));if(0===u.length)return d("InvalidTag","Closing tag '"+A+"' has not been opened.",h(n,f));{const e=u.pop();if(A!==e.tagName){let t=h(n,e.tagStartPos);return d("InvalidTag","Expected closing tag '"+e.tagName+"' (opened in line "+t.line+", col "+t.col+") instead of closing tag '"+A+"'.",h(n,f))}0==u.length&&(g=!0)}}else{const e=l(I,o);if(!0!==e)return d(e.err.code,e.err.msg,h(n,t-I.length+e.err.line));if(!0===g)return d("InvalidXml","Multiple possible root nodes found.",h(n,t));-1!==o.unpairedTags.indexOf(A)||u.push({tagName:A,tagStartPos:f}),p=!0}for(t++;t<n.length;t++)if("<"===n[t]){if("!"===n[t+1]){t++,t=i(n,t);continue}if("?"!==n[t+1])break;if(t=s(n,++t),t.err)return t}else if("&"===n[t]){const e=c(n,t);if(-1==e)return d("InvalidChar","char '&' is not expected.",h(n,t));t=e}else if(!0===g&&!r(n[t]))return d("InvalidXml","Extra text at the end",h(n,t));"<"===n[t]&&t--}}}var m;return p?1==u.length?d("InvalidTag","Unclosed tag '"+u[0].tagName+"'.",h(n,u[0].tagStartPos)):!(u.length>0)||d("InvalidXml","Invalid '"+JSON.stringify(u.map((e=>e.tagName)),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):d("InvalidXml","Start tag expected.",1)};const n='"',o="'";function a(e,t){let r="",s="",i=!1;for(;t<e.length;t++){if(e[t]===n||e[t]===o)""===s?s=e[t]:s!==e[t]||(s="");else if(">"===e[t]&&""===s){i=!0;break}r+=e[t]}return""===s&&{value:r,index:t,tagClosed:i}}const u=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function l(t,r){const s=e.getAllMatches(t,u),i={};for(let e=0;e<s.length;e++){if(0===s[e][1].length)return d("InvalidAttr","Attribute '"+s[e][2]+"' has no space in starting.",f(s[e]));if(void 0!==s[e][3]&&void 0===s[e][4])return d("InvalidAttr","Attribute '"+s[e][2]+"' is without value.",f(s[e]));if(void 0===s[e][3]&&!r.allowBooleanAttributes)return d("InvalidAttr","boolean attribute '"+s[e][2]+"' is not allowed.",f(s[e]));const t=s[e][2];if(!p(t))return d("InvalidAttr","Attribute '"+t+"' is an invalid name.",f(s[e]));if(i.hasOwnProperty(t))return d("InvalidAttr","Attribute '"+t+"' is repeated.",f(s[e]));i[t]=1}return!0}function c(e,t){if(";"===e[++t])return-1;if("#"===e[t])return function(e,t){let r=/\d/;for("x"===e[t]&&(t++,r=/[\da-fA-F]/);t<e.length;t++){if(";"===e[t])return t;if(!e[t].match(r))break}return-1}(e,++t);let r=0;for(;t<e.length;t++,r++)if(!(e[t].match(/\w/)&&r<20)){if(";"===e[t])break;return-1}return t}function d(e,t,r){return{err:{code:e,msg:t,line:r.line||r,col:r.col}}}function p(t){return e.isName(t)}function h(e,t){const r=e.substring(0,t).split(/\r?\n/);return{line:r.length,col:r[r.length-1].length+1}}function f(e){return e.startIndex+e[1].length}return m}var b,I,N,v,L,y,O,x,T,P,R,w={};function C(){return T?x:(T=1,x=function(e){return"function"==typeof e?e:Array.isArray(e)?t=>{for(const r of e){if("string"==typeof r&&t===r)return!0;if(r instanceof RegExp&&r.test(t))return!0}}:()=>!1})}var U,S,$,_,F,D,G,k,M,j,B,V,X,q={};function K(){if(U)return q;function e(i,n,o){let a;const u={};for(let l=0;l<i.length;l++){const c=i[l],d=t(c);let p="";if(p=void 0===o?d:o+"."+d,d===n.textNodeName)void 0===a?a=c[d]:a+=""+c[d];else{if(void 0===d)continue;if(c[d]){let t=e(c[d],n,p);const i=s(t,n);c[":@"]?r(t,c[":@"],p,n):1!==Object.keys(t).length||void 0===t[n.textNodeName]||n.alwaysCreateTextNode?0===Object.keys(t).length&&(n.alwaysCreateTextNode?t[n.textNodeName]="":t=""):t=t[n.textNodeName],void 0!==u[d]&&u.hasOwnProperty(d)?(Array.isArray(u[d])||(u[d]=[u[d]]),u[d].push(t)):n.isArray(d,p,i)?u[d]=[t]:u[d]=t}}}return"string"==typeof a?a.length>0&&(u[n.textNodeName]=a):void 0!==a&&(u[n.textNodeName]=a),u}function t(e){const t=Object.keys(e);for(let e=0;e<t.length;e++){const r=t[e];if(":@"!==r)return r}}function r(e,t,r,s){if(t){const i=Object.keys(t),n=i.length;for(let o=0;o<n;o++){const n=i[o];s.isArray(n,r+"."+n,!0,!0)?e[n]=[t[n]]:e[n]=t[n]}}}function s(e,t){const{textNodeName:r}=t,s=Object.keys(e).length;return 0===s||!(1!==s||!e[r]&&"boolean"!=typeof e[r]&&0!==e[r])}return U=1,q.prettify=function(t,r){return e(t,r)},q}function H(){if($)return S;$=1;const{buildOptions:e}=function(){if(b)return w;b=1;const e={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(e,t){return t},attributeValueProcessor:function(e,t){return t},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(e,t,r){return e}};return w.buildOptions=function(t){return Object.assign({},e,t)},w.defaultOptions=e,w}(),t=function(){if(R)return P;R=1;const e=E(),t=N?I:(N=1,I=class{constructor(e){this.tagname=e,this.child=[],this[":@"]={}}add(e,t){"__proto__"===e&&(e="#__proto__"),this.child.push({[e]:t})}addChild(e){"__proto__"===e.tagname&&(e.tagname="#__proto__"),e[":@"]&&Object.keys(e[":@"]).length>0?this.child.push({[e.tagname]:e.child,":@":e[":@"]}):this.child.push({[e.tagname]:e.child})}}),r=function(){if(L)return v;L=1;const e=E();function t(e,t){let r="";for(;t<e.length&&"'"!==e[t]&&'"'!==e[t];t++)r+=e[t];if(r=r.trim(),-1!==r.indexOf(" "))throw new Error("External entites are not supported");const s=e[t++];let i="";for(;t<e.length&&e[t]!==s;t++)i+=e[t];return[r,i,t]}function r(e,t){return"!"===e[t+1]&&"E"===e[t+2]&&"N"===e[t+3]&&"T"===e[t+4]&&"I"===e[t+5]&&"T"===e[t+6]&&"Y"===e[t+7]}function s(e,t){return"!"===e[t+1]&&"E"===e[t+2]&&"L"===e[t+3]&&"E"===e[t+4]&&"M"===e[t+5]&&"E"===e[t+6]&&"N"===e[t+7]&&"T"===e[t+8]}function i(e,t){return"!"===e[t+1]&&"A"===e[t+2]&&"T"===e[t+3]&&"T"===e[t+4]&&"L"===e[t+5]&&"I"===e[t+6]&&"S"===e[t+7]&&"T"===e[t+8]}function n(e,t){return"!"===e[t+1]&&"N"===e[t+2]&&"O"===e[t+3]&&"T"===e[t+4]&&"A"===e[t+5]&&"T"===e[t+6]&&"I"===e[t+7]&&"O"===e[t+8]&&"N"===e[t+9]}function o(t){if(e.isName(t))return t;throw new Error(`Invalid entity name ${t}`)}return v=function(e,a){const u={};if("O"!==e[a+3]||"C"!==e[a+4]||"T"!==e[a+5]||"Y"!==e[a+6]||"P"!==e[a+7]||"E"!==e[a+8])throw new Error("Invalid Tag instead of DOCTYPE");{a+=9;let l=1,c=!1,d=!1,p="";for(;a<e.length;a++)if("<"!==e[a]||d)if(">"===e[a]){if(d?"-"===e[a-1]&&"-"===e[a-2]&&(d=!1,l--):l--,0===l)break}else"["===e[a]?c=!0:p+=e[a];else{if(c&&r(e,a)){let r,s;a+=7,[r,s,a]=t(e,a+1),-1===s.indexOf("&")&&(u[o(r)]={regx:RegExp(`&${r};`,"g"),val:s})}else c&&s(e,a)||c&&i(e,a)?a+=8:c&&n(e,a)?a+=9:d=!0;l++,p=""}if(0!==l)throw new Error("Unclosed DOCTYPE")}return{entities:u,i:a}}}(),s=function(){if(O)return y;O=1;const e=/^[-+]?0x[a-fA-F0-9]+$/,t=/^([\-\+])?(0*)(\.[0-9]+([eE]\-?[0-9]+)?|[0-9]+(\.[0-9]+([eE]\-?[0-9]+)?)?)$/;!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt),!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat);const r={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};return y=function(s,i={}){if(i=Object.assign({},r,i),!s||"string"!=typeof s)return s;let n=s.trim();if(void 0!==i.skipLike&&i.skipLike.test(n))return s;if(i.hex&&e.test(n))return Number.parseInt(n,16);{const e=t.exec(n);if(e){const t=e[1],r=e[2];let a=(o=e[3])&&-1!==o.indexOf(".")?("."===(o=o.replace(/0+$/,""))?o="0":"."===o[0]?o="0"+o:"."===o[o.length-1]&&(o=o.substr(0,o.length-1)),o):o;const u=e[4]||e[6];if(!i.leadingZeros&&r.length>0&&t&&"."!==n[2])return s;if(!i.leadingZeros&&r.length>0&&!t&&"."!==n[1])return s;{const e=Number(n),o=""+e;return-1!==o.search(/[eE]/)||u?i.eNotation?e:s:-1!==n.indexOf(".")?"0"===o&&""===a||o===a||t&&o==="-"+a?e:s:r?a===o||t+a===o?e:s:n===o||n===t+o?e:s}}return s}var o}}(),i=C();function n(e){const t=Object.keys(e);for(let r=0;r<t.length;r++){const s=t[r];this.lastEntities[s]={regex:new RegExp("&"+s+";","g"),val:e[s]}}}function o(e,t,r,s,i,n,o){if(void 0!==e&&(this.options.trimValues&&!s&&(e=e.trim()),e.length>0)){o||(e=this.replaceEntitiesValue(e));const s=this.options.tagValueProcessor(t,e,r,i,n);return null==s?e:typeof s!=typeof e||s!==e?s:this.options.trimValues||e.trim()===e?b(e,this.options.parseTagValue,this.options.numberParseOptions):e}}function a(e){if(this.options.removeNSPrefix){const t=e.split(":"),r="/"===e.charAt(0)?"/":"";if("xmlns"===t[0])return"";2===t.length&&(e=r+t[1])}return e}const u=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function l(t,r,s){if(!0!==this.options.ignoreAttributes&&"string"==typeof t){const s=e.getAllMatches(t,u),i=s.length,n={};for(let e=0;e<i;e++){const t=this.resolveNameSpace(s[e][1]);if(this.ignoreAttributesFn(t,r))continue;let i=s[e][4],o=this.options.attributeNamePrefix+t;if(t.length)if(this.options.transformAttributeName&&(o=this.options.transformAttributeName(o)),"__proto__"===o&&(o="#__proto__"),void 0!==i){this.options.trimValues&&(i=i.trim()),i=this.replaceEntitiesValue(i);const e=this.options.attributeValueProcessor(t,i,r);n[o]=null==e?i:typeof e!=typeof i||e!==i?e:b(i,this.options.parseAttributeValue,this.options.numberParseOptions)}else this.options.allowBooleanAttributes&&(n[o]=!0)}if(!Object.keys(n).length)return;if(this.options.attributesGroupName){const e={};return e[this.options.attributesGroupName]=n,e}return n}}const c=function(e){e=e.replace(/\r\n?/g,"\n");const s=new t("!xml");let i=s,n="",o="";for(let a=0;a<e.length;a++)if("<"===e[a])if("/"===e[a+1]){const t=m(e,">",a,"Closing Tag is not closed.");let r=e.substring(a+2,t).trim();if(this.options.removeNSPrefix){const e=r.indexOf(":");-1!==e&&(r=r.substr(e+1))}this.options.transformTagName&&(r=this.options.transformTagName(r)),i&&(n=this.saveTextToParentTag(n,i,o));const s=o.substring(o.lastIndexOf(".")+1);if(r&&-1!==this.options.unpairedTags.indexOf(r))throw new Error(`Unpaired tag can not be used as closing tag: </${r}>`);let u=0;s&&-1!==this.options.unpairedTags.indexOf(s)?(u=o.lastIndexOf(".",o.lastIndexOf(".")-1),this.tagsNodeStack.pop()):u=o.lastIndexOf("."),o=o.substring(0,u),i=this.tagsNodeStack.pop(),n="",a=t}else if("?"===e[a+1]){let r=f(e,a,!1,"?>");if(!r)throw new Error("Pi Tag is not closed.");if(n=this.saveTextToParentTag(n,i,o),this.options.ignoreDeclaration&&"?xml"===r.tagName||this.options.ignorePiTags);else{const e=new t(r.tagName);e.add(this.options.textNodeName,""),r.tagName!==r.tagExp&&r.attrExpPresent&&(e[":@"]=this.buildAttributesMap(r.tagExp,o,r.tagName)),this.addChild(i,e,o)}a=r.closeIndex+1}else if("!--"===e.substr(a+1,3)){const t=m(e,"--\x3e",a+4,"Comment is not closed.");if(this.options.commentPropName){const r=e.substring(a+4,t-2);n=this.saveTextToParentTag(n,i,o),i.add(this.options.commentPropName,[{[this.options.textNodeName]:r}])}a=t}else if("!D"===e.substr(a+1,2)){const t=r(e,a);this.docTypeEntities=t.entities,a=t.i}else if("!["===e.substr(a+1,2)){const t=m(e,"]]>",a,"CDATA is not closed.")-2,r=e.substring(a+9,t);n=this.saveTextToParentTag(n,i,o);let s=this.parseTextData(r,i.tagname,o,!0,!1,!0,!0);null==s&&(s=""),this.options.cdataPropName?i.add(this.options.cdataPropName,[{[this.options.textNodeName]:r}]):i.add(this.options.textNodeName,s),a=t+2}else{let r=f(e,a,this.options.removeNSPrefix),u=r.tagName;const l=r.rawTagName;let c=r.tagExp,d=r.attrExpPresent,p=r.closeIndex;this.options.transformTagName&&(u=this.options.transformTagName(u)),i&&n&&"!xml"!==i.tagname&&(n=this.saveTextToParentTag(n,i,o,!1));const h=i;if(h&&-1!==this.options.unpairedTags.indexOf(h.tagname)&&(i=this.tagsNodeStack.pop(),o=o.substring(0,o.lastIndexOf("."))),u!==s.tagname&&(o+=o?"."+u:u),this.isItStopNode(this.options.stopNodes,o,u)){let s="";if(c.length>0&&c.lastIndexOf("/")===c.length-1)"/"===u[u.length-1]?(u=u.substr(0,u.length-1),o=o.substr(0,o.length-1),c=u):c=c.substr(0,c.length-1),a=r.closeIndex;else if(-1!==this.options.unpairedTags.indexOf(u))a=r.closeIndex;else{const t=this.readStopNodeData(e,l,p+1);if(!t)throw new Error(`Unexpected end of ${l}`);a=t.i,s=t.tagContent}const n=new t(u);u!==c&&d&&(n[":@"]=this.buildAttributesMap(c,o,u)),s&&(s=this.parseTextData(s,u,o,!0,d,!0,!0)),o=o.substr(0,o.lastIndexOf(".")),n.add(this.options.textNodeName,s),this.addChild(i,n,o)}else{if(c.length>0&&c.lastIndexOf("/")===c.length-1){"/"===u[u.length-1]?(u=u.substr(0,u.length-1),o=o.substr(0,o.length-1),c=u):c=c.substr(0,c.length-1),this.options.transformTagName&&(u=this.options.transformTagName(u));const e=new t(u);u!==c&&d&&(e[":@"]=this.buildAttributesMap(c,o,u)),this.addChild(i,e,o),o=o.substr(0,o.lastIndexOf("."))}else{const e=new t(u);this.tagsNodeStack.push(i),u!==c&&d&&(e[":@"]=this.buildAttributesMap(c,o,u)),this.addChild(i,e,o),i=e}n="",a=p}}else n+=e[a];return s.child};function d(e,t,r){const s=this.options.updateTag(t.tagname,r,t[":@"]);!1===s||("string"==typeof s?(t.tagname=s,e.addChild(t)):e.addChild(t))}const p=function(e){if(this.options.processEntities){for(let t in this.docTypeEntities){const r=this.docTypeEntities[t];e=e.replace(r.regx,r.val)}for(let t in this.lastEntities){const r=this.lastEntities[t];e=e.replace(r.regex,r.val)}if(this.options.htmlEntities)for(let t in this.htmlEntities){const r=this.htmlEntities[t];e=e.replace(r.regex,r.val)}e=e.replace(this.ampEntity.regex,this.ampEntity.val)}return e};function h(e,t,r,s){return e&&(void 0===s&&(s=0===Object.keys(t.child).length),void 0!==(e=this.parseTextData(e,t.tagname,r,!1,!!t[":@"]&&0!==Object.keys(t[":@"]).length,s))&&""!==e&&t.add(this.options.textNodeName,e),e=""),e}function g(e,t,r){const s="*."+r;for(const r in e){const i=e[r];if(s===i||t===i)return!0}return!1}function m(e,t,r,s){const i=e.indexOf(t,r);if(-1===i)throw new Error(s);return i+t.length-1}function f(e,t,r,s=">"){const i=function(e,t,r=">"){let s,i="";for(let n=t;n<e.length;n++){let t=e[n];if(s)t===s&&(s="");else if('"'===t||"'"===t)s=t;else if(t===r[0]){if(!r[1])return{data:i,index:n};if(e[n+1]===r[1])return{data:i,index:n}}else"\t"===t&&(t=" ");i+=t}}(e,t+1,s);if(!i)return;let n=i.data;const o=i.index,a=n.search(/\s/);let u=n,l=!0;-1!==a&&(u=n.substring(0,a),n=n.substring(a+1).trimStart());const c=u;if(r){const e=u.indexOf(":");-1!==e&&(u=u.substr(e+1),l=u!==i.data.substr(e+1))}return{tagName:u,tagExp:n,closeIndex:o,attrExpPresent:l,rawTagName:c}}function A(e,t,r){const s=r;let i=1;for(;r<e.length;r++)if("<"===e[r])if("/"===e[r+1]){const n=m(e,">",r,`${t} is not closed`);if(e.substring(r+2,n).trim()===t&&(i--,0===i))return{tagContent:e.substring(s,r),i:n};r=n}else if("?"===e[r+1])r=m(e,"?>",r+1,"StopNode is not closed.");else if("!--"===e.substr(r+1,3))r=m(e,"--\x3e",r+3,"StopNode is not closed.");else if("!["===e.substr(r+1,2))r=m(e,"]]>",r,"StopNode is not closed.")-2;else{const s=f(e,r,">");s&&((s&&s.tagName)===t&&"/"!==s.tagExp[s.tagExp.length-1]&&i++,r=s.closeIndex)}}function b(t,r,i){if(r&&"string"==typeof t){const e=t.trim();return"true"===e||"false"!==e&&s(t,i)}return e.isExist(t)?t:""}return P=class{constructor(e){this.options=e,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"¢"},pound:{regex:/&(pound|#163);/g,val:"£"},yen:{regex:/&(yen|#165);/g,val:"¥"},euro:{regex:/&(euro|#8364);/g,val:"€"},copyright:{regex:/&(copy|#169);/g,val:"©"},reg:{regex:/&(reg|#174);/g,val:"®"},inr:{regex:/&(inr|#8377);/g,val:"₹"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(e,t)=>String.fromCharCode(Number.parseInt(t,10))},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(e,t)=>String.fromCharCode(Number.parseInt(t,16))}},this.addExternalEntities=n,this.parseXml=c,this.parseTextData=o,this.resolveNameSpace=a,this.buildAttributesMap=l,this.isItStopNode=g,this.replaceEntitiesValue=p,this.readStopNodeData=A,this.saveTextToParentTag=h,this.addChild=d,this.ignoreAttributesFn=i(this.options.ignoreAttributes)}}}(),{prettify:r}=K(),s=A();return S=class{constructor(t){this.externalEntities={},this.options=e(t)}parse(e,i){if("string"==typeof e);else{if(!e.toString)throw new Error("XML data is accepted in String or Bytes[] form.");e=e.toString()}if(i){!0===i&&(i={});const t=s.validate(e,i);if(!0!==t)throw Error(`${t.err.msg}:${t.err.line}:${t.err.col}`)}const n=new t(this.options);n.addExternalEntities(this.externalEntities);const o=n.parseXml(e);return this.options.preserveOrder||void 0===o?o:r(o,this.options)}addEntity(e,t){if(-1!==t.indexOf("&"))throw new Error("Entity value can't have '&'");if(-1!==e.indexOf("&")||-1!==e.indexOf(";"))throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for '
'");if("&"===t)throw new Error("An entity with value '&' is not permitted");this.externalEntities[e]=t}}}function J(){if(F)return _;function e(n,o,a,u){let l="",c=!1;for(let d=0;d<n.length;d++){const p=n[d],h=t(p);if(void 0===h)continue;let g="";if(g=0===a.length?h:`${a}.${h}`,h===o.textNodeName){let e=p[h];s(g,o)||(e=o.tagValueProcessor(h,e),e=i(e,o)),c&&(l+=u),l+=e,c=!1;continue}if(h===o.cdataPropName){c&&(l+=u),l+=`<![CDATA[${p[h][0][o.textNodeName]}]]>`,c=!1;continue}if(h===o.commentPropName){l+=u+`\x3c!--${p[h][0][o.textNodeName]}--\x3e`,c=!0;continue}if("?"===h[0]){const e=r(p[":@"],o),t="?xml"===h?"":u;let s=p[h][0][o.textNodeName];s=0!==s.length?" "+s:"",l+=t+`<${h}${s}${e}?>`,c=!0;continue}let m=u;""!==m&&(m+=o.indentBy);const f=u+`<${h}${r(p[":@"],o)}`,E=e(p[h],o,g,m);-1!==o.unpairedTags.indexOf(h)?o.suppressUnpairedNode?l+=f+">":l+=f+"/>":E&&0!==E.length||!o.suppressEmptyNode?E&&E.endsWith(">")?l+=f+`>${E}${u}</${h}>`:(l+=f+">",E&&""!==u&&(E.includes("/>")||E.includes("</"))?l+=u+o.indentBy+E+u:l+=E,l+=`</${h}>`):l+=f+"/>",c=!0}return l}function t(e){const t=Object.keys(e);for(let r=0;r<t.length;r++){const s=t[r];if(e.hasOwnProperty(s)&&":@"!==s)return s}}function r(e,t){let r="";if(e&&!t.ignoreAttributes)for(let s in e){if(!e.hasOwnProperty(s))continue;let n=t.attributeValueProcessor(s,e[s]);n=i(n,t),!0===n&&t.suppressBooleanAttributes?r+=` ${s.substr(t.attributeNamePrefix.length)}`:r+=` ${s.substr(t.attributeNamePrefix.length)}="${n}"`}return r}function s(e,t){let r=(e=e.substr(0,e.length-t.textNodeName.length-1)).substr(e.lastIndexOf(".")+1);for(let s in t.stopNodes)if(t.stopNodes[s]===e||t.stopNodes[s]==="*."+r)return!0;return!1}function i(e,t){if(e&&e.length>0&&t.processEntities)for(let r=0;r<t.entities.length;r++){const s=t.entities[r];e=e.replace(s.regex,s.val)}return e}return F=1,_=function(t,r){let s="";return r.format&&r.indentBy.length>0&&(s="\n"),e(t,r,"",s)}}function Y(){if(B)return j;B=1;const e="object"==typeof o&&o.env&&o.env.NODE_DEBUG&&/\bsemver\b/i.test(o.env.NODE_DEBUG)?(...e)=>console.error("SEMVER",...e):()=>{};return j=e}function Z(){if(X)return V;X=1;const e=Number.MAX_SAFE_INTEGER||9007199254740991;return V={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_BUILD_LENGTH:250,MAX_SAFE_INTEGER:e,RELEASE_TYPES:["major","premajor","minor","preminor","patch","prepatch","prerelease"],SEMVER_SPEC_VERSION:"2.0.0",FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}}!function(){if(M)return k;M=1;const e=A(),t=H(),r=function(){if(G)return D;G=1;const e=J(),t=C(),r={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(e,t){return t},attributeValueProcessor:function(e,t){return t},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&"},{regex:new RegExp(">","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1};function s(e){this.options=Object.assign({},r,e),!0===this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.ignoreAttributesFn=t(this.options.ignoreAttributes),this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=o),this.processTextOrObjNode=i,this.options.format?(this.indentate=n,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function i(e,t,r,s){const i=this.j2x(e,r+1,s.concat(t));return void 0!==e[this.options.textNodeName]&&1===Object.keys(e).length?this.buildTextValNode(e[this.options.textNodeName],t,i.attrStr,r):this.buildObjectNode(i.val,t,i.attrStr,r)}function n(e){return this.options.indentBy.repeat(e)}function o(e){return!(!e.startsWith(this.options.attributeNamePrefix)||e===this.options.textNodeName)&&e.substr(this.attrPrefixLen)}return s.prototype.build=function(t){return this.options.preserveOrder?e(t,this.options):(Array.isArray(t)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(t={[this.options.arrayNodeName]:t}),this.j2x(t,0,[]).val)},s.prototype.j2x=function(e,t,r){let s="",i="";const n=r.join(".");for(let o in e)if(Object.prototype.hasOwnProperty.call(e,o))if(void 0===e[o])this.isAttribute(o)&&(i+="");else if(null===e[o])this.isAttribute(o)?i+="":"?"===o[0]?i+=this.indentate(t)+"<"+o+"?"+this.tagEndChar:i+=this.indentate(t)+"<"+o+"/"+this.tagEndChar;else if(e[o]instanceof Date)i+=this.buildTextValNode(e[o],o,"",t);else if("object"!=typeof e[o]){const r=this.isAttribute(o);if(r&&!this.ignoreAttributesFn(r,n))s+=this.buildAttrPairStr(r,""+e[o]);else if(!r)if(o===this.options.textNodeName){let t=this.options.tagValueProcessor(o,""+e[o]);i+=this.replaceEntitiesValue(t)}else i+=this.buildTextValNode(e[o],o,"",t)}else if(Array.isArray(e[o])){const s=e[o].length;let n="",a="";for(let u=0;u<s;u++){const s=e[o][u];if(void 0===s);else if(null===s)"?"===o[0]?i+=this.indentate(t)+"<"+o+"?"+this.tagEndChar:i+=this.indentate(t)+"<"+o+"/"+this.tagEndChar;else if("object"==typeof s)if(this.options.oneListGroup){const e=this.j2x(s,t+1,r.concat(o));n+=e.val,this.options.attributesGroupName&&s.hasOwnProperty(this.options.attributesGroupName)&&(a+=e.attrStr)}else n+=this.processTextOrObjNode(s,o,t,r);else if(this.options.oneListGroup){let e=this.options.tagValueProcessor(o,s);e=this.replaceEntitiesValue(e),n+=e}else n+=this.buildTextValNode(s,o,"",t)}this.options.oneListGroup&&(n=this.buildObjectNode(n,o,a,t)),i+=n}else if(this.options.attributesGroupName&&o===this.options.attributesGroupName){const t=Object.keys(e[o]),r=t.length;for(let i=0;i<r;i++)s+=this.buildAttrPairStr(t[i],""+e[o][t[i]])}else i+=this.processTextOrObjNode(e[o],o,t,r);return{attrStr:s,val:i}},s.prototype.buildAttrPairStr=function(e,t){return t=this.options.attributeValueProcessor(e,""+t),t=this.replaceEntitiesValue(t),this.options.suppressBooleanAttributes&&"true"===t?" "+e:" "+e+'="'+t+'"'},s.prototype.buildObjectNode=function(e,t,r,s){if(""===e)return"?"===t[0]?this.indentate(s)+"<"+t+r+"?"+this.tagEndChar:this.indentate(s)+"<"+t+r+this.closeTag(t)+this.tagEndChar;{let i="</"+t+this.tagEndChar,n="";return"?"===t[0]&&(n="?",i=""),!r&&""!==r||-1!==e.indexOf("<")?!1!==this.options.commentPropName&&t===this.options.commentPropName&&0===n.length?this.indentate(s)+`\x3c!--${e}--\x3e`+this.newLine:this.indentate(s)+"<"+t+r+n+this.tagEndChar+e+this.indentate(s)+i:this.indentate(s)+"<"+t+r+n+">"+e+i}},s.prototype.closeTag=function(e){let t="";return-1!==this.options.unpairedTags.indexOf(e)?this.options.suppressUnpairedNode||(t="/"):t=this.options.suppressEmptyNode?"/":`></${e}`,t},s.prototype.buildTextValNode=function(e,t,r,s){if(!1!==this.options.cdataPropName&&t===this.options.cdataPropName)return this.indentate(s)+`<![CDATA[${e}]]>`+this.newLine;if(!1!==this.options.commentPropName&&t===this.options.commentPropName)return this.indentate(s)+`\x3c!--${e}--\x3e`+this.newLine;if("?"===t[0])return this.indentate(s)+"<"+t+r+"?"+this.tagEndChar;{let i=this.options.tagValueProcessor(t,e);return i=this.replaceEntitiesValue(i),""===i?this.indentate(s)+"<"+t+r+this.closeTag(t)+this.tagEndChar:this.indentate(s)+"<"+t+r+">"+i+"</"+t+this.tagEndChar}},s.prototype.replaceEntitiesValue=function(e){if(e&&e.length>0&&this.options.processEntities)for(let t=0;t<this.options.entities.length;t++){const r=this.options.entities[t];e=e.replace(r.regex,r.val)}return e},D=s}();k={XMLParser:t,XMLValidator:e,XMLBuilder:r}}();var z,Q,W,ee,te,re,se,ie,ne,oe,ae,ue,le,ce={exports:{}};function de(){if(se)return re;se=1;const e=Y(),{MAX_LENGTH:t,MAX_SAFE_INTEGER:r}=Z(),{safeRe:s,t:i}=(z||(z=1,function(e,t){const{MAX_SAFE_COMPONENT_LENGTH:r,MAX_SAFE_BUILD_LENGTH:s,MAX_LENGTH:i}=Z(),n=Y(),o=(t=e.exports={}).re=[],a=t.safeRe=[],u=t.src=[],l=t.t={};let c=0;const d="[a-zA-Z0-9-]",p=[["\\s",1],["\\d",i],[d,s]],h=(e,t,r)=>{const s=(e=>{for(const[t,r]of p)e=e.split(`${t}*`).join(`${t}{0,${r}}`).split(`${t}+`).join(`${t}{1,${r}}`);return e})(t),i=c++;n(e,i,t),l[e]=i,u[i]=t,o[i]=new RegExp(t,r?"g":void 0),a[i]=new RegExp(s,r?"g":void 0)};h("NUMERICIDENTIFIER","0|[1-9]\\d*"),h("NUMERICIDENTIFIERLOOSE","\\d+"),h("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${d}*`),h("MAINVERSION",`(${u[l.NUMERICIDENTIFIER]})\\.(${u[l.NUMERICIDENTIFIER]})\\.(${u[l.NUMERICIDENTIFIER]})`),h("MAINVERSIONLOOSE",`(${u[l.NUMERICIDENTIFIERLOOSE]})\\.(${u[l.NUMERICIDENTIFIERLOOSE]})\\.(${u[l.NUMERICIDENTIFIERLOOSE]})`),h("PRERELEASEIDENTIFIER",`(?:${u[l.NUMERICIDENTIFIER]}|${u[l.NONNUMERICIDENTIFIER]})`),h("PRERELEASEIDENTIFIERLOOSE",`(?:${u[l.NUMERICIDENTIFIERLOOSE]}|${u[l.NONNUMERICIDENTIFIER]})`),h("PRERELEASE",`(?:-(${u[l.PRERELEASEIDENTIFIER]}(?:\\.${u[l.PRERELEASEIDENTIFIER]})*))`),h("PRERELEASELOOSE",`(?:-?(${u[l.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${u[l.PRERELEASEIDENTIFIERLOOSE]})*))`),h("BUILDIDENTIFIER",`${d}+`),h("BUILD",`(?:\\+(${u[l.BUILDIDENTIFIER]}(?:\\.${u[l.BUILDIDENTIFIER]})*))`),h("FULLPLAIN",`v?${u[l.MAINVERSION]}${u[l.PRERELEASE]}?${u[l.BUILD]}?`),h("FULL",`^${u[l.FULLPLAIN]}$`),h("LOOSEPLAIN",`[v=\\s]*${u[l.MAINVERSIONLOOSE]}${u[l.PRERELEASELOOSE]}?${u[l.BUILD]}?`),h("LOOSE",`^${u[l.LOOSEPLAIN]}$`),h("GTLT","((?:<|>)?=?)"),h("XRANGEIDENTIFIERLOOSE",`${u[l.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),h("XRANGEIDENTIFIER",`${u[l.NUMERICIDENTIFIER]}|x|X|\\*`),h("XRANGEPLAIN",`[v=\\s]*(${u[l.XRANGEIDENTIFIER]})(?:\\.(${u[l.XRANGEIDENTIFIER]})(?:\\.(${u[l.XRANGEIDENTIFIER]})(?:${u[l.PRERELEASE]})?${u[l.BUILD]}?)?)?`),h("XRANGEPLAINLOOSE",`[v=\\s]*(${u[l.XRANGEIDENTIFIERLOOSE]})(?:\\.(${u[l.XRANGEIDENTIFIERLOOSE]})(?:\\.(${u[l.XRANGEIDENTIFIERLOOSE]})(?:${u[l.PRERELEASELOOSE]})?${u[l.BUILD]}?)?)?`),h("XRANGE",`^${u[l.GTLT]}\\s*${u[l.XRANGEPLAIN]}$`),h("XRANGELOOSE",`^${u[l.GTLT]}\\s*${u[l.XRANGEPLAINLOOSE]}$`),h("COERCEPLAIN",`(^|[^\\d])(\\d{1,${r}})(?:\\.(\\d{1,${r}}))?(?:\\.(\\d{1,${r}}))?`),h("COERCE",`${u[l.COERCEPLAIN]}(?:$|[^\\d])`),h("COERCEFULL",u[l.COERCEPLAIN]+`(?:${u[l.PRERELEASE]})?(?:${u[l.BUILD]})?(?:$|[^\\d])`),h("COERCERTL",u[l.COERCE],!0),h("COERCERTLFULL",u[l.COERCEFULL],!0),h("LONETILDE","(?:~>?)"),h("TILDETRIM",`(\\s*)${u[l.LONETILDE]}\\s+`,!0),t.tildeTrimReplace="$1~",h("TILDE",`^${u[l.LONETILDE]}${u[l.XRANGEPLAIN]}$`),h("TILDELOOSE",`^${u[l.LONETILDE]}${u[l.XRANGEPLAINLOOSE]}$`),h("LONECARET","(?:\\^)"),h("CARETTRIM",`(\\s*)${u[l.LONECARET]}\\s+`,!0),t.caretTrimReplace="$1^",h("CARET",`^${u[l.LONECARET]}${u[l.XRANGEPLAIN]}$`),h("CARETLOOSE",`^${u[l.LONECARET]}${u[l.XRANGEPLAINLOOSE]}$`),h("COMPARATORLOOSE",`^${u[l.GTLT]}\\s*(${u[l.LOOSEPLAIN]})$|^$`),h("COMPARATOR",`^${u[l.GTLT]}\\s*(${u[l.FULLPLAIN]})$|^$`),h("COMPARATORTRIM",`(\\s*)${u[l.GTLT]}\\s*(${u[l.LOOSEPLAIN]}|${u[l.XRANGEPLAIN]})`,!0),t.comparatorTrimReplace="$1$2$3",h("HYPHENRANGE",`^\\s*(${u[l.XRANGEPLAIN]})\\s+-\\s+(${u[l.XRANGEPLAIN]})\\s*$`),h("HYPHENRANGELOOSE",`^\\s*(${u[l.XRANGEPLAINLOOSE]})\\s+-\\s+(${u[l.XRANGEPLAINLOOSE]})\\s*$`),h("STAR","(<|>)?=?\\s*\\*"),h("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),h("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")}(ce,ce.exports)),ce.exports),n=function(){if(W)return Q;W=1;const e=Object.freeze({loose:!0}),t=Object.freeze({});return Q=r=>r?"object"!=typeof r?e:r:t}(),{compareIdentifiers:o}=function(){if(te)return ee;te=1;const e=/^[0-9]+$/,t=(t,r)=>{const s=e.test(t),i=e.test(r);return s&&i&&(t=+t,r=+r),t===r?0:s&&!i?-1:i&&!s?1:t<r?-1:1};return ee={compareIdentifiers:t,rcompareIdentifiers:(e,r)=>t(r,e)}}();class a{constructor(o,u){if(u=n(u),o instanceof a){if(o.loose===!!u.loose&&o.includePrerelease===!!u.includePrerelease)return o;o=o.version}else if("string"!=typeof o)throw new TypeError(`Invalid version. Must be a string. Got type "${typeof o}".`);if(o.length>t)throw new TypeError(`version is longer than ${t} characters`);e("SemVer",o,u),this.options=u,this.loose=!!u.loose,this.includePrerelease=!!u.includePrerelease;const l=o.trim().match(u.loose?s[i.LOOSE]:s[i.FULL]);if(!l)throw new TypeError(`Invalid Version: ${o}`);if(this.raw=o,this.major=+l[1],this.minor=+l[2],this.patch=+l[3],this.major>r||this.major<0)throw new TypeError("Invalid major version");if(this.minor>r||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>r||this.patch<0)throw new TypeError("Invalid patch version");l[4]?this.prerelease=l[4].split(".").map((e=>{if(/^[0-9]+$/.test(e)){const t=+e;if(t>=0&&t<r)return t}return e})):this.prerelease=[],this.build=l[5]?l[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(t){if(e("SemVer.compare",this.version,this.options,t),!(t instanceof a)){if("string"==typeof t&&t===this.version)return 0;t=new a(t,this.options)}return t.version===this.version?0:this.compareMain(t)||this.comparePre(t)}compareMain(e){return e instanceof a||(e=new a(e,this.options)),o(this.major,e.major)||o(this.minor,e.minor)||o(this.patch,e.patch)}comparePre(t){if(t instanceof a||(t=new a(t,this.options)),this.prerelease.length&&!t.prerelease.length)return-1;if(!this.prerelease.length&&t.prerelease.length)return 1;if(!this.prerelease.length&&!t.prerelease.length)return 0;let r=0;do{const s=this.prerelease[r],i=t.prerelease[r];if(e("prerelease compare",r,s,i),void 0===s&&void 0===i)return 0;if(void 0===i)return 1;if(void 0===s)return-1;if(s!==i)return o(s,i)}while(++r)}compareBuild(t){t instanceof a||(t=new a(t,this.options));let r=0;do{const s=this.build[r],i=t.build[r];if(e("build compare",r,s,i),void 0===s&&void 0===i)return 0;if(void 0===i)return 1;if(void 0===s)return-1;if(s!==i)return o(s,i)}while(++r)}inc(e,t,r){switch(e){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",t,r);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",t,r);break;case"prepatch":this.prerelease.length=0,this.inc("patch",t,r),this.inc("pre",t,r);break;case"prerelease":0===this.prerelease.length&&this.inc("patch",t,r),this.inc("pre",t,r);break;case"major":0===this.minor&&0===this.patch&&0!==this.prerelease.length||this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":0===this.patch&&0!==this.prerelease.length||this.minor++,this.patch=0,this.prerelease=[];break;case"patch":0===this.prerelease.length&&this.patch++,this.prerelease=[];break;case"pre":{const e=Number(r)?1:0;if(!t&&!1===r)throw new Error("invalid increment argument: identifier is empty");if(0===this.prerelease.length)this.prerelease=[e];else{let s=this.prerelease.length;for(;--s>=0;)"number"==typeof this.prerelease[s]&&(this.prerelease[s]++,s=-2);if(-1===s){if(t===this.prerelease.join(".")&&!1===r)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(e)}}if(t){let s=[t,e];!1===r&&(s=[t]),0===o(this.prerelease[0],t)?isNaN(this.prerelease[1])&&(this.prerelease=s):this.prerelease=s}break}default:throw new Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}}return re=a}!function(){if(ae)return oe;ae=1;const e=function(){if(ne)return ie;ne=1;const e=de();return ie=(t,r,s=!1)=>{if(t instanceof e)return t;try{return new e(t,r)}catch(e){if(!s)return null;throw e}}}();oe=(t,r)=>{const s=e(t,r);return s?s.version:null}}(),function(){if(le)return ue;le=1;const e=de();ue=(t,r)=>new e(t,r).major}(),n.m},36620:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});const s=(0,r(35947).YK)().setApp("settings").detectUser().build()},58723:(e,t)=>{function r(e,t){var s={name:e.name,path:e.path,hash:e.hash,query:e.query,params:e.params,fullPath:e.fullPath,meta:e.meta};return t&&(s.from=r(t)),Object.freeze(s)}t.O=function(e,t,s){var i=(s||{}).moduleName||"route";e.registerModule(i,{namespaced:!0,state:r(t.currentRoute),mutations:{ROUTE_CHANGED:function(t,s){e.state[i]=r(s.to,s.from)}}});var n,o=!1,a=e.watch((function(e){return e[i]}),(function(e){var r=e.fullPath;r!==n&&(null!=n&&(o=!0,t.push(e)),n=r)}),{sync:!0}),u=t.afterEach((function(t,r){o?o=!1:(n=t.fullPath,e.commit(i+"/ROUTE_CHANGED",{to:t,from:r}))}));return function(){null!=u&&u(),null!=a&&a(),e.unregisterModule(i)}}}},n={};function o(e){var t=n[e];if(void 0!==t)return t.exports;var r=n[e]={id:e,loaded:!1,exports:{}};return i[e].call(r.exports,r,r.exports,o),r.loaded=!0,r.exports}o.m=i,e=[],o.O=(t,r,s,i)=>{if(!r){var n=1/0;for(c=0;c<e.length;c++){r=e[c][0],s=e[c][1],i=e[c][2];for(var a=!0,u=0;u<r.length;u++)(!1&i||n>=i)&&Object.keys(o.O).every((e=>o.O[e](r[u])))?r.splice(u--,1):(a=!1,i<n&&(n=i));if(a){e.splice(c--,1);var l=s();void 0!==l&&(t=l)}}return t}i=i||0;for(var c=e.length;c>0&&e[c-1][2]>i;c--)e[c]=e[c-1];e[c]=[r,s,i]},o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var r in t)o.o(t,r)&&!o.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce(((t,r)=>(o.f[r](e,t),t)),[])),o.u=e=>(({3239:"settings-users",4529:"settings-apps-view"}[e]||e)+"-"+e+".js?v="+{459:"975afd1e02f53abf8034",1023:"06cf5496a0a2d7ef494a",2441:"2c050d23f9070dfa7f03",3239:"0828a85406800581fcfe",4529:"ab85428fc71ea1124397",5862:"142cd48ca8ec32e57725",6227:"3494381758c4754ef3f5",7265:"3ea08242e475ac7a22e1",8737:"1ee3b21131ac8193a04d"}[e]),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),r={},s="nextcloud:",o.l=(e,t,i,n)=>{if(r[e])r[e].push(t);else{var a,u;if(void 0!==i)for(var l=document.getElementsByTagName("script"),c=0;c<l.length;c++){var d=l[c];if(d.getAttribute("src")==e||d.getAttribute("data-webpack")==s+i){a=d;break}}a||(u=!0,(a=document.createElement("script")).charset="utf-8",a.timeout=120,o.nc&&a.setAttribute("nonce",o.nc),a.setAttribute("data-webpack",s+i),a.src=e),r[e]=[t];var p=(t,s)=>{a.onerror=a.onload=null,clearTimeout(h);var i=r[e];if(delete r[e],a.parentNode&&a.parentNode.removeChild(a),i&&i.forEach((e=>e(s))),t)return t(s)},h=setTimeout(p.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=p.bind(null,a.onerror),a.onload=p.bind(null,a.onload),u&&document.head.appendChild(a)}},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=2689,(()=>{var e;o.g.importScripts&&(e=o.g.location+"");var t=o.g.document;if(!e&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");if(r.length)for(var s=r.length-1;s>-1&&(!e||!/^http(s?):/.test(e));)e=r[s--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),o.p=e})(),(()=>{o.b=document.baseURI||self.location.href;var e={2689:0};o.f.j=(t,r)=>{var s=o.o(e,t)?e[t]:void 0;if(0!==s)if(s)r.push(s[2]);else{var i=new Promise(((r,i)=>s=e[t]=[r,i]));r.push(s[2]=i);var n=o.p+o.u(t),a=new Error;o.l(n,(r=>{if(o.o(e,t)&&(0!==(s=e[t])&&(e[t]=void 0),s)){var i=r&&("load"===r.type?"missing":r.type),n=r&&r.target&&r.target.src;a.message="Loading chunk "+t+" failed.\n("+i+": "+n+")",a.name="ChunkLoadError",a.type=i,a.request=n,s[1](a)}}),"chunk-"+t,t)}},o.O.j=t=>0===e[t];var t=(t,r)=>{var s,i,n=r[0],a=r[1],u=r[2],l=0;if(n.some((t=>0!==e[t]))){for(s in a)o.o(a,s)&&(o.m[s]=a[s]);if(u)var c=u(o)}for(t&&t(r);l<n.length;l++)i=n[l],o.o(e,i)&&e[i]&&e[i][0](),e[i]=0;return o.O(c)},r=self.webpackChunknextcloud=self.webpackChunknextcloud||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),o.nc=void 0;var a=o.O(void 0,[4208],(()=>o(12836)));a=o.O(a)})(); +//# sourceMappingURL=settings-vue-settings-apps-users-management.js.map?v=5bc5644413d5caee59eb
\ No newline at end of file diff --git a/dist/settings-vue-settings-apps-users-management.js.map b/dist/settings-vue-settings-apps-users-management.js.map index fad543f4be0..40f87ad5098 100644 --- a/dist/settings-vue-settings-apps-users-management.js.map +++ b/dist/settings-vue-settings-apps-users-management.js.map @@ -1 +1 @@ -{"version":3,"file":"settings-vue-settings-apps-users-management.js?v=32edbf048c42a2067726","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/settings/src/store/api.js","webpack:///nextcloud/apps/settings/src/views/SettingsApp.vue","webpack:///nextcloud/apps/settings/src/views/SettingsApp.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/settings/src/views/SettingsApp.vue?3a67","webpack:///nextcloud/apps/settings/src/router/routes.ts","webpack:///nextcloud/apps/settings/src/router/index.ts","webpack:///nextcloud/apps/settings/src/main-apps-users-management.ts","webpack:///nextcloud/apps/settings/src/utils/sorting.ts","webpack:///nextcloud/apps/settings/src/store/users.js","webpack:///nextcloud/apps/settings/src/store/apps.js","webpack:///nextcloud/apps/settings/src/store/users-settings.js","webpack:///nextcloud/apps/settings/src/store/oc.js","webpack:///nextcloud/apps/settings/src/store/index.js","webpack:///nextcloud/apps/settings/src/constants/GroupManagement.ts","webpack:///nextcloud/node_modules/@nextcloud/files/dist/index.mjs","webpack:///nextcloud/apps/settings/src/logger.ts","webpack:///nextcloud/node_modules/vuex-router-sync/index.js","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\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 * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport axios from '@nextcloud/axios'\nimport { confirmPassword } from '@nextcloud/password-confirmation'\nimport '@nextcloud/password-confirmation/dist/style.css'\n\nconst sanitize = function(url) {\n\treturn url.replace(/\\/$/, '') // Remove last url slash\n}\n\nexport default {\n\n\t/**\n\t * This Promise is used to chain a request that require an admin password confirmation\n\t * Since chaining Promise have a very precise behavior concerning catch and then,\n\t * you'll need to be careful when using it.\n\t * e.g\n\t * // store\n\t * action(context) {\n\t * return api.requireAdmin().then((response) => {\n\t * return api.get('url')\n\t * .then((response) => {API success})\n\t * .catch((error) => {API failure});\n\t * }).catch((error) => {requireAdmin failure});\n\t * }\n\t * // vue\n\t * this.$store.dispatch('action').then(() => {always executed})\n\t *\n\t * Since Promise.then().catch().then() will always execute the last then\n\t * this.$store.dispatch('action').then will always be executed\n\t *\n\t * If you want requireAdmin failure to also catch the API request failure\n\t * you will need to throw a new error in the api.get.catch()\n\t *\n\t * e.g\n\t * api.requireAdmin().then((response) => {\n\t * api.get('url')\n\t * .then((response) => {API success})\n\t * .catch((error) => {throw error;});\n\t * }).catch((error) => {requireAdmin OR API failure});\n\t *\n\t * @return {Promise}\n\t */\n\trequireAdmin() {\n\t\treturn confirmPassword()\n\t},\n\tget(url, options) {\n\t\treturn axios.get(sanitize(url), options)\n\t},\n\tpost(url, data) {\n\t\treturn axios.post(sanitize(url), data)\n\t},\n\tpatch(url, data) {\n\t\treturn axios.patch(sanitize(url), data)\n\t},\n\tput(url, data) {\n\t\treturn axios.put(sanitize(url), data)\n\t},\n\tdelete(url, data) {\n\t\treturn axios.delete(sanitize(url), { params: data })\n\t},\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcContent,{attrs:{\"app-name\":\"settings\"}},[_c('router-view',{attrs:{\"name\":\"navigation\"}}),_vm._v(\" \"),_c('router-view'),_vm._v(\" \"),_c('router-view',{attrs:{\"name\":\"sidebar\"}})],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!./SettingsApp.vue?vue&type=script&setup=true&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!./SettingsApp.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./SettingsApp.vue?vue&type=template&id=288003b1\"\nimport script from \"./SettingsApp.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./SettingsApp.vue?vue&type=script&setup=true&lang=ts\"\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 { loadState } from '@nextcloud/initial-state';\nconst appstoreEnabled = loadState('settings', 'appstoreEnabled', true);\n// Dynamic loading\nconst AppStore = () => import(/* webpackChunkName: 'settings-apps-view' */ '../views/AppStore.vue');\nconst AppStoreNavigation = () => import(/* webpackChunkName: 'settings-apps-view' */ '../views/AppStoreNavigation.vue');\nconst AppStoreSidebar = () => import(/* webpackChunkName: 'settings-apps-view' */ '../views/AppStoreSidebar.vue');\nconst UserManagement = () => import(/* webpackChunkName: 'settings-users' */ '../views/UserManagement.vue');\nconst UserManagementNavigation = () => import(/* webpackChunkName: 'settings-users' */ '../views/UserManagementNavigation.vue');\nconst routes = [\n {\n name: 'users',\n path: '/:index(index.php/)?settings/users',\n components: {\n default: UserManagement,\n navigation: UserManagementNavigation,\n },\n props: true,\n children: [\n {\n path: ':selectedGroup',\n name: 'group',\n },\n ],\n },\n {\n path: '/:index(index.php/)?settings/apps',\n name: 'apps',\n redirect: {\n name: 'apps-category',\n params: {\n category: appstoreEnabled ? 'discover' : 'installed',\n },\n },\n components: {\n default: AppStore,\n navigation: AppStoreNavigation,\n sidebar: AppStoreSidebar,\n },\n children: [\n {\n path: ':category',\n name: 'apps-category',\n children: [\n {\n path: ':id',\n name: 'apps-details',\n },\n ],\n },\n ],\n },\n];\nexport default routes;\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport Vue from 'vue';\nimport Router from 'vue-router';\nimport { generateUrl } from '@nextcloud/router';\nimport routes from './routes.ts';\nVue.use(Router);\nconst router = new Router({\n mode: 'history',\n // if index.php is in the url AND we got this far, then it's working:\n // let's keep using index.php in the url\n base: generateUrl(''),\n linkActiveClass: 'active',\n routes,\n});\nexport default router;\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport Vue from 'vue';\nimport Vuex from 'vuex';\nimport VTooltipPlugin from 'v-tooltip';\nimport { sync } from 'vuex-router-sync';\nimport { t, n } from '@nextcloud/l10n';\nimport SettingsApp from './views/SettingsApp.vue';\nimport router from './router/index.ts';\nimport { useStore } from './store/index.js';\nimport { getCSPNonce } from '@nextcloud/auth';\nimport { PiniaVuePlugin, createPinia } from 'pinia';\n// CSP config for webpack dynamic chunk loading\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = getCSPNonce();\n// bind to window\nVue.prototype.t = t;\nVue.prototype.n = n;\nVue.use(PiniaVuePlugin);\nVue.use(VTooltipPlugin, { defaultHtml: false });\nVue.use(Vuex);\nconst store = useStore();\nsync(store, router);\nconst pinia = createPinia();\nexport default new Vue({\n router,\n store,\n pinia,\n render: h => h(SettingsApp),\n el: '#content',\n});\n","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCanonicalLocale, getLanguage } from '@nextcloud/l10n';\nexport const naturalCollator = Intl.Collator([getLanguage(), getCanonicalLocale()], {\n numeric: true,\n usage: 'sort',\n});\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getBuilder } from '@nextcloud/browser-storage'\nimport { getCapabilities } from '@nextcloud/capabilities'\nimport { parseFileSize } from '@nextcloud/files'\nimport { showError } from '@nextcloud/dialogs'\nimport { generateOcsUrl, generateUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport axios from '@nextcloud/axios'\n\nimport { GroupSorting } from '../constants/GroupManagement.ts'\nimport { naturalCollator } from '../utils/sorting.ts'\nimport api from './api.js'\nimport logger from '../logger.ts'\n\nconst usersSettings = loadState('settings', 'usersSettings', {})\n\nconst localStorage = getBuilder('settings').persist(true).build()\n\nconst defaults = {\n\t/**\n\t * @type {import('../views/user-types').IGroup}\n\t */\n\tgroup: {\n\t\tid: '',\n\t\tname: '',\n\t\tusercount: 0,\n\t\tdisabled: 0,\n\t\tcanAdd: true,\n\t\tcanRemove: true,\n\t},\n}\n\nconst state = {\n\tusers: [],\n\tgroups: [\n\t\t...(usersSettings.getSubAdminGroups ?? []),\n\t\t...(usersSettings.systemGroups ?? []),\n\t],\n\torderBy: usersSettings.sortGroups ?? GroupSorting.UserCount,\n\tminPasswordLength: 0,\n\tusersOffset: 0,\n\tusersLimit: 25,\n\tdisabledUsersOffset: 0,\n\tdisabledUsersLimit: 25,\n\tuserCount: usersSettings.userCount ?? 0,\n\tshowConfig: {\n\t\tshowStoragePath: localStorage.getItem('account_settings__showStoragePath') === 'true',\n\t\tshowUserBackend: localStorage.getItem('account_settings__showUserBackend') === 'true',\n\t\tshowFirstLogin: localStorage.getItem('account_settings__showFirstLogin') === 'true',\n\t\tshowLastLogin: localStorage.getItem('account_settings__showLastLogin') === 'true',\n\t\tshowNewUserForm: localStorage.getItem('account_settings__showNewUserForm') === 'true',\n\t\tshowLanguages: localStorage.getItem('account_settings__showLanguages') === 'true',\n\t},\n}\n\nconst mutations = {\n\tappendUsers(state, usersObj) {\n\t\tconst existingUsers = state.users.map(({ id }) => id)\n\t\tconst newUsers = Object.values(usersObj)\n\t\t\t.filter(({ id }) => !existingUsers.includes(id))\n\n\t\tconst users = state.users.concat(newUsers)\n\t\tstate.usersOffset += state.usersLimit\n\t\tstate.users = users\n\t},\n\tupdateDisabledUsers(state, _usersObj) {\n\t\tstate.disabledUsersOffset += state.disabledUsersLimit\n\t},\n\tsetPasswordPolicyMinLength(state, length) {\n\t\tstate.minPasswordLength = length !== '' ? length : 0\n\t},\n\t/**\n\t * @param {object} state store state\n\t * @param {import('../views/user-types.js').IGroup} newGroup new group\n\t */\n\taddGroup(state, newGroup) {\n\t\ttry {\n\t\t\tif (typeof state.groups.find((group) => group.id === newGroup.id) !== 'undefined') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// extend group to default values\n\t\t\tconst group = Object.assign({}, defaults.group, newGroup)\n\t\t\tstate.groups.unshift(group)\n\t\t} catch (e) {\n\t\t\tconsole.error('Can\\'t create group', e)\n\t\t}\n\t},\n\trenameGroup(state, { gid, displayName }) {\n\t\tconst groupIndex = state.groups.findIndex(groupSearch => groupSearch.id === gid)\n\t\tif (groupIndex >= 0) {\n\t\t\tconst updatedGroup = state.groups[groupIndex]\n\t\t\tupdatedGroup.name = displayName\n\t\t\tstate.groups.splice(groupIndex, 1, updatedGroup)\n\t\t}\n\t},\n\tremoveGroup(state, gid) {\n\t\tconst groupIndex = state.groups.findIndex(groupSearch => groupSearch.id === gid)\n\t\tif (groupIndex >= 0) {\n\t\t\tstate.groups.splice(groupIndex, 1)\n\t\t}\n\t},\n\taddUserGroup(state, { userid, gid }) {\n\t\tconst group = state.groups.find(groupSearch => groupSearch.id === gid)\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\t// increase count if user is enabled\n\t\tif (group && user.enabled && state.userCount > 0) {\n\t\t\tgroup.usercount++\n\t\t}\n\t\tconst groups = user.groups\n\t\tgroups.push(gid)\n\t},\n\tremoveUserGroup(state, { userid, gid }) {\n\t\tconst group = state.groups.find(groupSearch => groupSearch.id === gid)\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\t// lower count if user is enabled\n\t\tif (group && user.enabled && state.userCount > 0) {\n\t\t\tgroup.usercount--\n\t\t}\n\t\tconst groups = user.groups\n\t\tgroups.splice(groups.indexOf(gid), 1)\n\t},\n\taddUserSubAdmin(state, { userid, gid }) {\n\t\tconst groups = state.users.find(user => user.id === userid).subadmin\n\t\tgroups.push(gid)\n\t},\n\tremoveUserSubAdmin(state, { userid, gid }) {\n\t\tconst groups = state.users.find(user => user.id === userid).subadmin\n\t\tgroups.splice(groups.indexOf(gid), 1)\n\t},\n\tdeleteUser(state, userid) {\n\t\tconst userIndex = state.users.findIndex(user => user.id === userid)\n\t\tthis.commit('updateUserCounts', { user: state.users[userIndex], actionType: 'remove' })\n\t\tstate.users.splice(userIndex, 1)\n\t},\n\taddUserData(state, response) {\n\t\tconst user = response.data.ocs.data\n\t\tstate.users.unshift(user)\n\t\tthis.commit('updateUserCounts', { user, actionType: 'create' })\n\t},\n\tenableDisableUser(state, { userid, enabled }) {\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\tuser.enabled = enabled\n\t\tthis.commit('updateUserCounts', { user, actionType: enabled ? 'enable' : 'disable' })\n\t},\n\t// update active/disabled counts, groups counts\n\tupdateUserCounts(state, { user, actionType }) {\n\t\t// 0 is a special value\n\t\tif (state.userCount === 0) {\n\t\t\treturn\n\t\t}\n\n\t\tconst recentGroup = state.groups.find(group => group.id === '__nc_internal_recent')\n\t\tconst disabledGroup = state.groups.find(group => group.id === 'disabled')\n\t\tswitch (actionType) {\n\t\tcase 'enable':\n\t\tcase 'disable':\n\t\t\tdisabledGroup.usercount += user.enabled ? -1 : 1 // update Disabled Users count\n\t\t\trecentGroup.usercount += user.enabled ? 1 : -1\n\t\t\tstate.userCount += user.enabled ? 1 : -1 // update Active Users count\n\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\tif (!group) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tgroup.disabled += user.enabled ? -1 : 1 // update group disabled count\n\t\t\t})\n\t\t\tbreak\n\t\tcase 'create':\n\t\t\trecentGroup.usercount++\n\t\t\tstate.userCount++ // increment Active Users count\n\n\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\tif (!group) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tgroup.usercount++ // increment group total count\n\t\t\t})\n\t\t\tbreak\n\t\tcase 'remove':\n\t\t\tif (user.enabled) {\n\t\t\t\trecentGroup.usercount--\n\t\t\t\tstate.userCount-- // decrement Active Users count\n\t\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\t\tif (!group) {\n\t\t\t\t\t\tconsole.warn('User group ' + userGroup + ' does not exist during user removal')\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tgroup.usercount-- // decrement group total count\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tdisabledGroup.usercount-- // decrement Disabled Users count\n\t\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\t\tif (!group) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tgroup.disabled-- // decrement group disabled count\n\t\t\t\t})\n\t\t\t}\n\t\t\tbreak\n\t\tdefault:\n\t\t\tlogger.error(`Unknown action type in updateUserCounts: '${actionType}'`)\n\t\t\t// not throwing error to interrupt execution as this is not fatal\n\t\t}\n\t},\n\tsetUserData(state, { userid, key, value }) {\n\t\tif (key === 'quota') {\n\t\t\tconst humanValue = parseFileSize(value, true)\n\t\t\tstate.users.find(user => user.id === userid)[key][key] = humanValue !== null ? humanValue : value\n\t\t} else {\n\t\t\tstate.users.find(user => user.id === userid)[key] = value\n\t\t}\n\t},\n\n\t/**\n\t * Reset users list\n\t *\n\t * @param {object} state the store state\n\t */\n\tresetUsers(state) {\n\t\tstate.users = []\n\t\tstate.usersOffset = 0\n\t\tstate.disabledUsersOffset = 0\n\t},\n\n\t/**\n\t * Reset group list\n\t *\n\t * @param {object} state the store state\n\t */\n\tresetGroups(state) {\n\t\tstate.groups = [\n\t\t\t...(usersSettings.getSubAdminGroups ?? []),\n\t\t\t...(usersSettings.systemGroups ?? []),\n\t\t]\n\t},\n\n\tsetShowConfig(state, { key, value }) {\n\t\tlocalStorage.setItem(`account_settings__${key}`, JSON.stringify(value))\n\t\tstate.showConfig[key] = value\n\t},\n\n\tsetGroupSorting(state, sorting) {\n\t\tconst oldValue = state.orderBy\n\t\tstate.orderBy = sorting\n\n\t\t// Persist the value on the server\n\t\taxios.post(\n\t\t\tgenerateUrl('/settings/users/preferences/group.sortBy'),\n\t\t\t{\n\t\t\t\tvalue: String(sorting),\n\t\t\t},\n\t\t).catch((error) => {\n\t\t\tstate.orderBy = oldValue\n\t\t\tshowError(t('settings', 'Could not set group sorting'))\n\t\t\tlogger.error(error)\n\t\t})\n\t},\n}\n\nconst getters = {\n\tgetUsers(state) {\n\t\treturn state.users\n\t},\n\tgetGroups(state) {\n\t\treturn state.groups\n\t},\n\tgetSubAdminGroups() {\n\t\treturn usersSettings.subAdminGroups ?? []\n\t},\n\n\tgetSortedGroups(state) {\n\t\tconst groups = [...state.groups]\n\t\tif (state.orderBy === GroupSorting.UserCount) {\n\t\t\treturn groups.sort((a, b) => {\n\t\t\t\tconst numA = a.usercount - a.disabled\n\t\t\t\tconst numB = b.usercount - b.disabled\n\t\t\t\treturn (numA < numB) ? 1 : (numB < numA ? -1 : naturalCollator.compare(a.name, b.name))\n\t\t\t})\n\t\t} else {\n\t\t\treturn groups.sort((a, b) => naturalCollator.compare(a.name, b.name))\n\t\t}\n\t},\n\tgetGroupSorting(state) {\n\t\treturn state.orderBy\n\t},\n\tgetPasswordPolicyMinLength(state) {\n\t\treturn state.minPasswordLength\n\t},\n\tgetUsersOffset(state) {\n\t\treturn state.usersOffset\n\t},\n\tgetUsersLimit(state) {\n\t\treturn state.usersLimit\n\t},\n\tgetDisabledUsersOffset(state) {\n\t\treturn state.disabledUsersOffset\n\t},\n\tgetDisabledUsersLimit(state) {\n\t\treturn state.disabledUsersLimit\n\t},\n\tgetUserCount(state) {\n\t\treturn state.userCount\n\t},\n\tgetShowConfig(state) {\n\t\treturn state.showConfig\n\t},\n}\n\nconst CancelToken = axios.CancelToken\nlet searchRequestCancelSource = null\n\nconst actions = {\n\n\t/**\n\t * search users\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search Search amongst users\n\t * @return {Promise}\n\t */\n\tsearchUsers(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search })).catch((error) => {\n\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t}\n\t\t})\n\t},\n\n\t/**\n\t * Get user details\n\t *\n\t * @param {object} context store context\n\t * @param {string} userId user id\n\t * @return {Promise}\n\t */\n\tgetUser(context, userId) {\n\t\treturn api.get(generateOcsUrl(`cloud/users/${userId}`)).catch((error) => {\n\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t}\n\t\t})\n\t},\n\n\t/**\n\t * Get all users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search Search amongst users\n\t * @param {string} options.group Get users from group\n\t * @return {Promise}\n\t */\n\tgetUsers(context, { offset, limit, search, group }) {\n\t\tif (searchRequestCancelSource) {\n\t\t\tsearchRequestCancelSource.cancel('Operation canceled by another search request.')\n\t\t}\n\t\tsearchRequestCancelSource = CancelToken.source()\n\t\tsearch = typeof search === 'string' ? search : ''\n\n\t\t/**\n\t\t * Adding filters in the search bar such as in:files, in:users, etc.\n\t\t * collides with this particular search, so we need to remove them\n\t\t * here and leave only the original search query\n\t\t */\n\t\tsearch = search.replace(/in:[^\\s]+/g, '').trim()\n\n\t\tgroup = typeof group === 'string' ? group : ''\n\t\tif (group !== '') {\n\t\t\treturn api.get(generateOcsUrl('cloud/groups/{group}/users/details?offset={offset}&limit={limit}&search={search}', { group: encodeURIComponent(group), offset, limit, search }), {\n\t\t\t\tcancelToken: searchRequestCancelSource.token,\n\t\t\t})\n\t\t\t\t.then((response) => {\n\t\t\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\t\t\tif (usersCount > 0) {\n\t\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t\t}\n\t\t\t\t\treturn usersCount\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}\n\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search }), {\n\t\t\tcancelToken: searchRequestCancelSource.token,\n\t\t})\n\t\t\t.then((response) => {\n\t\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\t\tif (usersCount > 0) {\n\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t}\n\t\t\t\treturn usersCount\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t\t}\n\t\t\t})\n\t},\n\n\t/**\n\t * Get recent users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search Search query\n\t * @return {Promise<number>}\n\t */\n\tasync getRecentUsers(context, { offset, limit, search }) {\n\t\tconst url = generateOcsUrl('cloud/users/recent?offset={offset}&limit={limit}&search={search}', { offset, limit, search })\n\t\ttry {\n\t\t\tconst response = await api.get(url)\n\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\tif (usersCount > 0) {\n\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t}\n\t\t\treturn usersCount\n\t\t} catch (error) {\n\t\t\tcontext.commit('API_FAILURE', error)\n\t\t}\n\t},\n\n\t/**\n\t * Get disabled users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param options.search\n\t * @return {Promise<number>}\n\t */\n\tasync getDisabledUsers(context, { offset, limit, search }) {\n\t\tconst url = generateOcsUrl('cloud/users/disabled?offset={offset}&limit={limit}&search={search}', { offset, limit, search })\n\t\ttry {\n\t\t\tconst response = await api.get(url)\n\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\tif (usersCount > 0) {\n\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\tcontext.commit('updateDisabledUsers', response.data.ocs.data.users)\n\t\t\t}\n\t\t\treturn usersCount\n\t\t} catch (error) {\n\t\t\tcontext.commit('API_FAILURE', error)\n\t\t}\n\t},\n\n\tgetGroups(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\t\tconst limitParam = limit === -1 ? '' : `&limit=${limit}`\n\t\treturn api.get(generateOcsUrl('cloud/groups?offset={offset}&search={search}', { offset, search }) + limitParam)\n\t\t\t.then((response) => {\n\t\t\t\tif (Object.keys(response.data.ocs.data.groups).length > 0) {\n\t\t\t\t\tresponse.data.ocs.data.groups.forEach(function(group) {\n\t\t\t\t\t\tcontext.commit('addGroup', { id: group, name: group })\n\t\t\t\t\t})\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\t/**\n\t * Get all users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search -\n\t * @return {Promise}\n\t */\n\tgetUsersFromList(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search }))\n\t\t\t.then((response) => {\n\t\t\t\tif (Object.keys(response.data.ocs.data.users).length > 0) {\n\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\t/**\n\t * Get all users with full details from a groupid\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.groupid -\n\t * @return {Promise}\n\t */\n\tgetUsersFromGroup(context, { groupid, offset, limit }) {\n\t\treturn api.get(generateOcsUrl('cloud/users/{groupId}/details?offset={offset}&limit={limit}', { groupId: encodeURIComponent(groupid), offset, limit }))\n\t\t\t.then((response) => context.commit('getUsersFromList', response.data.ocs.data.users))\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\tgetPasswordPolicyMinLength(context) {\n\t\tif (getCapabilities().password_policy && getCapabilities().password_policy.minLength) {\n\t\t\tcontext.commit('setPasswordPolicyMinLength', getCapabilities().password_policy.minLength)\n\t\t\treturn getCapabilities().password_policy.minLength\n\t\t}\n\t\treturn false\n\t},\n\n\t/**\n\t * Add group\n\t *\n\t * @param {object} context store context\n\t * @param {string} gid Group id\n\t * @return {Promise}\n\t */\n\taddGroup(context, gid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/groups'), { groupid: gid })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('addGroup', { id: gid, name: gid })\n\t\t\t\t\treturn { gid, displayName: gid }\n\t\t\t\t})\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { gid, error })\n\t\t\t// let's throw one more time to prevent the view\n\t\t\t// from adding the user to a group that doesn't exists\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Rename group\n\t *\n\t * @param {object} context store context\n\t * @param {string} groupid Group id\n\t * @param {string} displayName Group display name\n\t * @return {Promise}\n\t */\n\trenameGroup(context, { groupid, displayName }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.put(generateOcsUrl('cloud/groups/{groupId}', { groupId: encodeURIComponent(groupid) }), { key: 'displayname', value: displayName })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('renameGroup', { gid: groupid, displayName })\n\t\t\t\t\treturn { groupid, displayName }\n\t\t\t\t})\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { groupid, error })\n\t\t\t// let's throw one more time to prevent the view\n\t\t\t// from renaming the group\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Remove group\n\t *\n\t * @param {object} context store context\n\t * @param {string} gid Group id\n\t * @return {Promise}\n\t */\n\tremoveGroup(context, gid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/groups/{groupId}', { groupId: encodeURIComponent(gid) }))\n\t\t\t\t.then((response) => context.commit('removeGroup', gid))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { gid, error }))\n\t},\n\n\t/**\n\t * Add user to group\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\taddUserGroup(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/groups', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('addUserGroup', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Remove user from group\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\tremoveUserGroup(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}/groups', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('removeUserGroup', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { userid, error })\n\t\t\t// let's throw one more time to prevent\n\t\t\t// the view from removing the user row on failure\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Add user to group admin\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\taddUserSubAdmin(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/subadmins', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('addUserSubAdmin', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Remove user from group admin\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\tremoveUserSubAdmin(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}/subadmins', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('removeUserSubAdmin', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Mark all user devices for remote wipe\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\tasync wipeUserDevices(context, userid) {\n\t\ttry {\n\t\t\tawait api.requireAdmin()\n\t\t\treturn await api.post(generateOcsUrl('cloud/users/{userid}/wipe', { userid }))\n\t\t} catch (error) {\n\t\t\tcontext.commit('API_FAILURE', { userid, error })\n\t\t\treturn Promise.reject(new Error('Failed to wipe user devices'))\n\t\t}\n\t},\n\n\t/**\n\t * Delete a user\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\tdeleteUser(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}', { userid }))\n\t\t\t\t.then((response) => context.commit('deleteUser', userid))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Add a user\n\t *\n\t * @param {object} context store context\n\t * @param {Function} context.commit -\n\t * @param {Function} context.dispatch -\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.password User password\n\t * @param {string} options.displayName User display name\n\t * @param {string} options.email User email\n\t * @param {string} options.groups User groups\n\t * @param {string} options.subadmin User subadmin groups\n\t * @param {string} options.quota User email\n\t * @param {string} options.language User language\n\t * @param {string} options.manager User manager\n\t * @return {Promise}\n\t */\n\taddUser({ commit, dispatch }, { userid, password, displayName, email, groups, subadmin, quota, language, manager }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users'), { userid, password, displayName, email, groups, subadmin, quota, language, manager })\n\t\t\t\t.then((response) => dispatch('addUserData', userid || response.data.ocs.data.id))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcommit('API_FAILURE', { userid, error })\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Get user data and commit addition\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\taddUserData(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.get(generateOcsUrl('cloud/users/{userid}', { userid }))\n\t\t\t\t.then((response) => context.commit('addUserData', response))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Enable or disable user\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {boolean} options.enabled User enablement status\n\t * @return {Promise}\n\t */\n\tenableDisableUser(context, { userid, enabled = true }) {\n\t\tconst userStatus = enabled ? 'enable' : 'disable'\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.put(generateOcsUrl('cloud/users/{userid}/{userStatus}', { userid, userStatus }))\n\t\t\t\t.then((response) => context.commit('enableDisableUser', { userid, enabled }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Edit user data\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.key User field to edit\n\t * @param {string} options.value Value of the change\n\t * @return {Promise}\n\t */\n\tasync setUserData(context, { userid, key, value }) {\n\t\tconst allowedEmpty = ['email', 'displayname', 'manager']\n\t\tif (['email', 'language', 'quota', 'displayname', 'password', 'manager'].indexOf(key) !== -1) {\n\t\t\t// We allow empty email or displayname\n\t\t\tif (typeof value === 'string'\n\t\t\t\t&& (\n\t\t\t\t\t(allowedEmpty.indexOf(key) === -1 && value.length > 0)\n\t\t\t\t\t|| allowedEmpty.indexOf(key) !== -1\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\ttry {\n\t\t\t\t\tawait api.requireAdmin()\n\t\t\t\t\tawait api.put(generateOcsUrl('cloud/users/{userid}', { userid }), { key, value })\n\t\t\t\t\treturn context.commit('setUserData', { userid, key, value })\n\t\t\t\t} catch (error) {\n\t\t\t\t\tcontext.commit('API_FAILURE', { userid, error })\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn Promise.reject(new Error('Invalid request data'))\n\t},\n\n\t/**\n\t * Send welcome mail\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\tsendWelcomeMail(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/welcome', { userid }))\n\t\t\t\t.then(response => true)\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport api from './api.js'\nimport Vue from 'vue'\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\nimport { showError, showInfo } from '@nextcloud/dialogs'\nimport { loadState } from '@nextcloud/initial-state'\n\nconst state = {\n\tapps: [],\n\tbundles: loadState('settings', 'appstoreBundles', []),\n\tcategories: [],\n\tupdateCount: loadState('settings', 'appstoreUpdateCount', 0),\n\tloading: {},\n\tgettingCategoriesPromise: null,\n\tappApiEnabled: loadState('settings', 'appApiEnabled', false),\n}\n\nconst mutations = {\n\n\tAPPS_API_FAILURE(state, error) {\n\t\tshowError(t('settings', 'An error occurred during the request. Unable to proceed.') + '<br>' + error.error.response.data.data.message, { isHTML: true })\n\t\tconsole.error(state, error)\n\t},\n\n\tinitCategories(state, { categories, updateCount }) {\n\t\tstate.categories = categories\n\t\tstate.updateCount = updateCount\n\t},\n\n\tupdateCategories(state, categoriesPromise) {\n\t\tstate.gettingCategoriesPromise = categoriesPromise\n\t},\n\n\tsetUpdateCount(state, updateCount) {\n\t\tstate.updateCount = updateCount\n\t},\n\n\taddCategory(state, category) {\n\t\tstate.categories.push(category)\n\t},\n\n\tappendCategories(state, categoriesArray) {\n\t\t// convert obj to array\n\t\tstate.categories = categoriesArray\n\t},\n\n\tsetAllApps(state, apps) {\n\t\tstate.apps = apps\n\t},\n\n\tsetError(state, { appId, error }) {\n\t\tif (!Array.isArray(appId)) {\n\t\t\tappId = [appId]\n\t\t}\n\t\tappId.forEach((_id) => {\n\t\t\tconst app = state.apps.find(app => app.id === _id)\n\t\t\tapp.error = error\n\t\t})\n\t},\n\n\tclearError(state, { appId, error }) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.error = null\n\t},\n\n\tenableApp(state, { appId, groups }) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.active = true\n\t\tapp.groups = groups\n\t\tif (app.id === 'app_api') {\n\t\t\tstate.appApiEnabled = true\n\t\t}\n\t},\n\n\tsetInstallState(state, { appId, canInstall }) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tif (app) {\n\t\t\tapp.canInstall = canInstall === true\n\t\t}\n\t},\n\n\tdisableApp(state, appId) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.active = false\n\t\tapp.groups = []\n\t\tif (app.removable) {\n\t\t\tapp.canUnInstall = true\n\t\t}\n\t\tif (app.id === 'app_api') {\n\t\t\tstate.appApiEnabled = false\n\t\t}\n\t},\n\n\tuninstallApp(state, appId) {\n\t\tstate.apps.find(app => app.id === appId).active = false\n\t\tstate.apps.find(app => app.id === appId).groups = []\n\t\tstate.apps.find(app => app.id === appId).needsDownload = true\n\t\tstate.apps.find(app => app.id === appId).installed = false\n\t\tstate.apps.find(app => app.id === appId).canUnInstall = false\n\t\tstate.apps.find(app => app.id === appId).canInstall = true\n\t\tif (appId === 'app_api') {\n\t\t\tstate.appApiEnabled = false\n\t\t}\n\t},\n\n\tupdateApp(state, appId) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tconst version = app.update\n\t\tapp.update = null\n\t\tapp.version = version\n\t\tstate.updateCount--\n\n\t},\n\n\tresetApps(state) {\n\t\tstate.apps = []\n\t},\n\treset(state) {\n\t\tstate.apps = []\n\t\tstate.categories = []\n\t\tstate.updateCount = 0\n\t},\n\tstartLoading(state, id) {\n\t\tif (Array.isArray(id)) {\n\t\t\tid.forEach((_id) => {\n\t\t\t\tVue.set(state.loading, _id, true)\n\t\t\t})\n\t\t} else {\n\t\t\tVue.set(state.loading, id, true)\n\t\t}\n\t},\n\tstopLoading(state, id) {\n\t\tif (Array.isArray(id)) {\n\t\t\tid.forEach((_id) => {\n\t\t\t\tVue.set(state.loading, _id, false)\n\t\t\t})\n\t\t} else {\n\t\t\tVue.set(state.loading, id, false)\n\t\t}\n\t},\n}\n\nconst getters = {\n\tisAppApiEnabled(state) {\n\t\treturn state.appApiEnabled\n\t},\n\tloading(state) {\n\t\treturn function(id) {\n\t\t\treturn state.loading[id]\n\t\t}\n\t},\n\tgetCategories(state) {\n\t\treturn state.categories\n\t},\n\tgetAllApps(state) {\n\t\treturn state.apps\n\t},\n\tgetAppBundles(state) {\n\t\treturn state.bundles\n\t},\n\tgetUpdateCount(state) {\n\t\treturn state.updateCount\n\t},\n\tgetCategoryById: (state) => (selectedCategoryId) => {\n\t\treturn state.categories.find((category) => category.id === selectedCategoryId)\n\t},\n}\n\nconst actions = {\n\n\tenableApp(context, { appId, groups }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.post(generateUrl('settings/apps/enable'), { appIds: apps, groups })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tapps.forEach(_appId => {\n\t\t\t\t\t\tcontext.commit('enableApp', { appId: _appId, groups })\n\t\t\t\t\t})\n\n\t\t\t\t\t// check for server health\n\t\t\t\t\treturn axios.get(generateUrl('apps/files/'))\n\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\tif (response.data.update_required) {\n\t\t\t\t\t\t\t\tshowInfo(\n\t\t\t\t\t\t\t\t\tt(\n\t\t\t\t\t\t\t\t\t\t'settings',\n\t\t\t\t\t\t\t\t\t\t'The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds.',\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tonClick: () => window.location.reload(),\n\t\t\t\t\t\t\t\t\t\tclose: false,\n\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\t\t\tlocation.reload()\n\t\t\t\t\t\t\t\t}, 5000)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch(() => {\n\t\t\t\t\t\t\tif (!Array.isArray(appId)) {\n\t\t\t\t\t\t\t\tshowError(t('settings', 'Error: This app cannot be enabled because it makes the server unstable'))\n\t\t\t\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\t\t\t\terror: t('settings', 'Error: This app cannot be enabled because it makes the server unstable'),\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\tcontext.dispatch('disableApp', { appId })\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\terror: error.response.data.data.message,\n\t\t\t\t\t})\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tforceEnableApp(context, { appId, groups }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then(() => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.post(generateUrl('settings/apps/force'), { appId })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('setInstallState', { appId, canInstall: true })\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\terror: error.response.data.data.message,\n\t\t\t\t\t})\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t\t\t.finally(() => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tdisableApp(context, { appId }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\treturn api.post(generateUrl('settings/apps/disable'), { appIds: apps })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tapps.forEach(_appId => {\n\t\t\t\t\t\tcontext.commit('disableApp', _appId)\n\t\t\t\t\t})\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tuninstallApp(context, { appId }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', appId)\n\t\t\treturn api.get(generateUrl(`settings/apps/uninstall/${appId}`))\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('uninstallApp', appId)\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\n\tupdateApp(context, { appId }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', appId)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.get(generateUrl(`settings/apps/update/${appId}`))\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('updateApp', appId)\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\n\tgetAllApps(context) {\n\t\tcontext.commit('startLoading', 'list')\n\t\treturn api.get(generateUrl('settings/apps/list'))\n\t\t\t.then((response) => {\n\t\t\t\tcontext.commit('setAllApps', response.data.apps)\n\t\t\t\tcontext.commit('stopLoading', 'list')\n\t\t\t\treturn true\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\tasync getCategories(context, { shouldRefetchCategories = false } = {}) {\n\t\tif (shouldRefetchCategories || !context.state.gettingCategoriesPromise) {\n\t\t\tcontext.commit('startLoading', 'categories')\n\t\t\ttry {\n\t\t\t\tconst categoriesPromise = api.get(generateUrl('settings/apps/categories'))\n\t\t\t\tcontext.commit('updateCategories', categoriesPromise)\n\t\t\t\tconst categoriesPromiseResponse = await categoriesPromise\n\t\t\t\tif (categoriesPromiseResponse.data.length > 0) {\n\t\t\t\t\tcontext.commit('appendCategories', categoriesPromiseResponse.data)\n\t\t\t\t\tcontext.commit('stopLoading', 'categories')\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\tcontext.commit('stopLoading', 'categories')\n\t\t\t\treturn false\n\t\t\t} catch (error) {\n\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t}\n\t\t}\n\t\treturn context.state.gettingCategoriesPromise\n\t},\n\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { loadState } from '@nextcloud/initial-state'\n\nconst state = {\n\tserverData: loadState('settings', 'usersSettings', {}),\n}\nconst mutations = {\n\tsetServerData(state, data) {\n\t\tstate.serverData = data\n\t},\n}\nconst getters = {\n\tgetServerData(state) {\n\t\treturn state.serverData\n\t},\n}\nconst actions = {}\n\nexport default { state, mutations, getters, actions }\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport api from './api.js'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nconst state = {}\nconst mutations = {}\nconst getters = {}\nconst actions = {\n\t/**\n\t * Set application config in database\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.app Application name\n\t * @param {boolean} options.key Config key\n\t * @param {boolean} options.value Value to set\n\t * @return {Promise}\n\t */\n\tsetAppConfig(context, { app, key, value }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('apps/provisioning_api/api/v1/config/apps/{app}/{key}', { app, key }), { value })\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { app, key, value, error }))\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { Store } from 'vuex'\nimport users from './users.js'\nimport apps from './apps.js'\nimport settings from './users-settings.js'\nimport oc from './oc.js'\nimport { showError } from '@nextcloud/dialogs'\n\nconst debug = process.env.NODE_ENV !== 'production'\n\nconst mutations = {\n\tAPI_FAILURE(state, error) {\n\t\ttry {\n\t\t\tconst message = error.error.response.data.ocs.meta.message\n\t\t\tshowError(t('settings', 'An error occurred during the request. Unable to proceed.') + '<br>' + message, { isHTML: true })\n\t\t} catch (e) {\n\t\t\tshowError(t('settings', 'An error occurred during the request. Unable to proceed.'))\n\t\t}\n\t\tconsole.error(state, error)\n\t},\n}\n\nlet store = null\n\nexport const useStore = () => {\n\tif (store === null) {\n\t\tstore = new Store({\n\t\t\tmodules: {\n\t\t\t\tusers,\n\t\t\t\tapps,\n\t\t\t\tsettings,\n\t\t\t\toc,\n\t\t\t},\n\t\t\tstrict: debug,\n\t\t\tmutations,\n\t\t})\n\t}\n\treturn store\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/**\n * https://github.com/nextcloud/server/blob/208e38e84e1a07a49699aa90dc5b7272d24489f0/lib/private/Group/MetaData.php#L34\n */\nexport var GroupSorting;\n(function (GroupSorting) {\n GroupSorting[GroupSorting[\"UserCount\"] = 1] = \"UserCount\";\n GroupSorting[GroupSorting[\"GroupName\"] = 2] = \"GroupName\";\n})(GroupSorting || (GroupSorting = {}));\n","import { o as logger } from \"./chunks/dav-Co9y-hkg.mjs\";\nimport { q, F, s, N, t, P, c, l, m, n, a, g, p, b, r, d, h, f, k, j, e, i } from \"./chunks/dav-Co9y-hkg.mjs\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { extname, basename } from \"path\";\nimport { getCanonicalLocale, getLanguage } from \"@nextcloud/l10n\";\nimport { TypedEventTarget } from \"typescript-event-target\";\nvar NewMenuEntryCategory = /* @__PURE__ */ ((NewMenuEntryCategory2) => {\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"UploadFromDevice\"] = 0] = \"UploadFromDevice\";\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"CreateNew\"] = 1] = \"CreateNew\";\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"Other\"] = 2] = \"Other\";\n return NewMenuEntryCategory2;\n})(NewMenuEntryCategory || {});\nclass NewFileMenu {\n _entries = [];\n registerEntry(entry) {\n this.validateEntry(entry);\n entry.category = entry.category ?? 1;\n this._entries.push(entry);\n }\n unregisterEntry(entry) {\n const entryIndex = typeof entry === \"string\" ? this.getEntryIndex(entry) : this.getEntryIndex(entry.id);\n if (entryIndex === -1) {\n logger.warn(\"Entry not found, nothing removed\", { entry, entries: this.getEntries() });\n return;\n }\n this._entries.splice(entryIndex, 1);\n }\n /**\n * Get the list of registered entries\n *\n * @param {Folder} context the creation context. Usually the current folder\n */\n getEntries(context) {\n if (context) {\n return this._entries.filter((entry) => typeof entry.enabled === \"function\" ? entry.enabled(context) : true);\n }\n return this._entries;\n }\n getEntryIndex(id) {\n return this._entries.findIndex((entry) => entry.id === id);\n }\n validateEntry(entry) {\n if (!entry.id || !entry.displayName || !(entry.iconSvgInline || entry.iconClass) || !entry.handler) {\n throw new Error(\"Invalid entry\");\n }\n if (typeof entry.id !== \"string\" || typeof entry.displayName !== \"string\") {\n throw new Error(\"Invalid id or displayName property\");\n }\n if (entry.iconClass && typeof entry.iconClass !== \"string\" || entry.iconSvgInline && typeof entry.iconSvgInline !== \"string\") {\n throw new Error(\"Invalid icon provided\");\n }\n if (entry.enabled !== void 0 && typeof entry.enabled !== \"function\") {\n throw new Error(\"Invalid enabled property\");\n }\n if (typeof entry.handler !== \"function\") {\n throw new Error(\"Invalid handler property\");\n }\n if (\"order\" in entry && typeof entry.order !== \"number\") {\n throw new Error(\"Invalid order property\");\n }\n if (this.getEntryIndex(entry.id) !== -1) {\n throw new Error(\"Duplicate entry\");\n }\n }\n}\nconst getNewFileMenu = function() {\n if (typeof window._nc_newfilemenu === \"undefined\") {\n window._nc_newfilemenu = new NewFileMenu();\n logger.debug(\"NewFileMenu initialized\");\n }\n return window._nc_newfilemenu;\n};\nvar DefaultType = /* @__PURE__ */ ((DefaultType2) => {\n DefaultType2[\"DEFAULT\"] = \"default\";\n DefaultType2[\"HIDDEN\"] = \"hidden\";\n return DefaultType2;\n})(DefaultType || {});\nclass 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 title() {\n return this._action.title;\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 parent() {\n return this._action.parent;\n }\n get default() {\n return this._action.default;\n }\n get destructive() {\n return this._action.destructive;\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 (\"title\" in action && typeof action.title !== \"function\") {\n throw new Error(\"Invalid title 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 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 (action.destructive !== void 0 && typeof action.destructive !== \"boolean\") {\n throw new Error(\"Invalid destructive flag\");\n }\n if (\"parent\" in action && typeof action.parent !== \"string\") {\n throw new Error(\"Invalid parent\");\n }\n if (action.default && !Object.values(DefaultType).includes(action.default)) {\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}\nconst registerFileAction = function(action) {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\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};\nconst getFileActions = function() {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\n return window._nc_fileactions;\n};\nclass FileListAction {\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 order() {\n return this._action.order;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\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 (\"iconSvgInline\" in action && typeof action.iconSvgInline !== \"function\") {\n throw new Error(\"Invalid iconSvgInline function\");\n }\n if (\"order\" in action && typeof action.order !== \"number\") {\n throw new Error(\"Invalid order\");\n }\n if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n throw new Error(\"Invalid enabled function\");\n }\n if (!action.exec || typeof action.exec !== \"function\") {\n throw new Error(\"Invalid exec function\");\n }\n }\n}\nconst registerFileListAction = (action) => {\n if (typeof window._nc_filelistactions === \"undefined\") {\n window._nc_filelistactions = [];\n }\n if (window._nc_filelistactions.find((listAction) => listAction.id === action.id)) {\n logger.error(`FileListAction with id \"${action.id}\" is already registered`, { action });\n return;\n }\n window._nc_filelistactions.push(action);\n};\nconst getFileListActions = () => {\n if (typeof window._nc_filelistactions === \"undefined\") {\n window._nc_filelistactions = [];\n }\n return window._nc_filelistactions;\n};\nclass Header {\n _header;\n constructor(header) {\n this.validateHeader(header);\n this._header = header;\n }\n get id() {\n return this._header.id;\n }\n get order() {\n return this._header.order;\n }\n get enabled() {\n return this._header.enabled;\n }\n get render() {\n return this._header.render;\n }\n get updated() {\n return this._header.updated;\n }\n validateHeader(header) {\n if (!header.id || !header.render || !header.updated) {\n throw new Error(\"Invalid header: id, render and updated are required\");\n }\n if (typeof header.id !== \"string\") {\n throw new Error(\"Invalid id property\");\n }\n if (header.enabled !== void 0 && typeof header.enabled !== \"function\") {\n throw new Error(\"Invalid enabled property\");\n }\n if (header.render && typeof header.render !== \"function\") {\n throw new Error(\"Invalid render property\");\n }\n if (header.updated && typeof header.updated !== \"function\") {\n throw new Error(\"Invalid updated property\");\n }\n }\n}\nconst registerFileListHeaders = function(header) {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n if (window._nc_filelistheader.find((search) => search.id === header.id)) {\n logger.error(`Header ${header.id} already registered`, { header });\n return;\n }\n window._nc_filelistheader.push(header);\n};\nconst getFileListHeaders = function() {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n return window._nc_filelistheader;\n};\nvar InvalidFilenameErrorReason = /* @__PURE__ */ ((InvalidFilenameErrorReason2) => {\n InvalidFilenameErrorReason2[\"ReservedName\"] = \"reserved name\";\n InvalidFilenameErrorReason2[\"Character\"] = \"character\";\n InvalidFilenameErrorReason2[\"Extension\"] = \"extension\";\n return InvalidFilenameErrorReason2;\n})(InvalidFilenameErrorReason || {});\nclass InvalidFilenameError extends Error {\n constructor(options) {\n super(`Invalid ${options.reason} '${options.segment}' in filename '${options.filename}'`, { cause: options });\n }\n /**\n * The filename that was validated\n */\n get filename() {\n return this.cause.filename;\n }\n /**\n * Reason why the validation failed\n */\n get reason() {\n return this.cause.reason;\n }\n /**\n * Part of the filename that caused this error\n */\n get segment() {\n return this.cause.segment;\n }\n}\nfunction validateFilename(filename) {\n const capabilities = getCapabilities().files;\n const forbiddenCharacters = capabilities.forbidden_filename_characters ?? window._oc_config?.forbidden_filenames_characters ?? [\"/\", \"\\\\\"];\n for (const character of forbiddenCharacters) {\n if (filename.includes(character)) {\n throw new InvalidFilenameError({ segment: character, reason: \"character\", filename });\n }\n }\n filename = filename.toLocaleLowerCase();\n const forbiddenFilenames = capabilities.forbidden_filenames ?? [\".htaccess\"];\n if (forbiddenFilenames.includes(filename)) {\n throw new InvalidFilenameError({\n filename,\n segment: filename,\n reason: \"reserved name\"\n /* ReservedName */\n });\n }\n const endOfBasename = filename.indexOf(\".\", 1);\n const basename2 = filename.substring(0, endOfBasename === -1 ? void 0 : endOfBasename);\n const forbiddenFilenameBasenames = capabilities.forbidden_filename_basenames ?? [];\n if (forbiddenFilenameBasenames.includes(basename2)) {\n throw new InvalidFilenameError({\n filename,\n segment: basename2,\n reason: \"reserved name\"\n /* ReservedName */\n });\n }\n const forbiddenFilenameExtensions = capabilities.forbidden_filename_extensions ?? [\".part\", \".filepart\"];\n for (const extension of forbiddenFilenameExtensions) {\n if (filename.length > extension.length && filename.endsWith(extension)) {\n throw new InvalidFilenameError({ segment: extension, reason: \"extension\", filename });\n }\n }\n}\nfunction isFilenameValid(filename) {\n try {\n validateFilename(filename);\n return true;\n } catch (error) {\n if (error instanceof InvalidFilenameError) {\n return false;\n }\n throw error;\n }\n}\nfunction getUniqueName(name, otherNames, options) {\n const opts = {\n suffix: (n2) => `(${n2})`,\n ignoreFileExtension: false,\n ...options\n };\n let newName = name;\n let i2 = 1;\n while (otherNames.includes(newName)) {\n const ext = opts.ignoreFileExtension ? \"\" : extname(name);\n const base = basename(name, ext);\n newName = `${base} ${opts.suffix(i2++)}${ext}`;\n }\n return newName;\n}\nconst humanList = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\"];\nconst humanListBinary = [\"B\", \"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\"];\nfunction formatFileSize(size, skipSmallSizes = false, binaryPrefixes = false, base1000 = false) {\n binaryPrefixes = binaryPrefixes && !base1000;\n if (typeof size === \"string\") {\n size = Number(size);\n }\n let order = size > 0 ? Math.floor(Math.log(size) / Math.log(base1000 ? 1e3 : 1024)) : 0;\n order = Math.min((binaryPrefixes ? humanListBinary.length : humanList.length) - 1, order);\n const readableFormat = binaryPrefixes ? humanListBinary[order] : humanList[order];\n let relativeSize = (size / Math.pow(base1000 ? 1e3 : 1024, order)).toFixed(1);\n if (skipSmallSizes === true && order === 0) {\n return (relativeSize !== \"0.0\" ? \"< 1 \" : \"0 \") + (binaryPrefixes ? humanListBinary[1] : humanList[1]);\n }\n if (order < 2) {\n relativeSize = parseFloat(relativeSize).toFixed(0);\n } else {\n relativeSize = parseFloat(relativeSize).toLocaleString(getCanonicalLocale());\n }\n return relativeSize + \" \" + readableFormat;\n}\nfunction parseFileSize(value, forceBinary = false) {\n try {\n value = `${value}`.toLocaleLowerCase().replaceAll(/\\s+/g, \"\").replaceAll(\",\", \".\");\n } catch (e2) {\n return null;\n }\n const match = value.match(/^([0-9]*(\\.[0-9]*)?)([kmgtp]?)(i?)b?$/);\n if (match === null || match[1] === \".\" || match[1] === \"\") {\n return null;\n }\n const bytesArray = {\n \"\": 0,\n k: 1,\n m: 2,\n g: 3,\n t: 4,\n p: 5,\n e: 6\n };\n const decimalString = `${match[1]}`;\n const base = match[4] === \"i\" || forceBinary ? 1024 : 1e3;\n return Math.round(Number.parseFloat(decimalString) * base ** bytesArray[match[3]]);\n}\nfunction stringify(value) {\n if (value instanceof Date) {\n return value.toISOString();\n }\n return String(value);\n}\nfunction orderBy(collection, identifiers2, orders) {\n identifiers2 = identifiers2 ?? [(value) => value];\n orders = orders ?? [];\n const sorting = identifiers2.map((_, index) => (orders[index] ?? \"asc\") === \"asc\" ? 1 : -1);\n const collator = Intl.Collator(\n [getLanguage(), getCanonicalLocale()],\n {\n // handle 10 as ten and not as one-zero\n numeric: true,\n usage: \"sort\"\n }\n );\n return [...collection].sort((a2, b2) => {\n for (const [index, identifier] of identifiers2.entries()) {\n const value = collator.compare(stringify(identifier(a2)), stringify(identifier(b2)));\n if (value !== 0) {\n return value * sorting[index];\n }\n }\n return 0;\n });\n}\nvar FilesSortingMode = /* @__PURE__ */ ((FilesSortingMode2) => {\n FilesSortingMode2[\"Name\"] = \"basename\";\n FilesSortingMode2[\"Modified\"] = \"mtime\";\n FilesSortingMode2[\"Size\"] = \"size\";\n return FilesSortingMode2;\n})(FilesSortingMode || {});\nfunction sortNodes(nodes, options = {}) {\n const sortingOptions = {\n // Default to sort by name\n sortingMode: \"basename\",\n // Default to sort ascending\n sortingOrder: \"asc\",\n ...options\n };\n const basename2 = (name) => name.lastIndexOf(\".\") > 0 ? name.slice(0, name.lastIndexOf(\".\")) : name;\n const identifiers2 = [\n // 1: Sort favorites first if enabled\n ...sortingOptions.sortFavoritesFirst ? [(v) => v.attributes?.favorite !== 1] : [],\n // 2: Sort folders first if sorting by name\n ...sortingOptions.sortFoldersFirst ? [(v) => v.type !== \"folder\"] : [],\n // 3: Use sorting mode if NOT basename (to be able to use display name too)\n ...sortingOptions.sortingMode !== \"basename\" ? [(v) => v[sortingOptions.sortingMode]] : [],\n // 4: Use display name if available, fallback to name\n (v) => basename2(v.displayname || v.attributes?.displayname || v.basename),\n // 5: Finally, use basename if all previous sorting methods failed\n (v) => v.basename\n ];\n const orders = [\n // (for 1): always sort favorites before normal files\n ...sortingOptions.sortFavoritesFirst ? [\"asc\"] : [],\n // (for 2): always sort folders before files\n ...sortingOptions.sortFoldersFirst ? [\"asc\"] : [],\n // (for 3): Reverse if sorting by mtime as mtime higher means edited more recent -> lower\n ...sortingOptions.sortingMode === \"mtime\" ? [sortingOptions.sortingOrder === \"asc\" ? \"desc\" : \"asc\"] : [],\n // (also for 3 so make sure not to conflict with 2 and 3)\n ...sortingOptions.sortingMode !== \"mtime\" && sortingOptions.sortingMode !== \"basename\" ? [sortingOptions.sortingOrder] : [],\n // for 4: use configured sorting direction\n sortingOptions.sortingOrder,\n // for 5: use configured sorting direction\n sortingOptions.sortingOrder\n ];\n return orderBy(nodes, identifiers2, orders);\n}\nclass Navigation extends TypedEventTarget {\n _views = [];\n _currentView = null;\n /**\n * Register a new view on the navigation\n * @param view The view to register\n * @throws `Error` is thrown if a view with the same id is already registered\n */\n register(view) {\n if (this._views.find((search) => search.id === view.id)) {\n throw new Error(`View id ${view.id} is already registered`);\n }\n this._views.push(view);\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n /**\n * Remove a registered view\n * @param id The id of the view to remove\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 this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n }\n /**\n * Set the currently active view\n * @fires UpdateActiveViewEvent\n * @param view New active view\n */\n setActive(view) {\n this._currentView = view;\n const event = new CustomEvent(\"updateActive\", { detail: view });\n this.dispatchTypedEvent(\"updateActive\", event);\n }\n /**\n * The currently active files view\n */\n get active() {\n return this._currentView;\n }\n /**\n * All registered views\n */\n get views() {\n return this._views;\n }\n}\nconst getNavigation = function() {\n if (typeof window._nc_navigation === \"undefined\") {\n window._nc_navigation = new Navigation();\n logger.debug(\"Navigation service initialized\");\n }\n return window._nc_navigation;\n};\nclass Column {\n _column;\n constructor(column) {\n isValidColumn(column);\n this._column = column;\n }\n get id() {\n return this._column.id;\n }\n get title() {\n return this._column.title;\n }\n get render() {\n return this._column.render;\n }\n get sort() {\n return this._column.sort;\n }\n get summary() {\n return this._column.summary;\n }\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 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};\nfunction getDefaultExportFromCjs(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, \"default\") ? x[\"default\"] : x;\n}\nvar validator = {};\nvar util = {};\nvar hasRequiredUtil;\nfunction requireUtil() {\n if (hasRequiredUtil) return util;\n hasRequiredUtil = 1;\n (function(exports) {\n const nameStartChar = \":A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\";\n const nameChar = nameStartChar + \"\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040\";\n const nameRegexp = \"[\" + nameStartChar + \"][\" + nameChar + \"]*\";\n const regexName = new RegExp(\"^\" + nameRegexp + \"$\");\n const getAllMatches = function(string, regex) {\n const matches = [];\n let match = regex.exec(string);\n while (match) {\n const allmatches = [];\n allmatches.startIndex = regex.lastIndex - match[0].length;\n const len = match.length;\n for (let index = 0; index < len; index++) {\n allmatches.push(match[index]);\n }\n matches.push(allmatches);\n match = regex.exec(string);\n }\n return matches;\n };\n const isName = function(string) {\n const match = regexName.exec(string);\n return !(match === null || typeof match === \"undefined\");\n };\n exports.isExist = function(v) {\n return typeof v !== \"undefined\";\n };\n exports.isEmptyObject = function(obj) {\n return Object.keys(obj).length === 0;\n };\n exports.merge = function(target, a2, arrayMode) {\n if (a2) {\n const keys = Object.keys(a2);\n const len = keys.length;\n for (let i2 = 0; i2 < len; i2++) {\n if (arrayMode === \"strict\") {\n target[keys[i2]] = [a2[keys[i2]]];\n } else {\n target[keys[i2]] = a2[keys[i2]];\n }\n }\n }\n };\n exports.getValue = function(v) {\n if (exports.isExist(v)) {\n return v;\n } else {\n return \"\";\n }\n };\n exports.isName = isName;\n exports.getAllMatches = getAllMatches;\n exports.nameRegexp = nameRegexp;\n })(util);\n return util;\n}\nvar hasRequiredValidator;\nfunction requireValidator() {\n if (hasRequiredValidator) return validator;\n hasRequiredValidator = 1;\n const util2 = requireUtil();\n const defaultOptions = {\n allowBooleanAttributes: false,\n //A tag can have attributes without any value\n unpairedTags: []\n };\n validator.validate = function(xmlData, options) {\n options = Object.assign({}, defaultOptions, options);\n const tags = [];\n let tagFound = false;\n let reachedRoot = false;\n if (xmlData[0] === \"\\uFEFF\") {\n xmlData = xmlData.substr(1);\n }\n for (let i2 = 0; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\" && xmlData[i2 + 1] === \"?\") {\n i2 += 2;\n i2 = readPI(xmlData, i2);\n if (i2.err) return i2;\n } else if (xmlData[i2] === \"<\") {\n let tagStartPos = i2;\n i2++;\n if (xmlData[i2] === \"!\") {\n i2 = readCommentAndCDATA(xmlData, i2);\n continue;\n } else {\n let closingTag = false;\n if (xmlData[i2] === \"/\") {\n closingTag = true;\n i2++;\n }\n let tagName = \"\";\n for (; i2 < xmlData.length && xmlData[i2] !== \">\" && xmlData[i2] !== \" \" && xmlData[i2] !== \"\t\" && xmlData[i2] !== \"\\n\" && xmlData[i2] !== \"\\r\"; i2++) {\n tagName += xmlData[i2];\n }\n tagName = tagName.trim();\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substring(0, tagName.length - 1);\n i2--;\n }\n if (!validateTagName(tagName)) {\n let msg;\n if (tagName.trim().length === 0) {\n msg = \"Invalid space after '<'.\";\n } else {\n msg = \"Tag '\" + tagName + \"' is an invalid name.\";\n }\n return getErrorObject(\"InvalidTag\", msg, getLineNumberForPosition(xmlData, i2));\n }\n const result = readAttributeStr(xmlData, i2);\n if (result === false) {\n return getErrorObject(\"InvalidAttr\", \"Attributes for '\" + tagName + \"' have open quote.\", getLineNumberForPosition(xmlData, i2));\n }\n let attrStr = result.value;\n i2 = result.index;\n if (attrStr[attrStr.length - 1] === \"/\") {\n const attrStrStart = i2 - attrStr.length;\n attrStr = attrStr.substring(0, attrStr.length - 1);\n const isValid = validateAttributeString(attrStr, options);\n if (isValid === true) {\n tagFound = true;\n } else {\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n }\n } else if (closingTag) {\n if (!result.tagClosed) {\n return getErrorObject(\"InvalidTag\", \"Closing tag '\" + tagName + \"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i2));\n } else if (attrStr.trim().length > 0) {\n return getErrorObject(\"InvalidTag\", \"Closing tag '\" + tagName + \"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else if (tags.length === 0) {\n return getErrorObject(\"InvalidTag\", \"Closing tag '\" + tagName + \"' has not been opened.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else {\n const otg = tags.pop();\n if (tagName !== otg.tagName) {\n let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n return getErrorObject(\n \"InvalidTag\",\n \"Expected closing tag '\" + otg.tagName + \"' (opened in line \" + openPos.line + \", col \" + openPos.col + \") instead of closing tag '\" + tagName + \"'.\",\n getLineNumberForPosition(xmlData, tagStartPos)\n );\n }\n if (tags.length == 0) {\n reachedRoot = true;\n }\n }\n } else {\n const isValid = validateAttributeString(attrStr, options);\n if (isValid !== true) {\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i2 - attrStr.length + isValid.err.line));\n }\n if (reachedRoot === true) {\n return getErrorObject(\"InvalidXml\", \"Multiple possible root nodes found.\", getLineNumberForPosition(xmlData, i2));\n } else if (options.unpairedTags.indexOf(tagName) !== -1) ;\n else {\n tags.push({ tagName, tagStartPos });\n }\n tagFound = true;\n }\n for (i2++; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\") {\n if (xmlData[i2 + 1] === \"!\") {\n i2++;\n i2 = readCommentAndCDATA(xmlData, i2);\n continue;\n } else if (xmlData[i2 + 1] === \"?\") {\n i2 = readPI(xmlData, ++i2);\n if (i2.err) return i2;\n } else {\n break;\n }\n } else if (xmlData[i2] === \"&\") {\n const afterAmp = validateAmpersand(xmlData, i2);\n if (afterAmp == -1)\n return getErrorObject(\"InvalidChar\", \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i2));\n i2 = afterAmp;\n } else {\n if (reachedRoot === true && !isWhiteSpace(xmlData[i2])) {\n return getErrorObject(\"InvalidXml\", \"Extra text at the end\", getLineNumberForPosition(xmlData, i2));\n }\n }\n }\n if (xmlData[i2] === \"<\") {\n i2--;\n }\n }\n } else {\n if (isWhiteSpace(xmlData[i2])) {\n continue;\n }\n return getErrorObject(\"InvalidChar\", \"char '\" + xmlData[i2] + \"' is not expected.\", getLineNumberForPosition(xmlData, i2));\n }\n }\n if (!tagFound) {\n return getErrorObject(\"InvalidXml\", \"Start tag expected.\", 1);\n } else if (tags.length == 1) {\n return getErrorObject(\"InvalidTag\", \"Unclosed tag '\" + tags[0].tagName + \"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n } else if (tags.length > 0) {\n return getErrorObject(\"InvalidXml\", \"Invalid '\" + JSON.stringify(tags.map((t2) => t2.tagName), null, 4).replace(/\\r?\\n/g, \"\") + \"' found.\", { line: 1, col: 1 });\n }\n return true;\n };\n function isWhiteSpace(char) {\n return char === \" \" || char === \"\t\" || char === \"\\n\" || char === \"\\r\";\n }\n function readPI(xmlData, i2) {\n const start = i2;\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] == \"?\" || xmlData[i2] == \" \") {\n const tagname = xmlData.substr(start, i2 - start);\n if (i2 > 5 && tagname === \"xml\") {\n return getErrorObject(\"InvalidXml\", \"XML declaration allowed only at the start of the document.\", getLineNumberForPosition(xmlData, i2));\n } else if (xmlData[i2] == \"?\" && xmlData[i2 + 1] == \">\") {\n i2++;\n break;\n } else {\n continue;\n }\n }\n }\n return i2;\n }\n function readCommentAndCDATA(xmlData, i2) {\n if (xmlData.length > i2 + 5 && xmlData[i2 + 1] === \"-\" && xmlData[i2 + 2] === \"-\") {\n for (i2 += 3; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"-\" && xmlData[i2 + 1] === \"-\" && xmlData[i2 + 2] === \">\") {\n i2 += 2;\n break;\n }\n }\n } else if (xmlData.length > i2 + 8 && xmlData[i2 + 1] === \"D\" && xmlData[i2 + 2] === \"O\" && xmlData[i2 + 3] === \"C\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"Y\" && xmlData[i2 + 6] === \"P\" && xmlData[i2 + 7] === \"E\") {\n let angleBracketsCount = 1;\n for (i2 += 8; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\") {\n angleBracketsCount++;\n } else if (xmlData[i2] === \">\") {\n angleBracketsCount--;\n if (angleBracketsCount === 0) {\n break;\n }\n }\n }\n } else if (xmlData.length > i2 + 9 && xmlData[i2 + 1] === \"[\" && xmlData[i2 + 2] === \"C\" && xmlData[i2 + 3] === \"D\" && xmlData[i2 + 4] === \"A\" && xmlData[i2 + 5] === \"T\" && xmlData[i2 + 6] === \"A\" && xmlData[i2 + 7] === \"[\") {\n for (i2 += 8; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"]\" && xmlData[i2 + 1] === \"]\" && xmlData[i2 + 2] === \">\") {\n i2 += 2;\n break;\n }\n }\n }\n return i2;\n }\n const doubleQuote = '\"';\n const singleQuote = \"'\";\n function readAttributeStr(xmlData, i2) {\n let attrStr = \"\";\n let startChar = \"\";\n let tagClosed = false;\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === doubleQuote || xmlData[i2] === singleQuote) {\n if (startChar === \"\") {\n startChar = xmlData[i2];\n } else if (startChar !== xmlData[i2]) ;\n else {\n startChar = \"\";\n }\n } else if (xmlData[i2] === \">\") {\n if (startChar === \"\") {\n tagClosed = true;\n break;\n }\n }\n attrStr += xmlData[i2];\n }\n if (startChar !== \"\") {\n return false;\n }\n return {\n value: attrStr,\n index: i2,\n tagClosed\n };\n }\n const validAttrStrRegxp = new RegExp(`(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*(['\"])(([\\\\s\\\\S])*?)\\\\5)?`, \"g\");\n function validateAttributeString(attrStr, options) {\n const matches = util2.getAllMatches(attrStr, validAttrStrRegxp);\n const attrNames = {};\n for (let i2 = 0; i2 < matches.length; i2++) {\n if (matches[i2][1].length === 0) {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + matches[i2][2] + \"' has no space in starting.\", getPositionFromMatch(matches[i2]));\n } else if (matches[i2][3] !== void 0 && matches[i2][4] === void 0) {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + matches[i2][2] + \"' is without value.\", getPositionFromMatch(matches[i2]));\n } else if (matches[i2][3] === void 0 && !options.allowBooleanAttributes) {\n return getErrorObject(\"InvalidAttr\", \"boolean attribute '\" + matches[i2][2] + \"' is not allowed.\", getPositionFromMatch(matches[i2]));\n }\n const attrName = matches[i2][2];\n if (!validateAttrName(attrName)) {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + attrName + \"' is an invalid name.\", getPositionFromMatch(matches[i2]));\n }\n if (!attrNames.hasOwnProperty(attrName)) {\n attrNames[attrName] = 1;\n } else {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + attrName + \"' is repeated.\", getPositionFromMatch(matches[i2]));\n }\n }\n return true;\n }\n function validateNumberAmpersand(xmlData, i2) {\n let re2 = /\\d/;\n if (xmlData[i2] === \"x\") {\n i2++;\n re2 = /[\\da-fA-F]/;\n }\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \";\")\n return i2;\n if (!xmlData[i2].match(re2))\n break;\n }\n return -1;\n }\n function validateAmpersand(xmlData, i2) {\n i2++;\n if (xmlData[i2] === \";\")\n return -1;\n if (xmlData[i2] === \"#\") {\n i2++;\n return validateNumberAmpersand(xmlData, i2);\n }\n let count = 0;\n for (; i2 < xmlData.length; i2++, count++) {\n if (xmlData[i2].match(/\\w/) && count < 20)\n continue;\n if (xmlData[i2] === \";\")\n break;\n return -1;\n }\n return i2;\n }\n function getErrorObject(code, message, lineNumber) {\n return {\n err: {\n code,\n msg: message,\n line: lineNumber.line || lineNumber,\n col: lineNumber.col\n }\n };\n }\n function validateAttrName(attrName) {\n return util2.isName(attrName);\n }\n function validateTagName(tagname) {\n return util2.isName(tagname);\n }\n function getLineNumberForPosition(xmlData, index) {\n const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n return {\n line: lines.length,\n // column number is last line's length + 1, because column numbering starts at 1:\n col: lines[lines.length - 1].length + 1\n };\n }\n function getPositionFromMatch(match) {\n return match.startIndex + match[1].length;\n }\n return validator;\n}\nvar OptionsBuilder = {};\nvar hasRequiredOptionsBuilder;\nfunction requireOptionsBuilder() {\n if (hasRequiredOptionsBuilder) return OptionsBuilder;\n hasRequiredOptionsBuilder = 1;\n const defaultOptions = {\n preserveOrder: false,\n attributeNamePrefix: \"@_\",\n attributesGroupName: false,\n textNodeName: \"#text\",\n ignoreAttributes: true,\n removeNSPrefix: false,\n // remove NS from tag name or attribute name if true\n allowBooleanAttributes: false,\n //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseTagValue: true,\n parseAttributeValue: false,\n trimValues: true,\n //Trim string values of tag and attributes\n cdataPropName: false,\n numberParseOptions: {\n hex: true,\n leadingZeros: true,\n eNotation: true\n },\n tagValueProcessor: function(tagName, val) {\n return val;\n },\n attributeValueProcessor: function(attrName, val) {\n return val;\n },\n stopNodes: [],\n //nested tags will not be parsed even for errors\n alwaysCreateTextNode: false,\n isArray: () => false,\n commentPropName: false,\n unpairedTags: [],\n processEntities: true,\n htmlEntities: false,\n ignoreDeclaration: false,\n ignorePiTags: false,\n transformTagName: false,\n transformAttributeName: false,\n updateTag: function(tagName, jPath, attrs) {\n return tagName;\n }\n // skipEmptyListItem: false\n };\n const buildOptions = function(options) {\n return Object.assign({}, defaultOptions, options);\n };\n OptionsBuilder.buildOptions = buildOptions;\n OptionsBuilder.defaultOptions = defaultOptions;\n return OptionsBuilder;\n}\nvar xmlNode;\nvar hasRequiredXmlNode;\nfunction requireXmlNode() {\n if (hasRequiredXmlNode) return xmlNode;\n hasRequiredXmlNode = 1;\n class XmlNode {\n constructor(tagname) {\n this.tagname = tagname;\n this.child = [];\n this[\":@\"] = {};\n }\n add(key, val) {\n if (key === \"__proto__\") key = \"#__proto__\";\n this.child.push({ [key]: val });\n }\n addChild(node) {\n if (node.tagname === \"__proto__\") node.tagname = \"#__proto__\";\n if (node[\":@\"] && Object.keys(node[\":@\"]).length > 0) {\n this.child.push({ [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n } else {\n this.child.push({ [node.tagname]: node.child });\n }\n }\n }\n xmlNode = XmlNode;\n return xmlNode;\n}\nvar DocTypeReader;\nvar hasRequiredDocTypeReader;\nfunction requireDocTypeReader() {\n if (hasRequiredDocTypeReader) return DocTypeReader;\n hasRequiredDocTypeReader = 1;\n const util2 = requireUtil();\n function readDocType(xmlData, i2) {\n const entities = {};\n if (xmlData[i2 + 3] === \"O\" && xmlData[i2 + 4] === \"C\" && xmlData[i2 + 5] === \"T\" && xmlData[i2 + 6] === \"Y\" && xmlData[i2 + 7] === \"P\" && xmlData[i2 + 8] === \"E\") {\n i2 = i2 + 9;\n let angleBracketsCount = 1;\n let hasBody = false, comment = false;\n let exp = \"\";\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\" && !comment) {\n if (hasBody && isEntity(xmlData, i2)) {\n i2 += 7;\n let entityName, val;\n [entityName, val, i2] = readEntityExp(xmlData, i2 + 1);\n if (val.indexOf(\"&\") === -1)\n entities[validateEntityName(entityName)] = {\n regx: RegExp(`&${entityName};`, \"g\"),\n val\n };\n } else if (hasBody && isElement(xmlData, i2)) i2 += 8;\n else if (hasBody && isAttlist(xmlData, i2)) i2 += 8;\n else if (hasBody && isNotation(xmlData, i2)) i2 += 9;\n else comment = true;\n angleBracketsCount++;\n exp = \"\";\n } else if (xmlData[i2] === \">\") {\n if (comment) {\n if (xmlData[i2 - 1] === \"-\" && xmlData[i2 - 2] === \"-\") {\n comment = false;\n angleBracketsCount--;\n }\n } else {\n angleBracketsCount--;\n }\n if (angleBracketsCount === 0) {\n break;\n }\n } else if (xmlData[i2] === \"[\") {\n hasBody = true;\n } else {\n exp += xmlData[i2];\n }\n }\n if (angleBracketsCount !== 0) {\n throw new Error(`Unclosed DOCTYPE`);\n }\n } else {\n throw new Error(`Invalid Tag instead of DOCTYPE`);\n }\n return { entities, i: i2 };\n }\n function readEntityExp(xmlData, i2) {\n let entityName = \"\";\n for (; i2 < xmlData.length && (xmlData[i2] !== \"'\" && xmlData[i2] !== '\"'); i2++) {\n entityName += xmlData[i2];\n }\n entityName = entityName.trim();\n if (entityName.indexOf(\" \") !== -1) throw new Error(\"External entites are not supported\");\n const startChar = xmlData[i2++];\n let val = \"\";\n for (; i2 < xmlData.length && xmlData[i2] !== startChar; i2++) {\n val += xmlData[i2];\n }\n return [entityName, val, i2];\n }\n function isEntity(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"E\" && xmlData[i2 + 3] === \"N\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"I\" && xmlData[i2 + 6] === \"T\" && xmlData[i2 + 7] === \"Y\") return true;\n return false;\n }\n function isElement(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"E\" && xmlData[i2 + 3] === \"L\" && xmlData[i2 + 4] === \"E\" && xmlData[i2 + 5] === \"M\" && xmlData[i2 + 6] === \"E\" && xmlData[i2 + 7] === \"N\" && xmlData[i2 + 8] === \"T\") return true;\n return false;\n }\n function isAttlist(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"A\" && xmlData[i2 + 3] === \"T\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"L\" && xmlData[i2 + 6] === \"I\" && xmlData[i2 + 7] === \"S\" && xmlData[i2 + 8] === \"T\") return true;\n return false;\n }\n function isNotation(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"N\" && xmlData[i2 + 3] === \"O\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"A\" && xmlData[i2 + 6] === \"T\" && xmlData[i2 + 7] === \"I\" && xmlData[i2 + 8] === \"O\" && xmlData[i2 + 9] === \"N\") return true;\n return false;\n }\n function validateEntityName(name) {\n if (util2.isName(name))\n return name;\n else\n throw new Error(`Invalid entity name ${name}`);\n }\n DocTypeReader = readDocType;\n return DocTypeReader;\n}\nvar strnum;\nvar hasRequiredStrnum;\nfunction requireStrnum() {\n if (hasRequiredStrnum) return strnum;\n hasRequiredStrnum = 1;\n const hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;\n const numRegex = /^([\\-\\+])?(0*)(\\.[0-9]+([eE]\\-?[0-9]+)?|[0-9]+(\\.[0-9]+([eE]\\-?[0-9]+)?)?)$/;\n if (!Number.parseInt && window.parseInt) {\n Number.parseInt = window.parseInt;\n }\n if (!Number.parseFloat && window.parseFloat) {\n Number.parseFloat = window.parseFloat;\n }\n const consider = {\n hex: true,\n leadingZeros: true,\n decimalPoint: \".\",\n eNotation: true\n //skipLike: /regex/\n };\n function toNumber(str, options = {}) {\n options = Object.assign({}, consider, options);\n if (!str || typeof str !== \"string\") return str;\n let trimmedStr = str.trim();\n if (options.skipLike !== void 0 && options.skipLike.test(trimmedStr)) return str;\n else if (options.hex && hexRegex.test(trimmedStr)) {\n return Number.parseInt(trimmedStr, 16);\n } else {\n const match = numRegex.exec(trimmedStr);\n if (match) {\n const sign = match[1];\n const leadingZeros = match[2];\n let numTrimmedByZeros = trimZeros(match[3]);\n const eNotation = match[4] || match[6];\n if (!options.leadingZeros && leadingZeros.length > 0 && sign && trimmedStr[2] !== \".\") return str;\n else if (!options.leadingZeros && leadingZeros.length > 0 && !sign && trimmedStr[1] !== \".\") return str;\n else {\n const num = Number(trimmedStr);\n const numStr = \"\" + num;\n if (numStr.search(/[eE]/) !== -1) {\n if (options.eNotation) return num;\n else return str;\n } else if (eNotation) {\n if (options.eNotation) return num;\n else return str;\n } else if (trimmedStr.indexOf(\".\") !== -1) {\n if (numStr === \"0\" && numTrimmedByZeros === \"\") return num;\n else if (numStr === numTrimmedByZeros) return num;\n else if (sign && numStr === \"-\" + numTrimmedByZeros) return num;\n else return str;\n }\n if (leadingZeros) {\n if (numTrimmedByZeros === numStr) return num;\n else if (sign + numTrimmedByZeros === numStr) return num;\n else return str;\n }\n if (trimmedStr === numStr) return num;\n else if (trimmedStr === sign + numStr) return num;\n return str;\n }\n } else {\n return str;\n }\n }\n }\n function trimZeros(numStr) {\n if (numStr && numStr.indexOf(\".\") !== -1) {\n numStr = numStr.replace(/0+$/, \"\");\n if (numStr === \".\") numStr = \"0\";\n else if (numStr[0] === \".\") numStr = \"0\" + numStr;\n else if (numStr[numStr.length - 1] === \".\") numStr = numStr.substr(0, numStr.length - 1);\n return numStr;\n }\n return numStr;\n }\n strnum = toNumber;\n return strnum;\n}\nvar ignoreAttributes;\nvar hasRequiredIgnoreAttributes;\nfunction requireIgnoreAttributes() {\n if (hasRequiredIgnoreAttributes) return ignoreAttributes;\n hasRequiredIgnoreAttributes = 1;\n function getIgnoreAttributesFn(ignoreAttributes2) {\n if (typeof ignoreAttributes2 === \"function\") {\n return ignoreAttributes2;\n }\n if (Array.isArray(ignoreAttributes2)) {\n return (attrName) => {\n for (const pattern of ignoreAttributes2) {\n if (typeof pattern === \"string\" && attrName === pattern) {\n return true;\n }\n if (pattern instanceof RegExp && pattern.test(attrName)) {\n return true;\n }\n }\n };\n }\n return () => false;\n }\n ignoreAttributes = getIgnoreAttributesFn;\n return ignoreAttributes;\n}\nvar OrderedObjParser_1;\nvar hasRequiredOrderedObjParser;\nfunction requireOrderedObjParser() {\n if (hasRequiredOrderedObjParser) return OrderedObjParser_1;\n hasRequiredOrderedObjParser = 1;\n const util2 = requireUtil();\n const xmlNode2 = requireXmlNode();\n const readDocType = requireDocTypeReader();\n const toNumber = requireStrnum();\n const getIgnoreAttributesFn = requireIgnoreAttributes();\n class OrderedObjParser {\n constructor(options) {\n this.options = options;\n this.currentNode = null;\n this.tagsNodeStack = [];\n this.docTypeEntities = {};\n this.lastEntities = {\n \"apos\": { regex: /&(apos|#39|#x27);/g, val: \"'\" },\n \"gt\": { regex: /&(gt|#62|#x3E);/g, val: \">\" },\n \"lt\": { regex: /&(lt|#60|#x3C);/g, val: \"<\" },\n \"quot\": { regex: /&(quot|#34|#x22);/g, val: '\"' }\n };\n this.ampEntity = { regex: /&(amp|#38|#x26);/g, val: \"&\" };\n this.htmlEntities = {\n \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n \"cent\": { regex: /&(cent|#162);/g, val: \"¢\" },\n \"pound\": { regex: /&(pound|#163);/g, val: \"£\" },\n \"yen\": { regex: /&(yen|#165);/g, val: \"¥\" },\n \"euro\": { regex: /&(euro|#8364);/g, val: \"€\" },\n \"copyright\": { regex: /&(copy|#169);/g, val: \"©\" },\n \"reg\": { regex: /&(reg|#174);/g, val: \"®\" },\n \"inr\": { regex: /&(inr|#8377);/g, val: \"₹\" },\n \"num_dec\": { regex: /&#([0-9]{1,7});/g, val: (_, str) => String.fromCharCode(Number.parseInt(str, 10)) },\n \"num_hex\": { regex: /&#x([0-9a-fA-F]{1,6});/g, val: (_, str) => String.fromCharCode(Number.parseInt(str, 16)) }\n };\n this.addExternalEntities = addExternalEntities;\n this.parseXml = parseXml;\n this.parseTextData = parseTextData;\n this.resolveNameSpace = resolveNameSpace;\n this.buildAttributesMap = buildAttributesMap;\n this.isItStopNode = isItStopNode;\n this.replaceEntitiesValue = replaceEntitiesValue;\n this.readStopNodeData = readStopNodeData;\n this.saveTextToParentTag = saveTextToParentTag;\n this.addChild = addChild;\n this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes);\n }\n }\n function addExternalEntities(externalEntities) {\n const entKeys = Object.keys(externalEntities);\n for (let i2 = 0; i2 < entKeys.length; i2++) {\n const ent = entKeys[i2];\n this.lastEntities[ent] = {\n regex: new RegExp(\"&\" + ent + \";\", \"g\"),\n val: externalEntities[ent]\n };\n }\n }\n function parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n if (val !== void 0) {\n if (this.options.trimValues && !dontTrim) {\n val = val.trim();\n }\n if (val.length > 0) {\n if (!escapeEntities) val = this.replaceEntitiesValue(val);\n const newval = this.options.tagValueProcessor(tagName, val, jPath, hasAttributes, isLeafNode);\n if (newval === null || newval === void 0) {\n return val;\n } else if (typeof newval !== typeof val || newval !== val) {\n return newval;\n } else if (this.options.trimValues) {\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n } else {\n const trimmedVal = val.trim();\n if (trimmedVal === val) {\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n } else {\n return val;\n }\n }\n }\n }\n }\n function resolveNameSpace(tagname) {\n if (this.options.removeNSPrefix) {\n const tags = tagname.split(\":\");\n const prefix = tagname.charAt(0) === \"/\" ? \"/\" : \"\";\n if (tags[0] === \"xmlns\") {\n return \"\";\n }\n if (tags.length === 2) {\n tagname = prefix + tags[1];\n }\n }\n return tagname;\n }\n const attrsRegx = new RegExp(`([^\\\\s=]+)\\\\s*(=\\\\s*(['\"])([\\\\s\\\\S]*?)\\\\3)?`, \"gm\");\n function buildAttributesMap(attrStr, jPath, tagName) {\n if (this.options.ignoreAttributes !== true && typeof attrStr === \"string\") {\n const matches = util2.getAllMatches(attrStr, attrsRegx);\n const len = matches.length;\n const attrs = {};\n for (let i2 = 0; i2 < len; i2++) {\n const attrName = this.resolveNameSpace(matches[i2][1]);\n if (this.ignoreAttributesFn(attrName, jPath)) {\n continue;\n }\n let oldVal = matches[i2][4];\n let aName = this.options.attributeNamePrefix + attrName;\n if (attrName.length) {\n if (this.options.transformAttributeName) {\n aName = this.options.transformAttributeName(aName);\n }\n if (aName === \"__proto__\") aName = \"#__proto__\";\n if (oldVal !== void 0) {\n if (this.options.trimValues) {\n oldVal = oldVal.trim();\n }\n oldVal = this.replaceEntitiesValue(oldVal);\n const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath);\n if (newVal === null || newVal === void 0) {\n attrs[aName] = oldVal;\n } else if (typeof newVal !== typeof oldVal || newVal !== oldVal) {\n attrs[aName] = newVal;\n } else {\n attrs[aName] = parseValue(\n oldVal,\n this.options.parseAttributeValue,\n this.options.numberParseOptions\n );\n }\n } else if (this.options.allowBooleanAttributes) {\n attrs[aName] = true;\n }\n }\n }\n if (!Object.keys(attrs).length) {\n return;\n }\n if (this.options.attributesGroupName) {\n const attrCollection = {};\n attrCollection[this.options.attributesGroupName] = attrs;\n return attrCollection;\n }\n return attrs;\n }\n }\n const parseXml = function(xmlData) {\n xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\");\n const xmlObj = new xmlNode2(\"!xml\");\n let currentNode = xmlObj;\n let textData = \"\";\n let jPath = \"\";\n for (let i2 = 0; i2 < xmlData.length; i2++) {\n const ch = xmlData[i2];\n if (ch === \"<\") {\n if (xmlData[i2 + 1] === \"/\") {\n const closeIndex = findClosingIndex(xmlData, \">\", i2, \"Closing Tag is not closed.\");\n let tagName = xmlData.substring(i2 + 2, closeIndex).trim();\n if (this.options.removeNSPrefix) {\n const colonIndex = tagName.indexOf(\":\");\n if (colonIndex !== -1) {\n tagName = tagName.substr(colonIndex + 1);\n }\n }\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n if (currentNode) {\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n }\n const lastTagName = jPath.substring(jPath.lastIndexOf(\".\") + 1);\n if (tagName && this.options.unpairedTags.indexOf(tagName) !== -1) {\n throw new Error(`Unpaired tag can not be used as closing tag: </${tagName}>`);\n }\n let propIndex = 0;\n if (lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1) {\n propIndex = jPath.lastIndexOf(\".\", jPath.lastIndexOf(\".\") - 1);\n this.tagsNodeStack.pop();\n } else {\n propIndex = jPath.lastIndexOf(\".\");\n }\n jPath = jPath.substring(0, propIndex);\n currentNode = this.tagsNodeStack.pop();\n textData = \"\";\n i2 = closeIndex;\n } else if (xmlData[i2 + 1] === \"?\") {\n let tagData = readTagExp(xmlData, i2, false, \"?>\");\n if (!tagData) throw new Error(\"Pi Tag is not closed.\");\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n if (this.options.ignoreDeclaration && tagData.tagName === \"?xml\" || this.options.ignorePiTags) ;\n else {\n const childNode = new xmlNode2(tagData.tagName);\n childNode.add(this.options.textNodeName, \"\");\n if (tagData.tagName !== tagData.tagExp && tagData.attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, jPath, tagData.tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n }\n i2 = tagData.closeIndex + 1;\n } else if (xmlData.substr(i2 + 1, 3) === \"!--\") {\n const endIndex = findClosingIndex(xmlData, \"-->\", i2 + 4, \"Comment is not closed.\");\n if (this.options.commentPropName) {\n const comment = xmlData.substring(i2 + 4, endIndex - 2);\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n currentNode.add(this.options.commentPropName, [{ [this.options.textNodeName]: comment }]);\n }\n i2 = endIndex;\n } else if (xmlData.substr(i2 + 1, 2) === \"!D\") {\n const result = readDocType(xmlData, i2);\n this.docTypeEntities = result.entities;\n i2 = result.i;\n } else if (xmlData.substr(i2 + 1, 2) === \"![\") {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i2, \"CDATA is not closed.\") - 2;\n const tagExp = xmlData.substring(i2 + 9, closeIndex);\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n let val = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true, true);\n if (val == void 0) val = \"\";\n if (this.options.cdataPropName) {\n currentNode.add(this.options.cdataPropName, [{ [this.options.textNodeName]: tagExp }]);\n } else {\n currentNode.add(this.options.textNodeName, val);\n }\n i2 = closeIndex + 2;\n } else {\n let result = readTagExp(xmlData, i2, this.options.removeNSPrefix);\n let tagName = result.tagName;\n const rawTagName = result.rawTagName;\n let tagExp = result.tagExp;\n let attrExpPresent = result.attrExpPresent;\n let closeIndex = result.closeIndex;\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n if (currentNode && textData) {\n if (currentNode.tagname !== \"!xml\") {\n textData = this.saveTextToParentTag(textData, currentNode, jPath, false);\n }\n }\n const lastTag = currentNode;\n if (lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1) {\n currentNode = this.tagsNodeStack.pop();\n jPath = jPath.substring(0, jPath.lastIndexOf(\".\"));\n }\n if (tagName !== xmlObj.tagname) {\n jPath += jPath ? \".\" + tagName : tagName;\n }\n if (this.isItStopNode(this.options.stopNodes, jPath, tagName)) {\n let tagContent = \"\";\n if (tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1) {\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n } else {\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n i2 = result.closeIndex;\n } else if (this.options.unpairedTags.indexOf(tagName) !== -1) {\n i2 = result.closeIndex;\n } else {\n const result2 = this.readStopNodeData(xmlData, rawTagName, closeIndex + 1);\n if (!result2) throw new Error(`Unexpected end of ${rawTagName}`);\n i2 = result2.i;\n tagContent = result2.tagContent;\n }\n const childNode = new xmlNode2(tagName);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n if (tagContent) {\n tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true);\n }\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n childNode.add(this.options.textNodeName, tagContent);\n this.addChild(currentNode, childNode, jPath);\n } else {\n if (tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1) {\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n } else {\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n const childNode = new xmlNode2(tagName);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n } else {\n const childNode = new xmlNode2(tagName);\n this.tagsNodeStack.push(currentNode);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n currentNode = childNode;\n }\n textData = \"\";\n i2 = closeIndex;\n }\n }\n } else {\n textData += xmlData[i2];\n }\n }\n return xmlObj.child;\n };\n function addChild(currentNode, childNode, jPath) {\n const result = this.options.updateTag(childNode.tagname, jPath, childNode[\":@\"]);\n if (result === false) ;\n else if (typeof result === \"string\") {\n childNode.tagname = result;\n currentNode.addChild(childNode);\n } else {\n currentNode.addChild(childNode);\n }\n }\n const replaceEntitiesValue = function(val) {\n if (this.options.processEntities) {\n for (let entityName in this.docTypeEntities) {\n const entity = this.docTypeEntities[entityName];\n val = val.replace(entity.regx, entity.val);\n }\n for (let entityName in this.lastEntities) {\n const entity = this.lastEntities[entityName];\n val = val.replace(entity.regex, entity.val);\n }\n if (this.options.htmlEntities) {\n for (let entityName in this.htmlEntities) {\n const entity = this.htmlEntities[entityName];\n val = val.replace(entity.regex, entity.val);\n }\n }\n val = val.replace(this.ampEntity.regex, this.ampEntity.val);\n }\n return val;\n };\n function saveTextToParentTag(textData, currentNode, jPath, isLeafNode) {\n if (textData) {\n if (isLeafNode === void 0) isLeafNode = Object.keys(currentNode.child).length === 0;\n textData = this.parseTextData(\n textData,\n currentNode.tagname,\n jPath,\n false,\n currentNode[\":@\"] ? Object.keys(currentNode[\":@\"]).length !== 0 : false,\n isLeafNode\n );\n if (textData !== void 0 && textData !== \"\")\n currentNode.add(this.options.textNodeName, textData);\n textData = \"\";\n }\n return textData;\n }\n function isItStopNode(stopNodes, jPath, currentTagName) {\n const allNodesExp = \"*.\" + currentTagName;\n for (const stopNodePath in stopNodes) {\n const stopNodeExp = stopNodes[stopNodePath];\n if (allNodesExp === stopNodeExp || jPath === stopNodeExp) return true;\n }\n return false;\n }\n function tagExpWithClosingIndex(xmlData, i2, closingChar = \">\") {\n let attrBoundary;\n let tagExp = \"\";\n for (let index = i2; index < xmlData.length; index++) {\n let ch = xmlData[index];\n if (attrBoundary) {\n if (ch === attrBoundary) attrBoundary = \"\";\n } else if (ch === '\"' || ch === \"'\") {\n attrBoundary = ch;\n } else if (ch === closingChar[0]) {\n if (closingChar[1]) {\n if (xmlData[index + 1] === closingChar[1]) {\n return {\n data: tagExp,\n index\n };\n }\n } else {\n return {\n data: tagExp,\n index\n };\n }\n } else if (ch === \"\t\") {\n ch = \" \";\n }\n tagExp += ch;\n }\n }\n function findClosingIndex(xmlData, str, i2, errMsg) {\n const closingIndex = xmlData.indexOf(str, i2);\n if (closingIndex === -1) {\n throw new Error(errMsg);\n } else {\n return closingIndex + str.length - 1;\n }\n }\n function readTagExp(xmlData, i2, removeNSPrefix, closingChar = \">\") {\n const result = tagExpWithClosingIndex(xmlData, i2 + 1, closingChar);\n if (!result) return;\n let tagExp = result.data;\n const closeIndex = result.index;\n const separatorIndex = tagExp.search(/\\s/);\n let tagName = tagExp;\n let attrExpPresent = true;\n if (separatorIndex !== -1) {\n tagName = tagExp.substring(0, separatorIndex);\n tagExp = tagExp.substring(separatorIndex + 1).trimStart();\n }\n const rawTagName = tagName;\n if (removeNSPrefix) {\n const colonIndex = tagName.indexOf(\":\");\n if (colonIndex !== -1) {\n tagName = tagName.substr(colonIndex + 1);\n attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n }\n }\n return {\n tagName,\n tagExp,\n closeIndex,\n attrExpPresent,\n rawTagName\n };\n }\n function readStopNodeData(xmlData, tagName, i2) {\n const startIndex = i2;\n let openTagCount = 1;\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\") {\n if (xmlData[i2 + 1] === \"/\") {\n const closeIndex = findClosingIndex(xmlData, \">\", i2, `${tagName} is not closed`);\n let closeTagName = xmlData.substring(i2 + 2, closeIndex).trim();\n if (closeTagName === tagName) {\n openTagCount--;\n if (openTagCount === 0) {\n return {\n tagContent: xmlData.substring(startIndex, i2),\n i: closeIndex\n };\n }\n }\n i2 = closeIndex;\n } else if (xmlData[i2 + 1] === \"?\") {\n const closeIndex = findClosingIndex(xmlData, \"?>\", i2 + 1, \"StopNode is not closed.\");\n i2 = closeIndex;\n } else if (xmlData.substr(i2 + 1, 3) === \"!--\") {\n const closeIndex = findClosingIndex(xmlData, \"-->\", i2 + 3, \"StopNode is not closed.\");\n i2 = closeIndex;\n } else if (xmlData.substr(i2 + 1, 2) === \"![\") {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i2, \"StopNode is not closed.\") - 2;\n i2 = closeIndex;\n } else {\n const tagData = readTagExp(xmlData, i2, \">\");\n if (tagData) {\n const openTagName = tagData && tagData.tagName;\n if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length - 1] !== \"/\") {\n openTagCount++;\n }\n i2 = tagData.closeIndex;\n }\n }\n }\n }\n }\n function parseValue(val, shouldParse, options) {\n if (shouldParse && typeof val === \"string\") {\n const newval = val.trim();\n if (newval === \"true\") return true;\n else if (newval === \"false\") return false;\n else return toNumber(val, options);\n } else {\n if (util2.isExist(val)) {\n return val;\n } else {\n return \"\";\n }\n }\n }\n OrderedObjParser_1 = OrderedObjParser;\n return OrderedObjParser_1;\n}\nvar node2json = {};\nvar hasRequiredNode2json;\nfunction requireNode2json() {\n if (hasRequiredNode2json) return node2json;\n hasRequiredNode2json = 1;\n function prettify(node, options) {\n return compress(node, options);\n }\n function compress(arr, options, jPath) {\n let text;\n const compressedObj = {};\n for (let i2 = 0; i2 < arr.length; i2++) {\n const tagObj = arr[i2];\n const property = propName(tagObj);\n let newJpath = \"\";\n if (jPath === void 0) newJpath = property;\n else newJpath = jPath + \".\" + property;\n if (property === options.textNodeName) {\n if (text === void 0) text = tagObj[property];\n else text += \"\" + tagObj[property];\n } else if (property === void 0) {\n continue;\n } else if (tagObj[property]) {\n let val = compress(tagObj[property], options, newJpath);\n const isLeaf = isLeafTag(val, options);\n if (tagObj[\":@\"]) {\n assignAttributes(val, tagObj[\":@\"], newJpath, options);\n } else if (Object.keys(val).length === 1 && val[options.textNodeName] !== void 0 && !options.alwaysCreateTextNode) {\n val = val[options.textNodeName];\n } else if (Object.keys(val).length === 0) {\n if (options.alwaysCreateTextNode) val[options.textNodeName] = \"\";\n else val = \"\";\n }\n if (compressedObj[property] !== void 0 && compressedObj.hasOwnProperty(property)) {\n if (!Array.isArray(compressedObj[property])) {\n compressedObj[property] = [compressedObj[property]];\n }\n compressedObj[property].push(val);\n } else {\n if (options.isArray(property, newJpath, isLeaf)) {\n compressedObj[property] = [val];\n } else {\n compressedObj[property] = val;\n }\n }\n }\n }\n if (typeof text === \"string\") {\n if (text.length > 0) compressedObj[options.textNodeName] = text;\n } else if (text !== void 0) compressedObj[options.textNodeName] = text;\n return compressedObj;\n }\n function propName(obj) {\n const keys = Object.keys(obj);\n for (let i2 = 0; i2 < keys.length; i2++) {\n const key = keys[i2];\n if (key !== \":@\") return key;\n }\n }\n function assignAttributes(obj, attrMap, jpath, options) {\n if (attrMap) {\n const keys = Object.keys(attrMap);\n const len = keys.length;\n for (let i2 = 0; i2 < len; i2++) {\n const atrrName = keys[i2];\n if (options.isArray(atrrName, jpath + \".\" + atrrName, true, true)) {\n obj[atrrName] = [attrMap[atrrName]];\n } else {\n obj[atrrName] = attrMap[atrrName];\n }\n }\n }\n }\n function isLeafTag(obj, options) {\n const { textNodeName } = options;\n const propCount = Object.keys(obj).length;\n if (propCount === 0) {\n return true;\n }\n if (propCount === 1 && (obj[textNodeName] || typeof obj[textNodeName] === \"boolean\" || obj[textNodeName] === 0)) {\n return true;\n }\n return false;\n }\n node2json.prettify = prettify;\n return node2json;\n}\nvar XMLParser_1;\nvar hasRequiredXMLParser;\nfunction requireXMLParser() {\n if (hasRequiredXMLParser) return XMLParser_1;\n hasRequiredXMLParser = 1;\n const { buildOptions } = requireOptionsBuilder();\n const OrderedObjParser = requireOrderedObjParser();\n const { prettify } = requireNode2json();\n const validator2 = requireValidator();\n class XMLParser {\n constructor(options) {\n this.externalEntities = {};\n this.options = buildOptions(options);\n }\n /**\n * Parse XML dats to JS object \n * @param {string|Buffer} xmlData \n * @param {boolean|Object} validationOption \n */\n parse(xmlData, validationOption) {\n if (typeof xmlData === \"string\") ;\n else if (xmlData.toString) {\n xmlData = xmlData.toString();\n } else {\n throw new Error(\"XML data is accepted in String or Bytes[] form.\");\n }\n if (validationOption) {\n if (validationOption === true) validationOption = {};\n const result = validator2.validate(xmlData, validationOption);\n if (result !== true) {\n throw Error(`${result.err.msg}:${result.err.line}:${result.err.col}`);\n }\n }\n const orderedObjParser = new OrderedObjParser(this.options);\n orderedObjParser.addExternalEntities(this.externalEntities);\n const orderedResult = orderedObjParser.parseXml(xmlData);\n if (this.options.preserveOrder || orderedResult === void 0) return orderedResult;\n else return prettify(orderedResult, this.options);\n }\n /**\n * Add Entity which is not by default supported by this library\n * @param {string} key \n * @param {string} value \n */\n addEntity(key, value) {\n if (value.indexOf(\"&\") !== -1) {\n throw new Error(\"Entity value can't have '&'\");\n } else if (key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1) {\n throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for '
'\");\n } else if (value === \"&\") {\n throw new Error(\"An entity with value '&' is not permitted\");\n } else {\n this.externalEntities[key] = value;\n }\n }\n }\n XMLParser_1 = XMLParser;\n return XMLParser_1;\n}\nvar orderedJs2Xml;\nvar hasRequiredOrderedJs2Xml;\nfunction requireOrderedJs2Xml() {\n if (hasRequiredOrderedJs2Xml) return orderedJs2Xml;\n hasRequiredOrderedJs2Xml = 1;\n const EOL = \"\\n\";\n function toXml(jArray, options) {\n let indentation = \"\";\n if (options.format && options.indentBy.length > 0) {\n indentation = EOL;\n }\n return arrToStr(jArray, options, \"\", indentation);\n }\n function arrToStr(arr, options, jPath, indentation) {\n let xmlStr = \"\";\n let isPreviousElementTag = false;\n for (let i2 = 0; i2 < arr.length; i2++) {\n const tagObj = arr[i2];\n const tagName = propName(tagObj);\n if (tagName === void 0) continue;\n let newJPath = \"\";\n if (jPath.length === 0) newJPath = tagName;\n else newJPath = `${jPath}.${tagName}`;\n if (tagName === options.textNodeName) {\n let tagText = tagObj[tagName];\n if (!isStopNode(newJPath, options)) {\n tagText = options.tagValueProcessor(tagName, tagText);\n tagText = replaceEntitiesValue(tagText, options);\n }\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += tagText;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.cdataPropName) {\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += `<![CDATA[${tagObj[tagName][0][options.textNodeName]}]]>`;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.commentPropName) {\n xmlStr += indentation + `<!--${tagObj[tagName][0][options.textNodeName]}-->`;\n isPreviousElementTag = true;\n continue;\n } else if (tagName[0] === \"?\") {\n const attStr2 = attr_to_str(tagObj[\":@\"], options);\n const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\";\n xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr2}?>`;\n isPreviousElementTag = true;\n continue;\n }\n let newIdentation = indentation;\n if (newIdentation !== \"\") {\n newIdentation += options.indentBy;\n }\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tagStart = indentation + `<${tagName}${attStr}`;\n const tagValue = arrToStr(tagObj[tagName], options, newJPath, newIdentation);\n if (options.unpairedTags.indexOf(tagName) !== -1) {\n if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n else xmlStr += tagStart + \"/>\";\n } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n xmlStr += tagStart + \"/>\";\n } else if (tagValue && tagValue.endsWith(\">\")) {\n xmlStr += tagStart + `>${tagValue}${indentation}</${tagName}>`;\n } else {\n xmlStr += tagStart + \">\";\n if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"</\"))) {\n xmlStr += indentation + options.indentBy + tagValue + indentation;\n } else {\n xmlStr += tagValue;\n }\n xmlStr += `</${tagName}>`;\n }\n isPreviousElementTag = true;\n }\n return xmlStr;\n }\n function propName(obj) {\n const keys = Object.keys(obj);\n for (let i2 = 0; i2 < keys.length; i2++) {\n const key = keys[i2];\n if (!obj.hasOwnProperty(key)) continue;\n if (key !== \":@\") return key;\n }\n }\n function attr_to_str(attrMap, options) {\n let attrStr = \"\";\n if (attrMap && !options.ignoreAttributes) {\n for (let attr in attrMap) {\n if (!attrMap.hasOwnProperty(attr)) continue;\n let attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n attrVal = replaceEntitiesValue(attrVal, options);\n if (attrVal === true && options.suppressBooleanAttributes) {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n } else {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n }\n }\n }\n return attrStr;\n }\n function isStopNode(jPath, options) {\n jPath = jPath.substr(0, jPath.length - options.textNodeName.length - 1);\n let tagName = jPath.substr(jPath.lastIndexOf(\".\") + 1);\n for (let index in options.stopNodes) {\n if (options.stopNodes[index] === jPath || options.stopNodes[index] === \"*.\" + tagName) return true;\n }\n return false;\n }\n function replaceEntitiesValue(textValue, options) {\n if (textValue && textValue.length > 0 && options.processEntities) {\n for (let i2 = 0; i2 < options.entities.length; i2++) {\n const entity = options.entities[i2];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n }\n orderedJs2Xml = toXml;\n return orderedJs2Xml;\n}\nvar json2xml;\nvar hasRequiredJson2xml;\nfunction requireJson2xml() {\n if (hasRequiredJson2xml) return json2xml;\n hasRequiredJson2xml = 1;\n const buildFromOrderedJs = requireOrderedJs2Xml();\n const getIgnoreAttributesFn = requireIgnoreAttributes();\n const defaultOptions = {\n attributeNamePrefix: \"@_\",\n attributesGroupName: false,\n textNodeName: \"#text\",\n ignoreAttributes: true,\n cdataPropName: false,\n format: false,\n indentBy: \" \",\n suppressEmptyNode: false,\n suppressUnpairedNode: true,\n suppressBooleanAttributes: true,\n tagValueProcessor: function(key, a2) {\n return a2;\n },\n attributeValueProcessor: function(attrName, a2) {\n return a2;\n },\n preserveOrder: false,\n commentPropName: false,\n unpairedTags: [],\n entities: [\n { regex: new RegExp(\"&\", \"g\"), val: \"&\" },\n //it must be on top\n { regex: new RegExp(\">\", \"g\"), val: \">\" },\n { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n { regex: new RegExp(\"'\", \"g\"), val: \"'\" },\n { regex: new RegExp('\"', \"g\"), val: \""\" }\n ],\n processEntities: true,\n stopNodes: [],\n // transformTagName: false,\n // transformAttributeName: false,\n oneListGroup: false\n };\n function Builder(options) {\n this.options = Object.assign({}, defaultOptions, options);\n if (this.options.ignoreAttributes === true || this.options.attributesGroupName) {\n this.isAttribute = function() {\n return false;\n };\n } else {\n this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes);\n this.attrPrefixLen = this.options.attributeNamePrefix.length;\n this.isAttribute = isAttribute;\n }\n this.processTextOrObjNode = processTextOrObjNode;\n if (this.options.format) {\n this.indentate = indentate;\n this.tagEndChar = \">\\n\";\n this.newLine = \"\\n\";\n } else {\n this.indentate = function() {\n return \"\";\n };\n this.tagEndChar = \">\";\n this.newLine = \"\";\n }\n }\n Builder.prototype.build = function(jObj) {\n if (this.options.preserveOrder) {\n return buildFromOrderedJs(jObj, this.options);\n } else {\n if (Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1) {\n jObj = {\n [this.options.arrayNodeName]: jObj\n };\n }\n return this.j2x(jObj, 0, []).val;\n }\n };\n Builder.prototype.j2x = function(jObj, level, ajPath) {\n let attrStr = \"\";\n let val = \"\";\n const jPath = ajPath.join(\".\");\n for (let key in jObj) {\n if (!Object.prototype.hasOwnProperty.call(jObj, key)) continue;\n if (typeof jObj[key] === \"undefined\") {\n if (this.isAttribute(key)) {\n val += \"\";\n }\n } else if (jObj[key] === null) {\n if (this.isAttribute(key)) {\n val += \"\";\n } else if (key[0] === \"?\") {\n val += this.indentate(level) + \"<\" + key + \"?\" + this.tagEndChar;\n } else {\n val += this.indentate(level) + \"<\" + key + \"/\" + this.tagEndChar;\n }\n } else if (jObj[key] instanceof Date) {\n val += this.buildTextValNode(jObj[key], key, \"\", level);\n } else if (typeof jObj[key] !== \"object\") {\n const attr = this.isAttribute(key);\n if (attr && !this.ignoreAttributesFn(attr, jPath)) {\n attrStr += this.buildAttrPairStr(attr, \"\" + jObj[key]);\n } else if (!attr) {\n if (key === this.options.textNodeName) {\n let newval = this.options.tagValueProcessor(key, \"\" + jObj[key]);\n val += this.replaceEntitiesValue(newval);\n } else {\n val += this.buildTextValNode(jObj[key], key, \"\", level);\n }\n }\n } else if (Array.isArray(jObj[key])) {\n const arrLen = jObj[key].length;\n let listTagVal = \"\";\n let listTagAttr = \"\";\n for (let j2 = 0; j2 < arrLen; j2++) {\n const item = jObj[key][j2];\n if (typeof item === \"undefined\") ;\n else if (item === null) {\n if (key[0] === \"?\") val += this.indentate(level) + \"<\" + key + \"?\" + this.tagEndChar;\n else val += this.indentate(level) + \"<\" + key + \"/\" + this.tagEndChar;\n } else if (typeof item === \"object\") {\n if (this.options.oneListGroup) {\n const result = this.j2x(item, level + 1, ajPath.concat(key));\n listTagVal += result.val;\n if (this.options.attributesGroupName && item.hasOwnProperty(this.options.attributesGroupName)) {\n listTagAttr += result.attrStr;\n }\n } else {\n listTagVal += this.processTextOrObjNode(item, key, level, ajPath);\n }\n } else {\n if (this.options.oneListGroup) {\n let textValue = this.options.tagValueProcessor(key, item);\n textValue = this.replaceEntitiesValue(textValue);\n listTagVal += textValue;\n } else {\n listTagVal += this.buildTextValNode(item, key, \"\", level);\n }\n }\n }\n if (this.options.oneListGroup) {\n listTagVal = this.buildObjectNode(listTagVal, key, listTagAttr, level);\n }\n val += listTagVal;\n } else {\n if (this.options.attributesGroupName && key === this.options.attributesGroupName) {\n const Ks = Object.keys(jObj[key]);\n const L = Ks.length;\n for (let j2 = 0; j2 < L; j2++) {\n attrStr += this.buildAttrPairStr(Ks[j2], \"\" + jObj[key][Ks[j2]]);\n }\n } else {\n val += this.processTextOrObjNode(jObj[key], key, level, ajPath);\n }\n }\n }\n return { attrStr, val };\n };\n Builder.prototype.buildAttrPairStr = function(attrName, val) {\n val = this.options.attributeValueProcessor(attrName, \"\" + val);\n val = this.replaceEntitiesValue(val);\n if (this.options.suppressBooleanAttributes && val === \"true\") {\n return \" \" + attrName;\n } else return \" \" + attrName + '=\"' + val + '\"';\n };\n function processTextOrObjNode(object, key, level, ajPath) {\n const result = this.j2x(object, level + 1, ajPath.concat(key));\n if (object[this.options.textNodeName] !== void 0 && Object.keys(object).length === 1) {\n return this.buildTextValNode(object[this.options.textNodeName], key, result.attrStr, level);\n } else {\n return this.buildObjectNode(result.val, key, result.attrStr, level);\n }\n }\n Builder.prototype.buildObjectNode = function(val, key, attrStr, level) {\n if (val === \"\") {\n if (key[0] === \"?\") return this.indentate(level) + \"<\" + key + attrStr + \"?\" + this.tagEndChar;\n else {\n return this.indentate(level) + \"<\" + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }\n } else {\n let tagEndExp = \"</\" + key + this.tagEndChar;\n let piClosingChar = \"\";\n if (key[0] === \"?\") {\n piClosingChar = \"?\";\n tagEndExp = \"\";\n }\n if ((attrStr || attrStr === \"\") && val.indexOf(\"<\") === -1) {\n return this.indentate(level) + \"<\" + key + attrStr + piClosingChar + \">\" + val + tagEndExp;\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n return this.indentate(level) + `<!--${val}-->` + this.newLine;\n } else {\n return this.indentate(level) + \"<\" + key + attrStr + piClosingChar + this.tagEndChar + val + this.indentate(level) + tagEndExp;\n }\n }\n };\n Builder.prototype.closeTag = function(key) {\n let closeTag = \"\";\n if (this.options.unpairedTags.indexOf(key) !== -1) {\n if (!this.options.suppressUnpairedNode) closeTag = \"/\";\n } else if (this.options.suppressEmptyNode) {\n closeTag = \"/\";\n } else {\n closeTag = `></${key}`;\n }\n return closeTag;\n };\n Builder.prototype.buildTextValNode = function(val, key, attrStr, level) {\n if (this.options.cdataPropName !== false && key === this.options.cdataPropName) {\n return this.indentate(level) + `<![CDATA[${val}]]>` + this.newLine;\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n return this.indentate(level) + `<!--${val}-->` + this.newLine;\n } else if (key[0] === \"?\") {\n return this.indentate(level) + \"<\" + key + attrStr + \"?\" + this.tagEndChar;\n } else {\n let textValue = this.options.tagValueProcessor(key, val);\n textValue = this.replaceEntitiesValue(textValue);\n if (textValue === \"\") {\n return this.indentate(level) + \"<\" + key + attrStr + this.closeTag(key) + this.tagEndChar;\n } else {\n return this.indentate(level) + \"<\" + key + attrStr + \">\" + textValue + \"</\" + key + this.tagEndChar;\n }\n }\n };\n Builder.prototype.replaceEntitiesValue = function(textValue) {\n if (textValue && textValue.length > 0 && this.options.processEntities) {\n for (let i2 = 0; i2 < this.options.entities.length; i2++) {\n const entity = this.options.entities[i2];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n };\n function indentate(level) {\n return this.options.indentBy.repeat(level);\n }\n function isAttribute(name) {\n if (name.startsWith(this.options.attributeNamePrefix) && name !== this.options.textNodeName) {\n return name.substr(this.attrPrefixLen);\n } else {\n return false;\n }\n }\n json2xml = Builder;\n return json2xml;\n}\nvar fxp;\nvar hasRequiredFxp;\nfunction requireFxp() {\n if (hasRequiredFxp) return fxp;\n hasRequiredFxp = 1;\n const validator2 = requireValidator();\n const XMLParser = requireXMLParser();\n const XMLBuilder = requireJson2xml();\n fxp = {\n XMLParser,\n XMLValidator: validator2,\n XMLBuilder\n };\n return fxp;\n}\nvar fxpExports = requireFxp();\nfunction isSvg(string) {\n if (typeof string !== \"string\") {\n throw new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n }\n string = string.trim();\n if (string.length === 0) {\n return false;\n }\n if (fxpExports.XMLValidator.validate(string) !== true) {\n return false;\n }\n let jsonObject;\n const parser = new fxpExports.XMLParser();\n try {\n jsonObject = parser.parse(string);\n } catch {\n return false;\n }\n if (!jsonObject) {\n return false;\n }\n if (!Object.keys(jsonObject).some((x) => x.toLowerCase() === \"svg\")) {\n return false;\n }\n return true;\n}\nclass View {\n _view;\n constructor(view) {\n isValidView(view);\n this._view = view;\n }\n get id() {\n return this._view.id;\n }\n get name() {\n return this._view.name;\n }\n get caption() {\n return this._view.caption;\n }\n get emptyTitle() {\n return this._view.emptyTitle;\n }\n get emptyCaption() {\n return this._view.emptyCaption;\n }\n get getContents() {\n return this._view.getContents;\n }\n get icon() {\n return this._view.icon;\n }\n set icon(icon) {\n this._view.icon = icon;\n }\n get order() {\n return this._view.order;\n }\n set order(order) {\n this._view.order = order;\n }\n get params() {\n return this._view.params;\n }\n set params(params) {\n this._view.params = params;\n }\n get columns() {\n return this._view.columns;\n }\n get emptyView() {\n return this._view.emptyView;\n }\n get parent() {\n return this._view.parent;\n }\n get sticky() {\n return this._view.sticky;\n }\n get expanded() {\n return this._view.expanded;\n }\n set expanded(expanded) {\n this._view.expanded = expanded;\n }\n get defaultSortKey() {\n return this._view.defaultSortKey;\n }\n get loadChildViews() {\n return this._view.loadChildViews;\n }\n}\nconst isValidView = function(view) {\n if (!view.id || typeof view.id !== \"string\") {\n throw new Error(\"View id is required and must be a string\");\n }\n if (!view.name || typeof view.name !== \"string\") {\n throw new Error(\"View name is required and must be a string\");\n }\n if (\"caption\" in view && typeof view.caption !== \"string\") {\n throw new Error(\"View caption must be a string\");\n }\n if (!view.getContents || typeof view.getContents !== \"function\") {\n throw new Error(\"View getContents is required and must be a function\");\n }\n if (!view.icon || typeof view.icon !== \"string\" || !isSvg(view.icon)) {\n throw new Error(\"View icon is required and must be a valid svg string\");\n }\n if (\"order\" in view && typeof view.order !== \"number\") {\n throw new Error(\"View order must be a number\");\n }\n if (view.columns) {\n view.columns.forEach((column) => {\n if (!(column instanceof Column)) {\n throw new Error(\"View columns must be an array of Column. Invalid column found\");\n }\n });\n }\n if (view.emptyView && typeof view.emptyView !== \"function\") {\n throw new Error(\"View emptyView must be a function\");\n }\n if (view.parent && typeof view.parent !== \"string\") {\n throw new Error(\"View parent must be a string\");\n }\n if (\"sticky\" in view && typeof view.sticky !== \"boolean\") {\n throw new Error(\"View sticky must be a boolean\");\n }\n if (\"expanded\" in view && typeof view.expanded !== \"boolean\") {\n throw new Error(\"View expanded must be a boolean\");\n }\n if (view.defaultSortKey && typeof view.defaultSortKey !== \"string\") {\n throw new Error(\"View defaultSortKey must be a string\");\n }\n if (view.loadChildViews && typeof view.loadChildViews !== \"function\") {\n throw new Error(\"View loadChildViews must be a function\");\n }\n return true;\n};\nvar debug_1;\nvar hasRequiredDebug;\nfunction requireDebug() {\n if (hasRequiredDebug) return debug_1;\n hasRequiredDebug = 1;\n const debug = typeof process === \"object\" && process.env && process.env.NODE_DEBUG && /\\bsemver\\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error(\"SEMVER\", ...args) : () => {\n };\n debug_1 = debug;\n return debug_1;\n}\nvar constants;\nvar hasRequiredConstants;\nfunction requireConstants() {\n if (hasRequiredConstants) return constants;\n hasRequiredConstants = 1;\n const SEMVER_SPEC_VERSION = \"2.0.0\";\n const MAX_LENGTH = 256;\n const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */\n 9007199254740991;\n const MAX_SAFE_COMPONENT_LENGTH = 16;\n const MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6;\n const RELEASE_TYPES = [\n \"major\",\n \"premajor\",\n \"minor\",\n \"preminor\",\n \"patch\",\n \"prepatch\",\n \"prerelease\"\n ];\n constants = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 1,\n FLAG_LOOSE: 2\n };\n return constants;\n}\nvar re = { exports: {} };\nvar hasRequiredRe;\nfunction requireRe() {\n if (hasRequiredRe) return re.exports;\n hasRequiredRe = 1;\n (function(module, exports) {\n const {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH\n } = requireConstants();\n const debug = requireDebug();\n exports = module.exports = {};\n const re2 = exports.re = [];\n const safeRe = exports.safeRe = [];\n const src = exports.src = [];\n const t2 = exports.t = {};\n let R = 0;\n const LETTERDASHNUMBER = \"[a-zA-Z0-9-]\";\n const safeRegexReplacements = [\n [\"\\\\s\", 1],\n [\"\\\\d\", MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH]\n ];\n const makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value.split(`${token}*`).join(`${token}{0,${max}}`).split(`${token}+`).join(`${token}{1,${max}}`);\n }\n return value;\n };\n const createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value);\n const index = R++;\n debug(name, index, value);\n t2[name] = index;\n src[index] = value;\n re2[index] = new RegExp(value, isGlobal ? \"g\" : void 0);\n safeRe[index] = new RegExp(safe, isGlobal ? \"g\" : void 0);\n };\n createToken(\"NUMERICIDENTIFIER\", \"0|[1-9]\\\\d*\");\n createToken(\"NUMERICIDENTIFIERLOOSE\", \"\\\\d+\");\n createToken(\"NONNUMERICIDENTIFIER\", `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`);\n createToken(\"MAINVERSION\", `(${src[t2.NUMERICIDENTIFIER]})\\\\.(${src[t2.NUMERICIDENTIFIER]})\\\\.(${src[t2.NUMERICIDENTIFIER]})`);\n createToken(\"MAINVERSIONLOOSE\", `(${src[t2.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t2.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t2.NUMERICIDENTIFIERLOOSE]})`);\n createToken(\"PRERELEASEIDENTIFIER\", `(?:${src[t2.NUMERICIDENTIFIER]}|${src[t2.NONNUMERICIDENTIFIER]})`);\n createToken(\"PRERELEASEIDENTIFIERLOOSE\", `(?:${src[t2.NUMERICIDENTIFIERLOOSE]}|${src[t2.NONNUMERICIDENTIFIER]})`);\n createToken(\"PRERELEASE\", `(?:-(${src[t2.PRERELEASEIDENTIFIER]}(?:\\\\.${src[t2.PRERELEASEIDENTIFIER]})*))`);\n createToken(\"PRERELEASELOOSE\", `(?:-?(${src[t2.PRERELEASEIDENTIFIERLOOSE]}(?:\\\\.${src[t2.PRERELEASEIDENTIFIERLOOSE]})*))`);\n createToken(\"BUILDIDENTIFIER\", `${LETTERDASHNUMBER}+`);\n createToken(\"BUILD\", `(?:\\\\+(${src[t2.BUILDIDENTIFIER]}(?:\\\\.${src[t2.BUILDIDENTIFIER]})*))`);\n createToken(\"FULLPLAIN\", `v?${src[t2.MAINVERSION]}${src[t2.PRERELEASE]}?${src[t2.BUILD]}?`);\n createToken(\"FULL\", `^${src[t2.FULLPLAIN]}$`);\n createToken(\"LOOSEPLAIN\", `[v=\\\\s]*${src[t2.MAINVERSIONLOOSE]}${src[t2.PRERELEASELOOSE]}?${src[t2.BUILD]}?`);\n createToken(\"LOOSE\", `^${src[t2.LOOSEPLAIN]}$`);\n createToken(\"GTLT\", \"((?:<|>)?=?)\");\n createToken(\"XRANGEIDENTIFIERLOOSE\", `${src[t2.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`);\n createToken(\"XRANGEIDENTIFIER\", `${src[t2.NUMERICIDENTIFIER]}|x|X|\\\\*`);\n createToken(\"XRANGEPLAIN\", `[v=\\\\s]*(${src[t2.XRANGEIDENTIFIER]})(?:\\\\.(${src[t2.XRANGEIDENTIFIER]})(?:\\\\.(${src[t2.XRANGEIDENTIFIER]})(?:${src[t2.PRERELEASE]})?${src[t2.BUILD]}?)?)?`);\n createToken(\"XRANGEPLAINLOOSE\", `[v=\\\\s]*(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:${src[t2.PRERELEASELOOSE]})?${src[t2.BUILD]}?)?)?`);\n createToken(\"XRANGE\", `^${src[t2.GTLT]}\\\\s*${src[t2.XRANGEPLAIN]}$`);\n createToken(\"XRANGELOOSE\", `^${src[t2.GTLT]}\\\\s*${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"COERCEPLAIN\", `${\"(^|[^\\\\d])(\\\\d{1,\"}${MAX_SAFE_COMPONENT_LENGTH}})(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`);\n createToken(\"COERCE\", `${src[t2.COERCEPLAIN]}(?:$|[^\\\\d])`);\n createToken(\"COERCEFULL\", src[t2.COERCEPLAIN] + `(?:${src[t2.PRERELEASE]})?(?:${src[t2.BUILD]})?(?:$|[^\\\\d])`);\n createToken(\"COERCERTL\", src[t2.COERCE], true);\n createToken(\"COERCERTLFULL\", src[t2.COERCEFULL], true);\n createToken(\"LONETILDE\", \"(?:~>?)\");\n createToken(\"TILDETRIM\", `(\\\\s*)${src[t2.LONETILDE]}\\\\s+`, true);\n exports.tildeTrimReplace = \"$1~\";\n createToken(\"TILDE\", `^${src[t2.LONETILDE]}${src[t2.XRANGEPLAIN]}$`);\n createToken(\"TILDELOOSE\", `^${src[t2.LONETILDE]}${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"LONECARET\", \"(?:\\\\^)\");\n createToken(\"CARETTRIM\", `(\\\\s*)${src[t2.LONECARET]}\\\\s+`, true);\n exports.caretTrimReplace = \"$1^\";\n createToken(\"CARET\", `^${src[t2.LONECARET]}${src[t2.XRANGEPLAIN]}$`);\n createToken(\"CARETLOOSE\", `^${src[t2.LONECARET]}${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"COMPARATORLOOSE\", `^${src[t2.GTLT]}\\\\s*(${src[t2.LOOSEPLAIN]})$|^$`);\n createToken(\"COMPARATOR\", `^${src[t2.GTLT]}\\\\s*(${src[t2.FULLPLAIN]})$|^$`);\n createToken(\"COMPARATORTRIM\", `(\\\\s*)${src[t2.GTLT]}\\\\s*(${src[t2.LOOSEPLAIN]}|${src[t2.XRANGEPLAIN]})`, true);\n exports.comparatorTrimReplace = \"$1$2$3\";\n createToken(\"HYPHENRANGE\", `^\\\\s*(${src[t2.XRANGEPLAIN]})\\\\s+-\\\\s+(${src[t2.XRANGEPLAIN]})\\\\s*$`);\n createToken(\"HYPHENRANGELOOSE\", `^\\\\s*(${src[t2.XRANGEPLAINLOOSE]})\\\\s+-\\\\s+(${src[t2.XRANGEPLAINLOOSE]})\\\\s*$`);\n createToken(\"STAR\", \"(<|>)?=?\\\\s*\\\\*\");\n createToken(\"GTE0\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$\");\n createToken(\"GTE0PRE\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$\");\n })(re, re.exports);\n return re.exports;\n}\nvar parseOptions_1;\nvar hasRequiredParseOptions;\nfunction requireParseOptions() {\n if (hasRequiredParseOptions) return parseOptions_1;\n hasRequiredParseOptions = 1;\n const looseOption = Object.freeze({ loose: true });\n const emptyOpts = Object.freeze({});\n const parseOptions = (options) => {\n if (!options) {\n return emptyOpts;\n }\n if (typeof options !== \"object\") {\n return looseOption;\n }\n return options;\n };\n parseOptions_1 = parseOptions;\n return parseOptions_1;\n}\nvar identifiers;\nvar hasRequiredIdentifiers;\nfunction requireIdentifiers() {\n if (hasRequiredIdentifiers) return identifiers;\n hasRequiredIdentifiers = 1;\n const numeric = /^[0-9]+$/;\n const compareIdentifiers = (a2, b2) => {\n const anum = numeric.test(a2);\n const bnum = numeric.test(b2);\n if (anum && bnum) {\n a2 = +a2;\n b2 = +b2;\n }\n return a2 === b2 ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a2 < b2 ? -1 : 1;\n };\n const rcompareIdentifiers = (a2, b2) => compareIdentifiers(b2, a2);\n identifiers = {\n compareIdentifiers,\n rcompareIdentifiers\n };\n return identifiers;\n}\nvar semver;\nvar hasRequiredSemver;\nfunction requireSemver() {\n if (hasRequiredSemver) return semver;\n hasRequiredSemver = 1;\n const debug = requireDebug();\n const { MAX_LENGTH, MAX_SAFE_INTEGER } = requireConstants();\n const { safeRe: re2, t: t2 } = requireRe();\n const parseOptions = requireParseOptions();\n const { compareIdentifiers } = requireIdentifiers();\n class SemVer {\n constructor(version, options) {\n options = parseOptions(options);\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose && version.includePrerelease === !!options.includePrerelease) {\n return version;\n } else {\n version = version.version;\n }\n } else if (typeof version !== \"string\") {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`);\n }\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n );\n }\n debug(\"SemVer\", version, options);\n this.options = options;\n this.loose = !!options.loose;\n this.includePrerelease = !!options.includePrerelease;\n const m2 = version.trim().match(options.loose ? re2[t2.LOOSE] : re2[t2.FULL]);\n if (!m2) {\n throw new TypeError(`Invalid Version: ${version}`);\n }\n this.raw = version;\n this.major = +m2[1];\n this.minor = +m2[2];\n this.patch = +m2[3];\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError(\"Invalid major version\");\n }\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError(\"Invalid minor version\");\n }\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError(\"Invalid patch version\");\n }\n if (!m2[4]) {\n this.prerelease = [];\n } else {\n this.prerelease = m2[4].split(\".\").map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id;\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num;\n }\n }\n return id;\n });\n }\n this.build = m2[5] ? m2[5].split(\".\") : [];\n this.format();\n }\n format() {\n this.version = `${this.major}.${this.minor}.${this.patch}`;\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join(\".\")}`;\n }\n return this.version;\n }\n toString() {\n return this.version;\n }\n compare(other) {\n debug(\"SemVer.compare\", this.version, this.options, other);\n if (!(other instanceof SemVer)) {\n if (typeof other === \"string\" && other === this.version) {\n return 0;\n }\n other = new SemVer(other, this.options);\n }\n if (other.version === this.version) {\n return 0;\n }\n return this.compareMain(other) || this.comparePre(other);\n }\n compareMain(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch);\n }\n comparePre(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n if (this.prerelease.length && !other.prerelease.length) {\n return -1;\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1;\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0;\n }\n let i2 = 0;\n do {\n const a2 = this.prerelease[i2];\n const b2 = other.prerelease[i2];\n debug(\"prerelease compare\", i2, a2, b2);\n if (a2 === void 0 && b2 === void 0) {\n return 0;\n } else if (b2 === void 0) {\n return 1;\n } else if (a2 === void 0) {\n return -1;\n } else if (a2 === b2) {\n continue;\n } else {\n return compareIdentifiers(a2, b2);\n }\n } while (++i2);\n }\n compareBuild(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n let i2 = 0;\n do {\n const a2 = this.build[i2];\n const b2 = other.build[i2];\n debug(\"build compare\", i2, a2, b2);\n if (a2 === void 0 && b2 === void 0) {\n return 0;\n } else if (b2 === void 0) {\n return 1;\n } else if (a2 === void 0) {\n return -1;\n } else if (a2 === b2) {\n continue;\n } else {\n return compareIdentifiers(a2, b2);\n }\n } while (++i2);\n }\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc(release, identifier, identifierBase) {\n switch (release) {\n case \"premajor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor = 0;\n this.major++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"preminor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"prepatch\":\n this.prerelease.length = 0;\n this.inc(\"patch\", identifier, identifierBase);\n this.inc(\"pre\", identifier, identifierBase);\n break;\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case \"prerelease\":\n if (this.prerelease.length === 0) {\n this.inc(\"patch\", identifier, identifierBase);\n }\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"major\":\n if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {\n this.major++;\n }\n this.minor = 0;\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"minor\":\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++;\n }\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"patch\":\n if (this.prerelease.length === 0) {\n this.patch++;\n }\n this.prerelease = [];\n break;\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case \"pre\": {\n const base = Number(identifierBase) ? 1 : 0;\n if (!identifier && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier is empty\");\n }\n if (this.prerelease.length === 0) {\n this.prerelease = [base];\n } else {\n let i2 = this.prerelease.length;\n while (--i2 >= 0) {\n if (typeof this.prerelease[i2] === \"number\") {\n this.prerelease[i2]++;\n i2 = -2;\n }\n }\n if (i2 === -1) {\n if (identifier === this.prerelease.join(\".\") && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier already exists\");\n }\n this.prerelease.push(base);\n }\n }\n if (identifier) {\n let prerelease = [identifier, base];\n if (identifierBase === false) {\n prerelease = [identifier];\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease;\n }\n } else {\n this.prerelease = prerelease;\n }\n }\n break;\n }\n default:\n throw new Error(`invalid increment argument: ${release}`);\n }\n this.raw = this.format();\n if (this.build.length) {\n this.raw += `+${this.build.join(\".\")}`;\n }\n return this;\n }\n }\n semver = SemVer;\n return semver;\n}\nvar parse_1;\nvar hasRequiredParse;\nfunction requireParse() {\n if (hasRequiredParse) return parse_1;\n hasRequiredParse = 1;\n const SemVer = requireSemver();\n const parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version;\n }\n try {\n return new SemVer(version, options);\n } catch (er) {\n if (!throwErrors) {\n return null;\n }\n throw er;\n }\n };\n parse_1 = parse;\n return parse_1;\n}\nvar valid_1;\nvar hasRequiredValid;\nfunction requireValid() {\n if (hasRequiredValid) return valid_1;\n hasRequiredValid = 1;\n const parse = requireParse();\n const valid2 = (version, options) => {\n const v = parse(version, options);\n return v ? v.version : null;\n };\n valid_1 = valid2;\n return valid_1;\n}\nvar validExports = requireValid();\nconst valid = /* @__PURE__ */ getDefaultExportFromCjs(validExports);\nvar major_1;\nvar hasRequiredMajor;\nfunction requireMajor() {\n if (hasRequiredMajor) return major_1;\n hasRequiredMajor = 1;\n const SemVer = requireSemver();\n const major2 = (a2, loose) => new SemVer(a2, loose).major;\n major_1 = major2;\n return major_1;\n}\nvar majorExports = requireMajor();\nconst major = /* @__PURE__ */ getDefaultExportFromCjs(majorExports);\nclass ProxyBus {\n bus;\n constructor(bus2) {\n if (typeof bus2.getVersion !== \"function\" || !valid(bus2.getVersion())) {\n console.warn(\"Proxying an event bus with an unknown or invalid version\");\n } else if (major(bus2.getVersion()) !== major(this.getVersion())) {\n console.warn(\n \"Proxying an event bus of version \" + bus2.getVersion() + \" with \" + this.getVersion()\n );\n }\n this.bus = bus2;\n }\n getVersion() {\n return \"3.3.1\";\n }\n subscribe(name, handler) {\n this.bus.subscribe(name, handler);\n }\n unsubscribe(name, handler) {\n this.bus.unsubscribe(name, handler);\n }\n emit(name, event) {\n this.bus.emit(name, event);\n }\n}\nclass SimpleBus {\n handlers = /* @__PURE__ */ new Map();\n getVersion() {\n return \"3.3.1\";\n }\n subscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).concat(\n handler\n )\n );\n }\n unsubscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).filter((h2) => h2 !== handler)\n );\n }\n emit(name, event) {\n (this.handlers.get(name) || []).forEach((h2) => {\n try {\n h2(event);\n } catch (e2) {\n console.error(\"could not invoke event listener\", e2);\n }\n });\n }\n}\nlet bus = null;\nfunction getBus() {\n if (bus !== null) {\n return bus;\n }\n if (typeof window === \"undefined\") {\n return new Proxy({}, {\n get: () => {\n return () => console.error(\n \"Window not available, EventBus can not be established!\"\n );\n }\n });\n }\n if (window.OC?._eventBus && typeof window._nc_event_bus === \"undefined\") {\n console.warn(\n \"found old event bus instance at OC._eventBus. Update your version!\"\n );\n window._nc_event_bus = window.OC._eventBus;\n }\n if (typeof window?._nc_event_bus !== \"undefined\") {\n bus = new ProxyBus(window._nc_event_bus);\n } else {\n bus = window._nc_event_bus = new SimpleBus();\n }\n return bus;\n}\nfunction emit(name, event) {\n getBus().emit(name, event);\n}\n/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nclass FileListFilter extends TypedEventTarget {\n id;\n order;\n constructor(id, order = 100) {\n super();\n this.id = id;\n this.order = order;\n }\n filter(nodes) {\n throw new Error(\"Not implemented\");\n }\n updateChips(chips) {\n this.dispatchTypedEvent(\"update:chips\", new CustomEvent(\"update:chips\", { detail: chips }));\n }\n filterUpdated() {\n this.dispatchTypedEvent(\"update:filter\", new CustomEvent(\"update:filter\"));\n }\n}\nfunction registerFileListFilter(filter) {\n if (!window._nc_filelist_filters) {\n window._nc_filelist_filters = /* @__PURE__ */ new Map();\n }\n if (window._nc_filelist_filters.has(filter.id)) {\n throw new Error(`File list filter \"${filter.id}\" already registered`);\n }\n window._nc_filelist_filters.set(filter.id, filter);\n emit(\"files:filter:added\", filter);\n}\nfunction unregisterFileListFilter(filterId) {\n if (window._nc_filelist_filters && window._nc_filelist_filters.has(filterId)) {\n window._nc_filelist_filters.delete(filterId);\n emit(\"files:filter:removed\", filterId);\n }\n}\nfunction getFileListFilters() {\n if (!window._nc_filelist_filters) {\n return [];\n }\n return [...window._nc_filelist_filters.values()];\n}\nconst addNewFileMenuEntry = function(entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.registerEntry(entry);\n};\nconst removeNewFileMenuEntry = function(entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.unregisterEntry(entry);\n};\nconst getNewFileMenuEntries = function(context) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.getEntries(context).sort((a2, b2) => {\n if (a2.order !== void 0 && b2.order !== void 0 && a2.order !== b2.order) {\n return a2.order - b2.order;\n }\n return a2.displayName.localeCompare(b2.displayName, void 0, { numeric: true, sensitivity: \"base\" });\n });\n};\nexport {\n Column,\n DefaultType,\n q as File,\n FileAction,\n FileListAction,\n FileListFilter,\n F as FileType,\n FilesSortingMode,\n s as Folder,\n Header,\n InvalidFilenameError,\n InvalidFilenameErrorReason,\n Navigation,\n NewMenuEntryCategory,\n N as Node,\n t as NodeStatus,\n P as Permission,\n View,\n addNewFileMenuEntry,\n c as davGetClient,\n l as davGetDefaultPropfind,\n m as davGetFavoritesReport,\n n as davGetRecentSearch,\n a as davGetRemoteURL,\n g as davGetRootPath,\n p as davParsePermissions,\n b as davRemoteURL,\n r as davResultToNode,\n d as davRootPath,\n h as defaultDavNamespaces,\n f as defaultDavProperties,\n formatFileSize,\n k as getDavNameSpaces,\n j as getDavProperties,\n e as getFavoriteNodes,\n getFileActions,\n getFileListActions,\n getFileListFilters,\n getFileListHeaders,\n getNavigation,\n getNewFileMenuEntries,\n getUniqueName,\n isFilenameValid,\n orderBy,\n parseFileSize,\n i as registerDavProperty,\n registerFileAction,\n registerFileListAction,\n registerFileListFilter,\n registerFileListHeaders,\n removeNewFileMenuEntry,\n sortNodes,\n unregisterFileListFilter,\n validateFilename\n};\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getLoggerBuilder } from '@nextcloud/logger';\nexport default getLoggerBuilder()\n .setApp('settings')\n .detectUser()\n .build();\n","exports.sync = function (store, router, options) {\n var moduleName = (options || {}).moduleName || 'route'\n\n store.registerModule(moduleName, {\n namespaced: true,\n state: cloneRoute(router.currentRoute),\n mutations: {\n 'ROUTE_CHANGED': function ROUTE_CHANGED (state, transition) {\n store.state[moduleName] = cloneRoute(transition.to, transition.from)\n }\n }\n })\n\n var isTimeTraveling = false\n var currentPath\n\n // sync router on store change\n var storeUnwatch = store.watch(\n function (state) { return state[moduleName]; },\n function (route) {\n var fullPath = route.fullPath;\n if (fullPath === currentPath) {\n return\n }\n if (currentPath != null) {\n isTimeTraveling = true\n router.push(route)\n }\n currentPath = fullPath\n },\n { sync: true }\n )\n\n // sync store on router navigation\n var afterEachUnHook = router.afterEach(function (to, from) {\n if (isTimeTraveling) {\n isTimeTraveling = false\n return\n }\n currentPath = to.fullPath\n store.commit(moduleName + '/ROUTE_CHANGED', { to: to, from: from })\n })\n\n return function unsync () {\n // On unsync, remove router hook\n if (afterEachUnHook != null) {\n afterEachUnHook()\n }\n\n // On unsync, remove store watch\n if (storeUnwatch != null) {\n storeUnwatch()\n }\n\n // On unsync, unregister Module with store\n store.unregisterModule(moduleName)\n }\n}\n\nfunction cloneRoute (to, from) {\n var clone = {\n name: to.name,\n path: to.path,\n hash: to.hash,\n query: to.query,\n params: to.params,\n fullPath: to.fullPath,\n meta: to.meta\n }\n if (from) {\n clone.from = cloneRoute(from)\n }\n return Object.freeze(clone)\n}\n\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__.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 \"\" + ({\"3239\":\"settings-users\",\"4529\":\"settings-apps-view\"}[chunkId] || chunkId) + \"-\" + chunkId + \".js?v=\" + {\"459\":\"975afd1e02f53abf8034\",\"1023\":\"06cf5496a0a2d7ef494a\",\"2441\":\"2c050d23f9070dfa7f03\",\"3239\":\"a1ded3f60f3185c4ac3b\",\"4529\":\"ab85428fc71ea1124397\",\"5862\":\"142cd48ca8ec32e57725\",\"6227\":\"3494381758c4754ef3f5\",\"7265\":\"3ea08242e475ac7a22e1\",\"8737\":\"1ee3b21131ac8193a04d\"}[chunkId] + \"\";\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 = 2689;","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 && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\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(/^blob:/, \"\").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\t2689: 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}\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, [4208], () => (__webpack_require__(12836)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","sanitize","url","replace","requireAdmin","confirmPassword","get","options","axios","post","data","patch","put","delete","params","_defineComponent","__name","setup","__props","__sfc","NcContent","_vm","this","_c","_self","_setupProxy","attrs","_v","name","path","components","default","UserManagement","navigation","UserManagementNavigation","props","children","redirect","category","loadState","AppStore","AppStoreNavigation","sidebar","AppStoreSidebar","Vue","use","Router","mode","base","generateUrl","linkActiveClass","routes","__webpack_nonce__","getCSPNonce","prototype","t","n","PiniaVuePlugin","VTooltipPlugin","defaultHtml","Vuex","store","useStore","sync","router","pinia","createPinia","render","h","SettingsApp","el","naturalCollator","Intl","Collator","getLanguage","getCanonicalLocale","numeric","usage","usersSettings","localStorage","getBuilder","persist","build","defaults","id","usercount","disabled","canAdd","canRemove","state","users","groups","getSubAdminGroups","systemGroups","orderBy","sortGroups","GroupSorting","UserCount","minPasswordLength","usersOffset","usersLimit","disabledUsersOffset","disabledUsersLimit","userCount","showConfig","showStoragePath","getItem","showUserBackend","showFirstLogin","showLastLogin","showNewUserForm","showLanguages","mutations","appendUsers","usersObj","existingUsers","map","_ref","newUsers","Object","values","filter","_ref2","includes","concat","updateDisabledUsers","_usersObj","setPasswordPolicyMinLength","length","addGroup","newGroup","find","group","assign","unshift","e","console","error","renameGroup","_ref3","gid","displayName","groupIndex","findIndex","groupSearch","updatedGroup","splice","removeGroup","addUserGroup","_ref4","userid","user","enabled","push","removeUserGroup","_ref5","indexOf","addUserSubAdmin","_ref6","subadmin","removeUserSubAdmin","_ref7","deleteUser","userIndex","commit","actionType","addUserData","response","ocs","enableDisableUser","_ref8","updateUserCounts","_ref9","recentGroup","disabledGroup","forEach","userGroup","warn","logger","setUserData","_ref10","key","value","humanValue","parseFileSize","resetUsers","resetGroups","setShowConfig","_ref11","setItem","JSON","stringify","setGroupSorting","sorting","oldValue","String","catch","showError","getters","getUsers","getGroups","subAdminGroups","getSortedGroups","sort","a","b","numA","numB","compare","getGroupSorting","getPasswordPolicyMinLength","getUsersOffset","getUsersLimit","getDisabledUsersOffset","getDisabledUsersLimit","getUserCount","getShowConfig","CancelToken","searchRequestCancelSource","actions","searchUsers","context","_ref12","offset","limit","search","api","generateOcsUrl","getUser","userId","_ref13","cancel","source","trim","encodeURIComponent","cancelToken","token","then","usersCount","keys","getRecentUsers","_ref14","getDisabledUsers","_ref15","_ref16","limitParam","getUsersFromList","_ref17","getUsersFromGroup","_ref18","groupid","groupId","getCapabilities","password_policy","minLength","_ref19","_ref20","_ref21","_ref22","_ref23","wipeUserDevices","Promise","reject","Error","addUser","_ref24","_ref25","dispatch","password","email","quota","language","manager","_ref26","userStatus","_ref27","allowedEmpty","sendWelcomeMail","apps","bundles","categories","updateCount","loading","gettingCategoriesPromise","appApiEnabled","APPS_API_FAILURE","message","isHTML","initCategories","updateCategories","categoriesPromise","setUpdateCount","addCategory","appendCategories","categoriesArray","setAllApps","setError","appId","Array","isArray","_id","app","clearError","enableApp","active","setInstallState","canInstall","disableApp","removable","canUnInstall","uninstallApp","needsDownload","installed","updateApp","version","update","resetApps","reset","startLoading","stopLoading","appIds","_appId","update_required","showInfo","onClick","window","location","reload","close","setTimeout","forceEnableApp","finally","getAllApps","getCategories","shouldRefetchCategories","arguments","undefined","categoriesPromiseResponse","isAppApiEnabled","getAppBundles","getUpdateCount","getCategoryById","selectedCategoryId","serverData","setServerData","getServerData","setAppConfig","API_FAILURE","meta","Store","modules","settings","oc","strict","process","humanList","humanListBinary","formatFileSize","size","skipSmallSizes","binaryPrefixes","base1000","Number","order","Math","floor","log","min","readableFormat","relativeSize","pow","toFixed","parseFloat","toLocaleString","forceBinary","toLocaleLowerCase","replaceAll","e2","match","decimalString","round","k","m","g","p","Date","toISOString","sortNodes","nodes","sortingOptions","sortingMode","sortingOrder","collection","identifiers2","orders","_","index","collator","a2","b2","identifier","entries","sortFavoritesFirst","v","attributes","favorite","sortFoldersFirst","type","basename2","displayname","basename","lastIndexOf","slice","hasRequiredUtil","hasRequiredValidator","validator","util","requireUtil","exports","nameStartChar","nameRegexp","regexName","RegExp","isExist","isEmptyObject","obj","merge","target","arrayMode","len","i2","getValue","isName","string","exec","getAllMatches","regex","matches","allmatches","startIndex","lastIndex","requireValidator","util2","defaultOptions","allowBooleanAttributes","unpairedTags","isWhiteSpace","char","readPI","xmlData","start","tagname","substr","getErrorObject","getLineNumberForPosition","readCommentAndCDATA","angleBracketsCount","validate","tags","tagFound","reachedRoot","err","tagStartPos","closingTag","tagName","substring","msg","result","readAttributeStr","attrStr","attrStrStart","isValid","validateAttributeString","code","line","tagClosed","otg","pop","openPos","col","afterAmp","validateAmpersand","t2","doubleQuote","singleQuote","startChar","validAttrStrRegxp","attrNames","getPositionFromMatch","attrName","validateAttrName","hasOwnProperty","re2","validateNumberAmpersand","count","lineNumber","lines","split","hasRequiredOptionsBuilder","xmlNode","hasRequiredXmlNode","DocTypeReader","hasRequiredDocTypeReader","strnum","hasRequiredStrnum","ignoreAttributes","hasRequiredIgnoreAttributes","OrderedObjParser_1","hasRequiredOrderedObjParser","OptionsBuilder","requireIgnoreAttributes","ignoreAttributes2","pattern","test","hasRequiredNode2json","XMLParser_1","hasRequiredXMLParser","orderedJs2Xml","hasRequiredOrderedJs2Xml","json2xml","hasRequiredJson2xml","fxp","hasRequiredFxp","debug_1","hasRequiredDebug","constants","hasRequiredConstants","node2json","requireNode2json","compress","arr","jPath","text","compressedObj","tagObj","property","propName","newJpath","textNodeName","val","isLeaf","isLeafTag","assignAttributes","alwaysCreateTextNode","attrMap","jpath","atrrName","propCount","prettify","node","requireXMLParser","buildOptions","preserveOrder","attributeNamePrefix","attributesGroupName","removeNSPrefix","parseTagValue","parseAttributeValue","trimValues","cdataPropName","numberParseOptions","hex","leadingZeros","eNotation","tagValueProcessor","attributeValueProcessor","stopNodes","commentPropName","processEntities","htmlEntities","ignoreDeclaration","ignorePiTags","transformTagName","transformAttributeName","updateTag","requireOptionsBuilder","OrderedObjParser","xmlNode2","constructor","child","add","addChild","readDocType","readEntityExp","entityName","isEntity","isElement","isAttlist","isNotation","validateEntityName","entities","hasBody","comment","exp","regx","i","requireDocTypeReader","toNumber","hexRegex","numRegex","parseInt","consider","decimalPoint","str","trimmedStr","skipLike","sign","numTrimmedByZeros","numStr","num","requireStrnum","getIgnoreAttributesFn","addExternalEntities","externalEntities","entKeys","ent","lastEntities","parseTextData","dontTrim","hasAttributes","isLeafNode","escapeEntities","replaceEntitiesValue","newval","parseValue","resolveNameSpace","prefix","charAt","attrsRegx","buildAttributesMap","ignoreAttributesFn","oldVal","aName","newVal","attrCollection","parseXml","xmlObj","currentNode","textData","closeIndex","findClosingIndex","colonIndex","saveTextToParentTag","lastTagName","propIndex","tagsNodeStack","tagData","readTagExp","childNode","tagExp","attrExpPresent","endIndex","docTypeEntities","rawTagName","lastTag","isItStopNode","tagContent","result2","readStopNodeData","entity","ampEntity","currentTagName","allNodesExp","stopNodePath","stopNodeExp","errMsg","closingIndex","closingChar","attrBoundary","ch","tagExpWithClosingIndex","separatorIndex","trimStart","openTagCount","shouldParse","fromCharCode","requireOrderedObjParser","validator2","parse","validationOption","toString","orderedObjParser","orderedResult","addEntity","requireOrderedJs2Xml","arrToStr","indentation","xmlStr","isPreviousElementTag","newJPath","tagText","isStopNode","attStr2","attr_to_str","tempInd","piTextNodeName","newIdentation","indentBy","tagStart","tagValue","suppressUnpairedNode","suppressEmptyNode","endsWith","attr","attrVal","suppressBooleanAttributes","textValue","jArray","format","requireDebug","debug","env","NODE_DEBUG","args","requireConstants","MAX_SAFE_INTEGER","MAX_LENGTH","MAX_SAFE_COMPONENT_LENGTH","MAX_SAFE_BUILD_LENGTH","RELEASE_TYPES","SEMVER_SPEC_VERSION","FLAG_INCLUDE_PRERELEASE","FLAG_LOOSE","XMLParser","XMLBuilder","buildFromOrderedJs","oneListGroup","Builder","isAttribute","attrPrefixLen","processTextOrObjNode","indentate","tagEndChar","newLine","object","level","ajPath","j2x","buildTextValNode","buildObjectNode","repeat","startsWith","jObj","arrayNodeName","join","call","buildAttrPairStr","arrLen","listTagVal","listTagAttr","j2","item","Ks","L","closeTag","tagEndExp","piClosingChar","requireJson2xml","XMLValidator","requireFxp","hasRequiredRe","parseOptions_1","hasRequiredParseOptions","identifiers","hasRequiredIdentifiers","semver","hasRequiredSemver","parse_1","hasRequiredParse","valid_1","hasRequiredValid","major_1","hasRequiredMajor","re","requireSemver","safeRe","module","src","R","LETTERDASHNUMBER","safeRegexReplacements","createToken","isGlobal","safe","max","makeSafeRegex","NUMERICIDENTIFIER","NUMERICIDENTIFIERLOOSE","NONNUMERICIDENTIFIER","PRERELEASEIDENTIFIER","PRERELEASEIDENTIFIERLOOSE","BUILDIDENTIFIER","MAINVERSION","PRERELEASE","BUILD","FULLPLAIN","MAINVERSIONLOOSE","PRERELEASELOOSE","LOOSEPLAIN","XRANGEIDENTIFIER","XRANGEIDENTIFIERLOOSE","GTLT","XRANGEPLAIN","XRANGEPLAINLOOSE","COERCEPLAIN","COERCE","COERCEFULL","LONETILDE","tildeTrimReplace","LONECARET","caretTrimReplace","comparatorTrimReplace","parseOptions","looseOption","freeze","loose","emptyOpts","requireParseOptions","compareIdentifiers","anum","bnum","rcompareIdentifiers","requireIdentifiers","SemVer","includePrerelease","TypeError","m2","LOOSE","FULL","raw","major","minor","prerelease","other","compareMain","comparePre","compareBuild","inc","release","identifierBase","isNaN","throwErrors","er","requireParse","requireValid","requireMajor","getLoggerBuilder","setApp","detectUser","cloneRoute","to","from","clone","hash","query","fullPath","moduleName","registerModule","namespaced","currentRoute","transition","currentPath","isTimeTraveling","storeUnwatch","watch","route","afterEachUnHook","afterEach","unregisterModule","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","O","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","every","r","getter","__esModule","d","definition","o","defineProperty","enumerable","f","chunkId","all","reduce","promises","u","globalThis","Function","prop","l","done","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","bind","head","appendChild","Symbol","toStringTag","nmd","paths","scriptUrl","importScripts","currentScript","toUpperCase","baseURI","self","href","installedChunks","installedChunkData","promise","resolve","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file +{"version":3,"file":"settings-vue-settings-apps-users-management.js?v=5bc5644413d5caee59eb","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/settings/src/store/api.js","webpack:///nextcloud/apps/settings/src/views/SettingsApp.vue","webpack:///nextcloud/apps/settings/src/views/SettingsApp.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/settings/src/views/SettingsApp.vue?3a67","webpack:///nextcloud/apps/settings/src/router/routes.ts","webpack:///nextcloud/apps/settings/src/router/index.ts","webpack:///nextcloud/apps/settings/src/main-apps-users-management.ts","webpack:///nextcloud/apps/settings/src/utils/sorting.ts","webpack:///nextcloud/apps/settings/src/store/users.js","webpack:///nextcloud/apps/settings/src/store/apps.js","webpack:///nextcloud/apps/settings/src/store/users-settings.js","webpack:///nextcloud/apps/settings/src/store/oc.js","webpack:///nextcloud/apps/settings/src/store/index.js","webpack:///nextcloud/apps/settings/src/constants/GroupManagement.ts","webpack:///nextcloud/node_modules/@nextcloud/files/dist/index.mjs","webpack:///nextcloud/apps/settings/src/logger.ts","webpack:///nextcloud/node_modules/vuex-router-sync/index.js","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\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 * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport axios from '@nextcloud/axios'\nimport { confirmPassword } from '@nextcloud/password-confirmation'\nimport '@nextcloud/password-confirmation/dist/style.css'\n\nconst sanitize = function(url) {\n\treturn url.replace(/\\/$/, '') // Remove last url slash\n}\n\nexport default {\n\n\t/**\n\t * This Promise is used to chain a request that require an admin password confirmation\n\t * Since chaining Promise have a very precise behavior concerning catch and then,\n\t * you'll need to be careful when using it.\n\t * e.g\n\t * // store\n\t * action(context) {\n\t * return api.requireAdmin().then((response) => {\n\t * return api.get('url')\n\t * .then((response) => {API success})\n\t * .catch((error) => {API failure});\n\t * }).catch((error) => {requireAdmin failure});\n\t * }\n\t * // vue\n\t * this.$store.dispatch('action').then(() => {always executed})\n\t *\n\t * Since Promise.then().catch().then() will always execute the last then\n\t * this.$store.dispatch('action').then will always be executed\n\t *\n\t * If you want requireAdmin failure to also catch the API request failure\n\t * you will need to throw a new error in the api.get.catch()\n\t *\n\t * e.g\n\t * api.requireAdmin().then((response) => {\n\t * api.get('url')\n\t * .then((response) => {API success})\n\t * .catch((error) => {throw error;});\n\t * }).catch((error) => {requireAdmin OR API failure});\n\t *\n\t * @return {Promise}\n\t */\n\trequireAdmin() {\n\t\treturn confirmPassword()\n\t},\n\tget(url, options) {\n\t\treturn axios.get(sanitize(url), options)\n\t},\n\tpost(url, data) {\n\t\treturn axios.post(sanitize(url), data)\n\t},\n\tpatch(url, data) {\n\t\treturn axios.patch(sanitize(url), data)\n\t},\n\tput(url, data) {\n\t\treturn axios.put(sanitize(url), data)\n\t},\n\tdelete(url, data) {\n\t\treturn axios.delete(sanitize(url), { params: data })\n\t},\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcContent,{attrs:{\"app-name\":\"settings\"}},[_c('router-view',{attrs:{\"name\":\"navigation\"}}),_vm._v(\" \"),_c('router-view'),_vm._v(\" \"),_c('router-view',{attrs:{\"name\":\"sidebar\"}})],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!./SettingsApp.vue?vue&type=script&setup=true&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!./SettingsApp.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./SettingsApp.vue?vue&type=template&id=288003b1\"\nimport script from \"./SettingsApp.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./SettingsApp.vue?vue&type=script&setup=true&lang=ts\"\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 { loadState } from '@nextcloud/initial-state';\nconst appstoreEnabled = loadState('settings', 'appstoreEnabled', true);\n// Dynamic loading\nconst AppStore = () => import(/* webpackChunkName: 'settings-apps-view' */ '../views/AppStore.vue');\nconst AppStoreNavigation = () => import(/* webpackChunkName: 'settings-apps-view' */ '../views/AppStoreNavigation.vue');\nconst AppStoreSidebar = () => import(/* webpackChunkName: 'settings-apps-view' */ '../views/AppStoreSidebar.vue');\nconst UserManagement = () => import(/* webpackChunkName: 'settings-users' */ '../views/UserManagement.vue');\nconst UserManagementNavigation = () => import(/* webpackChunkName: 'settings-users' */ '../views/UserManagementNavigation.vue');\nconst routes = [\n {\n name: 'users',\n path: '/:index(index.php/)?settings/users',\n components: {\n default: UserManagement,\n navigation: UserManagementNavigation,\n },\n props: true,\n children: [\n {\n path: ':selectedGroup',\n name: 'group',\n },\n ],\n },\n {\n path: '/:index(index.php/)?settings/apps',\n name: 'apps',\n redirect: {\n name: 'apps-category',\n params: {\n category: appstoreEnabled ? 'discover' : 'installed',\n },\n },\n components: {\n default: AppStore,\n navigation: AppStoreNavigation,\n sidebar: AppStoreSidebar,\n },\n children: [\n {\n path: ':category',\n name: 'apps-category',\n children: [\n {\n path: ':id',\n name: 'apps-details',\n },\n ],\n },\n ],\n },\n];\nexport default routes;\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport Vue from 'vue';\nimport Router from 'vue-router';\nimport { generateUrl } from '@nextcloud/router';\nimport routes from './routes.ts';\nVue.use(Router);\nconst router = new Router({\n mode: 'history',\n // if index.php is in the url AND we got this far, then it's working:\n // let's keep using index.php in the url\n base: generateUrl(''),\n linkActiveClass: 'active',\n routes,\n});\nexport default router;\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport Vue from 'vue';\nimport Vuex from 'vuex';\nimport VTooltipPlugin from 'v-tooltip';\nimport { sync } from 'vuex-router-sync';\nimport { t, n } from '@nextcloud/l10n';\nimport SettingsApp from './views/SettingsApp.vue';\nimport router from './router/index.ts';\nimport { useStore } from './store/index.js';\nimport { getCSPNonce } from '@nextcloud/auth';\nimport { PiniaVuePlugin, createPinia } from 'pinia';\n// CSP config for webpack dynamic chunk loading\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = getCSPNonce();\n// bind to window\nVue.prototype.t = t;\nVue.prototype.n = n;\nVue.use(PiniaVuePlugin);\nVue.use(VTooltipPlugin, { defaultHtml: false });\nVue.use(Vuex);\nconst store = useStore();\nsync(store, router);\nconst pinia = createPinia();\nexport default new Vue({\n router,\n store,\n pinia,\n render: h => h(SettingsApp),\n el: '#content',\n});\n","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCanonicalLocale, getLanguage } from '@nextcloud/l10n';\nexport const naturalCollator = Intl.Collator([getLanguage(), getCanonicalLocale()], {\n numeric: true,\n usage: 'sort',\n});\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getBuilder } from '@nextcloud/browser-storage'\nimport { getCapabilities } from '@nextcloud/capabilities'\nimport { parseFileSize } from '@nextcloud/files'\nimport { showError } from '@nextcloud/dialogs'\nimport { generateOcsUrl, generateUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport axios from '@nextcloud/axios'\n\nimport { GroupSorting } from '../constants/GroupManagement.ts'\nimport { naturalCollator } from '../utils/sorting.ts'\nimport api from './api.js'\nimport logger from '../logger.ts'\n\nconst usersSettings = loadState('settings', 'usersSettings', {})\n\nconst localStorage = getBuilder('settings').persist(true).build()\n\nconst defaults = {\n\t/**\n\t * @type {import('../views/user-types').IGroup}\n\t */\n\tgroup: {\n\t\tid: '',\n\t\tname: '',\n\t\tusercount: 0,\n\t\tdisabled: 0,\n\t\tcanAdd: true,\n\t\tcanRemove: true,\n\t},\n}\n\nconst state = {\n\tusers: [],\n\tgroups: [\n\t\t...(usersSettings.getSubAdminGroups ?? []),\n\t\t...(usersSettings.systemGroups ?? []),\n\t],\n\torderBy: usersSettings.sortGroups ?? GroupSorting.UserCount,\n\tminPasswordLength: 0,\n\tusersOffset: 0,\n\tusersLimit: 25,\n\tdisabledUsersOffset: 0,\n\tdisabledUsersLimit: 25,\n\tuserCount: usersSettings.userCount ?? 0,\n\tshowConfig: {\n\t\tshowStoragePath: localStorage.getItem('account_settings__showStoragePath') === 'true',\n\t\tshowUserBackend: localStorage.getItem('account_settings__showUserBackend') === 'true',\n\t\tshowFirstLogin: localStorage.getItem('account_settings__showFirstLogin') === 'true',\n\t\tshowLastLogin: localStorage.getItem('account_settings__showLastLogin') === 'true',\n\t\tshowNewUserForm: localStorage.getItem('account_settings__showNewUserForm') === 'true',\n\t\tshowLanguages: localStorage.getItem('account_settings__showLanguages') === 'true',\n\t},\n}\n\nconst mutations = {\n\tappendUsers(state, usersObj) {\n\t\tconst existingUsers = state.users.map(({ id }) => id)\n\t\tconst newUsers = Object.values(usersObj)\n\t\t\t.filter(({ id }) => !existingUsers.includes(id))\n\n\t\tconst users = state.users.concat(newUsers)\n\t\tstate.usersOffset += state.usersLimit\n\t\tstate.users = users\n\t},\n\tupdateDisabledUsers(state, _usersObj) {\n\t\tstate.disabledUsersOffset += state.disabledUsersLimit\n\t},\n\tsetPasswordPolicyMinLength(state, length) {\n\t\tstate.minPasswordLength = length !== '' ? length : 0\n\t},\n\t/**\n\t * @param {object} state store state\n\t * @param {import('../views/user-types.js').IGroup} newGroup new group\n\t */\n\taddGroup(state, newGroup) {\n\t\ttry {\n\t\t\tif (typeof state.groups.find((group) => group.id === newGroup.id) !== 'undefined') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// extend group to default values\n\t\t\tconst group = Object.assign({}, defaults.group, newGroup)\n\t\t\tstate.groups.unshift(group)\n\t\t} catch (e) {\n\t\t\tconsole.error('Can\\'t create group', e)\n\t\t}\n\t},\n\trenameGroup(state, { gid, displayName }) {\n\t\tconst groupIndex = state.groups.findIndex(groupSearch => groupSearch.id === gid)\n\t\tif (groupIndex >= 0) {\n\t\t\tconst updatedGroup = state.groups[groupIndex]\n\t\t\tupdatedGroup.name = displayName\n\t\t\tstate.groups.splice(groupIndex, 1, updatedGroup)\n\t\t}\n\t},\n\tremoveGroup(state, gid) {\n\t\tconst groupIndex = state.groups.findIndex(groupSearch => groupSearch.id === gid)\n\t\tif (groupIndex >= 0) {\n\t\t\tstate.groups.splice(groupIndex, 1)\n\t\t}\n\t},\n\taddUserGroup(state, { userid, gid }) {\n\t\tconst group = state.groups.find(groupSearch => groupSearch.id === gid)\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\t// increase count if user is enabled\n\t\tif (group && user.enabled && state.userCount > 0) {\n\t\t\tgroup.usercount++\n\t\t}\n\t\tconst groups = user.groups\n\t\tgroups.push(gid)\n\t},\n\tremoveUserGroup(state, { userid, gid }) {\n\t\tconst group = state.groups.find(groupSearch => groupSearch.id === gid)\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\t// lower count if user is enabled\n\t\tif (group && user.enabled && state.userCount > 0) {\n\t\t\tgroup.usercount--\n\t\t}\n\t\tconst groups = user.groups\n\t\tgroups.splice(groups.indexOf(gid), 1)\n\t},\n\taddUserSubAdmin(state, { userid, gid }) {\n\t\tconst groups = state.users.find(user => user.id === userid).subadmin\n\t\tgroups.push(gid)\n\t},\n\tremoveUserSubAdmin(state, { userid, gid }) {\n\t\tconst groups = state.users.find(user => user.id === userid).subadmin\n\t\tgroups.splice(groups.indexOf(gid), 1)\n\t},\n\tdeleteUser(state, userid) {\n\t\tconst userIndex = state.users.findIndex(user => user.id === userid)\n\t\tthis.commit('updateUserCounts', { user: state.users[userIndex], actionType: 'remove' })\n\t\tstate.users.splice(userIndex, 1)\n\t},\n\taddUserData(state, response) {\n\t\tconst user = response.data.ocs.data\n\t\tstate.users.unshift(user)\n\t\tthis.commit('updateUserCounts', { user, actionType: 'create' })\n\t},\n\tenableDisableUser(state, { userid, enabled }) {\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\tuser.enabled = enabled\n\t\tthis.commit('updateUserCounts', { user, actionType: enabled ? 'enable' : 'disable' })\n\t},\n\t// update active/disabled counts, groups counts\n\tupdateUserCounts(state, { user, actionType }) {\n\t\t// 0 is a special value\n\t\tif (state.userCount === 0) {\n\t\t\treturn\n\t\t}\n\n\t\tconst recentGroup = state.groups.find(group => group.id === '__nc_internal_recent')\n\t\tconst disabledGroup = state.groups.find(group => group.id === 'disabled')\n\t\tswitch (actionType) {\n\t\tcase 'enable':\n\t\tcase 'disable':\n\t\t\tdisabledGroup.usercount += user.enabled ? -1 : 1 // update Disabled Users count\n\t\t\trecentGroup.usercount += user.enabled ? 1 : -1\n\t\t\tstate.userCount += user.enabled ? 1 : -1 // update Active Users count\n\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\tif (!group) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tgroup.disabled += user.enabled ? -1 : 1 // update group disabled count\n\t\t\t})\n\t\t\tbreak\n\t\tcase 'create':\n\t\t\trecentGroup.usercount++\n\t\t\tstate.userCount++ // increment Active Users count\n\n\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\tif (!group) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tgroup.usercount++ // increment group total count\n\t\t\t})\n\t\t\tbreak\n\t\tcase 'remove':\n\t\t\tif (user.enabled) {\n\t\t\t\trecentGroup.usercount--\n\t\t\t\tstate.userCount-- // decrement Active Users count\n\t\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\t\tif (!group) {\n\t\t\t\t\t\tconsole.warn('User group ' + userGroup + ' does not exist during user removal')\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tgroup.usercount-- // decrement group total count\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tdisabledGroup.usercount-- // decrement Disabled Users count\n\t\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\t\tif (!group) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tgroup.disabled-- // decrement group disabled count\n\t\t\t\t})\n\t\t\t}\n\t\t\tbreak\n\t\tdefault:\n\t\t\tlogger.error(`Unknown action type in updateUserCounts: '${actionType}'`)\n\t\t\t// not throwing error to interrupt execution as this is not fatal\n\t\t}\n\t},\n\tsetUserData(state, { userid, key, value }) {\n\t\tif (key === 'quota') {\n\t\t\tconst humanValue = parseFileSize(value, true)\n\t\t\tstate.users.find(user => user.id === userid)[key][key] = humanValue !== null ? humanValue : value\n\t\t} else {\n\t\t\tstate.users.find(user => user.id === userid)[key] = value\n\t\t}\n\t},\n\n\t/**\n\t * Reset users list\n\t *\n\t * @param {object} state the store state\n\t */\n\tresetUsers(state) {\n\t\tstate.users = []\n\t\tstate.usersOffset = 0\n\t\tstate.disabledUsersOffset = 0\n\t},\n\n\t/**\n\t * Reset group list\n\t *\n\t * @param {object} state the store state\n\t */\n\tresetGroups(state) {\n\t\tstate.groups = [\n\t\t\t...(usersSettings.getSubAdminGroups ?? []),\n\t\t\t...(usersSettings.systemGroups ?? []),\n\t\t]\n\t},\n\n\tsetShowConfig(state, { key, value }) {\n\t\tlocalStorage.setItem(`account_settings__${key}`, JSON.stringify(value))\n\t\tstate.showConfig[key] = value\n\t},\n\n\tsetGroupSorting(state, sorting) {\n\t\tconst oldValue = state.orderBy\n\t\tstate.orderBy = sorting\n\n\t\t// Persist the value on the server\n\t\taxios.post(\n\t\t\tgenerateUrl('/settings/users/preferences/group.sortBy'),\n\t\t\t{\n\t\t\t\tvalue: String(sorting),\n\t\t\t},\n\t\t).catch((error) => {\n\t\t\tstate.orderBy = oldValue\n\t\t\tshowError(t('settings', 'Could not set group sorting'))\n\t\t\tlogger.error(error)\n\t\t})\n\t},\n}\n\nconst getters = {\n\tgetUsers(state) {\n\t\treturn state.users\n\t},\n\tgetGroups(state) {\n\t\treturn state.groups\n\t},\n\tgetSubAdminGroups() {\n\t\treturn usersSettings.subAdminGroups ?? []\n\t},\n\n\tgetSortedGroups(state) {\n\t\tconst groups = [...state.groups]\n\t\tif (state.orderBy === GroupSorting.UserCount) {\n\t\t\treturn groups.sort((a, b) => {\n\t\t\t\tconst numA = a.usercount - a.disabled\n\t\t\t\tconst numB = b.usercount - b.disabled\n\t\t\t\treturn (numA < numB) ? 1 : (numB < numA ? -1 : naturalCollator.compare(a.name, b.name))\n\t\t\t})\n\t\t} else {\n\t\t\treturn groups.sort((a, b) => naturalCollator.compare(a.name, b.name))\n\t\t}\n\t},\n\tgetGroupSorting(state) {\n\t\treturn state.orderBy\n\t},\n\tgetPasswordPolicyMinLength(state) {\n\t\treturn state.minPasswordLength\n\t},\n\tgetUsersOffset(state) {\n\t\treturn state.usersOffset\n\t},\n\tgetUsersLimit(state) {\n\t\treturn state.usersLimit\n\t},\n\tgetDisabledUsersOffset(state) {\n\t\treturn state.disabledUsersOffset\n\t},\n\tgetDisabledUsersLimit(state) {\n\t\treturn state.disabledUsersLimit\n\t},\n\tgetUserCount(state) {\n\t\treturn state.userCount\n\t},\n\tgetShowConfig(state) {\n\t\treturn state.showConfig\n\t},\n}\n\nconst CancelToken = axios.CancelToken\nlet searchRequestCancelSource = null\n\nconst actions = {\n\n\t/**\n\t * search users\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search Search amongst users\n\t * @return {Promise}\n\t */\n\tsearchUsers(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search })).catch((error) => {\n\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t}\n\t\t})\n\t},\n\n\t/**\n\t * Get user details\n\t *\n\t * @param {object} context store context\n\t * @param {string} userId user id\n\t * @return {Promise}\n\t */\n\tgetUser(context, userId) {\n\t\treturn api.get(generateOcsUrl(`cloud/users/${userId}`)).catch((error) => {\n\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t}\n\t\t})\n\t},\n\n\t/**\n\t * Get all users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search Search amongst users\n\t * @param {string} options.group Get users from group\n\t * @return {Promise}\n\t */\n\tgetUsers(context, { offset, limit, search, group }) {\n\t\tif (searchRequestCancelSource) {\n\t\t\tsearchRequestCancelSource.cancel('Operation canceled by another search request.')\n\t\t}\n\t\tsearchRequestCancelSource = CancelToken.source()\n\t\tsearch = typeof search === 'string' ? search : ''\n\n\t\t/**\n\t\t * Adding filters in the search bar such as in:files, in:users, etc.\n\t\t * collides with this particular search, so we need to remove them\n\t\t * here and leave only the original search query\n\t\t */\n\t\tsearch = search.replace(/in:[^\\s]+/g, '').trim()\n\n\t\tgroup = typeof group === 'string' ? group : ''\n\t\tif (group !== '') {\n\t\t\treturn api.get(generateOcsUrl('cloud/groups/{group}/users/details?offset={offset}&limit={limit}&search={search}', { group: encodeURIComponent(group), offset, limit, search }), {\n\t\t\t\tcancelToken: searchRequestCancelSource.token,\n\t\t\t})\n\t\t\t\t.then((response) => {\n\t\t\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\t\t\tif (usersCount > 0) {\n\t\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t\t}\n\t\t\t\t\treturn usersCount\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}\n\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search }), {\n\t\t\tcancelToken: searchRequestCancelSource.token,\n\t\t})\n\t\t\t.then((response) => {\n\t\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\t\tif (usersCount > 0) {\n\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t}\n\t\t\t\treturn usersCount\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t\t}\n\t\t\t})\n\t},\n\n\t/**\n\t * Get recent users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search Search query\n\t * @return {Promise<number>}\n\t */\n\tasync getRecentUsers(context, { offset, limit, search }) {\n\t\tconst url = generateOcsUrl('cloud/users/recent?offset={offset}&limit={limit}&search={search}', { offset, limit, search })\n\t\ttry {\n\t\t\tconst response = await api.get(url)\n\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\tif (usersCount > 0) {\n\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t}\n\t\t\treturn usersCount\n\t\t} catch (error) {\n\t\t\tcontext.commit('API_FAILURE', error)\n\t\t}\n\t},\n\n\t/**\n\t * Get disabled users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param options.search\n\t * @return {Promise<number>}\n\t */\n\tasync getDisabledUsers(context, { offset, limit, search }) {\n\t\tconst url = generateOcsUrl('cloud/users/disabled?offset={offset}&limit={limit}&search={search}', { offset, limit, search })\n\t\ttry {\n\t\t\tconst response = await api.get(url)\n\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\tif (usersCount > 0) {\n\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\tcontext.commit('updateDisabledUsers', response.data.ocs.data.users)\n\t\t\t}\n\t\t\treturn usersCount\n\t\t} catch (error) {\n\t\t\tcontext.commit('API_FAILURE', error)\n\t\t}\n\t},\n\n\tgetGroups(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\t\tconst limitParam = limit === -1 ? '' : `&limit=${limit}`\n\t\treturn api.get(generateOcsUrl('cloud/groups?offset={offset}&search={search}', { offset, search }) + limitParam)\n\t\t\t.then((response) => {\n\t\t\t\tif (Object.keys(response.data.ocs.data.groups).length > 0) {\n\t\t\t\t\tresponse.data.ocs.data.groups.forEach(function(group) {\n\t\t\t\t\t\tcontext.commit('addGroup', { id: group, name: group })\n\t\t\t\t\t})\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\t/**\n\t * Get all users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search -\n\t * @return {Promise}\n\t */\n\tgetUsersFromList(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search }))\n\t\t\t.then((response) => {\n\t\t\t\tif (Object.keys(response.data.ocs.data.users).length > 0) {\n\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\t/**\n\t * Get all users with full details from a groupid\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.groupid -\n\t * @return {Promise}\n\t */\n\tgetUsersFromGroup(context, { groupid, offset, limit }) {\n\t\treturn api.get(generateOcsUrl('cloud/users/{groupId}/details?offset={offset}&limit={limit}', { groupId: encodeURIComponent(groupid), offset, limit }))\n\t\t\t.then((response) => context.commit('getUsersFromList', response.data.ocs.data.users))\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\tgetPasswordPolicyMinLength(context) {\n\t\tif (getCapabilities().password_policy && getCapabilities().password_policy.minLength) {\n\t\t\tcontext.commit('setPasswordPolicyMinLength', getCapabilities().password_policy.minLength)\n\t\t\treturn getCapabilities().password_policy.minLength\n\t\t}\n\t\treturn false\n\t},\n\n\t/**\n\t * Add group\n\t *\n\t * @param {object} context store context\n\t * @param {string} gid Group id\n\t * @return {Promise}\n\t */\n\taddGroup(context, gid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/groups'), { groupid: gid })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('addGroup', { id: gid, name: gid })\n\t\t\t\t\treturn { gid, displayName: gid }\n\t\t\t\t})\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { gid, error })\n\t\t\t// let's throw one more time to prevent the view\n\t\t\t// from adding the user to a group that doesn't exists\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Rename group\n\t *\n\t * @param {object} context store context\n\t * @param {string} groupid Group id\n\t * @param {string} displayName Group display name\n\t * @return {Promise}\n\t */\n\trenameGroup(context, { groupid, displayName }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.put(generateOcsUrl('cloud/groups/{groupId}', { groupId: encodeURIComponent(groupid) }), { key: 'displayname', value: displayName })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('renameGroup', { gid: groupid, displayName })\n\t\t\t\t\treturn { groupid, displayName }\n\t\t\t\t})\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { groupid, error })\n\t\t\t// let's throw one more time to prevent the view\n\t\t\t// from renaming the group\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Remove group\n\t *\n\t * @param {object} context store context\n\t * @param {string} gid Group id\n\t * @return {Promise}\n\t */\n\tremoveGroup(context, gid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/groups/{groupId}', { groupId: encodeURIComponent(gid) }))\n\t\t\t\t.then((response) => context.commit('removeGroup', gid))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { gid, error }))\n\t},\n\n\t/**\n\t * Add user to group\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\taddUserGroup(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/groups', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('addUserGroup', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Remove user from group\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\tremoveUserGroup(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}/groups', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('removeUserGroup', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { userid, error })\n\t\t\t// let's throw one more time to prevent\n\t\t\t// the view from removing the user row on failure\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Add user to group admin\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\taddUserSubAdmin(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/subadmins', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('addUserSubAdmin', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Remove user from group admin\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\tremoveUserSubAdmin(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}/subadmins', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('removeUserSubAdmin', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Mark all user devices for remote wipe\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\tasync wipeUserDevices(context, userid) {\n\t\ttry {\n\t\t\tawait api.requireAdmin()\n\t\t\treturn await api.post(generateOcsUrl('cloud/users/{userid}/wipe', { userid }))\n\t\t} catch (error) {\n\t\t\tcontext.commit('API_FAILURE', { userid, error })\n\t\t\treturn Promise.reject(new Error('Failed to wipe user devices'))\n\t\t}\n\t},\n\n\t/**\n\t * Delete a user\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\tdeleteUser(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}', { userid }))\n\t\t\t\t.then((response) => context.commit('deleteUser', userid))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Add a user\n\t *\n\t * @param {object} context store context\n\t * @param {Function} context.commit -\n\t * @param {Function} context.dispatch -\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.password User password\n\t * @param {string} options.displayName User display name\n\t * @param {string} options.email User email\n\t * @param {string} options.groups User groups\n\t * @param {string} options.subadmin User subadmin groups\n\t * @param {string} options.quota User email\n\t * @param {string} options.language User language\n\t * @param {string} options.manager User manager\n\t * @return {Promise}\n\t */\n\taddUser({ commit, dispatch }, { userid, password, displayName, email, groups, subadmin, quota, language, manager }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users'), { userid, password, displayName, email, groups, subadmin, quota, language, manager })\n\t\t\t\t.then((response) => dispatch('addUserData', userid || response.data.ocs.data.id))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcommit('API_FAILURE', { userid, error })\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Get user data and commit addition\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\taddUserData(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.get(generateOcsUrl('cloud/users/{userid}', { userid }))\n\t\t\t\t.then((response) => context.commit('addUserData', response))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Enable or disable user\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {boolean} options.enabled User enablement status\n\t * @return {Promise}\n\t */\n\tenableDisableUser(context, { userid, enabled = true }) {\n\t\tconst userStatus = enabled ? 'enable' : 'disable'\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.put(generateOcsUrl('cloud/users/{userid}/{userStatus}', { userid, userStatus }))\n\t\t\t\t.then((response) => context.commit('enableDisableUser', { userid, enabled }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Edit user data\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.key User field to edit\n\t * @param {string} options.value Value of the change\n\t * @return {Promise}\n\t */\n\tasync setUserData(context, { userid, key, value }) {\n\t\tconst allowedEmpty = ['email', 'displayname', 'manager']\n\t\tconst validKeys = ['email', 'language', 'quota', 'displayname', 'password', 'manager']\n\n\t\tif (!validKeys.includes(key)) {\n\t\t\tthrow new Error('Invalid request data')\n\t\t}\n\n\t\t// If value is empty and the key doesn't allow empty values, throw error\n\t\tif (value === '' && !allowedEmpty.includes(key)) {\n\t\t\tthrow new Error('Value cannot be empty for this field')\n\t\t}\n\n\t\ttry {\n\t\t\tawait api.requireAdmin()\n\t\t\tawait api.put(generateOcsUrl('cloud/users/{userid}', { userid }), { key, value })\n\t\t\treturn context.commit('setUserData', { userid, key, value })\n\t\t} catch (error) {\n\t\t\tcontext.commit('API_FAILURE', { userid, error })\n\t\t\tthrow error\n\t\t}\n\t},\n\n\t/**\n\t * Send welcome mail\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\tsendWelcomeMail(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/welcome', { userid }))\n\t\t\t\t.then(response => true)\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport api from './api.js'\nimport Vue from 'vue'\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\nimport { showError, showInfo } from '@nextcloud/dialogs'\nimport { loadState } from '@nextcloud/initial-state'\n\nconst state = {\n\tapps: [],\n\tbundles: loadState('settings', 'appstoreBundles', []),\n\tcategories: [],\n\tupdateCount: loadState('settings', 'appstoreUpdateCount', 0),\n\tloading: {},\n\tgettingCategoriesPromise: null,\n\tappApiEnabled: loadState('settings', 'appApiEnabled', false),\n}\n\nconst mutations = {\n\n\tAPPS_API_FAILURE(state, error) {\n\t\tshowError(t('settings', 'An error occurred during the request. Unable to proceed.') + '<br>' + error.error.response.data.data.message, { isHTML: true })\n\t\tconsole.error(state, error)\n\t},\n\n\tinitCategories(state, { categories, updateCount }) {\n\t\tstate.categories = categories\n\t\tstate.updateCount = updateCount\n\t},\n\n\tupdateCategories(state, categoriesPromise) {\n\t\tstate.gettingCategoriesPromise = categoriesPromise\n\t},\n\n\tsetUpdateCount(state, updateCount) {\n\t\tstate.updateCount = updateCount\n\t},\n\n\taddCategory(state, category) {\n\t\tstate.categories.push(category)\n\t},\n\n\tappendCategories(state, categoriesArray) {\n\t\t// convert obj to array\n\t\tstate.categories = categoriesArray\n\t},\n\n\tsetAllApps(state, apps) {\n\t\tstate.apps = apps\n\t},\n\n\tsetError(state, { appId, error }) {\n\t\tif (!Array.isArray(appId)) {\n\t\t\tappId = [appId]\n\t\t}\n\t\tappId.forEach((_id) => {\n\t\t\tconst app = state.apps.find(app => app.id === _id)\n\t\t\tapp.error = error\n\t\t})\n\t},\n\n\tclearError(state, { appId, error }) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.error = null\n\t},\n\n\tenableApp(state, { appId, groups }) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.active = true\n\t\tapp.groups = groups\n\t\tif (app.id === 'app_api') {\n\t\t\tstate.appApiEnabled = true\n\t\t}\n\t},\n\n\tsetInstallState(state, { appId, canInstall }) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tif (app) {\n\t\t\tapp.canInstall = canInstall === true\n\t\t}\n\t},\n\n\tdisableApp(state, appId) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.active = false\n\t\tapp.groups = []\n\t\tif (app.removable) {\n\t\t\tapp.canUnInstall = true\n\t\t}\n\t\tif (app.id === 'app_api') {\n\t\t\tstate.appApiEnabled = false\n\t\t}\n\t},\n\n\tuninstallApp(state, appId) {\n\t\tstate.apps.find(app => app.id === appId).active = false\n\t\tstate.apps.find(app => app.id === appId).groups = []\n\t\tstate.apps.find(app => app.id === appId).needsDownload = true\n\t\tstate.apps.find(app => app.id === appId).installed = false\n\t\tstate.apps.find(app => app.id === appId).canUnInstall = false\n\t\tstate.apps.find(app => app.id === appId).canInstall = true\n\t\tif (appId === 'app_api') {\n\t\t\tstate.appApiEnabled = false\n\t\t}\n\t},\n\n\tupdateApp(state, appId) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tconst version = app.update\n\t\tapp.update = null\n\t\tapp.version = version\n\t\tstate.updateCount--\n\n\t},\n\n\tresetApps(state) {\n\t\tstate.apps = []\n\t},\n\treset(state) {\n\t\tstate.apps = []\n\t\tstate.categories = []\n\t\tstate.updateCount = 0\n\t},\n\tstartLoading(state, id) {\n\t\tif (Array.isArray(id)) {\n\t\t\tid.forEach((_id) => {\n\t\t\t\tVue.set(state.loading, _id, true)\n\t\t\t})\n\t\t} else {\n\t\t\tVue.set(state.loading, id, true)\n\t\t}\n\t},\n\tstopLoading(state, id) {\n\t\tif (Array.isArray(id)) {\n\t\t\tid.forEach((_id) => {\n\t\t\t\tVue.set(state.loading, _id, false)\n\t\t\t})\n\t\t} else {\n\t\t\tVue.set(state.loading, id, false)\n\t\t}\n\t},\n}\n\nconst getters = {\n\tisAppApiEnabled(state) {\n\t\treturn state.appApiEnabled\n\t},\n\tloading(state) {\n\t\treturn function(id) {\n\t\t\treturn state.loading[id]\n\t\t}\n\t},\n\tgetCategories(state) {\n\t\treturn state.categories\n\t},\n\tgetAllApps(state) {\n\t\treturn state.apps\n\t},\n\tgetAppBundles(state) {\n\t\treturn state.bundles\n\t},\n\tgetUpdateCount(state) {\n\t\treturn state.updateCount\n\t},\n\tgetCategoryById: (state) => (selectedCategoryId) => {\n\t\treturn state.categories.find((category) => category.id === selectedCategoryId)\n\t},\n}\n\nconst actions = {\n\n\tenableApp(context, { appId, groups }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.post(generateUrl('settings/apps/enable'), { appIds: apps, groups })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tapps.forEach(_appId => {\n\t\t\t\t\t\tcontext.commit('enableApp', { appId: _appId, groups })\n\t\t\t\t\t})\n\n\t\t\t\t\t// check for server health\n\t\t\t\t\treturn axios.get(generateUrl('apps/files/'))\n\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\tif (response.data.update_required) {\n\t\t\t\t\t\t\t\tshowInfo(\n\t\t\t\t\t\t\t\t\tt(\n\t\t\t\t\t\t\t\t\t\t'settings',\n\t\t\t\t\t\t\t\t\t\t'The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds.',\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tonClick: () => window.location.reload(),\n\t\t\t\t\t\t\t\t\t\tclose: false,\n\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\t\t\tlocation.reload()\n\t\t\t\t\t\t\t\t}, 5000)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch(() => {\n\t\t\t\t\t\t\tif (!Array.isArray(appId)) {\n\t\t\t\t\t\t\t\tshowError(t('settings', 'Error: This app cannot be enabled because it makes the server unstable'))\n\t\t\t\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\t\t\t\terror: t('settings', 'Error: This app cannot be enabled because it makes the server unstable'),\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\tcontext.dispatch('disableApp', { appId })\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\terror: error.response.data.data.message,\n\t\t\t\t\t})\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tforceEnableApp(context, { appId, groups }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then(() => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.post(generateUrl('settings/apps/force'), { appId })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('setInstallState', { appId, canInstall: true })\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\terror: error.response.data.data.message,\n\t\t\t\t\t})\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t\t\t.finally(() => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tdisableApp(context, { appId }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\treturn api.post(generateUrl('settings/apps/disable'), { appIds: apps })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tapps.forEach(_appId => {\n\t\t\t\t\t\tcontext.commit('disableApp', _appId)\n\t\t\t\t\t})\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tuninstallApp(context, { appId }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', appId)\n\t\t\treturn api.get(generateUrl(`settings/apps/uninstall/${appId}`))\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('uninstallApp', appId)\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\n\tupdateApp(context, { appId }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', appId)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.get(generateUrl(`settings/apps/update/${appId}`))\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('updateApp', appId)\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\n\tgetAllApps(context) {\n\t\tcontext.commit('startLoading', 'list')\n\t\treturn api.get(generateUrl('settings/apps/list'))\n\t\t\t.then((response) => {\n\t\t\t\tcontext.commit('setAllApps', response.data.apps)\n\t\t\t\tcontext.commit('stopLoading', 'list')\n\t\t\t\treturn true\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\tasync getCategories(context, { shouldRefetchCategories = false } = {}) {\n\t\tif (shouldRefetchCategories || !context.state.gettingCategoriesPromise) {\n\t\t\tcontext.commit('startLoading', 'categories')\n\t\t\ttry {\n\t\t\t\tconst categoriesPromise = api.get(generateUrl('settings/apps/categories'))\n\t\t\t\tcontext.commit('updateCategories', categoriesPromise)\n\t\t\t\tconst categoriesPromiseResponse = await categoriesPromise\n\t\t\t\tif (categoriesPromiseResponse.data.length > 0) {\n\t\t\t\t\tcontext.commit('appendCategories', categoriesPromiseResponse.data)\n\t\t\t\t\tcontext.commit('stopLoading', 'categories')\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\tcontext.commit('stopLoading', 'categories')\n\t\t\t\treturn false\n\t\t\t} catch (error) {\n\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t}\n\t\t}\n\t\treturn context.state.gettingCategoriesPromise\n\t},\n\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { loadState } from '@nextcloud/initial-state'\n\nconst state = {\n\tserverData: loadState('settings', 'usersSettings', {}),\n}\nconst mutations = {\n\tsetServerData(state, data) {\n\t\tstate.serverData = data\n\t},\n}\nconst getters = {\n\tgetServerData(state) {\n\t\treturn state.serverData\n\t},\n}\nconst actions = {}\n\nexport default { state, mutations, getters, actions }\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport api from './api.js'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nconst state = {}\nconst mutations = {}\nconst getters = {}\nconst actions = {\n\t/**\n\t * Set application config in database\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.app Application name\n\t * @param {boolean} options.key Config key\n\t * @param {boolean} options.value Value to set\n\t * @return {Promise}\n\t */\n\tsetAppConfig(context, { app, key, value }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('apps/provisioning_api/api/v1/config/apps/{app}/{key}', { app, key }), { value })\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { app, key, value, error }))\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { Store } from 'vuex'\nimport users from './users.js'\nimport apps from './apps.js'\nimport settings from './users-settings.js'\nimport oc from './oc.js'\nimport { showError } from '@nextcloud/dialogs'\n\nconst debug = process.env.NODE_ENV !== 'production'\n\nconst mutations = {\n\tAPI_FAILURE(state, error) {\n\t\ttry {\n\t\t\tconst message = error.error.response.data.ocs.meta.message\n\t\t\tshowError(t('settings', 'An error occurred during the request. Unable to proceed.') + '<br>' + message, { isHTML: true })\n\t\t} catch (e) {\n\t\t\tshowError(t('settings', 'An error occurred during the request. Unable to proceed.'))\n\t\t}\n\t\tconsole.error(state, error)\n\t},\n}\n\nlet store = null\n\nexport const useStore = () => {\n\tif (store === null) {\n\t\tstore = new Store({\n\t\t\tmodules: {\n\t\t\t\tusers,\n\t\t\t\tapps,\n\t\t\t\tsettings,\n\t\t\t\toc,\n\t\t\t},\n\t\t\tstrict: debug,\n\t\t\tmutations,\n\t\t})\n\t}\n\treturn store\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/**\n * https://github.com/nextcloud/server/blob/208e38e84e1a07a49699aa90dc5b7272d24489f0/lib/private/Group/MetaData.php#L34\n */\nexport var GroupSorting;\n(function (GroupSorting) {\n GroupSorting[GroupSorting[\"UserCount\"] = 1] = \"UserCount\";\n GroupSorting[GroupSorting[\"GroupName\"] = 2] = \"GroupName\";\n})(GroupSorting || (GroupSorting = {}));\n","import { o as logger } from \"./chunks/dav-Co9y-hkg.mjs\";\nimport { q, F, s, N, t, P, c, l, m, n, a, g, p, b, r, d, h, f, k, j, e, i } from \"./chunks/dav-Co9y-hkg.mjs\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { extname, basename } from \"path\";\nimport { getCanonicalLocale, getLanguage } from \"@nextcloud/l10n\";\nimport { TypedEventTarget } from \"typescript-event-target\";\nvar NewMenuEntryCategory = /* @__PURE__ */ ((NewMenuEntryCategory2) => {\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"UploadFromDevice\"] = 0] = \"UploadFromDevice\";\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"CreateNew\"] = 1] = \"CreateNew\";\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"Other\"] = 2] = \"Other\";\n return NewMenuEntryCategory2;\n})(NewMenuEntryCategory || {});\nclass NewFileMenu {\n _entries = [];\n registerEntry(entry) {\n this.validateEntry(entry);\n entry.category = entry.category ?? 1;\n this._entries.push(entry);\n }\n unregisterEntry(entry) {\n const entryIndex = typeof entry === \"string\" ? this.getEntryIndex(entry) : this.getEntryIndex(entry.id);\n if (entryIndex === -1) {\n logger.warn(\"Entry not found, nothing removed\", { entry, entries: this.getEntries() });\n return;\n }\n this._entries.splice(entryIndex, 1);\n }\n /**\n * Get the list of registered entries\n *\n * @param {Folder} context the creation context. Usually the current folder\n */\n getEntries(context) {\n if (context) {\n return this._entries.filter((entry) => typeof entry.enabled === \"function\" ? entry.enabled(context) : true);\n }\n return this._entries;\n }\n getEntryIndex(id) {\n return this._entries.findIndex((entry) => entry.id === id);\n }\n validateEntry(entry) {\n if (!entry.id || !entry.displayName || !(entry.iconSvgInline || entry.iconClass) || !entry.handler) {\n throw new Error(\"Invalid entry\");\n }\n if (typeof entry.id !== \"string\" || typeof entry.displayName !== \"string\") {\n throw new Error(\"Invalid id or displayName property\");\n }\n if (entry.iconClass && typeof entry.iconClass !== \"string\" || entry.iconSvgInline && typeof entry.iconSvgInline !== \"string\") {\n throw new Error(\"Invalid icon provided\");\n }\n if (entry.enabled !== void 0 && typeof entry.enabled !== \"function\") {\n throw new Error(\"Invalid enabled property\");\n }\n if (typeof entry.handler !== \"function\") {\n throw new Error(\"Invalid handler property\");\n }\n if (\"order\" in entry && typeof entry.order !== \"number\") {\n throw new Error(\"Invalid order property\");\n }\n if (this.getEntryIndex(entry.id) !== -1) {\n throw new Error(\"Duplicate entry\");\n }\n }\n}\nconst getNewFileMenu = function() {\n if (typeof window._nc_newfilemenu === \"undefined\") {\n window._nc_newfilemenu = new NewFileMenu();\n logger.debug(\"NewFileMenu initialized\");\n }\n return window._nc_newfilemenu;\n};\nvar DefaultType = /* @__PURE__ */ ((DefaultType2) => {\n DefaultType2[\"DEFAULT\"] = \"default\";\n DefaultType2[\"HIDDEN\"] = \"hidden\";\n return DefaultType2;\n})(DefaultType || {});\nclass 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 title() {\n return this._action.title;\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 parent() {\n return this._action.parent;\n }\n get default() {\n return this._action.default;\n }\n get destructive() {\n return this._action.destructive;\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 (\"title\" in action && typeof action.title !== \"function\") {\n throw new Error(\"Invalid title 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 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 (action.destructive !== void 0 && typeof action.destructive !== \"boolean\") {\n throw new Error(\"Invalid destructive flag\");\n }\n if (\"parent\" in action && typeof action.parent !== \"string\") {\n throw new Error(\"Invalid parent\");\n }\n if (action.default && !Object.values(DefaultType).includes(action.default)) {\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}\nconst registerFileAction = function(action) {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\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};\nconst getFileActions = function() {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\n return window._nc_fileactions;\n};\nclass FileListAction {\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 order() {\n return this._action.order;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\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 (\"iconSvgInline\" in action && typeof action.iconSvgInline !== \"function\") {\n throw new Error(\"Invalid iconSvgInline function\");\n }\n if (\"order\" in action && typeof action.order !== \"number\") {\n throw new Error(\"Invalid order\");\n }\n if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n throw new Error(\"Invalid enabled function\");\n }\n if (!action.exec || typeof action.exec !== \"function\") {\n throw new Error(\"Invalid exec function\");\n }\n }\n}\nconst registerFileListAction = (action) => {\n if (typeof window._nc_filelistactions === \"undefined\") {\n window._nc_filelistactions = [];\n }\n if (window._nc_filelistactions.find((listAction) => listAction.id === action.id)) {\n logger.error(`FileListAction with id \"${action.id}\" is already registered`, { action });\n return;\n }\n window._nc_filelistactions.push(action);\n};\nconst getFileListActions = () => {\n if (typeof window._nc_filelistactions === \"undefined\") {\n window._nc_filelistactions = [];\n }\n return window._nc_filelistactions;\n};\nclass Header {\n _header;\n constructor(header) {\n this.validateHeader(header);\n this._header = header;\n }\n get id() {\n return this._header.id;\n }\n get order() {\n return this._header.order;\n }\n get enabled() {\n return this._header.enabled;\n }\n get render() {\n return this._header.render;\n }\n get updated() {\n return this._header.updated;\n }\n validateHeader(header) {\n if (!header.id || !header.render || !header.updated) {\n throw new Error(\"Invalid header: id, render and updated are required\");\n }\n if (typeof header.id !== \"string\") {\n throw new Error(\"Invalid id property\");\n }\n if (header.enabled !== void 0 && typeof header.enabled !== \"function\") {\n throw new Error(\"Invalid enabled property\");\n }\n if (header.render && typeof header.render !== \"function\") {\n throw new Error(\"Invalid render property\");\n }\n if (header.updated && typeof header.updated !== \"function\") {\n throw new Error(\"Invalid updated property\");\n }\n }\n}\nconst registerFileListHeaders = function(header) {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n if (window._nc_filelistheader.find((search) => search.id === header.id)) {\n logger.error(`Header ${header.id} already registered`, { header });\n return;\n }\n window._nc_filelistheader.push(header);\n};\nconst getFileListHeaders = function() {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n return window._nc_filelistheader;\n};\nvar InvalidFilenameErrorReason = /* @__PURE__ */ ((InvalidFilenameErrorReason2) => {\n InvalidFilenameErrorReason2[\"ReservedName\"] = \"reserved name\";\n InvalidFilenameErrorReason2[\"Character\"] = \"character\";\n InvalidFilenameErrorReason2[\"Extension\"] = \"extension\";\n return InvalidFilenameErrorReason2;\n})(InvalidFilenameErrorReason || {});\nclass InvalidFilenameError extends Error {\n constructor(options) {\n super(`Invalid ${options.reason} '${options.segment}' in filename '${options.filename}'`, { cause: options });\n }\n /**\n * The filename that was validated\n */\n get filename() {\n return this.cause.filename;\n }\n /**\n * Reason why the validation failed\n */\n get reason() {\n return this.cause.reason;\n }\n /**\n * Part of the filename that caused this error\n */\n get segment() {\n return this.cause.segment;\n }\n}\nfunction validateFilename(filename) {\n const capabilities = getCapabilities().files;\n const forbiddenCharacters = capabilities.forbidden_filename_characters ?? window._oc_config?.forbidden_filenames_characters ?? [\"/\", \"\\\\\"];\n for (const character of forbiddenCharacters) {\n if (filename.includes(character)) {\n throw new InvalidFilenameError({ segment: character, reason: \"character\", filename });\n }\n }\n filename = filename.toLocaleLowerCase();\n const forbiddenFilenames = capabilities.forbidden_filenames ?? [\".htaccess\"];\n if (forbiddenFilenames.includes(filename)) {\n throw new InvalidFilenameError({\n filename,\n segment: filename,\n reason: \"reserved name\"\n /* ReservedName */\n });\n }\n const endOfBasename = filename.indexOf(\".\", 1);\n const basename2 = filename.substring(0, endOfBasename === -1 ? void 0 : endOfBasename);\n const forbiddenFilenameBasenames = capabilities.forbidden_filename_basenames ?? [];\n if (forbiddenFilenameBasenames.includes(basename2)) {\n throw new InvalidFilenameError({\n filename,\n segment: basename2,\n reason: \"reserved name\"\n /* ReservedName */\n });\n }\n const forbiddenFilenameExtensions = capabilities.forbidden_filename_extensions ?? [\".part\", \".filepart\"];\n for (const extension of forbiddenFilenameExtensions) {\n if (filename.length > extension.length && filename.endsWith(extension)) {\n throw new InvalidFilenameError({ segment: extension, reason: \"extension\", filename });\n }\n }\n}\nfunction isFilenameValid(filename) {\n try {\n validateFilename(filename);\n return true;\n } catch (error) {\n if (error instanceof InvalidFilenameError) {\n return false;\n }\n throw error;\n }\n}\nfunction getUniqueName(name, otherNames, options) {\n const opts = {\n suffix: (n2) => `(${n2})`,\n ignoreFileExtension: false,\n ...options\n };\n let newName = name;\n let i2 = 1;\n while (otherNames.includes(newName)) {\n const ext = opts.ignoreFileExtension ? \"\" : extname(name);\n const base = basename(name, ext);\n newName = `${base} ${opts.suffix(i2++)}${ext}`;\n }\n return newName;\n}\nconst humanList = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\"];\nconst humanListBinary = [\"B\", \"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\"];\nfunction formatFileSize(size, skipSmallSizes = false, binaryPrefixes = false, base1000 = false) {\n binaryPrefixes = binaryPrefixes && !base1000;\n if (typeof size === \"string\") {\n size = Number(size);\n }\n let order = size > 0 ? Math.floor(Math.log(size) / Math.log(base1000 ? 1e3 : 1024)) : 0;\n order = Math.min((binaryPrefixes ? humanListBinary.length : humanList.length) - 1, order);\n const readableFormat = binaryPrefixes ? humanListBinary[order] : humanList[order];\n let relativeSize = (size / Math.pow(base1000 ? 1e3 : 1024, order)).toFixed(1);\n if (skipSmallSizes === true && order === 0) {\n return (relativeSize !== \"0.0\" ? \"< 1 \" : \"0 \") + (binaryPrefixes ? humanListBinary[1] : humanList[1]);\n }\n if (order < 2) {\n relativeSize = parseFloat(relativeSize).toFixed(0);\n } else {\n relativeSize = parseFloat(relativeSize).toLocaleString(getCanonicalLocale());\n }\n return relativeSize + \" \" + readableFormat;\n}\nfunction parseFileSize(value, forceBinary = false) {\n try {\n value = `${value}`.toLocaleLowerCase().replaceAll(/\\s+/g, \"\").replaceAll(\",\", \".\");\n } catch (e2) {\n return null;\n }\n const match = value.match(/^([0-9]*(\\.[0-9]*)?)([kmgtp]?)(i?)b?$/);\n if (match === null || match[1] === \".\" || match[1] === \"\") {\n return null;\n }\n const bytesArray = {\n \"\": 0,\n k: 1,\n m: 2,\n g: 3,\n t: 4,\n p: 5,\n e: 6\n };\n const decimalString = `${match[1]}`;\n const base = match[4] === \"i\" || forceBinary ? 1024 : 1e3;\n return Math.round(Number.parseFloat(decimalString) * base ** bytesArray[match[3]]);\n}\nfunction stringify(value) {\n if (value instanceof Date) {\n return value.toISOString();\n }\n return String(value);\n}\nfunction orderBy(collection, identifiers2, orders) {\n identifiers2 = identifiers2 ?? [(value) => value];\n orders = orders ?? [];\n const sorting = identifiers2.map((_, index) => (orders[index] ?? \"asc\") === \"asc\" ? 1 : -1);\n const collator = Intl.Collator(\n [getLanguage(), getCanonicalLocale()],\n {\n // handle 10 as ten and not as one-zero\n numeric: true,\n usage: \"sort\"\n }\n );\n return [...collection].sort((a2, b2) => {\n for (const [index, identifier] of identifiers2.entries()) {\n const value = collator.compare(stringify(identifier(a2)), stringify(identifier(b2)));\n if (value !== 0) {\n return value * sorting[index];\n }\n }\n return 0;\n });\n}\nvar FilesSortingMode = /* @__PURE__ */ ((FilesSortingMode2) => {\n FilesSortingMode2[\"Name\"] = \"basename\";\n FilesSortingMode2[\"Modified\"] = \"mtime\";\n FilesSortingMode2[\"Size\"] = \"size\";\n return FilesSortingMode2;\n})(FilesSortingMode || {});\nfunction sortNodes(nodes, options = {}) {\n const sortingOptions = {\n // Default to sort by name\n sortingMode: \"basename\",\n // Default to sort ascending\n sortingOrder: \"asc\",\n ...options\n };\n const basename2 = (name) => name.lastIndexOf(\".\") > 0 ? name.slice(0, name.lastIndexOf(\".\")) : name;\n const identifiers2 = [\n // 1: Sort favorites first if enabled\n ...sortingOptions.sortFavoritesFirst ? [(v) => v.attributes?.favorite !== 1] : [],\n // 2: Sort folders first if sorting by name\n ...sortingOptions.sortFoldersFirst ? [(v) => v.type !== \"folder\"] : [],\n // 3: Use sorting mode if NOT basename (to be able to use display name too)\n ...sortingOptions.sortingMode !== \"basename\" ? [(v) => v[sortingOptions.sortingMode]] : [],\n // 4: Use display name if available, fallback to name\n (v) => basename2(v.displayname || v.attributes?.displayname || v.basename),\n // 5: Finally, use basename if all previous sorting methods failed\n (v) => v.basename\n ];\n const orders = [\n // (for 1): always sort favorites before normal files\n ...sortingOptions.sortFavoritesFirst ? [\"asc\"] : [],\n // (for 2): always sort folders before files\n ...sortingOptions.sortFoldersFirst ? [\"asc\"] : [],\n // (for 3): Reverse if sorting by mtime as mtime higher means edited more recent -> lower\n ...sortingOptions.sortingMode === \"mtime\" ? [sortingOptions.sortingOrder === \"asc\" ? \"desc\" : \"asc\"] : [],\n // (also for 3 so make sure not to conflict with 2 and 3)\n ...sortingOptions.sortingMode !== \"mtime\" && sortingOptions.sortingMode !== \"basename\" ? [sortingOptions.sortingOrder] : [],\n // for 4: use configured sorting direction\n sortingOptions.sortingOrder,\n // for 5: use configured sorting direction\n sortingOptions.sortingOrder\n ];\n return orderBy(nodes, identifiers2, orders);\n}\nclass Navigation extends TypedEventTarget {\n _views = [];\n _currentView = null;\n /**\n * Register a new view on the navigation\n * @param view The view to register\n * @throws `Error` is thrown if a view with the same id is already registered\n */\n register(view) {\n if (this._views.find((search) => search.id === view.id)) {\n throw new Error(`View id ${view.id} is already registered`);\n }\n this._views.push(view);\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n /**\n * Remove a registered view\n * @param id The id of the view to remove\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 this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n }\n /**\n * Set the currently active view\n * @fires UpdateActiveViewEvent\n * @param view New active view\n */\n setActive(view) {\n this._currentView = view;\n const event = new CustomEvent(\"updateActive\", { detail: view });\n this.dispatchTypedEvent(\"updateActive\", event);\n }\n /**\n * The currently active files view\n */\n get active() {\n return this._currentView;\n }\n /**\n * All registered views\n */\n get views() {\n return this._views;\n }\n}\nconst getNavigation = function() {\n if (typeof window._nc_navigation === \"undefined\") {\n window._nc_navigation = new Navigation();\n logger.debug(\"Navigation service initialized\");\n }\n return window._nc_navigation;\n};\nclass Column {\n _column;\n constructor(column) {\n isValidColumn(column);\n this._column = column;\n }\n get id() {\n return this._column.id;\n }\n get title() {\n return this._column.title;\n }\n get render() {\n return this._column.render;\n }\n get sort() {\n return this._column.sort;\n }\n get summary() {\n return this._column.summary;\n }\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 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};\nfunction getDefaultExportFromCjs(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, \"default\") ? x[\"default\"] : x;\n}\nvar validator = {};\nvar util = {};\nvar hasRequiredUtil;\nfunction requireUtil() {\n if (hasRequiredUtil) return util;\n hasRequiredUtil = 1;\n (function(exports) {\n const nameStartChar = \":A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\";\n const nameChar = nameStartChar + \"\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040\";\n const nameRegexp = \"[\" + nameStartChar + \"][\" + nameChar + \"]*\";\n const regexName = new RegExp(\"^\" + nameRegexp + \"$\");\n const getAllMatches = function(string, regex) {\n const matches = [];\n let match = regex.exec(string);\n while (match) {\n const allmatches = [];\n allmatches.startIndex = regex.lastIndex - match[0].length;\n const len = match.length;\n for (let index = 0; index < len; index++) {\n allmatches.push(match[index]);\n }\n matches.push(allmatches);\n match = regex.exec(string);\n }\n return matches;\n };\n const isName = function(string) {\n const match = regexName.exec(string);\n return !(match === null || typeof match === \"undefined\");\n };\n exports.isExist = function(v) {\n return typeof v !== \"undefined\";\n };\n exports.isEmptyObject = function(obj) {\n return Object.keys(obj).length === 0;\n };\n exports.merge = function(target, a2, arrayMode) {\n if (a2) {\n const keys = Object.keys(a2);\n const len = keys.length;\n for (let i2 = 0; i2 < len; i2++) {\n if (arrayMode === \"strict\") {\n target[keys[i2]] = [a2[keys[i2]]];\n } else {\n target[keys[i2]] = a2[keys[i2]];\n }\n }\n }\n };\n exports.getValue = function(v) {\n if (exports.isExist(v)) {\n return v;\n } else {\n return \"\";\n }\n };\n exports.isName = isName;\n exports.getAllMatches = getAllMatches;\n exports.nameRegexp = nameRegexp;\n })(util);\n return util;\n}\nvar hasRequiredValidator;\nfunction requireValidator() {\n if (hasRequiredValidator) return validator;\n hasRequiredValidator = 1;\n const util2 = requireUtil();\n const defaultOptions = {\n allowBooleanAttributes: false,\n //A tag can have attributes without any value\n unpairedTags: []\n };\n validator.validate = function(xmlData, options) {\n options = Object.assign({}, defaultOptions, options);\n const tags = [];\n let tagFound = false;\n let reachedRoot = false;\n if (xmlData[0] === \"\\uFEFF\") {\n xmlData = xmlData.substr(1);\n }\n for (let i2 = 0; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\" && xmlData[i2 + 1] === \"?\") {\n i2 += 2;\n i2 = readPI(xmlData, i2);\n if (i2.err) return i2;\n } else if (xmlData[i2] === \"<\") {\n let tagStartPos = i2;\n i2++;\n if (xmlData[i2] === \"!\") {\n i2 = readCommentAndCDATA(xmlData, i2);\n continue;\n } else {\n let closingTag = false;\n if (xmlData[i2] === \"/\") {\n closingTag = true;\n i2++;\n }\n let tagName = \"\";\n for (; i2 < xmlData.length && xmlData[i2] !== \">\" && xmlData[i2] !== \" \" && xmlData[i2] !== \"\t\" && xmlData[i2] !== \"\\n\" && xmlData[i2] !== \"\\r\"; i2++) {\n tagName += xmlData[i2];\n }\n tagName = tagName.trim();\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substring(0, tagName.length - 1);\n i2--;\n }\n if (!validateTagName(tagName)) {\n let msg;\n if (tagName.trim().length === 0) {\n msg = \"Invalid space after '<'.\";\n } else {\n msg = \"Tag '\" + tagName + \"' is an invalid name.\";\n }\n return getErrorObject(\"InvalidTag\", msg, getLineNumberForPosition(xmlData, i2));\n }\n const result = readAttributeStr(xmlData, i2);\n if (result === false) {\n return getErrorObject(\"InvalidAttr\", \"Attributes for '\" + tagName + \"' have open quote.\", getLineNumberForPosition(xmlData, i2));\n }\n let attrStr = result.value;\n i2 = result.index;\n if (attrStr[attrStr.length - 1] === \"/\") {\n const attrStrStart = i2 - attrStr.length;\n attrStr = attrStr.substring(0, attrStr.length - 1);\n const isValid = validateAttributeString(attrStr, options);\n if (isValid === true) {\n tagFound = true;\n } else {\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n }\n } else if (closingTag) {\n if (!result.tagClosed) {\n return getErrorObject(\"InvalidTag\", \"Closing tag '\" + tagName + \"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i2));\n } else if (attrStr.trim().length > 0) {\n return getErrorObject(\"InvalidTag\", \"Closing tag '\" + tagName + \"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else if (tags.length === 0) {\n return getErrorObject(\"InvalidTag\", \"Closing tag '\" + tagName + \"' has not been opened.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else {\n const otg = tags.pop();\n if (tagName !== otg.tagName) {\n let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n return getErrorObject(\n \"InvalidTag\",\n \"Expected closing tag '\" + otg.tagName + \"' (opened in line \" + openPos.line + \", col \" + openPos.col + \") instead of closing tag '\" + tagName + \"'.\",\n getLineNumberForPosition(xmlData, tagStartPos)\n );\n }\n if (tags.length == 0) {\n reachedRoot = true;\n }\n }\n } else {\n const isValid = validateAttributeString(attrStr, options);\n if (isValid !== true) {\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i2 - attrStr.length + isValid.err.line));\n }\n if (reachedRoot === true) {\n return getErrorObject(\"InvalidXml\", \"Multiple possible root nodes found.\", getLineNumberForPosition(xmlData, i2));\n } else if (options.unpairedTags.indexOf(tagName) !== -1) ;\n else {\n tags.push({ tagName, tagStartPos });\n }\n tagFound = true;\n }\n for (i2++; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\") {\n if (xmlData[i2 + 1] === \"!\") {\n i2++;\n i2 = readCommentAndCDATA(xmlData, i2);\n continue;\n } else if (xmlData[i2 + 1] === \"?\") {\n i2 = readPI(xmlData, ++i2);\n if (i2.err) return i2;\n } else {\n break;\n }\n } else if (xmlData[i2] === \"&\") {\n const afterAmp = validateAmpersand(xmlData, i2);\n if (afterAmp == -1)\n return getErrorObject(\"InvalidChar\", \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i2));\n i2 = afterAmp;\n } else {\n if (reachedRoot === true && !isWhiteSpace(xmlData[i2])) {\n return getErrorObject(\"InvalidXml\", \"Extra text at the end\", getLineNumberForPosition(xmlData, i2));\n }\n }\n }\n if (xmlData[i2] === \"<\") {\n i2--;\n }\n }\n } else {\n if (isWhiteSpace(xmlData[i2])) {\n continue;\n }\n return getErrorObject(\"InvalidChar\", \"char '\" + xmlData[i2] + \"' is not expected.\", getLineNumberForPosition(xmlData, i2));\n }\n }\n if (!tagFound) {\n return getErrorObject(\"InvalidXml\", \"Start tag expected.\", 1);\n } else if (tags.length == 1) {\n return getErrorObject(\"InvalidTag\", \"Unclosed tag '\" + tags[0].tagName + \"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n } else if (tags.length > 0) {\n return getErrorObject(\"InvalidXml\", \"Invalid '\" + JSON.stringify(tags.map((t2) => t2.tagName), null, 4).replace(/\\r?\\n/g, \"\") + \"' found.\", { line: 1, col: 1 });\n }\n return true;\n };\n function isWhiteSpace(char) {\n return char === \" \" || char === \"\t\" || char === \"\\n\" || char === \"\\r\";\n }\n function readPI(xmlData, i2) {\n const start = i2;\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] == \"?\" || xmlData[i2] == \" \") {\n const tagname = xmlData.substr(start, i2 - start);\n if (i2 > 5 && tagname === \"xml\") {\n return getErrorObject(\"InvalidXml\", \"XML declaration allowed only at the start of the document.\", getLineNumberForPosition(xmlData, i2));\n } else if (xmlData[i2] == \"?\" && xmlData[i2 + 1] == \">\") {\n i2++;\n break;\n } else {\n continue;\n }\n }\n }\n return i2;\n }\n function readCommentAndCDATA(xmlData, i2) {\n if (xmlData.length > i2 + 5 && xmlData[i2 + 1] === \"-\" && xmlData[i2 + 2] === \"-\") {\n for (i2 += 3; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"-\" && xmlData[i2 + 1] === \"-\" && xmlData[i2 + 2] === \">\") {\n i2 += 2;\n break;\n }\n }\n } else if (xmlData.length > i2 + 8 && xmlData[i2 + 1] === \"D\" && xmlData[i2 + 2] === \"O\" && xmlData[i2 + 3] === \"C\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"Y\" && xmlData[i2 + 6] === \"P\" && xmlData[i2 + 7] === \"E\") {\n let angleBracketsCount = 1;\n for (i2 += 8; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\") {\n angleBracketsCount++;\n } else if (xmlData[i2] === \">\") {\n angleBracketsCount--;\n if (angleBracketsCount === 0) {\n break;\n }\n }\n }\n } else if (xmlData.length > i2 + 9 && xmlData[i2 + 1] === \"[\" && xmlData[i2 + 2] === \"C\" && xmlData[i2 + 3] === \"D\" && xmlData[i2 + 4] === \"A\" && xmlData[i2 + 5] === \"T\" && xmlData[i2 + 6] === \"A\" && xmlData[i2 + 7] === \"[\") {\n for (i2 += 8; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"]\" && xmlData[i2 + 1] === \"]\" && xmlData[i2 + 2] === \">\") {\n i2 += 2;\n break;\n }\n }\n }\n return i2;\n }\n const doubleQuote = '\"';\n const singleQuote = \"'\";\n function readAttributeStr(xmlData, i2) {\n let attrStr = \"\";\n let startChar = \"\";\n let tagClosed = false;\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === doubleQuote || xmlData[i2] === singleQuote) {\n if (startChar === \"\") {\n startChar = xmlData[i2];\n } else if (startChar !== xmlData[i2]) ;\n else {\n startChar = \"\";\n }\n } else if (xmlData[i2] === \">\") {\n if (startChar === \"\") {\n tagClosed = true;\n break;\n }\n }\n attrStr += xmlData[i2];\n }\n if (startChar !== \"\") {\n return false;\n }\n return {\n value: attrStr,\n index: i2,\n tagClosed\n };\n }\n const validAttrStrRegxp = new RegExp(`(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*(['\"])(([\\\\s\\\\S])*?)\\\\5)?`, \"g\");\n function validateAttributeString(attrStr, options) {\n const matches = util2.getAllMatches(attrStr, validAttrStrRegxp);\n const attrNames = {};\n for (let i2 = 0; i2 < matches.length; i2++) {\n if (matches[i2][1].length === 0) {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + matches[i2][2] + \"' has no space in starting.\", getPositionFromMatch(matches[i2]));\n } else if (matches[i2][3] !== void 0 && matches[i2][4] === void 0) {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + matches[i2][2] + \"' is without value.\", getPositionFromMatch(matches[i2]));\n } else if (matches[i2][3] === void 0 && !options.allowBooleanAttributes) {\n return getErrorObject(\"InvalidAttr\", \"boolean attribute '\" + matches[i2][2] + \"' is not allowed.\", getPositionFromMatch(matches[i2]));\n }\n const attrName = matches[i2][2];\n if (!validateAttrName(attrName)) {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + attrName + \"' is an invalid name.\", getPositionFromMatch(matches[i2]));\n }\n if (!attrNames.hasOwnProperty(attrName)) {\n attrNames[attrName] = 1;\n } else {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + attrName + \"' is repeated.\", getPositionFromMatch(matches[i2]));\n }\n }\n return true;\n }\n function validateNumberAmpersand(xmlData, i2) {\n let re2 = /\\d/;\n if (xmlData[i2] === \"x\") {\n i2++;\n re2 = /[\\da-fA-F]/;\n }\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \";\")\n return i2;\n if (!xmlData[i2].match(re2))\n break;\n }\n return -1;\n }\n function validateAmpersand(xmlData, i2) {\n i2++;\n if (xmlData[i2] === \";\")\n return -1;\n if (xmlData[i2] === \"#\") {\n i2++;\n return validateNumberAmpersand(xmlData, i2);\n }\n let count = 0;\n for (; i2 < xmlData.length; i2++, count++) {\n if (xmlData[i2].match(/\\w/) && count < 20)\n continue;\n if (xmlData[i2] === \";\")\n break;\n return -1;\n }\n return i2;\n }\n function getErrorObject(code, message, lineNumber) {\n return {\n err: {\n code,\n msg: message,\n line: lineNumber.line || lineNumber,\n col: lineNumber.col\n }\n };\n }\n function validateAttrName(attrName) {\n return util2.isName(attrName);\n }\n function validateTagName(tagname) {\n return util2.isName(tagname);\n }\n function getLineNumberForPosition(xmlData, index) {\n const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n return {\n line: lines.length,\n // column number is last line's length + 1, because column numbering starts at 1:\n col: lines[lines.length - 1].length + 1\n };\n }\n function getPositionFromMatch(match) {\n return match.startIndex + match[1].length;\n }\n return validator;\n}\nvar OptionsBuilder = {};\nvar hasRequiredOptionsBuilder;\nfunction requireOptionsBuilder() {\n if (hasRequiredOptionsBuilder) return OptionsBuilder;\n hasRequiredOptionsBuilder = 1;\n const defaultOptions = {\n preserveOrder: false,\n attributeNamePrefix: \"@_\",\n attributesGroupName: false,\n textNodeName: \"#text\",\n ignoreAttributes: true,\n removeNSPrefix: false,\n // remove NS from tag name or attribute name if true\n allowBooleanAttributes: false,\n //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseTagValue: true,\n parseAttributeValue: false,\n trimValues: true,\n //Trim string values of tag and attributes\n cdataPropName: false,\n numberParseOptions: {\n hex: true,\n leadingZeros: true,\n eNotation: true\n },\n tagValueProcessor: function(tagName, val) {\n return val;\n },\n attributeValueProcessor: function(attrName, val) {\n return val;\n },\n stopNodes: [],\n //nested tags will not be parsed even for errors\n alwaysCreateTextNode: false,\n isArray: () => false,\n commentPropName: false,\n unpairedTags: [],\n processEntities: true,\n htmlEntities: false,\n ignoreDeclaration: false,\n ignorePiTags: false,\n transformTagName: false,\n transformAttributeName: false,\n updateTag: function(tagName, jPath, attrs) {\n return tagName;\n }\n // skipEmptyListItem: false\n };\n const buildOptions = function(options) {\n return Object.assign({}, defaultOptions, options);\n };\n OptionsBuilder.buildOptions = buildOptions;\n OptionsBuilder.defaultOptions = defaultOptions;\n return OptionsBuilder;\n}\nvar xmlNode;\nvar hasRequiredXmlNode;\nfunction requireXmlNode() {\n if (hasRequiredXmlNode) return xmlNode;\n hasRequiredXmlNode = 1;\n class XmlNode {\n constructor(tagname) {\n this.tagname = tagname;\n this.child = [];\n this[\":@\"] = {};\n }\n add(key, val) {\n if (key === \"__proto__\") key = \"#__proto__\";\n this.child.push({ [key]: val });\n }\n addChild(node) {\n if (node.tagname === \"__proto__\") node.tagname = \"#__proto__\";\n if (node[\":@\"] && Object.keys(node[\":@\"]).length > 0) {\n this.child.push({ [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n } else {\n this.child.push({ [node.tagname]: node.child });\n }\n }\n }\n xmlNode = XmlNode;\n return xmlNode;\n}\nvar DocTypeReader;\nvar hasRequiredDocTypeReader;\nfunction requireDocTypeReader() {\n if (hasRequiredDocTypeReader) return DocTypeReader;\n hasRequiredDocTypeReader = 1;\n const util2 = requireUtil();\n function readDocType(xmlData, i2) {\n const entities = {};\n if (xmlData[i2 + 3] === \"O\" && xmlData[i2 + 4] === \"C\" && xmlData[i2 + 5] === \"T\" && xmlData[i2 + 6] === \"Y\" && xmlData[i2 + 7] === \"P\" && xmlData[i2 + 8] === \"E\") {\n i2 = i2 + 9;\n let angleBracketsCount = 1;\n let hasBody = false, comment = false;\n let exp = \"\";\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\" && !comment) {\n if (hasBody && isEntity(xmlData, i2)) {\n i2 += 7;\n let entityName, val;\n [entityName, val, i2] = readEntityExp(xmlData, i2 + 1);\n if (val.indexOf(\"&\") === -1)\n entities[validateEntityName(entityName)] = {\n regx: RegExp(`&${entityName};`, \"g\"),\n val\n };\n } else if (hasBody && isElement(xmlData, i2)) i2 += 8;\n else if (hasBody && isAttlist(xmlData, i2)) i2 += 8;\n else if (hasBody && isNotation(xmlData, i2)) i2 += 9;\n else comment = true;\n angleBracketsCount++;\n exp = \"\";\n } else if (xmlData[i2] === \">\") {\n if (comment) {\n if (xmlData[i2 - 1] === \"-\" && xmlData[i2 - 2] === \"-\") {\n comment = false;\n angleBracketsCount--;\n }\n } else {\n angleBracketsCount--;\n }\n if (angleBracketsCount === 0) {\n break;\n }\n } else if (xmlData[i2] === \"[\") {\n hasBody = true;\n } else {\n exp += xmlData[i2];\n }\n }\n if (angleBracketsCount !== 0) {\n throw new Error(`Unclosed DOCTYPE`);\n }\n } else {\n throw new Error(`Invalid Tag instead of DOCTYPE`);\n }\n return { entities, i: i2 };\n }\n function readEntityExp(xmlData, i2) {\n let entityName = \"\";\n for (; i2 < xmlData.length && (xmlData[i2] !== \"'\" && xmlData[i2] !== '\"'); i2++) {\n entityName += xmlData[i2];\n }\n entityName = entityName.trim();\n if (entityName.indexOf(\" \") !== -1) throw new Error(\"External entites are not supported\");\n const startChar = xmlData[i2++];\n let val = \"\";\n for (; i2 < xmlData.length && xmlData[i2] !== startChar; i2++) {\n val += xmlData[i2];\n }\n return [entityName, val, i2];\n }\n function isEntity(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"E\" && xmlData[i2 + 3] === \"N\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"I\" && xmlData[i2 + 6] === \"T\" && xmlData[i2 + 7] === \"Y\") return true;\n return false;\n }\n function isElement(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"E\" && xmlData[i2 + 3] === \"L\" && xmlData[i2 + 4] === \"E\" && xmlData[i2 + 5] === \"M\" && xmlData[i2 + 6] === \"E\" && xmlData[i2 + 7] === \"N\" && xmlData[i2 + 8] === \"T\") return true;\n return false;\n }\n function isAttlist(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"A\" && xmlData[i2 + 3] === \"T\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"L\" && xmlData[i2 + 6] === \"I\" && xmlData[i2 + 7] === \"S\" && xmlData[i2 + 8] === \"T\") return true;\n return false;\n }\n function isNotation(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"N\" && xmlData[i2 + 3] === \"O\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"A\" && xmlData[i2 + 6] === \"T\" && xmlData[i2 + 7] === \"I\" && xmlData[i2 + 8] === \"O\" && xmlData[i2 + 9] === \"N\") return true;\n return false;\n }\n function validateEntityName(name) {\n if (util2.isName(name))\n return name;\n else\n throw new Error(`Invalid entity name ${name}`);\n }\n DocTypeReader = readDocType;\n return DocTypeReader;\n}\nvar strnum;\nvar hasRequiredStrnum;\nfunction requireStrnum() {\n if (hasRequiredStrnum) return strnum;\n hasRequiredStrnum = 1;\n const hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;\n const numRegex = /^([\\-\\+])?(0*)(\\.[0-9]+([eE]\\-?[0-9]+)?|[0-9]+(\\.[0-9]+([eE]\\-?[0-9]+)?)?)$/;\n if (!Number.parseInt && window.parseInt) {\n Number.parseInt = window.parseInt;\n }\n if (!Number.parseFloat && window.parseFloat) {\n Number.parseFloat = window.parseFloat;\n }\n const consider = {\n hex: true,\n leadingZeros: true,\n decimalPoint: \".\",\n eNotation: true\n //skipLike: /regex/\n };\n function toNumber(str, options = {}) {\n options = Object.assign({}, consider, options);\n if (!str || typeof str !== \"string\") return str;\n let trimmedStr = str.trim();\n if (options.skipLike !== void 0 && options.skipLike.test(trimmedStr)) return str;\n else if (options.hex && hexRegex.test(trimmedStr)) {\n return Number.parseInt(trimmedStr, 16);\n } else {\n const match = numRegex.exec(trimmedStr);\n if (match) {\n const sign = match[1];\n const leadingZeros = match[2];\n let numTrimmedByZeros = trimZeros(match[3]);\n const eNotation = match[4] || match[6];\n if (!options.leadingZeros && leadingZeros.length > 0 && sign && trimmedStr[2] !== \".\") return str;\n else if (!options.leadingZeros && leadingZeros.length > 0 && !sign && trimmedStr[1] !== \".\") return str;\n else {\n const num = Number(trimmedStr);\n const numStr = \"\" + num;\n if (numStr.search(/[eE]/) !== -1) {\n if (options.eNotation) return num;\n else return str;\n } else if (eNotation) {\n if (options.eNotation) return num;\n else return str;\n } else if (trimmedStr.indexOf(\".\") !== -1) {\n if (numStr === \"0\" && numTrimmedByZeros === \"\") return num;\n else if (numStr === numTrimmedByZeros) return num;\n else if (sign && numStr === \"-\" + numTrimmedByZeros) return num;\n else return str;\n }\n if (leadingZeros) {\n if (numTrimmedByZeros === numStr) return num;\n else if (sign + numTrimmedByZeros === numStr) return num;\n else return str;\n }\n if (trimmedStr === numStr) return num;\n else if (trimmedStr === sign + numStr) return num;\n return str;\n }\n } else {\n return str;\n }\n }\n }\n function trimZeros(numStr) {\n if (numStr && numStr.indexOf(\".\") !== -1) {\n numStr = numStr.replace(/0+$/, \"\");\n if (numStr === \".\") numStr = \"0\";\n else if (numStr[0] === \".\") numStr = \"0\" + numStr;\n else if (numStr[numStr.length - 1] === \".\") numStr = numStr.substr(0, numStr.length - 1);\n return numStr;\n }\n return numStr;\n }\n strnum = toNumber;\n return strnum;\n}\nvar ignoreAttributes;\nvar hasRequiredIgnoreAttributes;\nfunction requireIgnoreAttributes() {\n if (hasRequiredIgnoreAttributes) return ignoreAttributes;\n hasRequiredIgnoreAttributes = 1;\n function getIgnoreAttributesFn(ignoreAttributes2) {\n if (typeof ignoreAttributes2 === \"function\") {\n return ignoreAttributes2;\n }\n if (Array.isArray(ignoreAttributes2)) {\n return (attrName) => {\n for (const pattern of ignoreAttributes2) {\n if (typeof pattern === \"string\" && attrName === pattern) {\n return true;\n }\n if (pattern instanceof RegExp && pattern.test(attrName)) {\n return true;\n }\n }\n };\n }\n return () => false;\n }\n ignoreAttributes = getIgnoreAttributesFn;\n return ignoreAttributes;\n}\nvar OrderedObjParser_1;\nvar hasRequiredOrderedObjParser;\nfunction requireOrderedObjParser() {\n if (hasRequiredOrderedObjParser) return OrderedObjParser_1;\n hasRequiredOrderedObjParser = 1;\n const util2 = requireUtil();\n const xmlNode2 = requireXmlNode();\n const readDocType = requireDocTypeReader();\n const toNumber = requireStrnum();\n const getIgnoreAttributesFn = requireIgnoreAttributes();\n class OrderedObjParser {\n constructor(options) {\n this.options = options;\n this.currentNode = null;\n this.tagsNodeStack = [];\n this.docTypeEntities = {};\n this.lastEntities = {\n \"apos\": { regex: /&(apos|#39|#x27);/g, val: \"'\" },\n \"gt\": { regex: /&(gt|#62|#x3E);/g, val: \">\" },\n \"lt\": { regex: /&(lt|#60|#x3C);/g, val: \"<\" },\n \"quot\": { regex: /&(quot|#34|#x22);/g, val: '\"' }\n };\n this.ampEntity = { regex: /&(amp|#38|#x26);/g, val: \"&\" };\n this.htmlEntities = {\n \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n \"cent\": { regex: /&(cent|#162);/g, val: \"¢\" },\n \"pound\": { regex: /&(pound|#163);/g, val: \"£\" },\n \"yen\": { regex: /&(yen|#165);/g, val: \"¥\" },\n \"euro\": { regex: /&(euro|#8364);/g, val: \"€\" },\n \"copyright\": { regex: /&(copy|#169);/g, val: \"©\" },\n \"reg\": { regex: /&(reg|#174);/g, val: \"®\" },\n \"inr\": { regex: /&(inr|#8377);/g, val: \"₹\" },\n \"num_dec\": { regex: /&#([0-9]{1,7});/g, val: (_, str) => String.fromCharCode(Number.parseInt(str, 10)) },\n \"num_hex\": { regex: /&#x([0-9a-fA-F]{1,6});/g, val: (_, str) => String.fromCharCode(Number.parseInt(str, 16)) }\n };\n this.addExternalEntities = addExternalEntities;\n this.parseXml = parseXml;\n this.parseTextData = parseTextData;\n this.resolveNameSpace = resolveNameSpace;\n this.buildAttributesMap = buildAttributesMap;\n this.isItStopNode = isItStopNode;\n this.replaceEntitiesValue = replaceEntitiesValue;\n this.readStopNodeData = readStopNodeData;\n this.saveTextToParentTag = saveTextToParentTag;\n this.addChild = addChild;\n this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes);\n }\n }\n function addExternalEntities(externalEntities) {\n const entKeys = Object.keys(externalEntities);\n for (let i2 = 0; i2 < entKeys.length; i2++) {\n const ent = entKeys[i2];\n this.lastEntities[ent] = {\n regex: new RegExp(\"&\" + ent + \";\", \"g\"),\n val: externalEntities[ent]\n };\n }\n }\n function parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n if (val !== void 0) {\n if (this.options.trimValues && !dontTrim) {\n val = val.trim();\n }\n if (val.length > 0) {\n if (!escapeEntities) val = this.replaceEntitiesValue(val);\n const newval = this.options.tagValueProcessor(tagName, val, jPath, hasAttributes, isLeafNode);\n if (newval === null || newval === void 0) {\n return val;\n } else if (typeof newval !== typeof val || newval !== val) {\n return newval;\n } else if (this.options.trimValues) {\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n } else {\n const trimmedVal = val.trim();\n if (trimmedVal === val) {\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n } else {\n return val;\n }\n }\n }\n }\n }\n function resolveNameSpace(tagname) {\n if (this.options.removeNSPrefix) {\n const tags = tagname.split(\":\");\n const prefix = tagname.charAt(0) === \"/\" ? \"/\" : \"\";\n if (tags[0] === \"xmlns\") {\n return \"\";\n }\n if (tags.length === 2) {\n tagname = prefix + tags[1];\n }\n }\n return tagname;\n }\n const attrsRegx = new RegExp(`([^\\\\s=]+)\\\\s*(=\\\\s*(['\"])([\\\\s\\\\S]*?)\\\\3)?`, \"gm\");\n function buildAttributesMap(attrStr, jPath, tagName) {\n if (this.options.ignoreAttributes !== true && typeof attrStr === \"string\") {\n const matches = util2.getAllMatches(attrStr, attrsRegx);\n const len = matches.length;\n const attrs = {};\n for (let i2 = 0; i2 < len; i2++) {\n const attrName = this.resolveNameSpace(matches[i2][1]);\n if (this.ignoreAttributesFn(attrName, jPath)) {\n continue;\n }\n let oldVal = matches[i2][4];\n let aName = this.options.attributeNamePrefix + attrName;\n if (attrName.length) {\n if (this.options.transformAttributeName) {\n aName = this.options.transformAttributeName(aName);\n }\n if (aName === \"__proto__\") aName = \"#__proto__\";\n if (oldVal !== void 0) {\n if (this.options.trimValues) {\n oldVal = oldVal.trim();\n }\n oldVal = this.replaceEntitiesValue(oldVal);\n const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath);\n if (newVal === null || newVal === void 0) {\n attrs[aName] = oldVal;\n } else if (typeof newVal !== typeof oldVal || newVal !== oldVal) {\n attrs[aName] = newVal;\n } else {\n attrs[aName] = parseValue(\n oldVal,\n this.options.parseAttributeValue,\n this.options.numberParseOptions\n );\n }\n } else if (this.options.allowBooleanAttributes) {\n attrs[aName] = true;\n }\n }\n }\n if (!Object.keys(attrs).length) {\n return;\n }\n if (this.options.attributesGroupName) {\n const attrCollection = {};\n attrCollection[this.options.attributesGroupName] = attrs;\n return attrCollection;\n }\n return attrs;\n }\n }\n const parseXml = function(xmlData) {\n xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\");\n const xmlObj = new xmlNode2(\"!xml\");\n let currentNode = xmlObj;\n let textData = \"\";\n let jPath = \"\";\n for (let i2 = 0; i2 < xmlData.length; i2++) {\n const ch = xmlData[i2];\n if (ch === \"<\") {\n if (xmlData[i2 + 1] === \"/\") {\n const closeIndex = findClosingIndex(xmlData, \">\", i2, \"Closing Tag is not closed.\");\n let tagName = xmlData.substring(i2 + 2, closeIndex).trim();\n if (this.options.removeNSPrefix) {\n const colonIndex = tagName.indexOf(\":\");\n if (colonIndex !== -1) {\n tagName = tagName.substr(colonIndex + 1);\n }\n }\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n if (currentNode) {\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n }\n const lastTagName = jPath.substring(jPath.lastIndexOf(\".\") + 1);\n if (tagName && this.options.unpairedTags.indexOf(tagName) !== -1) {\n throw new Error(`Unpaired tag can not be used as closing tag: </${tagName}>`);\n }\n let propIndex = 0;\n if (lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1) {\n propIndex = jPath.lastIndexOf(\".\", jPath.lastIndexOf(\".\") - 1);\n this.tagsNodeStack.pop();\n } else {\n propIndex = jPath.lastIndexOf(\".\");\n }\n jPath = jPath.substring(0, propIndex);\n currentNode = this.tagsNodeStack.pop();\n textData = \"\";\n i2 = closeIndex;\n } else if (xmlData[i2 + 1] === \"?\") {\n let tagData = readTagExp(xmlData, i2, false, \"?>\");\n if (!tagData) throw new Error(\"Pi Tag is not closed.\");\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n if (this.options.ignoreDeclaration && tagData.tagName === \"?xml\" || this.options.ignorePiTags) ;\n else {\n const childNode = new xmlNode2(tagData.tagName);\n childNode.add(this.options.textNodeName, \"\");\n if (tagData.tagName !== tagData.tagExp && tagData.attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, jPath, tagData.tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n }\n i2 = tagData.closeIndex + 1;\n } else if (xmlData.substr(i2 + 1, 3) === \"!--\") {\n const endIndex = findClosingIndex(xmlData, \"-->\", i2 + 4, \"Comment is not closed.\");\n if (this.options.commentPropName) {\n const comment = xmlData.substring(i2 + 4, endIndex - 2);\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n currentNode.add(this.options.commentPropName, [{ [this.options.textNodeName]: comment }]);\n }\n i2 = endIndex;\n } else if (xmlData.substr(i2 + 1, 2) === \"!D\") {\n const result = readDocType(xmlData, i2);\n this.docTypeEntities = result.entities;\n i2 = result.i;\n } else if (xmlData.substr(i2 + 1, 2) === \"![\") {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i2, \"CDATA is not closed.\") - 2;\n const tagExp = xmlData.substring(i2 + 9, closeIndex);\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n let val = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true, true);\n if (val == void 0) val = \"\";\n if (this.options.cdataPropName) {\n currentNode.add(this.options.cdataPropName, [{ [this.options.textNodeName]: tagExp }]);\n } else {\n currentNode.add(this.options.textNodeName, val);\n }\n i2 = closeIndex + 2;\n } else {\n let result = readTagExp(xmlData, i2, this.options.removeNSPrefix);\n let tagName = result.tagName;\n const rawTagName = result.rawTagName;\n let tagExp = result.tagExp;\n let attrExpPresent = result.attrExpPresent;\n let closeIndex = result.closeIndex;\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n if (currentNode && textData) {\n if (currentNode.tagname !== \"!xml\") {\n textData = this.saveTextToParentTag(textData, currentNode, jPath, false);\n }\n }\n const lastTag = currentNode;\n if (lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1) {\n currentNode = this.tagsNodeStack.pop();\n jPath = jPath.substring(0, jPath.lastIndexOf(\".\"));\n }\n if (tagName !== xmlObj.tagname) {\n jPath += jPath ? \".\" + tagName : tagName;\n }\n if (this.isItStopNode(this.options.stopNodes, jPath, tagName)) {\n let tagContent = \"\";\n if (tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1) {\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n } else {\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n i2 = result.closeIndex;\n } else if (this.options.unpairedTags.indexOf(tagName) !== -1) {\n i2 = result.closeIndex;\n } else {\n const result2 = this.readStopNodeData(xmlData, rawTagName, closeIndex + 1);\n if (!result2) throw new Error(`Unexpected end of ${rawTagName}`);\n i2 = result2.i;\n tagContent = result2.tagContent;\n }\n const childNode = new xmlNode2(tagName);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n if (tagContent) {\n tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true);\n }\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n childNode.add(this.options.textNodeName, tagContent);\n this.addChild(currentNode, childNode, jPath);\n } else {\n if (tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1) {\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n } else {\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n const childNode = new xmlNode2(tagName);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n } else {\n const childNode = new xmlNode2(tagName);\n this.tagsNodeStack.push(currentNode);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n currentNode = childNode;\n }\n textData = \"\";\n i2 = closeIndex;\n }\n }\n } else {\n textData += xmlData[i2];\n }\n }\n return xmlObj.child;\n };\n function addChild(currentNode, childNode, jPath) {\n const result = this.options.updateTag(childNode.tagname, jPath, childNode[\":@\"]);\n if (result === false) ;\n else if (typeof result === \"string\") {\n childNode.tagname = result;\n currentNode.addChild(childNode);\n } else {\n currentNode.addChild(childNode);\n }\n }\n const replaceEntitiesValue = function(val) {\n if (this.options.processEntities) {\n for (let entityName in this.docTypeEntities) {\n const entity = this.docTypeEntities[entityName];\n val = val.replace(entity.regx, entity.val);\n }\n for (let entityName in this.lastEntities) {\n const entity = this.lastEntities[entityName];\n val = val.replace(entity.regex, entity.val);\n }\n if (this.options.htmlEntities) {\n for (let entityName in this.htmlEntities) {\n const entity = this.htmlEntities[entityName];\n val = val.replace(entity.regex, entity.val);\n }\n }\n val = val.replace(this.ampEntity.regex, this.ampEntity.val);\n }\n return val;\n };\n function saveTextToParentTag(textData, currentNode, jPath, isLeafNode) {\n if (textData) {\n if (isLeafNode === void 0) isLeafNode = Object.keys(currentNode.child).length === 0;\n textData = this.parseTextData(\n textData,\n currentNode.tagname,\n jPath,\n false,\n currentNode[\":@\"] ? Object.keys(currentNode[\":@\"]).length !== 0 : false,\n isLeafNode\n );\n if (textData !== void 0 && textData !== \"\")\n currentNode.add(this.options.textNodeName, textData);\n textData = \"\";\n }\n return textData;\n }\n function isItStopNode(stopNodes, jPath, currentTagName) {\n const allNodesExp = \"*.\" + currentTagName;\n for (const stopNodePath in stopNodes) {\n const stopNodeExp = stopNodes[stopNodePath];\n if (allNodesExp === stopNodeExp || jPath === stopNodeExp) return true;\n }\n return false;\n }\n function tagExpWithClosingIndex(xmlData, i2, closingChar = \">\") {\n let attrBoundary;\n let tagExp = \"\";\n for (let index = i2; index < xmlData.length; index++) {\n let ch = xmlData[index];\n if (attrBoundary) {\n if (ch === attrBoundary) attrBoundary = \"\";\n } else if (ch === '\"' || ch === \"'\") {\n attrBoundary = ch;\n } else if (ch === closingChar[0]) {\n if (closingChar[1]) {\n if (xmlData[index + 1] === closingChar[1]) {\n return {\n data: tagExp,\n index\n };\n }\n } else {\n return {\n data: tagExp,\n index\n };\n }\n } else if (ch === \"\t\") {\n ch = \" \";\n }\n tagExp += ch;\n }\n }\n function findClosingIndex(xmlData, str, i2, errMsg) {\n const closingIndex = xmlData.indexOf(str, i2);\n if (closingIndex === -1) {\n throw new Error(errMsg);\n } else {\n return closingIndex + str.length - 1;\n }\n }\n function readTagExp(xmlData, i2, removeNSPrefix, closingChar = \">\") {\n const result = tagExpWithClosingIndex(xmlData, i2 + 1, closingChar);\n if (!result) return;\n let tagExp = result.data;\n const closeIndex = result.index;\n const separatorIndex = tagExp.search(/\\s/);\n let tagName = tagExp;\n let attrExpPresent = true;\n if (separatorIndex !== -1) {\n tagName = tagExp.substring(0, separatorIndex);\n tagExp = tagExp.substring(separatorIndex + 1).trimStart();\n }\n const rawTagName = tagName;\n if (removeNSPrefix) {\n const colonIndex = tagName.indexOf(\":\");\n if (colonIndex !== -1) {\n tagName = tagName.substr(colonIndex + 1);\n attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n }\n }\n return {\n tagName,\n tagExp,\n closeIndex,\n attrExpPresent,\n rawTagName\n };\n }\n function readStopNodeData(xmlData, tagName, i2) {\n const startIndex = i2;\n let openTagCount = 1;\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\") {\n if (xmlData[i2 + 1] === \"/\") {\n const closeIndex = findClosingIndex(xmlData, \">\", i2, `${tagName} is not closed`);\n let closeTagName = xmlData.substring(i2 + 2, closeIndex).trim();\n if (closeTagName === tagName) {\n openTagCount--;\n if (openTagCount === 0) {\n return {\n tagContent: xmlData.substring(startIndex, i2),\n i: closeIndex\n };\n }\n }\n i2 = closeIndex;\n } else if (xmlData[i2 + 1] === \"?\") {\n const closeIndex = findClosingIndex(xmlData, \"?>\", i2 + 1, \"StopNode is not closed.\");\n i2 = closeIndex;\n } else if (xmlData.substr(i2 + 1, 3) === \"!--\") {\n const closeIndex = findClosingIndex(xmlData, \"-->\", i2 + 3, \"StopNode is not closed.\");\n i2 = closeIndex;\n } else if (xmlData.substr(i2 + 1, 2) === \"![\") {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i2, \"StopNode is not closed.\") - 2;\n i2 = closeIndex;\n } else {\n const tagData = readTagExp(xmlData, i2, \">\");\n if (tagData) {\n const openTagName = tagData && tagData.tagName;\n if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length - 1] !== \"/\") {\n openTagCount++;\n }\n i2 = tagData.closeIndex;\n }\n }\n }\n }\n }\n function parseValue(val, shouldParse, options) {\n if (shouldParse && typeof val === \"string\") {\n const newval = val.trim();\n if (newval === \"true\") return true;\n else if (newval === \"false\") return false;\n else return toNumber(val, options);\n } else {\n if (util2.isExist(val)) {\n return val;\n } else {\n return \"\";\n }\n }\n }\n OrderedObjParser_1 = OrderedObjParser;\n return OrderedObjParser_1;\n}\nvar node2json = {};\nvar hasRequiredNode2json;\nfunction requireNode2json() {\n if (hasRequiredNode2json) return node2json;\n hasRequiredNode2json = 1;\n function prettify(node, options) {\n return compress(node, options);\n }\n function compress(arr, options, jPath) {\n let text;\n const compressedObj = {};\n for (let i2 = 0; i2 < arr.length; i2++) {\n const tagObj = arr[i2];\n const property = propName(tagObj);\n let newJpath = \"\";\n if (jPath === void 0) newJpath = property;\n else newJpath = jPath + \".\" + property;\n if (property === options.textNodeName) {\n if (text === void 0) text = tagObj[property];\n else text += \"\" + tagObj[property];\n } else if (property === void 0) {\n continue;\n } else if (tagObj[property]) {\n let val = compress(tagObj[property], options, newJpath);\n const isLeaf = isLeafTag(val, options);\n if (tagObj[\":@\"]) {\n assignAttributes(val, tagObj[\":@\"], newJpath, options);\n } else if (Object.keys(val).length === 1 && val[options.textNodeName] !== void 0 && !options.alwaysCreateTextNode) {\n val = val[options.textNodeName];\n } else if (Object.keys(val).length === 0) {\n if (options.alwaysCreateTextNode) val[options.textNodeName] = \"\";\n else val = \"\";\n }\n if (compressedObj[property] !== void 0 && compressedObj.hasOwnProperty(property)) {\n if (!Array.isArray(compressedObj[property])) {\n compressedObj[property] = [compressedObj[property]];\n }\n compressedObj[property].push(val);\n } else {\n if (options.isArray(property, newJpath, isLeaf)) {\n compressedObj[property] = [val];\n } else {\n compressedObj[property] = val;\n }\n }\n }\n }\n if (typeof text === \"string\") {\n if (text.length > 0) compressedObj[options.textNodeName] = text;\n } else if (text !== void 0) compressedObj[options.textNodeName] = text;\n return compressedObj;\n }\n function propName(obj) {\n const keys = Object.keys(obj);\n for (let i2 = 0; i2 < keys.length; i2++) {\n const key = keys[i2];\n if (key !== \":@\") return key;\n }\n }\n function assignAttributes(obj, attrMap, jpath, options) {\n if (attrMap) {\n const keys = Object.keys(attrMap);\n const len = keys.length;\n for (let i2 = 0; i2 < len; i2++) {\n const atrrName = keys[i2];\n if (options.isArray(atrrName, jpath + \".\" + atrrName, true, true)) {\n obj[atrrName] = [attrMap[atrrName]];\n } else {\n obj[atrrName] = attrMap[atrrName];\n }\n }\n }\n }\n function isLeafTag(obj, options) {\n const { textNodeName } = options;\n const propCount = Object.keys(obj).length;\n if (propCount === 0) {\n return true;\n }\n if (propCount === 1 && (obj[textNodeName] || typeof obj[textNodeName] === \"boolean\" || obj[textNodeName] === 0)) {\n return true;\n }\n return false;\n }\n node2json.prettify = prettify;\n return node2json;\n}\nvar XMLParser_1;\nvar hasRequiredXMLParser;\nfunction requireXMLParser() {\n if (hasRequiredXMLParser) return XMLParser_1;\n hasRequiredXMLParser = 1;\n const { buildOptions } = requireOptionsBuilder();\n const OrderedObjParser = requireOrderedObjParser();\n const { prettify } = requireNode2json();\n const validator2 = requireValidator();\n class XMLParser {\n constructor(options) {\n this.externalEntities = {};\n this.options = buildOptions(options);\n }\n /**\n * Parse XML dats to JS object \n * @param {string|Buffer} xmlData \n * @param {boolean|Object} validationOption \n */\n parse(xmlData, validationOption) {\n if (typeof xmlData === \"string\") ;\n else if (xmlData.toString) {\n xmlData = xmlData.toString();\n } else {\n throw new Error(\"XML data is accepted in String or Bytes[] form.\");\n }\n if (validationOption) {\n if (validationOption === true) validationOption = {};\n const result = validator2.validate(xmlData, validationOption);\n if (result !== true) {\n throw Error(`${result.err.msg}:${result.err.line}:${result.err.col}`);\n }\n }\n const orderedObjParser = new OrderedObjParser(this.options);\n orderedObjParser.addExternalEntities(this.externalEntities);\n const orderedResult = orderedObjParser.parseXml(xmlData);\n if (this.options.preserveOrder || orderedResult === void 0) return orderedResult;\n else return prettify(orderedResult, this.options);\n }\n /**\n * Add Entity which is not by default supported by this library\n * @param {string} key \n * @param {string} value \n */\n addEntity(key, value) {\n if (value.indexOf(\"&\") !== -1) {\n throw new Error(\"Entity value can't have '&'\");\n } else if (key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1) {\n throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for '
'\");\n } else if (value === \"&\") {\n throw new Error(\"An entity with value '&' is not permitted\");\n } else {\n this.externalEntities[key] = value;\n }\n }\n }\n XMLParser_1 = XMLParser;\n return XMLParser_1;\n}\nvar orderedJs2Xml;\nvar hasRequiredOrderedJs2Xml;\nfunction requireOrderedJs2Xml() {\n if (hasRequiredOrderedJs2Xml) return orderedJs2Xml;\n hasRequiredOrderedJs2Xml = 1;\n const EOL = \"\\n\";\n function toXml(jArray, options) {\n let indentation = \"\";\n if (options.format && options.indentBy.length > 0) {\n indentation = EOL;\n }\n return arrToStr(jArray, options, \"\", indentation);\n }\n function arrToStr(arr, options, jPath, indentation) {\n let xmlStr = \"\";\n let isPreviousElementTag = false;\n for (let i2 = 0; i2 < arr.length; i2++) {\n const tagObj = arr[i2];\n const tagName = propName(tagObj);\n if (tagName === void 0) continue;\n let newJPath = \"\";\n if (jPath.length === 0) newJPath = tagName;\n else newJPath = `${jPath}.${tagName}`;\n if (tagName === options.textNodeName) {\n let tagText = tagObj[tagName];\n if (!isStopNode(newJPath, options)) {\n tagText = options.tagValueProcessor(tagName, tagText);\n tagText = replaceEntitiesValue(tagText, options);\n }\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += tagText;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.cdataPropName) {\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += `<![CDATA[${tagObj[tagName][0][options.textNodeName]}]]>`;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.commentPropName) {\n xmlStr += indentation + `<!--${tagObj[tagName][0][options.textNodeName]}-->`;\n isPreviousElementTag = true;\n continue;\n } else if (tagName[0] === \"?\") {\n const attStr2 = attr_to_str(tagObj[\":@\"], options);\n const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\";\n xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr2}?>`;\n isPreviousElementTag = true;\n continue;\n }\n let newIdentation = indentation;\n if (newIdentation !== \"\") {\n newIdentation += options.indentBy;\n }\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tagStart = indentation + `<${tagName}${attStr}`;\n const tagValue = arrToStr(tagObj[tagName], options, newJPath, newIdentation);\n if (options.unpairedTags.indexOf(tagName) !== -1) {\n if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n else xmlStr += tagStart + \"/>\";\n } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n xmlStr += tagStart + \"/>\";\n } else if (tagValue && tagValue.endsWith(\">\")) {\n xmlStr += tagStart + `>${tagValue}${indentation}</${tagName}>`;\n } else {\n xmlStr += tagStart + \">\";\n if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"</\"))) {\n xmlStr += indentation + options.indentBy + tagValue + indentation;\n } else {\n xmlStr += tagValue;\n }\n xmlStr += `</${tagName}>`;\n }\n isPreviousElementTag = true;\n }\n return xmlStr;\n }\n function propName(obj) {\n const keys = Object.keys(obj);\n for (let i2 = 0; i2 < keys.length; i2++) {\n const key = keys[i2];\n if (!obj.hasOwnProperty(key)) continue;\n if (key !== \":@\") return key;\n }\n }\n function attr_to_str(attrMap, options) {\n let attrStr = \"\";\n if (attrMap && !options.ignoreAttributes) {\n for (let attr in attrMap) {\n if (!attrMap.hasOwnProperty(attr)) continue;\n let attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n attrVal = replaceEntitiesValue(attrVal, options);\n if (attrVal === true && options.suppressBooleanAttributes) {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n } else {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n }\n }\n }\n return attrStr;\n }\n function isStopNode(jPath, options) {\n jPath = jPath.substr(0, jPath.length - options.textNodeName.length - 1);\n let tagName = jPath.substr(jPath.lastIndexOf(\".\") + 1);\n for (let index in options.stopNodes) {\n if (options.stopNodes[index] === jPath || options.stopNodes[index] === \"*.\" + tagName) return true;\n }\n return false;\n }\n function replaceEntitiesValue(textValue, options) {\n if (textValue && textValue.length > 0 && options.processEntities) {\n for (let i2 = 0; i2 < options.entities.length; i2++) {\n const entity = options.entities[i2];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n }\n orderedJs2Xml = toXml;\n return orderedJs2Xml;\n}\nvar json2xml;\nvar hasRequiredJson2xml;\nfunction requireJson2xml() {\n if (hasRequiredJson2xml) return json2xml;\n hasRequiredJson2xml = 1;\n const buildFromOrderedJs = requireOrderedJs2Xml();\n const getIgnoreAttributesFn = requireIgnoreAttributes();\n const defaultOptions = {\n attributeNamePrefix: \"@_\",\n attributesGroupName: false,\n textNodeName: \"#text\",\n ignoreAttributes: true,\n cdataPropName: false,\n format: false,\n indentBy: \" \",\n suppressEmptyNode: false,\n suppressUnpairedNode: true,\n suppressBooleanAttributes: true,\n tagValueProcessor: function(key, a2) {\n return a2;\n },\n attributeValueProcessor: function(attrName, a2) {\n return a2;\n },\n preserveOrder: false,\n commentPropName: false,\n unpairedTags: [],\n entities: [\n { regex: new RegExp(\"&\", \"g\"), val: \"&\" },\n //it must be on top\n { regex: new RegExp(\">\", \"g\"), val: \">\" },\n { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n { regex: new RegExp(\"'\", \"g\"), val: \"'\" },\n { regex: new RegExp('\"', \"g\"), val: \""\" }\n ],\n processEntities: true,\n stopNodes: [],\n // transformTagName: false,\n // transformAttributeName: false,\n oneListGroup: false\n };\n function Builder(options) {\n this.options = Object.assign({}, defaultOptions, options);\n if (this.options.ignoreAttributes === true || this.options.attributesGroupName) {\n this.isAttribute = function() {\n return false;\n };\n } else {\n this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes);\n this.attrPrefixLen = this.options.attributeNamePrefix.length;\n this.isAttribute = isAttribute;\n }\n this.processTextOrObjNode = processTextOrObjNode;\n if (this.options.format) {\n this.indentate = indentate;\n this.tagEndChar = \">\\n\";\n this.newLine = \"\\n\";\n } else {\n this.indentate = function() {\n return \"\";\n };\n this.tagEndChar = \">\";\n this.newLine = \"\";\n }\n }\n Builder.prototype.build = function(jObj) {\n if (this.options.preserveOrder) {\n return buildFromOrderedJs(jObj, this.options);\n } else {\n if (Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1) {\n jObj = {\n [this.options.arrayNodeName]: jObj\n };\n }\n return this.j2x(jObj, 0, []).val;\n }\n };\n Builder.prototype.j2x = function(jObj, level, ajPath) {\n let attrStr = \"\";\n let val = \"\";\n const jPath = ajPath.join(\".\");\n for (let key in jObj) {\n if (!Object.prototype.hasOwnProperty.call(jObj, key)) continue;\n if (typeof jObj[key] === \"undefined\") {\n if (this.isAttribute(key)) {\n val += \"\";\n }\n } else if (jObj[key] === null) {\n if (this.isAttribute(key)) {\n val += \"\";\n } else if (key[0] === \"?\") {\n val += this.indentate(level) + \"<\" + key + \"?\" + this.tagEndChar;\n } else {\n val += this.indentate(level) + \"<\" + key + \"/\" + this.tagEndChar;\n }\n } else if (jObj[key] instanceof Date) {\n val += this.buildTextValNode(jObj[key], key, \"\", level);\n } else if (typeof jObj[key] !== \"object\") {\n const attr = this.isAttribute(key);\n if (attr && !this.ignoreAttributesFn(attr, jPath)) {\n attrStr += this.buildAttrPairStr(attr, \"\" + jObj[key]);\n } else if (!attr) {\n if (key === this.options.textNodeName) {\n let newval = this.options.tagValueProcessor(key, \"\" + jObj[key]);\n val += this.replaceEntitiesValue(newval);\n } else {\n val += this.buildTextValNode(jObj[key], key, \"\", level);\n }\n }\n } else if (Array.isArray(jObj[key])) {\n const arrLen = jObj[key].length;\n let listTagVal = \"\";\n let listTagAttr = \"\";\n for (let j2 = 0; j2 < arrLen; j2++) {\n const item = jObj[key][j2];\n if (typeof item === \"undefined\") ;\n else if (item === null) {\n if (key[0] === \"?\") val += this.indentate(level) + \"<\" + key + \"?\" + this.tagEndChar;\n else val += this.indentate(level) + \"<\" + key + \"/\" + this.tagEndChar;\n } else if (typeof item === \"object\") {\n if (this.options.oneListGroup) {\n const result = this.j2x(item, level + 1, ajPath.concat(key));\n listTagVal += result.val;\n if (this.options.attributesGroupName && item.hasOwnProperty(this.options.attributesGroupName)) {\n listTagAttr += result.attrStr;\n }\n } else {\n listTagVal += this.processTextOrObjNode(item, key, level, ajPath);\n }\n } else {\n if (this.options.oneListGroup) {\n let textValue = this.options.tagValueProcessor(key, item);\n textValue = this.replaceEntitiesValue(textValue);\n listTagVal += textValue;\n } else {\n listTagVal += this.buildTextValNode(item, key, \"\", level);\n }\n }\n }\n if (this.options.oneListGroup) {\n listTagVal = this.buildObjectNode(listTagVal, key, listTagAttr, level);\n }\n val += listTagVal;\n } else {\n if (this.options.attributesGroupName && key === this.options.attributesGroupName) {\n const Ks = Object.keys(jObj[key]);\n const L = Ks.length;\n for (let j2 = 0; j2 < L; j2++) {\n attrStr += this.buildAttrPairStr(Ks[j2], \"\" + jObj[key][Ks[j2]]);\n }\n } else {\n val += this.processTextOrObjNode(jObj[key], key, level, ajPath);\n }\n }\n }\n return { attrStr, val };\n };\n Builder.prototype.buildAttrPairStr = function(attrName, val) {\n val = this.options.attributeValueProcessor(attrName, \"\" + val);\n val = this.replaceEntitiesValue(val);\n if (this.options.suppressBooleanAttributes && val === \"true\") {\n return \" \" + attrName;\n } else return \" \" + attrName + '=\"' + val + '\"';\n };\n function processTextOrObjNode(object, key, level, ajPath) {\n const result = this.j2x(object, level + 1, ajPath.concat(key));\n if (object[this.options.textNodeName] !== void 0 && Object.keys(object).length === 1) {\n return this.buildTextValNode(object[this.options.textNodeName], key, result.attrStr, level);\n } else {\n return this.buildObjectNode(result.val, key, result.attrStr, level);\n }\n }\n Builder.prototype.buildObjectNode = function(val, key, attrStr, level) {\n if (val === \"\") {\n if (key[0] === \"?\") return this.indentate(level) + \"<\" + key + attrStr + \"?\" + this.tagEndChar;\n else {\n return this.indentate(level) + \"<\" + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }\n } else {\n let tagEndExp = \"</\" + key + this.tagEndChar;\n let piClosingChar = \"\";\n if (key[0] === \"?\") {\n piClosingChar = \"?\";\n tagEndExp = \"\";\n }\n if ((attrStr || attrStr === \"\") && val.indexOf(\"<\") === -1) {\n return this.indentate(level) + \"<\" + key + attrStr + piClosingChar + \">\" + val + tagEndExp;\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n return this.indentate(level) + `<!--${val}-->` + this.newLine;\n } else {\n return this.indentate(level) + \"<\" + key + attrStr + piClosingChar + this.tagEndChar + val + this.indentate(level) + tagEndExp;\n }\n }\n };\n Builder.prototype.closeTag = function(key) {\n let closeTag = \"\";\n if (this.options.unpairedTags.indexOf(key) !== -1) {\n if (!this.options.suppressUnpairedNode) closeTag = \"/\";\n } else if (this.options.suppressEmptyNode) {\n closeTag = \"/\";\n } else {\n closeTag = `></${key}`;\n }\n return closeTag;\n };\n Builder.prototype.buildTextValNode = function(val, key, attrStr, level) {\n if (this.options.cdataPropName !== false && key === this.options.cdataPropName) {\n return this.indentate(level) + `<![CDATA[${val}]]>` + this.newLine;\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n return this.indentate(level) + `<!--${val}-->` + this.newLine;\n } else if (key[0] === \"?\") {\n return this.indentate(level) + \"<\" + key + attrStr + \"?\" + this.tagEndChar;\n } else {\n let textValue = this.options.tagValueProcessor(key, val);\n textValue = this.replaceEntitiesValue(textValue);\n if (textValue === \"\") {\n return this.indentate(level) + \"<\" + key + attrStr + this.closeTag(key) + this.tagEndChar;\n } else {\n return this.indentate(level) + \"<\" + key + attrStr + \">\" + textValue + \"</\" + key + this.tagEndChar;\n }\n }\n };\n Builder.prototype.replaceEntitiesValue = function(textValue) {\n if (textValue && textValue.length > 0 && this.options.processEntities) {\n for (let i2 = 0; i2 < this.options.entities.length; i2++) {\n const entity = this.options.entities[i2];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n };\n function indentate(level) {\n return this.options.indentBy.repeat(level);\n }\n function isAttribute(name) {\n if (name.startsWith(this.options.attributeNamePrefix) && name !== this.options.textNodeName) {\n return name.substr(this.attrPrefixLen);\n } else {\n return false;\n }\n }\n json2xml = Builder;\n return json2xml;\n}\nvar fxp;\nvar hasRequiredFxp;\nfunction requireFxp() {\n if (hasRequiredFxp) return fxp;\n hasRequiredFxp = 1;\n const validator2 = requireValidator();\n const XMLParser = requireXMLParser();\n const XMLBuilder = requireJson2xml();\n fxp = {\n XMLParser,\n XMLValidator: validator2,\n XMLBuilder\n };\n return fxp;\n}\nvar fxpExports = requireFxp();\nfunction isSvg(string) {\n if (typeof string !== \"string\") {\n throw new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n }\n string = string.trim();\n if (string.length === 0) {\n return false;\n }\n if (fxpExports.XMLValidator.validate(string) !== true) {\n return false;\n }\n let jsonObject;\n const parser = new fxpExports.XMLParser();\n try {\n jsonObject = parser.parse(string);\n } catch {\n return false;\n }\n if (!jsonObject) {\n return false;\n }\n if (!Object.keys(jsonObject).some((x) => x.toLowerCase() === \"svg\")) {\n return false;\n }\n return true;\n}\nclass View {\n _view;\n constructor(view) {\n isValidView(view);\n this._view = view;\n }\n get id() {\n return this._view.id;\n }\n get name() {\n return this._view.name;\n }\n get caption() {\n return this._view.caption;\n }\n get emptyTitle() {\n return this._view.emptyTitle;\n }\n get emptyCaption() {\n return this._view.emptyCaption;\n }\n get getContents() {\n return this._view.getContents;\n }\n get icon() {\n return this._view.icon;\n }\n set icon(icon) {\n this._view.icon = icon;\n }\n get order() {\n return this._view.order;\n }\n set order(order) {\n this._view.order = order;\n }\n get params() {\n return this._view.params;\n }\n set params(params) {\n this._view.params = params;\n }\n get columns() {\n return this._view.columns;\n }\n get emptyView() {\n return this._view.emptyView;\n }\n get parent() {\n return this._view.parent;\n }\n get sticky() {\n return this._view.sticky;\n }\n get expanded() {\n return this._view.expanded;\n }\n set expanded(expanded) {\n this._view.expanded = expanded;\n }\n get defaultSortKey() {\n return this._view.defaultSortKey;\n }\n get loadChildViews() {\n return this._view.loadChildViews;\n }\n}\nconst isValidView = function(view) {\n if (!view.id || typeof view.id !== \"string\") {\n throw new Error(\"View id is required and must be a string\");\n }\n if (!view.name || typeof view.name !== \"string\") {\n throw new Error(\"View name is required and must be a string\");\n }\n if (\"caption\" in view && typeof view.caption !== \"string\") {\n throw new Error(\"View caption must be a string\");\n }\n if (!view.getContents || typeof view.getContents !== \"function\") {\n throw new Error(\"View getContents is required and must be a function\");\n }\n if (!view.icon || typeof view.icon !== \"string\" || !isSvg(view.icon)) {\n throw new Error(\"View icon is required and must be a valid svg string\");\n }\n if (\"order\" in view && typeof view.order !== \"number\") {\n throw new Error(\"View order must be a number\");\n }\n if (view.columns) {\n view.columns.forEach((column) => {\n if (!(column instanceof Column)) {\n throw new Error(\"View columns must be an array of Column. Invalid column found\");\n }\n });\n }\n if (view.emptyView && typeof view.emptyView !== \"function\") {\n throw new Error(\"View emptyView must be a function\");\n }\n if (view.parent && typeof view.parent !== \"string\") {\n throw new Error(\"View parent must be a string\");\n }\n if (\"sticky\" in view && typeof view.sticky !== \"boolean\") {\n throw new Error(\"View sticky must be a boolean\");\n }\n if (\"expanded\" in view && typeof view.expanded !== \"boolean\") {\n throw new Error(\"View expanded must be a boolean\");\n }\n if (view.defaultSortKey && typeof view.defaultSortKey !== \"string\") {\n throw new Error(\"View defaultSortKey must be a string\");\n }\n if (view.loadChildViews && typeof view.loadChildViews !== \"function\") {\n throw new Error(\"View loadChildViews must be a function\");\n }\n return true;\n};\nvar debug_1;\nvar hasRequiredDebug;\nfunction requireDebug() {\n if (hasRequiredDebug) return debug_1;\n hasRequiredDebug = 1;\n const debug = typeof process === \"object\" && process.env && process.env.NODE_DEBUG && /\\bsemver\\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error(\"SEMVER\", ...args) : () => {\n };\n debug_1 = debug;\n return debug_1;\n}\nvar constants;\nvar hasRequiredConstants;\nfunction requireConstants() {\n if (hasRequiredConstants) return constants;\n hasRequiredConstants = 1;\n const SEMVER_SPEC_VERSION = \"2.0.0\";\n const MAX_LENGTH = 256;\n const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */\n 9007199254740991;\n const MAX_SAFE_COMPONENT_LENGTH = 16;\n const MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6;\n const RELEASE_TYPES = [\n \"major\",\n \"premajor\",\n \"minor\",\n \"preminor\",\n \"patch\",\n \"prepatch\",\n \"prerelease\"\n ];\n constants = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 1,\n FLAG_LOOSE: 2\n };\n return constants;\n}\nvar re = { exports: {} };\nvar hasRequiredRe;\nfunction requireRe() {\n if (hasRequiredRe) return re.exports;\n hasRequiredRe = 1;\n (function(module, exports) {\n const {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH\n } = requireConstants();\n const debug = requireDebug();\n exports = module.exports = {};\n const re2 = exports.re = [];\n const safeRe = exports.safeRe = [];\n const src = exports.src = [];\n const t2 = exports.t = {};\n let R = 0;\n const LETTERDASHNUMBER = \"[a-zA-Z0-9-]\";\n const safeRegexReplacements = [\n [\"\\\\s\", 1],\n [\"\\\\d\", MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH]\n ];\n const makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value.split(`${token}*`).join(`${token}{0,${max}}`).split(`${token}+`).join(`${token}{1,${max}}`);\n }\n return value;\n };\n const createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value);\n const index = R++;\n debug(name, index, value);\n t2[name] = index;\n src[index] = value;\n re2[index] = new RegExp(value, isGlobal ? \"g\" : void 0);\n safeRe[index] = new RegExp(safe, isGlobal ? \"g\" : void 0);\n };\n createToken(\"NUMERICIDENTIFIER\", \"0|[1-9]\\\\d*\");\n createToken(\"NUMERICIDENTIFIERLOOSE\", \"\\\\d+\");\n createToken(\"NONNUMERICIDENTIFIER\", `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`);\n createToken(\"MAINVERSION\", `(${src[t2.NUMERICIDENTIFIER]})\\\\.(${src[t2.NUMERICIDENTIFIER]})\\\\.(${src[t2.NUMERICIDENTIFIER]})`);\n createToken(\"MAINVERSIONLOOSE\", `(${src[t2.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t2.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t2.NUMERICIDENTIFIERLOOSE]})`);\n createToken(\"PRERELEASEIDENTIFIER\", `(?:${src[t2.NUMERICIDENTIFIER]}|${src[t2.NONNUMERICIDENTIFIER]})`);\n createToken(\"PRERELEASEIDENTIFIERLOOSE\", `(?:${src[t2.NUMERICIDENTIFIERLOOSE]}|${src[t2.NONNUMERICIDENTIFIER]})`);\n createToken(\"PRERELEASE\", `(?:-(${src[t2.PRERELEASEIDENTIFIER]}(?:\\\\.${src[t2.PRERELEASEIDENTIFIER]})*))`);\n createToken(\"PRERELEASELOOSE\", `(?:-?(${src[t2.PRERELEASEIDENTIFIERLOOSE]}(?:\\\\.${src[t2.PRERELEASEIDENTIFIERLOOSE]})*))`);\n createToken(\"BUILDIDENTIFIER\", `${LETTERDASHNUMBER}+`);\n createToken(\"BUILD\", `(?:\\\\+(${src[t2.BUILDIDENTIFIER]}(?:\\\\.${src[t2.BUILDIDENTIFIER]})*))`);\n createToken(\"FULLPLAIN\", `v?${src[t2.MAINVERSION]}${src[t2.PRERELEASE]}?${src[t2.BUILD]}?`);\n createToken(\"FULL\", `^${src[t2.FULLPLAIN]}$`);\n createToken(\"LOOSEPLAIN\", `[v=\\\\s]*${src[t2.MAINVERSIONLOOSE]}${src[t2.PRERELEASELOOSE]}?${src[t2.BUILD]}?`);\n createToken(\"LOOSE\", `^${src[t2.LOOSEPLAIN]}$`);\n createToken(\"GTLT\", \"((?:<|>)?=?)\");\n createToken(\"XRANGEIDENTIFIERLOOSE\", `${src[t2.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`);\n createToken(\"XRANGEIDENTIFIER\", `${src[t2.NUMERICIDENTIFIER]}|x|X|\\\\*`);\n createToken(\"XRANGEPLAIN\", `[v=\\\\s]*(${src[t2.XRANGEIDENTIFIER]})(?:\\\\.(${src[t2.XRANGEIDENTIFIER]})(?:\\\\.(${src[t2.XRANGEIDENTIFIER]})(?:${src[t2.PRERELEASE]})?${src[t2.BUILD]}?)?)?`);\n createToken(\"XRANGEPLAINLOOSE\", `[v=\\\\s]*(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:${src[t2.PRERELEASELOOSE]})?${src[t2.BUILD]}?)?)?`);\n createToken(\"XRANGE\", `^${src[t2.GTLT]}\\\\s*${src[t2.XRANGEPLAIN]}$`);\n createToken(\"XRANGELOOSE\", `^${src[t2.GTLT]}\\\\s*${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"COERCEPLAIN\", `${\"(^|[^\\\\d])(\\\\d{1,\"}${MAX_SAFE_COMPONENT_LENGTH}})(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`);\n createToken(\"COERCE\", `${src[t2.COERCEPLAIN]}(?:$|[^\\\\d])`);\n createToken(\"COERCEFULL\", src[t2.COERCEPLAIN] + `(?:${src[t2.PRERELEASE]})?(?:${src[t2.BUILD]})?(?:$|[^\\\\d])`);\n createToken(\"COERCERTL\", src[t2.COERCE], true);\n createToken(\"COERCERTLFULL\", src[t2.COERCEFULL], true);\n createToken(\"LONETILDE\", \"(?:~>?)\");\n createToken(\"TILDETRIM\", `(\\\\s*)${src[t2.LONETILDE]}\\\\s+`, true);\n exports.tildeTrimReplace = \"$1~\";\n createToken(\"TILDE\", `^${src[t2.LONETILDE]}${src[t2.XRANGEPLAIN]}$`);\n createToken(\"TILDELOOSE\", `^${src[t2.LONETILDE]}${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"LONECARET\", \"(?:\\\\^)\");\n createToken(\"CARETTRIM\", `(\\\\s*)${src[t2.LONECARET]}\\\\s+`, true);\n exports.caretTrimReplace = \"$1^\";\n createToken(\"CARET\", `^${src[t2.LONECARET]}${src[t2.XRANGEPLAIN]}$`);\n createToken(\"CARETLOOSE\", `^${src[t2.LONECARET]}${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"COMPARATORLOOSE\", `^${src[t2.GTLT]}\\\\s*(${src[t2.LOOSEPLAIN]})$|^$`);\n createToken(\"COMPARATOR\", `^${src[t2.GTLT]}\\\\s*(${src[t2.FULLPLAIN]})$|^$`);\n createToken(\"COMPARATORTRIM\", `(\\\\s*)${src[t2.GTLT]}\\\\s*(${src[t2.LOOSEPLAIN]}|${src[t2.XRANGEPLAIN]})`, true);\n exports.comparatorTrimReplace = \"$1$2$3\";\n createToken(\"HYPHENRANGE\", `^\\\\s*(${src[t2.XRANGEPLAIN]})\\\\s+-\\\\s+(${src[t2.XRANGEPLAIN]})\\\\s*$`);\n createToken(\"HYPHENRANGELOOSE\", `^\\\\s*(${src[t2.XRANGEPLAINLOOSE]})\\\\s+-\\\\s+(${src[t2.XRANGEPLAINLOOSE]})\\\\s*$`);\n createToken(\"STAR\", \"(<|>)?=?\\\\s*\\\\*\");\n createToken(\"GTE0\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$\");\n createToken(\"GTE0PRE\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$\");\n })(re, re.exports);\n return re.exports;\n}\nvar parseOptions_1;\nvar hasRequiredParseOptions;\nfunction requireParseOptions() {\n if (hasRequiredParseOptions) return parseOptions_1;\n hasRequiredParseOptions = 1;\n const looseOption = Object.freeze({ loose: true });\n const emptyOpts = Object.freeze({});\n const parseOptions = (options) => {\n if (!options) {\n return emptyOpts;\n }\n if (typeof options !== \"object\") {\n return looseOption;\n }\n return options;\n };\n parseOptions_1 = parseOptions;\n return parseOptions_1;\n}\nvar identifiers;\nvar hasRequiredIdentifiers;\nfunction requireIdentifiers() {\n if (hasRequiredIdentifiers) return identifiers;\n hasRequiredIdentifiers = 1;\n const numeric = /^[0-9]+$/;\n const compareIdentifiers = (a2, b2) => {\n const anum = numeric.test(a2);\n const bnum = numeric.test(b2);\n if (anum && bnum) {\n a2 = +a2;\n b2 = +b2;\n }\n return a2 === b2 ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a2 < b2 ? -1 : 1;\n };\n const rcompareIdentifiers = (a2, b2) => compareIdentifiers(b2, a2);\n identifiers = {\n compareIdentifiers,\n rcompareIdentifiers\n };\n return identifiers;\n}\nvar semver;\nvar hasRequiredSemver;\nfunction requireSemver() {\n if (hasRequiredSemver) return semver;\n hasRequiredSemver = 1;\n const debug = requireDebug();\n const { MAX_LENGTH, MAX_SAFE_INTEGER } = requireConstants();\n const { safeRe: re2, t: t2 } = requireRe();\n const parseOptions = requireParseOptions();\n const { compareIdentifiers } = requireIdentifiers();\n class SemVer {\n constructor(version, options) {\n options = parseOptions(options);\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose && version.includePrerelease === !!options.includePrerelease) {\n return version;\n } else {\n version = version.version;\n }\n } else if (typeof version !== \"string\") {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`);\n }\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n );\n }\n debug(\"SemVer\", version, options);\n this.options = options;\n this.loose = !!options.loose;\n this.includePrerelease = !!options.includePrerelease;\n const m2 = version.trim().match(options.loose ? re2[t2.LOOSE] : re2[t2.FULL]);\n if (!m2) {\n throw new TypeError(`Invalid Version: ${version}`);\n }\n this.raw = version;\n this.major = +m2[1];\n this.minor = +m2[2];\n this.patch = +m2[3];\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError(\"Invalid major version\");\n }\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError(\"Invalid minor version\");\n }\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError(\"Invalid patch version\");\n }\n if (!m2[4]) {\n this.prerelease = [];\n } else {\n this.prerelease = m2[4].split(\".\").map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id;\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num;\n }\n }\n return id;\n });\n }\n this.build = m2[5] ? m2[5].split(\".\") : [];\n this.format();\n }\n format() {\n this.version = `${this.major}.${this.minor}.${this.patch}`;\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join(\".\")}`;\n }\n return this.version;\n }\n toString() {\n return this.version;\n }\n compare(other) {\n debug(\"SemVer.compare\", this.version, this.options, other);\n if (!(other instanceof SemVer)) {\n if (typeof other === \"string\" && other === this.version) {\n return 0;\n }\n other = new SemVer(other, this.options);\n }\n if (other.version === this.version) {\n return 0;\n }\n return this.compareMain(other) || this.comparePre(other);\n }\n compareMain(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch);\n }\n comparePre(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n if (this.prerelease.length && !other.prerelease.length) {\n return -1;\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1;\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0;\n }\n let i2 = 0;\n do {\n const a2 = this.prerelease[i2];\n const b2 = other.prerelease[i2];\n debug(\"prerelease compare\", i2, a2, b2);\n if (a2 === void 0 && b2 === void 0) {\n return 0;\n } else if (b2 === void 0) {\n return 1;\n } else if (a2 === void 0) {\n return -1;\n } else if (a2 === b2) {\n continue;\n } else {\n return compareIdentifiers(a2, b2);\n }\n } while (++i2);\n }\n compareBuild(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n let i2 = 0;\n do {\n const a2 = this.build[i2];\n const b2 = other.build[i2];\n debug(\"build compare\", i2, a2, b2);\n if (a2 === void 0 && b2 === void 0) {\n return 0;\n } else if (b2 === void 0) {\n return 1;\n } else if (a2 === void 0) {\n return -1;\n } else if (a2 === b2) {\n continue;\n } else {\n return compareIdentifiers(a2, b2);\n }\n } while (++i2);\n }\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc(release, identifier, identifierBase) {\n switch (release) {\n case \"premajor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor = 0;\n this.major++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"preminor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"prepatch\":\n this.prerelease.length = 0;\n this.inc(\"patch\", identifier, identifierBase);\n this.inc(\"pre\", identifier, identifierBase);\n break;\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case \"prerelease\":\n if (this.prerelease.length === 0) {\n this.inc(\"patch\", identifier, identifierBase);\n }\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"major\":\n if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {\n this.major++;\n }\n this.minor = 0;\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"minor\":\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++;\n }\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"patch\":\n if (this.prerelease.length === 0) {\n this.patch++;\n }\n this.prerelease = [];\n break;\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case \"pre\": {\n const base = Number(identifierBase) ? 1 : 0;\n if (!identifier && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier is empty\");\n }\n if (this.prerelease.length === 0) {\n this.prerelease = [base];\n } else {\n let i2 = this.prerelease.length;\n while (--i2 >= 0) {\n if (typeof this.prerelease[i2] === \"number\") {\n this.prerelease[i2]++;\n i2 = -2;\n }\n }\n if (i2 === -1) {\n if (identifier === this.prerelease.join(\".\") && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier already exists\");\n }\n this.prerelease.push(base);\n }\n }\n if (identifier) {\n let prerelease = [identifier, base];\n if (identifierBase === false) {\n prerelease = [identifier];\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease;\n }\n } else {\n this.prerelease = prerelease;\n }\n }\n break;\n }\n default:\n throw new Error(`invalid increment argument: ${release}`);\n }\n this.raw = this.format();\n if (this.build.length) {\n this.raw += `+${this.build.join(\".\")}`;\n }\n return this;\n }\n }\n semver = SemVer;\n return semver;\n}\nvar parse_1;\nvar hasRequiredParse;\nfunction requireParse() {\n if (hasRequiredParse) return parse_1;\n hasRequiredParse = 1;\n const SemVer = requireSemver();\n const parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version;\n }\n try {\n return new SemVer(version, options);\n } catch (er) {\n if (!throwErrors) {\n return null;\n }\n throw er;\n }\n };\n parse_1 = parse;\n return parse_1;\n}\nvar valid_1;\nvar hasRequiredValid;\nfunction requireValid() {\n if (hasRequiredValid) return valid_1;\n hasRequiredValid = 1;\n const parse = requireParse();\n const valid2 = (version, options) => {\n const v = parse(version, options);\n return v ? v.version : null;\n };\n valid_1 = valid2;\n return valid_1;\n}\nvar validExports = requireValid();\nconst valid = /* @__PURE__ */ getDefaultExportFromCjs(validExports);\nvar major_1;\nvar hasRequiredMajor;\nfunction requireMajor() {\n if (hasRequiredMajor) return major_1;\n hasRequiredMajor = 1;\n const SemVer = requireSemver();\n const major2 = (a2, loose) => new SemVer(a2, loose).major;\n major_1 = major2;\n return major_1;\n}\nvar majorExports = requireMajor();\nconst major = /* @__PURE__ */ getDefaultExportFromCjs(majorExports);\nclass ProxyBus {\n bus;\n constructor(bus2) {\n if (typeof bus2.getVersion !== \"function\" || !valid(bus2.getVersion())) {\n console.warn(\"Proxying an event bus with an unknown or invalid version\");\n } else if (major(bus2.getVersion()) !== major(this.getVersion())) {\n console.warn(\n \"Proxying an event bus of version \" + bus2.getVersion() + \" with \" + this.getVersion()\n );\n }\n this.bus = bus2;\n }\n getVersion() {\n return \"3.3.1\";\n }\n subscribe(name, handler) {\n this.bus.subscribe(name, handler);\n }\n unsubscribe(name, handler) {\n this.bus.unsubscribe(name, handler);\n }\n emit(name, event) {\n this.bus.emit(name, event);\n }\n}\nclass SimpleBus {\n handlers = /* @__PURE__ */ new Map();\n getVersion() {\n return \"3.3.1\";\n }\n subscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).concat(\n handler\n )\n );\n }\n unsubscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).filter((h2) => h2 !== handler)\n );\n }\n emit(name, event) {\n (this.handlers.get(name) || []).forEach((h2) => {\n try {\n h2(event);\n } catch (e2) {\n console.error(\"could not invoke event listener\", e2);\n }\n });\n }\n}\nlet bus = null;\nfunction getBus() {\n if (bus !== null) {\n return bus;\n }\n if (typeof window === \"undefined\") {\n return new Proxy({}, {\n get: () => {\n return () => console.error(\n \"Window not available, EventBus can not be established!\"\n );\n }\n });\n }\n if (window.OC?._eventBus && typeof window._nc_event_bus === \"undefined\") {\n console.warn(\n \"found old event bus instance at OC._eventBus. Update your version!\"\n );\n window._nc_event_bus = window.OC._eventBus;\n }\n if (typeof window?._nc_event_bus !== \"undefined\") {\n bus = new ProxyBus(window._nc_event_bus);\n } else {\n bus = window._nc_event_bus = new SimpleBus();\n }\n return bus;\n}\nfunction emit(name, event) {\n getBus().emit(name, event);\n}\n/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nclass FileListFilter extends TypedEventTarget {\n id;\n order;\n constructor(id, order = 100) {\n super();\n this.id = id;\n this.order = order;\n }\n filter(nodes) {\n throw new Error(\"Not implemented\");\n }\n updateChips(chips) {\n this.dispatchTypedEvent(\"update:chips\", new CustomEvent(\"update:chips\", { detail: chips }));\n }\n filterUpdated() {\n this.dispatchTypedEvent(\"update:filter\", new CustomEvent(\"update:filter\"));\n }\n}\nfunction registerFileListFilter(filter) {\n if (!window._nc_filelist_filters) {\n window._nc_filelist_filters = /* @__PURE__ */ new Map();\n }\n if (window._nc_filelist_filters.has(filter.id)) {\n throw new Error(`File list filter \"${filter.id}\" already registered`);\n }\n window._nc_filelist_filters.set(filter.id, filter);\n emit(\"files:filter:added\", filter);\n}\nfunction unregisterFileListFilter(filterId) {\n if (window._nc_filelist_filters && window._nc_filelist_filters.has(filterId)) {\n window._nc_filelist_filters.delete(filterId);\n emit(\"files:filter:removed\", filterId);\n }\n}\nfunction getFileListFilters() {\n if (!window._nc_filelist_filters) {\n return [];\n }\n return [...window._nc_filelist_filters.values()];\n}\nconst addNewFileMenuEntry = function(entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.registerEntry(entry);\n};\nconst removeNewFileMenuEntry = function(entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.unregisterEntry(entry);\n};\nconst getNewFileMenuEntries = function(context) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.getEntries(context).sort((a2, b2) => {\n if (a2.order !== void 0 && b2.order !== void 0 && a2.order !== b2.order) {\n return a2.order - b2.order;\n }\n return a2.displayName.localeCompare(b2.displayName, void 0, { numeric: true, sensitivity: \"base\" });\n });\n};\nexport {\n Column,\n DefaultType,\n q as File,\n FileAction,\n FileListAction,\n FileListFilter,\n F as FileType,\n FilesSortingMode,\n s as Folder,\n Header,\n InvalidFilenameError,\n InvalidFilenameErrorReason,\n Navigation,\n NewMenuEntryCategory,\n N as Node,\n t as NodeStatus,\n P as Permission,\n View,\n addNewFileMenuEntry,\n c as davGetClient,\n l as davGetDefaultPropfind,\n m as davGetFavoritesReport,\n n as davGetRecentSearch,\n a as davGetRemoteURL,\n g as davGetRootPath,\n p as davParsePermissions,\n b as davRemoteURL,\n r as davResultToNode,\n d as davRootPath,\n h as defaultDavNamespaces,\n f as defaultDavProperties,\n formatFileSize,\n k as getDavNameSpaces,\n j as getDavProperties,\n e as getFavoriteNodes,\n getFileActions,\n getFileListActions,\n getFileListFilters,\n getFileListHeaders,\n getNavigation,\n getNewFileMenuEntries,\n getUniqueName,\n isFilenameValid,\n orderBy,\n parseFileSize,\n i as registerDavProperty,\n registerFileAction,\n registerFileListAction,\n registerFileListFilter,\n registerFileListHeaders,\n removeNewFileMenuEntry,\n sortNodes,\n unregisterFileListFilter,\n validateFilename\n};\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getLoggerBuilder } from '@nextcloud/logger';\nexport default getLoggerBuilder()\n .setApp('settings')\n .detectUser()\n .build();\n","exports.sync = function (store, router, options) {\n var moduleName = (options || {}).moduleName || 'route'\n\n store.registerModule(moduleName, {\n namespaced: true,\n state: cloneRoute(router.currentRoute),\n mutations: {\n 'ROUTE_CHANGED': function ROUTE_CHANGED (state, transition) {\n store.state[moduleName] = cloneRoute(transition.to, transition.from)\n }\n }\n })\n\n var isTimeTraveling = false\n var currentPath\n\n // sync router on store change\n var storeUnwatch = store.watch(\n function (state) { return state[moduleName]; },\n function (route) {\n var fullPath = route.fullPath;\n if (fullPath === currentPath) {\n return\n }\n if (currentPath != null) {\n isTimeTraveling = true\n router.push(route)\n }\n currentPath = fullPath\n },\n { sync: true }\n )\n\n // sync store on router navigation\n var afterEachUnHook = router.afterEach(function (to, from) {\n if (isTimeTraveling) {\n isTimeTraveling = false\n return\n }\n currentPath = to.fullPath\n store.commit(moduleName + '/ROUTE_CHANGED', { to: to, from: from })\n })\n\n return function unsync () {\n // On unsync, remove router hook\n if (afterEachUnHook != null) {\n afterEachUnHook()\n }\n\n // On unsync, remove store watch\n if (storeUnwatch != null) {\n storeUnwatch()\n }\n\n // On unsync, unregister Module with store\n store.unregisterModule(moduleName)\n }\n}\n\nfunction cloneRoute (to, from) {\n var clone = {\n name: to.name,\n path: to.path,\n hash: to.hash,\n query: to.query,\n params: to.params,\n fullPath: to.fullPath,\n meta: to.meta\n }\n if (from) {\n clone.from = cloneRoute(from)\n }\n return Object.freeze(clone)\n}\n\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__.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 \"\" + ({\"3239\":\"settings-users\",\"4529\":\"settings-apps-view\"}[chunkId] || chunkId) + \"-\" + chunkId + \".js?v=\" + {\"459\":\"975afd1e02f53abf8034\",\"1023\":\"06cf5496a0a2d7ef494a\",\"2441\":\"2c050d23f9070dfa7f03\",\"3239\":\"0828a85406800581fcfe\",\"4529\":\"ab85428fc71ea1124397\",\"5862\":\"142cd48ca8ec32e57725\",\"6227\":\"3494381758c4754ef3f5\",\"7265\":\"3ea08242e475ac7a22e1\",\"8737\":\"1ee3b21131ac8193a04d\"}[chunkId] + \"\";\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 = 2689;","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 && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\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(/^blob:/, \"\").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\t2689: 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}\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, [4208], () => (__webpack_require__(12836)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","sanitize","url","replace","requireAdmin","confirmPassword","get","options","axios","post","data","patch","put","delete","params","_defineComponent","__name","setup","__props","__sfc","NcContent","_vm","this","_c","_self","_setupProxy","attrs","_v","name","path","components","default","UserManagement","navigation","UserManagementNavigation","props","children","redirect","category","loadState","AppStore","AppStoreNavigation","sidebar","AppStoreSidebar","Vue","use","Router","mode","base","generateUrl","linkActiveClass","routes","__webpack_nonce__","getCSPNonce","prototype","t","n","PiniaVuePlugin","VTooltipPlugin","defaultHtml","Vuex","store","useStore","sync","router","pinia","createPinia","render","h","SettingsApp","el","naturalCollator","Intl","Collator","getLanguage","getCanonicalLocale","numeric","usage","usersSettings","localStorage","getBuilder","persist","build","defaults","id","usercount","disabled","canAdd","canRemove","state","users","groups","getSubAdminGroups","systemGroups","orderBy","sortGroups","GroupSorting","UserCount","minPasswordLength","usersOffset","usersLimit","disabledUsersOffset","disabledUsersLimit","userCount","showConfig","showStoragePath","getItem","showUserBackend","showFirstLogin","showLastLogin","showNewUserForm","showLanguages","mutations","appendUsers","usersObj","existingUsers","map","_ref","newUsers","Object","values","filter","_ref2","includes","concat","updateDisabledUsers","_usersObj","setPasswordPolicyMinLength","length","addGroup","newGroup","find","group","assign","unshift","e","console","error","renameGroup","_ref3","gid","displayName","groupIndex","findIndex","groupSearch","updatedGroup","splice","removeGroup","addUserGroup","_ref4","userid","user","enabled","push","removeUserGroup","_ref5","indexOf","addUserSubAdmin","_ref6","subadmin","removeUserSubAdmin","_ref7","deleteUser","userIndex","commit","actionType","addUserData","response","ocs","enableDisableUser","_ref8","updateUserCounts","_ref9","recentGroup","disabledGroup","forEach","userGroup","warn","logger","setUserData","_ref10","key","value","humanValue","parseFileSize","resetUsers","resetGroups","setShowConfig","_ref11","setItem","JSON","stringify","setGroupSorting","sorting","oldValue","String","catch","showError","getters","getUsers","getGroups","subAdminGroups","getSortedGroups","sort","a","b","numA","numB","compare","getGroupSorting","getPasswordPolicyMinLength","getUsersOffset","getUsersLimit","getDisabledUsersOffset","getDisabledUsersLimit","getUserCount","getShowConfig","CancelToken","searchRequestCancelSource","actions","searchUsers","context","_ref12","offset","limit","search","api","generateOcsUrl","getUser","userId","_ref13","cancel","source","trim","encodeURIComponent","cancelToken","token","then","usersCount","keys","getRecentUsers","_ref14","getDisabledUsers","_ref15","_ref16","limitParam","getUsersFromList","_ref17","getUsersFromGroup","_ref18","groupid","groupId","getCapabilities","password_policy","minLength","_ref19","_ref20","_ref21","_ref22","_ref23","wipeUserDevices","Promise","reject","Error","addUser","_ref24","_ref25","dispatch","password","email","quota","language","manager","_ref26","userStatus","_ref27","sendWelcomeMail","apps","bundles","categories","updateCount","loading","gettingCategoriesPromise","appApiEnabled","APPS_API_FAILURE","message","isHTML","initCategories","updateCategories","categoriesPromise","setUpdateCount","addCategory","appendCategories","categoriesArray","setAllApps","setError","appId","Array","isArray","_id","app","clearError","enableApp","active","setInstallState","canInstall","disableApp","removable","canUnInstall","uninstallApp","needsDownload","installed","updateApp","version","update","resetApps","reset","startLoading","stopLoading","appIds","_appId","update_required","showInfo","onClick","window","location","reload","close","setTimeout","forceEnableApp","finally","getAllApps","getCategories","shouldRefetchCategories","arguments","undefined","categoriesPromiseResponse","isAppApiEnabled","getAppBundles","getUpdateCount","getCategoryById","selectedCategoryId","serverData","setServerData","getServerData","setAppConfig","API_FAILURE","meta","Store","modules","settings","oc","strict","process","humanList","humanListBinary","formatFileSize","size","skipSmallSizes","binaryPrefixes","base1000","Number","order","Math","floor","log","min","readableFormat","relativeSize","pow","toFixed","parseFloat","toLocaleString","forceBinary","toLocaleLowerCase","replaceAll","e2","match","decimalString","round","k","m","g","p","Date","toISOString","sortNodes","nodes","sortingOptions","sortingMode","sortingOrder","collection","identifiers2","orders","_","index","collator","a2","b2","identifier","entries","sortFavoritesFirst","v","attributes","favorite","sortFoldersFirst","type","basename2","displayname","basename","lastIndexOf","slice","hasRequiredUtil","hasRequiredValidator","validator","util","requireUtil","exports","nameStartChar","nameRegexp","regexName","RegExp","isExist","isEmptyObject","obj","merge","target","arrayMode","len","i2","getValue","isName","string","exec","getAllMatches","regex","matches","allmatches","startIndex","lastIndex","requireValidator","util2","defaultOptions","allowBooleanAttributes","unpairedTags","isWhiteSpace","char","readPI","xmlData","start","tagname","substr","getErrorObject","getLineNumberForPosition","readCommentAndCDATA","angleBracketsCount","validate","tags","tagFound","reachedRoot","err","tagStartPos","closingTag","tagName","substring","msg","result","readAttributeStr","attrStr","attrStrStart","isValid","validateAttributeString","code","line","tagClosed","otg","pop","openPos","col","afterAmp","validateAmpersand","t2","doubleQuote","singleQuote","startChar","validAttrStrRegxp","attrNames","getPositionFromMatch","attrName","validateAttrName","hasOwnProperty","re2","validateNumberAmpersand","count","lineNumber","lines","split","hasRequiredOptionsBuilder","xmlNode","hasRequiredXmlNode","DocTypeReader","hasRequiredDocTypeReader","strnum","hasRequiredStrnum","ignoreAttributes","hasRequiredIgnoreAttributes","OrderedObjParser_1","hasRequiredOrderedObjParser","OptionsBuilder","requireIgnoreAttributes","ignoreAttributes2","pattern","test","hasRequiredNode2json","XMLParser_1","hasRequiredXMLParser","orderedJs2Xml","hasRequiredOrderedJs2Xml","json2xml","hasRequiredJson2xml","fxp","hasRequiredFxp","debug_1","hasRequiredDebug","constants","hasRequiredConstants","node2json","requireNode2json","compress","arr","jPath","text","compressedObj","tagObj","property","propName","newJpath","textNodeName","val","isLeaf","isLeafTag","assignAttributes","alwaysCreateTextNode","attrMap","jpath","atrrName","propCount","prettify","node","requireXMLParser","buildOptions","preserveOrder","attributeNamePrefix","attributesGroupName","removeNSPrefix","parseTagValue","parseAttributeValue","trimValues","cdataPropName","numberParseOptions","hex","leadingZeros","eNotation","tagValueProcessor","attributeValueProcessor","stopNodes","commentPropName","processEntities","htmlEntities","ignoreDeclaration","ignorePiTags","transformTagName","transformAttributeName","updateTag","requireOptionsBuilder","OrderedObjParser","xmlNode2","constructor","child","add","addChild","readDocType","readEntityExp","entityName","isEntity","isElement","isAttlist","isNotation","validateEntityName","entities","hasBody","comment","exp","regx","i","requireDocTypeReader","toNumber","hexRegex","numRegex","parseInt","consider","decimalPoint","str","trimmedStr","skipLike","sign","numTrimmedByZeros","numStr","num","requireStrnum","getIgnoreAttributesFn","addExternalEntities","externalEntities","entKeys","ent","lastEntities","parseTextData","dontTrim","hasAttributes","isLeafNode","escapeEntities","replaceEntitiesValue","newval","parseValue","resolveNameSpace","prefix","charAt","attrsRegx","buildAttributesMap","ignoreAttributesFn","oldVal","aName","newVal","attrCollection","parseXml","xmlObj","currentNode","textData","closeIndex","findClosingIndex","colonIndex","saveTextToParentTag","lastTagName","propIndex","tagsNodeStack","tagData","readTagExp","childNode","tagExp","attrExpPresent","endIndex","docTypeEntities","rawTagName","lastTag","isItStopNode","tagContent","result2","readStopNodeData","entity","ampEntity","currentTagName","allNodesExp","stopNodePath","stopNodeExp","errMsg","closingIndex","closingChar","attrBoundary","ch","tagExpWithClosingIndex","separatorIndex","trimStart","openTagCount","shouldParse","fromCharCode","requireOrderedObjParser","validator2","parse","validationOption","toString","orderedObjParser","orderedResult","addEntity","requireOrderedJs2Xml","arrToStr","indentation","xmlStr","isPreviousElementTag","newJPath","tagText","isStopNode","attStr2","attr_to_str","tempInd","piTextNodeName","newIdentation","indentBy","tagStart","tagValue","suppressUnpairedNode","suppressEmptyNode","endsWith","attr","attrVal","suppressBooleanAttributes","textValue","jArray","format","requireDebug","debug","env","NODE_DEBUG","args","requireConstants","MAX_SAFE_INTEGER","MAX_LENGTH","MAX_SAFE_COMPONENT_LENGTH","MAX_SAFE_BUILD_LENGTH","RELEASE_TYPES","SEMVER_SPEC_VERSION","FLAG_INCLUDE_PRERELEASE","FLAG_LOOSE","XMLParser","XMLBuilder","buildFromOrderedJs","oneListGroup","Builder","isAttribute","attrPrefixLen","processTextOrObjNode","indentate","tagEndChar","newLine","object","level","ajPath","j2x","buildTextValNode","buildObjectNode","repeat","startsWith","jObj","arrayNodeName","join","call","buildAttrPairStr","arrLen","listTagVal","listTagAttr","j2","item","Ks","L","closeTag","tagEndExp","piClosingChar","requireJson2xml","XMLValidator","requireFxp","hasRequiredRe","parseOptions_1","hasRequiredParseOptions","identifiers","hasRequiredIdentifiers","semver","hasRequiredSemver","parse_1","hasRequiredParse","valid_1","hasRequiredValid","major_1","hasRequiredMajor","re","requireSemver","safeRe","module","src","R","LETTERDASHNUMBER","safeRegexReplacements","createToken","isGlobal","safe","max","makeSafeRegex","NUMERICIDENTIFIER","NUMERICIDENTIFIERLOOSE","NONNUMERICIDENTIFIER","PRERELEASEIDENTIFIER","PRERELEASEIDENTIFIERLOOSE","BUILDIDENTIFIER","MAINVERSION","PRERELEASE","BUILD","FULLPLAIN","MAINVERSIONLOOSE","PRERELEASELOOSE","LOOSEPLAIN","XRANGEIDENTIFIER","XRANGEIDENTIFIERLOOSE","GTLT","XRANGEPLAIN","XRANGEPLAINLOOSE","COERCEPLAIN","COERCE","COERCEFULL","LONETILDE","tildeTrimReplace","LONECARET","caretTrimReplace","comparatorTrimReplace","parseOptions","looseOption","freeze","loose","emptyOpts","requireParseOptions","compareIdentifiers","anum","bnum","rcompareIdentifiers","requireIdentifiers","SemVer","includePrerelease","TypeError","m2","LOOSE","FULL","raw","major","minor","prerelease","other","compareMain","comparePre","compareBuild","inc","release","identifierBase","isNaN","throwErrors","er","requireParse","requireValid","requireMajor","getLoggerBuilder","setApp","detectUser","cloneRoute","to","from","clone","hash","query","fullPath","moduleName","registerModule","namespaced","currentRoute","transition","currentPath","isTimeTraveling","storeUnwatch","watch","route","afterEachUnHook","afterEach","unregisterModule","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","O","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","every","r","getter","__esModule","d","definition","o","defineProperty","enumerable","f","chunkId","all","reduce","promises","u","globalThis","Function","prop","l","done","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","bind","head","appendChild","Symbol","toStringTag","nmd","paths","scriptUrl","importScripts","currentScript","toUpperCase","baseURI","self","href","installedChunks","installedChunkData","promise","resolve","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file diff --git a/dist/systemtags-init.js b/dist/systemtags-init.js index 57ac53f51cb..c18e48d5ba0 100644 --- a/dist/systemtags-init.js +++ b/dist/systemtags-init.js @@ -1,2 +1,2 @@ -(()=>{var t,e,n,r={8828:(t,e,n)=>{"use strict";n.d(e,{R:()=>a});var r=n(60669),i=n(63814),s=n(21777);const o=(0,i.dC)("dav"),a=(0,r.UU)(o),l=t=>{a.setHeaders({"X-Requested-With":"XMLHttpRequest",requesttoken:t??""})};(0,s.zo)(l),l((0,s.do)())},12686:(t,e,n)=>{"use strict";n.d(e,{GX:()=>o,Pq:()=>c,_3:()=>a,rA:()=>l,rL:()=>s});var r=n(71654),i=n(85471);const s=t=>t.map((t=>{let{props:e}=t;return Object.fromEntries(Object.entries(e).map((t=>{let[e,n]=t;return[(0,r.A)(e),"displayName"===(0,r.A)(e)?String(n):n]})))})),o=t=>{const e=t.indexOf("?");e>0&&(t=t.substring(0,e));const n=t.split("/");let r;do{r=n[n.length-1],n.pop()}while(!r&&n.length>0);return Number(r)},a=t=>{if("name"in t&&!("displayName"in t))return{...t};const e={...t};return e.name=e.displayName,delete e.displayName,e},l=function(t){const e=t.attributes?.["system-tags"]?.["system-tag"];return void 0===e?[]:[e].flat().map((t=>"string"==typeof t?t:t.text))},c=function(t,e){i.Ay.set(t.attributes,"system-tags",{"system-tag":e})}},25631:(t,e,n)=>{"use strict";n.d(e,{A:()=>r});const r=(0,n(35947).YK)().setApp("systemtags").detectUser().build()},35810:(t,e,n)=>{"use strict";n.d(e,{Al:()=>r.r,CP:()=>r.k,Gg:()=>c,H4:()=>r.c,PY:()=>r.b,Q$:()=>r.e,R3:()=>r.n,Ss:()=>J,VL:()=>r.l,VX:()=>r.j,Yc:()=>r.i,aX:()=>r.P,bh:()=>m,hY:()=>l,lJ:()=>r.d,m9:()=>a,pt:()=>r.F,ur:()=>g,v7:()=>h,vd:()=>r.s,zI:()=>r.t});var r=n(68251),i=(n(43627),n(53334)),s=n(380),o=n(65606),a=(t=>(t.DEFAULT="default",t.HIDDEN="hidden",t))(a||{});class l{_action;constructor(t){this.validateAction(t),this._action=t}get id(){return this._action.id}get displayName(){return this._action.displayName}get title(){return this._action.title}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 parent(){return this._action.parent}get default(){return this._action.default}get destructive(){return this._action.destructive}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("title"in t&&"function"!=typeof t.title)throw new Error("Invalid title 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(void 0!==t.destructive&&"boolean"!=typeof t.destructive)throw new Error("Invalid destructive flag");if("parent"in t&&"string"!=typeof t.parent)throw new Error("Invalid parent");if(t.default&&!Object.values(a).includes(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 c=function(t){void 0===window._nc_fileactions&&(window._nc_fileactions=[],r.o.debug("FileActions initialized")),window._nc_fileactions.find((e=>e.id===t.id))?r.o.error(`FileAction ${t.id} already registered`,{action:t}):window._nc_fileactions.push(t)};Error;const u=["B","KB","MB","GB","TB","PB"],d=["B","KiB","MiB","GiB","TiB","PiB"];function h(t,e=!1,n=!1,r=!1){n=n&&!r,"string"==typeof t&&(t=Number(t));let s=t>0?Math.floor(Math.log(t)/Math.log(r?1e3:1024)):0;s=Math.min((n?d.length:u.length)-1,s);const o=n?d[s]:u[s];let a=(t/Math.pow(r?1e3:1024,s)).toFixed(1);return!0===e&&0===s?("0.0"!==a?"< 1 ":"0 ")+(n?d[1]:u[1]):(a=s<2?parseFloat(a).toFixed(0):parseFloat(a).toLocaleString((0,i.lO)()),a+" "+o)}function p(t){return t instanceof Date?t.toISOString():String(t)}function g(t,e={}){const n={sortingMode:"basename",sortingOrder:"asc",...e};return function(t,e,n){n=n??[];const r=(e=e??[t=>t]).map(((t,e)=>"asc"===(n[e]??"asc")?1:-1)),s=Intl.Collator([(0,i.Z0)(),(0,i.lO)()],{numeric:!0,usage:"sort"});return[...t].sort(((t,n)=>{for(const[i,o]of e.entries()){const e=s.compare(p(o(t)),p(o(n)));if(0!==e)return e*r[i]}return 0}))}(t,[...n.sortFavoritesFirst?[t=>1!==t.attributes?.favorite]:[],...n.sortFoldersFirst?[t=>"folder"!==t.type]:[],..."basename"!==n.sortingMode?[t=>t[n.sortingMode]]:[],t=>{return(e=t.displayname||t.attributes?.displayname||t.basename).lastIndexOf(".")>0?e.slice(0,e.lastIndexOf(".")):e;var e},t=>t.basename],[...n.sortFavoritesFirst?["asc"]:[],...n.sortFoldersFirst?["asc"]:[],..."mtime"===n.sortingMode?["asc"===n.sortingOrder?"desc":"asc"]:[],..."mtime"!==n.sortingMode&&"basename"!==n.sortingMode?[n.sortingOrder]:[],n.sortingOrder,n.sortingOrder])}class f extends s.m{_views=[];_currentView=null;register(t){if(this._views.find((e=>e.id===t.id)))throw new Error(`View id ${t.id} is already registered`);this._views.push(t),this.dispatchTypedEvent("update",new CustomEvent("update"))}remove(t){const e=this._views.findIndex((e=>e.id===t));-1!==e&&(this._views.splice(e,1),this.dispatchTypedEvent("update",new CustomEvent("update")))}setActive(t){this._currentView=t;const e=new CustomEvent("updateActive",{detail:t});this.dispatchTypedEvent("updateActive",e)}get active(){return this._currentView}get views(){return this._views}}const m=function(){return void 0===window._nc_navigation&&(window._nc_navigation=new f,r.o.debug("Navigation service initialized")),window._nc_navigation};class b{_column;constructor(t){y(t),this._column=t}get id(){return this._column.id}get title(){return this._column.title}get render(){return this._column.render}get sort(){return this._column.sort}get summary(){return this._column.summary}}const y=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};var v,E,w={},A={};function N(){return v||(v=1,function(t){const e=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",n="["+e+"]["+e+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*",r=new RegExp("^"+n+"$");t.isExist=function(t){return void 0!==t},t.isEmptyObject=function(t){return 0===Object.keys(t).length},t.merge=function(t,e,n){if(e){const r=Object.keys(e),i=r.length;for(let s=0;s<i;s++)t[r[s]]="strict"===n?[e[r[s]]]:e[r[s]]}},t.getValue=function(e){return t.isExist(e)?e:""},t.isName=function(t){return!(null==r.exec(t))},t.getAllMatches=function(t,e){const n=[];let r=e.exec(t);for(;r;){const i=[];i.startIndex=e.lastIndex-r[0].length;const s=r.length;for(let t=0;t<s;t++)i.push(r[t]);n.push(i),r=e.exec(t)}return n},t.nameRegexp=n}(A)),A}function x(){if(E)return w;E=1;const t=N(),e={allowBooleanAttributes:!1,unpairedTags:[]};function n(t){return" "===t||"\t"===t||"\n"===t||"\r"===t}function r(t,e){const n=e;for(;e<t.length;e++)if("?"!=t[e]&&" "!=t[e]);else{const r=t.substr(n,e-n);if(e>5&&"xml"===r)return d("InvalidXml","XML declaration allowed only at the start of the document.",p(t,e));if("?"==t[e]&&">"==t[e+1]){e++;break}}return e}function i(t,e){if(t.length>e+5&&"-"===t[e+1]&&"-"===t[e+2]){for(e+=3;e<t.length;e++)if("-"===t[e]&&"-"===t[e+1]&&">"===t[e+2]){e+=2;break}}else if(t.length>e+8&&"D"===t[e+1]&&"O"===t[e+2]&&"C"===t[e+3]&&"T"===t[e+4]&&"Y"===t[e+5]&&"P"===t[e+6]&&"E"===t[e+7]){let n=1;for(e+=8;e<t.length;e++)if("<"===t[e])n++;else if(">"===t[e]&&(n--,0===n))break}else if(t.length>e+9&&"["===t[e+1]&&"C"===t[e+2]&&"D"===t[e+3]&&"A"===t[e+4]&&"T"===t[e+5]&&"A"===t[e+6]&&"["===t[e+7])for(e+=8;e<t.length;e++)if("]"===t[e]&&"]"===t[e+1]&&">"===t[e+2]){e+=2;break}return e}w.validate=function(s,o){o=Object.assign({},e,o);const l=[];let h=!1,g=!1;"\ufeff"===s[0]&&(s=s.substr(1));for(let e=0;e<s.length;e++)if("<"===s[e]&&"?"===s[e+1]){if(e+=2,e=r(s,e),e.err)return e}else{if("<"!==s[e]){if(n(s[e]))continue;return d("InvalidChar","char '"+s[e]+"' is not expected.",p(s,e))}{let m=e;if(e++,"!"===s[e]){e=i(s,e);continue}{let b=!1;"/"===s[e]&&(b=!0,e++);let y="";for(;e<s.length&&">"!==s[e]&&" "!==s[e]&&"\t"!==s[e]&&"\n"!==s[e]&&"\r"!==s[e];e++)y+=s[e];if(y=y.trim(),"/"===y[y.length-1]&&(y=y.substring(0,y.length-1),e--),f=y,!t.isName(f)){let t;return t=0===y.trim().length?"Invalid space after '<'.":"Tag '"+y+"' is an invalid name.",d("InvalidTag",t,p(s,e))}const v=a(s,e);if(!1===v)return d("InvalidAttr","Attributes for '"+y+"' have open quote.",p(s,e));let E=v.value;if(e=v.index,"/"===E[E.length-1]){const t=e-E.length;E=E.substring(0,E.length-1);const n=c(E,o);if(!0!==n)return d(n.err.code,n.err.msg,p(s,t+n.err.line));h=!0}else if(b){if(!v.tagClosed)return d("InvalidTag","Closing tag '"+y+"' doesn't have proper closing.",p(s,e));if(E.trim().length>0)return d("InvalidTag","Closing tag '"+y+"' can't have attributes or invalid starting.",p(s,m));if(0===l.length)return d("InvalidTag","Closing tag '"+y+"' has not been opened.",p(s,m));{const t=l.pop();if(y!==t.tagName){let e=p(s,t.tagStartPos);return d("InvalidTag","Expected closing tag '"+t.tagName+"' (opened in line "+e.line+", col "+e.col+") instead of closing tag '"+y+"'.",p(s,m))}0==l.length&&(g=!0)}}else{const t=c(E,o);if(!0!==t)return d(t.err.code,t.err.msg,p(s,e-E.length+t.err.line));if(!0===g)return d("InvalidXml","Multiple possible root nodes found.",p(s,e));-1!==o.unpairedTags.indexOf(y)||l.push({tagName:y,tagStartPos:m}),h=!0}for(e++;e<s.length;e++)if("<"===s[e]){if("!"===s[e+1]){e++,e=i(s,e);continue}if("?"!==s[e+1])break;if(e=r(s,++e),e.err)return e}else if("&"===s[e]){const t=u(s,e);if(-1==t)return d("InvalidChar","char '&' is not expected.",p(s,e));e=t}else if(!0===g&&!n(s[e]))return d("InvalidXml","Extra text at the end",p(s,e));"<"===s[e]&&e--}}}var f;return h?1==l.length?d("InvalidTag","Unclosed tag '"+l[0].tagName+"'.",p(s,l[0].tagStartPos)):!(l.length>0)||d("InvalidXml","Invalid '"+JSON.stringify(l.map((t=>t.tagName)),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):d("InvalidXml","Start tag expected.",1)};const s='"',o="'";function a(t,e){let n="",r="",i=!1;for(;e<t.length;e++){if(t[e]===s||t[e]===o)""===r?r=t[e]:r!==t[e]||(r="");else if(">"===t[e]&&""===r){i=!0;break}n+=t[e]}return""===r&&{value:n,index:e,tagClosed:i}}const l=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function c(e,n){const r=t.getAllMatches(e,l),i={};for(let t=0;t<r.length;t++){if(0===r[t][1].length)return d("InvalidAttr","Attribute '"+r[t][2]+"' has no space in starting.",g(r[t]));if(void 0!==r[t][3]&&void 0===r[t][4])return d("InvalidAttr","Attribute '"+r[t][2]+"' is without value.",g(r[t]));if(void 0===r[t][3]&&!n.allowBooleanAttributes)return d("InvalidAttr","boolean attribute '"+r[t][2]+"' is not allowed.",g(r[t]));const e=r[t][2];if(!h(e))return d("InvalidAttr","Attribute '"+e+"' is an invalid name.",g(r[t]));if(i.hasOwnProperty(e))return d("InvalidAttr","Attribute '"+e+"' is repeated.",g(r[t]));i[e]=1}return!0}function u(t,e){if(";"===t[++e])return-1;if("#"===t[e])return function(t,e){let n=/\d/;for("x"===t[e]&&(e++,n=/[\da-fA-F]/);e<t.length;e++){if(";"===t[e])return e;if(!t[e].match(n))break}return-1}(t,++e);let n=0;for(;e<t.length;e++,n++)if(!(t[e].match(/\w/)&&n<20)){if(";"===t[e])break;return-1}return e}function d(t,e,n){return{err:{code:t,msg:e,line:n.line||n,col:n.col}}}function h(e){return t.isName(e)}function p(t,e){const n=t.substring(0,e).split(/\r?\n/);return{line:n.length,col:n[n.length-1].length+1}}function g(t){return t.startIndex+t[1].length}return w}var I,O,C,T,L,k,R,$,P,_,S,M={};function F(){return P?$:(P=1,$=function(t){return"function"==typeof t?t:Array.isArray(t)?e=>{for(const n of t){if("string"==typeof n&&e===n)return!0;if(n instanceof RegExp&&n.test(e))return!0}}:()=>!1})}var j,D,V,B,G,X,U,q,z,H={};function Y(){if(j)return H;function t(i,s,o){let a;const l={};for(let c=0;c<i.length;c++){const u=i[c],d=e(u);let h="";if(h=void 0===o?d:o+"."+d,d===s.textNodeName)void 0===a?a=u[d]:a+=""+u[d];else{if(void 0===d)continue;if(u[d]){let e=t(u[d],s,h);const i=r(e,s);u[":@"]?n(e,u[":@"],h,s):1!==Object.keys(e).length||void 0===e[s.textNodeName]||s.alwaysCreateTextNode?0===Object.keys(e).length&&(s.alwaysCreateTextNode?e[s.textNodeName]="":e=""):e=e[s.textNodeName],void 0!==l[d]&&l.hasOwnProperty(d)?(Array.isArray(l[d])||(l[d]=[l[d]]),l[d].push(e)):s.isArray(d,h,i)?l[d]=[e]:l[d]=e}}}return"string"==typeof a?a.length>0&&(l[s.textNodeName]=a):void 0!==a&&(l[s.textNodeName]=a),l}function e(t){const e=Object.keys(t);for(let t=0;t<e.length;t++){const n=e[t];if(":@"!==n)return n}}function n(t,e,n,r){if(e){const i=Object.keys(e),s=i.length;for(let o=0;o<s;o++){const s=i[o];r.isArray(s,n+"."+s,!0,!0)?t[s]=[e[s]]:t[s]=e[s]}}}function r(t,e){const{textNodeName:n}=e,r=Object.keys(t).length;return 0===r||!(1!==r||!t[n]&&"boolean"!=typeof t[n]&&0!==t[n])}return j=1,H.prettify=function(e,n){return t(e,n)},H}function K(){if(V)return D;V=1;const{buildOptions:t}=function(){if(I)return M;I=1;const t={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(t,e,n){return t}};return M.buildOptions=function(e){return Object.assign({},t,e)},M.defaultOptions=t,M}(),e=function(){if(S)return _;S=1;const t=N(),e=C?O:(C=1,O=class{constructor(t){this.tagname=t,this.child=[],this[":@"]={}}add(t,e){"__proto__"===t&&(t="#__proto__"),this.child.push({[t]:e})}addChild(t){"__proto__"===t.tagname&&(t.tagname="#__proto__"),t[":@"]&&Object.keys(t[":@"]).length>0?this.child.push({[t.tagname]:t.child,":@":t[":@"]}):this.child.push({[t.tagname]:t.child})}}),n=function(){if(L)return T;L=1;const t=N();function e(t,e){let n="";for(;e<t.length&&"'"!==t[e]&&'"'!==t[e];e++)n+=t[e];if(n=n.trim(),-1!==n.indexOf(" "))throw new Error("External entites are not supported");const r=t[e++];let i="";for(;e<t.length&&t[e]!==r;e++)i+=t[e];return[n,i,e]}function n(t,e){return"!"===t[e+1]&&"E"===t[e+2]&&"N"===t[e+3]&&"T"===t[e+4]&&"I"===t[e+5]&&"T"===t[e+6]&&"Y"===t[e+7]}function r(t,e){return"!"===t[e+1]&&"E"===t[e+2]&&"L"===t[e+3]&&"E"===t[e+4]&&"M"===t[e+5]&&"E"===t[e+6]&&"N"===t[e+7]&&"T"===t[e+8]}function i(t,e){return"!"===t[e+1]&&"A"===t[e+2]&&"T"===t[e+3]&&"T"===t[e+4]&&"L"===t[e+5]&&"I"===t[e+6]&&"S"===t[e+7]&&"T"===t[e+8]}function s(t,e){return"!"===t[e+1]&&"N"===t[e+2]&&"O"===t[e+3]&&"T"===t[e+4]&&"A"===t[e+5]&&"T"===t[e+6]&&"I"===t[e+7]&&"O"===t[e+8]&&"N"===t[e+9]}function o(e){if(t.isName(e))return e;throw new Error(`Invalid entity name ${e}`)}return T=function(t,a){const l={};if("O"!==t[a+3]||"C"!==t[a+4]||"T"!==t[a+5]||"Y"!==t[a+6]||"P"!==t[a+7]||"E"!==t[a+8])throw new Error("Invalid Tag instead of DOCTYPE");{a+=9;let c=1,u=!1,d=!1,h="";for(;a<t.length;a++)if("<"!==t[a]||d)if(">"===t[a]){if(d?"-"===t[a-1]&&"-"===t[a-2]&&(d=!1,c--):c--,0===c)break}else"["===t[a]?u=!0:h+=t[a];else{if(u&&n(t,a)){let n,r;a+=7,[n,r,a]=e(t,a+1),-1===r.indexOf("&")&&(l[o(n)]={regx:RegExp(`&${n};`,"g"),val:r})}else u&&r(t,a)||u&&i(t,a)?a+=8:u&&s(t,a)?a+=9:d=!0;c++,h=""}if(0!==c)throw new Error("Unclosed DOCTYPE")}return{entities:l,i:a}}}(),r=function(){if(R)return k;R=1;const t=/^[-+]?0x[a-fA-F0-9]+$/,e=/^([\-\+])?(0*)(\.[0-9]+([eE]\-?[0-9]+)?|[0-9]+(\.[0-9]+([eE]\-?[0-9]+)?)?)$/;!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt),!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat);const n={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};return k=function(r,i={}){if(i=Object.assign({},n,i),!r||"string"!=typeof r)return r;let s=r.trim();if(void 0!==i.skipLike&&i.skipLike.test(s))return r;if(i.hex&&t.test(s))return Number.parseInt(s,16);{const t=e.exec(s);if(t){const e=t[1],n=t[2];let a=(o=t[3])&&-1!==o.indexOf(".")?("."===(o=o.replace(/0+$/,""))?o="0":"."===o[0]?o="0"+o:"."===o[o.length-1]&&(o=o.substr(0,o.length-1)),o):o;const l=t[4]||t[6];if(!i.leadingZeros&&n.length>0&&e&&"."!==s[2])return r;if(!i.leadingZeros&&n.length>0&&!e&&"."!==s[1])return r;{const t=Number(s),o=""+t;return-1!==o.search(/[eE]/)||l?i.eNotation?t:r:-1!==s.indexOf(".")?"0"===o&&""===a||o===a||e&&o==="-"+a?t:r:n?a===o||e+a===o?t:r:s===o||s===e+o?t:r}}return r}var o}}(),i=F();function s(t){const e=Object.keys(t);for(let n=0;n<e.length;n++){const r=e[n];this.lastEntities[r]={regex:new RegExp("&"+r+";","g"),val:t[r]}}}function o(t,e,n,r,i,s,o){if(void 0!==t&&(this.options.trimValues&&!r&&(t=t.trim()),t.length>0)){o||(t=this.replaceEntitiesValue(t));const r=this.options.tagValueProcessor(e,t,n,i,s);return null==r?t:typeof r!=typeof t||r!==t?r:this.options.trimValues||t.trim()===t?y(t,this.options.parseTagValue,this.options.numberParseOptions):t}}function a(t){if(this.options.removeNSPrefix){const e=t.split(":"),n="/"===t.charAt(0)?"/":"";if("xmlns"===e[0])return"";2===e.length&&(t=n+e[1])}return t}const l=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function c(e,n,r){if(!0!==this.options.ignoreAttributes&&"string"==typeof e){const r=t.getAllMatches(e,l),i=r.length,s={};for(let t=0;t<i;t++){const e=this.resolveNameSpace(r[t][1]);if(this.ignoreAttributesFn(e,n))continue;let i=r[t][4],o=this.options.attributeNamePrefix+e;if(e.length)if(this.options.transformAttributeName&&(o=this.options.transformAttributeName(o)),"__proto__"===o&&(o="#__proto__"),void 0!==i){this.options.trimValues&&(i=i.trim()),i=this.replaceEntitiesValue(i);const t=this.options.attributeValueProcessor(e,i,n);s[o]=null==t?i:typeof t!=typeof i||t!==i?t:y(i,this.options.parseAttributeValue,this.options.numberParseOptions)}else this.options.allowBooleanAttributes&&(s[o]=!0)}if(!Object.keys(s).length)return;if(this.options.attributesGroupName){const t={};return t[this.options.attributesGroupName]=s,t}return s}}const u=function(t){t=t.replace(/\r\n?/g,"\n");const r=new e("!xml");let i=r,s="",o="";for(let a=0;a<t.length;a++)if("<"===t[a])if("/"===t[a+1]){const e=f(t,">",a,"Closing Tag is not closed.");let n=t.substring(a+2,e).trim();if(this.options.removeNSPrefix){const t=n.indexOf(":");-1!==t&&(n=n.substr(t+1))}this.options.transformTagName&&(n=this.options.transformTagName(n)),i&&(s=this.saveTextToParentTag(s,i,o));const r=o.substring(o.lastIndexOf(".")+1);if(n&&-1!==this.options.unpairedTags.indexOf(n))throw new Error(`Unpaired tag can not be used as closing tag: </${n}>`);let l=0;r&&-1!==this.options.unpairedTags.indexOf(r)?(l=o.lastIndexOf(".",o.lastIndexOf(".")-1),this.tagsNodeStack.pop()):l=o.lastIndexOf("."),o=o.substring(0,l),i=this.tagsNodeStack.pop(),s="",a=e}else if("?"===t[a+1]){let n=m(t,a,!1,"?>");if(!n)throw new Error("Pi Tag is not closed.");if(s=this.saveTextToParentTag(s,i,o),this.options.ignoreDeclaration&&"?xml"===n.tagName||this.options.ignorePiTags);else{const t=new e(n.tagName);t.add(this.options.textNodeName,""),n.tagName!==n.tagExp&&n.attrExpPresent&&(t[":@"]=this.buildAttributesMap(n.tagExp,o,n.tagName)),this.addChild(i,t,o)}a=n.closeIndex+1}else if("!--"===t.substr(a+1,3)){const e=f(t,"--\x3e",a+4,"Comment is not closed.");if(this.options.commentPropName){const n=t.substring(a+4,e-2);s=this.saveTextToParentTag(s,i,o),i.add(this.options.commentPropName,[{[this.options.textNodeName]:n}])}a=e}else if("!D"===t.substr(a+1,2)){const e=n(t,a);this.docTypeEntities=e.entities,a=e.i}else if("!["===t.substr(a+1,2)){const e=f(t,"]]>",a,"CDATA is not closed.")-2,n=t.substring(a+9,e);s=this.saveTextToParentTag(s,i,o);let r=this.parseTextData(n,i.tagname,o,!0,!1,!0,!0);null==r&&(r=""),this.options.cdataPropName?i.add(this.options.cdataPropName,[{[this.options.textNodeName]:n}]):i.add(this.options.textNodeName,r),a=e+2}else{let n=m(t,a,this.options.removeNSPrefix),l=n.tagName;const c=n.rawTagName;let u=n.tagExp,d=n.attrExpPresent,h=n.closeIndex;this.options.transformTagName&&(l=this.options.transformTagName(l)),i&&s&&"!xml"!==i.tagname&&(s=this.saveTextToParentTag(s,i,o,!1));const p=i;if(p&&-1!==this.options.unpairedTags.indexOf(p.tagname)&&(i=this.tagsNodeStack.pop(),o=o.substring(0,o.lastIndexOf("."))),l!==r.tagname&&(o+=o?"."+l:l),this.isItStopNode(this.options.stopNodes,o,l)){let r="";if(u.length>0&&u.lastIndexOf("/")===u.length-1)"/"===l[l.length-1]?(l=l.substr(0,l.length-1),o=o.substr(0,o.length-1),u=l):u=u.substr(0,u.length-1),a=n.closeIndex;else if(-1!==this.options.unpairedTags.indexOf(l))a=n.closeIndex;else{const e=this.readStopNodeData(t,c,h+1);if(!e)throw new Error(`Unexpected end of ${c}`);a=e.i,r=e.tagContent}const s=new e(l);l!==u&&d&&(s[":@"]=this.buildAttributesMap(u,o,l)),r&&(r=this.parseTextData(r,l,o,!0,d,!0,!0)),o=o.substr(0,o.lastIndexOf(".")),s.add(this.options.textNodeName,r),this.addChild(i,s,o)}else{if(u.length>0&&u.lastIndexOf("/")===u.length-1){"/"===l[l.length-1]?(l=l.substr(0,l.length-1),o=o.substr(0,o.length-1),u=l):u=u.substr(0,u.length-1),this.options.transformTagName&&(l=this.options.transformTagName(l));const t=new e(l);l!==u&&d&&(t[":@"]=this.buildAttributesMap(u,o,l)),this.addChild(i,t,o),o=o.substr(0,o.lastIndexOf("."))}else{const t=new e(l);this.tagsNodeStack.push(i),l!==u&&d&&(t[":@"]=this.buildAttributesMap(u,o,l)),this.addChild(i,t,o),i=t}s="",a=h}}else s+=t[a];return r.child};function d(t,e,n){const r=this.options.updateTag(e.tagname,n,e[":@"]);!1===r||("string"==typeof r?(e.tagname=r,t.addChild(e)):t.addChild(e))}const h=function(t){if(this.options.processEntities){for(let e in this.docTypeEntities){const n=this.docTypeEntities[e];t=t.replace(n.regx,n.val)}for(let e in this.lastEntities){const n=this.lastEntities[e];t=t.replace(n.regex,n.val)}if(this.options.htmlEntities)for(let e in this.htmlEntities){const n=this.htmlEntities[e];t=t.replace(n.regex,n.val)}t=t.replace(this.ampEntity.regex,this.ampEntity.val)}return t};function p(t,e,n,r){return t&&(void 0===r&&(r=0===Object.keys(e.child).length),void 0!==(t=this.parseTextData(t,e.tagname,n,!1,!!e[":@"]&&0!==Object.keys(e[":@"]).length,r))&&""!==t&&e.add(this.options.textNodeName,t),t=""),t}function g(t,e,n){const r="*."+n;for(const n in t){const i=t[n];if(r===i||e===i)return!0}return!1}function f(t,e,n,r){const i=t.indexOf(e,n);if(-1===i)throw new Error(r);return i+e.length-1}function m(t,e,n,r=">"){const i=function(t,e,n=">"){let r,i="";for(let s=e;s<t.length;s++){let e=t[s];if(r)e===r&&(r="");else if('"'===e||"'"===e)r=e;else if(e===n[0]){if(!n[1])return{data:i,index:s};if(t[s+1]===n[1])return{data:i,index:s}}else"\t"===e&&(e=" ");i+=e}}(t,e+1,r);if(!i)return;let s=i.data;const o=i.index,a=s.search(/\s/);let l=s,c=!0;-1!==a&&(l=s.substring(0,a),s=s.substring(a+1).trimStart());const u=l;if(n){const t=l.indexOf(":");-1!==t&&(l=l.substr(t+1),c=l!==i.data.substr(t+1))}return{tagName:l,tagExp:s,closeIndex:o,attrExpPresent:c,rawTagName:u}}function b(t,e,n){const r=n;let i=1;for(;n<t.length;n++)if("<"===t[n])if("/"===t[n+1]){const s=f(t,">",n,`${e} is not closed`);if(t.substring(n+2,s).trim()===e&&(i--,0===i))return{tagContent:t.substring(r,n),i:s};n=s}else if("?"===t[n+1])n=f(t,"?>",n+1,"StopNode is not closed.");else if("!--"===t.substr(n+1,3))n=f(t,"--\x3e",n+3,"StopNode is not closed.");else if("!["===t.substr(n+1,2))n=f(t,"]]>",n,"StopNode is not closed.")-2;else{const r=m(t,n,">");r&&((r&&r.tagName)===e&&"/"!==r.tagExp[r.tagExp.length-1]&&i++,n=r.closeIndex)}}function y(e,n,i){if(n&&"string"==typeof e){const t=e.trim();return"true"===t||"false"!==t&&r(e,i)}return t.isExist(e)?e:""}return _=class{constructor(t){this.options=t,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"¢"},pound:{regex:/&(pound|#163);/g,val:"£"},yen:{regex:/&(yen|#165);/g,val:"¥"},euro:{regex:/&(euro|#8364);/g,val:"€"},copyright:{regex:/&(copy|#169);/g,val:"©"},reg:{regex:/&(reg|#174);/g,val:"®"},inr:{regex:/&(inr|#8377);/g,val:"₹"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(t,e)=>String.fromCharCode(Number.parseInt(e,10))},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(t,e)=>String.fromCharCode(Number.parseInt(e,16))}},this.addExternalEntities=s,this.parseXml=u,this.parseTextData=o,this.resolveNameSpace=a,this.buildAttributesMap=c,this.isItStopNode=g,this.replaceEntitiesValue=h,this.readStopNodeData=b,this.saveTextToParentTag=p,this.addChild=d,this.ignoreAttributesFn=i(this.options.ignoreAttributes)}}}(),{prettify:n}=Y(),r=x();return D=class{constructor(e){this.externalEntities={},this.options=t(e)}parse(t,i){if("string"==typeof t);else{if(!t.toString)throw new Error("XML data is accepted in String or Bytes[] form.");t=t.toString()}if(i){!0===i&&(i={});const e=r.validate(t,i);if(!0!==e)throw Error(`${e.err.msg}:${e.err.line}:${e.err.col}`)}const s=new e(this.options);s.addExternalEntities(this.externalEntities);const o=s.parseXml(t);return this.options.preserveOrder||void 0===o?o:n(o,this.options)}addEntity(t,e){if(-1!==e.indexOf("&"))throw new Error("Entity value can't have '&'");if(-1!==t.indexOf("&")||-1!==t.indexOf(";"))throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for '
'");if("&"===e)throw new Error("An entity with value '&' is not permitted");this.externalEntities[t]=e}}}function Z(){if(G)return B;function t(s,o,a,l){let c="",u=!1;for(let d=0;d<s.length;d++){const h=s[d],p=e(h);if(void 0===p)continue;let g="";if(g=0===a.length?p:`${a}.${p}`,p===o.textNodeName){let t=h[p];r(g,o)||(t=o.tagValueProcessor(p,t),t=i(t,o)),u&&(c+=l),c+=t,u=!1;continue}if(p===o.cdataPropName){u&&(c+=l),c+=`<![CDATA[${h[p][0][o.textNodeName]}]]>`,u=!1;continue}if(p===o.commentPropName){c+=l+`\x3c!--${h[p][0][o.textNodeName]}--\x3e`,u=!0;continue}if("?"===p[0]){const t=n(h[":@"],o),e="?xml"===p?"":l;let r=h[p][0][o.textNodeName];r=0!==r.length?" "+r:"",c+=e+`<${p}${r}${t}?>`,u=!0;continue}let f=l;""!==f&&(f+=o.indentBy);const m=l+`<${p}${n(h[":@"],o)}`,b=t(h[p],o,g,f);-1!==o.unpairedTags.indexOf(p)?o.suppressUnpairedNode?c+=m+">":c+=m+"/>":b&&0!==b.length||!o.suppressEmptyNode?b&&b.endsWith(">")?c+=m+`>${b}${l}</${p}>`:(c+=m+">",b&&""!==l&&(b.includes("/>")||b.includes("</"))?c+=l+o.indentBy+b+l:c+=b,c+=`</${p}>`):c+=m+"/>",u=!0}return c}function e(t){const e=Object.keys(t);for(let n=0;n<e.length;n++){const r=e[n];if(t.hasOwnProperty(r)&&":@"!==r)return r}}function n(t,e){let n="";if(t&&!e.ignoreAttributes)for(let r in t){if(!t.hasOwnProperty(r))continue;let s=e.attributeValueProcessor(r,t[r]);s=i(s,e),!0===s&&e.suppressBooleanAttributes?n+=` ${r.substr(e.attributeNamePrefix.length)}`:n+=` ${r.substr(e.attributeNamePrefix.length)}="${s}"`}return n}function r(t,e){let n=(t=t.substr(0,t.length-e.textNodeName.length-1)).substr(t.lastIndexOf(".")+1);for(let r in e.stopNodes)if(e.stopNodes[r]===t||e.stopNodes[r]==="*."+n)return!0;return!1}function i(t,e){if(t&&t.length>0&&e.processEntities)for(let n=0;n<e.entities.length;n++){const r=e.entities[n];t=t.replace(r.regex,r.val)}return t}return G=1,B=function(e,n){let r="";return n.format&&n.indentBy.length>0&&(r="\n"),t(e,n,"",r)}}var W=function(){if(z)return q;z=1;const t=x(),e=K(),n=function(){if(U)return X;U=1;const t=Z(),e=F(),n={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&"},{regex:new RegExp(">","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1};function r(t){this.options=Object.assign({},n,t),!0===this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.ignoreAttributesFn=e(this.options.ignoreAttributes),this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=o),this.processTextOrObjNode=i,this.options.format?(this.indentate=s,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function i(t,e,n,r){const i=this.j2x(t,n+1,r.concat(e));return void 0!==t[this.options.textNodeName]&&1===Object.keys(t).length?this.buildTextValNode(t[this.options.textNodeName],e,i.attrStr,n):this.buildObjectNode(i.val,e,i.attrStr,n)}function s(t){return this.options.indentBy.repeat(t)}function o(t){return!(!t.startsWith(this.options.attributeNamePrefix)||t===this.options.textNodeName)&&t.substr(this.attrPrefixLen)}return r.prototype.build=function(e){return this.options.preserveOrder?t(e,this.options):(Array.isArray(e)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(e={[this.options.arrayNodeName]:e}),this.j2x(e,0,[]).val)},r.prototype.j2x=function(t,e,n){let r="",i="";const s=n.join(".");for(let o in t)if(Object.prototype.hasOwnProperty.call(t,o))if(void 0===t[o])this.isAttribute(o)&&(i+="");else if(null===t[o])this.isAttribute(o)?i+="":"?"===o[0]?i+=this.indentate(e)+"<"+o+"?"+this.tagEndChar:i+=this.indentate(e)+"<"+o+"/"+this.tagEndChar;else if(t[o]instanceof Date)i+=this.buildTextValNode(t[o],o,"",e);else if("object"!=typeof t[o]){const n=this.isAttribute(o);if(n&&!this.ignoreAttributesFn(n,s))r+=this.buildAttrPairStr(n,""+t[o]);else if(!n)if(o===this.options.textNodeName){let e=this.options.tagValueProcessor(o,""+t[o]);i+=this.replaceEntitiesValue(e)}else i+=this.buildTextValNode(t[o],o,"",e)}else if(Array.isArray(t[o])){const r=t[o].length;let s="",a="";for(let l=0;l<r;l++){const r=t[o][l];if(void 0===r);else if(null===r)"?"===o[0]?i+=this.indentate(e)+"<"+o+"?"+this.tagEndChar:i+=this.indentate(e)+"<"+o+"/"+this.tagEndChar;else if("object"==typeof r)if(this.options.oneListGroup){const t=this.j2x(r,e+1,n.concat(o));s+=t.val,this.options.attributesGroupName&&r.hasOwnProperty(this.options.attributesGroupName)&&(a+=t.attrStr)}else s+=this.processTextOrObjNode(r,o,e,n);else if(this.options.oneListGroup){let t=this.options.tagValueProcessor(o,r);t=this.replaceEntitiesValue(t),s+=t}else s+=this.buildTextValNode(r,o,"",e)}this.options.oneListGroup&&(s=this.buildObjectNode(s,o,a,e)),i+=s}else if(this.options.attributesGroupName&&o===this.options.attributesGroupName){const e=Object.keys(t[o]),n=e.length;for(let i=0;i<n;i++)r+=this.buildAttrPairStr(e[i],""+t[o][e[i]])}else i+=this.processTextOrObjNode(t[o],o,e,n);return{attrStr:r,val:i}},r.prototype.buildAttrPairStr=function(t,e){return e=this.options.attributeValueProcessor(t,""+e),e=this.replaceEntitiesValue(e),this.options.suppressBooleanAttributes&&"true"===e?" "+t:" "+t+'="'+e+'"'},r.prototype.buildObjectNode=function(t,e,n,r){if(""===t)return"?"===e[0]?this.indentate(r)+"<"+e+n+"?"+this.tagEndChar:this.indentate(r)+"<"+e+n+this.closeTag(e)+this.tagEndChar;{let i="</"+e+this.tagEndChar,s="";return"?"===e[0]&&(s="?",i=""),!n&&""!==n||-1!==t.indexOf("<")?!1!==this.options.commentPropName&&e===this.options.commentPropName&&0===s.length?this.indentate(r)+`\x3c!--${t}--\x3e`+this.newLine:this.indentate(r)+"<"+e+n+s+this.tagEndChar+t+this.indentate(r)+i:this.indentate(r)+"<"+e+n+s+">"+t+i}},r.prototype.closeTag=function(t){let e="";return-1!==this.options.unpairedTags.indexOf(t)?this.options.suppressUnpairedNode||(e="/"):e=this.options.suppressEmptyNode?"/":`></${t}`,e},r.prototype.buildTextValNode=function(t,e,n,r){if(!1!==this.options.cdataPropName&&e===this.options.cdataPropName)return this.indentate(r)+`<![CDATA[${t}]]>`+this.newLine;if(!1!==this.options.commentPropName&&e===this.options.commentPropName)return this.indentate(r)+`\x3c!--${t}--\x3e`+this.newLine;if("?"===e[0])return this.indentate(r)+"<"+e+n+"?"+this.tagEndChar;{let i=this.options.tagValueProcessor(e,t);return i=this.replaceEntitiesValue(i),""===i?this.indentate(r)+"<"+e+n+this.closeTag(e)+this.tagEndChar:this.indentate(r)+"<"+e+n+">"+i+"</"+e+this.tagEndChar}},r.prototype.replaceEntitiesValue=function(t){if(t&&t.length>0&&this.options.processEntities)for(let e=0;e<this.options.entities.length;e++){const n=this.options.entities[e];t=t.replace(n.regex,n.val)}return t},X=r}();return q={XMLParser:e,XMLValidator:t,XMLBuilder:n}}();class J{_view;constructor(t){Q(t),this._view=t}get id(){return this._view.id}get name(){return this._view.name}get caption(){return this._view.caption}get emptyTitle(){return this._view.emptyTitle}get emptyCaption(){return this._view.emptyCaption}get getContents(){return this._view.getContents}get icon(){return this._view.icon}set icon(t){this._view.icon=t}get order(){return this._view.order}set order(t){this._view.order=t}get params(){return this._view.params}set params(t){this._view.params=t}get columns(){return this._view.columns}get emptyView(){return this._view.emptyView}get parent(){return this._view.parent}get sticky(){return this._view.sticky}get expanded(){return this._view.expanded}set expanded(t){this._view.expanded=t}get defaultSortKey(){return this._view.defaultSortKey}get loadChildViews(){return this._view.loadChildViews}}const Q=function(t){if(!t.id||"string"!=typeof t.id)throw new Error("View id is required and must be a string");if(!t.name||"string"!=typeof t.name)throw new Error("View name is required and must be a string");if("caption"in t&&"string"!=typeof t.caption)throw new Error("View caption must be a string");if(!t.getContents||"function"!=typeof t.getContents)throw new Error("View getContents is required and must be a function");if(!t.icon||"string"!=typeof t.icon||!function(t){if("string"!=typeof t)throw new TypeError(`Expected a \`string\`, got \`${typeof t}\``);if(0===(t=t.trim()).length)return!1;if(!0!==W.XMLValidator.validate(t))return!1;let e;const n=new W.XMLParser;try{e=n.parse(t)}catch{return!1}return!!e&&!!Object.keys(e).some((t=>"svg"===t.toLowerCase()))}(t.icon))throw new Error("View icon is required and must be a valid svg string");if("order"in t&&"number"!=typeof t.order)throw new Error("View order must be a number");if(t.columns&&t.columns.forEach((t=>{if(!(t instanceof b))throw new Error("View columns must be an array of Column. Invalid column found")})),t.emptyView&&"function"!=typeof t.emptyView)throw new Error("View emptyView must be a function");if(t.parent&&"string"!=typeof t.parent)throw new Error("View parent must be a string");if("sticky"in t&&"boolean"!=typeof t.sticky)throw new Error("View sticky must be a boolean");if("expanded"in t&&"boolean"!=typeof t.expanded)throw new Error("View expanded must be a boolean");if(t.defaultSortKey&&"string"!=typeof t.defaultSortKey)throw new Error("View defaultSortKey must be a string");if(t.loadChildViews&&"function"!=typeof t.loadChildViews)throw new Error("View loadChildViews must be a function");return!0};var tt,et,nt,rt;function it(){if(et)return tt;et=1;const t="object"==typeof o&&o.env&&o.env.NODE_DEBUG&&/\bsemver\b/i.test(o.env.NODE_DEBUG)?(...t)=>console.error("SEMVER",...t):()=>{};return tt=t}function st(){if(rt)return nt;rt=1;const t=Number.MAX_SAFE_INTEGER||9007199254740991;return nt={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_BUILD_LENGTH:250,MAX_SAFE_INTEGER:t,RELEASE_TYPES:["major","premajor","minor","preminor","patch","prepatch","prerelease"],SEMVER_SPEC_VERSION:"2.0.0",FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}}var ot,at,lt,ct,ut,dt,ht,pt,gt,ft,mt,bt,yt,vt={exports:{}};function Et(){if(ht)return dt;ht=1;const t=it(),{MAX_LENGTH:e,MAX_SAFE_INTEGER:n}=st(),{safeRe:r,t:i}=(ot||(ot=1,function(t,e){const{MAX_SAFE_COMPONENT_LENGTH:n,MAX_SAFE_BUILD_LENGTH:r,MAX_LENGTH:i}=st(),s=it(),o=(e=t.exports={}).re=[],a=e.safeRe=[],l=e.src=[],c=e.t={};let u=0;const d="[a-zA-Z0-9-]",h=[["\\s",1],["\\d",i],[d,r]],p=(t,e,n)=>{const r=(t=>{for(const[e,n]of h)t=t.split(`${e}*`).join(`${e}{0,${n}}`).split(`${e}+`).join(`${e}{1,${n}}`);return t})(e),i=u++;s(t,i,e),c[t]=i,l[i]=e,o[i]=new RegExp(e,n?"g":void 0),a[i]=new RegExp(r,n?"g":void 0)};p("NUMERICIDENTIFIER","0|[1-9]\\d*"),p("NUMERICIDENTIFIERLOOSE","\\d+"),p("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${d}*`),p("MAINVERSION",`(${l[c.NUMERICIDENTIFIER]})\\.(${l[c.NUMERICIDENTIFIER]})\\.(${l[c.NUMERICIDENTIFIER]})`),p("MAINVERSIONLOOSE",`(${l[c.NUMERICIDENTIFIERLOOSE]})\\.(${l[c.NUMERICIDENTIFIERLOOSE]})\\.(${l[c.NUMERICIDENTIFIERLOOSE]})`),p("PRERELEASEIDENTIFIER",`(?:${l[c.NUMERICIDENTIFIER]}|${l[c.NONNUMERICIDENTIFIER]})`),p("PRERELEASEIDENTIFIERLOOSE",`(?:${l[c.NUMERICIDENTIFIERLOOSE]}|${l[c.NONNUMERICIDENTIFIER]})`),p("PRERELEASE",`(?:-(${l[c.PRERELEASEIDENTIFIER]}(?:\\.${l[c.PRERELEASEIDENTIFIER]})*))`),p("PRERELEASELOOSE",`(?:-?(${l[c.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${l[c.PRERELEASEIDENTIFIERLOOSE]})*))`),p("BUILDIDENTIFIER",`${d}+`),p("BUILD",`(?:\\+(${l[c.BUILDIDENTIFIER]}(?:\\.${l[c.BUILDIDENTIFIER]})*))`),p("FULLPLAIN",`v?${l[c.MAINVERSION]}${l[c.PRERELEASE]}?${l[c.BUILD]}?`),p("FULL",`^${l[c.FULLPLAIN]}$`),p("LOOSEPLAIN",`[v=\\s]*${l[c.MAINVERSIONLOOSE]}${l[c.PRERELEASELOOSE]}?${l[c.BUILD]}?`),p("LOOSE",`^${l[c.LOOSEPLAIN]}$`),p("GTLT","((?:<|>)?=?)"),p("XRANGEIDENTIFIERLOOSE",`${l[c.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),p("XRANGEIDENTIFIER",`${l[c.NUMERICIDENTIFIER]}|x|X|\\*`),p("XRANGEPLAIN",`[v=\\s]*(${l[c.XRANGEIDENTIFIER]})(?:\\.(${l[c.XRANGEIDENTIFIER]})(?:\\.(${l[c.XRANGEIDENTIFIER]})(?:${l[c.PRERELEASE]})?${l[c.BUILD]}?)?)?`),p("XRANGEPLAINLOOSE",`[v=\\s]*(${l[c.XRANGEIDENTIFIERLOOSE]})(?:\\.(${l[c.XRANGEIDENTIFIERLOOSE]})(?:\\.(${l[c.XRANGEIDENTIFIERLOOSE]})(?:${l[c.PRERELEASELOOSE]})?${l[c.BUILD]}?)?)?`),p("XRANGE",`^${l[c.GTLT]}\\s*${l[c.XRANGEPLAIN]}$`),p("XRANGELOOSE",`^${l[c.GTLT]}\\s*${l[c.XRANGEPLAINLOOSE]}$`),p("COERCEPLAIN",`(^|[^\\d])(\\d{1,${n}})(?:\\.(\\d{1,${n}}))?(?:\\.(\\d{1,${n}}))?`),p("COERCE",`${l[c.COERCEPLAIN]}(?:$|[^\\d])`),p("COERCEFULL",l[c.COERCEPLAIN]+`(?:${l[c.PRERELEASE]})?(?:${l[c.BUILD]})?(?:$|[^\\d])`),p("COERCERTL",l[c.COERCE],!0),p("COERCERTLFULL",l[c.COERCEFULL],!0),p("LONETILDE","(?:~>?)"),p("TILDETRIM",`(\\s*)${l[c.LONETILDE]}\\s+`,!0),e.tildeTrimReplace="$1~",p("TILDE",`^${l[c.LONETILDE]}${l[c.XRANGEPLAIN]}$`),p("TILDELOOSE",`^${l[c.LONETILDE]}${l[c.XRANGEPLAINLOOSE]}$`),p("LONECARET","(?:\\^)"),p("CARETTRIM",`(\\s*)${l[c.LONECARET]}\\s+`,!0),e.caretTrimReplace="$1^",p("CARET",`^${l[c.LONECARET]}${l[c.XRANGEPLAIN]}$`),p("CARETLOOSE",`^${l[c.LONECARET]}${l[c.XRANGEPLAINLOOSE]}$`),p("COMPARATORLOOSE",`^${l[c.GTLT]}\\s*(${l[c.LOOSEPLAIN]})$|^$`),p("COMPARATOR",`^${l[c.GTLT]}\\s*(${l[c.FULLPLAIN]})$|^$`),p("COMPARATORTRIM",`(\\s*)${l[c.GTLT]}\\s*(${l[c.LOOSEPLAIN]}|${l[c.XRANGEPLAIN]})`,!0),e.comparatorTrimReplace="$1$2$3",p("HYPHENRANGE",`^\\s*(${l[c.XRANGEPLAIN]})\\s+-\\s+(${l[c.XRANGEPLAIN]})\\s*$`),p("HYPHENRANGELOOSE",`^\\s*(${l[c.XRANGEPLAINLOOSE]})\\s+-\\s+(${l[c.XRANGEPLAINLOOSE]})\\s*$`),p("STAR","(<|>)?=?\\s*\\*"),p("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),p("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")}(vt,vt.exports)),vt.exports),s=function(){if(lt)return at;lt=1;const t=Object.freeze({loose:!0}),e=Object.freeze({});return at=n=>n?"object"!=typeof n?t:n:e}(),{compareIdentifiers:o}=function(){if(ut)return ct;ut=1;const t=/^[0-9]+$/,e=(e,n)=>{const r=t.test(e),i=t.test(n);return r&&i&&(e=+e,n=+n),e===n?0:r&&!i?-1:i&&!r?1:e<n?-1:1};return ct={compareIdentifiers:e,rcompareIdentifiers:(t,n)=>e(n,t)}}();class a{constructor(o,l){if(l=s(l),o instanceof a){if(o.loose===!!l.loose&&o.includePrerelease===!!l.includePrerelease)return o;o=o.version}else if("string"!=typeof o)throw new TypeError(`Invalid version. Must be a string. Got type "${typeof o}".`);if(o.length>e)throw new TypeError(`version is longer than ${e} characters`);t("SemVer",o,l),this.options=l,this.loose=!!l.loose,this.includePrerelease=!!l.includePrerelease;const c=o.trim().match(l.loose?r[i.LOOSE]:r[i.FULL]);if(!c)throw new TypeError(`Invalid Version: ${o}`);if(this.raw=o,this.major=+c[1],this.minor=+c[2],this.patch=+c[3],this.major>n||this.major<0)throw new TypeError("Invalid major version");if(this.minor>n||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>n||this.patch<0)throw new TypeError("Invalid patch version");c[4]?this.prerelease=c[4].split(".").map((t=>{if(/^[0-9]+$/.test(t)){const e=+t;if(e>=0&&e<n)return e}return t})):this.prerelease=[],this.build=c[5]?c[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(e){if(t("SemVer.compare",this.version,this.options,e),!(e instanceof a)){if("string"==typeof e&&e===this.version)return 0;e=new a(e,this.options)}return e.version===this.version?0:this.compareMain(e)||this.comparePre(e)}compareMain(t){return t instanceof a||(t=new a(t,this.options)),o(this.major,t.major)||o(this.minor,t.minor)||o(this.patch,t.patch)}comparePre(e){if(e instanceof a||(e=new a(e,this.options)),this.prerelease.length&&!e.prerelease.length)return-1;if(!this.prerelease.length&&e.prerelease.length)return 1;if(!this.prerelease.length&&!e.prerelease.length)return 0;let n=0;do{const r=this.prerelease[n],i=e.prerelease[n];if(t("prerelease compare",n,r,i),void 0===r&&void 0===i)return 0;if(void 0===i)return 1;if(void 0===r)return-1;if(r!==i)return o(r,i)}while(++n)}compareBuild(e){e instanceof a||(e=new a(e,this.options));let n=0;do{const r=this.build[n],i=e.build[n];if(t("build compare",n,r,i),void 0===r&&void 0===i)return 0;if(void 0===i)return 1;if(void 0===r)return-1;if(r!==i)return o(r,i)}while(++n)}inc(t,e,n){switch(t){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",e,n);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",e,n);break;case"prepatch":this.prerelease.length=0,this.inc("patch",e,n),this.inc("pre",e,n);break;case"prerelease":0===this.prerelease.length&&this.inc("patch",e,n),this.inc("pre",e,n);break;case"major":0===this.minor&&0===this.patch&&0!==this.prerelease.length||this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":0===this.patch&&0!==this.prerelease.length||this.minor++,this.patch=0,this.prerelease=[];break;case"patch":0===this.prerelease.length&&this.patch++,this.prerelease=[];break;case"pre":{const t=Number(n)?1:0;if(!e&&!1===n)throw new Error("invalid increment argument: identifier is empty");if(0===this.prerelease.length)this.prerelease=[t];else{let r=this.prerelease.length;for(;--r>=0;)"number"==typeof this.prerelease[r]&&(this.prerelease[r]++,r=-2);if(-1===r){if(e===this.prerelease.join(".")&&!1===n)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(t)}}if(e){let r=[e,t];!1===n&&(r=[e]),0===o(this.prerelease[0],e)?isNaN(this.prerelease[1])&&(this.prerelease=r):this.prerelease=r}break}default:throw new Error(`invalid increment argument: ${t}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}}return dt=a}!function(){if(mt)return ft;mt=1;const t=function(){if(gt)return pt;gt=1;const t=Et();return pt=(e,n,r=!1)=>{if(e instanceof t)return e;try{return new t(e,n)}catch(t){if(!r)return null;throw t}}}();ft=(e,n)=>{const r=t(e,n);return r?r.version:null}}(),function(){if(yt)return bt;yt=1;const t=Et();bt=(e,n)=>new t(e,n).major}(),s.m},42634:()=>{},44563:(t,e,n)=>{"use strict";var r=n(35810),i=n(94205),s=n(85471),o=n(82680),a=n(85168),l=n(53334);const c='<svg xmlns="http://www.w3.org/2000/svg" id="mdi-tag-multiple" viewBox="0 0 24 24"><path d="M5.5,9A1.5,1.5 0 0,0 7,7.5A1.5,1.5 0 0,0 5.5,6A1.5,1.5 0 0,0 4,7.5A1.5,1.5 0 0,0 5.5,9M17.41,11.58C17.77,11.94 18,12.44 18,13C18,13.55 17.78,14.05 17.41,14.41L12.41,19.41C12.05,19.77 11.55,20 11,20C10.45,20 9.95,19.78 9.58,19.41L2.59,12.42C2.22,12.05 2,11.55 2,11V6C2,4.89 2.89,4 4,4H9C9.55,4 10.05,4.22 10.41,4.58L17.41,11.58M13.54,5.71L14.54,4.71L21.41,11.58C21.78,11.94 22,12.45 22,13C22,13.55 21.78,14.05 21.42,14.41L16.04,19.79L15.04,18.79L20.75,13L13.54,5.71Z" /></svg>';async function u(t){const e=await new Promise((e=>{(0,a.Ss)((0,s.$V)((()=>Promise.all([n.e(4208),n.e(9552)]).then(n.bind(n,99552)))),{nodes:t},(t=>{e(t)}))}));return Array(t.length).fill(e)}const d=new r.hY({id:"systemtags:bulk",displayName:()=>(0,l.t)("systemtags","Manage tags"),iconSvgInline:()=>c,enabled:t=>!(0,o.f)()&&0!==t.length&&!t.some((t=>!t.isDavResource))&&!t.some((t=>!(t.permissions&r.aX.UPDATE))),exec:async t=>u([t])[0],execBatch:u});var h=n(65899),p=n(61338);const g=(0,n(35947).YK)().setApp("files").detectUser().build(),f=async t=>{const e=function(){const t=(0,h.nY)("active",{state:()=>({_initialized:!1,activeNode:null,activeView:null,activeAction:null}),actions:{setActiveNode(t){if(!t)throw new Error("Use clearActiveNode to clear the active node");g.debug("Setting active node",{node:t}),this.activeNode=t},clearActiveNode(){this.activeNode=null},onDeletedNode(t){this.activeNode&&this.activeNode.source===t.source&&this.clearActiveNode()},setActiveAction(t){this.activeAction=t},clearActiveAction(){this.activeAction=null},onChangedView(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;g.debug("Setting active view",{view:t}),this.activeView=t,this.clearActiveNode()}}}),e=t(...arguments),n=(0,r.bh)();return e._initialized||((0,p.B1)("files:node:deleted",e.onDeletedNode),e._initialized=!0,e.onChangedView(n.active),n.addEventListener("updateActive",(t=>{e.onChangedView(t.detail)}))),e}((window._nc_files_pinia||(window._nc_files_pinia=(0,h.Ey)()),window._nc_files_pinia)),n=window?.OCP?.Files?.Router?.query?.dir||"/",i=e.activeNode,o=e.activeView;if(!i||!o)return void g.error("No active node or view",{node:i,view:o});if(i.status===r.zI.LOADING)return void g.debug("Node is already loading",{node:i});if(!t.enabled([i],o))return void g.debug("Action is not not available for the current context",{action:t,node:i,view:o});let c=t.id;try{c=t.displayName([i],o)}catch(e){g.error("Error while getting action display name",{action:t,error:e})}try{s.Ay.set(i,"status",r.zI.LOADING),e.setActiveAction(t);const u=await t.exec(i,o,n);if(null==u)return;if(u)return void(0,a.Te)((0,l.t)("files",'"{displayName}" action executed successfully',{displayName:c}));(0,a.Qg)((0,l.t)("files",'"{displayName}" action failed',{displayName:c}))}catch(e){g.error("Error while executing action",{action:t,error:e}),(0,a.Qg)((0,l.t)("files",'"{displayName}" action failed',{displayName:c}))}finally{s.Ay.set(i,"status",void 0),e.clearActiveAction()}};var m=n(25631),b=n(21777),y=n(82528);const v="/systemtags",E=(0,r.H4)(),w=t=>(0,r.Al)(t),A=t=>`<?xml version="1.0"?>\n<oc:filter-files ${(0,r.CP)()}>\n\t<d:prop>\n\t\t${(0,r.VX)()}\n\t</d:prop>\n\t<oc:filter-rules>\n\t\t<oc:systemtag>${t}</oc:systemtag>\n\t</oc:filter-rules>\n</oc:filter-files>`,N=function(t){return new r.vd({id:t.id,source:`${r.PY}${v}/${t.id}`,owner:String((0,b.HW)()?.uid??"anonymous"),root:v,displayname:t.displayName,permissions:r.aX.READ,attributes:{...t,"is-tag":!0}})},x="tags";var I=n(85072),O=n.n(I),C=n(97825),T=n.n(C),L=n(77659),k=n.n(L),R=n(55056),$=n.n(R),P=n(10540),_=n.n(P),S=n(41113),M=n.n(S),F=n(73911),j={};j.styleTagTransform=M(),j.setAttributes=$(),j.insert=k().bind(null,"head"),j.domAPI=T(),j.insertStyleElement=_(),O()(F.A,j),F.A&&F.A.locals&&F.A.locals;var D=n(57599),V=n(12686);const B=[],G=function(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const n=document.createElement("li");n.classList.add("files-list__system-tag"),n.setAttribute("data-systemtag-name",t),n.textContent=t;const r=B.find((e=>e.displayName===t));if(r?.color){const t=getComputedStyle(document.body).getPropertyValue("--color-main-background").replace("#","")||((0,D.j2)()?"000000":"ffffff"),e=(0,D.W7)(`#${r.color}`,`#${t}`);n.style.setProperty("--systemtag-color",e),n.setAttribute("data-systemtag-color","true")}return e&&n.classList.add("files-list__system-tag--more"),n},X=async function(t){const e=(0,V.rA)(t),n=document.createElement("ul");if(n.classList.add("files-list__system-tags"),n.setAttribute("aria-label",(0,l.t)("files","Assigned collaborative tags")),n.setAttribute("data-systemtags-fileid",t.fileid?.toString()||""),0===e.length)return n;if(0===B.length)try{B.push(...await(0,y.un)())}catch(t){m.A.error("Failed to fetch tags",{error:t})}if(n.append(G(e[0])),2===e.length)n.append(G(e[1]));else if(e.length>1){const t=G("+"+(e.length-1),!0);t.setAttribute("title",e.slice(1).join(", ")),t.setAttribute("aria-hidden","true"),t.setAttribute("role","presentation"),n.append(t);for(const t of e.slice(1)){const e=G(t);e.classList.add("hidden-visually"),n.append(e)}}return n},U=new r.hY({id:"system-tags",displayName:()=>"",iconSvgInline:()=>"",enabled:t=>1===t.length,exec:async()=>null,renderInline:X,order:0});(0,p.B1)("systemtags:node:updated",(function(t){X(t).then((e=>{document.querySelectorAll(`[data-systemtags-fileid="${t.fileid}"]`).forEach((t=>{t.replaceWith(e)}))}))})),(0,p.B1)("systemtags:tag:created",(function(t){B.push(t)})),(0,p.B1)("systemtags:tag:deleted",(function(t){B.splice(B.findIndex((e=>e.id===t.id)),1)})),(0,p.B1)("systemtags:tag:updated",(function(t){const e=B.findIndex((e=>e.id===t.id));-1!==e&&(B[e]=t),function(t){document.querySelectorAll(`[data-systemtag-name="${t.displayName}"]`).forEach((e=>{e.style.setProperty("--systemtag-color",`#${t.color}`)}))}(t)}));const q=new r.hY({id:"systemtags:open-in-files",displayName:()=>(0,l.t)("systemtags","Open in Files"),iconSvgInline:()=>"",enabled:(t,e)=>e.id===x&&1===t.length&&!0!==t[0].attributes["is-tag"]&&t[0].type===r.pt.Folder,async exec(t){let e=t.dirname;return t.type===r.pt.Folder&&(e=t.path),window.OCP.Files.Router.goToRoute(null,{view:"files",fileid:String(t.fileid)},{dir:e,openfile:"true"}),null},order:-1e3,default:r.m9.HIDDEN});(0,r.Yc)("nc:system-tags"),(0,r.Gg)(d),(0,r.Gg)(U),(0,r.Gg)(q),(0,r.bh)().register(new r.Ss({id:x,name:(0,l.Tl)("systemtags","Tags"),caption:(0,l.Tl)("systemtags","List of tags and their associated files and folders."),emptyTitle:(0,l.Tl)("systemtags","No tags found"),emptyCaption:(0,l.Tl)("systemtags","Tags you have created will show up here."),icon:c,order:25,getContents:async function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"/";const e=(await(0,y.un)()).filter((t=>t.userVisible));if("/"===t)return{folder:new r.vd({id:0,source:`${r.PY}${v}`,owner:(0,b.HW)()?.uid,root:v,permissions:r.aX.NONE}),contents:e.map(N)};const n=parseInt(t.split("/",2)[1]),i=e.find((t=>t.id===n));if(!i)throw new Error("Tag not found");return{folder:N(i),contents:(await E.getDirectoryContents(r.lJ,{details:!0,data:A(n),headers:{method:"REPORT"}})).data.map(w)}}})),document.addEventListener("DOMContentLoaded",(()=>{(0,i.C)("t",(()=>f(d)),{stop:!0,prevent:!0}),m.A.debug("Hotkeys registered")}))},57599:(t,e,n)=>{"use strict";n.d(e,{W7:()=>P,Pj:()=>$,j2:()=>R});const r={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},i=Object.create(null);for(const t in r)Object.hasOwn(r,t)&&(i[r[t]]=t);const s={to:{},get:{}};function o(t,e,n){return Math.min(Math.max(e,t),n)}function a(t){const e=Math.round(t).toString(16).toUpperCase();return e.length<2?"0"+e:e}s.get=function(t){let e,n;switch(t.slice(0,3).toLowerCase()){case"hsl":e=s.get.hsl(t),n="hsl";break;case"hwb":e=s.get.hwb(t),n="hwb";break;default:e=s.get.rgb(t),n="rgb"}return e?{model:n,value:e}:null},s.get.rgb=function(t){if(!t)return null;let e,n,i,s=[0,0,0,1];if(e=t.match(/^#([a-f\d]{6})([a-f\d]{2})?$/i)){for(i=e[2],e=e[1],n=0;n<3;n++){const t=2*n;s[n]=Number.parseInt(e.slice(t,t+2),16)}i&&(s[3]=Number.parseInt(i,16)/255)}else if(e=t.match(/^#([a-f\d]{3,4})$/i)){for(e=e[1],i=e[3],n=0;n<3;n++)s[n]=Number.parseInt(e[n]+e[n],16);i&&(s[3]=Number.parseInt(i+i,16)/255)}else if(e=t.match(/^rgba?\(\s*([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)\s*(?:[,|/]\s*([+-]?[\d.]+)(%?)\s*)?\)$/)){for(n=0;n<3;n++)s[n]=Number.parseInt(e[n+1],10);e[4]&&(s[3]=e[5]?.01*Number.parseFloat(e[4]):Number.parseFloat(e[4]))}else{if(!(e=t.match(/^rgba?\(\s*([+-]?[\d.]+)%\s*,?\s*([+-]?[\d.]+)%\s*,?\s*([+-]?[\d.]+)%\s*(?:[,|/]\s*([+-]?[\d.]+)(%?)\s*)?\)$/)))return(e=t.match(/^(\w+)$/))?"transparent"===e[1]?[0,0,0,0]:Object.hasOwn(r,e[1])?(s=r[e[1]],s[3]=1,s):null:null;for(n=0;n<3;n++)s[n]=Math.round(2.55*Number.parseFloat(e[n+1]));e[4]&&(s[3]=e[5]?.01*Number.parseFloat(e[4]):Number.parseFloat(e[4]))}for(n=0;n<3;n++)s[n]=o(s[n],0,255);return s[3]=o(s[3],0,1),s},s.get.hsl=function(t){if(!t)return null;const e=t.match(/^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d.]+)%\s*,?\s*([+-]?[\d.]+)%\s*(?:[,|/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/);if(e){const t=Number.parseFloat(e[4]);return[(Number.parseFloat(e[1])%360+360)%360,o(Number.parseFloat(e[2]),0,100),o(Number.parseFloat(e[3]),0,100),o(Number.isNaN(t)?1:t,0,1)]}return null},s.get.hwb=function(t){if(!t)return null;const e=t.match(/^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d.]+)%\s*,\s*([+-]?[\d.]+)%\s*(?:,\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/);if(e){const t=Number.parseFloat(e[4]);return[(Number.parseFloat(e[1])%360+360)%360,o(Number.parseFloat(e[2]),0,100),o(Number.parseFloat(e[3]),0,100),o(Number.isNaN(t)?1:t,0,1)]}return null},s.to.hex=function(...t){return"#"+a(t[0])+a(t[1])+a(t[2])+(t[3]<1?a(Math.round(255*t[3])):"")},s.to.rgb=function(...t){return t.length<4||1===t[3]?"rgb("+Math.round(t[0])+", "+Math.round(t[1])+", "+Math.round(t[2])+")":"rgba("+Math.round(t[0])+", "+Math.round(t[1])+", "+Math.round(t[2])+", "+t[3]+")"},s.to.rgb.percent=function(...t){const e=Math.round(t[0]/255*100),n=Math.round(t[1]/255*100),r=Math.round(t[2]/255*100);return t.length<4||1===t[3]?"rgb("+e+"%, "+n+"%, "+r+"%)":"rgba("+e+"%, "+n+"%, "+r+"%, "+t[3]+")"},s.to.hsl=function(...t){return t.length<4||1===t[3]?"hsl("+t[0]+", "+t[1]+"%, "+t[2]+"%)":"hsla("+t[0]+", "+t[1]+"%, "+t[2]+"%, "+t[3]+")"},s.to.hwb=function(...t){let e="";return t.length>=4&&1!==t[3]&&(e=", "+t[3]),"hwb("+t[0]+", "+t[1]+"%, "+t[2]+"%"+e+")"},s.to.keyword=function(...t){return i[t.slice(0,3)]};const l=s,c={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},u={};for(const t of Object.keys(c))u[c[t]]=t;const d={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}},h=d,p=(6/29)**3;for(const t of Object.keys(d)){if(!("channels"in d[t]))throw new Error("missing channels property: "+t);if(!("labels"in d[t]))throw new Error("missing channel labels property: "+t);if(d[t].labels.length!==d[t].channels)throw new Error("channel and label counts mismatch: "+t);const{channels:e,labels:n}=d[t];delete d[t].channels,delete d[t].labels,Object.defineProperty(d[t],"channels",{value:e}),Object.defineProperty(d[t],"labels",{value:n})}function g(t,e){return function(n){return e(t(n))}}function f(t,e){const n=[e[t].parent,t];let r=h[e[t].parent][t],i=e[t].parent;for(;e[i].parent;)n.unshift(e[i].parent),r=g(h[e[i].parent][i],r),i=e[i].parent;return r.conversion=n,r}d.rgb.hsl=function(t){const e=t[0]/255,n=t[1]/255,r=t[2]/255,i=Math.min(e,n,r),s=Math.max(e,n,r),o=s-i;let a,l;switch(s){case i:a=0;break;case e:a=(n-r)/o;break;case n:a=2+(r-e)/o;break;case r:a=4+(e-n)/o}a=Math.min(60*a,360),a<0&&(a+=360);const c=(i+s)/2;return l=s===i?0:c<=.5?o/(s+i):o/(2-s-i),[a,100*l,100*c]},d.rgb.hsv=function(t){let e,n,r,i,s;const o=t[0]/255,a=t[1]/255,l=t[2]/255,c=Math.max(o,a,l),u=c-Math.min(o,a,l),d=function(t){return(c-t)/6/u+.5};if(0===u)i=0,s=0;else{switch(s=u/c,e=d(o),n=d(a),r=d(l),c){case o:i=r-n;break;case a:i=1/3+e-r;break;case l:i=2/3+n-e}i<0?i+=1:i>1&&(i-=1)}return[360*i,100*s,100*c]},d.rgb.hwb=function(t){const e=t[0],n=t[1];let r=t[2];const i=d.rgb.hsl(t)[0],s=1/255*Math.min(e,Math.min(n,r));return r=1-1/255*Math.max(e,Math.max(n,r)),[i,100*s,100*r]},d.rgb.cmyk=function(t){const e=t[0]/255,n=t[1]/255,r=t[2]/255,i=Math.min(1-e,1-n,1-r);return[100*((1-e-i)/(1-i)||0),100*((1-n-i)/(1-i)||0),100*((1-r-i)/(1-i)||0),100*i]},d.rgb.keyword=function(t){const e=u[t];if(e)return e;let n,r=Number.POSITIVE_INFINITY;for(const e of Object.keys(c)){const o=(s=c[e],((i=t)[0]-s[0])**2+(i[1]-s[1])**2+(i[2]-s[2])**2);o<r&&(r=o,n=e)}var i,s;return n},d.keyword.rgb=function(t){return c[t]},d.rgb.xyz=function(t){let e=t[0]/255,n=t[1]/255,r=t[2]/255;return e=e>.04045?((e+.055)/1.055)**2.4:e/12.92,n=n>.04045?((n+.055)/1.055)**2.4:n/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92,[100*(.4124564*e+.3575761*n+.1804375*r),100*(.2126729*e+.7151522*n+.072175*r),100*(.0193339*e+.119192*n+.9503041*r)]},d.rgb.lab=function(t){const e=d.rgb.xyz(t);let n=e[0],r=e[1],i=e[2];return n/=95.047,r/=100,i/=108.883,n=n>p?n**(1/3):7.787*n+16/116,r=r>p?r**(1/3):7.787*r+16/116,i=i>p?i**(1/3):7.787*i+16/116,[116*r-16,500*(n-r),200*(r-i)]},d.hsl.rgb=function(t){const e=t[0]/360,n=t[1]/100,r=t[2]/100;let i,s;if(0===n)return s=255*r,[s,s,s];const o=r<.5?r*(1+n):r+n-r*n,a=2*r-o,l=[0,0,0];for(let t=0;t<3;t++)i=e+1/3*-(t-1),i<0&&i++,i>1&&i--,s=6*i<1?a+6*(o-a)*i:2*i<1?o:3*i<2?a+(o-a)*(2/3-i)*6:a,l[t]=255*s;return l},d.hsl.hsv=function(t){const e=t[0];let n=t[1]/100,r=t[2]/100,i=n;const s=Math.max(r,.01);return r*=2,n*=r<=1?r:2-r,i*=s<=1?s:2-s,[e,100*(0===r?2*i/(s+i):2*n/(r+n)),(r+n)/2*100]},d.hsv.rgb=function(t){const e=t[0]/60,n=t[1]/100;let r=t[2]/100;const i=Math.floor(e)%6,s=e-Math.floor(e),o=255*r*(1-n),a=255*r*(1-n*s),l=255*r*(1-n*(1-s));switch(r*=255,i){case 0:return[r,l,o];case 1:return[a,r,o];case 2:return[o,r,l];case 3:return[o,a,r];case 4:return[l,o,r];case 5:return[r,o,a]}},d.hsv.hsl=function(t){const e=t[0],n=t[1]/100,r=t[2]/100,i=Math.max(r,.01);let s,o;o=(2-n)*r;const a=(2-n)*i;return s=n*i,s/=a<=1?a:2-a,s=s||0,o/=2,[e,100*s,100*o]},d.hwb.rgb=function(t){const e=t[0]/360;let n=t[1]/100,r=t[2]/100;const i=n+r;let s;i>1&&(n/=i,r/=i);const o=Math.floor(6*e),a=1-r;s=6*e-o,1&o&&(s=1-s);const l=n+s*(a-n);let c,u,d;switch(o){default:case 6:case 0:c=a,u=l,d=n;break;case 1:c=l,u=a,d=n;break;case 2:c=n,u=a,d=l;break;case 3:c=n,u=l,d=a;break;case 4:c=l,u=n,d=a;break;case 5:c=a,u=n,d=l}return[255*c,255*u,255*d]},d.cmyk.rgb=function(t){const e=t[0]/100,n=t[1]/100,r=t[2]/100,i=t[3]/100;return[255*(1-Math.min(1,e*(1-i)+i)),255*(1-Math.min(1,n*(1-i)+i)),255*(1-Math.min(1,r*(1-i)+i))]},d.xyz.rgb=function(t){const e=t[0]/100,n=t[1]/100,r=t[2]/100;let i,s,o;return i=3.2404542*e+-1.5371385*n+-.4985314*r,s=-.969266*e+1.8760108*n+.041556*r,o=.0556434*e+-.2040259*n+1.0572252*r,i=i>.0031308?1.055*i**(1/2.4)-.055:12.92*i,s=s>.0031308?1.055*s**(1/2.4)-.055:12.92*s,o=o>.0031308?1.055*o**(1/2.4)-.055:12.92*o,i=Math.min(Math.max(0,i),1),s=Math.min(Math.max(0,s),1),o=Math.min(Math.max(0,o),1),[255*i,255*s,255*o]},d.xyz.lab=function(t){let e=t[0],n=t[1],r=t[2];return e/=95.047,n/=100,r/=108.883,e=e>p?e**(1/3):7.787*e+16/116,n=n>p?n**(1/3):7.787*n+16/116,r=r>p?r**(1/3):7.787*r+16/116,[116*n-16,500*(e-n),200*(n-r)]},d.lab.xyz=function(t){let e,n,r;n=(t[0]+16)/116,e=t[1]/500+n,r=n-t[2]/200;const i=n**3,s=e**3,o=r**3;return n=i>p?i:(n-16/116)/7.787,e=s>p?s:(e-16/116)/7.787,r=o>p?o:(r-16/116)/7.787,e*=95.047,n*=100,r*=108.883,[e,n,r]},d.lab.lch=function(t){const e=t[0],n=t[1],r=t[2];let i;return i=360*Math.atan2(r,n)/2/Math.PI,i<0&&(i+=360),[e,Math.sqrt(n*n+r*r),i]},d.lch.lab=function(t){const e=t[0],n=t[1],r=t[2]/360*2*Math.PI;return[e,n*Math.cos(r),n*Math.sin(r)]},d.rgb.ansi16=function(t,e=null){const[n,r,i]=t;let s=null===e?d.rgb.hsv(t)[2]:e;if(s=Math.round(s/50),0===s)return 30;let o=30+(Math.round(i/255)<<2|Math.round(r/255)<<1|Math.round(n/255));return 2===s&&(o+=60),o},d.hsv.ansi16=function(t){return d.rgb.ansi16(d.hsv.rgb(t),t[2])},d.rgb.ansi256=function(t){const e=t[0],n=t[1],r=t[2];return e>>4==n>>4&&n>>4==r>>4?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(n/255*5)+Math.round(r/255*5)},d.ansi16.rgb=function(t){let e=(t=t[0])%10;if(0===e||7===e)return t>50&&(e+=3.5),e=e/10.5*255,[e,e,e];const n=.5*(Math.trunc(t>50)+1);return[(1&e)*n*255,(e>>1&1)*n*255,(e>>2&1)*n*255]},d.ansi256.rgb=function(t){if((t=t[0])>=232){const e=10*(t-232)+8;return[e,e,e]}let e;return t-=16,[Math.floor(t/36)/5*255,Math.floor((e=t%36)/6)/5*255,e%6/5*255]},d.rgb.hex=function(t){const e=(((255&Math.round(t[0]))<<16)+((255&Math.round(t[1]))<<8)+(255&Math.round(t[2]))).toString(16).toUpperCase();return"000000".slice(e.length)+e},d.hex.rgb=function(t){const e=t.toString(16).match(/[a-f\d]{6}|[a-f\d]{3}/i);if(!e)return[0,0,0];let n=e[0];3===e[0].length&&(n=[...n].map((t=>t+t)).join(""));const r=Number.parseInt(n,16);return[r>>16&255,r>>8&255,255&r]},d.rgb.hcg=function(t){const e=t[0]/255,n=t[1]/255,r=t[2]/255,i=Math.max(Math.max(e,n),r),s=Math.min(Math.min(e,n),r),o=i-s;let a;return a=o<=0?0:i===e?(n-r)/o%6:i===n?2+(r-e)/o:4+(e-n)/o,a/=6,a%=1,[360*a,100*o,100*(o<1?s/(1-o):0)]},d.hsl.hcg=function(t){const e=t[1]/100,n=t[2]/100,r=n<.5?2*e*n:2*e*(1-n);let i=0;return r<1&&(i=(n-.5*r)/(1-r)),[t[0],100*r,100*i]},d.hsv.hcg=function(t){const e=t[1]/100,n=t[2]/100,r=e*n;let i=0;return r<1&&(i=(n-r)/(1-r)),[t[0],100*r,100*i]},d.hcg.rgb=function(t){const e=t[0]/360,n=t[1]/100,r=t[2]/100;if(0===n)return[255*r,255*r,255*r];const i=[0,0,0],s=e%1*6,o=s%1,a=1-o;let l=0;switch(Math.floor(s)){case 0:i[0]=1,i[1]=o,i[2]=0;break;case 1:i[0]=a,i[1]=1,i[2]=0;break;case 2:i[0]=0,i[1]=1,i[2]=o;break;case 3:i[0]=0,i[1]=a,i[2]=1;break;case 4:i[0]=o,i[1]=0,i[2]=1;break;default:i[0]=1,i[1]=0,i[2]=a}return l=(1-n)*r,[255*(n*i[0]+l),255*(n*i[1]+l),255*(n*i[2]+l)]},d.hcg.hsv=function(t){const e=t[1]/100,n=e+t[2]/100*(1-e);let r=0;return n>0&&(r=e/n),[t[0],100*r,100*n]},d.hcg.hsl=function(t){const e=t[1]/100,n=t[2]/100*(1-e)+.5*e;let r=0;return n>0&&n<.5?r=e/(2*n):n>=.5&&n<1&&(r=e/(2*(1-n))),[t[0],100*r,100*n]},d.hcg.hwb=function(t){const e=t[1]/100,n=e+t[2]/100*(1-e);return[t[0],100*(n-e),100*(1-n)]},d.hwb.hcg=function(t){const e=t[1]/100,n=1-t[2]/100,r=n-e;let i=0;return r<1&&(i=(n-r)/(1-r)),[t[0],100*r,100*i]},d.apple.rgb=function(t){return[t[0]/65535*255,t[1]/65535*255,t[2]/65535*255]},d.rgb.apple=function(t){return[t[0]/255*65535,t[1]/255*65535,t[2]/255*65535]},d.gray.rgb=function(t){return[t[0]/100*255,t[0]/100*255,t[0]/100*255]},d.gray.hsl=function(t){return[0,0,t[0]]},d.gray.hsv=d.gray.hsl,d.gray.hwb=function(t){return[0,100,t[0]]},d.gray.cmyk=function(t){return[0,0,0,t[0]]},d.gray.lab=function(t){return[t[0],0,0]},d.gray.hex=function(t){const e=255&Math.round(t[0]/100*255),n=((e<<16)+(e<<8)+e).toString(16).toUpperCase();return"000000".slice(n.length)+n},d.rgb.gray=function(t){return[(t[0]+t[1]+t[2])/3/255*100]};const m=function(t){const e=function(t){const e=function(){const t={},e=Object.keys(h);for(let{length:n}=e,r=0;r<n;r++)t[e[r]]={distance:-1,parent:null};return t}(),n=[t];for(e[t].distance=0;n.length>0;){const t=n.pop(),r=Object.keys(h[t]);for(let{length:i}=r,s=0;s<i;s++){const i=r[s],o=e[i];-1===o.distance&&(o.distance=e[t].distance+1,o.parent=t,n.unshift(i))}}return e}(t),n={},r=Object.keys(e);for(let{length:t}=r,i=0;i<t;i++){const t=r[i];null!==e[t].parent&&(n[t]=f(t,e))}return n},b={},y=Object.keys(h);function v(t){const e=function(...e){const n=e[0];return null==n?n:(n.length>1&&(e=n),t(e))};return"conversion"in t&&(e.conversion=t.conversion),e}function E(t){const e=function(...e){const n=e[0];if(null==n)return n;n.length>1&&(e=n);const r=t(e);if("object"==typeof r)for(let{length:t}=r,e=0;e<t;e++)r[e]=Math.round(r[e]);return r};return"conversion"in t&&(e.conversion=t.conversion),e}for(const t of y){b[t]={},Object.defineProperty(b[t],"channels",{value:h[t].channels}),Object.defineProperty(b[t],"labels",{value:h[t].labels});const e=m(t),n=Object.keys(e);for(const r of n){const n=e[r];b[t][r]=E(n),b[t][r].raw=v(n)}}const w=b,A=["keyword","gray","hex"],N={};for(const t of Object.keys(w))N[[...w[t].labels].sort().join("")]=t;const x={};function I(t,e){if(!(this instanceof I))return new I(t,e);if(e&&e in A&&(e=null),e&&!(e in w))throw new Error("Unknown model: "+e);let n,r;if(null==t)this.model="rgb",this.color=[0,0,0],this.valpha=1;else if(t instanceof I)this.model=t.model,this.color=[...t.color],this.valpha=t.valpha;else if("string"==typeof t){const e=l.get(t);if(null===e)throw new Error("Unable to parse color from string: "+t);this.model=e.model,r=w[this.model].channels,this.color=e.value.slice(0,r),this.valpha="number"==typeof e.value[r]?e.value[r]:1}else if(t.length>0){this.model=e||"rgb",r=w[this.model].channels;const n=Array.prototype.slice.call(t,0,r);this.color=L(n,r),this.valpha="number"==typeof t[r]?t[r]:1}else if("number"==typeof t)this.model="rgb",this.color=[t>>16&255,t>>8&255,255&t],this.valpha=1;else{this.valpha=1;const e=Object.keys(t);"alpha"in t&&(e.splice(e.indexOf("alpha"),1),this.valpha="number"==typeof t.alpha?t.alpha:0);const r=e.sort().join("");if(!(r in N))throw new Error("Unable to parse color from object: "+JSON.stringify(t));this.model=N[r];const{labels:i}=w[this.model],s=[];for(n=0;n<i.length;n++)s.push(t[i[n]]);this.color=L(s)}if(x[this.model])for(r=w[this.model].channels,n=0;n<r;n++){const t=x[this.model][n];t&&(this.color[n]=t(this.color[n]))}this.valpha=Math.max(0,Math.min(1,this.valpha)),Object.freeze&&Object.freeze(this)}I.prototype={toString(){return this.string()},toJSON(){return this[this.model]()},string(t){let e=this.model in l.to?this:this.rgb();e=e.round("number"==typeof t?t:1);const n=1===e.valpha?e.color:[...e.color,this.valpha];return l.to[e.model](...n)},percentString(t){const e=this.rgb().round("number"==typeof t?t:1),n=1===e.valpha?e.color:[...e.color,this.valpha];return l.to.rgb.percent(...n)},array(){return 1===this.valpha?[...this.color]:[...this.color,this.valpha]},object(){const t={},{channels:e}=w[this.model],{labels:n}=w[this.model];for(let r=0;r<e;r++)t[n[r]]=this.color[r];return 1!==this.valpha&&(t.alpha=this.valpha),t},unitArray(){const t=this.rgb().color;return t[0]/=255,t[1]/=255,t[2]/=255,1!==this.valpha&&t.push(this.valpha),t},unitObject(){const t=this.rgb().object();return t.r/=255,t.g/=255,t.b/=255,1!==this.valpha&&(t.alpha=this.valpha),t},round(t){return t=Math.max(t||0,0),new I([...this.color.map(O(t)),this.valpha],this.model)},alpha(t){return void 0!==t?new I([...this.color,Math.max(0,Math.min(1,t))],this.model):this.valpha},red:C("rgb",0,T(255)),green:C("rgb",1,T(255)),blue:C("rgb",2,T(255)),hue:C(["hsl","hsv","hsl","hwb","hcg"],0,(t=>(t%360+360)%360)),saturationl:C("hsl",1,T(100)),lightness:C("hsl",2,T(100)),saturationv:C("hsv",1,T(100)),value:C("hsv",2,T(100)),chroma:C("hcg",1,T(100)),gray:C("hcg",2,T(100)),white:C("hwb",1,T(100)),wblack:C("hwb",2,T(100)),cyan:C("cmyk",0,T(100)),magenta:C("cmyk",1,T(100)),yellow:C("cmyk",2,T(100)),black:C("cmyk",3,T(100)),x:C("xyz",0,T(95.047)),y:C("xyz",1,T(100)),z:C("xyz",2,T(108.833)),l:C("lab",0,T(100)),a:C("lab",1),b:C("lab",2),keyword(t){return void 0!==t?new I(t):w[this.model].keyword(this.color)},hex(t){return void 0!==t?new I(t):l.to.hex(...this.rgb().round().color)},hexa(t){if(void 0!==t)return new I(t);const e=this.rgb().round().color;let n=Math.round(255*this.valpha).toString(16).toUpperCase();return 1===n.length&&(n="0"+n),l.to.hex(...e)+n},rgbNumber(){const t=this.rgb().color;return(255&t[0])<<16|(255&t[1])<<8|255&t[2]},luminosity(){const t=this.rgb().color,e=[];for(const[n,r]of t.entries()){const t=r/255;e[n]=t<=.04045?t/12.92:((t+.055)/1.055)**2.4}return.2126*e[0]+.7152*e[1]+.0722*e[2]},contrast(t){const e=this.luminosity(),n=t.luminosity();return e>n?(e+.05)/(n+.05):(n+.05)/(e+.05)},level(t){const e=this.contrast(t);return e>=7?"AAA":e>=4.5?"AA":""},isDark(){const t=this.rgb().color;return(2126*t[0]+7152*t[1]+722*t[2])/1e4<128},isLight(){return!this.isDark()},negate(){const t=this.rgb();for(let e=0;e<3;e++)t.color[e]=255-t.color[e];return t},lighten(t){const e=this.hsl();return e.color[2]+=e.color[2]*t,e},darken(t){const e=this.hsl();return e.color[2]-=e.color[2]*t,e},saturate(t){const e=this.hsl();return e.color[1]+=e.color[1]*t,e},desaturate(t){const e=this.hsl();return e.color[1]-=e.color[1]*t,e},whiten(t){const e=this.hwb();return e.color[1]+=e.color[1]*t,e},blacken(t){const e=this.hwb();return e.color[2]+=e.color[2]*t,e},grayscale(){const t=this.rgb().color,e=.3*t[0]+.59*t[1]+.11*t[2];return I.rgb(e,e,e)},fade(t){return this.alpha(this.valpha-this.valpha*t)},opaquer(t){return this.alpha(this.valpha+this.valpha*t)},rotate(t){const e=this.hsl();let n=e.color[0];return n=(n+t)%360,n=n<0?360+n:n,e.color[0]=n,e},mix(t,e){if(!t||!t.rgb)throw new Error('Argument to "mix" was not a Color instance, but rather an instance of '+typeof t);const n=t.rgb(),r=this.rgb(),i=void 0===e?.5:e,s=2*i-1,o=n.alpha()-r.alpha(),a=((s*o==-1?s:(s+o)/(1+s*o))+1)/2,l=1-a;return I.rgb(a*n.red()+l*r.red(),a*n.green()+l*r.green(),a*n.blue()+l*r.blue(),n.alpha()*i+r.alpha()*(1-i))}};for(const t of Object.keys(w)){if(A.includes(t))continue;const{channels:e}=w[t];I.prototype[t]=function(...e){return this.model===t?new I(this):e.length>0?new I(e,t):new I([...(n=w[this.model][t].raw(this.color),Array.isArray(n)?n:[n]),this.valpha],t);var n},I[t]=function(...n){let r=n[0];return"number"==typeof r&&(r=L(n,e)),new I(r,t)}}function O(t){return function(e){return function(t,e){return Number(t.toFixed(e))}(e,t)}}function C(t,e,n){t=Array.isArray(t)?t:[t];for(const r of t)(x[r]||=[])[e]=n;return t=t[0],function(r){let i;return void 0!==r?(n&&(r=n(r)),i=this[t](),i.color[e]=r,i):(i=this[t]().color[e],n&&(i=n(i)),i)}}function T(t){return function(e){return Math.max(0,Math.min(t,e))}}function L(t,e){for(let n=0;n<e;n++)"number"!=typeof t[n]&&(t[n]=0);return t}const k=I;function R(){const t=window?.matchMedia?.("(prefers-color-scheme: dark)")?.matches,e=document.body.getAttribute("data-themes")?.includes("dark");return e||t||!1}function $(t){return S(t,"#ffffff")<4.5}function P(t,e){const n=function(t){return _(t)>.6}(e),r=(i=e,new k(n?t:"#ffffff").mix(new k(i),.83).hex());var i;let s=S(t,r);const o=function(){const t=window?.matchMedia?.("(forced-colors: active)")?.matches,e=document.body.getAttribute("data-themes")?.includes("highcontrast");return e||t||!1}()?5.6:3.2;let a=0,l=t;const c=(n?-100:100)/255;for(;s<o&&a++<100;){const t=M(l),e=Math.max(0,Math.min(255,t.l+c));l=F({h:t.h,s:t.s,l:e}),s=S(l,r)}return l}function _(t){const e=function(t){return new k(t).rgb().array()}(t).map((t=>(t/=255)<=.03928?t/12.92:Math.pow((t+.055)/1.055,2.4))),[n,r,i]=e;return.2126*n+.7152*r+.0722*i}function S(t,e){const n=_(t)+.05,r=_(e)+.05;return Math.max(n,r)/Math.min(n,r)}function M(t){const e=new k(t).hsl();return{h:e.color[0],s:e.color[1],l:e.color[2]}}function F(t){return new k(t).hex()}},59169:()=>{},63779:()=>{},73911:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(71354),i=n.n(r),s=n(76314),o=n.n(s)()(i());o.push([t.id,".files-list__system-tags{--min-size: 32px;display:none;justify-content:center;align-items:center;min-width:calc(var(--min-size)*2);max-width:300px}.files-list__system-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:20px;text-align:center}.files-list__system-tag--more{overflow:visible;text-overflow:initial}.files-list__system-tag+.files-list__system-tag{margin-inline-start:5px}.files-list__system-tag[data-systemtag-color]{border-color:var(--systemtag-color);color:var(--systemtag-color);border-width:2px;line-height:18px}@media(min-width: 512px){.files-list__system-tags{display:flex}}","",{version:3,sources:["webpack://./apps/systemtags/src/css/fileEntryInlineSystemTags.scss"],names:[],mappings:"AAKA,yBACC,gBAAA,CACA,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,iCAAA,CACA,eAAA,CAGD,wBACC,gBAAA,CACA,gBAAA,CACA,uCAAA,CACA,gCAAA,CACA,mCAAA,CACA,sBAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CACA,gBAAA,CACA,iBAAA,CAEA,8BACC,gBAAA,CACA,qBAAA,CAID,gDACC,uBAAA,CAID,8CACC,mCAAA,CACA,4BAAA,CACA,gBAAA,CACA,gBAAA,CAIF,yBACC,yBACC,YAAA,CAAA",sourcesContent:["/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n.files-list__system-tags {\n\t--min-size: 32px;\n\tdisplay: none;\n\tjustify-content: center;\n\talign-items: center;\n\tmin-width: calc(var(--min-size) * 2);\n\tmax-width: 300px;\n}\n\n.files-list__system-tag {\n\tpadding: 5px 10px;\n\tborder: 1px solid;\n\tborder-radius: var(--border-radius-pill);\n\tborder-color: var(--color-border);\n\tcolor: var(--color-text-maxcontrast);\n\theight: var(--min-size);\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\tline-height: 20px; // min-size - 2 * 5px padding - 2 * 1px border\n\ttext-align: center;\n\n\t&--more {\n\t\toverflow: visible;\n\t\ttext-overflow: initial;\n\t}\n\n\t// Proper spacing if multiple shown\n\t& + .files-list__system-tag {\n\t\tmargin-inline-start: 5px;\n\t}\n\n\t// With color\n\t&[data-systemtag-color] {\n\t\tborder-color: var(--systemtag-color);\n\t\tcolor: var(--systemtag-color);\n\t\tborder-width: 2px;\n\t\tline-height: 18px; // min-size - 2 * 5px padding - 2 * 2px border\n\t}\n}\n\n@media (min-width: 512px) {\n\t.files-list__system-tags {\n\t\tdisplay: flex;\n\t}\n}\n"],sourceRoot:""}]);const a=o},77199:()=>{},82528:(t,e,n)=>{"use strict";n.d(e,{Gw:()=>h,T0:()=>g,VZ:()=>d,b0:()=>p,un:()=>c,xI:()=>u}),n(65043);var r=n(53334),i=n(8828),s=n(12686),o=n(25631),a=n(61338);n(56760);const l='<?xml version="1.0"?>\n<d:propfind xmlns:d="DAV:" xmlns:oc="http://owncloud.org/ns" xmlns:nc="http://nextcloud.org/ns">\n\t<d:prop>\n\t\t<oc:id />\n\t\t<oc:display-name />\n\t\t<oc:user-visible />\n\t\t<oc:user-assignable />\n\t\t<oc:can-assign />\n\t\t<d:getetag />\n\t\t<nc:color />\n\t</d:prop>\n</d:propfind>',c=async()=>{try{const{data:t}=await i.R.getDirectoryContents("/systemtags",{data:l,details:!0,glob:"/systemtags/*"});return(0,s.rL)(t)}catch(t){throw o.A.error((0,r.t)("systemtags","Failed to load tags"),{error:t}),new Error((0,r.t)("systemtags","Failed to load tags"))}},u=async t=>{const e="/systemtags/"+t;try{const{data:t}=await i.R.stat(e,{data:l,details:!0});return(0,s.rL)([t])[0]}catch(t){throw o.A.error((0,r.t)("systemtags","Failed to load tag"),{error:t}),new Error((0,r.t)("systemtags","Failed to load tag"))}},d=async t=>{const e=(0,s._3)(t);try{const{headers:n}=await i.R.customRequest("/systemtags",{method:"POST",data:e}),l=n.get("content-location");if(l)return(0,a.Ic)("systemtags:tag:created",t),(0,s.GX)(l);throw o.A.error((0,r.t)("systemtags",'Missing "Content-Location" header')),new Error((0,r.t)("systemtags",'Missing "Content-Location" header'))}catch(t){if(409===t?.response?.status)throw o.A.error((0,r.t)("systemtags","A tag with the same name already exists"),{error:t}),new Error((0,r.t)("systemtags","A tag with the same name already exists"));throw o.A.error((0,r.t)("systemtags","Failed to create tag"),{error:t}),new Error((0,r.t)("systemtags","Failed to create tag"))}},h=async t=>{const e="/systemtags/"+t.id,n=`<?xml version="1.0"?>\n\t<d:propertyupdate xmlns:d="DAV:" xmlns:oc="http://owncloud.org/ns" xmlns:nc="http://nextcloud.org/ns">\n\t\t<d:set>\n\t\t\t<d:prop>\n\t\t\t\t<oc:display-name>${t.displayName}</oc:display-name>\n\t\t\t\t<oc:user-visible>${t.userVisible}</oc:user-visible>\n\t\t\t\t<oc:user-assignable>${t.userAssignable}</oc:user-assignable>\n\t\t\t\t<nc:color>${t?.color||null}</nc:color>\n\t\t\t</d:prop>\n\t\t</d:set>\n\t</d:propertyupdate>`;try{await i.R.customRequest(e,{method:"PROPPATCH",data:n}),(0,a.Ic)("systemtags:tag:updated",t)}catch(t){throw o.A.error((0,r.t)("systemtags","Failed to update tag"),{error:t}),new Error((0,r.t)("systemtags","Failed to update tag"))}},p=async function(t,e){const n=`/systemtags/${t.id}/${e}`,r=await i.R.stat(n,{data:'<?xml version="1.0"?>\n\t<d:propfind xmlns:d="DAV:" xmlns:nc="http://nextcloud.org/ns">\n\t\t<d:prop>\n\t\t\t<nc:object-ids />\n\t\t\t<d:getetag />\n\t\t</d:prop>\n\t</d:propfind>',details:!0});return{etag:r?.data?.props?.getetag||'""',objects:Object.values(r?.data?.props?.["object-ids"]||[]).flat()}},g=async function(t,e,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"";const s=`/systemtags/${t.id}/${e}`;let o=`<?xml version="1.0"?>\n\t<d:propertyupdate xmlns:d="DAV:" xmlns:nc="http://nextcloud.org/ns">\n\t\t<d:set>\n\t\t\t<d:prop>\n\t\t\t\t<nc:object-ids>${n.map((t=>{let{id:e,type:n}=t;return`<nc:object-id><nc:id>${e}</nc:id><nc:type>${n}</nc:type></nc:object-id>`})).join("")}</nc:object-ids>\n\t\t\t</d:prop>\n\t\t</d:set>\n\t</d:propertyupdate>`;0===n.length&&(o='<?xml version="1.0"?>\n\t\t<d:propertyupdate xmlns:d="DAV:" xmlns:nc="http://nextcloud.org/ns">\n\t\t\t<d:remove>\n\t\t\t\t<d:prop>\n\t\t\t\t\t<nc:object-ids />\n\t\t\t\t</d:prop>\n\t\t\t</d:remove>\n\t\t</d:propertyupdate>'),await i.R.customRequest(s,{method:"PROPPATCH",data:o,headers:{"if-match":r}})}},86833:()=>{}},i={};function s(t){var e=i[t];if(void 0!==e)return e.exports;var n=i[t]={id:t,loaded:!1,exports:{}};return r[t].call(n.exports,n,n.exports,s),n.loaded=!0,n.exports}s.m=r,t=[],s.O=(e,n,r,i)=>{if(!n){var o=1/0;for(u=0;u<t.length;u++){n=t[u][0],r=t[u][1],i=t[u][2];for(var a=!0,l=0;l<n.length;l++)(!1&i||o>=i)&&Object.keys(s.O).every((t=>s.O[t](n[l])))?n.splice(l--,1):(a=!1,i<o&&(o=i));if(a){t.splice(u--,1);var c=r();void 0!==c&&(e=c)}}return e}i=i||0;for(var u=t.length;u>0&&t[u-1][2]>i;u--)t[u]=t[u-1];t[u]=[n,r,i]},s.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return s.d(e,{a:e}),e},s.d=(t,e)=>{for(var n in e)s.o(e,n)&&!s.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},s.f={},s.e=t=>Promise.all(Object.keys(s.f).reduce(((e,n)=>(s.f[n](t,e),e)),[])),s.u=t=>t+"-"+t+".js?v="+{2441:"2c050d23f9070dfa7f03",5862:"142cd48ca8ec32e57725",6227:"3494381758c4754ef3f5",9552:"9685a1f4bd2a15cb119a"}[t],s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),s.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),e={},n="nextcloud:",s.l=(t,r,i,o)=>{if(e[t])e[t].push(r);else{var a,l;if(void 0!==i)for(var c=document.getElementsByTagName("script"),u=0;u<c.length;u++){var d=c[u];if(d.getAttribute("src")==t||d.getAttribute("data-webpack")==n+i){a=d;break}}a||(l=!0,(a=document.createElement("script")).charset="utf-8",a.timeout=120,s.nc&&a.setAttribute("nonce",s.nc),a.setAttribute("data-webpack",n+i),a.src=t),e[t]=[r];var h=(n,r)=>{a.onerror=a.onload=null,clearTimeout(p);var i=e[t];if(delete e[t],a.parentNode&&a.parentNode.removeChild(a),i&&i.forEach((t=>t(r))),n)return n(r)},p=setTimeout(h.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=h.bind(null,a.onerror),a.onload=h.bind(null,a.onload),l&&document.head.appendChild(a)}},s.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},s.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),s.j=2766,(()=>{var t;s.g.importScripts&&(t=s.g.location+"");var e=s.g.document;if(!t&&e&&(e.currentScript&&"SCRIPT"===e.currentScript.tagName.toUpperCase()&&(t=e.currentScript.src),!t)){var n=e.getElementsByTagName("script");if(n.length)for(var r=n.length-1;r>-1&&(!t||!/^http(s?):/.test(t));)t=n[r--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),s.p=t})(),(()=>{s.b=document.baseURI||self.location.href;var t={2766:0};s.f.j=(e,n)=>{var r=s.o(t,e)?t[e]:void 0;if(0!==r)if(r)n.push(r[2]);else{var i=new Promise(((n,i)=>r=t[e]=[n,i]));n.push(r[2]=i);var o=s.p+s.u(e),a=new Error;s.l(o,(n=>{if(s.o(t,e)&&(0!==(r=t[e])&&(t[e]=void 0),r)){var i=n&&("load"===n.type?"missing":n.type),o=n&&n.target&&n.target.src;a.message="Loading chunk "+e+" failed.\n("+i+": "+o+")",a.name="ChunkLoadError",a.type=i,a.request=o,r[1](a)}}),"chunk-"+e,e)}},s.O.j=e=>0===t[e];var e=(e,n)=>{var r,i,o=n[0],a=n[1],l=n[2],c=0;if(o.some((e=>0!==t[e]))){for(r in a)s.o(a,r)&&(s.m[r]=a[r]);if(l)var u=l(s)}for(e&&e(n);c<o.length;c++)i=o[c],s.o(t,i)&&t[i]&&t[i][0](),t[i]=0;return s.O(u)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(e.bind(null,0)),n.push=e.bind(null,n.push.bind(n))})(),s.nc=void 0;var o=s.O(void 0,[4208],(()=>s(44563)));o=s.O(o)})(); -//# sourceMappingURL=systemtags-init.js.map?v=c1344497f30029dca951
\ No newline at end of file +(()=>{var t,e,n,r={8828:(t,e,n)=>{"use strict";n.d(e,{R:()=>a});var r=n(60669),i=n(63814),s=n(21777);const o=(0,i.dC)("dav"),a=(0,r.UU)(o),l=t=>{a.setHeaders({"X-Requested-With":"XMLHttpRequest",requesttoken:t??""})};(0,s.zo)(l),l((0,s.do)())},12686:(t,e,n)=>{"use strict";n.d(e,{GX:()=>o,Pq:()=>c,_3:()=>a,rA:()=>l,rL:()=>s});var r=n(71654),i=n(85471);const s=t=>t.map((t=>{let{props:e}=t;return Object.fromEntries(Object.entries(e).map((t=>{let[e,n]=t;return[(0,r.A)(e),"displayName"===(0,r.A)(e)?String(n):n]})))})),o=t=>{const e=t.indexOf("?");e>0&&(t=t.substring(0,e));const n=t.split("/");let r;do{r=n[n.length-1],n.pop()}while(!r&&n.length>0);return Number(r)},a=t=>{if("name"in t&&!("displayName"in t))return{...t};const e={...t};return e.name=e.displayName,delete e.displayName,e},l=function(t){const e=t.attributes?.["system-tags"]?.["system-tag"];return void 0===e?[]:[e].flat().map((t=>"string"==typeof t?t:t.text))},c=function(t,e){i.Ay.set(t.attributes,"system-tags",{"system-tag":e})}},25631:(t,e,n)=>{"use strict";n.d(e,{A:()=>r});const r=(0,n(35947).YK)().setApp("systemtags").detectUser().build()},35810:(t,e,n)=>{"use strict";n.d(e,{Al:()=>r.r,CP:()=>r.k,Gg:()=>c,H4:()=>r.c,PY:()=>r.b,Q$:()=>r.e,R3:()=>r.n,Ss:()=>J,VL:()=>r.l,VX:()=>r.j,Yc:()=>r.i,aX:()=>r.P,bh:()=>m,hY:()=>l,lJ:()=>r.d,m9:()=>a,pt:()=>r.F,ur:()=>g,v7:()=>h,vd:()=>r.s,zI:()=>r.t});var r=n(68251),i=(n(43627),n(53334)),s=n(380),o=n(65606),a=(t=>(t.DEFAULT="default",t.HIDDEN="hidden",t))(a||{});class l{_action;constructor(t){this.validateAction(t),this._action=t}get id(){return this._action.id}get displayName(){return this._action.displayName}get title(){return this._action.title}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 parent(){return this._action.parent}get default(){return this._action.default}get destructive(){return this._action.destructive}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("title"in t&&"function"!=typeof t.title)throw new Error("Invalid title 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(void 0!==t.destructive&&"boolean"!=typeof t.destructive)throw new Error("Invalid destructive flag");if("parent"in t&&"string"!=typeof t.parent)throw new Error("Invalid parent");if(t.default&&!Object.values(a).includes(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 c=function(t){void 0===window._nc_fileactions&&(window._nc_fileactions=[],r.o.debug("FileActions initialized")),window._nc_fileactions.find((e=>e.id===t.id))?r.o.error(`FileAction ${t.id} already registered`,{action:t}):window._nc_fileactions.push(t)};Error;const u=["B","KB","MB","GB","TB","PB"],d=["B","KiB","MiB","GiB","TiB","PiB"];function h(t,e=!1,n=!1,r=!1){n=n&&!r,"string"==typeof t&&(t=Number(t));let s=t>0?Math.floor(Math.log(t)/Math.log(r?1e3:1024)):0;s=Math.min((n?d.length:u.length)-1,s);const o=n?d[s]:u[s];let a=(t/Math.pow(r?1e3:1024,s)).toFixed(1);return!0===e&&0===s?("0.0"!==a?"< 1 ":"0 ")+(n?d[1]:u[1]):(a=s<2?parseFloat(a).toFixed(0):parseFloat(a).toLocaleString((0,i.lO)()),a+" "+o)}function p(t){return t instanceof Date?t.toISOString():String(t)}function g(t,e={}){const n={sortingMode:"basename",sortingOrder:"asc",...e};return function(t,e,n){n=n??[];const r=(e=e??[t=>t]).map(((t,e)=>"asc"===(n[e]??"asc")?1:-1)),s=Intl.Collator([(0,i.Z0)(),(0,i.lO)()],{numeric:!0,usage:"sort"});return[...t].sort(((t,n)=>{for(const[i,o]of e.entries()){const e=s.compare(p(o(t)),p(o(n)));if(0!==e)return e*r[i]}return 0}))}(t,[...n.sortFavoritesFirst?[t=>1!==t.attributes?.favorite]:[],...n.sortFoldersFirst?[t=>"folder"!==t.type]:[],..."basename"!==n.sortingMode?[t=>t[n.sortingMode]]:[],t=>{return(e=t.displayname||t.attributes?.displayname||t.basename).lastIndexOf(".")>0?e.slice(0,e.lastIndexOf(".")):e;var e},t=>t.basename],[...n.sortFavoritesFirst?["asc"]:[],...n.sortFoldersFirst?["asc"]:[],..."mtime"===n.sortingMode?["asc"===n.sortingOrder?"desc":"asc"]:[],..."mtime"!==n.sortingMode&&"basename"!==n.sortingMode?[n.sortingOrder]:[],n.sortingOrder,n.sortingOrder])}class f extends s.m{_views=[];_currentView=null;register(t){if(this._views.find((e=>e.id===t.id)))throw new Error(`View id ${t.id} is already registered`);this._views.push(t),this.dispatchTypedEvent("update",new CustomEvent("update"))}remove(t){const e=this._views.findIndex((e=>e.id===t));-1!==e&&(this._views.splice(e,1),this.dispatchTypedEvent("update",new CustomEvent("update")))}setActive(t){this._currentView=t;const e=new CustomEvent("updateActive",{detail:t});this.dispatchTypedEvent("updateActive",e)}get active(){return this._currentView}get views(){return this._views}}const m=function(){return void 0===window._nc_navigation&&(window._nc_navigation=new f,r.o.debug("Navigation service initialized")),window._nc_navigation};class b{_column;constructor(t){y(t),this._column=t}get id(){return this._column.id}get title(){return this._column.title}get render(){return this._column.render}get sort(){return this._column.sort}get summary(){return this._column.summary}}const y=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};var v,E,w={},A={};function N(){return v||(v=1,function(t){const e=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",n="["+e+"]["+e+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*",r=new RegExp("^"+n+"$");t.isExist=function(t){return void 0!==t},t.isEmptyObject=function(t){return 0===Object.keys(t).length},t.merge=function(t,e,n){if(e){const r=Object.keys(e),i=r.length;for(let s=0;s<i;s++)t[r[s]]="strict"===n?[e[r[s]]]:e[r[s]]}},t.getValue=function(e){return t.isExist(e)?e:""},t.isName=function(t){return!(null==r.exec(t))},t.getAllMatches=function(t,e){const n=[];let r=e.exec(t);for(;r;){const i=[];i.startIndex=e.lastIndex-r[0].length;const s=r.length;for(let t=0;t<s;t++)i.push(r[t]);n.push(i),r=e.exec(t)}return n},t.nameRegexp=n}(A)),A}function x(){if(E)return w;E=1;const t=N(),e={allowBooleanAttributes:!1,unpairedTags:[]};function n(t){return" "===t||"\t"===t||"\n"===t||"\r"===t}function r(t,e){const n=e;for(;e<t.length;e++)if("?"!=t[e]&&" "!=t[e]);else{const r=t.substr(n,e-n);if(e>5&&"xml"===r)return d("InvalidXml","XML declaration allowed only at the start of the document.",p(t,e));if("?"==t[e]&&">"==t[e+1]){e++;break}}return e}function i(t,e){if(t.length>e+5&&"-"===t[e+1]&&"-"===t[e+2]){for(e+=3;e<t.length;e++)if("-"===t[e]&&"-"===t[e+1]&&">"===t[e+2]){e+=2;break}}else if(t.length>e+8&&"D"===t[e+1]&&"O"===t[e+2]&&"C"===t[e+3]&&"T"===t[e+4]&&"Y"===t[e+5]&&"P"===t[e+6]&&"E"===t[e+7]){let n=1;for(e+=8;e<t.length;e++)if("<"===t[e])n++;else if(">"===t[e]&&(n--,0===n))break}else if(t.length>e+9&&"["===t[e+1]&&"C"===t[e+2]&&"D"===t[e+3]&&"A"===t[e+4]&&"T"===t[e+5]&&"A"===t[e+6]&&"["===t[e+7])for(e+=8;e<t.length;e++)if("]"===t[e]&&"]"===t[e+1]&&">"===t[e+2]){e+=2;break}return e}w.validate=function(s,o){o=Object.assign({},e,o);const l=[];let h=!1,g=!1;"\ufeff"===s[0]&&(s=s.substr(1));for(let e=0;e<s.length;e++)if("<"===s[e]&&"?"===s[e+1]){if(e+=2,e=r(s,e),e.err)return e}else{if("<"!==s[e]){if(n(s[e]))continue;return d("InvalidChar","char '"+s[e]+"' is not expected.",p(s,e))}{let m=e;if(e++,"!"===s[e]){e=i(s,e);continue}{let b=!1;"/"===s[e]&&(b=!0,e++);let y="";for(;e<s.length&&">"!==s[e]&&" "!==s[e]&&"\t"!==s[e]&&"\n"!==s[e]&&"\r"!==s[e];e++)y+=s[e];if(y=y.trim(),"/"===y[y.length-1]&&(y=y.substring(0,y.length-1),e--),f=y,!t.isName(f)){let t;return t=0===y.trim().length?"Invalid space after '<'.":"Tag '"+y+"' is an invalid name.",d("InvalidTag",t,p(s,e))}const v=a(s,e);if(!1===v)return d("InvalidAttr","Attributes for '"+y+"' have open quote.",p(s,e));let E=v.value;if(e=v.index,"/"===E[E.length-1]){const t=e-E.length;E=E.substring(0,E.length-1);const n=c(E,o);if(!0!==n)return d(n.err.code,n.err.msg,p(s,t+n.err.line));h=!0}else if(b){if(!v.tagClosed)return d("InvalidTag","Closing tag '"+y+"' doesn't have proper closing.",p(s,e));if(E.trim().length>0)return d("InvalidTag","Closing tag '"+y+"' can't have attributes or invalid starting.",p(s,m));if(0===l.length)return d("InvalidTag","Closing tag '"+y+"' has not been opened.",p(s,m));{const t=l.pop();if(y!==t.tagName){let e=p(s,t.tagStartPos);return d("InvalidTag","Expected closing tag '"+t.tagName+"' (opened in line "+e.line+", col "+e.col+") instead of closing tag '"+y+"'.",p(s,m))}0==l.length&&(g=!0)}}else{const t=c(E,o);if(!0!==t)return d(t.err.code,t.err.msg,p(s,e-E.length+t.err.line));if(!0===g)return d("InvalidXml","Multiple possible root nodes found.",p(s,e));-1!==o.unpairedTags.indexOf(y)||l.push({tagName:y,tagStartPos:m}),h=!0}for(e++;e<s.length;e++)if("<"===s[e]){if("!"===s[e+1]){e++,e=i(s,e);continue}if("?"!==s[e+1])break;if(e=r(s,++e),e.err)return e}else if("&"===s[e]){const t=u(s,e);if(-1==t)return d("InvalidChar","char '&' is not expected.",p(s,e));e=t}else if(!0===g&&!n(s[e]))return d("InvalidXml","Extra text at the end",p(s,e));"<"===s[e]&&e--}}}var f;return h?1==l.length?d("InvalidTag","Unclosed tag '"+l[0].tagName+"'.",p(s,l[0].tagStartPos)):!(l.length>0)||d("InvalidXml","Invalid '"+JSON.stringify(l.map((t=>t.tagName)),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):d("InvalidXml","Start tag expected.",1)};const s='"',o="'";function a(t,e){let n="",r="",i=!1;for(;e<t.length;e++){if(t[e]===s||t[e]===o)""===r?r=t[e]:r!==t[e]||(r="");else if(">"===t[e]&&""===r){i=!0;break}n+=t[e]}return""===r&&{value:n,index:e,tagClosed:i}}const l=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function c(e,n){const r=t.getAllMatches(e,l),i={};for(let t=0;t<r.length;t++){if(0===r[t][1].length)return d("InvalidAttr","Attribute '"+r[t][2]+"' has no space in starting.",g(r[t]));if(void 0!==r[t][3]&&void 0===r[t][4])return d("InvalidAttr","Attribute '"+r[t][2]+"' is without value.",g(r[t]));if(void 0===r[t][3]&&!n.allowBooleanAttributes)return d("InvalidAttr","boolean attribute '"+r[t][2]+"' is not allowed.",g(r[t]));const e=r[t][2];if(!h(e))return d("InvalidAttr","Attribute '"+e+"' is an invalid name.",g(r[t]));if(i.hasOwnProperty(e))return d("InvalidAttr","Attribute '"+e+"' is repeated.",g(r[t]));i[e]=1}return!0}function u(t,e){if(";"===t[++e])return-1;if("#"===t[e])return function(t,e){let n=/\d/;for("x"===t[e]&&(e++,n=/[\da-fA-F]/);e<t.length;e++){if(";"===t[e])return e;if(!t[e].match(n))break}return-1}(t,++e);let n=0;for(;e<t.length;e++,n++)if(!(t[e].match(/\w/)&&n<20)){if(";"===t[e])break;return-1}return e}function d(t,e,n){return{err:{code:t,msg:e,line:n.line||n,col:n.col}}}function h(e){return t.isName(e)}function p(t,e){const n=t.substring(0,e).split(/\r?\n/);return{line:n.length,col:n[n.length-1].length+1}}function g(t){return t.startIndex+t[1].length}return w}var I,O,C,T,L,k,R,$,P,_,S,M={};function F(){return P?$:(P=1,$=function(t){return"function"==typeof t?t:Array.isArray(t)?e=>{for(const n of t){if("string"==typeof n&&e===n)return!0;if(n instanceof RegExp&&n.test(e))return!0}}:()=>!1})}var j,D,V,B,G,X,U,q,z,H={};function Y(){if(j)return H;function t(i,s,o){let a;const l={};for(let c=0;c<i.length;c++){const u=i[c],d=e(u);let h="";if(h=void 0===o?d:o+"."+d,d===s.textNodeName)void 0===a?a=u[d]:a+=""+u[d];else{if(void 0===d)continue;if(u[d]){let e=t(u[d],s,h);const i=r(e,s);u[":@"]?n(e,u[":@"],h,s):1!==Object.keys(e).length||void 0===e[s.textNodeName]||s.alwaysCreateTextNode?0===Object.keys(e).length&&(s.alwaysCreateTextNode?e[s.textNodeName]="":e=""):e=e[s.textNodeName],void 0!==l[d]&&l.hasOwnProperty(d)?(Array.isArray(l[d])||(l[d]=[l[d]]),l[d].push(e)):s.isArray(d,h,i)?l[d]=[e]:l[d]=e}}}return"string"==typeof a?a.length>0&&(l[s.textNodeName]=a):void 0!==a&&(l[s.textNodeName]=a),l}function e(t){const e=Object.keys(t);for(let t=0;t<e.length;t++){const n=e[t];if(":@"!==n)return n}}function n(t,e,n,r){if(e){const i=Object.keys(e),s=i.length;for(let o=0;o<s;o++){const s=i[o];r.isArray(s,n+"."+s,!0,!0)?t[s]=[e[s]]:t[s]=e[s]}}}function r(t,e){const{textNodeName:n}=e,r=Object.keys(t).length;return 0===r||!(1!==r||!t[n]&&"boolean"!=typeof t[n]&&0!==t[n])}return j=1,H.prettify=function(e,n){return t(e,n)},H}function K(){if(V)return D;V=1;const{buildOptions:t}=function(){if(I)return M;I=1;const t={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(t,e,n){return t}};return M.buildOptions=function(e){return Object.assign({},t,e)},M.defaultOptions=t,M}(),e=function(){if(S)return _;S=1;const t=N(),e=C?O:(C=1,O=class{constructor(t){this.tagname=t,this.child=[],this[":@"]={}}add(t,e){"__proto__"===t&&(t="#__proto__"),this.child.push({[t]:e})}addChild(t){"__proto__"===t.tagname&&(t.tagname="#__proto__"),t[":@"]&&Object.keys(t[":@"]).length>0?this.child.push({[t.tagname]:t.child,":@":t[":@"]}):this.child.push({[t.tagname]:t.child})}}),n=function(){if(L)return T;L=1;const t=N();function e(t,e){let n="";for(;e<t.length&&"'"!==t[e]&&'"'!==t[e];e++)n+=t[e];if(n=n.trim(),-1!==n.indexOf(" "))throw new Error("External entites are not supported");const r=t[e++];let i="";for(;e<t.length&&t[e]!==r;e++)i+=t[e];return[n,i,e]}function n(t,e){return"!"===t[e+1]&&"E"===t[e+2]&&"N"===t[e+3]&&"T"===t[e+4]&&"I"===t[e+5]&&"T"===t[e+6]&&"Y"===t[e+7]}function r(t,e){return"!"===t[e+1]&&"E"===t[e+2]&&"L"===t[e+3]&&"E"===t[e+4]&&"M"===t[e+5]&&"E"===t[e+6]&&"N"===t[e+7]&&"T"===t[e+8]}function i(t,e){return"!"===t[e+1]&&"A"===t[e+2]&&"T"===t[e+3]&&"T"===t[e+4]&&"L"===t[e+5]&&"I"===t[e+6]&&"S"===t[e+7]&&"T"===t[e+8]}function s(t,e){return"!"===t[e+1]&&"N"===t[e+2]&&"O"===t[e+3]&&"T"===t[e+4]&&"A"===t[e+5]&&"T"===t[e+6]&&"I"===t[e+7]&&"O"===t[e+8]&&"N"===t[e+9]}function o(e){if(t.isName(e))return e;throw new Error(`Invalid entity name ${e}`)}return T=function(t,a){const l={};if("O"!==t[a+3]||"C"!==t[a+4]||"T"!==t[a+5]||"Y"!==t[a+6]||"P"!==t[a+7]||"E"!==t[a+8])throw new Error("Invalid Tag instead of DOCTYPE");{a+=9;let c=1,u=!1,d=!1,h="";for(;a<t.length;a++)if("<"!==t[a]||d)if(">"===t[a]){if(d?"-"===t[a-1]&&"-"===t[a-2]&&(d=!1,c--):c--,0===c)break}else"["===t[a]?u=!0:h+=t[a];else{if(u&&n(t,a)){let n,r;a+=7,[n,r,a]=e(t,a+1),-1===r.indexOf("&")&&(l[o(n)]={regx:RegExp(`&${n};`,"g"),val:r})}else u&&r(t,a)||u&&i(t,a)?a+=8:u&&s(t,a)?a+=9:d=!0;c++,h=""}if(0!==c)throw new Error("Unclosed DOCTYPE")}return{entities:l,i:a}}}(),r=function(){if(R)return k;R=1;const t=/^[-+]?0x[a-fA-F0-9]+$/,e=/^([\-\+])?(0*)(\.[0-9]+([eE]\-?[0-9]+)?|[0-9]+(\.[0-9]+([eE]\-?[0-9]+)?)?)$/;!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt),!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat);const n={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};return k=function(r,i={}){if(i=Object.assign({},n,i),!r||"string"!=typeof r)return r;let s=r.trim();if(void 0!==i.skipLike&&i.skipLike.test(s))return r;if(i.hex&&t.test(s))return Number.parseInt(s,16);{const t=e.exec(s);if(t){const e=t[1],n=t[2];let a=(o=t[3])&&-1!==o.indexOf(".")?("."===(o=o.replace(/0+$/,""))?o="0":"."===o[0]?o="0"+o:"."===o[o.length-1]&&(o=o.substr(0,o.length-1)),o):o;const l=t[4]||t[6];if(!i.leadingZeros&&n.length>0&&e&&"."!==s[2])return r;if(!i.leadingZeros&&n.length>0&&!e&&"."!==s[1])return r;{const t=Number(s),o=""+t;return-1!==o.search(/[eE]/)||l?i.eNotation?t:r:-1!==s.indexOf(".")?"0"===o&&""===a||o===a||e&&o==="-"+a?t:r:n?a===o||e+a===o?t:r:s===o||s===e+o?t:r}}return r}var o}}(),i=F();function s(t){const e=Object.keys(t);for(let n=0;n<e.length;n++){const r=e[n];this.lastEntities[r]={regex:new RegExp("&"+r+";","g"),val:t[r]}}}function o(t,e,n,r,i,s,o){if(void 0!==t&&(this.options.trimValues&&!r&&(t=t.trim()),t.length>0)){o||(t=this.replaceEntitiesValue(t));const r=this.options.tagValueProcessor(e,t,n,i,s);return null==r?t:typeof r!=typeof t||r!==t?r:this.options.trimValues||t.trim()===t?y(t,this.options.parseTagValue,this.options.numberParseOptions):t}}function a(t){if(this.options.removeNSPrefix){const e=t.split(":"),n="/"===t.charAt(0)?"/":"";if("xmlns"===e[0])return"";2===e.length&&(t=n+e[1])}return t}const l=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function c(e,n,r){if(!0!==this.options.ignoreAttributes&&"string"==typeof e){const r=t.getAllMatches(e,l),i=r.length,s={};for(let t=0;t<i;t++){const e=this.resolveNameSpace(r[t][1]);if(this.ignoreAttributesFn(e,n))continue;let i=r[t][4],o=this.options.attributeNamePrefix+e;if(e.length)if(this.options.transformAttributeName&&(o=this.options.transformAttributeName(o)),"__proto__"===o&&(o="#__proto__"),void 0!==i){this.options.trimValues&&(i=i.trim()),i=this.replaceEntitiesValue(i);const t=this.options.attributeValueProcessor(e,i,n);s[o]=null==t?i:typeof t!=typeof i||t!==i?t:y(i,this.options.parseAttributeValue,this.options.numberParseOptions)}else this.options.allowBooleanAttributes&&(s[o]=!0)}if(!Object.keys(s).length)return;if(this.options.attributesGroupName){const t={};return t[this.options.attributesGroupName]=s,t}return s}}const u=function(t){t=t.replace(/\r\n?/g,"\n");const r=new e("!xml");let i=r,s="",o="";for(let a=0;a<t.length;a++)if("<"===t[a])if("/"===t[a+1]){const e=f(t,">",a,"Closing Tag is not closed.");let n=t.substring(a+2,e).trim();if(this.options.removeNSPrefix){const t=n.indexOf(":");-1!==t&&(n=n.substr(t+1))}this.options.transformTagName&&(n=this.options.transformTagName(n)),i&&(s=this.saveTextToParentTag(s,i,o));const r=o.substring(o.lastIndexOf(".")+1);if(n&&-1!==this.options.unpairedTags.indexOf(n))throw new Error(`Unpaired tag can not be used as closing tag: </${n}>`);let l=0;r&&-1!==this.options.unpairedTags.indexOf(r)?(l=o.lastIndexOf(".",o.lastIndexOf(".")-1),this.tagsNodeStack.pop()):l=o.lastIndexOf("."),o=o.substring(0,l),i=this.tagsNodeStack.pop(),s="",a=e}else if("?"===t[a+1]){let n=m(t,a,!1,"?>");if(!n)throw new Error("Pi Tag is not closed.");if(s=this.saveTextToParentTag(s,i,o),this.options.ignoreDeclaration&&"?xml"===n.tagName||this.options.ignorePiTags);else{const t=new e(n.tagName);t.add(this.options.textNodeName,""),n.tagName!==n.tagExp&&n.attrExpPresent&&(t[":@"]=this.buildAttributesMap(n.tagExp,o,n.tagName)),this.addChild(i,t,o)}a=n.closeIndex+1}else if("!--"===t.substr(a+1,3)){const e=f(t,"--\x3e",a+4,"Comment is not closed.");if(this.options.commentPropName){const n=t.substring(a+4,e-2);s=this.saveTextToParentTag(s,i,o),i.add(this.options.commentPropName,[{[this.options.textNodeName]:n}])}a=e}else if("!D"===t.substr(a+1,2)){const e=n(t,a);this.docTypeEntities=e.entities,a=e.i}else if("!["===t.substr(a+1,2)){const e=f(t,"]]>",a,"CDATA is not closed.")-2,n=t.substring(a+9,e);s=this.saveTextToParentTag(s,i,o);let r=this.parseTextData(n,i.tagname,o,!0,!1,!0,!0);null==r&&(r=""),this.options.cdataPropName?i.add(this.options.cdataPropName,[{[this.options.textNodeName]:n}]):i.add(this.options.textNodeName,r),a=e+2}else{let n=m(t,a,this.options.removeNSPrefix),l=n.tagName;const c=n.rawTagName;let u=n.tagExp,d=n.attrExpPresent,h=n.closeIndex;this.options.transformTagName&&(l=this.options.transformTagName(l)),i&&s&&"!xml"!==i.tagname&&(s=this.saveTextToParentTag(s,i,o,!1));const p=i;if(p&&-1!==this.options.unpairedTags.indexOf(p.tagname)&&(i=this.tagsNodeStack.pop(),o=o.substring(0,o.lastIndexOf("."))),l!==r.tagname&&(o+=o?"."+l:l),this.isItStopNode(this.options.stopNodes,o,l)){let r="";if(u.length>0&&u.lastIndexOf("/")===u.length-1)"/"===l[l.length-1]?(l=l.substr(0,l.length-1),o=o.substr(0,o.length-1),u=l):u=u.substr(0,u.length-1),a=n.closeIndex;else if(-1!==this.options.unpairedTags.indexOf(l))a=n.closeIndex;else{const e=this.readStopNodeData(t,c,h+1);if(!e)throw new Error(`Unexpected end of ${c}`);a=e.i,r=e.tagContent}const s=new e(l);l!==u&&d&&(s[":@"]=this.buildAttributesMap(u,o,l)),r&&(r=this.parseTextData(r,l,o,!0,d,!0,!0)),o=o.substr(0,o.lastIndexOf(".")),s.add(this.options.textNodeName,r),this.addChild(i,s,o)}else{if(u.length>0&&u.lastIndexOf("/")===u.length-1){"/"===l[l.length-1]?(l=l.substr(0,l.length-1),o=o.substr(0,o.length-1),u=l):u=u.substr(0,u.length-1),this.options.transformTagName&&(l=this.options.transformTagName(l));const t=new e(l);l!==u&&d&&(t[":@"]=this.buildAttributesMap(u,o,l)),this.addChild(i,t,o),o=o.substr(0,o.lastIndexOf("."))}else{const t=new e(l);this.tagsNodeStack.push(i),l!==u&&d&&(t[":@"]=this.buildAttributesMap(u,o,l)),this.addChild(i,t,o),i=t}s="",a=h}}else s+=t[a];return r.child};function d(t,e,n){const r=this.options.updateTag(e.tagname,n,e[":@"]);!1===r||("string"==typeof r?(e.tagname=r,t.addChild(e)):t.addChild(e))}const h=function(t){if(this.options.processEntities){for(let e in this.docTypeEntities){const n=this.docTypeEntities[e];t=t.replace(n.regx,n.val)}for(let e in this.lastEntities){const n=this.lastEntities[e];t=t.replace(n.regex,n.val)}if(this.options.htmlEntities)for(let e in this.htmlEntities){const n=this.htmlEntities[e];t=t.replace(n.regex,n.val)}t=t.replace(this.ampEntity.regex,this.ampEntity.val)}return t};function p(t,e,n,r){return t&&(void 0===r&&(r=0===Object.keys(e.child).length),void 0!==(t=this.parseTextData(t,e.tagname,n,!1,!!e[":@"]&&0!==Object.keys(e[":@"]).length,r))&&""!==t&&e.add(this.options.textNodeName,t),t=""),t}function g(t,e,n){const r="*."+n;for(const n in t){const i=t[n];if(r===i||e===i)return!0}return!1}function f(t,e,n,r){const i=t.indexOf(e,n);if(-1===i)throw new Error(r);return i+e.length-1}function m(t,e,n,r=">"){const i=function(t,e,n=">"){let r,i="";for(let s=e;s<t.length;s++){let e=t[s];if(r)e===r&&(r="");else if('"'===e||"'"===e)r=e;else if(e===n[0]){if(!n[1])return{data:i,index:s};if(t[s+1]===n[1])return{data:i,index:s}}else"\t"===e&&(e=" ");i+=e}}(t,e+1,r);if(!i)return;let s=i.data;const o=i.index,a=s.search(/\s/);let l=s,c=!0;-1!==a&&(l=s.substring(0,a),s=s.substring(a+1).trimStart());const u=l;if(n){const t=l.indexOf(":");-1!==t&&(l=l.substr(t+1),c=l!==i.data.substr(t+1))}return{tagName:l,tagExp:s,closeIndex:o,attrExpPresent:c,rawTagName:u}}function b(t,e,n){const r=n;let i=1;for(;n<t.length;n++)if("<"===t[n])if("/"===t[n+1]){const s=f(t,">",n,`${e} is not closed`);if(t.substring(n+2,s).trim()===e&&(i--,0===i))return{tagContent:t.substring(r,n),i:s};n=s}else if("?"===t[n+1])n=f(t,"?>",n+1,"StopNode is not closed.");else if("!--"===t.substr(n+1,3))n=f(t,"--\x3e",n+3,"StopNode is not closed.");else if("!["===t.substr(n+1,2))n=f(t,"]]>",n,"StopNode is not closed.")-2;else{const r=m(t,n,">");r&&((r&&r.tagName)===e&&"/"!==r.tagExp[r.tagExp.length-1]&&i++,n=r.closeIndex)}}function y(e,n,i){if(n&&"string"==typeof e){const t=e.trim();return"true"===t||"false"!==t&&r(e,i)}return t.isExist(e)?e:""}return _=class{constructor(t){this.options=t,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"¢"},pound:{regex:/&(pound|#163);/g,val:"£"},yen:{regex:/&(yen|#165);/g,val:"¥"},euro:{regex:/&(euro|#8364);/g,val:"€"},copyright:{regex:/&(copy|#169);/g,val:"©"},reg:{regex:/&(reg|#174);/g,val:"®"},inr:{regex:/&(inr|#8377);/g,val:"₹"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(t,e)=>String.fromCharCode(Number.parseInt(e,10))},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(t,e)=>String.fromCharCode(Number.parseInt(e,16))}},this.addExternalEntities=s,this.parseXml=u,this.parseTextData=o,this.resolveNameSpace=a,this.buildAttributesMap=c,this.isItStopNode=g,this.replaceEntitiesValue=h,this.readStopNodeData=b,this.saveTextToParentTag=p,this.addChild=d,this.ignoreAttributesFn=i(this.options.ignoreAttributes)}}}(),{prettify:n}=Y(),r=x();return D=class{constructor(e){this.externalEntities={},this.options=t(e)}parse(t,i){if("string"==typeof t);else{if(!t.toString)throw new Error("XML data is accepted in String or Bytes[] form.");t=t.toString()}if(i){!0===i&&(i={});const e=r.validate(t,i);if(!0!==e)throw Error(`${e.err.msg}:${e.err.line}:${e.err.col}`)}const s=new e(this.options);s.addExternalEntities(this.externalEntities);const o=s.parseXml(t);return this.options.preserveOrder||void 0===o?o:n(o,this.options)}addEntity(t,e){if(-1!==e.indexOf("&"))throw new Error("Entity value can't have '&'");if(-1!==t.indexOf("&")||-1!==t.indexOf(";"))throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for '
'");if("&"===e)throw new Error("An entity with value '&' is not permitted");this.externalEntities[t]=e}}}function Z(){if(G)return B;function t(s,o,a,l){let c="",u=!1;for(let d=0;d<s.length;d++){const h=s[d],p=e(h);if(void 0===p)continue;let g="";if(g=0===a.length?p:`${a}.${p}`,p===o.textNodeName){let t=h[p];r(g,o)||(t=o.tagValueProcessor(p,t),t=i(t,o)),u&&(c+=l),c+=t,u=!1;continue}if(p===o.cdataPropName){u&&(c+=l),c+=`<![CDATA[${h[p][0][o.textNodeName]}]]>`,u=!1;continue}if(p===o.commentPropName){c+=l+`\x3c!--${h[p][0][o.textNodeName]}--\x3e`,u=!0;continue}if("?"===p[0]){const t=n(h[":@"],o),e="?xml"===p?"":l;let r=h[p][0][o.textNodeName];r=0!==r.length?" "+r:"",c+=e+`<${p}${r}${t}?>`,u=!0;continue}let f=l;""!==f&&(f+=o.indentBy);const m=l+`<${p}${n(h[":@"],o)}`,b=t(h[p],o,g,f);-1!==o.unpairedTags.indexOf(p)?o.suppressUnpairedNode?c+=m+">":c+=m+"/>":b&&0!==b.length||!o.suppressEmptyNode?b&&b.endsWith(">")?c+=m+`>${b}${l}</${p}>`:(c+=m+">",b&&""!==l&&(b.includes("/>")||b.includes("</"))?c+=l+o.indentBy+b+l:c+=b,c+=`</${p}>`):c+=m+"/>",u=!0}return c}function e(t){const e=Object.keys(t);for(let n=0;n<e.length;n++){const r=e[n];if(t.hasOwnProperty(r)&&":@"!==r)return r}}function n(t,e){let n="";if(t&&!e.ignoreAttributes)for(let r in t){if(!t.hasOwnProperty(r))continue;let s=e.attributeValueProcessor(r,t[r]);s=i(s,e),!0===s&&e.suppressBooleanAttributes?n+=` ${r.substr(e.attributeNamePrefix.length)}`:n+=` ${r.substr(e.attributeNamePrefix.length)}="${s}"`}return n}function r(t,e){let n=(t=t.substr(0,t.length-e.textNodeName.length-1)).substr(t.lastIndexOf(".")+1);for(let r in e.stopNodes)if(e.stopNodes[r]===t||e.stopNodes[r]==="*."+n)return!0;return!1}function i(t,e){if(t&&t.length>0&&e.processEntities)for(let n=0;n<e.entities.length;n++){const r=e.entities[n];t=t.replace(r.regex,r.val)}return t}return G=1,B=function(e,n){let r="";return n.format&&n.indentBy.length>0&&(r="\n"),t(e,n,"",r)}}var W=function(){if(z)return q;z=1;const t=x(),e=K(),n=function(){if(U)return X;U=1;const t=Z(),e=F(),n={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&"},{regex:new RegExp(">","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1};function r(t){this.options=Object.assign({},n,t),!0===this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.ignoreAttributesFn=e(this.options.ignoreAttributes),this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=o),this.processTextOrObjNode=i,this.options.format?(this.indentate=s,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function i(t,e,n,r){const i=this.j2x(t,n+1,r.concat(e));return void 0!==t[this.options.textNodeName]&&1===Object.keys(t).length?this.buildTextValNode(t[this.options.textNodeName],e,i.attrStr,n):this.buildObjectNode(i.val,e,i.attrStr,n)}function s(t){return this.options.indentBy.repeat(t)}function o(t){return!(!t.startsWith(this.options.attributeNamePrefix)||t===this.options.textNodeName)&&t.substr(this.attrPrefixLen)}return r.prototype.build=function(e){return this.options.preserveOrder?t(e,this.options):(Array.isArray(e)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(e={[this.options.arrayNodeName]:e}),this.j2x(e,0,[]).val)},r.prototype.j2x=function(t,e,n){let r="",i="";const s=n.join(".");for(let o in t)if(Object.prototype.hasOwnProperty.call(t,o))if(void 0===t[o])this.isAttribute(o)&&(i+="");else if(null===t[o])this.isAttribute(o)?i+="":"?"===o[0]?i+=this.indentate(e)+"<"+o+"?"+this.tagEndChar:i+=this.indentate(e)+"<"+o+"/"+this.tagEndChar;else if(t[o]instanceof Date)i+=this.buildTextValNode(t[o],o,"",e);else if("object"!=typeof t[o]){const n=this.isAttribute(o);if(n&&!this.ignoreAttributesFn(n,s))r+=this.buildAttrPairStr(n,""+t[o]);else if(!n)if(o===this.options.textNodeName){let e=this.options.tagValueProcessor(o,""+t[o]);i+=this.replaceEntitiesValue(e)}else i+=this.buildTextValNode(t[o],o,"",e)}else if(Array.isArray(t[o])){const r=t[o].length;let s="",a="";for(let l=0;l<r;l++){const r=t[o][l];if(void 0===r);else if(null===r)"?"===o[0]?i+=this.indentate(e)+"<"+o+"?"+this.tagEndChar:i+=this.indentate(e)+"<"+o+"/"+this.tagEndChar;else if("object"==typeof r)if(this.options.oneListGroup){const t=this.j2x(r,e+1,n.concat(o));s+=t.val,this.options.attributesGroupName&&r.hasOwnProperty(this.options.attributesGroupName)&&(a+=t.attrStr)}else s+=this.processTextOrObjNode(r,o,e,n);else if(this.options.oneListGroup){let t=this.options.tagValueProcessor(o,r);t=this.replaceEntitiesValue(t),s+=t}else s+=this.buildTextValNode(r,o,"",e)}this.options.oneListGroup&&(s=this.buildObjectNode(s,o,a,e)),i+=s}else if(this.options.attributesGroupName&&o===this.options.attributesGroupName){const e=Object.keys(t[o]),n=e.length;for(let i=0;i<n;i++)r+=this.buildAttrPairStr(e[i],""+t[o][e[i]])}else i+=this.processTextOrObjNode(t[o],o,e,n);return{attrStr:r,val:i}},r.prototype.buildAttrPairStr=function(t,e){return e=this.options.attributeValueProcessor(t,""+e),e=this.replaceEntitiesValue(e),this.options.suppressBooleanAttributes&&"true"===e?" "+t:" "+t+'="'+e+'"'},r.prototype.buildObjectNode=function(t,e,n,r){if(""===t)return"?"===e[0]?this.indentate(r)+"<"+e+n+"?"+this.tagEndChar:this.indentate(r)+"<"+e+n+this.closeTag(e)+this.tagEndChar;{let i="</"+e+this.tagEndChar,s="";return"?"===e[0]&&(s="?",i=""),!n&&""!==n||-1!==t.indexOf("<")?!1!==this.options.commentPropName&&e===this.options.commentPropName&&0===s.length?this.indentate(r)+`\x3c!--${t}--\x3e`+this.newLine:this.indentate(r)+"<"+e+n+s+this.tagEndChar+t+this.indentate(r)+i:this.indentate(r)+"<"+e+n+s+">"+t+i}},r.prototype.closeTag=function(t){let e="";return-1!==this.options.unpairedTags.indexOf(t)?this.options.suppressUnpairedNode||(e="/"):e=this.options.suppressEmptyNode?"/":`></${t}`,e},r.prototype.buildTextValNode=function(t,e,n,r){if(!1!==this.options.cdataPropName&&e===this.options.cdataPropName)return this.indentate(r)+`<![CDATA[${t}]]>`+this.newLine;if(!1!==this.options.commentPropName&&e===this.options.commentPropName)return this.indentate(r)+`\x3c!--${t}--\x3e`+this.newLine;if("?"===e[0])return this.indentate(r)+"<"+e+n+"?"+this.tagEndChar;{let i=this.options.tagValueProcessor(e,t);return i=this.replaceEntitiesValue(i),""===i?this.indentate(r)+"<"+e+n+this.closeTag(e)+this.tagEndChar:this.indentate(r)+"<"+e+n+">"+i+"</"+e+this.tagEndChar}},r.prototype.replaceEntitiesValue=function(t){if(t&&t.length>0&&this.options.processEntities)for(let e=0;e<this.options.entities.length;e++){const n=this.options.entities[e];t=t.replace(n.regex,n.val)}return t},X=r}();return q={XMLParser:e,XMLValidator:t,XMLBuilder:n}}();class J{_view;constructor(t){Q(t),this._view=t}get id(){return this._view.id}get name(){return this._view.name}get caption(){return this._view.caption}get emptyTitle(){return this._view.emptyTitle}get emptyCaption(){return this._view.emptyCaption}get getContents(){return this._view.getContents}get icon(){return this._view.icon}set icon(t){this._view.icon=t}get order(){return this._view.order}set order(t){this._view.order=t}get params(){return this._view.params}set params(t){this._view.params=t}get columns(){return this._view.columns}get emptyView(){return this._view.emptyView}get parent(){return this._view.parent}get sticky(){return this._view.sticky}get expanded(){return this._view.expanded}set expanded(t){this._view.expanded=t}get defaultSortKey(){return this._view.defaultSortKey}get loadChildViews(){return this._view.loadChildViews}}const Q=function(t){if(!t.id||"string"!=typeof t.id)throw new Error("View id is required and must be a string");if(!t.name||"string"!=typeof t.name)throw new Error("View name is required and must be a string");if("caption"in t&&"string"!=typeof t.caption)throw new Error("View caption must be a string");if(!t.getContents||"function"!=typeof t.getContents)throw new Error("View getContents is required and must be a function");if(!t.icon||"string"!=typeof t.icon||!function(t){if("string"!=typeof t)throw new TypeError(`Expected a \`string\`, got \`${typeof t}\``);if(0===(t=t.trim()).length)return!1;if(!0!==W.XMLValidator.validate(t))return!1;let e;const n=new W.XMLParser;try{e=n.parse(t)}catch{return!1}return!!e&&!!Object.keys(e).some((t=>"svg"===t.toLowerCase()))}(t.icon))throw new Error("View icon is required and must be a valid svg string");if("order"in t&&"number"!=typeof t.order)throw new Error("View order must be a number");if(t.columns&&t.columns.forEach((t=>{if(!(t instanceof b))throw new Error("View columns must be an array of Column. Invalid column found")})),t.emptyView&&"function"!=typeof t.emptyView)throw new Error("View emptyView must be a function");if(t.parent&&"string"!=typeof t.parent)throw new Error("View parent must be a string");if("sticky"in t&&"boolean"!=typeof t.sticky)throw new Error("View sticky must be a boolean");if("expanded"in t&&"boolean"!=typeof t.expanded)throw new Error("View expanded must be a boolean");if(t.defaultSortKey&&"string"!=typeof t.defaultSortKey)throw new Error("View defaultSortKey must be a string");if(t.loadChildViews&&"function"!=typeof t.loadChildViews)throw new Error("View loadChildViews must be a function");return!0};var tt,et,nt,rt;function it(){if(et)return tt;et=1;const t="object"==typeof o&&o.env&&o.env.NODE_DEBUG&&/\bsemver\b/i.test(o.env.NODE_DEBUG)?(...t)=>console.error("SEMVER",...t):()=>{};return tt=t}function st(){if(rt)return nt;rt=1;const t=Number.MAX_SAFE_INTEGER||9007199254740991;return nt={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_BUILD_LENGTH:250,MAX_SAFE_INTEGER:t,RELEASE_TYPES:["major","premajor","minor","preminor","patch","prepatch","prerelease"],SEMVER_SPEC_VERSION:"2.0.0",FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}}var ot,at,lt,ct,ut,dt,ht,pt,gt,ft,mt,bt,yt,vt={exports:{}};function Et(){if(ht)return dt;ht=1;const t=it(),{MAX_LENGTH:e,MAX_SAFE_INTEGER:n}=st(),{safeRe:r,t:i}=(ot||(ot=1,function(t,e){const{MAX_SAFE_COMPONENT_LENGTH:n,MAX_SAFE_BUILD_LENGTH:r,MAX_LENGTH:i}=st(),s=it(),o=(e=t.exports={}).re=[],a=e.safeRe=[],l=e.src=[],c=e.t={};let u=0;const d="[a-zA-Z0-9-]",h=[["\\s",1],["\\d",i],[d,r]],p=(t,e,n)=>{const r=(t=>{for(const[e,n]of h)t=t.split(`${e}*`).join(`${e}{0,${n}}`).split(`${e}+`).join(`${e}{1,${n}}`);return t})(e),i=u++;s(t,i,e),c[t]=i,l[i]=e,o[i]=new RegExp(e,n?"g":void 0),a[i]=new RegExp(r,n?"g":void 0)};p("NUMERICIDENTIFIER","0|[1-9]\\d*"),p("NUMERICIDENTIFIERLOOSE","\\d+"),p("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${d}*`),p("MAINVERSION",`(${l[c.NUMERICIDENTIFIER]})\\.(${l[c.NUMERICIDENTIFIER]})\\.(${l[c.NUMERICIDENTIFIER]})`),p("MAINVERSIONLOOSE",`(${l[c.NUMERICIDENTIFIERLOOSE]})\\.(${l[c.NUMERICIDENTIFIERLOOSE]})\\.(${l[c.NUMERICIDENTIFIERLOOSE]})`),p("PRERELEASEIDENTIFIER",`(?:${l[c.NUMERICIDENTIFIER]}|${l[c.NONNUMERICIDENTIFIER]})`),p("PRERELEASEIDENTIFIERLOOSE",`(?:${l[c.NUMERICIDENTIFIERLOOSE]}|${l[c.NONNUMERICIDENTIFIER]})`),p("PRERELEASE",`(?:-(${l[c.PRERELEASEIDENTIFIER]}(?:\\.${l[c.PRERELEASEIDENTIFIER]})*))`),p("PRERELEASELOOSE",`(?:-?(${l[c.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${l[c.PRERELEASEIDENTIFIERLOOSE]})*))`),p("BUILDIDENTIFIER",`${d}+`),p("BUILD",`(?:\\+(${l[c.BUILDIDENTIFIER]}(?:\\.${l[c.BUILDIDENTIFIER]})*))`),p("FULLPLAIN",`v?${l[c.MAINVERSION]}${l[c.PRERELEASE]}?${l[c.BUILD]}?`),p("FULL",`^${l[c.FULLPLAIN]}$`),p("LOOSEPLAIN",`[v=\\s]*${l[c.MAINVERSIONLOOSE]}${l[c.PRERELEASELOOSE]}?${l[c.BUILD]}?`),p("LOOSE",`^${l[c.LOOSEPLAIN]}$`),p("GTLT","((?:<|>)?=?)"),p("XRANGEIDENTIFIERLOOSE",`${l[c.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),p("XRANGEIDENTIFIER",`${l[c.NUMERICIDENTIFIER]}|x|X|\\*`),p("XRANGEPLAIN",`[v=\\s]*(${l[c.XRANGEIDENTIFIER]})(?:\\.(${l[c.XRANGEIDENTIFIER]})(?:\\.(${l[c.XRANGEIDENTIFIER]})(?:${l[c.PRERELEASE]})?${l[c.BUILD]}?)?)?`),p("XRANGEPLAINLOOSE",`[v=\\s]*(${l[c.XRANGEIDENTIFIERLOOSE]})(?:\\.(${l[c.XRANGEIDENTIFIERLOOSE]})(?:\\.(${l[c.XRANGEIDENTIFIERLOOSE]})(?:${l[c.PRERELEASELOOSE]})?${l[c.BUILD]}?)?)?`),p("XRANGE",`^${l[c.GTLT]}\\s*${l[c.XRANGEPLAIN]}$`),p("XRANGELOOSE",`^${l[c.GTLT]}\\s*${l[c.XRANGEPLAINLOOSE]}$`),p("COERCEPLAIN",`(^|[^\\d])(\\d{1,${n}})(?:\\.(\\d{1,${n}}))?(?:\\.(\\d{1,${n}}))?`),p("COERCE",`${l[c.COERCEPLAIN]}(?:$|[^\\d])`),p("COERCEFULL",l[c.COERCEPLAIN]+`(?:${l[c.PRERELEASE]})?(?:${l[c.BUILD]})?(?:$|[^\\d])`),p("COERCERTL",l[c.COERCE],!0),p("COERCERTLFULL",l[c.COERCEFULL],!0),p("LONETILDE","(?:~>?)"),p("TILDETRIM",`(\\s*)${l[c.LONETILDE]}\\s+`,!0),e.tildeTrimReplace="$1~",p("TILDE",`^${l[c.LONETILDE]}${l[c.XRANGEPLAIN]}$`),p("TILDELOOSE",`^${l[c.LONETILDE]}${l[c.XRANGEPLAINLOOSE]}$`),p("LONECARET","(?:\\^)"),p("CARETTRIM",`(\\s*)${l[c.LONECARET]}\\s+`,!0),e.caretTrimReplace="$1^",p("CARET",`^${l[c.LONECARET]}${l[c.XRANGEPLAIN]}$`),p("CARETLOOSE",`^${l[c.LONECARET]}${l[c.XRANGEPLAINLOOSE]}$`),p("COMPARATORLOOSE",`^${l[c.GTLT]}\\s*(${l[c.LOOSEPLAIN]})$|^$`),p("COMPARATOR",`^${l[c.GTLT]}\\s*(${l[c.FULLPLAIN]})$|^$`),p("COMPARATORTRIM",`(\\s*)${l[c.GTLT]}\\s*(${l[c.LOOSEPLAIN]}|${l[c.XRANGEPLAIN]})`,!0),e.comparatorTrimReplace="$1$2$3",p("HYPHENRANGE",`^\\s*(${l[c.XRANGEPLAIN]})\\s+-\\s+(${l[c.XRANGEPLAIN]})\\s*$`),p("HYPHENRANGELOOSE",`^\\s*(${l[c.XRANGEPLAINLOOSE]})\\s+-\\s+(${l[c.XRANGEPLAINLOOSE]})\\s*$`),p("STAR","(<|>)?=?\\s*\\*"),p("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),p("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")}(vt,vt.exports)),vt.exports),s=function(){if(lt)return at;lt=1;const t=Object.freeze({loose:!0}),e=Object.freeze({});return at=n=>n?"object"!=typeof n?t:n:e}(),{compareIdentifiers:o}=function(){if(ut)return ct;ut=1;const t=/^[0-9]+$/,e=(e,n)=>{const r=t.test(e),i=t.test(n);return r&&i&&(e=+e,n=+n),e===n?0:r&&!i?-1:i&&!r?1:e<n?-1:1};return ct={compareIdentifiers:e,rcompareIdentifiers:(t,n)=>e(n,t)}}();class a{constructor(o,l){if(l=s(l),o instanceof a){if(o.loose===!!l.loose&&o.includePrerelease===!!l.includePrerelease)return o;o=o.version}else if("string"!=typeof o)throw new TypeError(`Invalid version. Must be a string. Got type "${typeof o}".`);if(o.length>e)throw new TypeError(`version is longer than ${e} characters`);t("SemVer",o,l),this.options=l,this.loose=!!l.loose,this.includePrerelease=!!l.includePrerelease;const c=o.trim().match(l.loose?r[i.LOOSE]:r[i.FULL]);if(!c)throw new TypeError(`Invalid Version: ${o}`);if(this.raw=o,this.major=+c[1],this.minor=+c[2],this.patch=+c[3],this.major>n||this.major<0)throw new TypeError("Invalid major version");if(this.minor>n||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>n||this.patch<0)throw new TypeError("Invalid patch version");c[4]?this.prerelease=c[4].split(".").map((t=>{if(/^[0-9]+$/.test(t)){const e=+t;if(e>=0&&e<n)return e}return t})):this.prerelease=[],this.build=c[5]?c[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(e){if(t("SemVer.compare",this.version,this.options,e),!(e instanceof a)){if("string"==typeof e&&e===this.version)return 0;e=new a(e,this.options)}return e.version===this.version?0:this.compareMain(e)||this.comparePre(e)}compareMain(t){return t instanceof a||(t=new a(t,this.options)),o(this.major,t.major)||o(this.minor,t.minor)||o(this.patch,t.patch)}comparePre(e){if(e instanceof a||(e=new a(e,this.options)),this.prerelease.length&&!e.prerelease.length)return-1;if(!this.prerelease.length&&e.prerelease.length)return 1;if(!this.prerelease.length&&!e.prerelease.length)return 0;let n=0;do{const r=this.prerelease[n],i=e.prerelease[n];if(t("prerelease compare",n,r,i),void 0===r&&void 0===i)return 0;if(void 0===i)return 1;if(void 0===r)return-1;if(r!==i)return o(r,i)}while(++n)}compareBuild(e){e instanceof a||(e=new a(e,this.options));let n=0;do{const r=this.build[n],i=e.build[n];if(t("build compare",n,r,i),void 0===r&&void 0===i)return 0;if(void 0===i)return 1;if(void 0===r)return-1;if(r!==i)return o(r,i)}while(++n)}inc(t,e,n){switch(t){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",e,n);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",e,n);break;case"prepatch":this.prerelease.length=0,this.inc("patch",e,n),this.inc("pre",e,n);break;case"prerelease":0===this.prerelease.length&&this.inc("patch",e,n),this.inc("pre",e,n);break;case"major":0===this.minor&&0===this.patch&&0!==this.prerelease.length||this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":0===this.patch&&0!==this.prerelease.length||this.minor++,this.patch=0,this.prerelease=[];break;case"patch":0===this.prerelease.length&&this.patch++,this.prerelease=[];break;case"pre":{const t=Number(n)?1:0;if(!e&&!1===n)throw new Error("invalid increment argument: identifier is empty");if(0===this.prerelease.length)this.prerelease=[t];else{let r=this.prerelease.length;for(;--r>=0;)"number"==typeof this.prerelease[r]&&(this.prerelease[r]++,r=-2);if(-1===r){if(e===this.prerelease.join(".")&&!1===n)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(t)}}if(e){let r=[e,t];!1===n&&(r=[e]),0===o(this.prerelease[0],e)?isNaN(this.prerelease[1])&&(this.prerelease=r):this.prerelease=r}break}default:throw new Error(`invalid increment argument: ${t}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}}return dt=a}!function(){if(mt)return ft;mt=1;const t=function(){if(gt)return pt;gt=1;const t=Et();return pt=(e,n,r=!1)=>{if(e instanceof t)return e;try{return new t(e,n)}catch(t){if(!r)return null;throw t}}}();ft=(e,n)=>{const r=t(e,n);return r?r.version:null}}(),function(){if(yt)return bt;yt=1;const t=Et();bt=(e,n)=>new t(e,n).major}(),s.m},42634:()=>{},44563:(t,e,n)=>{"use strict";var r=n(35810),i=n(94205),s=n(85471),o=n(82680),a=n(85168),l=n(53334);const c='<svg xmlns="http://www.w3.org/2000/svg" id="mdi-tag-multiple" viewBox="0 0 24 24"><path d="M5.5,9A1.5,1.5 0 0,0 7,7.5A1.5,1.5 0 0,0 5.5,6A1.5,1.5 0 0,0 4,7.5A1.5,1.5 0 0,0 5.5,9M17.41,11.58C17.77,11.94 18,12.44 18,13C18,13.55 17.78,14.05 17.41,14.41L12.41,19.41C12.05,19.77 11.55,20 11,20C10.45,20 9.95,19.78 9.58,19.41L2.59,12.42C2.22,12.05 2,11.55 2,11V6C2,4.89 2.89,4 4,4H9C9.55,4 10.05,4.22 10.41,4.58L17.41,11.58M13.54,5.71L14.54,4.71L21.41,11.58C21.78,11.94 22,12.45 22,13C22,13.55 21.78,14.05 21.42,14.41L16.04,19.79L15.04,18.79L20.75,13L13.54,5.71Z" /></svg>';async function u(t){const e=await new Promise((e=>{(0,a.Ss)((0,s.$V)((()=>Promise.all([n.e(4208),n.e(1406)]).then(n.bind(n,51406)))),{nodes:t},(t=>{e(t)}))}));return Array(t.length).fill(e)}const d=new r.hY({id:"systemtags:bulk",displayName:()=>(0,l.t)("systemtags","Manage tags"),iconSvgInline:()=>c,enabled:t=>!(0,o.f)()&&0!==t.length&&!t.some((t=>!t.isDavResource))&&!t.some((t=>!(t.permissions&r.aX.UPDATE))),exec:async t=>u([t])[0],execBatch:u});var h=n(65899),p=n(61338);const g=(0,n(35947).YK)().setApp("files").detectUser().build(),f=async t=>{const e=function(){const t=(0,h.nY)("active",{state:()=>({_initialized:!1,activeNode:null,activeView:null,activeAction:null}),actions:{setActiveNode(t){if(!t)throw new Error("Use clearActiveNode to clear the active node");g.debug("Setting active node",{node:t}),this.activeNode=t},clearActiveNode(){this.activeNode=null},onDeletedNode(t){this.activeNode&&this.activeNode.source===t.source&&this.clearActiveNode()},setActiveAction(t){this.activeAction=t},clearActiveAction(){this.activeAction=null},onChangedView(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;g.debug("Setting active view",{view:t}),this.activeView=t,this.clearActiveNode()}}}),e=t(...arguments),n=(0,r.bh)();return e._initialized||((0,p.B1)("files:node:deleted",e.onDeletedNode),e._initialized=!0,e.onChangedView(n.active),n.addEventListener("updateActive",(t=>{e.onChangedView(t.detail)}))),e}((window._nc_files_pinia||(window._nc_files_pinia=(0,h.Ey)()),window._nc_files_pinia)),n=window?.OCP?.Files?.Router?.query?.dir||"/",i=e.activeNode,o=e.activeView;if(!i||!o)return void g.error("No active node or view",{node:i,view:o});if(i.status===r.zI.LOADING)return void g.debug("Node is already loading",{node:i});if(!t.enabled([i],o))return void g.debug("Action is not not available for the current context",{action:t,node:i,view:o});let c=t.id;try{c=t.displayName([i],o)}catch(e){g.error("Error while getting action display name",{action:t,error:e})}try{s.Ay.set(i,"status",r.zI.LOADING),e.setActiveAction(t);const u=await t.exec(i,o,n);if(null==u)return;if(u)return void(0,a.Te)((0,l.t)("files",'"{displayName}" action executed successfully',{displayName:c}));(0,a.Qg)((0,l.t)("files",'"{displayName}" action failed',{displayName:c}))}catch(e){g.error("Error while executing action",{action:t,error:e}),(0,a.Qg)((0,l.t)("files",'"{displayName}" action failed',{displayName:c}))}finally{s.Ay.set(i,"status",void 0),e.clearActiveAction()}};var m=n(25631),b=n(21777),y=n(82528);const v="/systemtags",E=(0,r.H4)(),w=t=>(0,r.Al)(t),A=t=>`<?xml version="1.0"?>\n<oc:filter-files ${(0,r.CP)()}>\n\t<d:prop>\n\t\t${(0,r.VX)()}\n\t</d:prop>\n\t<oc:filter-rules>\n\t\t<oc:systemtag>${t}</oc:systemtag>\n\t</oc:filter-rules>\n</oc:filter-files>`,N=function(t){return new r.vd({id:t.id,source:`${r.PY}${v}/${t.id}`,owner:String((0,b.HW)()?.uid??"anonymous"),root:v,displayname:t.displayName,permissions:r.aX.READ,attributes:{...t,"is-tag":!0}})},x="tags";var I=n(85072),O=n.n(I),C=n(97825),T=n.n(C),L=n(77659),k=n.n(L),R=n(55056),$=n.n(R),P=n(10540),_=n.n(P),S=n(41113),M=n.n(S),F=n(73911),j={};j.styleTagTransform=M(),j.setAttributes=$(),j.insert=k().bind(null,"head"),j.domAPI=T(),j.insertStyleElement=_(),O()(F.A,j),F.A&&F.A.locals&&F.A.locals;var D=n(57599),V=n(12686);const B=[],G=function(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const n=document.createElement("li");n.classList.add("files-list__system-tag"),n.setAttribute("data-systemtag-name",t),n.textContent=t;const r=B.find((e=>e.displayName===t));if(r?.color){const t=getComputedStyle(document.body).getPropertyValue("--color-main-background").replace("#","")||((0,D.j2)()?"000000":"ffffff"),e=(0,D.W7)(`#${r.color}`,`#${t}`);n.style.setProperty("--systemtag-color",e),n.setAttribute("data-systemtag-color","true")}return e&&n.classList.add("files-list__system-tag--more"),n},X=async function(t){const e=(0,V.rA)(t),n=document.createElement("ul");if(n.classList.add("files-list__system-tags"),n.setAttribute("aria-label",(0,l.t)("files","Assigned collaborative tags")),n.setAttribute("data-systemtags-fileid",t.fileid?.toString()||""),0===e.length)return n;if(0===B.length)try{B.push(...await(0,y.un)())}catch(t){m.A.error("Failed to fetch tags",{error:t})}if(n.append(G(e[0])),2===e.length)n.append(G(e[1]));else if(e.length>1){const t=G("+"+(e.length-1),!0);t.setAttribute("title",e.slice(1).join(", ")),t.setAttribute("aria-hidden","true"),t.setAttribute("role","presentation"),n.append(t);for(const t of e.slice(1)){const e=G(t);e.classList.add("hidden-visually"),n.append(e)}}return n},U=new r.hY({id:"system-tags",displayName:()=>"",iconSvgInline:()=>"",enabled:t=>1===t.length,exec:async()=>null,renderInline:X,order:0});(0,p.B1)("systemtags:node:updated",(function(t){X(t).then((e=>{document.querySelectorAll(`[data-systemtags-fileid="${t.fileid}"]`).forEach((t=>{t.replaceWith(e)}))}))})),(0,p.B1)("systemtags:tag:created",(function(t){B.push(t)})),(0,p.B1)("systemtags:tag:deleted",(function(t){B.splice(B.findIndex((e=>e.id===t.id)),1)})),(0,p.B1)("systemtags:tag:updated",(function(t){const e=B.findIndex((e=>e.id===t.id));-1!==e&&(B[e]=t),function(t){document.querySelectorAll(`[data-systemtag-name="${t.displayName}"]`).forEach((e=>{e.style.setProperty("--systemtag-color",`#${t.color}`)}))}(t)}));const q=new r.hY({id:"systemtags:open-in-files",displayName:()=>(0,l.t)("systemtags","Open in Files"),iconSvgInline:()=>"",enabled:(t,e)=>e.id===x&&1===t.length&&!0!==t[0].attributes["is-tag"]&&t[0].type===r.pt.Folder,async exec(t){let e=t.dirname;return t.type===r.pt.Folder&&(e=t.path),window.OCP.Files.Router.goToRoute(null,{view:"files",fileid:String(t.fileid)},{dir:e,openfile:"true"}),null},order:-1e3,default:r.m9.HIDDEN});(0,r.Yc)("nc:system-tags"),(0,r.Gg)(d),(0,r.Gg)(U),(0,r.Gg)(q),(0,r.bh)().register(new r.Ss({id:x,name:(0,l.Tl)("systemtags","Tags"),caption:(0,l.Tl)("systemtags","List of tags and their associated files and folders."),emptyTitle:(0,l.Tl)("systemtags","No tags found"),emptyCaption:(0,l.Tl)("systemtags","Tags you have created will show up here."),icon:c,order:25,getContents:async function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"/";const e=(await(0,y.un)()).filter((t=>t.userVisible));if("/"===t)return{folder:new r.vd({id:0,source:`${r.PY}${v}`,owner:(0,b.HW)()?.uid,root:v,permissions:r.aX.NONE}),contents:e.map(N)};const n=parseInt(t.split("/",2)[1]),i=e.find((t=>t.id===n));if(!i)throw new Error("Tag not found");return{folder:N(i),contents:(await E.getDirectoryContents(r.lJ,{details:!0,data:A(n),headers:{method:"REPORT"}})).data.map(w)}}})),document.addEventListener("DOMContentLoaded",(()=>{(0,i.C)("t",(()=>f(d)),{stop:!0,prevent:!0}),m.A.debug("Hotkeys registered")}))},57599:(t,e,n)=>{"use strict";n.d(e,{W7:()=>P,Pj:()=>$,j2:()=>R});const r={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},i=Object.create(null);for(const t in r)Object.hasOwn(r,t)&&(i[r[t]]=t);const s={to:{},get:{}};function o(t,e,n){return Math.min(Math.max(e,t),n)}function a(t){const e=Math.round(t).toString(16).toUpperCase();return e.length<2?"0"+e:e}s.get=function(t){let e,n;switch(t.slice(0,3).toLowerCase()){case"hsl":e=s.get.hsl(t),n="hsl";break;case"hwb":e=s.get.hwb(t),n="hwb";break;default:e=s.get.rgb(t),n="rgb"}return e?{model:n,value:e}:null},s.get.rgb=function(t){if(!t)return null;let e,n,i,s=[0,0,0,1];if(e=t.match(/^#([a-f\d]{6})([a-f\d]{2})?$/i)){for(i=e[2],e=e[1],n=0;n<3;n++){const t=2*n;s[n]=Number.parseInt(e.slice(t,t+2),16)}i&&(s[3]=Number.parseInt(i,16)/255)}else if(e=t.match(/^#([a-f\d]{3,4})$/i)){for(e=e[1],i=e[3],n=0;n<3;n++)s[n]=Number.parseInt(e[n]+e[n],16);i&&(s[3]=Number.parseInt(i+i,16)/255)}else if(e=t.match(/^rgba?\(\s*([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)\s*(?:[,|/]\s*([+-]?[\d.]+)(%?)\s*)?\)$/)){for(n=0;n<3;n++)s[n]=Number.parseInt(e[n+1],10);e[4]&&(s[3]=e[5]?.01*Number.parseFloat(e[4]):Number.parseFloat(e[4]))}else{if(!(e=t.match(/^rgba?\(\s*([+-]?[\d.]+)%\s*,?\s*([+-]?[\d.]+)%\s*,?\s*([+-]?[\d.]+)%\s*(?:[,|/]\s*([+-]?[\d.]+)(%?)\s*)?\)$/)))return(e=t.match(/^(\w+)$/))?"transparent"===e[1]?[0,0,0,0]:Object.hasOwn(r,e[1])?(s=r[e[1]],s[3]=1,s):null:null;for(n=0;n<3;n++)s[n]=Math.round(2.55*Number.parseFloat(e[n+1]));e[4]&&(s[3]=e[5]?.01*Number.parseFloat(e[4]):Number.parseFloat(e[4]))}for(n=0;n<3;n++)s[n]=o(s[n],0,255);return s[3]=o(s[3],0,1),s},s.get.hsl=function(t){if(!t)return null;const e=t.match(/^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d.]+)%\s*,?\s*([+-]?[\d.]+)%\s*(?:[,|/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/);if(e){const t=Number.parseFloat(e[4]);return[(Number.parseFloat(e[1])%360+360)%360,o(Number.parseFloat(e[2]),0,100),o(Number.parseFloat(e[3]),0,100),o(Number.isNaN(t)?1:t,0,1)]}return null},s.get.hwb=function(t){if(!t)return null;const e=t.match(/^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d.]+)%\s*,\s*([+-]?[\d.]+)%\s*(?:,\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/);if(e){const t=Number.parseFloat(e[4]);return[(Number.parseFloat(e[1])%360+360)%360,o(Number.parseFloat(e[2]),0,100),o(Number.parseFloat(e[3]),0,100),o(Number.isNaN(t)?1:t,0,1)]}return null},s.to.hex=function(...t){return"#"+a(t[0])+a(t[1])+a(t[2])+(t[3]<1?a(Math.round(255*t[3])):"")},s.to.rgb=function(...t){return t.length<4||1===t[3]?"rgb("+Math.round(t[0])+", "+Math.round(t[1])+", "+Math.round(t[2])+")":"rgba("+Math.round(t[0])+", "+Math.round(t[1])+", "+Math.round(t[2])+", "+t[3]+")"},s.to.rgb.percent=function(...t){const e=Math.round(t[0]/255*100),n=Math.round(t[1]/255*100),r=Math.round(t[2]/255*100);return t.length<4||1===t[3]?"rgb("+e+"%, "+n+"%, "+r+"%)":"rgba("+e+"%, "+n+"%, "+r+"%, "+t[3]+")"},s.to.hsl=function(...t){return t.length<4||1===t[3]?"hsl("+t[0]+", "+t[1]+"%, "+t[2]+"%)":"hsla("+t[0]+", "+t[1]+"%, "+t[2]+"%, "+t[3]+")"},s.to.hwb=function(...t){let e="";return t.length>=4&&1!==t[3]&&(e=", "+t[3]),"hwb("+t[0]+", "+t[1]+"%, "+t[2]+"%"+e+")"},s.to.keyword=function(...t){return i[t.slice(0,3)]};const l=s,c={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},u={};for(const t of Object.keys(c))u[c[t]]=t;const d={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}},h=d,p=(6/29)**3;for(const t of Object.keys(d)){if(!("channels"in d[t]))throw new Error("missing channels property: "+t);if(!("labels"in d[t]))throw new Error("missing channel labels property: "+t);if(d[t].labels.length!==d[t].channels)throw new Error("channel and label counts mismatch: "+t);const{channels:e,labels:n}=d[t];delete d[t].channels,delete d[t].labels,Object.defineProperty(d[t],"channels",{value:e}),Object.defineProperty(d[t],"labels",{value:n})}function g(t,e){return function(n){return e(t(n))}}function f(t,e){const n=[e[t].parent,t];let r=h[e[t].parent][t],i=e[t].parent;for(;e[i].parent;)n.unshift(e[i].parent),r=g(h[e[i].parent][i],r),i=e[i].parent;return r.conversion=n,r}d.rgb.hsl=function(t){const e=t[0]/255,n=t[1]/255,r=t[2]/255,i=Math.min(e,n,r),s=Math.max(e,n,r),o=s-i;let a,l;switch(s){case i:a=0;break;case e:a=(n-r)/o;break;case n:a=2+(r-e)/o;break;case r:a=4+(e-n)/o}a=Math.min(60*a,360),a<0&&(a+=360);const c=(i+s)/2;return l=s===i?0:c<=.5?o/(s+i):o/(2-s-i),[a,100*l,100*c]},d.rgb.hsv=function(t){let e,n,r,i,s;const o=t[0]/255,a=t[1]/255,l=t[2]/255,c=Math.max(o,a,l),u=c-Math.min(o,a,l),d=function(t){return(c-t)/6/u+.5};if(0===u)i=0,s=0;else{switch(s=u/c,e=d(o),n=d(a),r=d(l),c){case o:i=r-n;break;case a:i=1/3+e-r;break;case l:i=2/3+n-e}i<0?i+=1:i>1&&(i-=1)}return[360*i,100*s,100*c]},d.rgb.hwb=function(t){const e=t[0],n=t[1];let r=t[2];const i=d.rgb.hsl(t)[0],s=1/255*Math.min(e,Math.min(n,r));return r=1-1/255*Math.max(e,Math.max(n,r)),[i,100*s,100*r]},d.rgb.cmyk=function(t){const e=t[0]/255,n=t[1]/255,r=t[2]/255,i=Math.min(1-e,1-n,1-r);return[100*((1-e-i)/(1-i)||0),100*((1-n-i)/(1-i)||0),100*((1-r-i)/(1-i)||0),100*i]},d.rgb.keyword=function(t){const e=u[t];if(e)return e;let n,r=Number.POSITIVE_INFINITY;for(const e of Object.keys(c)){const o=(s=c[e],((i=t)[0]-s[0])**2+(i[1]-s[1])**2+(i[2]-s[2])**2);o<r&&(r=o,n=e)}var i,s;return n},d.keyword.rgb=function(t){return c[t]},d.rgb.xyz=function(t){let e=t[0]/255,n=t[1]/255,r=t[2]/255;return e=e>.04045?((e+.055)/1.055)**2.4:e/12.92,n=n>.04045?((n+.055)/1.055)**2.4:n/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92,[100*(.4124564*e+.3575761*n+.1804375*r),100*(.2126729*e+.7151522*n+.072175*r),100*(.0193339*e+.119192*n+.9503041*r)]},d.rgb.lab=function(t){const e=d.rgb.xyz(t);let n=e[0],r=e[1],i=e[2];return n/=95.047,r/=100,i/=108.883,n=n>p?n**(1/3):7.787*n+16/116,r=r>p?r**(1/3):7.787*r+16/116,i=i>p?i**(1/3):7.787*i+16/116,[116*r-16,500*(n-r),200*(r-i)]},d.hsl.rgb=function(t){const e=t[0]/360,n=t[1]/100,r=t[2]/100;let i,s;if(0===n)return s=255*r,[s,s,s];const o=r<.5?r*(1+n):r+n-r*n,a=2*r-o,l=[0,0,0];for(let t=0;t<3;t++)i=e+1/3*-(t-1),i<0&&i++,i>1&&i--,s=6*i<1?a+6*(o-a)*i:2*i<1?o:3*i<2?a+(o-a)*(2/3-i)*6:a,l[t]=255*s;return l},d.hsl.hsv=function(t){const e=t[0];let n=t[1]/100,r=t[2]/100,i=n;const s=Math.max(r,.01);return r*=2,n*=r<=1?r:2-r,i*=s<=1?s:2-s,[e,100*(0===r?2*i/(s+i):2*n/(r+n)),(r+n)/2*100]},d.hsv.rgb=function(t){const e=t[0]/60,n=t[1]/100;let r=t[2]/100;const i=Math.floor(e)%6,s=e-Math.floor(e),o=255*r*(1-n),a=255*r*(1-n*s),l=255*r*(1-n*(1-s));switch(r*=255,i){case 0:return[r,l,o];case 1:return[a,r,o];case 2:return[o,r,l];case 3:return[o,a,r];case 4:return[l,o,r];case 5:return[r,o,a]}},d.hsv.hsl=function(t){const e=t[0],n=t[1]/100,r=t[2]/100,i=Math.max(r,.01);let s,o;o=(2-n)*r;const a=(2-n)*i;return s=n*i,s/=a<=1?a:2-a,s=s||0,o/=2,[e,100*s,100*o]},d.hwb.rgb=function(t){const e=t[0]/360;let n=t[1]/100,r=t[2]/100;const i=n+r;let s;i>1&&(n/=i,r/=i);const o=Math.floor(6*e),a=1-r;s=6*e-o,1&o&&(s=1-s);const l=n+s*(a-n);let c,u,d;switch(o){default:case 6:case 0:c=a,u=l,d=n;break;case 1:c=l,u=a,d=n;break;case 2:c=n,u=a,d=l;break;case 3:c=n,u=l,d=a;break;case 4:c=l,u=n,d=a;break;case 5:c=a,u=n,d=l}return[255*c,255*u,255*d]},d.cmyk.rgb=function(t){const e=t[0]/100,n=t[1]/100,r=t[2]/100,i=t[3]/100;return[255*(1-Math.min(1,e*(1-i)+i)),255*(1-Math.min(1,n*(1-i)+i)),255*(1-Math.min(1,r*(1-i)+i))]},d.xyz.rgb=function(t){const e=t[0]/100,n=t[1]/100,r=t[2]/100;let i,s,o;return i=3.2404542*e+-1.5371385*n+-.4985314*r,s=-.969266*e+1.8760108*n+.041556*r,o=.0556434*e+-.2040259*n+1.0572252*r,i=i>.0031308?1.055*i**(1/2.4)-.055:12.92*i,s=s>.0031308?1.055*s**(1/2.4)-.055:12.92*s,o=o>.0031308?1.055*o**(1/2.4)-.055:12.92*o,i=Math.min(Math.max(0,i),1),s=Math.min(Math.max(0,s),1),o=Math.min(Math.max(0,o),1),[255*i,255*s,255*o]},d.xyz.lab=function(t){let e=t[0],n=t[1],r=t[2];return e/=95.047,n/=100,r/=108.883,e=e>p?e**(1/3):7.787*e+16/116,n=n>p?n**(1/3):7.787*n+16/116,r=r>p?r**(1/3):7.787*r+16/116,[116*n-16,500*(e-n),200*(n-r)]},d.lab.xyz=function(t){let e,n,r;n=(t[0]+16)/116,e=t[1]/500+n,r=n-t[2]/200;const i=n**3,s=e**3,o=r**3;return n=i>p?i:(n-16/116)/7.787,e=s>p?s:(e-16/116)/7.787,r=o>p?o:(r-16/116)/7.787,e*=95.047,n*=100,r*=108.883,[e,n,r]},d.lab.lch=function(t){const e=t[0],n=t[1],r=t[2];let i;return i=360*Math.atan2(r,n)/2/Math.PI,i<0&&(i+=360),[e,Math.sqrt(n*n+r*r),i]},d.lch.lab=function(t){const e=t[0],n=t[1],r=t[2]/360*2*Math.PI;return[e,n*Math.cos(r),n*Math.sin(r)]},d.rgb.ansi16=function(t,e=null){const[n,r,i]=t;let s=null===e?d.rgb.hsv(t)[2]:e;if(s=Math.round(s/50),0===s)return 30;let o=30+(Math.round(i/255)<<2|Math.round(r/255)<<1|Math.round(n/255));return 2===s&&(o+=60),o},d.hsv.ansi16=function(t){return d.rgb.ansi16(d.hsv.rgb(t),t[2])},d.rgb.ansi256=function(t){const e=t[0],n=t[1],r=t[2];return e>>4==n>>4&&n>>4==r>>4?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(n/255*5)+Math.round(r/255*5)},d.ansi16.rgb=function(t){let e=(t=t[0])%10;if(0===e||7===e)return t>50&&(e+=3.5),e=e/10.5*255,[e,e,e];const n=.5*(Math.trunc(t>50)+1);return[(1&e)*n*255,(e>>1&1)*n*255,(e>>2&1)*n*255]},d.ansi256.rgb=function(t){if((t=t[0])>=232){const e=10*(t-232)+8;return[e,e,e]}let e;return t-=16,[Math.floor(t/36)/5*255,Math.floor((e=t%36)/6)/5*255,e%6/5*255]},d.rgb.hex=function(t){const e=(((255&Math.round(t[0]))<<16)+((255&Math.round(t[1]))<<8)+(255&Math.round(t[2]))).toString(16).toUpperCase();return"000000".slice(e.length)+e},d.hex.rgb=function(t){const e=t.toString(16).match(/[a-f\d]{6}|[a-f\d]{3}/i);if(!e)return[0,0,0];let n=e[0];3===e[0].length&&(n=[...n].map((t=>t+t)).join(""));const r=Number.parseInt(n,16);return[r>>16&255,r>>8&255,255&r]},d.rgb.hcg=function(t){const e=t[0]/255,n=t[1]/255,r=t[2]/255,i=Math.max(Math.max(e,n),r),s=Math.min(Math.min(e,n),r),o=i-s;let a;return a=o<=0?0:i===e?(n-r)/o%6:i===n?2+(r-e)/o:4+(e-n)/o,a/=6,a%=1,[360*a,100*o,100*(o<1?s/(1-o):0)]},d.hsl.hcg=function(t){const e=t[1]/100,n=t[2]/100,r=n<.5?2*e*n:2*e*(1-n);let i=0;return r<1&&(i=(n-.5*r)/(1-r)),[t[0],100*r,100*i]},d.hsv.hcg=function(t){const e=t[1]/100,n=t[2]/100,r=e*n;let i=0;return r<1&&(i=(n-r)/(1-r)),[t[0],100*r,100*i]},d.hcg.rgb=function(t){const e=t[0]/360,n=t[1]/100,r=t[2]/100;if(0===n)return[255*r,255*r,255*r];const i=[0,0,0],s=e%1*6,o=s%1,a=1-o;let l=0;switch(Math.floor(s)){case 0:i[0]=1,i[1]=o,i[2]=0;break;case 1:i[0]=a,i[1]=1,i[2]=0;break;case 2:i[0]=0,i[1]=1,i[2]=o;break;case 3:i[0]=0,i[1]=a,i[2]=1;break;case 4:i[0]=o,i[1]=0,i[2]=1;break;default:i[0]=1,i[1]=0,i[2]=a}return l=(1-n)*r,[255*(n*i[0]+l),255*(n*i[1]+l),255*(n*i[2]+l)]},d.hcg.hsv=function(t){const e=t[1]/100,n=e+t[2]/100*(1-e);let r=0;return n>0&&(r=e/n),[t[0],100*r,100*n]},d.hcg.hsl=function(t){const e=t[1]/100,n=t[2]/100*(1-e)+.5*e;let r=0;return n>0&&n<.5?r=e/(2*n):n>=.5&&n<1&&(r=e/(2*(1-n))),[t[0],100*r,100*n]},d.hcg.hwb=function(t){const e=t[1]/100,n=e+t[2]/100*(1-e);return[t[0],100*(n-e),100*(1-n)]},d.hwb.hcg=function(t){const e=t[1]/100,n=1-t[2]/100,r=n-e;let i=0;return r<1&&(i=(n-r)/(1-r)),[t[0],100*r,100*i]},d.apple.rgb=function(t){return[t[0]/65535*255,t[1]/65535*255,t[2]/65535*255]},d.rgb.apple=function(t){return[t[0]/255*65535,t[1]/255*65535,t[2]/255*65535]},d.gray.rgb=function(t){return[t[0]/100*255,t[0]/100*255,t[0]/100*255]},d.gray.hsl=function(t){return[0,0,t[0]]},d.gray.hsv=d.gray.hsl,d.gray.hwb=function(t){return[0,100,t[0]]},d.gray.cmyk=function(t){return[0,0,0,t[0]]},d.gray.lab=function(t){return[t[0],0,0]},d.gray.hex=function(t){const e=255&Math.round(t[0]/100*255),n=((e<<16)+(e<<8)+e).toString(16).toUpperCase();return"000000".slice(n.length)+n},d.rgb.gray=function(t){return[(t[0]+t[1]+t[2])/3/255*100]};const m=function(t){const e=function(t){const e=function(){const t={},e=Object.keys(h);for(let{length:n}=e,r=0;r<n;r++)t[e[r]]={distance:-1,parent:null};return t}(),n=[t];for(e[t].distance=0;n.length>0;){const t=n.pop(),r=Object.keys(h[t]);for(let{length:i}=r,s=0;s<i;s++){const i=r[s],o=e[i];-1===o.distance&&(o.distance=e[t].distance+1,o.parent=t,n.unshift(i))}}return e}(t),n={},r=Object.keys(e);for(let{length:t}=r,i=0;i<t;i++){const t=r[i];null!==e[t].parent&&(n[t]=f(t,e))}return n},b={},y=Object.keys(h);function v(t){const e=function(...e){const n=e[0];return null==n?n:(n.length>1&&(e=n),t(e))};return"conversion"in t&&(e.conversion=t.conversion),e}function E(t){const e=function(...e){const n=e[0];if(null==n)return n;n.length>1&&(e=n);const r=t(e);if("object"==typeof r)for(let{length:t}=r,e=0;e<t;e++)r[e]=Math.round(r[e]);return r};return"conversion"in t&&(e.conversion=t.conversion),e}for(const t of y){b[t]={},Object.defineProperty(b[t],"channels",{value:h[t].channels}),Object.defineProperty(b[t],"labels",{value:h[t].labels});const e=m(t),n=Object.keys(e);for(const r of n){const n=e[r];b[t][r]=E(n),b[t][r].raw=v(n)}}const w=b,A=["keyword","gray","hex"],N={};for(const t of Object.keys(w))N[[...w[t].labels].sort().join("")]=t;const x={};function I(t,e){if(!(this instanceof I))return new I(t,e);if(e&&e in A&&(e=null),e&&!(e in w))throw new Error("Unknown model: "+e);let n,r;if(null==t)this.model="rgb",this.color=[0,0,0],this.valpha=1;else if(t instanceof I)this.model=t.model,this.color=[...t.color],this.valpha=t.valpha;else if("string"==typeof t){const e=l.get(t);if(null===e)throw new Error("Unable to parse color from string: "+t);this.model=e.model,r=w[this.model].channels,this.color=e.value.slice(0,r),this.valpha="number"==typeof e.value[r]?e.value[r]:1}else if(t.length>0){this.model=e||"rgb",r=w[this.model].channels;const n=Array.prototype.slice.call(t,0,r);this.color=L(n,r),this.valpha="number"==typeof t[r]?t[r]:1}else if("number"==typeof t)this.model="rgb",this.color=[t>>16&255,t>>8&255,255&t],this.valpha=1;else{this.valpha=1;const e=Object.keys(t);"alpha"in t&&(e.splice(e.indexOf("alpha"),1),this.valpha="number"==typeof t.alpha?t.alpha:0);const r=e.sort().join("");if(!(r in N))throw new Error("Unable to parse color from object: "+JSON.stringify(t));this.model=N[r];const{labels:i}=w[this.model],s=[];for(n=0;n<i.length;n++)s.push(t[i[n]]);this.color=L(s)}if(x[this.model])for(r=w[this.model].channels,n=0;n<r;n++){const t=x[this.model][n];t&&(this.color[n]=t(this.color[n]))}this.valpha=Math.max(0,Math.min(1,this.valpha)),Object.freeze&&Object.freeze(this)}I.prototype={toString(){return this.string()},toJSON(){return this[this.model]()},string(t){let e=this.model in l.to?this:this.rgb();e=e.round("number"==typeof t?t:1);const n=1===e.valpha?e.color:[...e.color,this.valpha];return l.to[e.model](...n)},percentString(t){const e=this.rgb().round("number"==typeof t?t:1),n=1===e.valpha?e.color:[...e.color,this.valpha];return l.to.rgb.percent(...n)},array(){return 1===this.valpha?[...this.color]:[...this.color,this.valpha]},object(){const t={},{channels:e}=w[this.model],{labels:n}=w[this.model];for(let r=0;r<e;r++)t[n[r]]=this.color[r];return 1!==this.valpha&&(t.alpha=this.valpha),t},unitArray(){const t=this.rgb().color;return t[0]/=255,t[1]/=255,t[2]/=255,1!==this.valpha&&t.push(this.valpha),t},unitObject(){const t=this.rgb().object();return t.r/=255,t.g/=255,t.b/=255,1!==this.valpha&&(t.alpha=this.valpha),t},round(t){return t=Math.max(t||0,0),new I([...this.color.map(O(t)),this.valpha],this.model)},alpha(t){return void 0!==t?new I([...this.color,Math.max(0,Math.min(1,t))],this.model):this.valpha},red:C("rgb",0,T(255)),green:C("rgb",1,T(255)),blue:C("rgb",2,T(255)),hue:C(["hsl","hsv","hsl","hwb","hcg"],0,(t=>(t%360+360)%360)),saturationl:C("hsl",1,T(100)),lightness:C("hsl",2,T(100)),saturationv:C("hsv",1,T(100)),value:C("hsv",2,T(100)),chroma:C("hcg",1,T(100)),gray:C("hcg",2,T(100)),white:C("hwb",1,T(100)),wblack:C("hwb",2,T(100)),cyan:C("cmyk",0,T(100)),magenta:C("cmyk",1,T(100)),yellow:C("cmyk",2,T(100)),black:C("cmyk",3,T(100)),x:C("xyz",0,T(95.047)),y:C("xyz",1,T(100)),z:C("xyz",2,T(108.833)),l:C("lab",0,T(100)),a:C("lab",1),b:C("lab",2),keyword(t){return void 0!==t?new I(t):w[this.model].keyword(this.color)},hex(t){return void 0!==t?new I(t):l.to.hex(...this.rgb().round().color)},hexa(t){if(void 0!==t)return new I(t);const e=this.rgb().round().color;let n=Math.round(255*this.valpha).toString(16).toUpperCase();return 1===n.length&&(n="0"+n),l.to.hex(...e)+n},rgbNumber(){const t=this.rgb().color;return(255&t[0])<<16|(255&t[1])<<8|255&t[2]},luminosity(){const t=this.rgb().color,e=[];for(const[n,r]of t.entries()){const t=r/255;e[n]=t<=.04045?t/12.92:((t+.055)/1.055)**2.4}return.2126*e[0]+.7152*e[1]+.0722*e[2]},contrast(t){const e=this.luminosity(),n=t.luminosity();return e>n?(e+.05)/(n+.05):(n+.05)/(e+.05)},level(t){const e=this.contrast(t);return e>=7?"AAA":e>=4.5?"AA":""},isDark(){const t=this.rgb().color;return(2126*t[0]+7152*t[1]+722*t[2])/1e4<128},isLight(){return!this.isDark()},negate(){const t=this.rgb();for(let e=0;e<3;e++)t.color[e]=255-t.color[e];return t},lighten(t){const e=this.hsl();return e.color[2]+=e.color[2]*t,e},darken(t){const e=this.hsl();return e.color[2]-=e.color[2]*t,e},saturate(t){const e=this.hsl();return e.color[1]+=e.color[1]*t,e},desaturate(t){const e=this.hsl();return e.color[1]-=e.color[1]*t,e},whiten(t){const e=this.hwb();return e.color[1]+=e.color[1]*t,e},blacken(t){const e=this.hwb();return e.color[2]+=e.color[2]*t,e},grayscale(){const t=this.rgb().color,e=.3*t[0]+.59*t[1]+.11*t[2];return I.rgb(e,e,e)},fade(t){return this.alpha(this.valpha-this.valpha*t)},opaquer(t){return this.alpha(this.valpha+this.valpha*t)},rotate(t){const e=this.hsl();let n=e.color[0];return n=(n+t)%360,n=n<0?360+n:n,e.color[0]=n,e},mix(t,e){if(!t||!t.rgb)throw new Error('Argument to "mix" was not a Color instance, but rather an instance of '+typeof t);const n=t.rgb(),r=this.rgb(),i=void 0===e?.5:e,s=2*i-1,o=n.alpha()-r.alpha(),a=((s*o==-1?s:(s+o)/(1+s*o))+1)/2,l=1-a;return I.rgb(a*n.red()+l*r.red(),a*n.green()+l*r.green(),a*n.blue()+l*r.blue(),n.alpha()*i+r.alpha()*(1-i))}};for(const t of Object.keys(w)){if(A.includes(t))continue;const{channels:e}=w[t];I.prototype[t]=function(...e){return this.model===t?new I(this):e.length>0?new I(e,t):new I([...(n=w[this.model][t].raw(this.color),Array.isArray(n)?n:[n]),this.valpha],t);var n},I[t]=function(...n){let r=n[0];return"number"==typeof r&&(r=L(n,e)),new I(r,t)}}function O(t){return function(e){return function(t,e){return Number(t.toFixed(e))}(e,t)}}function C(t,e,n){t=Array.isArray(t)?t:[t];for(const r of t)(x[r]||=[])[e]=n;return t=t[0],function(r){let i;return void 0!==r?(n&&(r=n(r)),i=this[t](),i.color[e]=r,i):(i=this[t]().color[e],n&&(i=n(i)),i)}}function T(t){return function(e){return Math.max(0,Math.min(t,e))}}function L(t,e){for(let n=0;n<e;n++)"number"!=typeof t[n]&&(t[n]=0);return t}const k=I;function R(){const t=window?.matchMedia?.("(prefers-color-scheme: dark)")?.matches,e=document.body.getAttribute("data-themes")?.includes("dark");return e||t||!1}function $(t){return S(t,"#ffffff")<4.5}function P(t,e){const n=function(t){return _(t)>.6}(e),r=(i=e,new k(n?t:"#ffffff").mix(new k(i),.83).hex());var i;let s=S(t,r);const o=function(){const t=window?.matchMedia?.("(forced-colors: active)")?.matches,e=document.body.getAttribute("data-themes")?.includes("highcontrast");return e||t||!1}()?5.6:3.2;let a=0,l=t;const c=(n?-100:100)/255;for(;s<o&&a++<100;){const t=M(l),e=Math.max(0,Math.min(255,t.l+c));l=F({h:t.h,s:t.s,l:e}),s=S(l,r)}return l}function _(t){const e=function(t){return new k(t).rgb().array()}(t).map((t=>(t/=255)<=.03928?t/12.92:Math.pow((t+.055)/1.055,2.4))),[n,r,i]=e;return.2126*n+.7152*r+.0722*i}function S(t,e){const n=_(t)+.05,r=_(e)+.05;return Math.max(n,r)/Math.min(n,r)}function M(t){const e=new k(t).hsl();return{h:e.color[0],s:e.color[1],l:e.color[2]}}function F(t){return new k(t).hex()}},59169:()=>{},63779:()=>{},73911:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(71354),i=n.n(r),s=n(76314),o=n.n(s)()(i());o.push([t.id,".files-list__system-tags{--min-size: 32px;display:none;justify-content:center;align-items:center;min-width:calc(var(--min-size)*2);max-width:300px}.files-list__system-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:20px;text-align:center}.files-list__system-tag--more{overflow:visible;text-overflow:initial}.files-list__system-tag+.files-list__system-tag{margin-inline-start:5px}.files-list__system-tag[data-systemtag-color]{border-color:var(--systemtag-color);color:var(--systemtag-color);border-width:2px;line-height:18px}@media(min-width: 512px){.files-list__system-tags{display:flex}}","",{version:3,sources:["webpack://./apps/systemtags/src/css/fileEntryInlineSystemTags.scss"],names:[],mappings:"AAKA,yBACC,gBAAA,CACA,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,iCAAA,CACA,eAAA,CAGD,wBACC,gBAAA,CACA,gBAAA,CACA,uCAAA,CACA,gCAAA,CACA,mCAAA,CACA,sBAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CACA,gBAAA,CACA,iBAAA,CAEA,8BACC,gBAAA,CACA,qBAAA,CAID,gDACC,uBAAA,CAID,8CACC,mCAAA,CACA,4BAAA,CACA,gBAAA,CACA,gBAAA,CAIF,yBACC,yBACC,YAAA,CAAA",sourcesContent:["/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n.files-list__system-tags {\n\t--min-size: 32px;\n\tdisplay: none;\n\tjustify-content: center;\n\talign-items: center;\n\tmin-width: calc(var(--min-size) * 2);\n\tmax-width: 300px;\n}\n\n.files-list__system-tag {\n\tpadding: 5px 10px;\n\tborder: 1px solid;\n\tborder-radius: var(--border-radius-pill);\n\tborder-color: var(--color-border);\n\tcolor: var(--color-text-maxcontrast);\n\theight: var(--min-size);\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\tline-height: 20px; // min-size - 2 * 5px padding - 2 * 1px border\n\ttext-align: center;\n\n\t&--more {\n\t\toverflow: visible;\n\t\ttext-overflow: initial;\n\t}\n\n\t// Proper spacing if multiple shown\n\t& + .files-list__system-tag {\n\t\tmargin-inline-start: 5px;\n\t}\n\n\t// With color\n\t&[data-systemtag-color] {\n\t\tborder-color: var(--systemtag-color);\n\t\tcolor: var(--systemtag-color);\n\t\tborder-width: 2px;\n\t\tline-height: 18px; // min-size - 2 * 5px padding - 2 * 2px border\n\t}\n}\n\n@media (min-width: 512px) {\n\t.files-list__system-tags {\n\t\tdisplay: flex;\n\t}\n}\n"],sourceRoot:""}]);const a=o},77199:()=>{},82528:(t,e,n)=>{"use strict";n.d(e,{Gw:()=>h,T0:()=>g,VZ:()=>d,b0:()=>p,un:()=>c,xI:()=>u}),n(65043);var r=n(53334),i=n(8828),s=n(12686),o=n(25631),a=n(61338);n(56760);const l='<?xml version="1.0"?>\n<d:propfind xmlns:d="DAV:" xmlns:oc="http://owncloud.org/ns" xmlns:nc="http://nextcloud.org/ns">\n\t<d:prop>\n\t\t<oc:id />\n\t\t<oc:display-name />\n\t\t<oc:user-visible />\n\t\t<oc:user-assignable />\n\t\t<oc:can-assign />\n\t\t<d:getetag />\n\t\t<nc:color />\n\t</d:prop>\n</d:propfind>',c=async()=>{try{const{data:t}=await i.R.getDirectoryContents("/systemtags",{data:l,details:!0,glob:"/systemtags/*"});return(0,s.rL)(t)}catch(t){throw o.A.error((0,r.t)("systemtags","Failed to load tags"),{error:t}),new Error((0,r.t)("systemtags","Failed to load tags"))}},u=async t=>{const e="/systemtags/"+t;try{const{data:t}=await i.R.stat(e,{data:l,details:!0});return(0,s.rL)([t])[0]}catch(t){throw o.A.error((0,r.t)("systemtags","Failed to load tag"),{error:t}),new Error((0,r.t)("systemtags","Failed to load tag"))}},d=async t=>{const e=(0,s._3)(t);try{const{headers:n}=await i.R.customRequest("/systemtags",{method:"POST",data:e}),l=n.get("content-location");if(l)return(0,a.Ic)("systemtags:tag:created",t),(0,s.GX)(l);throw o.A.error((0,r.t)("systemtags",'Missing "Content-Location" header')),new Error((0,r.t)("systemtags",'Missing "Content-Location" header'))}catch(t){if(409===t?.response?.status)throw o.A.error((0,r.t)("systemtags","A tag with the same name already exists"),{error:t}),new Error((0,r.t)("systemtags","A tag with the same name already exists"));throw o.A.error((0,r.t)("systemtags","Failed to create tag"),{error:t}),new Error((0,r.t)("systemtags","Failed to create tag"))}},h=async t=>{const e="/systemtags/"+t.id,n=`<?xml version="1.0"?>\n\t<d:propertyupdate xmlns:d="DAV:" xmlns:oc="http://owncloud.org/ns" xmlns:nc="http://nextcloud.org/ns">\n\t\t<d:set>\n\t\t\t<d:prop>\n\t\t\t\t<oc:display-name>${t.displayName}</oc:display-name>\n\t\t\t\t<oc:user-visible>${t.userVisible}</oc:user-visible>\n\t\t\t\t<oc:user-assignable>${t.userAssignable}</oc:user-assignable>\n\t\t\t\t<nc:color>${t?.color||null}</nc:color>\n\t\t\t</d:prop>\n\t\t</d:set>\n\t</d:propertyupdate>`;try{await i.R.customRequest(e,{method:"PROPPATCH",data:n}),(0,a.Ic)("systemtags:tag:updated",t)}catch(t){throw o.A.error((0,r.t)("systemtags","Failed to update tag"),{error:t}),new Error((0,r.t)("systemtags","Failed to update tag"))}},p=async function(t,e){const n=`/systemtags/${t.id}/${e}`,r=await i.R.stat(n,{data:'<?xml version="1.0"?>\n\t<d:propfind xmlns:d="DAV:" xmlns:nc="http://nextcloud.org/ns">\n\t\t<d:prop>\n\t\t\t<nc:object-ids />\n\t\t\t<d:getetag />\n\t\t</d:prop>\n\t</d:propfind>',details:!0});return{etag:r?.data?.props?.getetag||'""',objects:Object.values(r?.data?.props?.["object-ids"]||[]).flat()}},g=async function(t,e,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"";const s=`/systemtags/${t.id}/${e}`;let o=`<?xml version="1.0"?>\n\t<d:propertyupdate xmlns:d="DAV:" xmlns:nc="http://nextcloud.org/ns">\n\t\t<d:set>\n\t\t\t<d:prop>\n\t\t\t\t<nc:object-ids>${n.map((t=>{let{id:e,type:n}=t;return`<nc:object-id><nc:id>${e}</nc:id><nc:type>${n}</nc:type></nc:object-id>`})).join("")}</nc:object-ids>\n\t\t\t</d:prop>\n\t\t</d:set>\n\t</d:propertyupdate>`;0===n.length&&(o='<?xml version="1.0"?>\n\t\t<d:propertyupdate xmlns:d="DAV:" xmlns:nc="http://nextcloud.org/ns">\n\t\t\t<d:remove>\n\t\t\t\t<d:prop>\n\t\t\t\t\t<nc:object-ids />\n\t\t\t\t</d:prop>\n\t\t\t</d:remove>\n\t\t</d:propertyupdate>'),await i.R.customRequest(s,{method:"PROPPATCH",data:o,headers:{"if-match":r}})}},86833:()=>{}},i={};function s(t){var e=i[t];if(void 0!==e)return e.exports;var n=i[t]={id:t,loaded:!1,exports:{}};return r[t].call(n.exports,n,n.exports,s),n.loaded=!0,n.exports}s.m=r,t=[],s.O=(e,n,r,i)=>{if(!n){var o=1/0;for(u=0;u<t.length;u++){n=t[u][0],r=t[u][1],i=t[u][2];for(var a=!0,l=0;l<n.length;l++)(!1&i||o>=i)&&Object.keys(s.O).every((t=>s.O[t](n[l])))?n.splice(l--,1):(a=!1,i<o&&(o=i));if(a){t.splice(u--,1);var c=r();void 0!==c&&(e=c)}}return e}i=i||0;for(var u=t.length;u>0&&t[u-1][2]>i;u--)t[u]=t[u-1];t[u]=[n,r,i]},s.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return s.d(e,{a:e}),e},s.d=(t,e)=>{for(var n in e)s.o(e,n)&&!s.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},s.f={},s.e=t=>Promise.all(Object.keys(s.f).reduce(((e,n)=>(s.f[n](t,e),e)),[])),s.u=t=>t+"-"+t+".js?v="+{1406:"74ef8c445df7152f9898",2441:"2c050d23f9070dfa7f03",5862:"142cd48ca8ec32e57725",6227:"3494381758c4754ef3f5"}[t],s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),s.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),e={},n="nextcloud:",s.l=(t,r,i,o)=>{if(e[t])e[t].push(r);else{var a,l;if(void 0!==i)for(var c=document.getElementsByTagName("script"),u=0;u<c.length;u++){var d=c[u];if(d.getAttribute("src")==t||d.getAttribute("data-webpack")==n+i){a=d;break}}a||(l=!0,(a=document.createElement("script")).charset="utf-8",a.timeout=120,s.nc&&a.setAttribute("nonce",s.nc),a.setAttribute("data-webpack",n+i),a.src=t),e[t]=[r];var h=(n,r)=>{a.onerror=a.onload=null,clearTimeout(p);var i=e[t];if(delete e[t],a.parentNode&&a.parentNode.removeChild(a),i&&i.forEach((t=>t(r))),n)return n(r)},p=setTimeout(h.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=h.bind(null,a.onerror),a.onload=h.bind(null,a.onload),l&&document.head.appendChild(a)}},s.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},s.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),s.j=2766,(()=>{var t;s.g.importScripts&&(t=s.g.location+"");var e=s.g.document;if(!t&&e&&(e.currentScript&&"SCRIPT"===e.currentScript.tagName.toUpperCase()&&(t=e.currentScript.src),!t)){var n=e.getElementsByTagName("script");if(n.length)for(var r=n.length-1;r>-1&&(!t||!/^http(s?):/.test(t));)t=n[r--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),s.p=t})(),(()=>{s.b=document.baseURI||self.location.href;var t={2766:0};s.f.j=(e,n)=>{var r=s.o(t,e)?t[e]:void 0;if(0!==r)if(r)n.push(r[2]);else{var i=new Promise(((n,i)=>r=t[e]=[n,i]));n.push(r[2]=i);var o=s.p+s.u(e),a=new Error;s.l(o,(n=>{if(s.o(t,e)&&(0!==(r=t[e])&&(t[e]=void 0),r)){var i=n&&("load"===n.type?"missing":n.type),o=n&&n.target&&n.target.src;a.message="Loading chunk "+e+" failed.\n("+i+": "+o+")",a.name="ChunkLoadError",a.type=i,a.request=o,r[1](a)}}),"chunk-"+e,e)}},s.O.j=e=>0===t[e];var e=(e,n)=>{var r,i,o=n[0],a=n[1],l=n[2],c=0;if(o.some((e=>0!==t[e]))){for(r in a)s.o(a,r)&&(s.m[r]=a[r]);if(l)var u=l(s)}for(e&&e(n);c<o.length;c++)i=o[c],s.o(t,i)&&t[i]&&t[i][0](),t[i]=0;return s.O(u)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(e.bind(null,0)),n.push=e.bind(null,n.push.bind(n))})(),s.nc=void 0;var o=s.O(void 0,[4208],(()=>s(44563)));o=s.O(o)})(); +//# sourceMappingURL=systemtags-init.js.map?v=154a3842f33fb9dcacad
\ No newline at end of file diff --git a/dist/systemtags-init.js.map b/dist/systemtags-init.js.map index 1a858e9b8dd..eb1d9efd4f4 100644 --- a/dist/systemtags-init.js.map +++ b/dist/systemtags-init.js.map @@ -1 +1 @@ -{"version":3,"file":"systemtags-init.js?v=c1344497f30029dca951","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/systemtags/src/services/davClient.ts","webpack:///nextcloud/apps/systemtags/src/utils.ts","webpack:///nextcloud/apps/systemtags/src/logger.ts","webpack:///nextcloud/node_modules/@nextcloud/files/dist/index.mjs","webpack:///nextcloud/apps/systemtags/src/files_actions/bulkSystemTagsAction.ts","webpack:///nextcloud/apps/files/src/logger.ts","webpack:///nextcloud/apps/files/src/utils/actionUtils.ts","webpack:///nextcloud/apps/files/src/store/active.ts","webpack:///nextcloud/apps/files/src/store/index.ts","webpack:///nextcloud/apps/systemtags/src/services/systemtags.ts","webpack:///nextcloud/apps/systemtags/src/files_views/systemtagsView.ts","webpack://nextcloud/./apps/systemtags/src/css/fileEntryInlineSystemTags.scss?0a01","webpack:///nextcloud/apps/systemtags/src/files_actions/inlineSystemTagsAction.ts","webpack:///nextcloud/apps/systemtags/src/files_actions/openInFilesAction.ts","webpack:///nextcloud/apps/systemtags/src/init.ts","webpack:///nextcloud/apps/systemtags/src/services/HotKeysService.ts","webpack:///nextcloud/node_modules/color-string/node_modules/color-name/index.js","webpack:///nextcloud/node_modules/color-string/index.js","webpack:///nextcloud/node_modules/color/node_modules/color-name/index.js","webpack:///nextcloud/node_modules/color/node_modules/color-convert/conversions.js","webpack:///nextcloud/node_modules/color/node_modules/color-convert/route.js","webpack:///nextcloud/node_modules/color/node_modules/color-convert/index.js","webpack:///nextcloud/node_modules/color/index.js","webpack:///nextcloud/apps/systemtags/src/utils/colorUtils.ts","webpack:///nextcloud/apps/systemtags/src/css/fileEntryInlineSystemTags.scss","webpack:///nextcloud/apps/systemtags/src/services/api.ts","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\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 * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { createClient } from 'webdav';\nimport { generateRemoteUrl } from '@nextcloud/router';\nimport { getRequestToken, onRequestTokenUpdate } from '@nextcloud/auth';\n// init webdav client\nconst rootUrl = generateRemoteUrl('dav');\nexport const davClient = createClient(rootUrl);\n// set CSRF token header\nconst setHeaders = (token) => {\n davClient.setHeaders({\n // Add this so the server knows it is an request from the browser\n 'X-Requested-With': 'XMLHttpRequest',\n // Inject user auth\n requesttoken: token ?? '',\n });\n};\n// refresh headers when request token changes\nonRequestTokenUpdate(setHeaders);\nsetHeaders(getRequestToken());\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport camelCase from 'camelcase';\nimport Vue from 'vue';\nexport const defaultBaseTag = {\n userVisible: true,\n userAssignable: true,\n canAssign: true,\n};\nexport const parseTags = (tags) => {\n return tags.map(({ props }) => Object.fromEntries(Object.entries(props)\n .map(([key, value]) => [camelCase(key), camelCase(key) === 'displayName' ? String(value) : value])));\n};\n/**\n * Parse id from `Content-Location` header\n * @param url URL to parse\n */\nexport const parseIdFromLocation = (url) => {\n const queryPos = url.indexOf('?');\n if (queryPos > 0) {\n url = url.substring(0, queryPos);\n }\n const parts = url.split('/');\n let result;\n do {\n result = parts[parts.length - 1];\n parts.pop();\n // note: first result can be empty when there is a trailing slash,\n // so we take the part before that\n } while (!result && parts.length > 0);\n return Number(result);\n};\nexport const formatTag = (initialTag) => {\n if ('name' in initialTag && !('displayName' in initialTag)) {\n return { ...initialTag };\n }\n const tag = { ...initialTag };\n tag.name = tag.displayName;\n delete tag.displayName;\n return tag;\n};\nexport const getNodeSystemTags = function (node) {\n const attribute = node.attributes?.['system-tags']?.['system-tag'];\n if (attribute === undefined) {\n return [];\n }\n // if there is only one tag it is a single string or prop object\n // if there are multiple then its an array - so we flatten it to be always an array of string or prop objects\n return [attribute]\n .flat()\n .map((tag) => (typeof tag === 'string'\n // its a plain text prop (the tag name) without prop attributes\n ? tag\n // its a prop object with attributes, the tag name is in the 'text' attribute\n : tag.text));\n};\nexport const setNodeSystemTags = function (node, tags) {\n Vue.set(node.attributes, 'system-tags', {\n 'system-tag': tags,\n });\n};\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getLoggerBuilder } from '@nextcloud/logger';\nexport default getLoggerBuilder()\n .setApp('systemtags')\n .detectUser()\n .build();\n","import { o as logger } from \"./chunks/dav-Co9y-hkg.mjs\";\nimport { q, F, s, N, t, P, c, l, m, n, a, g, p, b, r, d, h, f, k, j, e, i } from \"./chunks/dav-Co9y-hkg.mjs\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { extname, basename } from \"path\";\nimport { getCanonicalLocale, getLanguage } from \"@nextcloud/l10n\";\nimport { TypedEventTarget } from \"typescript-event-target\";\nvar NewMenuEntryCategory = /* @__PURE__ */ ((NewMenuEntryCategory2) => {\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"UploadFromDevice\"] = 0] = \"UploadFromDevice\";\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"CreateNew\"] = 1] = \"CreateNew\";\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"Other\"] = 2] = \"Other\";\n return NewMenuEntryCategory2;\n})(NewMenuEntryCategory || {});\nclass NewFileMenu {\n _entries = [];\n registerEntry(entry) {\n this.validateEntry(entry);\n entry.category = entry.category ?? 1;\n this._entries.push(entry);\n }\n unregisterEntry(entry) {\n const entryIndex = typeof entry === \"string\" ? this.getEntryIndex(entry) : this.getEntryIndex(entry.id);\n if (entryIndex === -1) {\n logger.warn(\"Entry not found, nothing removed\", { entry, entries: this.getEntries() });\n return;\n }\n this._entries.splice(entryIndex, 1);\n }\n /**\n * Get the list of registered entries\n *\n * @param {Folder} context the creation context. Usually the current folder\n */\n getEntries(context) {\n if (context) {\n return this._entries.filter((entry) => typeof entry.enabled === \"function\" ? entry.enabled(context) : true);\n }\n return this._entries;\n }\n getEntryIndex(id) {\n return this._entries.findIndex((entry) => entry.id === id);\n }\n validateEntry(entry) {\n if (!entry.id || !entry.displayName || !(entry.iconSvgInline || entry.iconClass) || !entry.handler) {\n throw new Error(\"Invalid entry\");\n }\n if (typeof entry.id !== \"string\" || typeof entry.displayName !== \"string\") {\n throw new Error(\"Invalid id or displayName property\");\n }\n if (entry.iconClass && typeof entry.iconClass !== \"string\" || entry.iconSvgInline && typeof entry.iconSvgInline !== \"string\") {\n throw new Error(\"Invalid icon provided\");\n }\n if (entry.enabled !== void 0 && typeof entry.enabled !== \"function\") {\n throw new Error(\"Invalid enabled property\");\n }\n if (typeof entry.handler !== \"function\") {\n throw new Error(\"Invalid handler property\");\n }\n if (\"order\" in entry && typeof entry.order !== \"number\") {\n throw new Error(\"Invalid order property\");\n }\n if (this.getEntryIndex(entry.id) !== -1) {\n throw new Error(\"Duplicate entry\");\n }\n }\n}\nconst getNewFileMenu = function() {\n if (typeof window._nc_newfilemenu === \"undefined\") {\n window._nc_newfilemenu = new NewFileMenu();\n logger.debug(\"NewFileMenu initialized\");\n }\n return window._nc_newfilemenu;\n};\nvar DefaultType = /* @__PURE__ */ ((DefaultType2) => {\n DefaultType2[\"DEFAULT\"] = \"default\";\n DefaultType2[\"HIDDEN\"] = \"hidden\";\n return DefaultType2;\n})(DefaultType || {});\nclass 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 title() {\n return this._action.title;\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 parent() {\n return this._action.parent;\n }\n get default() {\n return this._action.default;\n }\n get destructive() {\n return this._action.destructive;\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 (\"title\" in action && typeof action.title !== \"function\") {\n throw new Error(\"Invalid title 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 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 (action.destructive !== void 0 && typeof action.destructive !== \"boolean\") {\n throw new Error(\"Invalid destructive flag\");\n }\n if (\"parent\" in action && typeof action.parent !== \"string\") {\n throw new Error(\"Invalid parent\");\n }\n if (action.default && !Object.values(DefaultType).includes(action.default)) {\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}\nconst registerFileAction = function(action) {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\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};\nconst getFileActions = function() {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\n return window._nc_fileactions;\n};\nclass FileListAction {\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 order() {\n return this._action.order;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\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 (\"iconSvgInline\" in action && typeof action.iconSvgInline !== \"function\") {\n throw new Error(\"Invalid iconSvgInline function\");\n }\n if (\"order\" in action && typeof action.order !== \"number\") {\n throw new Error(\"Invalid order\");\n }\n if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n throw new Error(\"Invalid enabled function\");\n }\n if (!action.exec || typeof action.exec !== \"function\") {\n throw new Error(\"Invalid exec function\");\n }\n }\n}\nconst registerFileListAction = (action) => {\n if (typeof window._nc_filelistactions === \"undefined\") {\n window._nc_filelistactions = [];\n }\n if (window._nc_filelistactions.find((listAction) => listAction.id === action.id)) {\n logger.error(`FileListAction with id \"${action.id}\" is already registered`, { action });\n return;\n }\n window._nc_filelistactions.push(action);\n};\nconst getFileListActions = () => {\n if (typeof window._nc_filelistactions === \"undefined\") {\n window._nc_filelistactions = [];\n }\n return window._nc_filelistactions;\n};\nclass Header {\n _header;\n constructor(header) {\n this.validateHeader(header);\n this._header = header;\n }\n get id() {\n return this._header.id;\n }\n get order() {\n return this._header.order;\n }\n get enabled() {\n return this._header.enabled;\n }\n get render() {\n return this._header.render;\n }\n get updated() {\n return this._header.updated;\n }\n validateHeader(header) {\n if (!header.id || !header.render || !header.updated) {\n throw new Error(\"Invalid header: id, render and updated are required\");\n }\n if (typeof header.id !== \"string\") {\n throw new Error(\"Invalid id property\");\n }\n if (header.enabled !== void 0 && typeof header.enabled !== \"function\") {\n throw new Error(\"Invalid enabled property\");\n }\n if (header.render && typeof header.render !== \"function\") {\n throw new Error(\"Invalid render property\");\n }\n if (header.updated && typeof header.updated !== \"function\") {\n throw new Error(\"Invalid updated property\");\n }\n }\n}\nconst registerFileListHeaders = function(header) {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n if (window._nc_filelistheader.find((search) => search.id === header.id)) {\n logger.error(`Header ${header.id} already registered`, { header });\n return;\n }\n window._nc_filelistheader.push(header);\n};\nconst getFileListHeaders = function() {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n return window._nc_filelistheader;\n};\nvar InvalidFilenameErrorReason = /* @__PURE__ */ ((InvalidFilenameErrorReason2) => {\n InvalidFilenameErrorReason2[\"ReservedName\"] = \"reserved name\";\n InvalidFilenameErrorReason2[\"Character\"] = \"character\";\n InvalidFilenameErrorReason2[\"Extension\"] = \"extension\";\n return InvalidFilenameErrorReason2;\n})(InvalidFilenameErrorReason || {});\nclass InvalidFilenameError extends Error {\n constructor(options) {\n super(`Invalid ${options.reason} '${options.segment}' in filename '${options.filename}'`, { cause: options });\n }\n /**\n * The filename that was validated\n */\n get filename() {\n return this.cause.filename;\n }\n /**\n * Reason why the validation failed\n */\n get reason() {\n return this.cause.reason;\n }\n /**\n * Part of the filename that caused this error\n */\n get segment() {\n return this.cause.segment;\n }\n}\nfunction validateFilename(filename) {\n const capabilities = getCapabilities().files;\n const forbiddenCharacters = capabilities.forbidden_filename_characters ?? window._oc_config?.forbidden_filenames_characters ?? [\"/\", \"\\\\\"];\n for (const character of forbiddenCharacters) {\n if (filename.includes(character)) {\n throw new InvalidFilenameError({ segment: character, reason: \"character\", filename });\n }\n }\n filename = filename.toLocaleLowerCase();\n const forbiddenFilenames = capabilities.forbidden_filenames ?? [\".htaccess\"];\n if (forbiddenFilenames.includes(filename)) {\n throw new InvalidFilenameError({\n filename,\n segment: filename,\n reason: \"reserved name\"\n /* ReservedName */\n });\n }\n const endOfBasename = filename.indexOf(\".\", 1);\n const basename2 = filename.substring(0, endOfBasename === -1 ? void 0 : endOfBasename);\n const forbiddenFilenameBasenames = capabilities.forbidden_filename_basenames ?? [];\n if (forbiddenFilenameBasenames.includes(basename2)) {\n throw new InvalidFilenameError({\n filename,\n segment: basename2,\n reason: \"reserved name\"\n /* ReservedName */\n });\n }\n const forbiddenFilenameExtensions = capabilities.forbidden_filename_extensions ?? [\".part\", \".filepart\"];\n for (const extension of forbiddenFilenameExtensions) {\n if (filename.length > extension.length && filename.endsWith(extension)) {\n throw new InvalidFilenameError({ segment: extension, reason: \"extension\", filename });\n }\n }\n}\nfunction isFilenameValid(filename) {\n try {\n validateFilename(filename);\n return true;\n } catch (error) {\n if (error instanceof InvalidFilenameError) {\n return false;\n }\n throw error;\n }\n}\nfunction getUniqueName(name, otherNames, options) {\n const opts = {\n suffix: (n2) => `(${n2})`,\n ignoreFileExtension: false,\n ...options\n };\n let newName = name;\n let i2 = 1;\n while (otherNames.includes(newName)) {\n const ext = opts.ignoreFileExtension ? \"\" : extname(name);\n const base = basename(name, ext);\n newName = `${base} ${opts.suffix(i2++)}${ext}`;\n }\n return newName;\n}\nconst humanList = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\"];\nconst humanListBinary = [\"B\", \"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\"];\nfunction formatFileSize(size, skipSmallSizes = false, binaryPrefixes = false, base1000 = false) {\n binaryPrefixes = binaryPrefixes && !base1000;\n if (typeof size === \"string\") {\n size = Number(size);\n }\n let order = size > 0 ? Math.floor(Math.log(size) / Math.log(base1000 ? 1e3 : 1024)) : 0;\n order = Math.min((binaryPrefixes ? humanListBinary.length : humanList.length) - 1, order);\n const readableFormat = binaryPrefixes ? humanListBinary[order] : humanList[order];\n let relativeSize = (size / Math.pow(base1000 ? 1e3 : 1024, order)).toFixed(1);\n if (skipSmallSizes === true && order === 0) {\n return (relativeSize !== \"0.0\" ? \"< 1 \" : \"0 \") + (binaryPrefixes ? humanListBinary[1] : humanList[1]);\n }\n if (order < 2) {\n relativeSize = parseFloat(relativeSize).toFixed(0);\n } else {\n relativeSize = parseFloat(relativeSize).toLocaleString(getCanonicalLocale());\n }\n return relativeSize + \" \" + readableFormat;\n}\nfunction parseFileSize(value, forceBinary = false) {\n try {\n value = `${value}`.toLocaleLowerCase().replaceAll(/\\s+/g, \"\").replaceAll(\",\", \".\");\n } catch (e2) {\n return null;\n }\n const match = value.match(/^([0-9]*(\\.[0-9]*)?)([kmgtp]?)(i?)b?$/);\n if (match === null || match[1] === \".\" || match[1] === \"\") {\n return null;\n }\n const bytesArray = {\n \"\": 0,\n k: 1,\n m: 2,\n g: 3,\n t: 4,\n p: 5,\n e: 6\n };\n const decimalString = `${match[1]}`;\n const base = match[4] === \"i\" || forceBinary ? 1024 : 1e3;\n return Math.round(Number.parseFloat(decimalString) * base ** bytesArray[match[3]]);\n}\nfunction stringify(value) {\n if (value instanceof Date) {\n return value.toISOString();\n }\n return String(value);\n}\nfunction orderBy(collection, identifiers2, orders) {\n identifiers2 = identifiers2 ?? [(value) => value];\n orders = orders ?? [];\n const sorting = identifiers2.map((_, index) => (orders[index] ?? \"asc\") === \"asc\" ? 1 : -1);\n const collator = Intl.Collator(\n [getLanguage(), getCanonicalLocale()],\n {\n // handle 10 as ten and not as one-zero\n numeric: true,\n usage: \"sort\"\n }\n );\n return [...collection].sort((a2, b2) => {\n for (const [index, identifier] of identifiers2.entries()) {\n const value = collator.compare(stringify(identifier(a2)), stringify(identifier(b2)));\n if (value !== 0) {\n return value * sorting[index];\n }\n }\n return 0;\n });\n}\nvar FilesSortingMode = /* @__PURE__ */ ((FilesSortingMode2) => {\n FilesSortingMode2[\"Name\"] = \"basename\";\n FilesSortingMode2[\"Modified\"] = \"mtime\";\n FilesSortingMode2[\"Size\"] = \"size\";\n return FilesSortingMode2;\n})(FilesSortingMode || {});\nfunction sortNodes(nodes, options = {}) {\n const sortingOptions = {\n // Default to sort by name\n sortingMode: \"basename\",\n // Default to sort ascending\n sortingOrder: \"asc\",\n ...options\n };\n const basename2 = (name) => name.lastIndexOf(\".\") > 0 ? name.slice(0, name.lastIndexOf(\".\")) : name;\n const identifiers2 = [\n // 1: Sort favorites first if enabled\n ...sortingOptions.sortFavoritesFirst ? [(v) => v.attributes?.favorite !== 1] : [],\n // 2: Sort folders first if sorting by name\n ...sortingOptions.sortFoldersFirst ? [(v) => v.type !== \"folder\"] : [],\n // 3: Use sorting mode if NOT basename (to be able to use display name too)\n ...sortingOptions.sortingMode !== \"basename\" ? [(v) => v[sortingOptions.sortingMode]] : [],\n // 4: Use display name if available, fallback to name\n (v) => basename2(v.displayname || v.attributes?.displayname || v.basename),\n // 5: Finally, use basename if all previous sorting methods failed\n (v) => v.basename\n ];\n const orders = [\n // (for 1): always sort favorites before normal files\n ...sortingOptions.sortFavoritesFirst ? [\"asc\"] : [],\n // (for 2): always sort folders before files\n ...sortingOptions.sortFoldersFirst ? [\"asc\"] : [],\n // (for 3): Reverse if sorting by mtime as mtime higher means edited more recent -> lower\n ...sortingOptions.sortingMode === \"mtime\" ? [sortingOptions.sortingOrder === \"asc\" ? \"desc\" : \"asc\"] : [],\n // (also for 3 so make sure not to conflict with 2 and 3)\n ...sortingOptions.sortingMode !== \"mtime\" && sortingOptions.sortingMode !== \"basename\" ? [sortingOptions.sortingOrder] : [],\n // for 4: use configured sorting direction\n sortingOptions.sortingOrder,\n // for 5: use configured sorting direction\n sortingOptions.sortingOrder\n ];\n return orderBy(nodes, identifiers2, orders);\n}\nclass Navigation extends TypedEventTarget {\n _views = [];\n _currentView = null;\n /**\n * Register a new view on the navigation\n * @param view The view to register\n * @throws `Error` is thrown if a view with the same id is already registered\n */\n register(view) {\n if (this._views.find((search) => search.id === view.id)) {\n throw new Error(`View id ${view.id} is already registered`);\n }\n this._views.push(view);\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n /**\n * Remove a registered view\n * @param id The id of the view to remove\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 this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n }\n /**\n * Set the currently active view\n * @fires UpdateActiveViewEvent\n * @param view New active view\n */\n setActive(view) {\n this._currentView = view;\n const event = new CustomEvent(\"updateActive\", { detail: view });\n this.dispatchTypedEvent(\"updateActive\", event);\n }\n /**\n * The currently active files view\n */\n get active() {\n return this._currentView;\n }\n /**\n * All registered views\n */\n get views() {\n return this._views;\n }\n}\nconst getNavigation = function() {\n if (typeof window._nc_navigation === \"undefined\") {\n window._nc_navigation = new Navigation();\n logger.debug(\"Navigation service initialized\");\n }\n return window._nc_navigation;\n};\nclass Column {\n _column;\n constructor(column) {\n isValidColumn(column);\n this._column = column;\n }\n get id() {\n return this._column.id;\n }\n get title() {\n return this._column.title;\n }\n get render() {\n return this._column.render;\n }\n get sort() {\n return this._column.sort;\n }\n get summary() {\n return this._column.summary;\n }\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 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};\nfunction getDefaultExportFromCjs(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, \"default\") ? x[\"default\"] : x;\n}\nvar validator = {};\nvar util = {};\nvar hasRequiredUtil;\nfunction requireUtil() {\n if (hasRequiredUtil) return util;\n hasRequiredUtil = 1;\n (function(exports) {\n const nameStartChar = \":A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\";\n const nameChar = nameStartChar + \"\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040\";\n const nameRegexp = \"[\" + nameStartChar + \"][\" + nameChar + \"]*\";\n const regexName = new RegExp(\"^\" + nameRegexp + \"$\");\n const getAllMatches = function(string, regex) {\n const matches = [];\n let match = regex.exec(string);\n while (match) {\n const allmatches = [];\n allmatches.startIndex = regex.lastIndex - match[0].length;\n const len = match.length;\n for (let index = 0; index < len; index++) {\n allmatches.push(match[index]);\n }\n matches.push(allmatches);\n match = regex.exec(string);\n }\n return matches;\n };\n const isName = function(string) {\n const match = regexName.exec(string);\n return !(match === null || typeof match === \"undefined\");\n };\n exports.isExist = function(v) {\n return typeof v !== \"undefined\";\n };\n exports.isEmptyObject = function(obj) {\n return Object.keys(obj).length === 0;\n };\n exports.merge = function(target, a2, arrayMode) {\n if (a2) {\n const keys = Object.keys(a2);\n const len = keys.length;\n for (let i2 = 0; i2 < len; i2++) {\n if (arrayMode === \"strict\") {\n target[keys[i2]] = [a2[keys[i2]]];\n } else {\n target[keys[i2]] = a2[keys[i2]];\n }\n }\n }\n };\n exports.getValue = function(v) {\n if (exports.isExist(v)) {\n return v;\n } else {\n return \"\";\n }\n };\n exports.isName = isName;\n exports.getAllMatches = getAllMatches;\n exports.nameRegexp = nameRegexp;\n })(util);\n return util;\n}\nvar hasRequiredValidator;\nfunction requireValidator() {\n if (hasRequiredValidator) return validator;\n hasRequiredValidator = 1;\n const util2 = requireUtil();\n const defaultOptions = {\n allowBooleanAttributes: false,\n //A tag can have attributes without any value\n unpairedTags: []\n };\n validator.validate = function(xmlData, options) {\n options = Object.assign({}, defaultOptions, options);\n const tags = [];\n let tagFound = false;\n let reachedRoot = false;\n if (xmlData[0] === \"\\uFEFF\") {\n xmlData = xmlData.substr(1);\n }\n for (let i2 = 0; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\" && xmlData[i2 + 1] === \"?\") {\n i2 += 2;\n i2 = readPI(xmlData, i2);\n if (i2.err) return i2;\n } else if (xmlData[i2] === \"<\") {\n let tagStartPos = i2;\n i2++;\n if (xmlData[i2] === \"!\") {\n i2 = readCommentAndCDATA(xmlData, i2);\n continue;\n } else {\n let closingTag = false;\n if (xmlData[i2] === \"/\") {\n closingTag = true;\n i2++;\n }\n let tagName = \"\";\n for (; i2 < xmlData.length && xmlData[i2] !== \">\" && xmlData[i2] !== \" \" && xmlData[i2] !== \"\t\" && xmlData[i2] !== \"\\n\" && xmlData[i2] !== \"\\r\"; i2++) {\n tagName += xmlData[i2];\n }\n tagName = tagName.trim();\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substring(0, tagName.length - 1);\n i2--;\n }\n if (!validateTagName(tagName)) {\n let msg;\n if (tagName.trim().length === 0) {\n msg = \"Invalid space after '<'.\";\n } else {\n msg = \"Tag '\" + tagName + \"' is an invalid name.\";\n }\n return getErrorObject(\"InvalidTag\", msg, getLineNumberForPosition(xmlData, i2));\n }\n const result = readAttributeStr(xmlData, i2);\n if (result === false) {\n return getErrorObject(\"InvalidAttr\", \"Attributes for '\" + tagName + \"' have open quote.\", getLineNumberForPosition(xmlData, i2));\n }\n let attrStr = result.value;\n i2 = result.index;\n if (attrStr[attrStr.length - 1] === \"/\") {\n const attrStrStart = i2 - attrStr.length;\n attrStr = attrStr.substring(0, attrStr.length - 1);\n const isValid = validateAttributeString(attrStr, options);\n if (isValid === true) {\n tagFound = true;\n } else {\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n }\n } else if (closingTag) {\n if (!result.tagClosed) {\n return getErrorObject(\"InvalidTag\", \"Closing tag '\" + tagName + \"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i2));\n } else if (attrStr.trim().length > 0) {\n return getErrorObject(\"InvalidTag\", \"Closing tag '\" + tagName + \"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else if (tags.length === 0) {\n return getErrorObject(\"InvalidTag\", \"Closing tag '\" + tagName + \"' has not been opened.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else {\n const otg = tags.pop();\n if (tagName !== otg.tagName) {\n let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n return getErrorObject(\n \"InvalidTag\",\n \"Expected closing tag '\" + otg.tagName + \"' (opened in line \" + openPos.line + \", col \" + openPos.col + \") instead of closing tag '\" + tagName + \"'.\",\n getLineNumberForPosition(xmlData, tagStartPos)\n );\n }\n if (tags.length == 0) {\n reachedRoot = true;\n }\n }\n } else {\n const isValid = validateAttributeString(attrStr, options);\n if (isValid !== true) {\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i2 - attrStr.length + isValid.err.line));\n }\n if (reachedRoot === true) {\n return getErrorObject(\"InvalidXml\", \"Multiple possible root nodes found.\", getLineNumberForPosition(xmlData, i2));\n } else if (options.unpairedTags.indexOf(tagName) !== -1) ;\n else {\n tags.push({ tagName, tagStartPos });\n }\n tagFound = true;\n }\n for (i2++; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\") {\n if (xmlData[i2 + 1] === \"!\") {\n i2++;\n i2 = readCommentAndCDATA(xmlData, i2);\n continue;\n } else if (xmlData[i2 + 1] === \"?\") {\n i2 = readPI(xmlData, ++i2);\n if (i2.err) return i2;\n } else {\n break;\n }\n } else if (xmlData[i2] === \"&\") {\n const afterAmp = validateAmpersand(xmlData, i2);\n if (afterAmp == -1)\n return getErrorObject(\"InvalidChar\", \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i2));\n i2 = afterAmp;\n } else {\n if (reachedRoot === true && !isWhiteSpace(xmlData[i2])) {\n return getErrorObject(\"InvalidXml\", \"Extra text at the end\", getLineNumberForPosition(xmlData, i2));\n }\n }\n }\n if (xmlData[i2] === \"<\") {\n i2--;\n }\n }\n } else {\n if (isWhiteSpace(xmlData[i2])) {\n continue;\n }\n return getErrorObject(\"InvalidChar\", \"char '\" + xmlData[i2] + \"' is not expected.\", getLineNumberForPosition(xmlData, i2));\n }\n }\n if (!tagFound) {\n return getErrorObject(\"InvalidXml\", \"Start tag expected.\", 1);\n } else if (tags.length == 1) {\n return getErrorObject(\"InvalidTag\", \"Unclosed tag '\" + tags[0].tagName + \"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n } else if (tags.length > 0) {\n return getErrorObject(\"InvalidXml\", \"Invalid '\" + JSON.stringify(tags.map((t2) => t2.tagName), null, 4).replace(/\\r?\\n/g, \"\") + \"' found.\", { line: 1, col: 1 });\n }\n return true;\n };\n function isWhiteSpace(char) {\n return char === \" \" || char === \"\t\" || char === \"\\n\" || char === \"\\r\";\n }\n function readPI(xmlData, i2) {\n const start = i2;\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] == \"?\" || xmlData[i2] == \" \") {\n const tagname = xmlData.substr(start, i2 - start);\n if (i2 > 5 && tagname === \"xml\") {\n return getErrorObject(\"InvalidXml\", \"XML declaration allowed only at the start of the document.\", getLineNumberForPosition(xmlData, i2));\n } else if (xmlData[i2] == \"?\" && xmlData[i2 + 1] == \">\") {\n i2++;\n break;\n } else {\n continue;\n }\n }\n }\n return i2;\n }\n function readCommentAndCDATA(xmlData, i2) {\n if (xmlData.length > i2 + 5 && xmlData[i2 + 1] === \"-\" && xmlData[i2 + 2] === \"-\") {\n for (i2 += 3; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"-\" && xmlData[i2 + 1] === \"-\" && xmlData[i2 + 2] === \">\") {\n i2 += 2;\n break;\n }\n }\n } else if (xmlData.length > i2 + 8 && xmlData[i2 + 1] === \"D\" && xmlData[i2 + 2] === \"O\" && xmlData[i2 + 3] === \"C\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"Y\" && xmlData[i2 + 6] === \"P\" && xmlData[i2 + 7] === \"E\") {\n let angleBracketsCount = 1;\n for (i2 += 8; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\") {\n angleBracketsCount++;\n } else if (xmlData[i2] === \">\") {\n angleBracketsCount--;\n if (angleBracketsCount === 0) {\n break;\n }\n }\n }\n } else if (xmlData.length > i2 + 9 && xmlData[i2 + 1] === \"[\" && xmlData[i2 + 2] === \"C\" && xmlData[i2 + 3] === \"D\" && xmlData[i2 + 4] === \"A\" && xmlData[i2 + 5] === \"T\" && xmlData[i2 + 6] === \"A\" && xmlData[i2 + 7] === \"[\") {\n for (i2 += 8; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"]\" && xmlData[i2 + 1] === \"]\" && xmlData[i2 + 2] === \">\") {\n i2 += 2;\n break;\n }\n }\n }\n return i2;\n }\n const doubleQuote = '\"';\n const singleQuote = \"'\";\n function readAttributeStr(xmlData, i2) {\n let attrStr = \"\";\n let startChar = \"\";\n let tagClosed = false;\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === doubleQuote || xmlData[i2] === singleQuote) {\n if (startChar === \"\") {\n startChar = xmlData[i2];\n } else if (startChar !== xmlData[i2]) ;\n else {\n startChar = \"\";\n }\n } else if (xmlData[i2] === \">\") {\n if (startChar === \"\") {\n tagClosed = true;\n break;\n }\n }\n attrStr += xmlData[i2];\n }\n if (startChar !== \"\") {\n return false;\n }\n return {\n value: attrStr,\n index: i2,\n tagClosed\n };\n }\n const validAttrStrRegxp = new RegExp(`(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*(['\"])(([\\\\s\\\\S])*?)\\\\5)?`, \"g\");\n function validateAttributeString(attrStr, options) {\n const matches = util2.getAllMatches(attrStr, validAttrStrRegxp);\n const attrNames = {};\n for (let i2 = 0; i2 < matches.length; i2++) {\n if (matches[i2][1].length === 0) {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + matches[i2][2] + \"' has no space in starting.\", getPositionFromMatch(matches[i2]));\n } else if (matches[i2][3] !== void 0 && matches[i2][4] === void 0) {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + matches[i2][2] + \"' is without value.\", getPositionFromMatch(matches[i2]));\n } else if (matches[i2][3] === void 0 && !options.allowBooleanAttributes) {\n return getErrorObject(\"InvalidAttr\", \"boolean attribute '\" + matches[i2][2] + \"' is not allowed.\", getPositionFromMatch(matches[i2]));\n }\n const attrName = matches[i2][2];\n if (!validateAttrName(attrName)) {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + attrName + \"' is an invalid name.\", getPositionFromMatch(matches[i2]));\n }\n if (!attrNames.hasOwnProperty(attrName)) {\n attrNames[attrName] = 1;\n } else {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + attrName + \"' is repeated.\", getPositionFromMatch(matches[i2]));\n }\n }\n return true;\n }\n function validateNumberAmpersand(xmlData, i2) {\n let re2 = /\\d/;\n if (xmlData[i2] === \"x\") {\n i2++;\n re2 = /[\\da-fA-F]/;\n }\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \";\")\n return i2;\n if (!xmlData[i2].match(re2))\n break;\n }\n return -1;\n }\n function validateAmpersand(xmlData, i2) {\n i2++;\n if (xmlData[i2] === \";\")\n return -1;\n if (xmlData[i2] === \"#\") {\n i2++;\n return validateNumberAmpersand(xmlData, i2);\n }\n let count = 0;\n for (; i2 < xmlData.length; i2++, count++) {\n if (xmlData[i2].match(/\\w/) && count < 20)\n continue;\n if (xmlData[i2] === \";\")\n break;\n return -1;\n }\n return i2;\n }\n function getErrorObject(code, message, lineNumber) {\n return {\n err: {\n code,\n msg: message,\n line: lineNumber.line || lineNumber,\n col: lineNumber.col\n }\n };\n }\n function validateAttrName(attrName) {\n return util2.isName(attrName);\n }\n function validateTagName(tagname) {\n return util2.isName(tagname);\n }\n function getLineNumberForPosition(xmlData, index) {\n const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n return {\n line: lines.length,\n // column number is last line's length + 1, because column numbering starts at 1:\n col: lines[lines.length - 1].length + 1\n };\n }\n function getPositionFromMatch(match) {\n return match.startIndex + match[1].length;\n }\n return validator;\n}\nvar OptionsBuilder = {};\nvar hasRequiredOptionsBuilder;\nfunction requireOptionsBuilder() {\n if (hasRequiredOptionsBuilder) return OptionsBuilder;\n hasRequiredOptionsBuilder = 1;\n const defaultOptions = {\n preserveOrder: false,\n attributeNamePrefix: \"@_\",\n attributesGroupName: false,\n textNodeName: \"#text\",\n ignoreAttributes: true,\n removeNSPrefix: false,\n // remove NS from tag name or attribute name if true\n allowBooleanAttributes: false,\n //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseTagValue: true,\n parseAttributeValue: false,\n trimValues: true,\n //Trim string values of tag and attributes\n cdataPropName: false,\n numberParseOptions: {\n hex: true,\n leadingZeros: true,\n eNotation: true\n },\n tagValueProcessor: function(tagName, val) {\n return val;\n },\n attributeValueProcessor: function(attrName, val) {\n return val;\n },\n stopNodes: [],\n //nested tags will not be parsed even for errors\n alwaysCreateTextNode: false,\n isArray: () => false,\n commentPropName: false,\n unpairedTags: [],\n processEntities: true,\n htmlEntities: false,\n ignoreDeclaration: false,\n ignorePiTags: false,\n transformTagName: false,\n transformAttributeName: false,\n updateTag: function(tagName, jPath, attrs) {\n return tagName;\n }\n // skipEmptyListItem: false\n };\n const buildOptions = function(options) {\n return Object.assign({}, defaultOptions, options);\n };\n OptionsBuilder.buildOptions = buildOptions;\n OptionsBuilder.defaultOptions = defaultOptions;\n return OptionsBuilder;\n}\nvar xmlNode;\nvar hasRequiredXmlNode;\nfunction requireXmlNode() {\n if (hasRequiredXmlNode) return xmlNode;\n hasRequiredXmlNode = 1;\n class XmlNode {\n constructor(tagname) {\n this.tagname = tagname;\n this.child = [];\n this[\":@\"] = {};\n }\n add(key, val) {\n if (key === \"__proto__\") key = \"#__proto__\";\n this.child.push({ [key]: val });\n }\n addChild(node) {\n if (node.tagname === \"__proto__\") node.tagname = \"#__proto__\";\n if (node[\":@\"] && Object.keys(node[\":@\"]).length > 0) {\n this.child.push({ [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n } else {\n this.child.push({ [node.tagname]: node.child });\n }\n }\n }\n xmlNode = XmlNode;\n return xmlNode;\n}\nvar DocTypeReader;\nvar hasRequiredDocTypeReader;\nfunction requireDocTypeReader() {\n if (hasRequiredDocTypeReader) return DocTypeReader;\n hasRequiredDocTypeReader = 1;\n const util2 = requireUtil();\n function readDocType(xmlData, i2) {\n const entities = {};\n if (xmlData[i2 + 3] === \"O\" && xmlData[i2 + 4] === \"C\" && xmlData[i2 + 5] === \"T\" && xmlData[i2 + 6] === \"Y\" && xmlData[i2 + 7] === \"P\" && xmlData[i2 + 8] === \"E\") {\n i2 = i2 + 9;\n let angleBracketsCount = 1;\n let hasBody = false, comment = false;\n let exp = \"\";\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\" && !comment) {\n if (hasBody && isEntity(xmlData, i2)) {\n i2 += 7;\n let entityName, val;\n [entityName, val, i2] = readEntityExp(xmlData, i2 + 1);\n if (val.indexOf(\"&\") === -1)\n entities[validateEntityName(entityName)] = {\n regx: RegExp(`&${entityName};`, \"g\"),\n val\n };\n } else if (hasBody && isElement(xmlData, i2)) i2 += 8;\n else if (hasBody && isAttlist(xmlData, i2)) i2 += 8;\n else if (hasBody && isNotation(xmlData, i2)) i2 += 9;\n else comment = true;\n angleBracketsCount++;\n exp = \"\";\n } else if (xmlData[i2] === \">\") {\n if (comment) {\n if (xmlData[i2 - 1] === \"-\" && xmlData[i2 - 2] === \"-\") {\n comment = false;\n angleBracketsCount--;\n }\n } else {\n angleBracketsCount--;\n }\n if (angleBracketsCount === 0) {\n break;\n }\n } else if (xmlData[i2] === \"[\") {\n hasBody = true;\n } else {\n exp += xmlData[i2];\n }\n }\n if (angleBracketsCount !== 0) {\n throw new Error(`Unclosed DOCTYPE`);\n }\n } else {\n throw new Error(`Invalid Tag instead of DOCTYPE`);\n }\n return { entities, i: i2 };\n }\n function readEntityExp(xmlData, i2) {\n let entityName = \"\";\n for (; i2 < xmlData.length && (xmlData[i2] !== \"'\" && xmlData[i2] !== '\"'); i2++) {\n entityName += xmlData[i2];\n }\n entityName = entityName.trim();\n if (entityName.indexOf(\" \") !== -1) throw new Error(\"External entites are not supported\");\n const startChar = xmlData[i2++];\n let val = \"\";\n for (; i2 < xmlData.length && xmlData[i2] !== startChar; i2++) {\n val += xmlData[i2];\n }\n return [entityName, val, i2];\n }\n function isEntity(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"E\" && xmlData[i2 + 3] === \"N\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"I\" && xmlData[i2 + 6] === \"T\" && xmlData[i2 + 7] === \"Y\") return true;\n return false;\n }\n function isElement(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"E\" && xmlData[i2 + 3] === \"L\" && xmlData[i2 + 4] === \"E\" && xmlData[i2 + 5] === \"M\" && xmlData[i2 + 6] === \"E\" && xmlData[i2 + 7] === \"N\" && xmlData[i2 + 8] === \"T\") return true;\n return false;\n }\n function isAttlist(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"A\" && xmlData[i2 + 3] === \"T\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"L\" && xmlData[i2 + 6] === \"I\" && xmlData[i2 + 7] === \"S\" && xmlData[i2 + 8] === \"T\") return true;\n return false;\n }\n function isNotation(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"N\" && xmlData[i2 + 3] === \"O\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"A\" && xmlData[i2 + 6] === \"T\" && xmlData[i2 + 7] === \"I\" && xmlData[i2 + 8] === \"O\" && xmlData[i2 + 9] === \"N\") return true;\n return false;\n }\n function validateEntityName(name) {\n if (util2.isName(name))\n return name;\n else\n throw new Error(`Invalid entity name ${name}`);\n }\n DocTypeReader = readDocType;\n return DocTypeReader;\n}\nvar strnum;\nvar hasRequiredStrnum;\nfunction requireStrnum() {\n if (hasRequiredStrnum) return strnum;\n hasRequiredStrnum = 1;\n const hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;\n const numRegex = /^([\\-\\+])?(0*)(\\.[0-9]+([eE]\\-?[0-9]+)?|[0-9]+(\\.[0-9]+([eE]\\-?[0-9]+)?)?)$/;\n if (!Number.parseInt && window.parseInt) {\n Number.parseInt = window.parseInt;\n }\n if (!Number.parseFloat && window.parseFloat) {\n Number.parseFloat = window.parseFloat;\n }\n const consider = {\n hex: true,\n leadingZeros: true,\n decimalPoint: \".\",\n eNotation: true\n //skipLike: /regex/\n };\n function toNumber(str, options = {}) {\n options = Object.assign({}, consider, options);\n if (!str || typeof str !== \"string\") return str;\n let trimmedStr = str.trim();\n if (options.skipLike !== void 0 && options.skipLike.test(trimmedStr)) return str;\n else if (options.hex && hexRegex.test(trimmedStr)) {\n return Number.parseInt(trimmedStr, 16);\n } else {\n const match = numRegex.exec(trimmedStr);\n if (match) {\n const sign = match[1];\n const leadingZeros = match[2];\n let numTrimmedByZeros = trimZeros(match[3]);\n const eNotation = match[4] || match[6];\n if (!options.leadingZeros && leadingZeros.length > 0 && sign && trimmedStr[2] !== \".\") return str;\n else if (!options.leadingZeros && leadingZeros.length > 0 && !sign && trimmedStr[1] !== \".\") return str;\n else {\n const num = Number(trimmedStr);\n const numStr = \"\" + num;\n if (numStr.search(/[eE]/) !== -1) {\n if (options.eNotation) return num;\n else return str;\n } else if (eNotation) {\n if (options.eNotation) return num;\n else return str;\n } else if (trimmedStr.indexOf(\".\") !== -1) {\n if (numStr === \"0\" && numTrimmedByZeros === \"\") return num;\n else if (numStr === numTrimmedByZeros) return num;\n else if (sign && numStr === \"-\" + numTrimmedByZeros) return num;\n else return str;\n }\n if (leadingZeros) {\n if (numTrimmedByZeros === numStr) return num;\n else if (sign + numTrimmedByZeros === numStr) return num;\n else return str;\n }\n if (trimmedStr === numStr) return num;\n else if (trimmedStr === sign + numStr) return num;\n return str;\n }\n } else {\n return str;\n }\n }\n }\n function trimZeros(numStr) {\n if (numStr && numStr.indexOf(\".\") !== -1) {\n numStr = numStr.replace(/0+$/, \"\");\n if (numStr === \".\") numStr = \"0\";\n else if (numStr[0] === \".\") numStr = \"0\" + numStr;\n else if (numStr[numStr.length - 1] === \".\") numStr = numStr.substr(0, numStr.length - 1);\n return numStr;\n }\n return numStr;\n }\n strnum = toNumber;\n return strnum;\n}\nvar ignoreAttributes;\nvar hasRequiredIgnoreAttributes;\nfunction requireIgnoreAttributes() {\n if (hasRequiredIgnoreAttributes) return ignoreAttributes;\n hasRequiredIgnoreAttributes = 1;\n function getIgnoreAttributesFn(ignoreAttributes2) {\n if (typeof ignoreAttributes2 === \"function\") {\n return ignoreAttributes2;\n }\n if (Array.isArray(ignoreAttributes2)) {\n return (attrName) => {\n for (const pattern of ignoreAttributes2) {\n if (typeof pattern === \"string\" && attrName === pattern) {\n return true;\n }\n if (pattern instanceof RegExp && pattern.test(attrName)) {\n return true;\n }\n }\n };\n }\n return () => false;\n }\n ignoreAttributes = getIgnoreAttributesFn;\n return ignoreAttributes;\n}\nvar OrderedObjParser_1;\nvar hasRequiredOrderedObjParser;\nfunction requireOrderedObjParser() {\n if (hasRequiredOrderedObjParser) return OrderedObjParser_1;\n hasRequiredOrderedObjParser = 1;\n const util2 = requireUtil();\n const xmlNode2 = requireXmlNode();\n const readDocType = requireDocTypeReader();\n const toNumber = requireStrnum();\n const getIgnoreAttributesFn = requireIgnoreAttributes();\n class OrderedObjParser {\n constructor(options) {\n this.options = options;\n this.currentNode = null;\n this.tagsNodeStack = [];\n this.docTypeEntities = {};\n this.lastEntities = {\n \"apos\": { regex: /&(apos|#39|#x27);/g, val: \"'\" },\n \"gt\": { regex: /&(gt|#62|#x3E);/g, val: \">\" },\n \"lt\": { regex: /&(lt|#60|#x3C);/g, val: \"<\" },\n \"quot\": { regex: /&(quot|#34|#x22);/g, val: '\"' }\n };\n this.ampEntity = { regex: /&(amp|#38|#x26);/g, val: \"&\" };\n this.htmlEntities = {\n \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n \"cent\": { regex: /&(cent|#162);/g, val: \"¢\" },\n \"pound\": { regex: /&(pound|#163);/g, val: \"£\" },\n \"yen\": { regex: /&(yen|#165);/g, val: \"¥\" },\n \"euro\": { regex: /&(euro|#8364);/g, val: \"€\" },\n \"copyright\": { regex: /&(copy|#169);/g, val: \"©\" },\n \"reg\": { regex: /&(reg|#174);/g, val: \"®\" },\n \"inr\": { regex: /&(inr|#8377);/g, val: \"₹\" },\n \"num_dec\": { regex: /&#([0-9]{1,7});/g, val: (_, str) => String.fromCharCode(Number.parseInt(str, 10)) },\n \"num_hex\": { regex: /&#x([0-9a-fA-F]{1,6});/g, val: (_, str) => String.fromCharCode(Number.parseInt(str, 16)) }\n };\n this.addExternalEntities = addExternalEntities;\n this.parseXml = parseXml;\n this.parseTextData = parseTextData;\n this.resolveNameSpace = resolveNameSpace;\n this.buildAttributesMap = buildAttributesMap;\n this.isItStopNode = isItStopNode;\n this.replaceEntitiesValue = replaceEntitiesValue;\n this.readStopNodeData = readStopNodeData;\n this.saveTextToParentTag = saveTextToParentTag;\n this.addChild = addChild;\n this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes);\n }\n }\n function addExternalEntities(externalEntities) {\n const entKeys = Object.keys(externalEntities);\n for (let i2 = 0; i2 < entKeys.length; i2++) {\n const ent = entKeys[i2];\n this.lastEntities[ent] = {\n regex: new RegExp(\"&\" + ent + \";\", \"g\"),\n val: externalEntities[ent]\n };\n }\n }\n function parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n if (val !== void 0) {\n if (this.options.trimValues && !dontTrim) {\n val = val.trim();\n }\n if (val.length > 0) {\n if (!escapeEntities) val = this.replaceEntitiesValue(val);\n const newval = this.options.tagValueProcessor(tagName, val, jPath, hasAttributes, isLeafNode);\n if (newval === null || newval === void 0) {\n return val;\n } else if (typeof newval !== typeof val || newval !== val) {\n return newval;\n } else if (this.options.trimValues) {\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n } else {\n const trimmedVal = val.trim();\n if (trimmedVal === val) {\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n } else {\n return val;\n }\n }\n }\n }\n }\n function resolveNameSpace(tagname) {\n if (this.options.removeNSPrefix) {\n const tags = tagname.split(\":\");\n const prefix = tagname.charAt(0) === \"/\" ? \"/\" : \"\";\n if (tags[0] === \"xmlns\") {\n return \"\";\n }\n if (tags.length === 2) {\n tagname = prefix + tags[1];\n }\n }\n return tagname;\n }\n const attrsRegx = new RegExp(`([^\\\\s=]+)\\\\s*(=\\\\s*(['\"])([\\\\s\\\\S]*?)\\\\3)?`, \"gm\");\n function buildAttributesMap(attrStr, jPath, tagName) {\n if (this.options.ignoreAttributes !== true && typeof attrStr === \"string\") {\n const matches = util2.getAllMatches(attrStr, attrsRegx);\n const len = matches.length;\n const attrs = {};\n for (let i2 = 0; i2 < len; i2++) {\n const attrName = this.resolveNameSpace(matches[i2][1]);\n if (this.ignoreAttributesFn(attrName, jPath)) {\n continue;\n }\n let oldVal = matches[i2][4];\n let aName = this.options.attributeNamePrefix + attrName;\n if (attrName.length) {\n if (this.options.transformAttributeName) {\n aName = this.options.transformAttributeName(aName);\n }\n if (aName === \"__proto__\") aName = \"#__proto__\";\n if (oldVal !== void 0) {\n if (this.options.trimValues) {\n oldVal = oldVal.trim();\n }\n oldVal = this.replaceEntitiesValue(oldVal);\n const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath);\n if (newVal === null || newVal === void 0) {\n attrs[aName] = oldVal;\n } else if (typeof newVal !== typeof oldVal || newVal !== oldVal) {\n attrs[aName] = newVal;\n } else {\n attrs[aName] = parseValue(\n oldVal,\n this.options.parseAttributeValue,\n this.options.numberParseOptions\n );\n }\n } else if (this.options.allowBooleanAttributes) {\n attrs[aName] = true;\n }\n }\n }\n if (!Object.keys(attrs).length) {\n return;\n }\n if (this.options.attributesGroupName) {\n const attrCollection = {};\n attrCollection[this.options.attributesGroupName] = attrs;\n return attrCollection;\n }\n return attrs;\n }\n }\n const parseXml = function(xmlData) {\n xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\");\n const xmlObj = new xmlNode2(\"!xml\");\n let currentNode = xmlObj;\n let textData = \"\";\n let jPath = \"\";\n for (let i2 = 0; i2 < xmlData.length; i2++) {\n const ch = xmlData[i2];\n if (ch === \"<\") {\n if (xmlData[i2 + 1] === \"/\") {\n const closeIndex = findClosingIndex(xmlData, \">\", i2, \"Closing Tag is not closed.\");\n let tagName = xmlData.substring(i2 + 2, closeIndex).trim();\n if (this.options.removeNSPrefix) {\n const colonIndex = tagName.indexOf(\":\");\n if (colonIndex !== -1) {\n tagName = tagName.substr(colonIndex + 1);\n }\n }\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n if (currentNode) {\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n }\n const lastTagName = jPath.substring(jPath.lastIndexOf(\".\") + 1);\n if (tagName && this.options.unpairedTags.indexOf(tagName) !== -1) {\n throw new Error(`Unpaired tag can not be used as closing tag: </${tagName}>`);\n }\n let propIndex = 0;\n if (lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1) {\n propIndex = jPath.lastIndexOf(\".\", jPath.lastIndexOf(\".\") - 1);\n this.tagsNodeStack.pop();\n } else {\n propIndex = jPath.lastIndexOf(\".\");\n }\n jPath = jPath.substring(0, propIndex);\n currentNode = this.tagsNodeStack.pop();\n textData = \"\";\n i2 = closeIndex;\n } else if (xmlData[i2 + 1] === \"?\") {\n let tagData = readTagExp(xmlData, i2, false, \"?>\");\n if (!tagData) throw new Error(\"Pi Tag is not closed.\");\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n if (this.options.ignoreDeclaration && tagData.tagName === \"?xml\" || this.options.ignorePiTags) ;\n else {\n const childNode = new xmlNode2(tagData.tagName);\n childNode.add(this.options.textNodeName, \"\");\n if (tagData.tagName !== tagData.tagExp && tagData.attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, jPath, tagData.tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n }\n i2 = tagData.closeIndex + 1;\n } else if (xmlData.substr(i2 + 1, 3) === \"!--\") {\n const endIndex = findClosingIndex(xmlData, \"-->\", i2 + 4, \"Comment is not closed.\");\n if (this.options.commentPropName) {\n const comment = xmlData.substring(i2 + 4, endIndex - 2);\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n currentNode.add(this.options.commentPropName, [{ [this.options.textNodeName]: comment }]);\n }\n i2 = endIndex;\n } else if (xmlData.substr(i2 + 1, 2) === \"!D\") {\n const result = readDocType(xmlData, i2);\n this.docTypeEntities = result.entities;\n i2 = result.i;\n } else if (xmlData.substr(i2 + 1, 2) === \"![\") {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i2, \"CDATA is not closed.\") - 2;\n const tagExp = xmlData.substring(i2 + 9, closeIndex);\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n let val = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true, true);\n if (val == void 0) val = \"\";\n if (this.options.cdataPropName) {\n currentNode.add(this.options.cdataPropName, [{ [this.options.textNodeName]: tagExp }]);\n } else {\n currentNode.add(this.options.textNodeName, val);\n }\n i2 = closeIndex + 2;\n } else {\n let result = readTagExp(xmlData, i2, this.options.removeNSPrefix);\n let tagName = result.tagName;\n const rawTagName = result.rawTagName;\n let tagExp = result.tagExp;\n let attrExpPresent = result.attrExpPresent;\n let closeIndex = result.closeIndex;\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n if (currentNode && textData) {\n if (currentNode.tagname !== \"!xml\") {\n textData = this.saveTextToParentTag(textData, currentNode, jPath, false);\n }\n }\n const lastTag = currentNode;\n if (lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1) {\n currentNode = this.tagsNodeStack.pop();\n jPath = jPath.substring(0, jPath.lastIndexOf(\".\"));\n }\n if (tagName !== xmlObj.tagname) {\n jPath += jPath ? \".\" + tagName : tagName;\n }\n if (this.isItStopNode(this.options.stopNodes, jPath, tagName)) {\n let tagContent = \"\";\n if (tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1) {\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n } else {\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n i2 = result.closeIndex;\n } else if (this.options.unpairedTags.indexOf(tagName) !== -1) {\n i2 = result.closeIndex;\n } else {\n const result2 = this.readStopNodeData(xmlData, rawTagName, closeIndex + 1);\n if (!result2) throw new Error(`Unexpected end of ${rawTagName}`);\n i2 = result2.i;\n tagContent = result2.tagContent;\n }\n const childNode = new xmlNode2(tagName);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n if (tagContent) {\n tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true);\n }\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n childNode.add(this.options.textNodeName, tagContent);\n this.addChild(currentNode, childNode, jPath);\n } else {\n if (tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1) {\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n } else {\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n const childNode = new xmlNode2(tagName);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n } else {\n const childNode = new xmlNode2(tagName);\n this.tagsNodeStack.push(currentNode);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n currentNode = childNode;\n }\n textData = \"\";\n i2 = closeIndex;\n }\n }\n } else {\n textData += xmlData[i2];\n }\n }\n return xmlObj.child;\n };\n function addChild(currentNode, childNode, jPath) {\n const result = this.options.updateTag(childNode.tagname, jPath, childNode[\":@\"]);\n if (result === false) ;\n else if (typeof result === \"string\") {\n childNode.tagname = result;\n currentNode.addChild(childNode);\n } else {\n currentNode.addChild(childNode);\n }\n }\n const replaceEntitiesValue = function(val) {\n if (this.options.processEntities) {\n for (let entityName in this.docTypeEntities) {\n const entity = this.docTypeEntities[entityName];\n val = val.replace(entity.regx, entity.val);\n }\n for (let entityName in this.lastEntities) {\n const entity = this.lastEntities[entityName];\n val = val.replace(entity.regex, entity.val);\n }\n if (this.options.htmlEntities) {\n for (let entityName in this.htmlEntities) {\n const entity = this.htmlEntities[entityName];\n val = val.replace(entity.regex, entity.val);\n }\n }\n val = val.replace(this.ampEntity.regex, this.ampEntity.val);\n }\n return val;\n };\n function saveTextToParentTag(textData, currentNode, jPath, isLeafNode) {\n if (textData) {\n if (isLeafNode === void 0) isLeafNode = Object.keys(currentNode.child).length === 0;\n textData = this.parseTextData(\n textData,\n currentNode.tagname,\n jPath,\n false,\n currentNode[\":@\"] ? Object.keys(currentNode[\":@\"]).length !== 0 : false,\n isLeafNode\n );\n if (textData !== void 0 && textData !== \"\")\n currentNode.add(this.options.textNodeName, textData);\n textData = \"\";\n }\n return textData;\n }\n function isItStopNode(stopNodes, jPath, currentTagName) {\n const allNodesExp = \"*.\" + currentTagName;\n for (const stopNodePath in stopNodes) {\n const stopNodeExp = stopNodes[stopNodePath];\n if (allNodesExp === stopNodeExp || jPath === stopNodeExp) return true;\n }\n return false;\n }\n function tagExpWithClosingIndex(xmlData, i2, closingChar = \">\") {\n let attrBoundary;\n let tagExp = \"\";\n for (let index = i2; index < xmlData.length; index++) {\n let ch = xmlData[index];\n if (attrBoundary) {\n if (ch === attrBoundary) attrBoundary = \"\";\n } else if (ch === '\"' || ch === \"'\") {\n attrBoundary = ch;\n } else if (ch === closingChar[0]) {\n if (closingChar[1]) {\n if (xmlData[index + 1] === closingChar[1]) {\n return {\n data: tagExp,\n index\n };\n }\n } else {\n return {\n data: tagExp,\n index\n };\n }\n } else if (ch === \"\t\") {\n ch = \" \";\n }\n tagExp += ch;\n }\n }\n function findClosingIndex(xmlData, str, i2, errMsg) {\n const closingIndex = xmlData.indexOf(str, i2);\n if (closingIndex === -1) {\n throw new Error(errMsg);\n } else {\n return closingIndex + str.length - 1;\n }\n }\n function readTagExp(xmlData, i2, removeNSPrefix, closingChar = \">\") {\n const result = tagExpWithClosingIndex(xmlData, i2 + 1, closingChar);\n if (!result) return;\n let tagExp = result.data;\n const closeIndex = result.index;\n const separatorIndex = tagExp.search(/\\s/);\n let tagName = tagExp;\n let attrExpPresent = true;\n if (separatorIndex !== -1) {\n tagName = tagExp.substring(0, separatorIndex);\n tagExp = tagExp.substring(separatorIndex + 1).trimStart();\n }\n const rawTagName = tagName;\n if (removeNSPrefix) {\n const colonIndex = tagName.indexOf(\":\");\n if (colonIndex !== -1) {\n tagName = tagName.substr(colonIndex + 1);\n attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n }\n }\n return {\n tagName,\n tagExp,\n closeIndex,\n attrExpPresent,\n rawTagName\n };\n }\n function readStopNodeData(xmlData, tagName, i2) {\n const startIndex = i2;\n let openTagCount = 1;\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\") {\n if (xmlData[i2 + 1] === \"/\") {\n const closeIndex = findClosingIndex(xmlData, \">\", i2, `${tagName} is not closed`);\n let closeTagName = xmlData.substring(i2 + 2, closeIndex).trim();\n if (closeTagName === tagName) {\n openTagCount--;\n if (openTagCount === 0) {\n return {\n tagContent: xmlData.substring(startIndex, i2),\n i: closeIndex\n };\n }\n }\n i2 = closeIndex;\n } else if (xmlData[i2 + 1] === \"?\") {\n const closeIndex = findClosingIndex(xmlData, \"?>\", i2 + 1, \"StopNode is not closed.\");\n i2 = closeIndex;\n } else if (xmlData.substr(i2 + 1, 3) === \"!--\") {\n const closeIndex = findClosingIndex(xmlData, \"-->\", i2 + 3, \"StopNode is not closed.\");\n i2 = closeIndex;\n } else if (xmlData.substr(i2 + 1, 2) === \"![\") {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i2, \"StopNode is not closed.\") - 2;\n i2 = closeIndex;\n } else {\n const tagData = readTagExp(xmlData, i2, \">\");\n if (tagData) {\n const openTagName = tagData && tagData.tagName;\n if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length - 1] !== \"/\") {\n openTagCount++;\n }\n i2 = tagData.closeIndex;\n }\n }\n }\n }\n }\n function parseValue(val, shouldParse, options) {\n if (shouldParse && typeof val === \"string\") {\n const newval = val.trim();\n if (newval === \"true\") return true;\n else if (newval === \"false\") return false;\n else return toNumber(val, options);\n } else {\n if (util2.isExist(val)) {\n return val;\n } else {\n return \"\";\n }\n }\n }\n OrderedObjParser_1 = OrderedObjParser;\n return OrderedObjParser_1;\n}\nvar node2json = {};\nvar hasRequiredNode2json;\nfunction requireNode2json() {\n if (hasRequiredNode2json) return node2json;\n hasRequiredNode2json = 1;\n function prettify(node, options) {\n return compress(node, options);\n }\n function compress(arr, options, jPath) {\n let text;\n const compressedObj = {};\n for (let i2 = 0; i2 < arr.length; i2++) {\n const tagObj = arr[i2];\n const property = propName(tagObj);\n let newJpath = \"\";\n if (jPath === void 0) newJpath = property;\n else newJpath = jPath + \".\" + property;\n if (property === options.textNodeName) {\n if (text === void 0) text = tagObj[property];\n else text += \"\" + tagObj[property];\n } else if (property === void 0) {\n continue;\n } else if (tagObj[property]) {\n let val = compress(tagObj[property], options, newJpath);\n const isLeaf = isLeafTag(val, options);\n if (tagObj[\":@\"]) {\n assignAttributes(val, tagObj[\":@\"], newJpath, options);\n } else if (Object.keys(val).length === 1 && val[options.textNodeName] !== void 0 && !options.alwaysCreateTextNode) {\n val = val[options.textNodeName];\n } else if (Object.keys(val).length === 0) {\n if (options.alwaysCreateTextNode) val[options.textNodeName] = \"\";\n else val = \"\";\n }\n if (compressedObj[property] !== void 0 && compressedObj.hasOwnProperty(property)) {\n if (!Array.isArray(compressedObj[property])) {\n compressedObj[property] = [compressedObj[property]];\n }\n compressedObj[property].push(val);\n } else {\n if (options.isArray(property, newJpath, isLeaf)) {\n compressedObj[property] = [val];\n } else {\n compressedObj[property] = val;\n }\n }\n }\n }\n if (typeof text === \"string\") {\n if (text.length > 0) compressedObj[options.textNodeName] = text;\n } else if (text !== void 0) compressedObj[options.textNodeName] = text;\n return compressedObj;\n }\n function propName(obj) {\n const keys = Object.keys(obj);\n for (let i2 = 0; i2 < keys.length; i2++) {\n const key = keys[i2];\n if (key !== \":@\") return key;\n }\n }\n function assignAttributes(obj, attrMap, jpath, options) {\n if (attrMap) {\n const keys = Object.keys(attrMap);\n const len = keys.length;\n for (let i2 = 0; i2 < len; i2++) {\n const atrrName = keys[i2];\n if (options.isArray(atrrName, jpath + \".\" + atrrName, true, true)) {\n obj[atrrName] = [attrMap[atrrName]];\n } else {\n obj[atrrName] = attrMap[atrrName];\n }\n }\n }\n }\n function isLeafTag(obj, options) {\n const { textNodeName } = options;\n const propCount = Object.keys(obj).length;\n if (propCount === 0) {\n return true;\n }\n if (propCount === 1 && (obj[textNodeName] || typeof obj[textNodeName] === \"boolean\" || obj[textNodeName] === 0)) {\n return true;\n }\n return false;\n }\n node2json.prettify = prettify;\n return node2json;\n}\nvar XMLParser_1;\nvar hasRequiredXMLParser;\nfunction requireXMLParser() {\n if (hasRequiredXMLParser) return XMLParser_1;\n hasRequiredXMLParser = 1;\n const { buildOptions } = requireOptionsBuilder();\n const OrderedObjParser = requireOrderedObjParser();\n const { prettify } = requireNode2json();\n const validator2 = requireValidator();\n class XMLParser {\n constructor(options) {\n this.externalEntities = {};\n this.options = buildOptions(options);\n }\n /**\n * Parse XML dats to JS object \n * @param {string|Buffer} xmlData \n * @param {boolean|Object} validationOption \n */\n parse(xmlData, validationOption) {\n if (typeof xmlData === \"string\") ;\n else if (xmlData.toString) {\n xmlData = xmlData.toString();\n } else {\n throw new Error(\"XML data is accepted in String or Bytes[] form.\");\n }\n if (validationOption) {\n if (validationOption === true) validationOption = {};\n const result = validator2.validate(xmlData, validationOption);\n if (result !== true) {\n throw Error(`${result.err.msg}:${result.err.line}:${result.err.col}`);\n }\n }\n const orderedObjParser = new OrderedObjParser(this.options);\n orderedObjParser.addExternalEntities(this.externalEntities);\n const orderedResult = orderedObjParser.parseXml(xmlData);\n if (this.options.preserveOrder || orderedResult === void 0) return orderedResult;\n else return prettify(orderedResult, this.options);\n }\n /**\n * Add Entity which is not by default supported by this library\n * @param {string} key \n * @param {string} value \n */\n addEntity(key, value) {\n if (value.indexOf(\"&\") !== -1) {\n throw new Error(\"Entity value can't have '&'\");\n } else if (key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1) {\n throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for '
'\");\n } else if (value === \"&\") {\n throw new Error(\"An entity with value '&' is not permitted\");\n } else {\n this.externalEntities[key] = value;\n }\n }\n }\n XMLParser_1 = XMLParser;\n return XMLParser_1;\n}\nvar orderedJs2Xml;\nvar hasRequiredOrderedJs2Xml;\nfunction requireOrderedJs2Xml() {\n if (hasRequiredOrderedJs2Xml) return orderedJs2Xml;\n hasRequiredOrderedJs2Xml = 1;\n const EOL = \"\\n\";\n function toXml(jArray, options) {\n let indentation = \"\";\n if (options.format && options.indentBy.length > 0) {\n indentation = EOL;\n }\n return arrToStr(jArray, options, \"\", indentation);\n }\n function arrToStr(arr, options, jPath, indentation) {\n let xmlStr = \"\";\n let isPreviousElementTag = false;\n for (let i2 = 0; i2 < arr.length; i2++) {\n const tagObj = arr[i2];\n const tagName = propName(tagObj);\n if (tagName === void 0) continue;\n let newJPath = \"\";\n if (jPath.length === 0) newJPath = tagName;\n else newJPath = `${jPath}.${tagName}`;\n if (tagName === options.textNodeName) {\n let tagText = tagObj[tagName];\n if (!isStopNode(newJPath, options)) {\n tagText = options.tagValueProcessor(tagName, tagText);\n tagText = replaceEntitiesValue(tagText, options);\n }\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += tagText;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.cdataPropName) {\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += `<![CDATA[${tagObj[tagName][0][options.textNodeName]}]]>`;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.commentPropName) {\n xmlStr += indentation + `<!--${tagObj[tagName][0][options.textNodeName]}-->`;\n isPreviousElementTag = true;\n continue;\n } else if (tagName[0] === \"?\") {\n const attStr2 = attr_to_str(tagObj[\":@\"], options);\n const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\";\n xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr2}?>`;\n isPreviousElementTag = true;\n continue;\n }\n let newIdentation = indentation;\n if (newIdentation !== \"\") {\n newIdentation += options.indentBy;\n }\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tagStart = indentation + `<${tagName}${attStr}`;\n const tagValue = arrToStr(tagObj[tagName], options, newJPath, newIdentation);\n if (options.unpairedTags.indexOf(tagName) !== -1) {\n if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n else xmlStr += tagStart + \"/>\";\n } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n xmlStr += tagStart + \"/>\";\n } else if (tagValue && tagValue.endsWith(\">\")) {\n xmlStr += tagStart + `>${tagValue}${indentation}</${tagName}>`;\n } else {\n xmlStr += tagStart + \">\";\n if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"</\"))) {\n xmlStr += indentation + options.indentBy + tagValue + indentation;\n } else {\n xmlStr += tagValue;\n }\n xmlStr += `</${tagName}>`;\n }\n isPreviousElementTag = true;\n }\n return xmlStr;\n }\n function propName(obj) {\n const keys = Object.keys(obj);\n for (let i2 = 0; i2 < keys.length; i2++) {\n const key = keys[i2];\n if (!obj.hasOwnProperty(key)) continue;\n if (key !== \":@\") return key;\n }\n }\n function attr_to_str(attrMap, options) {\n let attrStr = \"\";\n if (attrMap && !options.ignoreAttributes) {\n for (let attr in attrMap) {\n if (!attrMap.hasOwnProperty(attr)) continue;\n let attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n attrVal = replaceEntitiesValue(attrVal, options);\n if (attrVal === true && options.suppressBooleanAttributes) {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n } else {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n }\n }\n }\n return attrStr;\n }\n function isStopNode(jPath, options) {\n jPath = jPath.substr(0, jPath.length - options.textNodeName.length - 1);\n let tagName = jPath.substr(jPath.lastIndexOf(\".\") + 1);\n for (let index in options.stopNodes) {\n if (options.stopNodes[index] === jPath || options.stopNodes[index] === \"*.\" + tagName) return true;\n }\n return false;\n }\n function replaceEntitiesValue(textValue, options) {\n if (textValue && textValue.length > 0 && options.processEntities) {\n for (let i2 = 0; i2 < options.entities.length; i2++) {\n const entity = options.entities[i2];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n }\n orderedJs2Xml = toXml;\n return orderedJs2Xml;\n}\nvar json2xml;\nvar hasRequiredJson2xml;\nfunction requireJson2xml() {\n if (hasRequiredJson2xml) return json2xml;\n hasRequiredJson2xml = 1;\n const buildFromOrderedJs = requireOrderedJs2Xml();\n const getIgnoreAttributesFn = requireIgnoreAttributes();\n const defaultOptions = {\n attributeNamePrefix: \"@_\",\n attributesGroupName: false,\n textNodeName: \"#text\",\n ignoreAttributes: true,\n cdataPropName: false,\n format: false,\n indentBy: \" \",\n suppressEmptyNode: false,\n suppressUnpairedNode: true,\n suppressBooleanAttributes: true,\n tagValueProcessor: function(key, a2) {\n return a2;\n },\n attributeValueProcessor: function(attrName, a2) {\n return a2;\n },\n preserveOrder: false,\n commentPropName: false,\n unpairedTags: [],\n entities: [\n { regex: new RegExp(\"&\", \"g\"), val: \"&\" },\n //it must be on top\n { regex: new RegExp(\">\", \"g\"), val: \">\" },\n { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n { regex: new RegExp(\"'\", \"g\"), val: \"'\" },\n { regex: new RegExp('\"', \"g\"), val: \""\" }\n ],\n processEntities: true,\n stopNodes: [],\n // transformTagName: false,\n // transformAttributeName: false,\n oneListGroup: false\n };\n function Builder(options) {\n this.options = Object.assign({}, defaultOptions, options);\n if (this.options.ignoreAttributes === true || this.options.attributesGroupName) {\n this.isAttribute = function() {\n return false;\n };\n } else {\n this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes);\n this.attrPrefixLen = this.options.attributeNamePrefix.length;\n this.isAttribute = isAttribute;\n }\n this.processTextOrObjNode = processTextOrObjNode;\n if (this.options.format) {\n this.indentate = indentate;\n this.tagEndChar = \">\\n\";\n this.newLine = \"\\n\";\n } else {\n this.indentate = function() {\n return \"\";\n };\n this.tagEndChar = \">\";\n this.newLine = \"\";\n }\n }\n Builder.prototype.build = function(jObj) {\n if (this.options.preserveOrder) {\n return buildFromOrderedJs(jObj, this.options);\n } else {\n if (Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1) {\n jObj = {\n [this.options.arrayNodeName]: jObj\n };\n }\n return this.j2x(jObj, 0, []).val;\n }\n };\n Builder.prototype.j2x = function(jObj, level, ajPath) {\n let attrStr = \"\";\n let val = \"\";\n const jPath = ajPath.join(\".\");\n for (let key in jObj) {\n if (!Object.prototype.hasOwnProperty.call(jObj, key)) continue;\n if (typeof jObj[key] === \"undefined\") {\n if (this.isAttribute(key)) {\n val += \"\";\n }\n } else if (jObj[key] === null) {\n if (this.isAttribute(key)) {\n val += \"\";\n } else if (key[0] === \"?\") {\n val += this.indentate(level) + \"<\" + key + \"?\" + this.tagEndChar;\n } else {\n val += this.indentate(level) + \"<\" + key + \"/\" + this.tagEndChar;\n }\n } else if (jObj[key] instanceof Date) {\n val += this.buildTextValNode(jObj[key], key, \"\", level);\n } else if (typeof jObj[key] !== \"object\") {\n const attr = this.isAttribute(key);\n if (attr && !this.ignoreAttributesFn(attr, jPath)) {\n attrStr += this.buildAttrPairStr(attr, \"\" + jObj[key]);\n } else if (!attr) {\n if (key === this.options.textNodeName) {\n let newval = this.options.tagValueProcessor(key, \"\" + jObj[key]);\n val += this.replaceEntitiesValue(newval);\n } else {\n val += this.buildTextValNode(jObj[key], key, \"\", level);\n }\n }\n } else if (Array.isArray(jObj[key])) {\n const arrLen = jObj[key].length;\n let listTagVal = \"\";\n let listTagAttr = \"\";\n for (let j2 = 0; j2 < arrLen; j2++) {\n const item = jObj[key][j2];\n if (typeof item === \"undefined\") ;\n else if (item === null) {\n if (key[0] === \"?\") val += this.indentate(level) + \"<\" + key + \"?\" + this.tagEndChar;\n else val += this.indentate(level) + \"<\" + key + \"/\" + this.tagEndChar;\n } else if (typeof item === \"object\") {\n if (this.options.oneListGroup) {\n const result = this.j2x(item, level + 1, ajPath.concat(key));\n listTagVal += result.val;\n if (this.options.attributesGroupName && item.hasOwnProperty(this.options.attributesGroupName)) {\n listTagAttr += result.attrStr;\n }\n } else {\n listTagVal += this.processTextOrObjNode(item, key, level, ajPath);\n }\n } else {\n if (this.options.oneListGroup) {\n let textValue = this.options.tagValueProcessor(key, item);\n textValue = this.replaceEntitiesValue(textValue);\n listTagVal += textValue;\n } else {\n listTagVal += this.buildTextValNode(item, key, \"\", level);\n }\n }\n }\n if (this.options.oneListGroup) {\n listTagVal = this.buildObjectNode(listTagVal, key, listTagAttr, level);\n }\n val += listTagVal;\n } else {\n if (this.options.attributesGroupName && key === this.options.attributesGroupName) {\n const Ks = Object.keys(jObj[key]);\n const L = Ks.length;\n for (let j2 = 0; j2 < L; j2++) {\n attrStr += this.buildAttrPairStr(Ks[j2], \"\" + jObj[key][Ks[j2]]);\n }\n } else {\n val += this.processTextOrObjNode(jObj[key], key, level, ajPath);\n }\n }\n }\n return { attrStr, val };\n };\n Builder.prototype.buildAttrPairStr = function(attrName, val) {\n val = this.options.attributeValueProcessor(attrName, \"\" + val);\n val = this.replaceEntitiesValue(val);\n if (this.options.suppressBooleanAttributes && val === \"true\") {\n return \" \" + attrName;\n } else return \" \" + attrName + '=\"' + val + '\"';\n };\n function processTextOrObjNode(object, key, level, ajPath) {\n const result = this.j2x(object, level + 1, ajPath.concat(key));\n if (object[this.options.textNodeName] !== void 0 && Object.keys(object).length === 1) {\n return this.buildTextValNode(object[this.options.textNodeName], key, result.attrStr, level);\n } else {\n return this.buildObjectNode(result.val, key, result.attrStr, level);\n }\n }\n Builder.prototype.buildObjectNode = function(val, key, attrStr, level) {\n if (val === \"\") {\n if (key[0] === \"?\") return this.indentate(level) + \"<\" + key + attrStr + \"?\" + this.tagEndChar;\n else {\n return this.indentate(level) + \"<\" + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }\n } else {\n let tagEndExp = \"</\" + key + this.tagEndChar;\n let piClosingChar = \"\";\n if (key[0] === \"?\") {\n piClosingChar = \"?\";\n tagEndExp = \"\";\n }\n if ((attrStr || attrStr === \"\") && val.indexOf(\"<\") === -1) {\n return this.indentate(level) + \"<\" + key + attrStr + piClosingChar + \">\" + val + tagEndExp;\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n return this.indentate(level) + `<!--${val}-->` + this.newLine;\n } else {\n return this.indentate(level) + \"<\" + key + attrStr + piClosingChar + this.tagEndChar + val + this.indentate(level) + tagEndExp;\n }\n }\n };\n Builder.prototype.closeTag = function(key) {\n let closeTag = \"\";\n if (this.options.unpairedTags.indexOf(key) !== -1) {\n if (!this.options.suppressUnpairedNode) closeTag = \"/\";\n } else if (this.options.suppressEmptyNode) {\n closeTag = \"/\";\n } else {\n closeTag = `></${key}`;\n }\n return closeTag;\n };\n Builder.prototype.buildTextValNode = function(val, key, attrStr, level) {\n if (this.options.cdataPropName !== false && key === this.options.cdataPropName) {\n return this.indentate(level) + `<![CDATA[${val}]]>` + this.newLine;\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n return this.indentate(level) + `<!--${val}-->` + this.newLine;\n } else if (key[0] === \"?\") {\n return this.indentate(level) + \"<\" + key + attrStr + \"?\" + this.tagEndChar;\n } else {\n let textValue = this.options.tagValueProcessor(key, val);\n textValue = this.replaceEntitiesValue(textValue);\n if (textValue === \"\") {\n return this.indentate(level) + \"<\" + key + attrStr + this.closeTag(key) + this.tagEndChar;\n } else {\n return this.indentate(level) + \"<\" + key + attrStr + \">\" + textValue + \"</\" + key + this.tagEndChar;\n }\n }\n };\n Builder.prototype.replaceEntitiesValue = function(textValue) {\n if (textValue && textValue.length > 0 && this.options.processEntities) {\n for (let i2 = 0; i2 < this.options.entities.length; i2++) {\n const entity = this.options.entities[i2];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n };\n function indentate(level) {\n return this.options.indentBy.repeat(level);\n }\n function isAttribute(name) {\n if (name.startsWith(this.options.attributeNamePrefix) && name !== this.options.textNodeName) {\n return name.substr(this.attrPrefixLen);\n } else {\n return false;\n }\n }\n json2xml = Builder;\n return json2xml;\n}\nvar fxp;\nvar hasRequiredFxp;\nfunction requireFxp() {\n if (hasRequiredFxp) return fxp;\n hasRequiredFxp = 1;\n const validator2 = requireValidator();\n const XMLParser = requireXMLParser();\n const XMLBuilder = requireJson2xml();\n fxp = {\n XMLParser,\n XMLValidator: validator2,\n XMLBuilder\n };\n return fxp;\n}\nvar fxpExports = requireFxp();\nfunction isSvg(string) {\n if (typeof string !== \"string\") {\n throw new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n }\n string = string.trim();\n if (string.length === 0) {\n return false;\n }\n if (fxpExports.XMLValidator.validate(string) !== true) {\n return false;\n }\n let jsonObject;\n const parser = new fxpExports.XMLParser();\n try {\n jsonObject = parser.parse(string);\n } catch {\n return false;\n }\n if (!jsonObject) {\n return false;\n }\n if (!Object.keys(jsonObject).some((x) => x.toLowerCase() === \"svg\")) {\n return false;\n }\n return true;\n}\nclass View {\n _view;\n constructor(view) {\n isValidView(view);\n this._view = view;\n }\n get id() {\n return this._view.id;\n }\n get name() {\n return this._view.name;\n }\n get caption() {\n return this._view.caption;\n }\n get emptyTitle() {\n return this._view.emptyTitle;\n }\n get emptyCaption() {\n return this._view.emptyCaption;\n }\n get getContents() {\n return this._view.getContents;\n }\n get icon() {\n return this._view.icon;\n }\n set icon(icon) {\n this._view.icon = icon;\n }\n get order() {\n return this._view.order;\n }\n set order(order) {\n this._view.order = order;\n }\n get params() {\n return this._view.params;\n }\n set params(params) {\n this._view.params = params;\n }\n get columns() {\n return this._view.columns;\n }\n get emptyView() {\n return this._view.emptyView;\n }\n get parent() {\n return this._view.parent;\n }\n get sticky() {\n return this._view.sticky;\n }\n get expanded() {\n return this._view.expanded;\n }\n set expanded(expanded) {\n this._view.expanded = expanded;\n }\n get defaultSortKey() {\n return this._view.defaultSortKey;\n }\n get loadChildViews() {\n return this._view.loadChildViews;\n }\n}\nconst isValidView = function(view) {\n if (!view.id || typeof view.id !== \"string\") {\n throw new Error(\"View id is required and must be a string\");\n }\n if (!view.name || typeof view.name !== \"string\") {\n throw new Error(\"View name is required and must be a string\");\n }\n if (\"caption\" in view && typeof view.caption !== \"string\") {\n throw new Error(\"View caption must be a string\");\n }\n if (!view.getContents || typeof view.getContents !== \"function\") {\n throw new Error(\"View getContents is required and must be a function\");\n }\n if (!view.icon || typeof view.icon !== \"string\" || !isSvg(view.icon)) {\n throw new Error(\"View icon is required and must be a valid svg string\");\n }\n if (\"order\" in view && typeof view.order !== \"number\") {\n throw new Error(\"View order must be a number\");\n }\n if (view.columns) {\n view.columns.forEach((column) => {\n if (!(column instanceof Column)) {\n throw new Error(\"View columns must be an array of Column. Invalid column found\");\n }\n });\n }\n if (view.emptyView && typeof view.emptyView !== \"function\") {\n throw new Error(\"View emptyView must be a function\");\n }\n if (view.parent && typeof view.parent !== \"string\") {\n throw new Error(\"View parent must be a string\");\n }\n if (\"sticky\" in view && typeof view.sticky !== \"boolean\") {\n throw new Error(\"View sticky must be a boolean\");\n }\n if (\"expanded\" in view && typeof view.expanded !== \"boolean\") {\n throw new Error(\"View expanded must be a boolean\");\n }\n if (view.defaultSortKey && typeof view.defaultSortKey !== \"string\") {\n throw new Error(\"View defaultSortKey must be a string\");\n }\n if (view.loadChildViews && typeof view.loadChildViews !== \"function\") {\n throw new Error(\"View loadChildViews must be a function\");\n }\n return true;\n};\nvar debug_1;\nvar hasRequiredDebug;\nfunction requireDebug() {\n if (hasRequiredDebug) return debug_1;\n hasRequiredDebug = 1;\n const debug = typeof process === \"object\" && process.env && process.env.NODE_DEBUG && /\\bsemver\\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error(\"SEMVER\", ...args) : () => {\n };\n debug_1 = debug;\n return debug_1;\n}\nvar constants;\nvar hasRequiredConstants;\nfunction requireConstants() {\n if (hasRequiredConstants) return constants;\n hasRequiredConstants = 1;\n const SEMVER_SPEC_VERSION = \"2.0.0\";\n const MAX_LENGTH = 256;\n const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */\n 9007199254740991;\n const MAX_SAFE_COMPONENT_LENGTH = 16;\n const MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6;\n const RELEASE_TYPES = [\n \"major\",\n \"premajor\",\n \"minor\",\n \"preminor\",\n \"patch\",\n \"prepatch\",\n \"prerelease\"\n ];\n constants = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 1,\n FLAG_LOOSE: 2\n };\n return constants;\n}\nvar re = { exports: {} };\nvar hasRequiredRe;\nfunction requireRe() {\n if (hasRequiredRe) return re.exports;\n hasRequiredRe = 1;\n (function(module, exports) {\n const {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH\n } = requireConstants();\n const debug = requireDebug();\n exports = module.exports = {};\n const re2 = exports.re = [];\n const safeRe = exports.safeRe = [];\n const src = exports.src = [];\n const t2 = exports.t = {};\n let R = 0;\n const LETTERDASHNUMBER = \"[a-zA-Z0-9-]\";\n const safeRegexReplacements = [\n [\"\\\\s\", 1],\n [\"\\\\d\", MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH]\n ];\n const makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value.split(`${token}*`).join(`${token}{0,${max}}`).split(`${token}+`).join(`${token}{1,${max}}`);\n }\n return value;\n };\n const createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value);\n const index = R++;\n debug(name, index, value);\n t2[name] = index;\n src[index] = value;\n re2[index] = new RegExp(value, isGlobal ? \"g\" : void 0);\n safeRe[index] = new RegExp(safe, isGlobal ? \"g\" : void 0);\n };\n createToken(\"NUMERICIDENTIFIER\", \"0|[1-9]\\\\d*\");\n createToken(\"NUMERICIDENTIFIERLOOSE\", \"\\\\d+\");\n createToken(\"NONNUMERICIDENTIFIER\", `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`);\n createToken(\"MAINVERSION\", `(${src[t2.NUMERICIDENTIFIER]})\\\\.(${src[t2.NUMERICIDENTIFIER]})\\\\.(${src[t2.NUMERICIDENTIFIER]})`);\n createToken(\"MAINVERSIONLOOSE\", `(${src[t2.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t2.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t2.NUMERICIDENTIFIERLOOSE]})`);\n createToken(\"PRERELEASEIDENTIFIER\", `(?:${src[t2.NUMERICIDENTIFIER]}|${src[t2.NONNUMERICIDENTIFIER]})`);\n createToken(\"PRERELEASEIDENTIFIERLOOSE\", `(?:${src[t2.NUMERICIDENTIFIERLOOSE]}|${src[t2.NONNUMERICIDENTIFIER]})`);\n createToken(\"PRERELEASE\", `(?:-(${src[t2.PRERELEASEIDENTIFIER]}(?:\\\\.${src[t2.PRERELEASEIDENTIFIER]})*))`);\n createToken(\"PRERELEASELOOSE\", `(?:-?(${src[t2.PRERELEASEIDENTIFIERLOOSE]}(?:\\\\.${src[t2.PRERELEASEIDENTIFIERLOOSE]})*))`);\n createToken(\"BUILDIDENTIFIER\", `${LETTERDASHNUMBER}+`);\n createToken(\"BUILD\", `(?:\\\\+(${src[t2.BUILDIDENTIFIER]}(?:\\\\.${src[t2.BUILDIDENTIFIER]})*))`);\n createToken(\"FULLPLAIN\", `v?${src[t2.MAINVERSION]}${src[t2.PRERELEASE]}?${src[t2.BUILD]}?`);\n createToken(\"FULL\", `^${src[t2.FULLPLAIN]}$`);\n createToken(\"LOOSEPLAIN\", `[v=\\\\s]*${src[t2.MAINVERSIONLOOSE]}${src[t2.PRERELEASELOOSE]}?${src[t2.BUILD]}?`);\n createToken(\"LOOSE\", `^${src[t2.LOOSEPLAIN]}$`);\n createToken(\"GTLT\", \"((?:<|>)?=?)\");\n createToken(\"XRANGEIDENTIFIERLOOSE\", `${src[t2.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`);\n createToken(\"XRANGEIDENTIFIER\", `${src[t2.NUMERICIDENTIFIER]}|x|X|\\\\*`);\n createToken(\"XRANGEPLAIN\", `[v=\\\\s]*(${src[t2.XRANGEIDENTIFIER]})(?:\\\\.(${src[t2.XRANGEIDENTIFIER]})(?:\\\\.(${src[t2.XRANGEIDENTIFIER]})(?:${src[t2.PRERELEASE]})?${src[t2.BUILD]}?)?)?`);\n createToken(\"XRANGEPLAINLOOSE\", `[v=\\\\s]*(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:${src[t2.PRERELEASELOOSE]})?${src[t2.BUILD]}?)?)?`);\n createToken(\"XRANGE\", `^${src[t2.GTLT]}\\\\s*${src[t2.XRANGEPLAIN]}$`);\n createToken(\"XRANGELOOSE\", `^${src[t2.GTLT]}\\\\s*${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"COERCEPLAIN\", `${\"(^|[^\\\\d])(\\\\d{1,\"}${MAX_SAFE_COMPONENT_LENGTH}})(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`);\n createToken(\"COERCE\", `${src[t2.COERCEPLAIN]}(?:$|[^\\\\d])`);\n createToken(\"COERCEFULL\", src[t2.COERCEPLAIN] + `(?:${src[t2.PRERELEASE]})?(?:${src[t2.BUILD]})?(?:$|[^\\\\d])`);\n createToken(\"COERCERTL\", src[t2.COERCE], true);\n createToken(\"COERCERTLFULL\", src[t2.COERCEFULL], true);\n createToken(\"LONETILDE\", \"(?:~>?)\");\n createToken(\"TILDETRIM\", `(\\\\s*)${src[t2.LONETILDE]}\\\\s+`, true);\n exports.tildeTrimReplace = \"$1~\";\n createToken(\"TILDE\", `^${src[t2.LONETILDE]}${src[t2.XRANGEPLAIN]}$`);\n createToken(\"TILDELOOSE\", `^${src[t2.LONETILDE]}${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"LONECARET\", \"(?:\\\\^)\");\n createToken(\"CARETTRIM\", `(\\\\s*)${src[t2.LONECARET]}\\\\s+`, true);\n exports.caretTrimReplace = \"$1^\";\n createToken(\"CARET\", `^${src[t2.LONECARET]}${src[t2.XRANGEPLAIN]}$`);\n createToken(\"CARETLOOSE\", `^${src[t2.LONECARET]}${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"COMPARATORLOOSE\", `^${src[t2.GTLT]}\\\\s*(${src[t2.LOOSEPLAIN]})$|^$`);\n createToken(\"COMPARATOR\", `^${src[t2.GTLT]}\\\\s*(${src[t2.FULLPLAIN]})$|^$`);\n createToken(\"COMPARATORTRIM\", `(\\\\s*)${src[t2.GTLT]}\\\\s*(${src[t2.LOOSEPLAIN]}|${src[t2.XRANGEPLAIN]})`, true);\n exports.comparatorTrimReplace = \"$1$2$3\";\n createToken(\"HYPHENRANGE\", `^\\\\s*(${src[t2.XRANGEPLAIN]})\\\\s+-\\\\s+(${src[t2.XRANGEPLAIN]})\\\\s*$`);\n createToken(\"HYPHENRANGELOOSE\", `^\\\\s*(${src[t2.XRANGEPLAINLOOSE]})\\\\s+-\\\\s+(${src[t2.XRANGEPLAINLOOSE]})\\\\s*$`);\n createToken(\"STAR\", \"(<|>)?=?\\\\s*\\\\*\");\n createToken(\"GTE0\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$\");\n createToken(\"GTE0PRE\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$\");\n })(re, re.exports);\n return re.exports;\n}\nvar parseOptions_1;\nvar hasRequiredParseOptions;\nfunction requireParseOptions() {\n if (hasRequiredParseOptions) return parseOptions_1;\n hasRequiredParseOptions = 1;\n const looseOption = Object.freeze({ loose: true });\n const emptyOpts = Object.freeze({});\n const parseOptions = (options) => {\n if (!options) {\n return emptyOpts;\n }\n if (typeof options !== \"object\") {\n return looseOption;\n }\n return options;\n };\n parseOptions_1 = parseOptions;\n return parseOptions_1;\n}\nvar identifiers;\nvar hasRequiredIdentifiers;\nfunction requireIdentifiers() {\n if (hasRequiredIdentifiers) return identifiers;\n hasRequiredIdentifiers = 1;\n const numeric = /^[0-9]+$/;\n const compareIdentifiers = (a2, b2) => {\n const anum = numeric.test(a2);\n const bnum = numeric.test(b2);\n if (anum && bnum) {\n a2 = +a2;\n b2 = +b2;\n }\n return a2 === b2 ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a2 < b2 ? -1 : 1;\n };\n const rcompareIdentifiers = (a2, b2) => compareIdentifiers(b2, a2);\n identifiers = {\n compareIdentifiers,\n rcompareIdentifiers\n };\n return identifiers;\n}\nvar semver;\nvar hasRequiredSemver;\nfunction requireSemver() {\n if (hasRequiredSemver) return semver;\n hasRequiredSemver = 1;\n const debug = requireDebug();\n const { MAX_LENGTH, MAX_SAFE_INTEGER } = requireConstants();\n const { safeRe: re2, t: t2 } = requireRe();\n const parseOptions = requireParseOptions();\n const { compareIdentifiers } = requireIdentifiers();\n class SemVer {\n constructor(version, options) {\n options = parseOptions(options);\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose && version.includePrerelease === !!options.includePrerelease) {\n return version;\n } else {\n version = version.version;\n }\n } else if (typeof version !== \"string\") {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`);\n }\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n );\n }\n debug(\"SemVer\", version, options);\n this.options = options;\n this.loose = !!options.loose;\n this.includePrerelease = !!options.includePrerelease;\n const m2 = version.trim().match(options.loose ? re2[t2.LOOSE] : re2[t2.FULL]);\n if (!m2) {\n throw new TypeError(`Invalid Version: ${version}`);\n }\n this.raw = version;\n this.major = +m2[1];\n this.minor = +m2[2];\n this.patch = +m2[3];\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError(\"Invalid major version\");\n }\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError(\"Invalid minor version\");\n }\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError(\"Invalid patch version\");\n }\n if (!m2[4]) {\n this.prerelease = [];\n } else {\n this.prerelease = m2[4].split(\".\").map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id;\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num;\n }\n }\n return id;\n });\n }\n this.build = m2[5] ? m2[5].split(\".\") : [];\n this.format();\n }\n format() {\n this.version = `${this.major}.${this.minor}.${this.patch}`;\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join(\".\")}`;\n }\n return this.version;\n }\n toString() {\n return this.version;\n }\n compare(other) {\n debug(\"SemVer.compare\", this.version, this.options, other);\n if (!(other instanceof SemVer)) {\n if (typeof other === \"string\" && other === this.version) {\n return 0;\n }\n other = new SemVer(other, this.options);\n }\n if (other.version === this.version) {\n return 0;\n }\n return this.compareMain(other) || this.comparePre(other);\n }\n compareMain(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch);\n }\n comparePre(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n if (this.prerelease.length && !other.prerelease.length) {\n return -1;\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1;\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0;\n }\n let i2 = 0;\n do {\n const a2 = this.prerelease[i2];\n const b2 = other.prerelease[i2];\n debug(\"prerelease compare\", i2, a2, b2);\n if (a2 === void 0 && b2 === void 0) {\n return 0;\n } else if (b2 === void 0) {\n return 1;\n } else if (a2 === void 0) {\n return -1;\n } else if (a2 === b2) {\n continue;\n } else {\n return compareIdentifiers(a2, b2);\n }\n } while (++i2);\n }\n compareBuild(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n let i2 = 0;\n do {\n const a2 = this.build[i2];\n const b2 = other.build[i2];\n debug(\"build compare\", i2, a2, b2);\n if (a2 === void 0 && b2 === void 0) {\n return 0;\n } else if (b2 === void 0) {\n return 1;\n } else if (a2 === void 0) {\n return -1;\n } else if (a2 === b2) {\n continue;\n } else {\n return compareIdentifiers(a2, b2);\n }\n } while (++i2);\n }\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc(release, identifier, identifierBase) {\n switch (release) {\n case \"premajor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor = 0;\n this.major++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"preminor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"prepatch\":\n this.prerelease.length = 0;\n this.inc(\"patch\", identifier, identifierBase);\n this.inc(\"pre\", identifier, identifierBase);\n break;\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case \"prerelease\":\n if (this.prerelease.length === 0) {\n this.inc(\"patch\", identifier, identifierBase);\n }\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"major\":\n if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {\n this.major++;\n }\n this.minor = 0;\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"minor\":\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++;\n }\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"patch\":\n if (this.prerelease.length === 0) {\n this.patch++;\n }\n this.prerelease = [];\n break;\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case \"pre\": {\n const base = Number(identifierBase) ? 1 : 0;\n if (!identifier && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier is empty\");\n }\n if (this.prerelease.length === 0) {\n this.prerelease = [base];\n } else {\n let i2 = this.prerelease.length;\n while (--i2 >= 0) {\n if (typeof this.prerelease[i2] === \"number\") {\n this.prerelease[i2]++;\n i2 = -2;\n }\n }\n if (i2 === -1) {\n if (identifier === this.prerelease.join(\".\") && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier already exists\");\n }\n this.prerelease.push(base);\n }\n }\n if (identifier) {\n let prerelease = [identifier, base];\n if (identifierBase === false) {\n prerelease = [identifier];\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease;\n }\n } else {\n this.prerelease = prerelease;\n }\n }\n break;\n }\n default:\n throw new Error(`invalid increment argument: ${release}`);\n }\n this.raw = this.format();\n if (this.build.length) {\n this.raw += `+${this.build.join(\".\")}`;\n }\n return this;\n }\n }\n semver = SemVer;\n return semver;\n}\nvar parse_1;\nvar hasRequiredParse;\nfunction requireParse() {\n if (hasRequiredParse) return parse_1;\n hasRequiredParse = 1;\n const SemVer = requireSemver();\n const parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version;\n }\n try {\n return new SemVer(version, options);\n } catch (er) {\n if (!throwErrors) {\n return null;\n }\n throw er;\n }\n };\n parse_1 = parse;\n return parse_1;\n}\nvar valid_1;\nvar hasRequiredValid;\nfunction requireValid() {\n if (hasRequiredValid) return valid_1;\n hasRequiredValid = 1;\n const parse = requireParse();\n const valid2 = (version, options) => {\n const v = parse(version, options);\n return v ? v.version : null;\n };\n valid_1 = valid2;\n return valid_1;\n}\nvar validExports = requireValid();\nconst valid = /* @__PURE__ */ getDefaultExportFromCjs(validExports);\nvar major_1;\nvar hasRequiredMajor;\nfunction requireMajor() {\n if (hasRequiredMajor) return major_1;\n hasRequiredMajor = 1;\n const SemVer = requireSemver();\n const major2 = (a2, loose) => new SemVer(a2, loose).major;\n major_1 = major2;\n return major_1;\n}\nvar majorExports = requireMajor();\nconst major = /* @__PURE__ */ getDefaultExportFromCjs(majorExports);\nclass ProxyBus {\n bus;\n constructor(bus2) {\n if (typeof bus2.getVersion !== \"function\" || !valid(bus2.getVersion())) {\n console.warn(\"Proxying an event bus with an unknown or invalid version\");\n } else if (major(bus2.getVersion()) !== major(this.getVersion())) {\n console.warn(\n \"Proxying an event bus of version \" + bus2.getVersion() + \" with \" + this.getVersion()\n );\n }\n this.bus = bus2;\n }\n getVersion() {\n return \"3.3.1\";\n }\n subscribe(name, handler) {\n this.bus.subscribe(name, handler);\n }\n unsubscribe(name, handler) {\n this.bus.unsubscribe(name, handler);\n }\n emit(name, event) {\n this.bus.emit(name, event);\n }\n}\nclass SimpleBus {\n handlers = /* @__PURE__ */ new Map();\n getVersion() {\n return \"3.3.1\";\n }\n subscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).concat(\n handler\n )\n );\n }\n unsubscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).filter((h2) => h2 !== handler)\n );\n }\n emit(name, event) {\n (this.handlers.get(name) || []).forEach((h2) => {\n try {\n h2(event);\n } catch (e2) {\n console.error(\"could not invoke event listener\", e2);\n }\n });\n }\n}\nlet bus = null;\nfunction getBus() {\n if (bus !== null) {\n return bus;\n }\n if (typeof window === \"undefined\") {\n return new Proxy({}, {\n get: () => {\n return () => console.error(\n \"Window not available, EventBus can not be established!\"\n );\n }\n });\n }\n if (window.OC?._eventBus && typeof window._nc_event_bus === \"undefined\") {\n console.warn(\n \"found old event bus instance at OC._eventBus. Update your version!\"\n );\n window._nc_event_bus = window.OC._eventBus;\n }\n if (typeof window?._nc_event_bus !== \"undefined\") {\n bus = new ProxyBus(window._nc_event_bus);\n } else {\n bus = window._nc_event_bus = new SimpleBus();\n }\n return bus;\n}\nfunction emit(name, event) {\n getBus().emit(name, event);\n}\n/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nclass FileListFilter extends TypedEventTarget {\n id;\n order;\n constructor(id, order = 100) {\n super();\n this.id = id;\n this.order = order;\n }\n filter(nodes) {\n throw new Error(\"Not implemented\");\n }\n updateChips(chips) {\n this.dispatchTypedEvent(\"update:chips\", new CustomEvent(\"update:chips\", { detail: chips }));\n }\n filterUpdated() {\n this.dispatchTypedEvent(\"update:filter\", new CustomEvent(\"update:filter\"));\n }\n}\nfunction registerFileListFilter(filter) {\n if (!window._nc_filelist_filters) {\n window._nc_filelist_filters = /* @__PURE__ */ new Map();\n }\n if (window._nc_filelist_filters.has(filter.id)) {\n throw new Error(`File list filter \"${filter.id}\" already registered`);\n }\n window._nc_filelist_filters.set(filter.id, filter);\n emit(\"files:filter:added\", filter);\n}\nfunction unregisterFileListFilter(filterId) {\n if (window._nc_filelist_filters && window._nc_filelist_filters.has(filterId)) {\n window._nc_filelist_filters.delete(filterId);\n emit(\"files:filter:removed\", filterId);\n }\n}\nfunction getFileListFilters() {\n if (!window._nc_filelist_filters) {\n return [];\n }\n return [...window._nc_filelist_filters.values()];\n}\nconst addNewFileMenuEntry = function(entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.registerEntry(entry);\n};\nconst removeNewFileMenuEntry = function(entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.unregisterEntry(entry);\n};\nconst getNewFileMenuEntries = function(context) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.getEntries(context).sort((a2, b2) => {\n if (a2.order !== void 0 && b2.order !== void 0 && a2.order !== b2.order) {\n return a2.order - b2.order;\n }\n return a2.displayName.localeCompare(b2.displayName, void 0, { numeric: true, sensitivity: \"base\" });\n });\n};\nexport {\n Column,\n DefaultType,\n q as File,\n FileAction,\n FileListAction,\n FileListFilter,\n F as FileType,\n FilesSortingMode,\n s as Folder,\n Header,\n InvalidFilenameError,\n InvalidFilenameErrorReason,\n Navigation,\n NewMenuEntryCategory,\n N as Node,\n t as NodeStatus,\n P as Permission,\n View,\n addNewFileMenuEntry,\n c as davGetClient,\n l as davGetDefaultPropfind,\n m as davGetFavoritesReport,\n n as davGetRecentSearch,\n a as davGetRemoteURL,\n g as davGetRootPath,\n p as davParsePermissions,\n b as davRemoteURL,\n r as davResultToNode,\n d as davRootPath,\n h as defaultDavNamespaces,\n f as defaultDavProperties,\n formatFileSize,\n k as getDavNameSpaces,\n j as getDavProperties,\n e as getFavoriteNodes,\n getFileActions,\n getFileListActions,\n getFileListFilters,\n getFileListHeaders,\n getNavigation,\n getNewFileMenuEntries,\n getUniqueName,\n isFilenameValid,\n orderBy,\n parseFileSize,\n i as registerDavProperty,\n registerFileAction,\n registerFileListAction,\n registerFileListFilter,\n registerFileListHeaders,\n removeNewFileMenuEntry,\n sortNodes,\n unregisterFileListFilter,\n validateFilename\n};\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { Permission } from '@nextcloud/files';\nimport { defineAsyncComponent } from 'vue';\nimport { FileAction } from '@nextcloud/files';\nimport { isPublicShare } from '@nextcloud/sharing/public';\nimport { spawnDialog } from '@nextcloud/dialogs';\nimport { t } from '@nextcloud/l10n';\nimport TagMultipleSvg from '@mdi/svg/svg/tag-multiple.svg?raw';\n/**\n * Spawn a dialog to add or remove tags from multiple nodes.\n * @param nodes Nodes to modify tags for\n */\nasync function execBatch(nodes) {\n const response = await new Promise((resolve) => {\n spawnDialog(defineAsyncComponent(() => import('../components/SystemTagPicker.vue')), {\n nodes,\n }, (status) => {\n resolve(status);\n });\n });\n return Array(nodes.length).fill(response);\n}\nexport const action = new FileAction({\n id: 'systemtags:bulk',\n displayName: () => t('systemtags', 'Manage tags'),\n iconSvgInline: () => TagMultipleSvg,\n // If the app is disabled, the action is not available anyway\n enabled(nodes) {\n if (isPublicShare()) {\n return false;\n }\n if (nodes.length === 0) {\n return false;\n }\n // Disabled for non dav resources\n if (nodes.some((node) => !node.isDavResource)) {\n return false;\n }\n // We need to have the update permission on all nodes\n return !nodes.some((node) => (node.permissions & Permission.UPDATE) === 0);\n },\n async exec(node) {\n return execBatch([node])[0];\n },\n execBatch,\n});\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getLoggerBuilder } from '@nextcloud/logger';\nexport default getLoggerBuilder()\n .setApp('files')\n .detectUser()\n .build();\n","import { NodeStatus } from '@nextcloud/files';\nimport { showError, showSuccess } from '@nextcloud/dialogs';\nimport { t } from '@nextcloud/l10n';\nimport Vue from 'vue';\nimport { getPinia } from '../store';\nimport { useActiveStore } from '../store/active';\nimport logger from '../logger';\n/**\n * Execute an action on the current active node\n *\n * @param action The action to execute\n */\nexport const executeAction = async (action) => {\n const activeStore = useActiveStore(getPinia());\n const currentDir = (window?.OCP?.Files?.Router?.query?.dir || '/');\n const currentNode = activeStore.activeNode;\n const currentView = activeStore.activeView;\n if (!currentNode || !currentView) {\n logger.error('No active node or view', { node: currentNode, view: currentView });\n return;\n }\n if (currentNode.status === NodeStatus.LOADING) {\n logger.debug('Node is already loading', { node: currentNode });\n return;\n }\n if (!action.enabled([currentNode], currentView)) {\n logger.debug('Action is not not available for the current context', { action, node: currentNode, view: currentView });\n return;\n }\n let displayName = action.id;\n try {\n displayName = action.displayName([currentNode], currentView);\n }\n catch (error) {\n logger.error('Error while getting action display name', { action, error });\n }\n try {\n // Set the loading marker\n Vue.set(currentNode, 'status', NodeStatus.LOADING);\n activeStore.setActiveAction(action);\n const success = await action.exec(currentNode, currentView, currentDir);\n // If the action returns null, we stay silent\n if (success === null || success === undefined) {\n return;\n }\n if (success) {\n showSuccess(t('files', '\"{displayName}\" action executed successfully', { displayName }));\n return;\n }\n showError(t('files', '\"{displayName}\" action failed', { displayName }));\n }\n catch (error) {\n logger.error('Error while executing action', { action, error });\n showError(t('files', '\"{displayName}\" action failed', { displayName }));\n }\n finally {\n // Reset the loading marker\n Vue.set(currentNode, 'status', undefined);\n activeStore.clearActiveAction();\n }\n};\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { defineStore } from 'pinia';\nimport { getNavigation } from '@nextcloud/files';\nimport { subscribe } from '@nextcloud/event-bus';\nimport logger from '../logger.ts';\nexport const useActiveStore = function (...args) {\n const store = defineStore('active', {\n state: () => ({\n _initialized: false,\n activeNode: null,\n activeView: null,\n activeAction: null,\n }),\n actions: {\n setActiveNode(node) {\n if (!node) {\n throw new Error('Use clearActiveNode to clear the active node');\n }\n logger.debug('Setting active node', { node });\n this.activeNode = node;\n },\n clearActiveNode() {\n this.activeNode = null;\n },\n onDeletedNode(node) {\n if (this.activeNode && this.activeNode.source === node.source) {\n this.clearActiveNode();\n }\n },\n setActiveAction(action) {\n this.activeAction = action;\n },\n clearActiveAction() {\n this.activeAction = null;\n },\n onChangedView(view = null) {\n logger.debug('Setting active view', { view });\n this.activeView = view;\n this.clearActiveNode();\n },\n },\n });\n const activeStore = store(...args);\n const navigation = getNavigation();\n // Make sure we only register the listeners once\n if (!activeStore._initialized) {\n subscribe('files:node:deleted', activeStore.onDeletedNode);\n activeStore._initialized = true;\n activeStore.onChangedView(navigation.active);\n // Or you can react to changes of the current active view\n navigation.addEventListener('updateActive', (event) => {\n activeStore.onChangedView(event.detail);\n });\n }\n return activeStore;\n};\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { createPinia } from 'pinia';\nexport const getPinia = () => {\n if (window._nc_files_pinia) {\n return window._nc_files_pinia;\n }\n window._nc_files_pinia = createPinia();\n return window._nc_files_pinia;\n};\n","import { getCurrentUser } from '@nextcloud/auth';\nimport { Folder, Permission, getDavNameSpaces, getDavProperties, davGetClient, davResultToNode, davRemoteURL, davRootPath } from '@nextcloud/files';\nimport { fetchTags } from './api';\nconst rootPath = '/systemtags';\nconst client = davGetClient();\nconst resultToNode = (node) => davResultToNode(node);\nconst formatReportPayload = (tagId) => `<?xml version=\"1.0\"?>\n<oc:filter-files ${getDavNameSpaces()}>\n\t<d:prop>\n\t\t${getDavProperties()}\n\t</d:prop>\n\t<oc:filter-rules>\n\t\t<oc:systemtag>${tagId}</oc:systemtag>\n\t</oc:filter-rules>\n</oc:filter-files>`;\nconst tagToNode = function (tag) {\n return new Folder({\n id: tag.id,\n source: `${davRemoteURL}${rootPath}/${tag.id}`,\n owner: String(getCurrentUser()?.uid ?? 'anonymous'),\n root: rootPath,\n displayname: tag.displayName,\n permissions: Permission.READ,\n attributes: {\n ...tag,\n 'is-tag': true,\n },\n });\n};\nexport const getContents = async (path = '/') => {\n // List tags in the root\n const tagsCache = (await fetchTags()).filter(tag => tag.userVisible);\n if (path === '/') {\n return {\n folder: new Folder({\n id: 0,\n source: `${davRemoteURL}${rootPath}`,\n owner: getCurrentUser()?.uid,\n root: rootPath,\n permissions: Permission.NONE,\n }),\n contents: tagsCache.map(tagToNode),\n };\n }\n const tagId = parseInt(path.split('/', 2)[1]);\n const tag = tagsCache.find(tag => tag.id === tagId);\n if (!tag) {\n throw new Error('Tag not found');\n }\n const folder = tagToNode(tag);\n const contentsResponse = await client.getDirectoryContents(davRootPath, {\n details: true,\n // Only filter favorites if we're at the root\n data: formatReportPayload(tagId),\n headers: {\n // Patched in WebdavClient.ts\n method: 'REPORT',\n },\n });\n return {\n folder,\n contents: contentsResponse.data.map(resultToNode),\n };\n};\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { translate as t } from '@nextcloud/l10n';\nimport { View, getNavigation } from '@nextcloud/files';\nimport { getContents } from '../services/systemtags.js';\nimport svgTagMultiple from '@mdi/svg/svg/tag-multiple.svg?raw';\nexport const systemTagsViewId = 'tags';\n/**\n * Register the system tags files view\n */\nexport function registerSystemTagsView() {\n const Navigation = getNavigation();\n Navigation.register(new View({\n id: systemTagsViewId,\n name: t('systemtags', 'Tags'),\n caption: t('systemtags', 'List of tags and their associated files and folders.'),\n emptyTitle: t('systemtags', 'No tags found'),\n emptyCaption: t('systemtags', 'Tags you have created will show up here.'),\n icon: svgTagMultiple,\n order: 25,\n getContents,\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/sass-loader/dist/cjs.js!./fileEntryInlineSystemTags.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./fileEntryInlineSystemTags.scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { FileAction } from '@nextcloud/files';\nimport { subscribe } from '@nextcloud/event-bus';\nimport { t } from '@nextcloud/l10n';\nimport '../css/fileEntryInlineSystemTags.scss';\nimport { elementColor, isDarkModeEnabled } from '../utils/colorUtils';\nimport { fetchTags } from '../services/api';\nimport { getNodeSystemTags } from '../utils';\nimport logger from '../logger.ts';\n// Init tag cache\nconst cache = [];\nconst renderTag = function (tag, isMore = false) {\n const tagElement = document.createElement('li');\n tagElement.classList.add('files-list__system-tag');\n tagElement.setAttribute('data-systemtag-name', tag);\n tagElement.textContent = tag;\n // Set the color if it exists\n const cachedTag = cache.find((t) => t.displayName === tag);\n if (cachedTag?.color) {\n // Make sure contrast is good and follow WCAG guidelines\n const mainBackgroundColor = getComputedStyle(document.body)\n .getPropertyValue('--color-main-background')\n .replace('#', '') || (isDarkModeEnabled() ? '000000' : 'ffffff');\n const primaryElement = elementColor(`#${cachedTag.color}`, `#${mainBackgroundColor}`);\n tagElement.style.setProperty('--systemtag-color', primaryElement);\n tagElement.setAttribute('data-systemtag-color', 'true');\n }\n if (isMore) {\n tagElement.classList.add('files-list__system-tag--more');\n }\n return tagElement;\n};\nconst renderInline = async function (node) {\n // Ensure we have the system tags as an array\n const tags = getNodeSystemTags(node);\n const systemTagsElement = document.createElement('ul');\n systemTagsElement.classList.add('files-list__system-tags');\n systemTagsElement.setAttribute('aria-label', t('files', 'Assigned collaborative tags'));\n systemTagsElement.setAttribute('data-systemtags-fileid', node.fileid?.toString() || '');\n if (tags.length === 0) {\n return systemTagsElement;\n }\n // Fetch the tags if the cache is empty\n if (cache.length === 0) {\n try {\n // Best would be to support attributes from webdav,\n // but currently the library does not support it\n cache.push(...await fetchTags());\n }\n catch (error) {\n logger.error('Failed to fetch tags', { error });\n }\n }\n systemTagsElement.append(renderTag(tags[0]));\n if (tags.length === 2) {\n // Special case only two tags:\n // the overflow fake tag would take the same space as this, so render it\n systemTagsElement.append(renderTag(tags[1]));\n }\n else if (tags.length > 1) {\n // More tags than the one we're showing\n // So we add a overflow element indicating there are more tags\n const moreTagElement = renderTag('+' + (tags.length - 1), true);\n moreTagElement.setAttribute('title', tags.slice(1).join(', '));\n // because the title is not accessible we hide this element for screen readers (see alternative below)\n moreTagElement.setAttribute('aria-hidden', 'true');\n moreTagElement.setAttribute('role', 'presentation');\n systemTagsElement.append(moreTagElement);\n // For accessibility the tags are listed, as the title is not accessible\n // but those tags are visually hidden\n for (const tag of tags.slice(1)) {\n const tagElement = renderTag(tag);\n tagElement.classList.add('hidden-visually');\n systemTagsElement.append(tagElement);\n }\n }\n return systemTagsElement;\n};\nexport const action = new FileAction({\n id: 'system-tags',\n displayName: () => '',\n iconSvgInline: () => '',\n enabled(nodes) {\n // Only show the action on single nodes\n if (nodes.length !== 1) {\n return false;\n }\n // Always show the action, even if there are no tags\n // This will render an empty tag list and allow events to update it\n return true;\n },\n exec: async () => null,\n renderInline,\n order: 0,\n});\n// Update the system tags html when the node is updated\nconst updateSystemTagsHtml = function (node) {\n renderInline(node).then((systemTagsHtml) => {\n document.querySelectorAll(`[data-systemtags-fileid=\"${node.fileid}\"]`).forEach((element) => {\n element.replaceWith(systemTagsHtml);\n });\n });\n};\n// Add and remove tags from the cache\nconst addTag = function (tag) {\n cache.push(tag);\n};\nconst removeTag = function (tag) {\n cache.splice(cache.findIndex((t) => t.id === tag.id), 1);\n};\nconst updateTag = function (tag) {\n const index = cache.findIndex((t) => t.id === tag.id);\n if (index !== -1) {\n cache[index] = tag;\n }\n updateSystemTagsColorAttribute(tag);\n};\n// Update the color attribute of the system tags\nconst updateSystemTagsColorAttribute = function (tag) {\n document.querySelectorAll(`[data-systemtag-name=\"${tag.displayName}\"]`).forEach((element) => {\n element.style.setProperty('--systemtag-color', `#${tag.color}`);\n });\n};\n// Subscribe to the events\nsubscribe('systemtags:node:updated', updateSystemTagsHtml);\nsubscribe('systemtags:tag:created', addTag);\nsubscribe('systemtags:tag:deleted', removeTag);\nsubscribe('systemtags:tag:updated', updateTag);\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport {} from '@nextcloud/files';\nimport { FileType, FileAction, DefaultType } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nimport { systemTagsViewId } from '../files_views/systemtagsView';\nexport const action = new FileAction({\n id: 'systemtags:open-in-files',\n displayName: () => t('systemtags', 'Open in Files'),\n iconSvgInline: () => '',\n enabled(nodes, view) {\n // Only for the system tags view\n if (view.id !== systemTagsViewId) {\n return false;\n }\n // Only for single nodes\n if (nodes.length !== 1) {\n return false;\n }\n // Do not open tags (keep the default action) and only open folders\n return nodes[0].attributes['is-tag'] !== true\n && nodes[0].type === FileType.Folder;\n },\n async exec(node) {\n let dir = node.dirname;\n if (node.type === FileType.Folder) {\n dir = node.path;\n }\n window.OCP.Files.Router.goToRoute(null, // use default route\n { view: 'files', fileid: String(node.fileid) }, { dir, openfile: 'true' });\n return null;\n },\n // Before openFolderAction\n order: -1000,\n default: DefaultType.HIDDEN,\n});\n","/**\n * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { registerDavProperty, registerFileAction } from '@nextcloud/files';\nimport { registerHotkeys } from './services/HotKeysService';\nimport { registerSystemTagsView } from './files_views/systemtagsView';\nimport { action as bulkSystemTagsAction } from './files_actions/bulkSystemTagsAction';\nimport { action as inlineSystemTagsAction } from './files_actions/inlineSystemTagsAction';\nimport { action as openInFilesAction } from './files_actions/openInFilesAction';\nregisterDavProperty('nc:system-tags');\nregisterFileAction(bulkSystemTagsAction);\nregisterFileAction(inlineSystemTagsAction);\nregisterFileAction(openInFilesAction);\nregisterSystemTagsView();\ndocument.addEventListener('DOMContentLoaded', () => {\n registerHotkeys();\n});\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { useHotKey } from '@nextcloud/vue/composables/useHotKey';\nimport { action as manageTagAction } from '../files_actions/bulkSystemTagsAction.ts';\nimport { executeAction } from '../../../files/src/utils/actionUtils.ts';\nimport logger from '../logger.ts';\n/**\n * This register the hotkeys for the Files app.\n * As much as possible, we try to have all the hotkeys in one place.\n * Please make sure to add tests for the hotkeys after adding a new one.\n */\nexport const registerHotkeys = function () {\n // t opens the tag management dialog\n useHotKey('t', () => executeAction(manageTagAction), {\n stop: true,\n prevent: true,\n });\n logger.debug('Hotkeys registered');\n};\n","export default {\n\taliceblue: [240, 248, 255],\n\tantiquewhite: [250, 235, 215],\n\taqua: [0, 255, 255],\n\taquamarine: [127, 255, 212],\n\tazure: [240, 255, 255],\n\tbeige: [245, 245, 220],\n\tbisque: [255, 228, 196],\n\tblack: [0, 0, 0],\n\tblanchedalmond: [255, 235, 205],\n\tblue: [0, 0, 255],\n\tblueviolet: [138, 43, 226],\n\tbrown: [165, 42, 42],\n\tburlywood: [222, 184, 135],\n\tcadetblue: [95, 158, 160],\n\tchartreuse: [127, 255, 0],\n\tchocolate: [210, 105, 30],\n\tcoral: [255, 127, 80],\n\tcornflowerblue: [100, 149, 237],\n\tcornsilk: [255, 248, 220],\n\tcrimson: [220, 20, 60],\n\tcyan: [0, 255, 255],\n\tdarkblue: [0, 0, 139],\n\tdarkcyan: [0, 139, 139],\n\tdarkgoldenrod: [184, 134, 11],\n\tdarkgray: [169, 169, 169],\n\tdarkgreen: [0, 100, 0],\n\tdarkgrey: [169, 169, 169],\n\tdarkkhaki: [189, 183, 107],\n\tdarkmagenta: [139, 0, 139],\n\tdarkolivegreen: [85, 107, 47],\n\tdarkorange: [255, 140, 0],\n\tdarkorchid: [153, 50, 204],\n\tdarkred: [139, 0, 0],\n\tdarksalmon: [233, 150, 122],\n\tdarkseagreen: [143, 188, 143],\n\tdarkslateblue: [72, 61, 139],\n\tdarkslategray: [47, 79, 79],\n\tdarkslategrey: [47, 79, 79],\n\tdarkturquoise: [0, 206, 209],\n\tdarkviolet: [148, 0, 211],\n\tdeeppink: [255, 20, 147],\n\tdeepskyblue: [0, 191, 255],\n\tdimgray: [105, 105, 105],\n\tdimgrey: [105, 105, 105],\n\tdodgerblue: [30, 144, 255],\n\tfirebrick: [178, 34, 34],\n\tfloralwhite: [255, 250, 240],\n\tforestgreen: [34, 139, 34],\n\tfuchsia: [255, 0, 255],\n\tgainsboro: [220, 220, 220],\n\tghostwhite: [248, 248, 255],\n\tgold: [255, 215, 0],\n\tgoldenrod: [218, 165, 32],\n\tgray: [128, 128, 128],\n\tgreen: [0, 128, 0],\n\tgreenyellow: [173, 255, 47],\n\tgrey: [128, 128, 128],\n\thoneydew: [240, 255, 240],\n\thotpink: [255, 105, 180],\n\tindianred: [205, 92, 92],\n\tindigo: [75, 0, 130],\n\tivory: [255, 255, 240],\n\tkhaki: [240, 230, 140],\n\tlavender: [230, 230, 250],\n\tlavenderblush: [255, 240, 245],\n\tlawngreen: [124, 252, 0],\n\tlemonchiffon: [255, 250, 205],\n\tlightblue: [173, 216, 230],\n\tlightcoral: [240, 128, 128],\n\tlightcyan: [224, 255, 255],\n\tlightgoldenrodyellow: [250, 250, 210],\n\tlightgray: [211, 211, 211],\n\tlightgreen: [144, 238, 144],\n\tlightgrey: [211, 211, 211],\n\tlightpink: [255, 182, 193],\n\tlightsalmon: [255, 160, 122],\n\tlightseagreen: [32, 178, 170],\n\tlightskyblue: [135, 206, 250],\n\tlightslategray: [119, 136, 153],\n\tlightslategrey: [119, 136, 153],\n\tlightsteelblue: [176, 196, 222],\n\tlightyellow: [255, 255, 224],\n\tlime: [0, 255, 0],\n\tlimegreen: [50, 205, 50],\n\tlinen: [250, 240, 230],\n\tmagenta: [255, 0, 255],\n\tmaroon: [128, 0, 0],\n\tmediumaquamarine: [102, 205, 170],\n\tmediumblue: [0, 0, 205],\n\tmediumorchid: [186, 85, 211],\n\tmediumpurple: [147, 112, 219],\n\tmediumseagreen: [60, 179, 113],\n\tmediumslateblue: [123, 104, 238],\n\tmediumspringgreen: [0, 250, 154],\n\tmediumturquoise: [72, 209, 204],\n\tmediumvioletred: [199, 21, 133],\n\tmidnightblue: [25, 25, 112],\n\tmintcream: [245, 255, 250],\n\tmistyrose: [255, 228, 225],\n\tmoccasin: [255, 228, 181],\n\tnavajowhite: [255, 222, 173],\n\tnavy: [0, 0, 128],\n\toldlace: [253, 245, 230],\n\tolive: [128, 128, 0],\n\tolivedrab: [107, 142, 35],\n\torange: [255, 165, 0],\n\torangered: [255, 69, 0],\n\torchid: [218, 112, 214],\n\tpalegoldenrod: [238, 232, 170],\n\tpalegreen: [152, 251, 152],\n\tpaleturquoise: [175, 238, 238],\n\tpalevioletred: [219, 112, 147],\n\tpapayawhip: [255, 239, 213],\n\tpeachpuff: [255, 218, 185],\n\tperu: [205, 133, 63],\n\tpink: [255, 192, 203],\n\tplum: [221, 160, 221],\n\tpowderblue: [176, 224, 230],\n\tpurple: [128, 0, 128],\n\trebeccapurple: [102, 51, 153],\n\tred: [255, 0, 0],\n\trosybrown: [188, 143, 143],\n\troyalblue: [65, 105, 225],\n\tsaddlebrown: [139, 69, 19],\n\tsalmon: [250, 128, 114],\n\tsandybrown: [244, 164, 96],\n\tseagreen: [46, 139, 87],\n\tseashell: [255, 245, 238],\n\tsienna: [160, 82, 45],\n\tsilver: [192, 192, 192],\n\tskyblue: [135, 206, 235],\n\tslateblue: [106, 90, 205],\n\tslategray: [112, 128, 144],\n\tslategrey: [112, 128, 144],\n\tsnow: [255, 250, 250],\n\tspringgreen: [0, 255, 127],\n\tsteelblue: [70, 130, 180],\n\ttan: [210, 180, 140],\n\tteal: [0, 128, 128],\n\tthistle: [216, 191, 216],\n\ttomato: [255, 99, 71],\n\tturquoise: [64, 224, 208],\n\tviolet: [238, 130, 238],\n\twheat: [245, 222, 179],\n\twhite: [255, 255, 255],\n\twhitesmoke: [245, 245, 245],\n\tyellow: [255, 255, 0],\n\tyellowgreen: [154, 205, 50]\n}\n","import colorNames from 'color-name';\n\nconst reverseNames = Object.create(null);\n\n// Create a list of reverse color names\nfor (const name in colorNames) {\n\tif (Object.hasOwn(colorNames, name)) {\n\t\treverseNames[colorNames[name]] = name;\n\t}\n}\n\nconst cs = {\n\tto: {},\n\tget: {},\n};\n\ncs.get = function (string) {\n\tconst prefix = string.slice(0, 3).toLowerCase();\n\tlet value;\n\tlet model;\n\tswitch (prefix) {\n\t\tcase 'hsl': {\n\t\t\tvalue = cs.get.hsl(string);\n\t\t\tmodel = 'hsl';\n\t\t\tbreak;\n\t\t}\n\n\t\tcase 'hwb': {\n\t\t\tvalue = cs.get.hwb(string);\n\t\t\tmodel = 'hwb';\n\t\t\tbreak;\n\t\t}\n\n\t\tdefault: {\n\t\t\tvalue = cs.get.rgb(string);\n\t\t\tmodel = 'rgb';\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tif (!value) {\n\t\treturn null;\n\t}\n\n\treturn {model, value};\n};\n\ncs.get.rgb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tconst abbr = /^#([a-f\\d]{3,4})$/i;\n\tconst hex = /^#([a-f\\d]{6})([a-f\\d]{2})?$/i;\n\tconst rgba = /^rgba?\\(\\s*([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)\\s*(?:[,|/]\\s*([+-]?[\\d.]+)(%?)\\s*)?\\)$/;\n\tconst per = /^rgba?\\(\\s*([+-]?[\\d.]+)%\\s*,?\\s*([+-]?[\\d.]+)%\\s*,?\\s*([+-]?[\\d.]+)%\\s*(?:[,|/]\\s*([+-]?[\\d.]+)(%?)\\s*)?\\)$/;\n\tconst keyword = /^(\\w+)$/;\n\n\tlet rgb = [0, 0, 0, 1];\n\tlet match;\n\tlet i;\n\tlet hexAlpha;\n\n\tif (match = string.match(hex)) {\n\t\thexAlpha = match[2];\n\t\tmatch = match[1];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\t// https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19\n\t\t\tconst i2 = i * 2;\n\t\t\trgb[i] = Number.parseInt(match.slice(i2, i2 + 2), 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = Number.parseInt(hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(abbr)) {\n\t\tmatch = match[1];\n\t\thexAlpha = match[3];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Number.parseInt(match[i] + match[i], 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = Number.parseInt(hexAlpha + hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(rgba)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Number.parseInt(match[i + 1], 10);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\trgb[3] = match[5] ? Number.parseFloat(match[4]) * 0.01 : Number.parseFloat(match[4]);\n\t\t}\n\t} else if (match = string.match(per)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Math.round(Number.parseFloat(match[i + 1]) * 2.55);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\trgb[3] = match[5] ? Number.parseFloat(match[4]) * 0.01 : Number.parseFloat(match[4]);\n\t\t}\n\t} else if (match = string.match(keyword)) {\n\t\tif (match[1] === 'transparent') {\n\t\t\treturn [0, 0, 0, 0];\n\t\t}\n\n\t\tif (!Object.hasOwn(colorNames, match[1])) {\n\t\t\treturn null;\n\t\t}\n\n\t\trgb = colorNames[match[1]];\n\t\trgb[3] = 1;\n\n\t\treturn rgb;\n\t} else {\n\t\treturn null;\n\t}\n\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] = clamp(rgb[i], 0, 255);\n\t}\n\n\trgb[3] = clamp(rgb[3], 0, 1);\n\n\treturn rgb;\n};\n\ncs.get.hsl = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tconst hsl = /^hsla?\\(\\s*([+-]?(?:\\d{0,3}\\.)?\\d+)(?:deg)?\\s*,?\\s*([+-]?[\\d.]+)%\\s*,?\\s*([+-]?[\\d.]+)%\\s*(?:[,|/]\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tconst match = string.match(hsl);\n\n\tif (match) {\n\t\tconst alpha = Number.parseFloat(match[4]);\n\t\tconst h = ((Number.parseFloat(match[1]) % 360) + 360) % 360;\n\t\tconst s = clamp(Number.parseFloat(match[2]), 0, 100);\n\t\tconst l = clamp(Number.parseFloat(match[3]), 0, 100);\n\t\tconst a = clamp(Number.isNaN(alpha) ? 1 : alpha, 0, 1);\n\n\t\treturn [h, s, l, a];\n\t}\n\n\treturn null;\n};\n\ncs.get.hwb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tconst hwb = /^hwb\\(\\s*([+-]?\\d{0,3}(?:\\.\\d+)?)(?:deg)?\\s*,\\s*([+-]?[\\d.]+)%\\s*,\\s*([+-]?[\\d.]+)%\\s*(?:,\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tconst match = string.match(hwb);\n\n\tif (match) {\n\t\tconst alpha = Number.parseFloat(match[4]);\n\t\tconst h = ((Number.parseFloat(match[1]) % 360) + 360) % 360;\n\t\tconst w = clamp(Number.parseFloat(match[2]), 0, 100);\n\t\tconst b = clamp(Number.parseFloat(match[3]), 0, 100);\n\t\tconst a = clamp(Number.isNaN(alpha) ? 1 : alpha, 0, 1);\n\t\treturn [h, w, b, a];\n\t}\n\n\treturn null;\n};\n\ncs.to.hex = function (...rgba) {\n\treturn (\n\t\t'#' +\n\t\thexDouble(rgba[0]) +\n\t\thexDouble(rgba[1]) +\n\t\thexDouble(rgba[2]) +\n\t\t(rgba[3] < 1\n\t\t\t? (hexDouble(Math.round(rgba[3] * 255)))\n\t\t\t: '')\n\t);\n};\n\ncs.to.rgb = function (...rgba) {\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')'\n\t\t: 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')';\n};\n\ncs.to.rgb.percent = function (...rgba) {\n\tconst r = Math.round(rgba[0] / 255 * 100);\n\tconst g = Math.round(rgba[1] / 255 * 100);\n\tconst b = Math.round(rgba[2] / 255 * 100);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)'\n\t\t: 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')';\n};\n\ncs.to.hsl = function (...hsla) {\n\treturn hsla.length < 4 || hsla[3] === 1\n\t\t? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)'\n\t\t: 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')';\n};\n\n// Hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\ncs.to.hwb = function (...hwba) {\n\tlet a = '';\n\tif (hwba.length >= 4 && hwba[3] !== 1) {\n\t\ta = ', ' + hwba[3];\n\t}\n\n\treturn 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')';\n};\n\ncs.to.keyword = function (...rgb) {\n\treturn reverseNames[rgb.slice(0, 3)];\n};\n\n// Helpers\nfunction clamp(number_, min, max) {\n\treturn Math.min(Math.max(min, number_), max);\n}\n\nfunction hexDouble(number_) {\n\tconst string_ = Math.round(number_).toString(16).toUpperCase();\n\treturn (string_.length < 2) ? '0' + string_ : string_;\n}\n\nexport default cs;\n","export default {\n\taliceblue: [240, 248, 255],\n\tantiquewhite: [250, 235, 215],\n\taqua: [0, 255, 255],\n\taquamarine: [127, 255, 212],\n\tazure: [240, 255, 255],\n\tbeige: [245, 245, 220],\n\tbisque: [255, 228, 196],\n\tblack: [0, 0, 0],\n\tblanchedalmond: [255, 235, 205],\n\tblue: [0, 0, 255],\n\tblueviolet: [138, 43, 226],\n\tbrown: [165, 42, 42],\n\tburlywood: [222, 184, 135],\n\tcadetblue: [95, 158, 160],\n\tchartreuse: [127, 255, 0],\n\tchocolate: [210, 105, 30],\n\tcoral: [255, 127, 80],\n\tcornflowerblue: [100, 149, 237],\n\tcornsilk: [255, 248, 220],\n\tcrimson: [220, 20, 60],\n\tcyan: [0, 255, 255],\n\tdarkblue: [0, 0, 139],\n\tdarkcyan: [0, 139, 139],\n\tdarkgoldenrod: [184, 134, 11],\n\tdarkgray: [169, 169, 169],\n\tdarkgreen: [0, 100, 0],\n\tdarkgrey: [169, 169, 169],\n\tdarkkhaki: [189, 183, 107],\n\tdarkmagenta: [139, 0, 139],\n\tdarkolivegreen: [85, 107, 47],\n\tdarkorange: [255, 140, 0],\n\tdarkorchid: [153, 50, 204],\n\tdarkred: [139, 0, 0],\n\tdarksalmon: [233, 150, 122],\n\tdarkseagreen: [143, 188, 143],\n\tdarkslateblue: [72, 61, 139],\n\tdarkslategray: [47, 79, 79],\n\tdarkslategrey: [47, 79, 79],\n\tdarkturquoise: [0, 206, 209],\n\tdarkviolet: [148, 0, 211],\n\tdeeppink: [255, 20, 147],\n\tdeepskyblue: [0, 191, 255],\n\tdimgray: [105, 105, 105],\n\tdimgrey: [105, 105, 105],\n\tdodgerblue: [30, 144, 255],\n\tfirebrick: [178, 34, 34],\n\tfloralwhite: [255, 250, 240],\n\tforestgreen: [34, 139, 34],\n\tfuchsia: [255, 0, 255],\n\tgainsboro: [220, 220, 220],\n\tghostwhite: [248, 248, 255],\n\tgold: [255, 215, 0],\n\tgoldenrod: [218, 165, 32],\n\tgray: [128, 128, 128],\n\tgreen: [0, 128, 0],\n\tgreenyellow: [173, 255, 47],\n\tgrey: [128, 128, 128],\n\thoneydew: [240, 255, 240],\n\thotpink: [255, 105, 180],\n\tindianred: [205, 92, 92],\n\tindigo: [75, 0, 130],\n\tivory: [255, 255, 240],\n\tkhaki: [240, 230, 140],\n\tlavender: [230, 230, 250],\n\tlavenderblush: [255, 240, 245],\n\tlawngreen: [124, 252, 0],\n\tlemonchiffon: [255, 250, 205],\n\tlightblue: [173, 216, 230],\n\tlightcoral: [240, 128, 128],\n\tlightcyan: [224, 255, 255],\n\tlightgoldenrodyellow: [250, 250, 210],\n\tlightgray: [211, 211, 211],\n\tlightgreen: [144, 238, 144],\n\tlightgrey: [211, 211, 211],\n\tlightpink: [255, 182, 193],\n\tlightsalmon: [255, 160, 122],\n\tlightseagreen: [32, 178, 170],\n\tlightskyblue: [135, 206, 250],\n\tlightslategray: [119, 136, 153],\n\tlightslategrey: [119, 136, 153],\n\tlightsteelblue: [176, 196, 222],\n\tlightyellow: [255, 255, 224],\n\tlime: [0, 255, 0],\n\tlimegreen: [50, 205, 50],\n\tlinen: [250, 240, 230],\n\tmagenta: [255, 0, 255],\n\tmaroon: [128, 0, 0],\n\tmediumaquamarine: [102, 205, 170],\n\tmediumblue: [0, 0, 205],\n\tmediumorchid: [186, 85, 211],\n\tmediumpurple: [147, 112, 219],\n\tmediumseagreen: [60, 179, 113],\n\tmediumslateblue: [123, 104, 238],\n\tmediumspringgreen: [0, 250, 154],\n\tmediumturquoise: [72, 209, 204],\n\tmediumvioletred: [199, 21, 133],\n\tmidnightblue: [25, 25, 112],\n\tmintcream: [245, 255, 250],\n\tmistyrose: [255, 228, 225],\n\tmoccasin: [255, 228, 181],\n\tnavajowhite: [255, 222, 173],\n\tnavy: [0, 0, 128],\n\toldlace: [253, 245, 230],\n\tolive: [128, 128, 0],\n\tolivedrab: [107, 142, 35],\n\torange: [255, 165, 0],\n\torangered: [255, 69, 0],\n\torchid: [218, 112, 214],\n\tpalegoldenrod: [238, 232, 170],\n\tpalegreen: [152, 251, 152],\n\tpaleturquoise: [175, 238, 238],\n\tpalevioletred: [219, 112, 147],\n\tpapayawhip: [255, 239, 213],\n\tpeachpuff: [255, 218, 185],\n\tperu: [205, 133, 63],\n\tpink: [255, 192, 203],\n\tplum: [221, 160, 221],\n\tpowderblue: [176, 224, 230],\n\tpurple: [128, 0, 128],\n\trebeccapurple: [102, 51, 153],\n\tred: [255, 0, 0],\n\trosybrown: [188, 143, 143],\n\troyalblue: [65, 105, 225],\n\tsaddlebrown: [139, 69, 19],\n\tsalmon: [250, 128, 114],\n\tsandybrown: [244, 164, 96],\n\tseagreen: [46, 139, 87],\n\tseashell: [255, 245, 238],\n\tsienna: [160, 82, 45],\n\tsilver: [192, 192, 192],\n\tskyblue: [135, 206, 235],\n\tslateblue: [106, 90, 205],\n\tslategray: [112, 128, 144],\n\tslategrey: [112, 128, 144],\n\tsnow: [255, 250, 250],\n\tspringgreen: [0, 255, 127],\n\tsteelblue: [70, 130, 180],\n\ttan: [210, 180, 140],\n\tteal: [0, 128, 128],\n\tthistle: [216, 191, 216],\n\ttomato: [255, 99, 71],\n\tturquoise: [64, 224, 208],\n\tviolet: [238, 130, 238],\n\twheat: [245, 222, 179],\n\twhite: [255, 255, 255],\n\twhitesmoke: [245, 245, 245],\n\tyellow: [255, 255, 0],\n\tyellowgreen: [154, 205, 50]\n}\n","/* MIT license */\n/* eslint-disable no-mixed-operators */\nimport cssKeywords from 'color-name';\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nconst reverseKeywords = {};\nfor (const key of Object.keys(cssKeywords)) {\n\treverseKeywords[cssKeywords[key]] = key;\n}\n\nconst convert = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']},\n};\n\nexport default convert;\n\n// LAB f(t) constant\nconst LAB_FT = (6 / 29) ** 3;\n\n// Hide .channels and .labels properties\nfor (const model of Object.keys(convert)) {\n\tif (!('channels' in convert[model])) {\n\t\tthrow new Error('missing channels property: ' + model);\n\t}\n\n\tif (!('labels' in convert[model])) {\n\t\tthrow new Error('missing channel labels property: ' + model);\n\t}\n\n\tif (convert[model].labels.length !== convert[model].channels) {\n\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t}\n\n\tconst {channels, labels} = convert[model];\n\tdelete convert[model].channels;\n\tdelete convert[model].labels;\n\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\tObject.defineProperty(convert[model], 'labels', {value: labels});\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst min = Math.min(r, g, b);\n\tconst max = Math.max(r, g, b);\n\tconst delta = max - min;\n\tlet h;\n\tlet s;\n\n\tswitch (max) {\n\t\tcase min: {\n\t\t\th = 0;\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase r: {\n\t\t\th = (g - b) / delta;\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase g: {\n\t\t\th = 2 + (b - r) / delta;\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase b: {\n\t\t\th = 4 + (r - g) / delta;\n\n\t\t\tbreak;\n\t\t}\n\t// No default\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst l = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tlet rdif;\n\tlet gdif;\n\tlet bdif;\n\tlet h;\n\tlet s;\n\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst v = Math.max(r, g, b);\n\tconst diff = v - Math.min(r, g, b);\n\tconst diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = 0;\n\t\ts = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tswitch (v) {\n\t\t\tcase r: {\n\t\t\t\th = bdif - gdif;\n\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase g: {\n\t\t\t\th = (1 / 3) + rdif - bdif;\n\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase b: {\n\t\t\t\th = (2 / 3) + gdif - rdif;\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t// No default\n\t\t}\n\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100,\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tconst r = rgb[0];\n\tconst g = rgb[1];\n\tlet b = rgb[2];\n\tconst h = convert.rgb.hsl(rgb)[0];\n\tconst w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\n\tconst k = Math.min(1 - r, 1 - g, 1 - b);\n\tconst c = (1 - r - k) / (1 - k) || 0;\n\tconst m = (1 - g - k) / (1 - k) || 0;\n\tconst y = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\nfunction comparativeDistance(x, y) {\n\t/*\n\t\tSee https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n\t*/\n\treturn (\n\t\t((x[0] - y[0]) ** 2) +\n\t\t((x[1] - y[1]) ** 2) +\n\t\t((x[2] - y[2]) ** 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tconst reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tlet currentClosestDistance = Number.POSITIVE_INFINITY;\n\tlet currentClosestKeyword;\n\n\tfor (const keyword of Object.keys(cssKeywords)) {\n\t\tconst value = cssKeywords[keyword];\n\n\t\t// Compute comparative distance\n\t\tconst distance = comparativeDistance(rgb, value);\n\n\t\t// Check if its less, if so set as closest\n\t\tif (distance < currentClosestDistance) {\n\t\t\tcurrentClosestDistance = distance;\n\t\t\tcurrentClosestKeyword = keyword;\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tlet r = rgb[0] / 255;\n\tlet g = rgb[1] / 255;\n\tlet b = rgb[2] / 255;\n\n\t// Assume sRGB\n\tr = r > 0.040_45 ? (((r + 0.055) / 1.055) ** 2.4) : (r / 12.92);\n\tg = g > 0.040_45 ? (((g + 0.055) / 1.055) ** 2.4) : (g / 12.92);\n\tb = b > 0.040_45 ? (((b + 0.055) / 1.055) ** 2.4) : (b / 12.92);\n\n\tconst x = (r * 0.412_456_4) + (g * 0.357_576_1) + (b * 0.180_437_5);\n\tconst y = (r * 0.212_672_9) + (g * 0.715_152_2) + (b * 0.072_175);\n\tconst z = (r * 0.019_333_9) + (g * 0.119_192) + (b * 0.950_304_1);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tconst xyz = convert.rgb.xyz(rgb);\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > LAB_FT ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > LAB_FT ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > LAB_FT ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tconst h = hsl[0] / 360;\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\tlet t3;\n\tlet value;\n\n\tif (s === 0) {\n\t\tvalue = l * 255;\n\t\treturn [value, value, value];\n\t}\n\n\tconst t2 = l < 0.5 ? l * (1 + s) : l + s - l * s;\n\n\tconst t1 = 2 * l - t2;\n\n\tconst rgb = [0, 0, 0];\n\tfor (let i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tvalue = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tvalue = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tvalue = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tvalue = t1;\n\t\t}\n\n\t\trgb[i] = value * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tconst h = hsl[0];\n\tlet s = hsl[1] / 100;\n\tlet l = hsl[2] / 100;\n\tlet smin = s;\n\tconst lmin = Math.max(l, 0.01);\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tconst v = (l + s) / 2;\n\tconst sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tconst h = hsv[0] / 60;\n\tconst s = hsv[1] / 100;\n\tlet v = hsv[2] / 100;\n\tconst hi = Math.floor(h) % 6;\n\n\tconst f = h - Math.floor(h);\n\tconst p = 255 * v * (1 - s);\n\tconst q = 255 * v * (1 - (s * f));\n\tconst t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0: {\n\t\t\treturn [v, t, p];\n\t\t}\n\n\t\tcase 1: {\n\t\t\treturn [q, v, p];\n\t\t}\n\n\t\tcase 2: {\n\t\t\treturn [p, v, t];\n\t\t}\n\n\t\tcase 3: {\n\t\t\treturn [p, q, v];\n\t\t}\n\n\t\tcase 4: {\n\t\t\treturn [t, p, v];\n\t\t}\n\n\t\tcase 5: {\n\t\t\treturn [v, p, q];\n\t\t}\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tconst h = hsv[0];\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\tconst vmin = Math.max(v, 0.01);\n\tlet sl;\n\tlet l;\n\n\tl = (2 - s) * v;\n\tconst lmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tconst h = hwb[0] / 360;\n\tlet wh = hwb[1] / 100;\n\tlet bl = hwb[2] / 100;\n\tconst ratio = wh + bl;\n\tlet f;\n\n\t// Wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\tconst i = Math.floor(6 * h);\n\tconst v = 1 - bl;\n\tf = 6 * h - i;\n\n\t// eslint-disable-next-line no-bitwise\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tconst n = wh + f * (v - wh); // Linear interpolation\n\n\tlet r;\n\tlet g;\n\tlet b;\n\t/* eslint-disable max-statements-per-line,no-multi-spaces, default-case-last */\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: { r = v; g = n; b = wh; break;\n\t\t}\n\n\t\tcase 1: { r = n; g = v; b = wh; break;\n\t\t}\n\n\t\tcase 2: { r = wh; g = v; b = n; break;\n\t\t}\n\n\t\tcase 3: { r = wh; g = n; b = v; break;\n\t\t}\n\n\t\tcase 4: { r = n; g = wh; b = v; break;\n\t\t}\n\n\t\tcase 5: { r = v; g = wh; b = n; break;\n\t\t}\n\t}\n\t/* eslint-enable max-statements-per-line,no-multi-spaces, default-case-last */\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tconst c = cmyk[0] / 100;\n\tconst m = cmyk[1] / 100;\n\tconst y = cmyk[2] / 100;\n\tconst k = cmyk[3] / 100;\n\n\tconst r = 1 - Math.min(1, c * (1 - k) + k);\n\tconst g = 1 - Math.min(1, m * (1 - k) + k);\n\tconst b = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\tlet r;\n\tlet g;\n\tlet b;\n\n\tr = (x * 3.240_454_2) + (y * -1.537_138_5) + (z * -0.498_531_4);\n\tg = (x * -0.969_266) + (y * 1.876_010_8) + (z * 0.041_556);\n\tb = (x * 0.055_643_4) + (y * -0.204_025_9) + (z * 1.057_225_2);\n\n\t// Assume sRGB\n\tr = r > 0.003_130_8\n\t\t? ((1.055 * (r ** (1 / 2.4))) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.003_130_8\n\t\t? ((1.055 * (g ** (1 / 2.4))) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.003_130_8\n\t\t? ((1.055 * (b ** (1 / 2.4))) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > LAB_FT ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > LAB_FT ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > LAB_FT ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet x;\n\tlet y;\n\tlet z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tconst y2 = y ** 3;\n\tconst x2 = x ** 3;\n\tconst z2 = z ** 3;\n\ty = y2 > LAB_FT ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > LAB_FT ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > LAB_FT ? z2 : (z - 16 / 116) / 7.787;\n\n\t// Illuminant D65 XYZ Tristrimulus Values\n\t// https://en.wikipedia.org/wiki/CIE_1931_color_space\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet h;\n\n\tconst hr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst c = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tconst l = lch[0];\n\tconst c = lch[1];\n\tconst h = lch[2];\n\n\tconst hr = h / 360 * 2 * Math.PI;\n\tconst a = c * Math.cos(hr);\n\tconst b = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args, saturation = null) {\n\tconst [r, g, b] = args;\n\tlet value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tlet ansi = 30\n\t\t/* eslint-disable no-bitwise */\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\t\t/* eslint-enable no-bitwise */\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// Optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tconst r = args[0];\n\tconst g = args[1];\n\tconst b = args[2];\n\n\t// We use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\t// eslint-disable-next-line no-bitwise\n\tif (r >> 4 === g >> 4 && g >> 4 === b >> 4) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tconst ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\targs = args[0];\n\n\tlet color = args % 10;\n\n\t// Handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tconst mult = (Math.trunc(args > 50) + 1) * 0.5;\n\t/* eslint-disable no-bitwise */\n\tconst r = ((color & 1) * mult) * 255;\n\tconst g = (((color >> 1) & 1) * mult) * 255;\n\tconst b = (((color >> 2) & 1) * mult) * 255;\n\t/* eslint-enable no-bitwise */\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\targs = args[0];\n\n\t// Handle greyscale\n\tif (args >= 232) {\n\t\tconst c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tlet rem;\n\tconst r = Math.floor(args / 36) / 5 * 255;\n\tconst g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tconst b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\t/* eslint-disable no-bitwise */\n\tconst integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\t/* eslint-enable no-bitwise */\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.slice(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tconst match = args.toString(16).match(/[a-f\\d]{6}|[a-f\\d]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tlet colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = [...colorString].map(char => char + char).join('');\n\t}\n\n\tconst integer = Number.parseInt(colorString, 16);\n\t/* eslint-disable no-bitwise */\n\tconst r = (integer >> 16) & 0xFF;\n\tconst g = (integer >> 8) & 0xFF;\n\tconst b = integer & 0xFF;\n\t/* eslint-enable no-bitwise */\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst max = Math.max(Math.max(r, g), b);\n\tconst min = Math.min(Math.min(r, g), b);\n\tconst chroma = (max - min);\n\tlet hue;\n\n\tconst grayscale = chroma < 1 ? min / (1 - chroma) : 0;\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else if (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else if (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\n\tconst c = l < 0.5 ? (2 * s * l) : (2 * s * (1 - l));\n\n\tlet f = 0;\n\tif (c < 1) {\n\t\tf = (l - 0.5 * c) / (1 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\n\tconst c = s * v;\n\tlet f = 0;\n\n\tif (c < 1) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tconst h = hcg[0] / 360;\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tif (c === 0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tconst pure = [0, 0, 0];\n\tconst hi = (h % 1) * 6;\n\tconst v = hi % 1;\n\tconst w = 1 - v;\n\tlet mg = 0;\n\n\t/* eslint-disable max-statements-per-line */\n\tswitch (Math.floor(hi)) {\n\t\tcase 0: {\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\t}\n\n\t\tcase 1: {\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\t}\n\n\t\tcase 2: {\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\t}\n\n\t\tcase 3: {\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\t}\n\n\t\tcase 4: {\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\t}\n\n\t\tdefault: {\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t\t}\n\t}\n\t/* eslint-enable max-statements-per-line */\n\n\tmg = (1 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255,\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst v = c + g * (1 - c);\n\tlet f = 0;\n\n\tif (v > 0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst l = g * (1 - c) + 0.5 * c;\n\tlet s = 0;\n\n\tif (l > 0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else if (l >= 0.5 && l < 1) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\tconst v = c + g * (1 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tconst w = hwb[1] / 100;\n\tconst b = hwb[2] / 100;\n\tconst v = 1 - b;\n\tconst c = v - w;\n\tlet g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65_535) * 255, (apple[1] / 65_535) * 255, (apple[2] / 65_535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65_535, (rgb[1] / 255) * 65_535, (rgb[2] / 255) * 65_535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hsv = convert.gray.hsl;\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\t/* eslint-disable no-bitwise */\n\tconst value = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tconst integer = (value << 16) + (value << 8) + value;\n\t/* eslint-enable no-bitwise */\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.slice(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tconst value = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [value / 255 * 100];\n};\n","import conversions from './conversions.js';\n\n/*\n\tThis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tconst graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tconst models = Object.keys(conversions);\n\n\tfor (let {length} = models, i = 0; i < length; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null,\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tconst graph = buildGraph();\n\tconst queue = [fromModel]; // Unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length > 0) {\n\t\tconst current = queue.pop();\n\t\tconst adjacents = Object.keys(conversions[current]);\n\n\t\tfor (let {length} = adjacents, i = 0; i < length; i++) {\n\t\t\tconst adjacent = adjacents[i];\n\t\t\tconst node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tconst path = [graph[toModel].parent, toModel];\n\tlet fn = conversions[graph[toModel].parent][toModel];\n\n\tlet cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nfunction route(fromModel) {\n\tconst graph = deriveBFS(fromModel);\n\tconst conversion = {};\n\n\tconst models = Object.keys(graph);\n\tfor (let {length} = models, i = 0; i < length; i++) {\n\t\tconst toModel = models[i];\n\t\tconst node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// No possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n}\n\nexport default route;\n","import conversions from './conversions.js';\nimport route from './route.js';\n\nconst convert = {};\n\nconst models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\tconst result = fn(args);\n\n\t\t// We're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (let {length} = result, i = 0; i < length; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfor (const fromModel of models) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tconst routes = route(fromModel);\n\tconst routeModels = Object.keys(routes);\n\n\tfor (const toModel of routeModels) {\n\t\tconst fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t}\n}\n\nexport default convert;\n","import colorString from 'color-string';\nimport convert from 'color-convert';\n\nconst skippedModels = [\n\t// To be honest, I don't really feel like keyword belongs in color convert, but eh.\n\t'keyword',\n\n\t// Gray conflicts with some method names, and has its own method defined.\n\t'gray',\n\n\t// Shouldn't really be in color-convert either...\n\t'hex',\n];\n\nconst hashedModelKeys = {};\nfor (const model of Object.keys(convert)) {\n\thashedModelKeys[[...convert[model].labels].sort().join('')] = model;\n}\n\nconst limiters = {};\n\nfunction Color(object, model) {\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(object, model);\n\t}\n\n\tif (model && model in skippedModels) {\n\t\tmodel = null;\n\t}\n\n\tif (model && !(model in convert)) {\n\t\tthrow new Error('Unknown model: ' + model);\n\t}\n\n\tlet i;\n\tlet channels;\n\n\tif (object == null) { // eslint-disable-line no-eq-null,eqeqeq\n\t\tthis.model = 'rgb';\n\t\tthis.color = [0, 0, 0];\n\t\tthis.valpha = 1;\n\t} else if (object instanceof Color) {\n\t\tthis.model = object.model;\n\t\tthis.color = [...object.color];\n\t\tthis.valpha = object.valpha;\n\t} else if (typeof object === 'string') {\n\t\tconst result = colorString.get(object);\n\t\tif (result === null) {\n\t\t\tthrow new Error('Unable to parse color from string: ' + object);\n\t\t}\n\n\t\tthis.model = result.model;\n\t\tchannels = convert[this.model].channels;\n\t\tthis.color = result.value.slice(0, channels);\n\t\tthis.valpha = typeof result.value[channels] === 'number' ? result.value[channels] : 1;\n\t} else if (object.length > 0) {\n\t\tthis.model = model || 'rgb';\n\t\tchannels = convert[this.model].channels;\n\t\tconst newArray = Array.prototype.slice.call(object, 0, channels);\n\t\tthis.color = zeroArray(newArray, channels);\n\t\tthis.valpha = typeof object[channels] === 'number' ? object[channels] : 1;\n\t} else if (typeof object === 'number') {\n\t\t// This is always RGB - can be converted later on.\n\t\tthis.model = 'rgb';\n\t\tthis.color = [\n\t\t\t(object >> 16) & 0xFF,\n\t\t\t(object >> 8) & 0xFF,\n\t\t\tobject & 0xFF,\n\t\t];\n\t\tthis.valpha = 1;\n\t} else {\n\t\tthis.valpha = 1;\n\n\t\tconst keys = Object.keys(object);\n\t\tif ('alpha' in object) {\n\t\t\tkeys.splice(keys.indexOf('alpha'), 1);\n\t\t\tthis.valpha = typeof object.alpha === 'number' ? object.alpha : 0;\n\t\t}\n\n\t\tconst hashedKeys = keys.sort().join('');\n\t\tif (!(hashedKeys in hashedModelKeys)) {\n\t\t\tthrow new Error('Unable to parse color from object: ' + JSON.stringify(object));\n\t\t}\n\n\t\tthis.model = hashedModelKeys[hashedKeys];\n\n\t\tconst {labels} = convert[this.model];\n\t\tconst color = [];\n\t\tfor (i = 0; i < labels.length; i++) {\n\t\t\tcolor.push(object[labels[i]]);\n\t\t}\n\n\t\tthis.color = zeroArray(color);\n\t}\n\n\t// Perform limitations (clamping, etc.)\n\tif (limiters[this.model]) {\n\t\tchannels = convert[this.model].channels;\n\t\tfor (i = 0; i < channels; i++) {\n\t\t\tconst limit = limiters[this.model][i];\n\t\t\tif (limit) {\n\t\t\t\tthis.color[i] = limit(this.color[i]);\n\t\t\t}\n\t\t}\n\t}\n\n\tthis.valpha = Math.max(0, Math.min(1, this.valpha));\n\n\tif (Object.freeze) {\n\t\tObject.freeze(this);\n\t}\n}\n\nColor.prototype = {\n\ttoString() {\n\t\treturn this.string();\n\t},\n\n\ttoJSON() {\n\t\treturn this[this.model]();\n\t},\n\n\tstring(places) {\n\t\tlet self = this.model in colorString.to ? this : this.rgb();\n\t\tself = self.round(typeof places === 'number' ? places : 1);\n\t\tconst arguments_ = self.valpha === 1 ? self.color : [...self.color, this.valpha];\n\t\treturn colorString.to[self.model](...arguments_);\n\t},\n\n\tpercentString(places) {\n\t\tconst self = this.rgb().round(typeof places === 'number' ? places : 1);\n\t\tconst arguments_ = self.valpha === 1 ? self.color : [...self.color, this.valpha];\n\t\treturn colorString.to.rgb.percent(...arguments_);\n\t},\n\n\tarray() {\n\t\treturn this.valpha === 1 ? [...this.color] : [...this.color, this.valpha];\n\t},\n\n\tobject() {\n\t\tconst result = {};\n\t\tconst {channels} = convert[this.model];\n\t\tconst {labels} = convert[this.model];\n\n\t\tfor (let i = 0; i < channels; i++) {\n\t\t\tresult[labels[i]] = this.color[i];\n\t\t}\n\n\t\tif (this.valpha !== 1) {\n\t\t\tresult.alpha = this.valpha;\n\t\t}\n\n\t\treturn result;\n\t},\n\n\tunitArray() {\n\t\tconst rgb = this.rgb().color;\n\t\trgb[0] /= 255;\n\t\trgb[1] /= 255;\n\t\trgb[2] /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.push(this.valpha);\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tunitObject() {\n\t\tconst rgb = this.rgb().object();\n\t\trgb.r /= 255;\n\t\trgb.g /= 255;\n\t\trgb.b /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.alpha = this.valpha;\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tround(places) {\n\t\tplaces = Math.max(places || 0, 0);\n\t\treturn new Color([...this.color.map(roundToPlace(places)), this.valpha], this.model);\n\t},\n\n\talpha(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color([...this.color, Math.max(0, Math.min(1, value))], this.model);\n\t\t}\n\n\t\treturn this.valpha;\n\t},\n\n\t// Rgb\n\tred: getset('rgb', 0, maxfn(255)),\n\tgreen: getset('rgb', 1, maxfn(255)),\n\tblue: getset('rgb', 2, maxfn(255)),\n\n\thue: getset(['hsl', 'hsv', 'hsl', 'hwb', 'hcg'], 0, value => ((value % 360) + 360) % 360),\n\n\tsaturationl: getset('hsl', 1, maxfn(100)),\n\tlightness: getset('hsl', 2, maxfn(100)),\n\n\tsaturationv: getset('hsv', 1, maxfn(100)),\n\tvalue: getset('hsv', 2, maxfn(100)),\n\n\tchroma: getset('hcg', 1, maxfn(100)),\n\tgray: getset('hcg', 2, maxfn(100)),\n\n\twhite: getset('hwb', 1, maxfn(100)),\n\twblack: getset('hwb', 2, maxfn(100)),\n\n\tcyan: getset('cmyk', 0, maxfn(100)),\n\tmagenta: getset('cmyk', 1, maxfn(100)),\n\tyellow: getset('cmyk', 2, maxfn(100)),\n\tblack: getset('cmyk', 3, maxfn(100)),\n\n\tx: getset('xyz', 0, maxfn(95.047)),\n\ty: getset('xyz', 1, maxfn(100)),\n\tz: getset('xyz', 2, maxfn(108.833)),\n\n\tl: getset('lab', 0, maxfn(100)),\n\ta: getset('lab', 1),\n\tb: getset('lab', 2),\n\n\tkeyword(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color(value);\n\t\t}\n\n\t\treturn convert[this.model].keyword(this.color);\n\t},\n\n\thex(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color(value);\n\t\t}\n\n\t\treturn colorString.to.hex(...this.rgb().round().color);\n\t},\n\n\thexa(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color(value);\n\t\t}\n\n\t\tconst rgbArray = this.rgb().round().color;\n\n\t\tlet alphaHex = Math.round(this.valpha * 255).toString(16).toUpperCase();\n\t\tif (alphaHex.length === 1) {\n\t\t\talphaHex = '0' + alphaHex;\n\t\t}\n\n\t\treturn colorString.to.hex(...rgbArray) + alphaHex;\n\t},\n\n\trgbNumber() {\n\t\tconst rgb = this.rgb().color;\n\t\treturn ((rgb[0] & 0xFF) << 16) | ((rgb[1] & 0xFF) << 8) | (rgb[2] & 0xFF);\n\t},\n\n\tluminosity() {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tconst rgb = this.rgb().color;\n\n\t\tconst lum = [];\n\t\tfor (const [i, element] of rgb.entries()) {\n\t\t\tconst chan = element / 255;\n\t\t\tlum[i] = (chan <= 0.04045) ? chan / 12.92 : ((chan + 0.055) / 1.055) ** 2.4;\n\t\t}\n\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast(color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tconst lum1 = this.luminosity();\n\t\tconst lum2 = color2.luminosity();\n\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel(color2) {\n\t\t// https://www.w3.org/TR/WCAG/#contrast-enhanced\n\t\tconst contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tisDark() {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tconst rgb = this.rgb().color;\n\t\tconst yiq = (rgb[0] * 2126 + rgb[1] * 7152 + rgb[2] * 722) / 10000;\n\t\treturn yiq < 128;\n\t},\n\n\tisLight() {\n\t\treturn !this.isDark();\n\t},\n\n\tnegate() {\n\t\tconst rgb = this.rgb();\n\t\tfor (let i = 0; i < 3; i++) {\n\t\t\trgb.color[i] = 255 - rgb.color[i];\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tlighten(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[2] += hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdarken(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[2] -= hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tsaturate(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[1] += hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdesaturate(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[1] -= hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\twhiten(ratio) {\n\t\tconst hwb = this.hwb();\n\t\thwb.color[1] += hwb.color[1] * ratio;\n\t\treturn hwb;\n\t},\n\n\tblacken(ratio) {\n\t\tconst hwb = this.hwb();\n\t\thwb.color[2] += hwb.color[2] * ratio;\n\t\treturn hwb;\n\t},\n\n\tgrayscale() {\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_colour_to_grayscale\n\t\tconst rgb = this.rgb().color;\n\t\tconst value = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\treturn Color.rgb(value, value, value);\n\t},\n\n\tfade(ratio) {\n\t\treturn this.alpha(this.valpha - (this.valpha * ratio));\n\t},\n\n\topaquer(ratio) {\n\t\treturn this.alpha(this.valpha + (this.valpha * ratio));\n\t},\n\n\trotate(degrees) {\n\t\tconst hsl = this.hsl();\n\t\tlet hue = hsl.color[0];\n\t\thue = (hue + degrees) % 360;\n\t\thue = hue < 0 ? 360 + hue : hue;\n\t\thsl.color[0] = hue;\n\t\treturn hsl;\n\t},\n\n\tmix(mixinColor, weight) {\n\t\t// Ported from sass implementation in C\n\t\t// https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t\tif (!mixinColor || !mixinColor.rgb) {\n\t\t\tthrow new Error('Argument to \"mix\" was not a Color instance, but rather an instance of ' + typeof mixinColor);\n\t\t}\n\n\t\tconst color1 = mixinColor.rgb();\n\t\tconst color2 = this.rgb();\n\t\tconst p = weight === undefined ? 0.5 : weight;\n\n\t\tconst w = 2 * p - 1;\n\t\tconst a = color1.alpha() - color2.alpha();\n\n\t\tconst w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2;\n\t\tconst w2 = 1 - w1;\n\n\t\treturn Color.rgb(\n\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\tw1 * color1.blue() + w2 * color2.blue(),\n\t\t\tcolor1.alpha() * p + color2.alpha() * (1 - p));\n\t},\n};\n\n// Model conversion methods and static constructors\nfor (const model of Object.keys(convert)) {\n\tif (skippedModels.includes(model)) {\n\t\tcontinue;\n\t}\n\n\tconst {channels} = convert[model];\n\n\t// Conversion methods\n\tColor.prototype[model] = function (...arguments_) {\n\t\tif (this.model === model) {\n\t\t\treturn new Color(this);\n\t\t}\n\n\t\tif (arguments_.length > 0) {\n\t\t\treturn new Color(arguments_, model);\n\t\t}\n\n\t\treturn new Color([...assertArray(convert[this.model][model].raw(this.color)), this.valpha], model);\n\t};\n\n\t// 'static' construction methods\n\tColor[model] = function (...arguments_) {\n\t\tlet color = arguments_[0];\n\t\tif (typeof color === 'number') {\n\t\t\tcolor = zeroArray(arguments_, channels);\n\t\t}\n\n\t\treturn new Color(color, model);\n\t};\n}\n\nfunction roundTo(number, places) {\n\treturn Number(number.toFixed(places));\n}\n\nfunction roundToPlace(places) {\n\treturn function (number) {\n\t\treturn roundTo(number, places);\n\t};\n}\n\nfunction getset(model, channel, modifier) {\n\tmodel = Array.isArray(model) ? model : [model];\n\n\tfor (const m of model) {\n\t\t(limiters[m] ||= [])[channel] = modifier;\n\t}\n\n\tmodel = model[0];\n\n\treturn function (value) {\n\t\tlet result;\n\n\t\tif (value !== undefined) {\n\t\t\tif (modifier) {\n\t\t\t\tvalue = modifier(value);\n\t\t\t}\n\n\t\t\tresult = this[model]();\n\t\t\tresult.color[channel] = value;\n\t\t\treturn result;\n\t\t}\n\n\t\tresult = this[model]().color[channel];\n\t\tif (modifier) {\n\t\t\tresult = modifier(result);\n\t\t}\n\n\t\treturn result;\n\t};\n}\n\nfunction maxfn(max) {\n\treturn function (v) {\n\t\treturn Math.max(0, Math.min(max, v));\n\t};\n}\n\nfunction assertArray(value) {\n\treturn Array.isArray(value) ? value : [value];\n}\n\nfunction zeroArray(array, length) {\n\tfor (let i = 0; i < length; i++) {\n\t\tif (typeof array[i] !== 'number') {\n\t\t\tarray[i] = 0;\n\t\t}\n\t}\n\n\treturn array;\n}\n\nexport default Color;\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport Color from 'color';\n/**\n * Is the current theme dark?\n */\nexport function isDarkModeEnabled() {\n const darkModePreference = window?.matchMedia?.('(prefers-color-scheme: dark)')?.matches;\n const darkModeSetting = document.body.getAttribute('data-themes')?.includes('dark');\n return darkModeSetting || darkModePreference || false;\n}\n/**\n * Is the current theme high contrast?\n */\nexport function isHighContrastModeEnabled() {\n const highContrastPreference = window?.matchMedia?.('(forced-colors: active)')?.matches;\n const highContrastSetting = document.body.getAttribute('data-themes')?.includes('highcontrast');\n return highContrastSetting || highContrastPreference || false;\n}\n/**\n * Should we invert the text on this background color?\n * @param color RGB color value as a hex string\n * @return boolean\n */\nexport function invertTextColor(color) {\n return colorContrast(color, '#ffffff') < 4.5;\n}\n/**\n * Is this color too bright?\n * @param color RGB color value as a hex string\n * @return boolean\n */\nexport function isBrightColor(color) {\n return calculateLuma(color) > 0.6;\n}\n/**\n * Get color for on-page elements\n * theme color by default, grey if theme color is too bright.\n * @param color the color to contrast against, e.g. #ffffff\n * @param backgroundColor the background color to contrast against, e.g. #000000\n */\nexport function elementColor(color, backgroundColor) {\n const brightBackground = isBrightColor(backgroundColor);\n const blurredBackground = mix(backgroundColor, brightBackground ? color : '#ffffff', 66);\n let contrast = colorContrast(color, blurredBackground);\n const minContrast = isHighContrastModeEnabled() ? 5.6 : 3.2;\n let iteration = 0;\n let result = color;\n const epsilon = (brightBackground ? -100 : 100) / 255;\n while (contrast < minContrast && iteration++ < 100) {\n const hsl = hexToHSL(result);\n const l = Math.max(0, Math.min(255, hsl.l + epsilon));\n result = hslToHex({ h: hsl.h, s: hsl.s, l });\n contrast = colorContrast(result, blurredBackground);\n }\n return result;\n}\n/**\n * Get color for on-page text:\n * black if background is bright, white if background is dark.\n * @param color1 the color to contrast against, e.g. #ffffff\n * @param color2 the background color to contrast against, e.g. #000000\n * @param factor the factor to mix the colors between -100 and 100, e.g. 66\n */\nexport function mix(color1, color2, factor) {\n if (factor < -100 || factor > 100) {\n throw new RangeError('Factor must be between -100 and 100');\n }\n return new Color(color2).mix(new Color(color1), (factor + 100) / 200).hex();\n}\n/**\n * Lighten a color by a factor\n * @param color the color to lighten, e.g. #000000\n * @param factor the factor to lighten the color by between -100 and 100, e.g. -41\n */\nexport function lighten(color, factor) {\n if (factor < -100 || factor > 100) {\n throw new RangeError('Factor must be between -100 and 100');\n }\n return new Color(color).lighten((factor + 100) / 200).hex();\n}\n/**\n * Darken a color by a factor\n * @param color the color to darken, e.g. #ffffff\n * @param factor the factor to darken the color by between -100 and 100, e.g. 32\n */\nexport function darken(color, factor) {\n if (factor < -100 || factor > 100) {\n throw new RangeError('Factor must be between -100 and 100');\n }\n return new Color(color).darken((factor + 100) / 200).hex();\n}\n/**\n * Calculate the luminance of a color\n * @param color the color to calculate the luminance of, e.g. #ffffff\n */\nexport function calculateLuminance(color) {\n return hexToHSL(color).l;\n}\n/**\n * Calculate the luma of a color\n * @param color the color to calculate the luma of, e.g. #ffffff\n */\nexport function calculateLuma(color) {\n const rgb = hexToRGB(color).map((value) => {\n value /= 255;\n return value <= 0.03928\n ? value / 12.92\n : Math.pow((value + 0.055) / 1.055, 2.4);\n });\n const [red, green, blue] = rgb;\n return 0.2126 * red + 0.7152 * green + 0.0722 * blue;\n}\n/**\n * Calculate the contrast between two colors\n * @param color1 the first color to calculate the contrast of, e.g. #ffffff\n * @param color2 the second color to calculate the contrast of, e.g. #000000\n */\nexport function colorContrast(color1, color2) {\n const luminance1 = calculateLuma(color1) + 0.05;\n const luminance2 = calculateLuma(color2) + 0.05;\n return Math.max(luminance1, luminance2) / Math.min(luminance1, luminance2);\n}\n/**\n * Convert hex color to RGB\n * @param color RGB color value as a hex string\n */\nexport function hexToRGB(color) {\n return new Color(color).rgb().array();\n}\n/**\n * Convert RGB color to hex\n * @param color RGB color value as a hex string\n */\nexport function hexToHSL(color) {\n const hsl = new Color(color).hsl();\n return { h: hsl.color[0], s: hsl.color[1], l: hsl.color[2] };\n}\n/**\n * Convert HSL color to hex\n * @param hsl HSL color value as an object\n * @param hsl.h hue\n * @param hsl.s saturation\n * @param hsl.l lightness\n */\nexport function hslToHex(hsl) {\n return new Color(hsl).hex();\n}\n/**\n * Convert RGB color to hex\n * @param r red\n * @param g green\n * @param b blue\n */\nexport function rgbToHex(r, g, b) {\n const hex = ((1 << 24) | (r << 16) | (g << 8) | b).toString(16).slice(1);\n return `#${hex}`;\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, `.files-list__system-tags{--min-size: 32px;display:none;justify-content:center;align-items:center;min-width:calc(var(--min-size)*2);max-width:300px}.files-list__system-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:20px;text-align:center}.files-list__system-tag--more{overflow:visible;text-overflow:initial}.files-list__system-tag+.files-list__system-tag{margin-inline-start:5px}.files-list__system-tag[data-systemtag-color]{border-color:var(--systemtag-color);color:var(--systemtag-color);border-width:2px;line-height:18px}@media(min-width: 512px){.files-list__system-tags{display:flex}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/systemtags/src/css/fileEntryInlineSystemTags.scss\"],\"names\":[],\"mappings\":\"AAKA,yBACC,gBAAA,CACA,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,iCAAA,CACA,eAAA,CAGD,wBACC,gBAAA,CACA,gBAAA,CACA,uCAAA,CACA,gCAAA,CACA,mCAAA,CACA,sBAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CACA,gBAAA,CACA,iBAAA,CAEA,8BACC,gBAAA,CACA,qBAAA,CAID,gDACC,uBAAA,CAID,8CACC,mCAAA,CACA,4BAAA,CACA,gBAAA,CACA,gBAAA,CAIF,yBACC,yBACC,YAAA,CAAA\",\"sourcesContent\":[\"/**\\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n\\n.files-list__system-tags {\\n\\t--min-size: 32px;\\n\\tdisplay: none;\\n\\tjustify-content: center;\\n\\talign-items: center;\\n\\tmin-width: calc(var(--min-size) * 2);\\n\\tmax-width: 300px;\\n}\\n\\n.files-list__system-tag {\\n\\tpadding: 5px 10px;\\n\\tborder: 1px solid;\\n\\tborder-radius: var(--border-radius-pill);\\n\\tborder-color: var(--color-border);\\n\\tcolor: var(--color-text-maxcontrast);\\n\\theight: var(--min-size);\\n\\twhite-space: nowrap;\\n\\toverflow: hidden;\\n\\ttext-overflow: ellipsis;\\n\\tline-height: 20px; // min-size - 2 * 5px padding - 2 * 1px border\\n\\ttext-align: center;\\n\\n\\t&--more {\\n\\t\\toverflow: visible;\\n\\t\\ttext-overflow: initial;\\n\\t}\\n\\n\\t// Proper spacing if multiple shown\\n\\t& + .files-list__system-tag {\\n\\t\\tmargin-inline-start: 5px;\\n\\t}\\n\\n\\t// With color\\n\\t&[data-systemtag-color] {\\n\\t\\tborder-color: var(--systemtag-color);\\n\\t\\tcolor: var(--systemtag-color);\\n\\t\\tborder-width: 2px;\\n\\t\\tline-height: 18px; // min-size - 2 * 5px padding - 2 * 2px border\\n\\t}\\n}\\n\\n@media (min-width: 512px) {\\n\\t.files-list__system-tags {\\n\\t\\tdisplay: flex;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport axios from '@nextcloud/axios';\nimport { generateUrl, generateOcsUrl } from '@nextcloud/router';\nimport { t } from '@nextcloud/l10n';\nimport { davClient } from './davClient.js';\nimport { formatTag, parseIdFromLocation, parseTags } from '../utils';\nimport logger from '../logger.ts';\nimport { emit } from '@nextcloud/event-bus';\nimport { confirmPassword } from '@nextcloud/password-confirmation';\nexport const fetchTagsPayload = `<?xml version=\"1.0\"?>\n<d:propfind xmlns:d=\"DAV:\" xmlns:oc=\"http://owncloud.org/ns\" xmlns:nc=\"http://nextcloud.org/ns\">\n\t<d:prop>\n\t\t<oc:id />\n\t\t<oc:display-name />\n\t\t<oc:user-visible />\n\t\t<oc:user-assignable />\n\t\t<oc:can-assign />\n\t\t<d:getetag />\n\t\t<nc:color />\n\t</d:prop>\n</d:propfind>`;\nexport const fetchTags = async () => {\n const path = '/systemtags';\n try {\n const { data: tags } = await davClient.getDirectoryContents(path, {\n data: fetchTagsPayload,\n details: true,\n glob: '/systemtags/*', // Filter out first empty tag\n });\n return parseTags(tags);\n }\n catch (error) {\n logger.error(t('systemtags', 'Failed to load tags'), { error });\n throw new Error(t('systemtags', 'Failed to load tags'));\n }\n};\nexport const fetchTag = async (tagId) => {\n const path = '/systemtags/' + tagId;\n try {\n const { data: tag } = await davClient.stat(path, {\n data: fetchTagsPayload,\n details: true,\n });\n return parseTags([tag])[0];\n }\n catch (error) {\n logger.error(t('systemtags', 'Failed to load tag'), { error });\n throw new Error(t('systemtags', 'Failed to load tag'));\n }\n};\nexport const fetchLastUsedTagIds = async () => {\n const url = generateUrl('/apps/systemtags/lastused');\n try {\n const { data: lastUsedTagIds } = await axios.get(url);\n return lastUsedTagIds.map(Number);\n }\n catch (error) {\n logger.error(t('systemtags', 'Failed to load last used tags'), { error });\n throw new Error(t('systemtags', 'Failed to load last used tags'));\n }\n};\n/**\n * Create a tag and return the Id of the newly created tag.\n *\n * @param tag The tag to create\n */\nexport const createTag = async (tag) => {\n const path = '/systemtags';\n const tagToPost = formatTag(tag);\n try {\n const { headers } = await davClient.customRequest(path, {\n method: 'POST',\n data: tagToPost,\n });\n const contentLocation = headers.get('content-location');\n if (contentLocation) {\n emit('systemtags:tag:created', tag);\n return parseIdFromLocation(contentLocation);\n }\n logger.error(t('systemtags', 'Missing \"Content-Location\" header'));\n throw new Error(t('systemtags', 'Missing \"Content-Location\" header'));\n }\n catch (error) {\n if (error?.response?.status === 409) {\n logger.error(t('systemtags', 'A tag with the same name already exists'), { error });\n throw new Error(t('systemtags', 'A tag with the same name already exists'));\n }\n logger.error(t('systemtags', 'Failed to create tag'), { error });\n throw new Error(t('systemtags', 'Failed to create tag'));\n }\n};\nexport const updateTag = async (tag) => {\n const path = '/systemtags/' + tag.id;\n const data = `<?xml version=\"1.0\"?>\n\t<d:propertyupdate xmlns:d=\"DAV:\" xmlns:oc=\"http://owncloud.org/ns\" xmlns:nc=\"http://nextcloud.org/ns\">\n\t\t<d:set>\n\t\t\t<d:prop>\n\t\t\t\t<oc:display-name>${tag.displayName}</oc:display-name>\n\t\t\t\t<oc:user-visible>${tag.userVisible}</oc:user-visible>\n\t\t\t\t<oc:user-assignable>${tag.userAssignable}</oc:user-assignable>\n\t\t\t\t<nc:color>${tag?.color || null}</nc:color>\n\t\t\t</d:prop>\n\t\t</d:set>\n\t</d:propertyupdate>`;\n try {\n await davClient.customRequest(path, {\n method: 'PROPPATCH',\n data,\n });\n emit('systemtags:tag:updated', tag);\n }\n catch (error) {\n logger.error(t('systemtags', 'Failed to update tag'), { error });\n throw new Error(t('systemtags', 'Failed to update tag'));\n }\n};\nexport const deleteTag = async (tag) => {\n const path = '/systemtags/' + tag.id;\n try {\n await davClient.deleteFile(path);\n emit('systemtags:tag:deleted', tag);\n }\n catch (error) {\n logger.error(t('systemtags', 'Failed to delete tag'), { error });\n throw new Error(t('systemtags', 'Failed to delete tag'));\n }\n};\nexport const getTagObjects = async function (tag, type) {\n const path = `/systemtags/${tag.id}/${type}`;\n const data = `<?xml version=\"1.0\"?>\n\t<d:propfind xmlns:d=\"DAV:\" xmlns:nc=\"http://nextcloud.org/ns\">\n\t\t<d:prop>\n\t\t\t<nc:object-ids />\n\t\t\t<d:getetag />\n\t\t</d:prop>\n\t</d:propfind>`;\n const response = await davClient.stat(path, { data, details: true });\n const etag = response?.data?.props?.getetag || '\"\"';\n const objects = Object.values(response?.data?.props?.['object-ids'] || []).flat();\n return {\n etag,\n objects,\n };\n};\n/**\n * Set the objects for a tag.\n * Warning: This will overwrite the existing objects.\n * @param tag The tag to set the objects for\n * @param type The type of the objects\n * @param objectIds The objects to set\n * @param etag Strongly recommended to avoid conflict and data loss.\n */\nexport const setTagObjects = async function (tag, type, objectIds, etag = '') {\n const path = `/systemtags/${tag.id}/${type}`;\n let data = `<?xml version=\"1.0\"?>\n\t<d:propertyupdate xmlns:d=\"DAV:\" xmlns:nc=\"http://nextcloud.org/ns\">\n\t\t<d:set>\n\t\t\t<d:prop>\n\t\t\t\t<nc:object-ids>${objectIds.map(({ id, type }) => `<nc:object-id><nc:id>${id}</nc:id><nc:type>${type}</nc:type></nc:object-id>`).join('')}</nc:object-ids>\n\t\t\t</d:prop>\n\t\t</d:set>\n\t</d:propertyupdate>`;\n if (objectIds.length === 0) {\n data = `<?xml version=\"1.0\"?>\n\t\t<d:propertyupdate xmlns:d=\"DAV:\" xmlns:nc=\"http://nextcloud.org/ns\">\n\t\t\t<d:remove>\n\t\t\t\t<d:prop>\n\t\t\t\t\t<nc:object-ids />\n\t\t\t\t</d:prop>\n\t\t\t</d:remove>\n\t\t</d:propertyupdate>`;\n }\n await davClient.customRequest(path, {\n method: 'PROPPATCH',\n data,\n headers: {\n 'if-match': etag,\n },\n });\n};\nexport const updateSystemTagsAdminRestriction = async (isAllowed) => {\n // Convert to string for compatibility\n const isAllowedString = isAllowed ? '1' : '0';\n const url = generateOcsUrl('/apps/provisioning_api/api/v1/config/apps/{appId}/{key}', {\n appId: 'systemtags',\n key: 'restrict_creation_to_admin',\n });\n await confirmPassword();\n const res = await axios.post(url, {\n value: isAllowedString,\n });\n return res.data;\n};\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__.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 \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"2441\":\"2c050d23f9070dfa7f03\",\"5862\":\"142cd48ca8ec32e57725\",\"6227\":\"3494381758c4754ef3f5\",\"9552\":\"9685a1f4bd2a15cb119a\"}[chunkId] + \"\";\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 = 2766;","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 && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\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(/^blob:/, \"\").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\t2766: 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}\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, [4208], () => (__webpack_require__(44563)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","rootUrl","generateRemoteUrl","davClient","createClient","setHeaders","token","requesttoken","onRequestTokenUpdate","getRequestToken","parseTags","tags","map","_ref","props","Object","fromEntries","entries","_ref2","key","value","camelCase","String","parseIdFromLocation","url","queryPos","indexOf","substring","parts","split","result","length","pop","Number","formatTag","initialTag","tag","name","displayName","getNodeSystemTags","node","attribute","attributes","undefined","flat","text","setNodeSystemTags","Vue","getLoggerBuilder","setApp","detectUser","build","DefaultType","DefaultType2","FileAction","_action","constructor","action","this","validateAction","id","title","iconSvgInline","enabled","exec","execBatch","order","parent","default","destructive","inline","renderInline","Error","values","includes","registerFileAction","window","_nc_fileactions","debug","find","search","error","push","humanList","humanListBinary","formatFileSize","size","skipSmallSizes","binaryPrefixes","base1000","Math","floor","log","min","readableFormat","relativeSize","pow","toFixed","parseFloat","toLocaleString","stringify","Date","toISOString","sortNodes","nodes","options","sortingOptions","sortingMode","sortingOrder","collection","identifiers2","orders","sorting","_","index","collator","Intl","Collator","numeric","usage","sort","a2","b2","identifier","compare","orderBy","sortFavoritesFirst","v","favorite","sortFoldersFirst","type","basename2","displayname","basename","lastIndexOf","slice","Navigation","_views","_currentView","register","view","dispatchTypedEvent","CustomEvent","remove","findIndex","splice","setActive","event","detail","active","views","getNavigation","_nc_navigation","Column","_column","column","isValidColumn","render","summary","hasRequiredUtil","hasRequiredValidator","validator","util","requireUtil","exports","nameStartChar","nameRegexp","regexName","RegExp","isExist","isEmptyObject","obj","keys","merge","target","arrayMode","len","i2","getValue","isName","string","getAllMatches","regex","matches","match","allmatches","startIndex","lastIndex","requireValidator","util2","defaultOptions","allowBooleanAttributes","unpairedTags","isWhiteSpace","char","readPI","xmlData","start","tagname","substr","getErrorObject","getLineNumberForPosition","readCommentAndCDATA","angleBracketsCount","validate","assign","tagFound","reachedRoot","err","tagStartPos","closingTag","tagName","trim","msg","readAttributeStr","attrStr","attrStrStart","isValid","validateAttributeString","code","line","tagClosed","otg","openPos","col","afterAmp","validateAmpersand","JSON","t2","replace","doubleQuote","singleQuote","startChar","validAttrStrRegxp","attrNames","getPositionFromMatch","attrName","validateAttrName","hasOwnProperty","re2","validateNumberAmpersand","count","message","lineNumber","lines","hasRequiredOptionsBuilder","xmlNode","hasRequiredXmlNode","DocTypeReader","hasRequiredDocTypeReader","strnum","hasRequiredStrnum","ignoreAttributes","hasRequiredIgnoreAttributes","OrderedObjParser_1","hasRequiredOrderedObjParser","OptionsBuilder","requireIgnoreAttributes","ignoreAttributes2","Array","isArray","pattern","test","hasRequiredNode2json","XMLParser_1","hasRequiredXMLParser","orderedJs2Xml","hasRequiredOrderedJs2Xml","json2xml","hasRequiredJson2xml","fxp","hasRequiredFxp","node2json","requireNode2json","compress","arr","jPath","compressedObj","tagObj","property","propName","newJpath","textNodeName","val","isLeaf","isLeafTag","assignAttributes","alwaysCreateTextNode","attrMap","jpath","atrrName","propCount","prettify","requireXMLParser","buildOptions","preserveOrder","attributeNamePrefix","attributesGroupName","removeNSPrefix","parseTagValue","parseAttributeValue","trimValues","cdataPropName","numberParseOptions","hex","leadingZeros","eNotation","tagValueProcessor","attributeValueProcessor","stopNodes","commentPropName","processEntities","htmlEntities","ignoreDeclaration","ignorePiTags","transformTagName","transformAttributeName","updateTag","attrs","requireOptionsBuilder","OrderedObjParser","xmlNode2","child","add","addChild","readDocType","readEntityExp","entityName","isEntity","isElement","isAttlist","isNotation","validateEntityName","entities","hasBody","comment","exp","regx","i","requireDocTypeReader","toNumber","hexRegex","numRegex","parseInt","consider","decimalPoint","str","trimmedStr","skipLike","sign","numTrimmedByZeros","numStr","num","requireStrnum","getIgnoreAttributesFn","addExternalEntities","externalEntities","entKeys","ent","lastEntities","parseTextData","dontTrim","hasAttributes","isLeafNode","escapeEntities","replaceEntitiesValue","newval","parseValue","resolveNameSpace","prefix","charAt","attrsRegx","buildAttributesMap","ignoreAttributesFn","oldVal","aName","newVal","attrCollection","parseXml","xmlObj","currentNode","textData","closeIndex","findClosingIndex","colonIndex","saveTextToParentTag","lastTagName","propIndex","tagsNodeStack","tagData","readTagExp","childNode","tagExp","attrExpPresent","endIndex","docTypeEntities","rawTagName","lastTag","isItStopNode","tagContent","result2","readStopNodeData","entity","ampEntity","currentTagName","allNodesExp","stopNodePath","stopNodeExp","errMsg","closingIndex","closingChar","attrBoundary","ch","data","tagExpWithClosingIndex","separatorIndex","trimStart","openTagCount","shouldParse","fromCharCode","requireOrderedObjParser","validator2","parse","validationOption","toString","orderedObjParser","orderedResult","addEntity","requireOrderedJs2Xml","arrToStr","indentation","xmlStr","isPreviousElementTag","newJPath","tagText","isStopNode","attStr2","attr_to_str","tempInd","piTextNodeName","newIdentation","indentBy","tagStart","tagValue","suppressUnpairedNode","suppressEmptyNode","endsWith","attr","attrVal","suppressBooleanAttributes","textValue","jArray","format","fxpExports","XMLParser","XMLBuilder","buildFromOrderedJs","oneListGroup","Builder","isAttribute","attrPrefixLen","processTextOrObjNode","indentate","tagEndChar","newLine","object","level","ajPath","j2x","concat","buildTextValNode","buildObjectNode","repeat","startsWith","prototype","jObj","arrayNodeName","join","call","buildAttrPairStr","arrLen","listTagVal","listTagAttr","j2","item","Ks","L","closeTag","tagEndExp","piClosingChar","requireJson2xml","XMLValidator","requireFxp","View","_view","isValidView","caption","emptyTitle","emptyCaption","getContents","icon","params","columns","emptyView","sticky","expanded","defaultSortKey","loadChildViews","TypeError","jsonObject","parser","some","x","toLowerCase","isSvg","forEach","debug_1","hasRequiredDebug","constants","hasRequiredConstants","requireDebug","process","env","NODE_DEBUG","args","console","requireConstants","MAX_SAFE_INTEGER","MAX_LENGTH","MAX_SAFE_COMPONENT_LENGTH","MAX_SAFE_BUILD_LENGTH","RELEASE_TYPES","SEMVER_SPEC_VERSION","FLAG_INCLUDE_PRERELEASE","FLAG_LOOSE","hasRequiredRe","parseOptions_1","hasRequiredParseOptions","identifiers","hasRequiredIdentifiers","semver","hasRequiredSemver","parse_1","hasRequiredParse","valid_1","hasRequiredValid","major_1","hasRequiredMajor","re","requireSemver","safeRe","t","module","src","R","LETTERDASHNUMBER","safeRegexReplacements","createToken","isGlobal","safe","max","makeSafeRegex","NUMERICIDENTIFIER","NUMERICIDENTIFIERLOOSE","NONNUMERICIDENTIFIER","PRERELEASEIDENTIFIER","PRERELEASEIDENTIFIERLOOSE","BUILDIDENTIFIER","MAINVERSION","PRERELEASE","BUILD","FULLPLAIN","MAINVERSIONLOOSE","PRERELEASELOOSE","LOOSEPLAIN","XRANGEIDENTIFIER","XRANGEIDENTIFIERLOOSE","GTLT","XRANGEPLAIN","XRANGEPLAINLOOSE","COERCEPLAIN","COERCE","COERCEFULL","LONETILDE","tildeTrimReplace","LONECARET","caretTrimReplace","comparatorTrimReplace","parseOptions","looseOption","freeze","loose","emptyOpts","requireParseOptions","compareIdentifiers","anum","bnum","rcompareIdentifiers","requireIdentifiers","SemVer","version","includePrerelease","m2","LOOSE","FULL","raw","major","minor","patch","prerelease","other","compareMain","comparePre","compareBuild","inc","release","identifierBase","base","isNaN","throwErrors","er","requireParse","requireValid","requireMajor","async","response","Promise","resolve","spawnDialog","defineAsyncComponent","status","fill","TagMultipleSvg","isPublicShare","isDavResource","permissions","Permission","UPDATE","executeAction","activeStore","store","defineStore","state","_initialized","activeNode","activeView","activeAction","actions","setActiveNode","logger","clearActiveNode","onDeletedNode","source","setActiveAction","clearActiveAction","onChangedView","arguments","navigation","subscribe","addEventListener","useActiveStore","_nc_files_pinia","createPinia","currentDir","OCP","Files","Router","query","dir","currentView","NodeStatus","LOADING","success","showSuccess","showError","rootPath","client","davGetClient","resultToNode","davResultToNode","formatReportPayload","tagId","getDavNameSpaces","getDavProperties","tagToNode","Folder","davRemoteURL","owner","getCurrentUser","uid","root","READ","systemTagsViewId","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","cache","renderTag","isMore","tagElement","document","createElement","classList","setAttribute","textContent","cachedTag","color","mainBackgroundColor","getComputedStyle","body","getPropertyValue","isDarkModeEnabled","primaryElement","elementColor","style","setProperty","systemTagsElement","fileid","fetchTags","append","moreTagElement","then","systemTagsHtml","querySelectorAll","element","replaceWith","updateSystemTagsColorAttribute","FileType","dirname","path","goToRoute","openfile","HIDDEN","registerDavProperty","bulkSystemTagsAction","inlineSystemTagsAction","openInFilesAction","svgTagMultiple","tagsCache","filter","userVisible","folder","NONE","contents","getDirectoryContents","davRootPath","details","headers","method","useHotKey","manageTagAction","stop","prevent","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","reverseNames","create","hasOwn","cs","to","get","clamp","number_","hexDouble","string_","round","toUpperCase","model","hsl","hwb","rgb","hexAlpha","alpha","rgba","percent","r","g","b","hsla","hwba","a","keyword","reverseKeywords","convert","channels","labels","hsv","cmyk","xyz","lab","lch","ansi16","ansi256","hcg","apple","LAB_FT","defineProperty","from","wrapConversion","toModel","graph","fn","conversions","cur","unshift","conversion","delta","h","s","l","rdif","gdif","bdif","diff","diffc","c","w","k","reversed","currentClosestKeyword","currentClosestDistance","POSITIVE_INFINITY","distance","y","z","t3","t1","smin","lmin","hi","f","p","q","vmin","sl","wh","bl","ratio","n","m","y2","x2","z2","atan2","PI","sqrt","hr","cos","sin","saturation","ansi","mult","trunc","rem","colorString","integer","chroma","hue","pure","mg","fromModel","models","buildGraph","queue","current","adjacents","adjacent","deriveBFS","wrapRaw","wrappedFn","arg0","wrapRounded","routes","routeModels","skippedModels","hashedModelKeys","limiters","valpha","newArray","zeroArray","hashedKeys","limit","toJSON","places","self","arguments_","percentString","array","unitArray","unitObject","roundToPlace","getset","maxfn","saturationl","lightness","saturationv","wblack","hexa","rgbArray","alphaHex","rgbNumber","luminosity","lum","chan","contrast","color2","lum1","lum2","contrastRatio","isDark","isLight","negate","lighten","darken","saturate","desaturate","whiten","blacken","grayscale","fade","opaquer","rotate","degrees","mix","mixinColor","weight","color1","w1","w2","number","roundTo","channel","modifier","darkModePreference","matchMedia","darkModeSetting","getAttribute","invertTextColor","colorContrast","backgroundColor","brightBackground","calculateLuma","isBrightColor","blurredBackground","Color","minContrast","highContrastPreference","highContrastSetting","isHighContrastModeEnabled","iteration","epsilon","hexToHSL","hslToHex","hexToRGB","luminance1","luminance2","___CSS_LOADER_EXPORT___","fetchTagsPayload","glob","fetchTag","stat","createTag","tagToPost","customRequest","contentLocation","emit","userAssignable","getTagObjects","etag","getetag","objects","setTagObjects","objectIds","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","every","getter","__esModule","d","definition","o","enumerable","e","chunkId","all","reduce","promises","u","globalThis","Function","prop","done","script","needAttach","scripts","getElementsByTagName","charset","timeout","nc","onScriptComplete","prev","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","setTimeout","bind","head","appendChild","Symbol","toStringTag","nmd","paths","children","scriptUrl","importScripts","location","currentScript","baseURI","href","installedChunks","installedChunkData","promise","reject","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file +{"version":3,"file":"systemtags-init.js?v=154a3842f33fb9dcacad","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/systemtags/src/services/davClient.ts","webpack:///nextcloud/apps/systemtags/src/utils.ts","webpack:///nextcloud/apps/systemtags/src/logger.ts","webpack:///nextcloud/node_modules/@nextcloud/files/dist/index.mjs","webpack:///nextcloud/apps/systemtags/src/files_actions/bulkSystemTagsAction.ts","webpack:///nextcloud/apps/files/src/logger.ts","webpack:///nextcloud/apps/files/src/utils/actionUtils.ts","webpack:///nextcloud/apps/files/src/store/active.ts","webpack:///nextcloud/apps/files/src/store/index.ts","webpack:///nextcloud/apps/systemtags/src/services/systemtags.ts","webpack:///nextcloud/apps/systemtags/src/files_views/systemtagsView.ts","webpack://nextcloud/./apps/systemtags/src/css/fileEntryInlineSystemTags.scss?0a01","webpack:///nextcloud/apps/systemtags/src/files_actions/inlineSystemTagsAction.ts","webpack:///nextcloud/apps/systemtags/src/files_actions/openInFilesAction.ts","webpack:///nextcloud/apps/systemtags/src/init.ts","webpack:///nextcloud/apps/systemtags/src/services/HotKeysService.ts","webpack:///nextcloud/node_modules/color-string/node_modules/color-name/index.js","webpack:///nextcloud/node_modules/color-string/index.js","webpack:///nextcloud/node_modules/color/node_modules/color-name/index.js","webpack:///nextcloud/node_modules/color/node_modules/color-convert/conversions.js","webpack:///nextcloud/node_modules/color/node_modules/color-convert/route.js","webpack:///nextcloud/node_modules/color/node_modules/color-convert/index.js","webpack:///nextcloud/node_modules/color/index.js","webpack:///nextcloud/apps/systemtags/src/utils/colorUtils.ts","webpack:///nextcloud/apps/systemtags/src/css/fileEntryInlineSystemTags.scss","webpack:///nextcloud/apps/systemtags/src/services/api.ts","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\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 * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { createClient } from 'webdav';\nimport { generateRemoteUrl } from '@nextcloud/router';\nimport { getRequestToken, onRequestTokenUpdate } from '@nextcloud/auth';\n// init webdav client\nconst rootUrl = generateRemoteUrl('dav');\nexport const davClient = createClient(rootUrl);\n// set CSRF token header\nconst setHeaders = (token) => {\n davClient.setHeaders({\n // Add this so the server knows it is an request from the browser\n 'X-Requested-With': 'XMLHttpRequest',\n // Inject user auth\n requesttoken: token ?? '',\n });\n};\n// refresh headers when request token changes\nonRequestTokenUpdate(setHeaders);\nsetHeaders(getRequestToken());\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport camelCase from 'camelcase';\nimport Vue from 'vue';\nexport const defaultBaseTag = {\n userVisible: true,\n userAssignable: true,\n canAssign: true,\n};\nexport const parseTags = (tags) => {\n return tags.map(({ props }) => Object.fromEntries(Object.entries(props)\n .map(([key, value]) => [camelCase(key), camelCase(key) === 'displayName' ? String(value) : value])));\n};\n/**\n * Parse id from `Content-Location` header\n * @param url URL to parse\n */\nexport const parseIdFromLocation = (url) => {\n const queryPos = url.indexOf('?');\n if (queryPos > 0) {\n url = url.substring(0, queryPos);\n }\n const parts = url.split('/');\n let result;\n do {\n result = parts[parts.length - 1];\n parts.pop();\n // note: first result can be empty when there is a trailing slash,\n // so we take the part before that\n } while (!result && parts.length > 0);\n return Number(result);\n};\nexport const formatTag = (initialTag) => {\n if ('name' in initialTag && !('displayName' in initialTag)) {\n return { ...initialTag };\n }\n const tag = { ...initialTag };\n tag.name = tag.displayName;\n delete tag.displayName;\n return tag;\n};\nexport const getNodeSystemTags = function (node) {\n const attribute = node.attributes?.['system-tags']?.['system-tag'];\n if (attribute === undefined) {\n return [];\n }\n // if there is only one tag it is a single string or prop object\n // if there are multiple then its an array - so we flatten it to be always an array of string or prop objects\n return [attribute]\n .flat()\n .map((tag) => (typeof tag === 'string'\n // its a plain text prop (the tag name) without prop attributes\n ? tag\n // its a prop object with attributes, the tag name is in the 'text' attribute\n : tag.text));\n};\nexport const setNodeSystemTags = function (node, tags) {\n Vue.set(node.attributes, 'system-tags', {\n 'system-tag': tags,\n });\n};\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getLoggerBuilder } from '@nextcloud/logger';\nexport default getLoggerBuilder()\n .setApp('systemtags')\n .detectUser()\n .build();\n","import { o as logger } from \"./chunks/dav-Co9y-hkg.mjs\";\nimport { q, F, s, N, t, P, c, l, m, n, a, g, p, b, r, d, h, f, k, j, e, i } from \"./chunks/dav-Co9y-hkg.mjs\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { extname, basename } from \"path\";\nimport { getCanonicalLocale, getLanguage } from \"@nextcloud/l10n\";\nimport { TypedEventTarget } from \"typescript-event-target\";\nvar NewMenuEntryCategory = /* @__PURE__ */ ((NewMenuEntryCategory2) => {\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"UploadFromDevice\"] = 0] = \"UploadFromDevice\";\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"CreateNew\"] = 1] = \"CreateNew\";\n NewMenuEntryCategory2[NewMenuEntryCategory2[\"Other\"] = 2] = \"Other\";\n return NewMenuEntryCategory2;\n})(NewMenuEntryCategory || {});\nclass NewFileMenu {\n _entries = [];\n registerEntry(entry) {\n this.validateEntry(entry);\n entry.category = entry.category ?? 1;\n this._entries.push(entry);\n }\n unregisterEntry(entry) {\n const entryIndex = typeof entry === \"string\" ? this.getEntryIndex(entry) : this.getEntryIndex(entry.id);\n if (entryIndex === -1) {\n logger.warn(\"Entry not found, nothing removed\", { entry, entries: this.getEntries() });\n return;\n }\n this._entries.splice(entryIndex, 1);\n }\n /**\n * Get the list of registered entries\n *\n * @param {Folder} context the creation context. Usually the current folder\n */\n getEntries(context) {\n if (context) {\n return this._entries.filter((entry) => typeof entry.enabled === \"function\" ? entry.enabled(context) : true);\n }\n return this._entries;\n }\n getEntryIndex(id) {\n return this._entries.findIndex((entry) => entry.id === id);\n }\n validateEntry(entry) {\n if (!entry.id || !entry.displayName || !(entry.iconSvgInline || entry.iconClass) || !entry.handler) {\n throw new Error(\"Invalid entry\");\n }\n if (typeof entry.id !== \"string\" || typeof entry.displayName !== \"string\") {\n throw new Error(\"Invalid id or displayName property\");\n }\n if (entry.iconClass && typeof entry.iconClass !== \"string\" || entry.iconSvgInline && typeof entry.iconSvgInline !== \"string\") {\n throw new Error(\"Invalid icon provided\");\n }\n if (entry.enabled !== void 0 && typeof entry.enabled !== \"function\") {\n throw new Error(\"Invalid enabled property\");\n }\n if (typeof entry.handler !== \"function\") {\n throw new Error(\"Invalid handler property\");\n }\n if (\"order\" in entry && typeof entry.order !== \"number\") {\n throw new Error(\"Invalid order property\");\n }\n if (this.getEntryIndex(entry.id) !== -1) {\n throw new Error(\"Duplicate entry\");\n }\n }\n}\nconst getNewFileMenu = function() {\n if (typeof window._nc_newfilemenu === \"undefined\") {\n window._nc_newfilemenu = new NewFileMenu();\n logger.debug(\"NewFileMenu initialized\");\n }\n return window._nc_newfilemenu;\n};\nvar DefaultType = /* @__PURE__ */ ((DefaultType2) => {\n DefaultType2[\"DEFAULT\"] = \"default\";\n DefaultType2[\"HIDDEN\"] = \"hidden\";\n return DefaultType2;\n})(DefaultType || {});\nclass 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 title() {\n return this._action.title;\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 parent() {\n return this._action.parent;\n }\n get default() {\n return this._action.default;\n }\n get destructive() {\n return this._action.destructive;\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 (\"title\" in action && typeof action.title !== \"function\") {\n throw new Error(\"Invalid title 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 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 (action.destructive !== void 0 && typeof action.destructive !== \"boolean\") {\n throw new Error(\"Invalid destructive flag\");\n }\n if (\"parent\" in action && typeof action.parent !== \"string\") {\n throw new Error(\"Invalid parent\");\n }\n if (action.default && !Object.values(DefaultType).includes(action.default)) {\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}\nconst registerFileAction = function(action) {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\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};\nconst getFileActions = function() {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\n return window._nc_fileactions;\n};\nclass FileListAction {\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 order() {\n return this._action.order;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\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 (\"iconSvgInline\" in action && typeof action.iconSvgInline !== \"function\") {\n throw new Error(\"Invalid iconSvgInline function\");\n }\n if (\"order\" in action && typeof action.order !== \"number\") {\n throw new Error(\"Invalid order\");\n }\n if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n throw new Error(\"Invalid enabled function\");\n }\n if (!action.exec || typeof action.exec !== \"function\") {\n throw new Error(\"Invalid exec function\");\n }\n }\n}\nconst registerFileListAction = (action) => {\n if (typeof window._nc_filelistactions === \"undefined\") {\n window._nc_filelistactions = [];\n }\n if (window._nc_filelistactions.find((listAction) => listAction.id === action.id)) {\n logger.error(`FileListAction with id \"${action.id}\" is already registered`, { action });\n return;\n }\n window._nc_filelistactions.push(action);\n};\nconst getFileListActions = () => {\n if (typeof window._nc_filelistactions === \"undefined\") {\n window._nc_filelistactions = [];\n }\n return window._nc_filelistactions;\n};\nclass Header {\n _header;\n constructor(header) {\n this.validateHeader(header);\n this._header = header;\n }\n get id() {\n return this._header.id;\n }\n get order() {\n return this._header.order;\n }\n get enabled() {\n return this._header.enabled;\n }\n get render() {\n return this._header.render;\n }\n get updated() {\n return this._header.updated;\n }\n validateHeader(header) {\n if (!header.id || !header.render || !header.updated) {\n throw new Error(\"Invalid header: id, render and updated are required\");\n }\n if (typeof header.id !== \"string\") {\n throw new Error(\"Invalid id property\");\n }\n if (header.enabled !== void 0 && typeof header.enabled !== \"function\") {\n throw new Error(\"Invalid enabled property\");\n }\n if (header.render && typeof header.render !== \"function\") {\n throw new Error(\"Invalid render property\");\n }\n if (header.updated && typeof header.updated !== \"function\") {\n throw new Error(\"Invalid updated property\");\n }\n }\n}\nconst registerFileListHeaders = function(header) {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n if (window._nc_filelistheader.find((search) => search.id === header.id)) {\n logger.error(`Header ${header.id} already registered`, { header });\n return;\n }\n window._nc_filelistheader.push(header);\n};\nconst getFileListHeaders = function() {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n return window._nc_filelistheader;\n};\nvar InvalidFilenameErrorReason = /* @__PURE__ */ ((InvalidFilenameErrorReason2) => {\n InvalidFilenameErrorReason2[\"ReservedName\"] = \"reserved name\";\n InvalidFilenameErrorReason2[\"Character\"] = \"character\";\n InvalidFilenameErrorReason2[\"Extension\"] = \"extension\";\n return InvalidFilenameErrorReason2;\n})(InvalidFilenameErrorReason || {});\nclass InvalidFilenameError extends Error {\n constructor(options) {\n super(`Invalid ${options.reason} '${options.segment}' in filename '${options.filename}'`, { cause: options });\n }\n /**\n * The filename that was validated\n */\n get filename() {\n return this.cause.filename;\n }\n /**\n * Reason why the validation failed\n */\n get reason() {\n return this.cause.reason;\n }\n /**\n * Part of the filename that caused this error\n */\n get segment() {\n return this.cause.segment;\n }\n}\nfunction validateFilename(filename) {\n const capabilities = getCapabilities().files;\n const forbiddenCharacters = capabilities.forbidden_filename_characters ?? window._oc_config?.forbidden_filenames_characters ?? [\"/\", \"\\\\\"];\n for (const character of forbiddenCharacters) {\n if (filename.includes(character)) {\n throw new InvalidFilenameError({ segment: character, reason: \"character\", filename });\n }\n }\n filename = filename.toLocaleLowerCase();\n const forbiddenFilenames = capabilities.forbidden_filenames ?? [\".htaccess\"];\n if (forbiddenFilenames.includes(filename)) {\n throw new InvalidFilenameError({\n filename,\n segment: filename,\n reason: \"reserved name\"\n /* ReservedName */\n });\n }\n const endOfBasename = filename.indexOf(\".\", 1);\n const basename2 = filename.substring(0, endOfBasename === -1 ? void 0 : endOfBasename);\n const forbiddenFilenameBasenames = capabilities.forbidden_filename_basenames ?? [];\n if (forbiddenFilenameBasenames.includes(basename2)) {\n throw new InvalidFilenameError({\n filename,\n segment: basename2,\n reason: \"reserved name\"\n /* ReservedName */\n });\n }\n const forbiddenFilenameExtensions = capabilities.forbidden_filename_extensions ?? [\".part\", \".filepart\"];\n for (const extension of forbiddenFilenameExtensions) {\n if (filename.length > extension.length && filename.endsWith(extension)) {\n throw new InvalidFilenameError({ segment: extension, reason: \"extension\", filename });\n }\n }\n}\nfunction isFilenameValid(filename) {\n try {\n validateFilename(filename);\n return true;\n } catch (error) {\n if (error instanceof InvalidFilenameError) {\n return false;\n }\n throw error;\n }\n}\nfunction getUniqueName(name, otherNames, options) {\n const opts = {\n suffix: (n2) => `(${n2})`,\n ignoreFileExtension: false,\n ...options\n };\n let newName = name;\n let i2 = 1;\n while (otherNames.includes(newName)) {\n const ext = opts.ignoreFileExtension ? \"\" : extname(name);\n const base = basename(name, ext);\n newName = `${base} ${opts.suffix(i2++)}${ext}`;\n }\n return newName;\n}\nconst humanList = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\"];\nconst humanListBinary = [\"B\", \"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\"];\nfunction formatFileSize(size, skipSmallSizes = false, binaryPrefixes = false, base1000 = false) {\n binaryPrefixes = binaryPrefixes && !base1000;\n if (typeof size === \"string\") {\n size = Number(size);\n }\n let order = size > 0 ? Math.floor(Math.log(size) / Math.log(base1000 ? 1e3 : 1024)) : 0;\n order = Math.min((binaryPrefixes ? humanListBinary.length : humanList.length) - 1, order);\n const readableFormat = binaryPrefixes ? humanListBinary[order] : humanList[order];\n let relativeSize = (size / Math.pow(base1000 ? 1e3 : 1024, order)).toFixed(1);\n if (skipSmallSizes === true && order === 0) {\n return (relativeSize !== \"0.0\" ? \"< 1 \" : \"0 \") + (binaryPrefixes ? humanListBinary[1] : humanList[1]);\n }\n if (order < 2) {\n relativeSize = parseFloat(relativeSize).toFixed(0);\n } else {\n relativeSize = parseFloat(relativeSize).toLocaleString(getCanonicalLocale());\n }\n return relativeSize + \" \" + readableFormat;\n}\nfunction parseFileSize(value, forceBinary = false) {\n try {\n value = `${value}`.toLocaleLowerCase().replaceAll(/\\s+/g, \"\").replaceAll(\",\", \".\");\n } catch (e2) {\n return null;\n }\n const match = value.match(/^([0-9]*(\\.[0-9]*)?)([kmgtp]?)(i?)b?$/);\n if (match === null || match[1] === \".\" || match[1] === \"\") {\n return null;\n }\n const bytesArray = {\n \"\": 0,\n k: 1,\n m: 2,\n g: 3,\n t: 4,\n p: 5,\n e: 6\n };\n const decimalString = `${match[1]}`;\n const base = match[4] === \"i\" || forceBinary ? 1024 : 1e3;\n return Math.round(Number.parseFloat(decimalString) * base ** bytesArray[match[3]]);\n}\nfunction stringify(value) {\n if (value instanceof Date) {\n return value.toISOString();\n }\n return String(value);\n}\nfunction orderBy(collection, identifiers2, orders) {\n identifiers2 = identifiers2 ?? [(value) => value];\n orders = orders ?? [];\n const sorting = identifiers2.map((_, index) => (orders[index] ?? \"asc\") === \"asc\" ? 1 : -1);\n const collator = Intl.Collator(\n [getLanguage(), getCanonicalLocale()],\n {\n // handle 10 as ten and not as one-zero\n numeric: true,\n usage: \"sort\"\n }\n );\n return [...collection].sort((a2, b2) => {\n for (const [index, identifier] of identifiers2.entries()) {\n const value = collator.compare(stringify(identifier(a2)), stringify(identifier(b2)));\n if (value !== 0) {\n return value * sorting[index];\n }\n }\n return 0;\n });\n}\nvar FilesSortingMode = /* @__PURE__ */ ((FilesSortingMode2) => {\n FilesSortingMode2[\"Name\"] = \"basename\";\n FilesSortingMode2[\"Modified\"] = \"mtime\";\n FilesSortingMode2[\"Size\"] = \"size\";\n return FilesSortingMode2;\n})(FilesSortingMode || {});\nfunction sortNodes(nodes, options = {}) {\n const sortingOptions = {\n // Default to sort by name\n sortingMode: \"basename\",\n // Default to sort ascending\n sortingOrder: \"asc\",\n ...options\n };\n const basename2 = (name) => name.lastIndexOf(\".\") > 0 ? name.slice(0, name.lastIndexOf(\".\")) : name;\n const identifiers2 = [\n // 1: Sort favorites first if enabled\n ...sortingOptions.sortFavoritesFirst ? [(v) => v.attributes?.favorite !== 1] : [],\n // 2: Sort folders first if sorting by name\n ...sortingOptions.sortFoldersFirst ? [(v) => v.type !== \"folder\"] : [],\n // 3: Use sorting mode if NOT basename (to be able to use display name too)\n ...sortingOptions.sortingMode !== \"basename\" ? [(v) => v[sortingOptions.sortingMode]] : [],\n // 4: Use display name if available, fallback to name\n (v) => basename2(v.displayname || v.attributes?.displayname || v.basename),\n // 5: Finally, use basename if all previous sorting methods failed\n (v) => v.basename\n ];\n const orders = [\n // (for 1): always sort favorites before normal files\n ...sortingOptions.sortFavoritesFirst ? [\"asc\"] : [],\n // (for 2): always sort folders before files\n ...sortingOptions.sortFoldersFirst ? [\"asc\"] : [],\n // (for 3): Reverse if sorting by mtime as mtime higher means edited more recent -> lower\n ...sortingOptions.sortingMode === \"mtime\" ? [sortingOptions.sortingOrder === \"asc\" ? \"desc\" : \"asc\"] : [],\n // (also for 3 so make sure not to conflict with 2 and 3)\n ...sortingOptions.sortingMode !== \"mtime\" && sortingOptions.sortingMode !== \"basename\" ? [sortingOptions.sortingOrder] : [],\n // for 4: use configured sorting direction\n sortingOptions.sortingOrder,\n // for 5: use configured sorting direction\n sortingOptions.sortingOrder\n ];\n return orderBy(nodes, identifiers2, orders);\n}\nclass Navigation extends TypedEventTarget {\n _views = [];\n _currentView = null;\n /**\n * Register a new view on the navigation\n * @param view The view to register\n * @throws `Error` is thrown if a view with the same id is already registered\n */\n register(view) {\n if (this._views.find((search) => search.id === view.id)) {\n throw new Error(`View id ${view.id} is already registered`);\n }\n this._views.push(view);\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n /**\n * Remove a registered view\n * @param id The id of the view to remove\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 this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n }\n /**\n * Set the currently active view\n * @fires UpdateActiveViewEvent\n * @param view New active view\n */\n setActive(view) {\n this._currentView = view;\n const event = new CustomEvent(\"updateActive\", { detail: view });\n this.dispatchTypedEvent(\"updateActive\", event);\n }\n /**\n * The currently active files view\n */\n get active() {\n return this._currentView;\n }\n /**\n * All registered views\n */\n get views() {\n return this._views;\n }\n}\nconst getNavigation = function() {\n if (typeof window._nc_navigation === \"undefined\") {\n window._nc_navigation = new Navigation();\n logger.debug(\"Navigation service initialized\");\n }\n return window._nc_navigation;\n};\nclass Column {\n _column;\n constructor(column) {\n isValidColumn(column);\n this._column = column;\n }\n get id() {\n return this._column.id;\n }\n get title() {\n return this._column.title;\n }\n get render() {\n return this._column.render;\n }\n get sort() {\n return this._column.sort;\n }\n get summary() {\n return this._column.summary;\n }\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 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};\nfunction getDefaultExportFromCjs(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, \"default\") ? x[\"default\"] : x;\n}\nvar validator = {};\nvar util = {};\nvar hasRequiredUtil;\nfunction requireUtil() {\n if (hasRequiredUtil) return util;\n hasRequiredUtil = 1;\n (function(exports) {\n const nameStartChar = \":A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\";\n const nameChar = nameStartChar + \"\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040\";\n const nameRegexp = \"[\" + nameStartChar + \"][\" + nameChar + \"]*\";\n const regexName = new RegExp(\"^\" + nameRegexp + \"$\");\n const getAllMatches = function(string, regex) {\n const matches = [];\n let match = regex.exec(string);\n while (match) {\n const allmatches = [];\n allmatches.startIndex = regex.lastIndex - match[0].length;\n const len = match.length;\n for (let index = 0; index < len; index++) {\n allmatches.push(match[index]);\n }\n matches.push(allmatches);\n match = regex.exec(string);\n }\n return matches;\n };\n const isName = function(string) {\n const match = regexName.exec(string);\n return !(match === null || typeof match === \"undefined\");\n };\n exports.isExist = function(v) {\n return typeof v !== \"undefined\";\n };\n exports.isEmptyObject = function(obj) {\n return Object.keys(obj).length === 0;\n };\n exports.merge = function(target, a2, arrayMode) {\n if (a2) {\n const keys = Object.keys(a2);\n const len = keys.length;\n for (let i2 = 0; i2 < len; i2++) {\n if (arrayMode === \"strict\") {\n target[keys[i2]] = [a2[keys[i2]]];\n } else {\n target[keys[i2]] = a2[keys[i2]];\n }\n }\n }\n };\n exports.getValue = function(v) {\n if (exports.isExist(v)) {\n return v;\n } else {\n return \"\";\n }\n };\n exports.isName = isName;\n exports.getAllMatches = getAllMatches;\n exports.nameRegexp = nameRegexp;\n })(util);\n return util;\n}\nvar hasRequiredValidator;\nfunction requireValidator() {\n if (hasRequiredValidator) return validator;\n hasRequiredValidator = 1;\n const util2 = requireUtil();\n const defaultOptions = {\n allowBooleanAttributes: false,\n //A tag can have attributes without any value\n unpairedTags: []\n };\n validator.validate = function(xmlData, options) {\n options = Object.assign({}, defaultOptions, options);\n const tags = [];\n let tagFound = false;\n let reachedRoot = false;\n if (xmlData[0] === \"\\uFEFF\") {\n xmlData = xmlData.substr(1);\n }\n for (let i2 = 0; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\" && xmlData[i2 + 1] === \"?\") {\n i2 += 2;\n i2 = readPI(xmlData, i2);\n if (i2.err) return i2;\n } else if (xmlData[i2] === \"<\") {\n let tagStartPos = i2;\n i2++;\n if (xmlData[i2] === \"!\") {\n i2 = readCommentAndCDATA(xmlData, i2);\n continue;\n } else {\n let closingTag = false;\n if (xmlData[i2] === \"/\") {\n closingTag = true;\n i2++;\n }\n let tagName = \"\";\n for (; i2 < xmlData.length && xmlData[i2] !== \">\" && xmlData[i2] !== \" \" && xmlData[i2] !== \"\t\" && xmlData[i2] !== \"\\n\" && xmlData[i2] !== \"\\r\"; i2++) {\n tagName += xmlData[i2];\n }\n tagName = tagName.trim();\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substring(0, tagName.length - 1);\n i2--;\n }\n if (!validateTagName(tagName)) {\n let msg;\n if (tagName.trim().length === 0) {\n msg = \"Invalid space after '<'.\";\n } else {\n msg = \"Tag '\" + tagName + \"' is an invalid name.\";\n }\n return getErrorObject(\"InvalidTag\", msg, getLineNumberForPosition(xmlData, i2));\n }\n const result = readAttributeStr(xmlData, i2);\n if (result === false) {\n return getErrorObject(\"InvalidAttr\", \"Attributes for '\" + tagName + \"' have open quote.\", getLineNumberForPosition(xmlData, i2));\n }\n let attrStr = result.value;\n i2 = result.index;\n if (attrStr[attrStr.length - 1] === \"/\") {\n const attrStrStart = i2 - attrStr.length;\n attrStr = attrStr.substring(0, attrStr.length - 1);\n const isValid = validateAttributeString(attrStr, options);\n if (isValid === true) {\n tagFound = true;\n } else {\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n }\n } else if (closingTag) {\n if (!result.tagClosed) {\n return getErrorObject(\"InvalidTag\", \"Closing tag '\" + tagName + \"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i2));\n } else if (attrStr.trim().length > 0) {\n return getErrorObject(\"InvalidTag\", \"Closing tag '\" + tagName + \"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else if (tags.length === 0) {\n return getErrorObject(\"InvalidTag\", \"Closing tag '\" + tagName + \"' has not been opened.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else {\n const otg = tags.pop();\n if (tagName !== otg.tagName) {\n let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n return getErrorObject(\n \"InvalidTag\",\n \"Expected closing tag '\" + otg.tagName + \"' (opened in line \" + openPos.line + \", col \" + openPos.col + \") instead of closing tag '\" + tagName + \"'.\",\n getLineNumberForPosition(xmlData, tagStartPos)\n );\n }\n if (tags.length == 0) {\n reachedRoot = true;\n }\n }\n } else {\n const isValid = validateAttributeString(attrStr, options);\n if (isValid !== true) {\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i2 - attrStr.length + isValid.err.line));\n }\n if (reachedRoot === true) {\n return getErrorObject(\"InvalidXml\", \"Multiple possible root nodes found.\", getLineNumberForPosition(xmlData, i2));\n } else if (options.unpairedTags.indexOf(tagName) !== -1) ;\n else {\n tags.push({ tagName, tagStartPos });\n }\n tagFound = true;\n }\n for (i2++; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\") {\n if (xmlData[i2 + 1] === \"!\") {\n i2++;\n i2 = readCommentAndCDATA(xmlData, i2);\n continue;\n } else if (xmlData[i2 + 1] === \"?\") {\n i2 = readPI(xmlData, ++i2);\n if (i2.err) return i2;\n } else {\n break;\n }\n } else if (xmlData[i2] === \"&\") {\n const afterAmp = validateAmpersand(xmlData, i2);\n if (afterAmp == -1)\n return getErrorObject(\"InvalidChar\", \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i2));\n i2 = afterAmp;\n } else {\n if (reachedRoot === true && !isWhiteSpace(xmlData[i2])) {\n return getErrorObject(\"InvalidXml\", \"Extra text at the end\", getLineNumberForPosition(xmlData, i2));\n }\n }\n }\n if (xmlData[i2] === \"<\") {\n i2--;\n }\n }\n } else {\n if (isWhiteSpace(xmlData[i2])) {\n continue;\n }\n return getErrorObject(\"InvalidChar\", \"char '\" + xmlData[i2] + \"' is not expected.\", getLineNumberForPosition(xmlData, i2));\n }\n }\n if (!tagFound) {\n return getErrorObject(\"InvalidXml\", \"Start tag expected.\", 1);\n } else if (tags.length == 1) {\n return getErrorObject(\"InvalidTag\", \"Unclosed tag '\" + tags[0].tagName + \"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n } else if (tags.length > 0) {\n return getErrorObject(\"InvalidXml\", \"Invalid '\" + JSON.stringify(tags.map((t2) => t2.tagName), null, 4).replace(/\\r?\\n/g, \"\") + \"' found.\", { line: 1, col: 1 });\n }\n return true;\n };\n function isWhiteSpace(char) {\n return char === \" \" || char === \"\t\" || char === \"\\n\" || char === \"\\r\";\n }\n function readPI(xmlData, i2) {\n const start = i2;\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] == \"?\" || xmlData[i2] == \" \") {\n const tagname = xmlData.substr(start, i2 - start);\n if (i2 > 5 && tagname === \"xml\") {\n return getErrorObject(\"InvalidXml\", \"XML declaration allowed only at the start of the document.\", getLineNumberForPosition(xmlData, i2));\n } else if (xmlData[i2] == \"?\" && xmlData[i2 + 1] == \">\") {\n i2++;\n break;\n } else {\n continue;\n }\n }\n }\n return i2;\n }\n function readCommentAndCDATA(xmlData, i2) {\n if (xmlData.length > i2 + 5 && xmlData[i2 + 1] === \"-\" && xmlData[i2 + 2] === \"-\") {\n for (i2 += 3; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"-\" && xmlData[i2 + 1] === \"-\" && xmlData[i2 + 2] === \">\") {\n i2 += 2;\n break;\n }\n }\n } else if (xmlData.length > i2 + 8 && xmlData[i2 + 1] === \"D\" && xmlData[i2 + 2] === \"O\" && xmlData[i2 + 3] === \"C\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"Y\" && xmlData[i2 + 6] === \"P\" && xmlData[i2 + 7] === \"E\") {\n let angleBracketsCount = 1;\n for (i2 += 8; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\") {\n angleBracketsCount++;\n } else if (xmlData[i2] === \">\") {\n angleBracketsCount--;\n if (angleBracketsCount === 0) {\n break;\n }\n }\n }\n } else if (xmlData.length > i2 + 9 && xmlData[i2 + 1] === \"[\" && xmlData[i2 + 2] === \"C\" && xmlData[i2 + 3] === \"D\" && xmlData[i2 + 4] === \"A\" && xmlData[i2 + 5] === \"T\" && xmlData[i2 + 6] === \"A\" && xmlData[i2 + 7] === \"[\") {\n for (i2 += 8; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"]\" && xmlData[i2 + 1] === \"]\" && xmlData[i2 + 2] === \">\") {\n i2 += 2;\n break;\n }\n }\n }\n return i2;\n }\n const doubleQuote = '\"';\n const singleQuote = \"'\";\n function readAttributeStr(xmlData, i2) {\n let attrStr = \"\";\n let startChar = \"\";\n let tagClosed = false;\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === doubleQuote || xmlData[i2] === singleQuote) {\n if (startChar === \"\") {\n startChar = xmlData[i2];\n } else if (startChar !== xmlData[i2]) ;\n else {\n startChar = \"\";\n }\n } else if (xmlData[i2] === \">\") {\n if (startChar === \"\") {\n tagClosed = true;\n break;\n }\n }\n attrStr += xmlData[i2];\n }\n if (startChar !== \"\") {\n return false;\n }\n return {\n value: attrStr,\n index: i2,\n tagClosed\n };\n }\n const validAttrStrRegxp = new RegExp(`(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*(['\"])(([\\\\s\\\\S])*?)\\\\5)?`, \"g\");\n function validateAttributeString(attrStr, options) {\n const matches = util2.getAllMatches(attrStr, validAttrStrRegxp);\n const attrNames = {};\n for (let i2 = 0; i2 < matches.length; i2++) {\n if (matches[i2][1].length === 0) {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + matches[i2][2] + \"' has no space in starting.\", getPositionFromMatch(matches[i2]));\n } else if (matches[i2][3] !== void 0 && matches[i2][4] === void 0) {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + matches[i2][2] + \"' is without value.\", getPositionFromMatch(matches[i2]));\n } else if (matches[i2][3] === void 0 && !options.allowBooleanAttributes) {\n return getErrorObject(\"InvalidAttr\", \"boolean attribute '\" + matches[i2][2] + \"' is not allowed.\", getPositionFromMatch(matches[i2]));\n }\n const attrName = matches[i2][2];\n if (!validateAttrName(attrName)) {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + attrName + \"' is an invalid name.\", getPositionFromMatch(matches[i2]));\n }\n if (!attrNames.hasOwnProperty(attrName)) {\n attrNames[attrName] = 1;\n } else {\n return getErrorObject(\"InvalidAttr\", \"Attribute '\" + attrName + \"' is repeated.\", getPositionFromMatch(matches[i2]));\n }\n }\n return true;\n }\n function validateNumberAmpersand(xmlData, i2) {\n let re2 = /\\d/;\n if (xmlData[i2] === \"x\") {\n i2++;\n re2 = /[\\da-fA-F]/;\n }\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \";\")\n return i2;\n if (!xmlData[i2].match(re2))\n break;\n }\n return -1;\n }\n function validateAmpersand(xmlData, i2) {\n i2++;\n if (xmlData[i2] === \";\")\n return -1;\n if (xmlData[i2] === \"#\") {\n i2++;\n return validateNumberAmpersand(xmlData, i2);\n }\n let count = 0;\n for (; i2 < xmlData.length; i2++, count++) {\n if (xmlData[i2].match(/\\w/) && count < 20)\n continue;\n if (xmlData[i2] === \";\")\n break;\n return -1;\n }\n return i2;\n }\n function getErrorObject(code, message, lineNumber) {\n return {\n err: {\n code,\n msg: message,\n line: lineNumber.line || lineNumber,\n col: lineNumber.col\n }\n };\n }\n function validateAttrName(attrName) {\n return util2.isName(attrName);\n }\n function validateTagName(tagname) {\n return util2.isName(tagname);\n }\n function getLineNumberForPosition(xmlData, index) {\n const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n return {\n line: lines.length,\n // column number is last line's length + 1, because column numbering starts at 1:\n col: lines[lines.length - 1].length + 1\n };\n }\n function getPositionFromMatch(match) {\n return match.startIndex + match[1].length;\n }\n return validator;\n}\nvar OptionsBuilder = {};\nvar hasRequiredOptionsBuilder;\nfunction requireOptionsBuilder() {\n if (hasRequiredOptionsBuilder) return OptionsBuilder;\n hasRequiredOptionsBuilder = 1;\n const defaultOptions = {\n preserveOrder: false,\n attributeNamePrefix: \"@_\",\n attributesGroupName: false,\n textNodeName: \"#text\",\n ignoreAttributes: true,\n removeNSPrefix: false,\n // remove NS from tag name or attribute name if true\n allowBooleanAttributes: false,\n //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseTagValue: true,\n parseAttributeValue: false,\n trimValues: true,\n //Trim string values of tag and attributes\n cdataPropName: false,\n numberParseOptions: {\n hex: true,\n leadingZeros: true,\n eNotation: true\n },\n tagValueProcessor: function(tagName, val) {\n return val;\n },\n attributeValueProcessor: function(attrName, val) {\n return val;\n },\n stopNodes: [],\n //nested tags will not be parsed even for errors\n alwaysCreateTextNode: false,\n isArray: () => false,\n commentPropName: false,\n unpairedTags: [],\n processEntities: true,\n htmlEntities: false,\n ignoreDeclaration: false,\n ignorePiTags: false,\n transformTagName: false,\n transformAttributeName: false,\n updateTag: function(tagName, jPath, attrs) {\n return tagName;\n }\n // skipEmptyListItem: false\n };\n const buildOptions = function(options) {\n return Object.assign({}, defaultOptions, options);\n };\n OptionsBuilder.buildOptions = buildOptions;\n OptionsBuilder.defaultOptions = defaultOptions;\n return OptionsBuilder;\n}\nvar xmlNode;\nvar hasRequiredXmlNode;\nfunction requireXmlNode() {\n if (hasRequiredXmlNode) return xmlNode;\n hasRequiredXmlNode = 1;\n class XmlNode {\n constructor(tagname) {\n this.tagname = tagname;\n this.child = [];\n this[\":@\"] = {};\n }\n add(key, val) {\n if (key === \"__proto__\") key = \"#__proto__\";\n this.child.push({ [key]: val });\n }\n addChild(node) {\n if (node.tagname === \"__proto__\") node.tagname = \"#__proto__\";\n if (node[\":@\"] && Object.keys(node[\":@\"]).length > 0) {\n this.child.push({ [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n } else {\n this.child.push({ [node.tagname]: node.child });\n }\n }\n }\n xmlNode = XmlNode;\n return xmlNode;\n}\nvar DocTypeReader;\nvar hasRequiredDocTypeReader;\nfunction requireDocTypeReader() {\n if (hasRequiredDocTypeReader) return DocTypeReader;\n hasRequiredDocTypeReader = 1;\n const util2 = requireUtil();\n function readDocType(xmlData, i2) {\n const entities = {};\n if (xmlData[i2 + 3] === \"O\" && xmlData[i2 + 4] === \"C\" && xmlData[i2 + 5] === \"T\" && xmlData[i2 + 6] === \"Y\" && xmlData[i2 + 7] === \"P\" && xmlData[i2 + 8] === \"E\") {\n i2 = i2 + 9;\n let angleBracketsCount = 1;\n let hasBody = false, comment = false;\n let exp = \"\";\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\" && !comment) {\n if (hasBody && isEntity(xmlData, i2)) {\n i2 += 7;\n let entityName, val;\n [entityName, val, i2] = readEntityExp(xmlData, i2 + 1);\n if (val.indexOf(\"&\") === -1)\n entities[validateEntityName(entityName)] = {\n regx: RegExp(`&${entityName};`, \"g\"),\n val\n };\n } else if (hasBody && isElement(xmlData, i2)) i2 += 8;\n else if (hasBody && isAttlist(xmlData, i2)) i2 += 8;\n else if (hasBody && isNotation(xmlData, i2)) i2 += 9;\n else comment = true;\n angleBracketsCount++;\n exp = \"\";\n } else if (xmlData[i2] === \">\") {\n if (comment) {\n if (xmlData[i2 - 1] === \"-\" && xmlData[i2 - 2] === \"-\") {\n comment = false;\n angleBracketsCount--;\n }\n } else {\n angleBracketsCount--;\n }\n if (angleBracketsCount === 0) {\n break;\n }\n } else if (xmlData[i2] === \"[\") {\n hasBody = true;\n } else {\n exp += xmlData[i2];\n }\n }\n if (angleBracketsCount !== 0) {\n throw new Error(`Unclosed DOCTYPE`);\n }\n } else {\n throw new Error(`Invalid Tag instead of DOCTYPE`);\n }\n return { entities, i: i2 };\n }\n function readEntityExp(xmlData, i2) {\n let entityName = \"\";\n for (; i2 < xmlData.length && (xmlData[i2] !== \"'\" && xmlData[i2] !== '\"'); i2++) {\n entityName += xmlData[i2];\n }\n entityName = entityName.trim();\n if (entityName.indexOf(\" \") !== -1) throw new Error(\"External entites are not supported\");\n const startChar = xmlData[i2++];\n let val = \"\";\n for (; i2 < xmlData.length && xmlData[i2] !== startChar; i2++) {\n val += xmlData[i2];\n }\n return [entityName, val, i2];\n }\n function isEntity(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"E\" && xmlData[i2 + 3] === \"N\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"I\" && xmlData[i2 + 6] === \"T\" && xmlData[i2 + 7] === \"Y\") return true;\n return false;\n }\n function isElement(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"E\" && xmlData[i2 + 3] === \"L\" && xmlData[i2 + 4] === \"E\" && xmlData[i2 + 5] === \"M\" && xmlData[i2 + 6] === \"E\" && xmlData[i2 + 7] === \"N\" && xmlData[i2 + 8] === \"T\") return true;\n return false;\n }\n function isAttlist(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"A\" && xmlData[i2 + 3] === \"T\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"L\" && xmlData[i2 + 6] === \"I\" && xmlData[i2 + 7] === \"S\" && xmlData[i2 + 8] === \"T\") return true;\n return false;\n }\n function isNotation(xmlData, i2) {\n if (xmlData[i2 + 1] === \"!\" && xmlData[i2 + 2] === \"N\" && xmlData[i2 + 3] === \"O\" && xmlData[i2 + 4] === \"T\" && xmlData[i2 + 5] === \"A\" && xmlData[i2 + 6] === \"T\" && xmlData[i2 + 7] === \"I\" && xmlData[i2 + 8] === \"O\" && xmlData[i2 + 9] === \"N\") return true;\n return false;\n }\n function validateEntityName(name) {\n if (util2.isName(name))\n return name;\n else\n throw new Error(`Invalid entity name ${name}`);\n }\n DocTypeReader = readDocType;\n return DocTypeReader;\n}\nvar strnum;\nvar hasRequiredStrnum;\nfunction requireStrnum() {\n if (hasRequiredStrnum) return strnum;\n hasRequiredStrnum = 1;\n const hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;\n const numRegex = /^([\\-\\+])?(0*)(\\.[0-9]+([eE]\\-?[0-9]+)?|[0-9]+(\\.[0-9]+([eE]\\-?[0-9]+)?)?)$/;\n if (!Number.parseInt && window.parseInt) {\n Number.parseInt = window.parseInt;\n }\n if (!Number.parseFloat && window.parseFloat) {\n Number.parseFloat = window.parseFloat;\n }\n const consider = {\n hex: true,\n leadingZeros: true,\n decimalPoint: \".\",\n eNotation: true\n //skipLike: /regex/\n };\n function toNumber(str, options = {}) {\n options = Object.assign({}, consider, options);\n if (!str || typeof str !== \"string\") return str;\n let trimmedStr = str.trim();\n if (options.skipLike !== void 0 && options.skipLike.test(trimmedStr)) return str;\n else if (options.hex && hexRegex.test(trimmedStr)) {\n return Number.parseInt(trimmedStr, 16);\n } else {\n const match = numRegex.exec(trimmedStr);\n if (match) {\n const sign = match[1];\n const leadingZeros = match[2];\n let numTrimmedByZeros = trimZeros(match[3]);\n const eNotation = match[4] || match[6];\n if (!options.leadingZeros && leadingZeros.length > 0 && sign && trimmedStr[2] !== \".\") return str;\n else if (!options.leadingZeros && leadingZeros.length > 0 && !sign && trimmedStr[1] !== \".\") return str;\n else {\n const num = Number(trimmedStr);\n const numStr = \"\" + num;\n if (numStr.search(/[eE]/) !== -1) {\n if (options.eNotation) return num;\n else return str;\n } else if (eNotation) {\n if (options.eNotation) return num;\n else return str;\n } else if (trimmedStr.indexOf(\".\") !== -1) {\n if (numStr === \"0\" && numTrimmedByZeros === \"\") return num;\n else if (numStr === numTrimmedByZeros) return num;\n else if (sign && numStr === \"-\" + numTrimmedByZeros) return num;\n else return str;\n }\n if (leadingZeros) {\n if (numTrimmedByZeros === numStr) return num;\n else if (sign + numTrimmedByZeros === numStr) return num;\n else return str;\n }\n if (trimmedStr === numStr) return num;\n else if (trimmedStr === sign + numStr) return num;\n return str;\n }\n } else {\n return str;\n }\n }\n }\n function trimZeros(numStr) {\n if (numStr && numStr.indexOf(\".\") !== -1) {\n numStr = numStr.replace(/0+$/, \"\");\n if (numStr === \".\") numStr = \"0\";\n else if (numStr[0] === \".\") numStr = \"0\" + numStr;\n else if (numStr[numStr.length - 1] === \".\") numStr = numStr.substr(0, numStr.length - 1);\n return numStr;\n }\n return numStr;\n }\n strnum = toNumber;\n return strnum;\n}\nvar ignoreAttributes;\nvar hasRequiredIgnoreAttributes;\nfunction requireIgnoreAttributes() {\n if (hasRequiredIgnoreAttributes) return ignoreAttributes;\n hasRequiredIgnoreAttributes = 1;\n function getIgnoreAttributesFn(ignoreAttributes2) {\n if (typeof ignoreAttributes2 === \"function\") {\n return ignoreAttributes2;\n }\n if (Array.isArray(ignoreAttributes2)) {\n return (attrName) => {\n for (const pattern of ignoreAttributes2) {\n if (typeof pattern === \"string\" && attrName === pattern) {\n return true;\n }\n if (pattern instanceof RegExp && pattern.test(attrName)) {\n return true;\n }\n }\n };\n }\n return () => false;\n }\n ignoreAttributes = getIgnoreAttributesFn;\n return ignoreAttributes;\n}\nvar OrderedObjParser_1;\nvar hasRequiredOrderedObjParser;\nfunction requireOrderedObjParser() {\n if (hasRequiredOrderedObjParser) return OrderedObjParser_1;\n hasRequiredOrderedObjParser = 1;\n const util2 = requireUtil();\n const xmlNode2 = requireXmlNode();\n const readDocType = requireDocTypeReader();\n const toNumber = requireStrnum();\n const getIgnoreAttributesFn = requireIgnoreAttributes();\n class OrderedObjParser {\n constructor(options) {\n this.options = options;\n this.currentNode = null;\n this.tagsNodeStack = [];\n this.docTypeEntities = {};\n this.lastEntities = {\n \"apos\": { regex: /&(apos|#39|#x27);/g, val: \"'\" },\n \"gt\": { regex: /&(gt|#62|#x3E);/g, val: \">\" },\n \"lt\": { regex: /&(lt|#60|#x3C);/g, val: \"<\" },\n \"quot\": { regex: /&(quot|#34|#x22);/g, val: '\"' }\n };\n this.ampEntity = { regex: /&(amp|#38|#x26);/g, val: \"&\" };\n this.htmlEntities = {\n \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n \"cent\": { regex: /&(cent|#162);/g, val: \"¢\" },\n \"pound\": { regex: /&(pound|#163);/g, val: \"£\" },\n \"yen\": { regex: /&(yen|#165);/g, val: \"¥\" },\n \"euro\": { regex: /&(euro|#8364);/g, val: \"€\" },\n \"copyright\": { regex: /&(copy|#169);/g, val: \"©\" },\n \"reg\": { regex: /&(reg|#174);/g, val: \"®\" },\n \"inr\": { regex: /&(inr|#8377);/g, val: \"₹\" },\n \"num_dec\": { regex: /&#([0-9]{1,7});/g, val: (_, str) => String.fromCharCode(Number.parseInt(str, 10)) },\n \"num_hex\": { regex: /&#x([0-9a-fA-F]{1,6});/g, val: (_, str) => String.fromCharCode(Number.parseInt(str, 16)) }\n };\n this.addExternalEntities = addExternalEntities;\n this.parseXml = parseXml;\n this.parseTextData = parseTextData;\n this.resolveNameSpace = resolveNameSpace;\n this.buildAttributesMap = buildAttributesMap;\n this.isItStopNode = isItStopNode;\n this.replaceEntitiesValue = replaceEntitiesValue;\n this.readStopNodeData = readStopNodeData;\n this.saveTextToParentTag = saveTextToParentTag;\n this.addChild = addChild;\n this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes);\n }\n }\n function addExternalEntities(externalEntities) {\n const entKeys = Object.keys(externalEntities);\n for (let i2 = 0; i2 < entKeys.length; i2++) {\n const ent = entKeys[i2];\n this.lastEntities[ent] = {\n regex: new RegExp(\"&\" + ent + \";\", \"g\"),\n val: externalEntities[ent]\n };\n }\n }\n function parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n if (val !== void 0) {\n if (this.options.trimValues && !dontTrim) {\n val = val.trim();\n }\n if (val.length > 0) {\n if (!escapeEntities) val = this.replaceEntitiesValue(val);\n const newval = this.options.tagValueProcessor(tagName, val, jPath, hasAttributes, isLeafNode);\n if (newval === null || newval === void 0) {\n return val;\n } else if (typeof newval !== typeof val || newval !== val) {\n return newval;\n } else if (this.options.trimValues) {\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n } else {\n const trimmedVal = val.trim();\n if (trimmedVal === val) {\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n } else {\n return val;\n }\n }\n }\n }\n }\n function resolveNameSpace(tagname) {\n if (this.options.removeNSPrefix) {\n const tags = tagname.split(\":\");\n const prefix = tagname.charAt(0) === \"/\" ? \"/\" : \"\";\n if (tags[0] === \"xmlns\") {\n return \"\";\n }\n if (tags.length === 2) {\n tagname = prefix + tags[1];\n }\n }\n return tagname;\n }\n const attrsRegx = new RegExp(`([^\\\\s=]+)\\\\s*(=\\\\s*(['\"])([\\\\s\\\\S]*?)\\\\3)?`, \"gm\");\n function buildAttributesMap(attrStr, jPath, tagName) {\n if (this.options.ignoreAttributes !== true && typeof attrStr === \"string\") {\n const matches = util2.getAllMatches(attrStr, attrsRegx);\n const len = matches.length;\n const attrs = {};\n for (let i2 = 0; i2 < len; i2++) {\n const attrName = this.resolveNameSpace(matches[i2][1]);\n if (this.ignoreAttributesFn(attrName, jPath)) {\n continue;\n }\n let oldVal = matches[i2][4];\n let aName = this.options.attributeNamePrefix + attrName;\n if (attrName.length) {\n if (this.options.transformAttributeName) {\n aName = this.options.transformAttributeName(aName);\n }\n if (aName === \"__proto__\") aName = \"#__proto__\";\n if (oldVal !== void 0) {\n if (this.options.trimValues) {\n oldVal = oldVal.trim();\n }\n oldVal = this.replaceEntitiesValue(oldVal);\n const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath);\n if (newVal === null || newVal === void 0) {\n attrs[aName] = oldVal;\n } else if (typeof newVal !== typeof oldVal || newVal !== oldVal) {\n attrs[aName] = newVal;\n } else {\n attrs[aName] = parseValue(\n oldVal,\n this.options.parseAttributeValue,\n this.options.numberParseOptions\n );\n }\n } else if (this.options.allowBooleanAttributes) {\n attrs[aName] = true;\n }\n }\n }\n if (!Object.keys(attrs).length) {\n return;\n }\n if (this.options.attributesGroupName) {\n const attrCollection = {};\n attrCollection[this.options.attributesGroupName] = attrs;\n return attrCollection;\n }\n return attrs;\n }\n }\n const parseXml = function(xmlData) {\n xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\");\n const xmlObj = new xmlNode2(\"!xml\");\n let currentNode = xmlObj;\n let textData = \"\";\n let jPath = \"\";\n for (let i2 = 0; i2 < xmlData.length; i2++) {\n const ch = xmlData[i2];\n if (ch === \"<\") {\n if (xmlData[i2 + 1] === \"/\") {\n const closeIndex = findClosingIndex(xmlData, \">\", i2, \"Closing Tag is not closed.\");\n let tagName = xmlData.substring(i2 + 2, closeIndex).trim();\n if (this.options.removeNSPrefix) {\n const colonIndex = tagName.indexOf(\":\");\n if (colonIndex !== -1) {\n tagName = tagName.substr(colonIndex + 1);\n }\n }\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n if (currentNode) {\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n }\n const lastTagName = jPath.substring(jPath.lastIndexOf(\".\") + 1);\n if (tagName && this.options.unpairedTags.indexOf(tagName) !== -1) {\n throw new Error(`Unpaired tag can not be used as closing tag: </${tagName}>`);\n }\n let propIndex = 0;\n if (lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1) {\n propIndex = jPath.lastIndexOf(\".\", jPath.lastIndexOf(\".\") - 1);\n this.tagsNodeStack.pop();\n } else {\n propIndex = jPath.lastIndexOf(\".\");\n }\n jPath = jPath.substring(0, propIndex);\n currentNode = this.tagsNodeStack.pop();\n textData = \"\";\n i2 = closeIndex;\n } else if (xmlData[i2 + 1] === \"?\") {\n let tagData = readTagExp(xmlData, i2, false, \"?>\");\n if (!tagData) throw new Error(\"Pi Tag is not closed.\");\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n if (this.options.ignoreDeclaration && tagData.tagName === \"?xml\" || this.options.ignorePiTags) ;\n else {\n const childNode = new xmlNode2(tagData.tagName);\n childNode.add(this.options.textNodeName, \"\");\n if (tagData.tagName !== tagData.tagExp && tagData.attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, jPath, tagData.tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n }\n i2 = tagData.closeIndex + 1;\n } else if (xmlData.substr(i2 + 1, 3) === \"!--\") {\n const endIndex = findClosingIndex(xmlData, \"-->\", i2 + 4, \"Comment is not closed.\");\n if (this.options.commentPropName) {\n const comment = xmlData.substring(i2 + 4, endIndex - 2);\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n currentNode.add(this.options.commentPropName, [{ [this.options.textNodeName]: comment }]);\n }\n i2 = endIndex;\n } else if (xmlData.substr(i2 + 1, 2) === \"!D\") {\n const result = readDocType(xmlData, i2);\n this.docTypeEntities = result.entities;\n i2 = result.i;\n } else if (xmlData.substr(i2 + 1, 2) === \"![\") {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i2, \"CDATA is not closed.\") - 2;\n const tagExp = xmlData.substring(i2 + 9, closeIndex);\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n let val = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true, true);\n if (val == void 0) val = \"\";\n if (this.options.cdataPropName) {\n currentNode.add(this.options.cdataPropName, [{ [this.options.textNodeName]: tagExp }]);\n } else {\n currentNode.add(this.options.textNodeName, val);\n }\n i2 = closeIndex + 2;\n } else {\n let result = readTagExp(xmlData, i2, this.options.removeNSPrefix);\n let tagName = result.tagName;\n const rawTagName = result.rawTagName;\n let tagExp = result.tagExp;\n let attrExpPresent = result.attrExpPresent;\n let closeIndex = result.closeIndex;\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n if (currentNode && textData) {\n if (currentNode.tagname !== \"!xml\") {\n textData = this.saveTextToParentTag(textData, currentNode, jPath, false);\n }\n }\n const lastTag = currentNode;\n if (lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1) {\n currentNode = this.tagsNodeStack.pop();\n jPath = jPath.substring(0, jPath.lastIndexOf(\".\"));\n }\n if (tagName !== xmlObj.tagname) {\n jPath += jPath ? \".\" + tagName : tagName;\n }\n if (this.isItStopNode(this.options.stopNodes, jPath, tagName)) {\n let tagContent = \"\";\n if (tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1) {\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n } else {\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n i2 = result.closeIndex;\n } else if (this.options.unpairedTags.indexOf(tagName) !== -1) {\n i2 = result.closeIndex;\n } else {\n const result2 = this.readStopNodeData(xmlData, rawTagName, closeIndex + 1);\n if (!result2) throw new Error(`Unexpected end of ${rawTagName}`);\n i2 = result2.i;\n tagContent = result2.tagContent;\n }\n const childNode = new xmlNode2(tagName);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n if (tagContent) {\n tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true);\n }\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n childNode.add(this.options.textNodeName, tagContent);\n this.addChild(currentNode, childNode, jPath);\n } else {\n if (tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1) {\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n } else {\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n const childNode = new xmlNode2(tagName);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n } else {\n const childNode = new xmlNode2(tagName);\n this.tagsNodeStack.push(currentNode);\n if (tagName !== tagExp && attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath);\n currentNode = childNode;\n }\n textData = \"\";\n i2 = closeIndex;\n }\n }\n } else {\n textData += xmlData[i2];\n }\n }\n return xmlObj.child;\n };\n function addChild(currentNode, childNode, jPath) {\n const result = this.options.updateTag(childNode.tagname, jPath, childNode[\":@\"]);\n if (result === false) ;\n else if (typeof result === \"string\") {\n childNode.tagname = result;\n currentNode.addChild(childNode);\n } else {\n currentNode.addChild(childNode);\n }\n }\n const replaceEntitiesValue = function(val) {\n if (this.options.processEntities) {\n for (let entityName in this.docTypeEntities) {\n const entity = this.docTypeEntities[entityName];\n val = val.replace(entity.regx, entity.val);\n }\n for (let entityName in this.lastEntities) {\n const entity = this.lastEntities[entityName];\n val = val.replace(entity.regex, entity.val);\n }\n if (this.options.htmlEntities) {\n for (let entityName in this.htmlEntities) {\n const entity = this.htmlEntities[entityName];\n val = val.replace(entity.regex, entity.val);\n }\n }\n val = val.replace(this.ampEntity.regex, this.ampEntity.val);\n }\n return val;\n };\n function saveTextToParentTag(textData, currentNode, jPath, isLeafNode) {\n if (textData) {\n if (isLeafNode === void 0) isLeafNode = Object.keys(currentNode.child).length === 0;\n textData = this.parseTextData(\n textData,\n currentNode.tagname,\n jPath,\n false,\n currentNode[\":@\"] ? Object.keys(currentNode[\":@\"]).length !== 0 : false,\n isLeafNode\n );\n if (textData !== void 0 && textData !== \"\")\n currentNode.add(this.options.textNodeName, textData);\n textData = \"\";\n }\n return textData;\n }\n function isItStopNode(stopNodes, jPath, currentTagName) {\n const allNodesExp = \"*.\" + currentTagName;\n for (const stopNodePath in stopNodes) {\n const stopNodeExp = stopNodes[stopNodePath];\n if (allNodesExp === stopNodeExp || jPath === stopNodeExp) return true;\n }\n return false;\n }\n function tagExpWithClosingIndex(xmlData, i2, closingChar = \">\") {\n let attrBoundary;\n let tagExp = \"\";\n for (let index = i2; index < xmlData.length; index++) {\n let ch = xmlData[index];\n if (attrBoundary) {\n if (ch === attrBoundary) attrBoundary = \"\";\n } else if (ch === '\"' || ch === \"'\") {\n attrBoundary = ch;\n } else if (ch === closingChar[0]) {\n if (closingChar[1]) {\n if (xmlData[index + 1] === closingChar[1]) {\n return {\n data: tagExp,\n index\n };\n }\n } else {\n return {\n data: tagExp,\n index\n };\n }\n } else if (ch === \"\t\") {\n ch = \" \";\n }\n tagExp += ch;\n }\n }\n function findClosingIndex(xmlData, str, i2, errMsg) {\n const closingIndex = xmlData.indexOf(str, i2);\n if (closingIndex === -1) {\n throw new Error(errMsg);\n } else {\n return closingIndex + str.length - 1;\n }\n }\n function readTagExp(xmlData, i2, removeNSPrefix, closingChar = \">\") {\n const result = tagExpWithClosingIndex(xmlData, i2 + 1, closingChar);\n if (!result) return;\n let tagExp = result.data;\n const closeIndex = result.index;\n const separatorIndex = tagExp.search(/\\s/);\n let tagName = tagExp;\n let attrExpPresent = true;\n if (separatorIndex !== -1) {\n tagName = tagExp.substring(0, separatorIndex);\n tagExp = tagExp.substring(separatorIndex + 1).trimStart();\n }\n const rawTagName = tagName;\n if (removeNSPrefix) {\n const colonIndex = tagName.indexOf(\":\");\n if (colonIndex !== -1) {\n tagName = tagName.substr(colonIndex + 1);\n attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n }\n }\n return {\n tagName,\n tagExp,\n closeIndex,\n attrExpPresent,\n rawTagName\n };\n }\n function readStopNodeData(xmlData, tagName, i2) {\n const startIndex = i2;\n let openTagCount = 1;\n for (; i2 < xmlData.length; i2++) {\n if (xmlData[i2] === \"<\") {\n if (xmlData[i2 + 1] === \"/\") {\n const closeIndex = findClosingIndex(xmlData, \">\", i2, `${tagName} is not closed`);\n let closeTagName = xmlData.substring(i2 + 2, closeIndex).trim();\n if (closeTagName === tagName) {\n openTagCount--;\n if (openTagCount === 0) {\n return {\n tagContent: xmlData.substring(startIndex, i2),\n i: closeIndex\n };\n }\n }\n i2 = closeIndex;\n } else if (xmlData[i2 + 1] === \"?\") {\n const closeIndex = findClosingIndex(xmlData, \"?>\", i2 + 1, \"StopNode is not closed.\");\n i2 = closeIndex;\n } else if (xmlData.substr(i2 + 1, 3) === \"!--\") {\n const closeIndex = findClosingIndex(xmlData, \"-->\", i2 + 3, \"StopNode is not closed.\");\n i2 = closeIndex;\n } else if (xmlData.substr(i2 + 1, 2) === \"![\") {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i2, \"StopNode is not closed.\") - 2;\n i2 = closeIndex;\n } else {\n const tagData = readTagExp(xmlData, i2, \">\");\n if (tagData) {\n const openTagName = tagData && tagData.tagName;\n if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length - 1] !== \"/\") {\n openTagCount++;\n }\n i2 = tagData.closeIndex;\n }\n }\n }\n }\n }\n function parseValue(val, shouldParse, options) {\n if (shouldParse && typeof val === \"string\") {\n const newval = val.trim();\n if (newval === \"true\") return true;\n else if (newval === \"false\") return false;\n else return toNumber(val, options);\n } else {\n if (util2.isExist(val)) {\n return val;\n } else {\n return \"\";\n }\n }\n }\n OrderedObjParser_1 = OrderedObjParser;\n return OrderedObjParser_1;\n}\nvar node2json = {};\nvar hasRequiredNode2json;\nfunction requireNode2json() {\n if (hasRequiredNode2json) return node2json;\n hasRequiredNode2json = 1;\n function prettify(node, options) {\n return compress(node, options);\n }\n function compress(arr, options, jPath) {\n let text;\n const compressedObj = {};\n for (let i2 = 0; i2 < arr.length; i2++) {\n const tagObj = arr[i2];\n const property = propName(tagObj);\n let newJpath = \"\";\n if (jPath === void 0) newJpath = property;\n else newJpath = jPath + \".\" + property;\n if (property === options.textNodeName) {\n if (text === void 0) text = tagObj[property];\n else text += \"\" + tagObj[property];\n } else if (property === void 0) {\n continue;\n } else if (tagObj[property]) {\n let val = compress(tagObj[property], options, newJpath);\n const isLeaf = isLeafTag(val, options);\n if (tagObj[\":@\"]) {\n assignAttributes(val, tagObj[\":@\"], newJpath, options);\n } else if (Object.keys(val).length === 1 && val[options.textNodeName] !== void 0 && !options.alwaysCreateTextNode) {\n val = val[options.textNodeName];\n } else if (Object.keys(val).length === 0) {\n if (options.alwaysCreateTextNode) val[options.textNodeName] = \"\";\n else val = \"\";\n }\n if (compressedObj[property] !== void 0 && compressedObj.hasOwnProperty(property)) {\n if (!Array.isArray(compressedObj[property])) {\n compressedObj[property] = [compressedObj[property]];\n }\n compressedObj[property].push(val);\n } else {\n if (options.isArray(property, newJpath, isLeaf)) {\n compressedObj[property] = [val];\n } else {\n compressedObj[property] = val;\n }\n }\n }\n }\n if (typeof text === \"string\") {\n if (text.length > 0) compressedObj[options.textNodeName] = text;\n } else if (text !== void 0) compressedObj[options.textNodeName] = text;\n return compressedObj;\n }\n function propName(obj) {\n const keys = Object.keys(obj);\n for (let i2 = 0; i2 < keys.length; i2++) {\n const key = keys[i2];\n if (key !== \":@\") return key;\n }\n }\n function assignAttributes(obj, attrMap, jpath, options) {\n if (attrMap) {\n const keys = Object.keys(attrMap);\n const len = keys.length;\n for (let i2 = 0; i2 < len; i2++) {\n const atrrName = keys[i2];\n if (options.isArray(atrrName, jpath + \".\" + atrrName, true, true)) {\n obj[atrrName] = [attrMap[atrrName]];\n } else {\n obj[atrrName] = attrMap[atrrName];\n }\n }\n }\n }\n function isLeafTag(obj, options) {\n const { textNodeName } = options;\n const propCount = Object.keys(obj).length;\n if (propCount === 0) {\n return true;\n }\n if (propCount === 1 && (obj[textNodeName] || typeof obj[textNodeName] === \"boolean\" || obj[textNodeName] === 0)) {\n return true;\n }\n return false;\n }\n node2json.prettify = prettify;\n return node2json;\n}\nvar XMLParser_1;\nvar hasRequiredXMLParser;\nfunction requireXMLParser() {\n if (hasRequiredXMLParser) return XMLParser_1;\n hasRequiredXMLParser = 1;\n const { buildOptions } = requireOptionsBuilder();\n const OrderedObjParser = requireOrderedObjParser();\n const { prettify } = requireNode2json();\n const validator2 = requireValidator();\n class XMLParser {\n constructor(options) {\n this.externalEntities = {};\n this.options = buildOptions(options);\n }\n /**\n * Parse XML dats to JS object \n * @param {string|Buffer} xmlData \n * @param {boolean|Object} validationOption \n */\n parse(xmlData, validationOption) {\n if (typeof xmlData === \"string\") ;\n else if (xmlData.toString) {\n xmlData = xmlData.toString();\n } else {\n throw new Error(\"XML data is accepted in String or Bytes[] form.\");\n }\n if (validationOption) {\n if (validationOption === true) validationOption = {};\n const result = validator2.validate(xmlData, validationOption);\n if (result !== true) {\n throw Error(`${result.err.msg}:${result.err.line}:${result.err.col}`);\n }\n }\n const orderedObjParser = new OrderedObjParser(this.options);\n orderedObjParser.addExternalEntities(this.externalEntities);\n const orderedResult = orderedObjParser.parseXml(xmlData);\n if (this.options.preserveOrder || orderedResult === void 0) return orderedResult;\n else return prettify(orderedResult, this.options);\n }\n /**\n * Add Entity which is not by default supported by this library\n * @param {string} key \n * @param {string} value \n */\n addEntity(key, value) {\n if (value.indexOf(\"&\") !== -1) {\n throw new Error(\"Entity value can't have '&'\");\n } else if (key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1) {\n throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for '
'\");\n } else if (value === \"&\") {\n throw new Error(\"An entity with value '&' is not permitted\");\n } else {\n this.externalEntities[key] = value;\n }\n }\n }\n XMLParser_1 = XMLParser;\n return XMLParser_1;\n}\nvar orderedJs2Xml;\nvar hasRequiredOrderedJs2Xml;\nfunction requireOrderedJs2Xml() {\n if (hasRequiredOrderedJs2Xml) return orderedJs2Xml;\n hasRequiredOrderedJs2Xml = 1;\n const EOL = \"\\n\";\n function toXml(jArray, options) {\n let indentation = \"\";\n if (options.format && options.indentBy.length > 0) {\n indentation = EOL;\n }\n return arrToStr(jArray, options, \"\", indentation);\n }\n function arrToStr(arr, options, jPath, indentation) {\n let xmlStr = \"\";\n let isPreviousElementTag = false;\n for (let i2 = 0; i2 < arr.length; i2++) {\n const tagObj = arr[i2];\n const tagName = propName(tagObj);\n if (tagName === void 0) continue;\n let newJPath = \"\";\n if (jPath.length === 0) newJPath = tagName;\n else newJPath = `${jPath}.${tagName}`;\n if (tagName === options.textNodeName) {\n let tagText = tagObj[tagName];\n if (!isStopNode(newJPath, options)) {\n tagText = options.tagValueProcessor(tagName, tagText);\n tagText = replaceEntitiesValue(tagText, options);\n }\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += tagText;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.cdataPropName) {\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += `<![CDATA[${tagObj[tagName][0][options.textNodeName]}]]>`;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.commentPropName) {\n xmlStr += indentation + `<!--${tagObj[tagName][0][options.textNodeName]}-->`;\n isPreviousElementTag = true;\n continue;\n } else if (tagName[0] === \"?\") {\n const attStr2 = attr_to_str(tagObj[\":@\"], options);\n const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\";\n xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr2}?>`;\n isPreviousElementTag = true;\n continue;\n }\n let newIdentation = indentation;\n if (newIdentation !== \"\") {\n newIdentation += options.indentBy;\n }\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tagStart = indentation + `<${tagName}${attStr}`;\n const tagValue = arrToStr(tagObj[tagName], options, newJPath, newIdentation);\n if (options.unpairedTags.indexOf(tagName) !== -1) {\n if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n else xmlStr += tagStart + \"/>\";\n } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n xmlStr += tagStart + \"/>\";\n } else if (tagValue && tagValue.endsWith(\">\")) {\n xmlStr += tagStart + `>${tagValue}${indentation}</${tagName}>`;\n } else {\n xmlStr += tagStart + \">\";\n if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"</\"))) {\n xmlStr += indentation + options.indentBy + tagValue + indentation;\n } else {\n xmlStr += tagValue;\n }\n xmlStr += `</${tagName}>`;\n }\n isPreviousElementTag = true;\n }\n return xmlStr;\n }\n function propName(obj) {\n const keys = Object.keys(obj);\n for (let i2 = 0; i2 < keys.length; i2++) {\n const key = keys[i2];\n if (!obj.hasOwnProperty(key)) continue;\n if (key !== \":@\") return key;\n }\n }\n function attr_to_str(attrMap, options) {\n let attrStr = \"\";\n if (attrMap && !options.ignoreAttributes) {\n for (let attr in attrMap) {\n if (!attrMap.hasOwnProperty(attr)) continue;\n let attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n attrVal = replaceEntitiesValue(attrVal, options);\n if (attrVal === true && options.suppressBooleanAttributes) {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n } else {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n }\n }\n }\n return attrStr;\n }\n function isStopNode(jPath, options) {\n jPath = jPath.substr(0, jPath.length - options.textNodeName.length - 1);\n let tagName = jPath.substr(jPath.lastIndexOf(\".\") + 1);\n for (let index in options.stopNodes) {\n if (options.stopNodes[index] === jPath || options.stopNodes[index] === \"*.\" + tagName) return true;\n }\n return false;\n }\n function replaceEntitiesValue(textValue, options) {\n if (textValue && textValue.length > 0 && options.processEntities) {\n for (let i2 = 0; i2 < options.entities.length; i2++) {\n const entity = options.entities[i2];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n }\n orderedJs2Xml = toXml;\n return orderedJs2Xml;\n}\nvar json2xml;\nvar hasRequiredJson2xml;\nfunction requireJson2xml() {\n if (hasRequiredJson2xml) return json2xml;\n hasRequiredJson2xml = 1;\n const buildFromOrderedJs = requireOrderedJs2Xml();\n const getIgnoreAttributesFn = requireIgnoreAttributes();\n const defaultOptions = {\n attributeNamePrefix: \"@_\",\n attributesGroupName: false,\n textNodeName: \"#text\",\n ignoreAttributes: true,\n cdataPropName: false,\n format: false,\n indentBy: \" \",\n suppressEmptyNode: false,\n suppressUnpairedNode: true,\n suppressBooleanAttributes: true,\n tagValueProcessor: function(key, a2) {\n return a2;\n },\n attributeValueProcessor: function(attrName, a2) {\n return a2;\n },\n preserveOrder: false,\n commentPropName: false,\n unpairedTags: [],\n entities: [\n { regex: new RegExp(\"&\", \"g\"), val: \"&\" },\n //it must be on top\n { regex: new RegExp(\">\", \"g\"), val: \">\" },\n { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n { regex: new RegExp(\"'\", \"g\"), val: \"'\" },\n { regex: new RegExp('\"', \"g\"), val: \""\" }\n ],\n processEntities: true,\n stopNodes: [],\n // transformTagName: false,\n // transformAttributeName: false,\n oneListGroup: false\n };\n function Builder(options) {\n this.options = Object.assign({}, defaultOptions, options);\n if (this.options.ignoreAttributes === true || this.options.attributesGroupName) {\n this.isAttribute = function() {\n return false;\n };\n } else {\n this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes);\n this.attrPrefixLen = this.options.attributeNamePrefix.length;\n this.isAttribute = isAttribute;\n }\n this.processTextOrObjNode = processTextOrObjNode;\n if (this.options.format) {\n this.indentate = indentate;\n this.tagEndChar = \">\\n\";\n this.newLine = \"\\n\";\n } else {\n this.indentate = function() {\n return \"\";\n };\n this.tagEndChar = \">\";\n this.newLine = \"\";\n }\n }\n Builder.prototype.build = function(jObj) {\n if (this.options.preserveOrder) {\n return buildFromOrderedJs(jObj, this.options);\n } else {\n if (Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1) {\n jObj = {\n [this.options.arrayNodeName]: jObj\n };\n }\n return this.j2x(jObj, 0, []).val;\n }\n };\n Builder.prototype.j2x = function(jObj, level, ajPath) {\n let attrStr = \"\";\n let val = \"\";\n const jPath = ajPath.join(\".\");\n for (let key in jObj) {\n if (!Object.prototype.hasOwnProperty.call(jObj, key)) continue;\n if (typeof jObj[key] === \"undefined\") {\n if (this.isAttribute(key)) {\n val += \"\";\n }\n } else if (jObj[key] === null) {\n if (this.isAttribute(key)) {\n val += \"\";\n } else if (key[0] === \"?\") {\n val += this.indentate(level) + \"<\" + key + \"?\" + this.tagEndChar;\n } else {\n val += this.indentate(level) + \"<\" + key + \"/\" + this.tagEndChar;\n }\n } else if (jObj[key] instanceof Date) {\n val += this.buildTextValNode(jObj[key], key, \"\", level);\n } else if (typeof jObj[key] !== \"object\") {\n const attr = this.isAttribute(key);\n if (attr && !this.ignoreAttributesFn(attr, jPath)) {\n attrStr += this.buildAttrPairStr(attr, \"\" + jObj[key]);\n } else if (!attr) {\n if (key === this.options.textNodeName) {\n let newval = this.options.tagValueProcessor(key, \"\" + jObj[key]);\n val += this.replaceEntitiesValue(newval);\n } else {\n val += this.buildTextValNode(jObj[key], key, \"\", level);\n }\n }\n } else if (Array.isArray(jObj[key])) {\n const arrLen = jObj[key].length;\n let listTagVal = \"\";\n let listTagAttr = \"\";\n for (let j2 = 0; j2 < arrLen; j2++) {\n const item = jObj[key][j2];\n if (typeof item === \"undefined\") ;\n else if (item === null) {\n if (key[0] === \"?\") val += this.indentate(level) + \"<\" + key + \"?\" + this.tagEndChar;\n else val += this.indentate(level) + \"<\" + key + \"/\" + this.tagEndChar;\n } else if (typeof item === \"object\") {\n if (this.options.oneListGroup) {\n const result = this.j2x(item, level + 1, ajPath.concat(key));\n listTagVal += result.val;\n if (this.options.attributesGroupName && item.hasOwnProperty(this.options.attributesGroupName)) {\n listTagAttr += result.attrStr;\n }\n } else {\n listTagVal += this.processTextOrObjNode(item, key, level, ajPath);\n }\n } else {\n if (this.options.oneListGroup) {\n let textValue = this.options.tagValueProcessor(key, item);\n textValue = this.replaceEntitiesValue(textValue);\n listTagVal += textValue;\n } else {\n listTagVal += this.buildTextValNode(item, key, \"\", level);\n }\n }\n }\n if (this.options.oneListGroup) {\n listTagVal = this.buildObjectNode(listTagVal, key, listTagAttr, level);\n }\n val += listTagVal;\n } else {\n if (this.options.attributesGroupName && key === this.options.attributesGroupName) {\n const Ks = Object.keys(jObj[key]);\n const L = Ks.length;\n for (let j2 = 0; j2 < L; j2++) {\n attrStr += this.buildAttrPairStr(Ks[j2], \"\" + jObj[key][Ks[j2]]);\n }\n } else {\n val += this.processTextOrObjNode(jObj[key], key, level, ajPath);\n }\n }\n }\n return { attrStr, val };\n };\n Builder.prototype.buildAttrPairStr = function(attrName, val) {\n val = this.options.attributeValueProcessor(attrName, \"\" + val);\n val = this.replaceEntitiesValue(val);\n if (this.options.suppressBooleanAttributes && val === \"true\") {\n return \" \" + attrName;\n } else return \" \" + attrName + '=\"' + val + '\"';\n };\n function processTextOrObjNode(object, key, level, ajPath) {\n const result = this.j2x(object, level + 1, ajPath.concat(key));\n if (object[this.options.textNodeName] !== void 0 && Object.keys(object).length === 1) {\n return this.buildTextValNode(object[this.options.textNodeName], key, result.attrStr, level);\n } else {\n return this.buildObjectNode(result.val, key, result.attrStr, level);\n }\n }\n Builder.prototype.buildObjectNode = function(val, key, attrStr, level) {\n if (val === \"\") {\n if (key[0] === \"?\") return this.indentate(level) + \"<\" + key + attrStr + \"?\" + this.tagEndChar;\n else {\n return this.indentate(level) + \"<\" + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }\n } else {\n let tagEndExp = \"</\" + key + this.tagEndChar;\n let piClosingChar = \"\";\n if (key[0] === \"?\") {\n piClosingChar = \"?\";\n tagEndExp = \"\";\n }\n if ((attrStr || attrStr === \"\") && val.indexOf(\"<\") === -1) {\n return this.indentate(level) + \"<\" + key + attrStr + piClosingChar + \">\" + val + tagEndExp;\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n return this.indentate(level) + `<!--${val}-->` + this.newLine;\n } else {\n return this.indentate(level) + \"<\" + key + attrStr + piClosingChar + this.tagEndChar + val + this.indentate(level) + tagEndExp;\n }\n }\n };\n Builder.prototype.closeTag = function(key) {\n let closeTag = \"\";\n if (this.options.unpairedTags.indexOf(key) !== -1) {\n if (!this.options.suppressUnpairedNode) closeTag = \"/\";\n } else if (this.options.suppressEmptyNode) {\n closeTag = \"/\";\n } else {\n closeTag = `></${key}`;\n }\n return closeTag;\n };\n Builder.prototype.buildTextValNode = function(val, key, attrStr, level) {\n if (this.options.cdataPropName !== false && key === this.options.cdataPropName) {\n return this.indentate(level) + `<![CDATA[${val}]]>` + this.newLine;\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n return this.indentate(level) + `<!--${val}-->` + this.newLine;\n } else if (key[0] === \"?\") {\n return this.indentate(level) + \"<\" + key + attrStr + \"?\" + this.tagEndChar;\n } else {\n let textValue = this.options.tagValueProcessor(key, val);\n textValue = this.replaceEntitiesValue(textValue);\n if (textValue === \"\") {\n return this.indentate(level) + \"<\" + key + attrStr + this.closeTag(key) + this.tagEndChar;\n } else {\n return this.indentate(level) + \"<\" + key + attrStr + \">\" + textValue + \"</\" + key + this.tagEndChar;\n }\n }\n };\n Builder.prototype.replaceEntitiesValue = function(textValue) {\n if (textValue && textValue.length > 0 && this.options.processEntities) {\n for (let i2 = 0; i2 < this.options.entities.length; i2++) {\n const entity = this.options.entities[i2];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n };\n function indentate(level) {\n return this.options.indentBy.repeat(level);\n }\n function isAttribute(name) {\n if (name.startsWith(this.options.attributeNamePrefix) && name !== this.options.textNodeName) {\n return name.substr(this.attrPrefixLen);\n } else {\n return false;\n }\n }\n json2xml = Builder;\n return json2xml;\n}\nvar fxp;\nvar hasRequiredFxp;\nfunction requireFxp() {\n if (hasRequiredFxp) return fxp;\n hasRequiredFxp = 1;\n const validator2 = requireValidator();\n const XMLParser = requireXMLParser();\n const XMLBuilder = requireJson2xml();\n fxp = {\n XMLParser,\n XMLValidator: validator2,\n XMLBuilder\n };\n return fxp;\n}\nvar fxpExports = requireFxp();\nfunction isSvg(string) {\n if (typeof string !== \"string\") {\n throw new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n }\n string = string.trim();\n if (string.length === 0) {\n return false;\n }\n if (fxpExports.XMLValidator.validate(string) !== true) {\n return false;\n }\n let jsonObject;\n const parser = new fxpExports.XMLParser();\n try {\n jsonObject = parser.parse(string);\n } catch {\n return false;\n }\n if (!jsonObject) {\n return false;\n }\n if (!Object.keys(jsonObject).some((x) => x.toLowerCase() === \"svg\")) {\n return false;\n }\n return true;\n}\nclass View {\n _view;\n constructor(view) {\n isValidView(view);\n this._view = view;\n }\n get id() {\n return this._view.id;\n }\n get name() {\n return this._view.name;\n }\n get caption() {\n return this._view.caption;\n }\n get emptyTitle() {\n return this._view.emptyTitle;\n }\n get emptyCaption() {\n return this._view.emptyCaption;\n }\n get getContents() {\n return this._view.getContents;\n }\n get icon() {\n return this._view.icon;\n }\n set icon(icon) {\n this._view.icon = icon;\n }\n get order() {\n return this._view.order;\n }\n set order(order) {\n this._view.order = order;\n }\n get params() {\n return this._view.params;\n }\n set params(params) {\n this._view.params = params;\n }\n get columns() {\n return this._view.columns;\n }\n get emptyView() {\n return this._view.emptyView;\n }\n get parent() {\n return this._view.parent;\n }\n get sticky() {\n return this._view.sticky;\n }\n get expanded() {\n return this._view.expanded;\n }\n set expanded(expanded) {\n this._view.expanded = expanded;\n }\n get defaultSortKey() {\n return this._view.defaultSortKey;\n }\n get loadChildViews() {\n return this._view.loadChildViews;\n }\n}\nconst isValidView = function(view) {\n if (!view.id || typeof view.id !== \"string\") {\n throw new Error(\"View id is required and must be a string\");\n }\n if (!view.name || typeof view.name !== \"string\") {\n throw new Error(\"View name is required and must be a string\");\n }\n if (\"caption\" in view && typeof view.caption !== \"string\") {\n throw new Error(\"View caption must be a string\");\n }\n if (!view.getContents || typeof view.getContents !== \"function\") {\n throw new Error(\"View getContents is required and must be a function\");\n }\n if (!view.icon || typeof view.icon !== \"string\" || !isSvg(view.icon)) {\n throw new Error(\"View icon is required and must be a valid svg string\");\n }\n if (\"order\" in view && typeof view.order !== \"number\") {\n throw new Error(\"View order must be a number\");\n }\n if (view.columns) {\n view.columns.forEach((column) => {\n if (!(column instanceof Column)) {\n throw new Error(\"View columns must be an array of Column. Invalid column found\");\n }\n });\n }\n if (view.emptyView && typeof view.emptyView !== \"function\") {\n throw new Error(\"View emptyView must be a function\");\n }\n if (view.parent && typeof view.parent !== \"string\") {\n throw new Error(\"View parent must be a string\");\n }\n if (\"sticky\" in view && typeof view.sticky !== \"boolean\") {\n throw new Error(\"View sticky must be a boolean\");\n }\n if (\"expanded\" in view && typeof view.expanded !== \"boolean\") {\n throw new Error(\"View expanded must be a boolean\");\n }\n if (view.defaultSortKey && typeof view.defaultSortKey !== \"string\") {\n throw new Error(\"View defaultSortKey must be a string\");\n }\n if (view.loadChildViews && typeof view.loadChildViews !== \"function\") {\n throw new Error(\"View loadChildViews must be a function\");\n }\n return true;\n};\nvar debug_1;\nvar hasRequiredDebug;\nfunction requireDebug() {\n if (hasRequiredDebug) return debug_1;\n hasRequiredDebug = 1;\n const debug = typeof process === \"object\" && process.env && process.env.NODE_DEBUG && /\\bsemver\\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error(\"SEMVER\", ...args) : () => {\n };\n debug_1 = debug;\n return debug_1;\n}\nvar constants;\nvar hasRequiredConstants;\nfunction requireConstants() {\n if (hasRequiredConstants) return constants;\n hasRequiredConstants = 1;\n const SEMVER_SPEC_VERSION = \"2.0.0\";\n const MAX_LENGTH = 256;\n const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */\n 9007199254740991;\n const MAX_SAFE_COMPONENT_LENGTH = 16;\n const MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6;\n const RELEASE_TYPES = [\n \"major\",\n \"premajor\",\n \"minor\",\n \"preminor\",\n \"patch\",\n \"prepatch\",\n \"prerelease\"\n ];\n constants = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 1,\n FLAG_LOOSE: 2\n };\n return constants;\n}\nvar re = { exports: {} };\nvar hasRequiredRe;\nfunction requireRe() {\n if (hasRequiredRe) return re.exports;\n hasRequiredRe = 1;\n (function(module, exports) {\n const {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH\n } = requireConstants();\n const debug = requireDebug();\n exports = module.exports = {};\n const re2 = exports.re = [];\n const safeRe = exports.safeRe = [];\n const src = exports.src = [];\n const t2 = exports.t = {};\n let R = 0;\n const LETTERDASHNUMBER = \"[a-zA-Z0-9-]\";\n const safeRegexReplacements = [\n [\"\\\\s\", 1],\n [\"\\\\d\", MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH]\n ];\n const makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value.split(`${token}*`).join(`${token}{0,${max}}`).split(`${token}+`).join(`${token}{1,${max}}`);\n }\n return value;\n };\n const createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value);\n const index = R++;\n debug(name, index, value);\n t2[name] = index;\n src[index] = value;\n re2[index] = new RegExp(value, isGlobal ? \"g\" : void 0);\n safeRe[index] = new RegExp(safe, isGlobal ? \"g\" : void 0);\n };\n createToken(\"NUMERICIDENTIFIER\", \"0|[1-9]\\\\d*\");\n createToken(\"NUMERICIDENTIFIERLOOSE\", \"\\\\d+\");\n createToken(\"NONNUMERICIDENTIFIER\", `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`);\n createToken(\"MAINVERSION\", `(${src[t2.NUMERICIDENTIFIER]})\\\\.(${src[t2.NUMERICIDENTIFIER]})\\\\.(${src[t2.NUMERICIDENTIFIER]})`);\n createToken(\"MAINVERSIONLOOSE\", `(${src[t2.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t2.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t2.NUMERICIDENTIFIERLOOSE]})`);\n createToken(\"PRERELEASEIDENTIFIER\", `(?:${src[t2.NUMERICIDENTIFIER]}|${src[t2.NONNUMERICIDENTIFIER]})`);\n createToken(\"PRERELEASEIDENTIFIERLOOSE\", `(?:${src[t2.NUMERICIDENTIFIERLOOSE]}|${src[t2.NONNUMERICIDENTIFIER]})`);\n createToken(\"PRERELEASE\", `(?:-(${src[t2.PRERELEASEIDENTIFIER]}(?:\\\\.${src[t2.PRERELEASEIDENTIFIER]})*))`);\n createToken(\"PRERELEASELOOSE\", `(?:-?(${src[t2.PRERELEASEIDENTIFIERLOOSE]}(?:\\\\.${src[t2.PRERELEASEIDENTIFIERLOOSE]})*))`);\n createToken(\"BUILDIDENTIFIER\", `${LETTERDASHNUMBER}+`);\n createToken(\"BUILD\", `(?:\\\\+(${src[t2.BUILDIDENTIFIER]}(?:\\\\.${src[t2.BUILDIDENTIFIER]})*))`);\n createToken(\"FULLPLAIN\", `v?${src[t2.MAINVERSION]}${src[t2.PRERELEASE]}?${src[t2.BUILD]}?`);\n createToken(\"FULL\", `^${src[t2.FULLPLAIN]}$`);\n createToken(\"LOOSEPLAIN\", `[v=\\\\s]*${src[t2.MAINVERSIONLOOSE]}${src[t2.PRERELEASELOOSE]}?${src[t2.BUILD]}?`);\n createToken(\"LOOSE\", `^${src[t2.LOOSEPLAIN]}$`);\n createToken(\"GTLT\", \"((?:<|>)?=?)\");\n createToken(\"XRANGEIDENTIFIERLOOSE\", `${src[t2.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`);\n createToken(\"XRANGEIDENTIFIER\", `${src[t2.NUMERICIDENTIFIER]}|x|X|\\\\*`);\n createToken(\"XRANGEPLAIN\", `[v=\\\\s]*(${src[t2.XRANGEIDENTIFIER]})(?:\\\\.(${src[t2.XRANGEIDENTIFIER]})(?:\\\\.(${src[t2.XRANGEIDENTIFIER]})(?:${src[t2.PRERELEASE]})?${src[t2.BUILD]}?)?)?`);\n createToken(\"XRANGEPLAINLOOSE\", `[v=\\\\s]*(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:${src[t2.PRERELEASELOOSE]})?${src[t2.BUILD]}?)?)?`);\n createToken(\"XRANGE\", `^${src[t2.GTLT]}\\\\s*${src[t2.XRANGEPLAIN]}$`);\n createToken(\"XRANGELOOSE\", `^${src[t2.GTLT]}\\\\s*${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"COERCEPLAIN\", `${\"(^|[^\\\\d])(\\\\d{1,\"}${MAX_SAFE_COMPONENT_LENGTH}})(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`);\n createToken(\"COERCE\", `${src[t2.COERCEPLAIN]}(?:$|[^\\\\d])`);\n createToken(\"COERCEFULL\", src[t2.COERCEPLAIN] + `(?:${src[t2.PRERELEASE]})?(?:${src[t2.BUILD]})?(?:$|[^\\\\d])`);\n createToken(\"COERCERTL\", src[t2.COERCE], true);\n createToken(\"COERCERTLFULL\", src[t2.COERCEFULL], true);\n createToken(\"LONETILDE\", \"(?:~>?)\");\n createToken(\"TILDETRIM\", `(\\\\s*)${src[t2.LONETILDE]}\\\\s+`, true);\n exports.tildeTrimReplace = \"$1~\";\n createToken(\"TILDE\", `^${src[t2.LONETILDE]}${src[t2.XRANGEPLAIN]}$`);\n createToken(\"TILDELOOSE\", `^${src[t2.LONETILDE]}${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"LONECARET\", \"(?:\\\\^)\");\n createToken(\"CARETTRIM\", `(\\\\s*)${src[t2.LONECARET]}\\\\s+`, true);\n exports.caretTrimReplace = \"$1^\";\n createToken(\"CARET\", `^${src[t2.LONECARET]}${src[t2.XRANGEPLAIN]}$`);\n createToken(\"CARETLOOSE\", `^${src[t2.LONECARET]}${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"COMPARATORLOOSE\", `^${src[t2.GTLT]}\\\\s*(${src[t2.LOOSEPLAIN]})$|^$`);\n createToken(\"COMPARATOR\", `^${src[t2.GTLT]}\\\\s*(${src[t2.FULLPLAIN]})$|^$`);\n createToken(\"COMPARATORTRIM\", `(\\\\s*)${src[t2.GTLT]}\\\\s*(${src[t2.LOOSEPLAIN]}|${src[t2.XRANGEPLAIN]})`, true);\n exports.comparatorTrimReplace = \"$1$2$3\";\n createToken(\"HYPHENRANGE\", `^\\\\s*(${src[t2.XRANGEPLAIN]})\\\\s+-\\\\s+(${src[t2.XRANGEPLAIN]})\\\\s*$`);\n createToken(\"HYPHENRANGELOOSE\", `^\\\\s*(${src[t2.XRANGEPLAINLOOSE]})\\\\s+-\\\\s+(${src[t2.XRANGEPLAINLOOSE]})\\\\s*$`);\n createToken(\"STAR\", \"(<|>)?=?\\\\s*\\\\*\");\n createToken(\"GTE0\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$\");\n createToken(\"GTE0PRE\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$\");\n })(re, re.exports);\n return re.exports;\n}\nvar parseOptions_1;\nvar hasRequiredParseOptions;\nfunction requireParseOptions() {\n if (hasRequiredParseOptions) return parseOptions_1;\n hasRequiredParseOptions = 1;\n const looseOption = Object.freeze({ loose: true });\n const emptyOpts = Object.freeze({});\n const parseOptions = (options) => {\n if (!options) {\n return emptyOpts;\n }\n if (typeof options !== \"object\") {\n return looseOption;\n }\n return options;\n };\n parseOptions_1 = parseOptions;\n return parseOptions_1;\n}\nvar identifiers;\nvar hasRequiredIdentifiers;\nfunction requireIdentifiers() {\n if (hasRequiredIdentifiers) return identifiers;\n hasRequiredIdentifiers = 1;\n const numeric = /^[0-9]+$/;\n const compareIdentifiers = (a2, b2) => {\n const anum = numeric.test(a2);\n const bnum = numeric.test(b2);\n if (anum && bnum) {\n a2 = +a2;\n b2 = +b2;\n }\n return a2 === b2 ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a2 < b2 ? -1 : 1;\n };\n const rcompareIdentifiers = (a2, b2) => compareIdentifiers(b2, a2);\n identifiers = {\n compareIdentifiers,\n rcompareIdentifiers\n };\n return identifiers;\n}\nvar semver;\nvar hasRequiredSemver;\nfunction requireSemver() {\n if (hasRequiredSemver) return semver;\n hasRequiredSemver = 1;\n const debug = requireDebug();\n const { MAX_LENGTH, MAX_SAFE_INTEGER } = requireConstants();\n const { safeRe: re2, t: t2 } = requireRe();\n const parseOptions = requireParseOptions();\n const { compareIdentifiers } = requireIdentifiers();\n class SemVer {\n constructor(version, options) {\n options = parseOptions(options);\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose && version.includePrerelease === !!options.includePrerelease) {\n return version;\n } else {\n version = version.version;\n }\n } else if (typeof version !== \"string\") {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`);\n }\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n );\n }\n debug(\"SemVer\", version, options);\n this.options = options;\n this.loose = !!options.loose;\n this.includePrerelease = !!options.includePrerelease;\n const m2 = version.trim().match(options.loose ? re2[t2.LOOSE] : re2[t2.FULL]);\n if (!m2) {\n throw new TypeError(`Invalid Version: ${version}`);\n }\n this.raw = version;\n this.major = +m2[1];\n this.minor = +m2[2];\n this.patch = +m2[3];\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError(\"Invalid major version\");\n }\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError(\"Invalid minor version\");\n }\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError(\"Invalid patch version\");\n }\n if (!m2[4]) {\n this.prerelease = [];\n } else {\n this.prerelease = m2[4].split(\".\").map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id;\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num;\n }\n }\n return id;\n });\n }\n this.build = m2[5] ? m2[5].split(\".\") : [];\n this.format();\n }\n format() {\n this.version = `${this.major}.${this.minor}.${this.patch}`;\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join(\".\")}`;\n }\n return this.version;\n }\n toString() {\n return this.version;\n }\n compare(other) {\n debug(\"SemVer.compare\", this.version, this.options, other);\n if (!(other instanceof SemVer)) {\n if (typeof other === \"string\" && other === this.version) {\n return 0;\n }\n other = new SemVer(other, this.options);\n }\n if (other.version === this.version) {\n return 0;\n }\n return this.compareMain(other) || this.comparePre(other);\n }\n compareMain(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch);\n }\n comparePre(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n if (this.prerelease.length && !other.prerelease.length) {\n return -1;\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1;\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0;\n }\n let i2 = 0;\n do {\n const a2 = this.prerelease[i2];\n const b2 = other.prerelease[i2];\n debug(\"prerelease compare\", i2, a2, b2);\n if (a2 === void 0 && b2 === void 0) {\n return 0;\n } else if (b2 === void 0) {\n return 1;\n } else if (a2 === void 0) {\n return -1;\n } else if (a2 === b2) {\n continue;\n } else {\n return compareIdentifiers(a2, b2);\n }\n } while (++i2);\n }\n compareBuild(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n let i2 = 0;\n do {\n const a2 = this.build[i2];\n const b2 = other.build[i2];\n debug(\"build compare\", i2, a2, b2);\n if (a2 === void 0 && b2 === void 0) {\n return 0;\n } else if (b2 === void 0) {\n return 1;\n } else if (a2 === void 0) {\n return -1;\n } else if (a2 === b2) {\n continue;\n } else {\n return compareIdentifiers(a2, b2);\n }\n } while (++i2);\n }\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc(release, identifier, identifierBase) {\n switch (release) {\n case \"premajor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor = 0;\n this.major++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"preminor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"prepatch\":\n this.prerelease.length = 0;\n this.inc(\"patch\", identifier, identifierBase);\n this.inc(\"pre\", identifier, identifierBase);\n break;\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case \"prerelease\":\n if (this.prerelease.length === 0) {\n this.inc(\"patch\", identifier, identifierBase);\n }\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"major\":\n if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {\n this.major++;\n }\n this.minor = 0;\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"minor\":\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++;\n }\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"patch\":\n if (this.prerelease.length === 0) {\n this.patch++;\n }\n this.prerelease = [];\n break;\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case \"pre\": {\n const base = Number(identifierBase) ? 1 : 0;\n if (!identifier && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier is empty\");\n }\n if (this.prerelease.length === 0) {\n this.prerelease = [base];\n } else {\n let i2 = this.prerelease.length;\n while (--i2 >= 0) {\n if (typeof this.prerelease[i2] === \"number\") {\n this.prerelease[i2]++;\n i2 = -2;\n }\n }\n if (i2 === -1) {\n if (identifier === this.prerelease.join(\".\") && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier already exists\");\n }\n this.prerelease.push(base);\n }\n }\n if (identifier) {\n let prerelease = [identifier, base];\n if (identifierBase === false) {\n prerelease = [identifier];\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease;\n }\n } else {\n this.prerelease = prerelease;\n }\n }\n break;\n }\n default:\n throw new Error(`invalid increment argument: ${release}`);\n }\n this.raw = this.format();\n if (this.build.length) {\n this.raw += `+${this.build.join(\".\")}`;\n }\n return this;\n }\n }\n semver = SemVer;\n return semver;\n}\nvar parse_1;\nvar hasRequiredParse;\nfunction requireParse() {\n if (hasRequiredParse) return parse_1;\n hasRequiredParse = 1;\n const SemVer = requireSemver();\n const parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version;\n }\n try {\n return new SemVer(version, options);\n } catch (er) {\n if (!throwErrors) {\n return null;\n }\n throw er;\n }\n };\n parse_1 = parse;\n return parse_1;\n}\nvar valid_1;\nvar hasRequiredValid;\nfunction requireValid() {\n if (hasRequiredValid) return valid_1;\n hasRequiredValid = 1;\n const parse = requireParse();\n const valid2 = (version, options) => {\n const v = parse(version, options);\n return v ? v.version : null;\n };\n valid_1 = valid2;\n return valid_1;\n}\nvar validExports = requireValid();\nconst valid = /* @__PURE__ */ getDefaultExportFromCjs(validExports);\nvar major_1;\nvar hasRequiredMajor;\nfunction requireMajor() {\n if (hasRequiredMajor) return major_1;\n hasRequiredMajor = 1;\n const SemVer = requireSemver();\n const major2 = (a2, loose) => new SemVer(a2, loose).major;\n major_1 = major2;\n return major_1;\n}\nvar majorExports = requireMajor();\nconst major = /* @__PURE__ */ getDefaultExportFromCjs(majorExports);\nclass ProxyBus {\n bus;\n constructor(bus2) {\n if (typeof bus2.getVersion !== \"function\" || !valid(bus2.getVersion())) {\n console.warn(\"Proxying an event bus with an unknown or invalid version\");\n } else if (major(bus2.getVersion()) !== major(this.getVersion())) {\n console.warn(\n \"Proxying an event bus of version \" + bus2.getVersion() + \" with \" + this.getVersion()\n );\n }\n this.bus = bus2;\n }\n getVersion() {\n return \"3.3.1\";\n }\n subscribe(name, handler) {\n this.bus.subscribe(name, handler);\n }\n unsubscribe(name, handler) {\n this.bus.unsubscribe(name, handler);\n }\n emit(name, event) {\n this.bus.emit(name, event);\n }\n}\nclass SimpleBus {\n handlers = /* @__PURE__ */ new Map();\n getVersion() {\n return \"3.3.1\";\n }\n subscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).concat(\n handler\n )\n );\n }\n unsubscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).filter((h2) => h2 !== handler)\n );\n }\n emit(name, event) {\n (this.handlers.get(name) || []).forEach((h2) => {\n try {\n h2(event);\n } catch (e2) {\n console.error(\"could not invoke event listener\", e2);\n }\n });\n }\n}\nlet bus = null;\nfunction getBus() {\n if (bus !== null) {\n return bus;\n }\n if (typeof window === \"undefined\") {\n return new Proxy({}, {\n get: () => {\n return () => console.error(\n \"Window not available, EventBus can not be established!\"\n );\n }\n });\n }\n if (window.OC?._eventBus && typeof window._nc_event_bus === \"undefined\") {\n console.warn(\n \"found old event bus instance at OC._eventBus. Update your version!\"\n );\n window._nc_event_bus = window.OC._eventBus;\n }\n if (typeof window?._nc_event_bus !== \"undefined\") {\n bus = new ProxyBus(window._nc_event_bus);\n } else {\n bus = window._nc_event_bus = new SimpleBus();\n }\n return bus;\n}\nfunction emit(name, event) {\n getBus().emit(name, event);\n}\n/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nclass FileListFilter extends TypedEventTarget {\n id;\n order;\n constructor(id, order = 100) {\n super();\n this.id = id;\n this.order = order;\n }\n filter(nodes) {\n throw new Error(\"Not implemented\");\n }\n updateChips(chips) {\n this.dispatchTypedEvent(\"update:chips\", new CustomEvent(\"update:chips\", { detail: chips }));\n }\n filterUpdated() {\n this.dispatchTypedEvent(\"update:filter\", new CustomEvent(\"update:filter\"));\n }\n}\nfunction registerFileListFilter(filter) {\n if (!window._nc_filelist_filters) {\n window._nc_filelist_filters = /* @__PURE__ */ new Map();\n }\n if (window._nc_filelist_filters.has(filter.id)) {\n throw new Error(`File list filter \"${filter.id}\" already registered`);\n }\n window._nc_filelist_filters.set(filter.id, filter);\n emit(\"files:filter:added\", filter);\n}\nfunction unregisterFileListFilter(filterId) {\n if (window._nc_filelist_filters && window._nc_filelist_filters.has(filterId)) {\n window._nc_filelist_filters.delete(filterId);\n emit(\"files:filter:removed\", filterId);\n }\n}\nfunction getFileListFilters() {\n if (!window._nc_filelist_filters) {\n return [];\n }\n return [...window._nc_filelist_filters.values()];\n}\nconst addNewFileMenuEntry = function(entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.registerEntry(entry);\n};\nconst removeNewFileMenuEntry = function(entry) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.unregisterEntry(entry);\n};\nconst getNewFileMenuEntries = function(context) {\n const newFileMenu = getNewFileMenu();\n return newFileMenu.getEntries(context).sort((a2, b2) => {\n if (a2.order !== void 0 && b2.order !== void 0 && a2.order !== b2.order) {\n return a2.order - b2.order;\n }\n return a2.displayName.localeCompare(b2.displayName, void 0, { numeric: true, sensitivity: \"base\" });\n });\n};\nexport {\n Column,\n DefaultType,\n q as File,\n FileAction,\n FileListAction,\n FileListFilter,\n F as FileType,\n FilesSortingMode,\n s as Folder,\n Header,\n InvalidFilenameError,\n InvalidFilenameErrorReason,\n Navigation,\n NewMenuEntryCategory,\n N as Node,\n t as NodeStatus,\n P as Permission,\n View,\n addNewFileMenuEntry,\n c as davGetClient,\n l as davGetDefaultPropfind,\n m as davGetFavoritesReport,\n n as davGetRecentSearch,\n a as davGetRemoteURL,\n g as davGetRootPath,\n p as davParsePermissions,\n b as davRemoteURL,\n r as davResultToNode,\n d as davRootPath,\n h as defaultDavNamespaces,\n f as defaultDavProperties,\n formatFileSize,\n k as getDavNameSpaces,\n j as getDavProperties,\n e as getFavoriteNodes,\n getFileActions,\n getFileListActions,\n getFileListFilters,\n getFileListHeaders,\n getNavigation,\n getNewFileMenuEntries,\n getUniqueName,\n isFilenameValid,\n orderBy,\n parseFileSize,\n i as registerDavProperty,\n registerFileAction,\n registerFileListAction,\n registerFileListFilter,\n registerFileListHeaders,\n removeNewFileMenuEntry,\n sortNodes,\n unregisterFileListFilter,\n validateFilename\n};\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { Permission } from '@nextcloud/files';\nimport { defineAsyncComponent } from 'vue';\nimport { FileAction } from '@nextcloud/files';\nimport { isPublicShare } from '@nextcloud/sharing/public';\nimport { spawnDialog } from '@nextcloud/dialogs';\nimport { t } from '@nextcloud/l10n';\nimport TagMultipleSvg from '@mdi/svg/svg/tag-multiple.svg?raw';\n/**\n * Spawn a dialog to add or remove tags from multiple nodes.\n * @param nodes Nodes to modify tags for\n */\nasync function execBatch(nodes) {\n const response = await new Promise((resolve) => {\n spawnDialog(defineAsyncComponent(() => import('../components/SystemTagPicker.vue')), {\n nodes,\n }, (status) => {\n resolve(status);\n });\n });\n return Array(nodes.length).fill(response);\n}\nexport const action = new FileAction({\n id: 'systemtags:bulk',\n displayName: () => t('systemtags', 'Manage tags'),\n iconSvgInline: () => TagMultipleSvg,\n // If the app is disabled, the action is not available anyway\n enabled(nodes) {\n if (isPublicShare()) {\n return false;\n }\n if (nodes.length === 0) {\n return false;\n }\n // Disabled for non dav resources\n if (nodes.some((node) => !node.isDavResource)) {\n return false;\n }\n // We need to have the update permission on all nodes\n return !nodes.some((node) => (node.permissions & Permission.UPDATE) === 0);\n },\n async exec(node) {\n return execBatch([node])[0];\n },\n execBatch,\n});\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getLoggerBuilder } from '@nextcloud/logger';\nexport default getLoggerBuilder()\n .setApp('files')\n .detectUser()\n .build();\n","import { NodeStatus } from '@nextcloud/files';\nimport { showError, showSuccess } from '@nextcloud/dialogs';\nimport { t } from '@nextcloud/l10n';\nimport Vue from 'vue';\nimport { getPinia } from '../store';\nimport { useActiveStore } from '../store/active';\nimport logger from '../logger';\n/**\n * Execute an action on the current active node\n *\n * @param action The action to execute\n */\nexport const executeAction = async (action) => {\n const activeStore = useActiveStore(getPinia());\n const currentDir = (window?.OCP?.Files?.Router?.query?.dir || '/');\n const currentNode = activeStore.activeNode;\n const currentView = activeStore.activeView;\n if (!currentNode || !currentView) {\n logger.error('No active node or view', { node: currentNode, view: currentView });\n return;\n }\n if (currentNode.status === NodeStatus.LOADING) {\n logger.debug('Node is already loading', { node: currentNode });\n return;\n }\n if (!action.enabled([currentNode], currentView)) {\n logger.debug('Action is not not available for the current context', { action, node: currentNode, view: currentView });\n return;\n }\n let displayName = action.id;\n try {\n displayName = action.displayName([currentNode], currentView);\n }\n catch (error) {\n logger.error('Error while getting action display name', { action, error });\n }\n try {\n // Set the loading marker\n Vue.set(currentNode, 'status', NodeStatus.LOADING);\n activeStore.setActiveAction(action);\n const success = await action.exec(currentNode, currentView, currentDir);\n // If the action returns null, we stay silent\n if (success === null || success === undefined) {\n return;\n }\n if (success) {\n showSuccess(t('files', '\"{displayName}\" action executed successfully', { displayName }));\n return;\n }\n showError(t('files', '\"{displayName}\" action failed', { displayName }));\n }\n catch (error) {\n logger.error('Error while executing action', { action, error });\n showError(t('files', '\"{displayName}\" action failed', { displayName }));\n }\n finally {\n // Reset the loading marker\n Vue.set(currentNode, 'status', undefined);\n activeStore.clearActiveAction();\n }\n};\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { defineStore } from 'pinia';\nimport { getNavigation } from '@nextcloud/files';\nimport { subscribe } from '@nextcloud/event-bus';\nimport logger from '../logger.ts';\nexport const useActiveStore = function (...args) {\n const store = defineStore('active', {\n state: () => ({\n _initialized: false,\n activeNode: null,\n activeView: null,\n activeAction: null,\n }),\n actions: {\n setActiveNode(node) {\n if (!node) {\n throw new Error('Use clearActiveNode to clear the active node');\n }\n logger.debug('Setting active node', { node });\n this.activeNode = node;\n },\n clearActiveNode() {\n this.activeNode = null;\n },\n onDeletedNode(node) {\n if (this.activeNode && this.activeNode.source === node.source) {\n this.clearActiveNode();\n }\n },\n setActiveAction(action) {\n this.activeAction = action;\n },\n clearActiveAction() {\n this.activeAction = null;\n },\n onChangedView(view = null) {\n logger.debug('Setting active view', { view });\n this.activeView = view;\n this.clearActiveNode();\n },\n },\n });\n const activeStore = store(...args);\n const navigation = getNavigation();\n // Make sure we only register the listeners once\n if (!activeStore._initialized) {\n subscribe('files:node:deleted', activeStore.onDeletedNode);\n activeStore._initialized = true;\n activeStore.onChangedView(navigation.active);\n // Or you can react to changes of the current active view\n navigation.addEventListener('updateActive', (event) => {\n activeStore.onChangedView(event.detail);\n });\n }\n return activeStore;\n};\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { createPinia } from 'pinia';\nexport const getPinia = () => {\n if (window._nc_files_pinia) {\n return window._nc_files_pinia;\n }\n window._nc_files_pinia = createPinia();\n return window._nc_files_pinia;\n};\n","import { getCurrentUser } from '@nextcloud/auth';\nimport { Folder, Permission, getDavNameSpaces, getDavProperties, davGetClient, davResultToNode, davRemoteURL, davRootPath } from '@nextcloud/files';\nimport { fetchTags } from './api';\nconst rootPath = '/systemtags';\nconst client = davGetClient();\nconst resultToNode = (node) => davResultToNode(node);\nconst formatReportPayload = (tagId) => `<?xml version=\"1.0\"?>\n<oc:filter-files ${getDavNameSpaces()}>\n\t<d:prop>\n\t\t${getDavProperties()}\n\t</d:prop>\n\t<oc:filter-rules>\n\t\t<oc:systemtag>${tagId}</oc:systemtag>\n\t</oc:filter-rules>\n</oc:filter-files>`;\nconst tagToNode = function (tag) {\n return new Folder({\n id: tag.id,\n source: `${davRemoteURL}${rootPath}/${tag.id}`,\n owner: String(getCurrentUser()?.uid ?? 'anonymous'),\n root: rootPath,\n displayname: tag.displayName,\n permissions: Permission.READ,\n attributes: {\n ...tag,\n 'is-tag': true,\n },\n });\n};\nexport const getContents = async (path = '/') => {\n // List tags in the root\n const tagsCache = (await fetchTags()).filter(tag => tag.userVisible);\n if (path === '/') {\n return {\n folder: new Folder({\n id: 0,\n source: `${davRemoteURL}${rootPath}`,\n owner: getCurrentUser()?.uid,\n root: rootPath,\n permissions: Permission.NONE,\n }),\n contents: tagsCache.map(tagToNode),\n };\n }\n const tagId = parseInt(path.split('/', 2)[1]);\n const tag = tagsCache.find(tag => tag.id === tagId);\n if (!tag) {\n throw new Error('Tag not found');\n }\n const folder = tagToNode(tag);\n const contentsResponse = await client.getDirectoryContents(davRootPath, {\n details: true,\n // Only filter favorites if we're at the root\n data: formatReportPayload(tagId),\n headers: {\n // Patched in WebdavClient.ts\n method: 'REPORT',\n },\n });\n return {\n folder,\n contents: contentsResponse.data.map(resultToNode),\n };\n};\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { translate as t } from '@nextcloud/l10n';\nimport { View, getNavigation } from '@nextcloud/files';\nimport { getContents } from '../services/systemtags.js';\nimport svgTagMultiple from '@mdi/svg/svg/tag-multiple.svg?raw';\nexport const systemTagsViewId = 'tags';\n/**\n * Register the system tags files view\n */\nexport function registerSystemTagsView() {\n const Navigation = getNavigation();\n Navigation.register(new View({\n id: systemTagsViewId,\n name: t('systemtags', 'Tags'),\n caption: t('systemtags', 'List of tags and their associated files and folders.'),\n emptyTitle: t('systemtags', 'No tags found'),\n emptyCaption: t('systemtags', 'Tags you have created will show up here.'),\n icon: svgTagMultiple,\n order: 25,\n getContents,\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/sass-loader/dist/cjs.js!./fileEntryInlineSystemTags.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./fileEntryInlineSystemTags.scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { FileAction } from '@nextcloud/files';\nimport { subscribe } from '@nextcloud/event-bus';\nimport { t } from '@nextcloud/l10n';\nimport '../css/fileEntryInlineSystemTags.scss';\nimport { elementColor, isDarkModeEnabled } from '../utils/colorUtils';\nimport { fetchTags } from '../services/api';\nimport { getNodeSystemTags } from '../utils';\nimport logger from '../logger.ts';\n// Init tag cache\nconst cache = [];\nconst renderTag = function (tag, isMore = false) {\n const tagElement = document.createElement('li');\n tagElement.classList.add('files-list__system-tag');\n tagElement.setAttribute('data-systemtag-name', tag);\n tagElement.textContent = tag;\n // Set the color if it exists\n const cachedTag = cache.find((t) => t.displayName === tag);\n if (cachedTag?.color) {\n // Make sure contrast is good and follow WCAG guidelines\n const mainBackgroundColor = getComputedStyle(document.body)\n .getPropertyValue('--color-main-background')\n .replace('#', '') || (isDarkModeEnabled() ? '000000' : 'ffffff');\n const primaryElement = elementColor(`#${cachedTag.color}`, `#${mainBackgroundColor}`);\n tagElement.style.setProperty('--systemtag-color', primaryElement);\n tagElement.setAttribute('data-systemtag-color', 'true');\n }\n if (isMore) {\n tagElement.classList.add('files-list__system-tag--more');\n }\n return tagElement;\n};\nconst renderInline = async function (node) {\n // Ensure we have the system tags as an array\n const tags = getNodeSystemTags(node);\n const systemTagsElement = document.createElement('ul');\n systemTagsElement.classList.add('files-list__system-tags');\n systemTagsElement.setAttribute('aria-label', t('files', 'Assigned collaborative tags'));\n systemTagsElement.setAttribute('data-systemtags-fileid', node.fileid?.toString() || '');\n if (tags.length === 0) {\n return systemTagsElement;\n }\n // Fetch the tags if the cache is empty\n if (cache.length === 0) {\n try {\n // Best would be to support attributes from webdav,\n // but currently the library does not support it\n cache.push(...await fetchTags());\n }\n catch (error) {\n logger.error('Failed to fetch tags', { error });\n }\n }\n systemTagsElement.append(renderTag(tags[0]));\n if (tags.length === 2) {\n // Special case only two tags:\n // the overflow fake tag would take the same space as this, so render it\n systemTagsElement.append(renderTag(tags[1]));\n }\n else if (tags.length > 1) {\n // More tags than the one we're showing\n // So we add a overflow element indicating there are more tags\n const moreTagElement = renderTag('+' + (tags.length - 1), true);\n moreTagElement.setAttribute('title', tags.slice(1).join(', '));\n // because the title is not accessible we hide this element for screen readers (see alternative below)\n moreTagElement.setAttribute('aria-hidden', 'true');\n moreTagElement.setAttribute('role', 'presentation');\n systemTagsElement.append(moreTagElement);\n // For accessibility the tags are listed, as the title is not accessible\n // but those tags are visually hidden\n for (const tag of tags.slice(1)) {\n const tagElement = renderTag(tag);\n tagElement.classList.add('hidden-visually');\n systemTagsElement.append(tagElement);\n }\n }\n return systemTagsElement;\n};\nexport const action = new FileAction({\n id: 'system-tags',\n displayName: () => '',\n iconSvgInline: () => '',\n enabled(nodes) {\n // Only show the action on single nodes\n if (nodes.length !== 1) {\n return false;\n }\n // Always show the action, even if there are no tags\n // This will render an empty tag list and allow events to update it\n return true;\n },\n exec: async () => null,\n renderInline,\n order: 0,\n});\n// Update the system tags html when the node is updated\nconst updateSystemTagsHtml = function (node) {\n renderInline(node).then((systemTagsHtml) => {\n document.querySelectorAll(`[data-systemtags-fileid=\"${node.fileid}\"]`).forEach((element) => {\n element.replaceWith(systemTagsHtml);\n });\n });\n};\n// Add and remove tags from the cache\nconst addTag = function (tag) {\n cache.push(tag);\n};\nconst removeTag = function (tag) {\n cache.splice(cache.findIndex((t) => t.id === tag.id), 1);\n};\nconst updateTag = function (tag) {\n const index = cache.findIndex((t) => t.id === tag.id);\n if (index !== -1) {\n cache[index] = tag;\n }\n updateSystemTagsColorAttribute(tag);\n};\n// Update the color attribute of the system tags\nconst updateSystemTagsColorAttribute = function (tag) {\n document.querySelectorAll(`[data-systemtag-name=\"${tag.displayName}\"]`).forEach((element) => {\n element.style.setProperty('--systemtag-color', `#${tag.color}`);\n });\n};\n// Subscribe to the events\nsubscribe('systemtags:node:updated', updateSystemTagsHtml);\nsubscribe('systemtags:tag:created', addTag);\nsubscribe('systemtags:tag:deleted', removeTag);\nsubscribe('systemtags:tag:updated', updateTag);\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport {} from '@nextcloud/files';\nimport { FileType, FileAction, DefaultType } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nimport { systemTagsViewId } from '../files_views/systemtagsView';\nexport const action = new FileAction({\n id: 'systemtags:open-in-files',\n displayName: () => t('systemtags', 'Open in Files'),\n iconSvgInline: () => '',\n enabled(nodes, view) {\n // Only for the system tags view\n if (view.id !== systemTagsViewId) {\n return false;\n }\n // Only for single nodes\n if (nodes.length !== 1) {\n return false;\n }\n // Do not open tags (keep the default action) and only open folders\n return nodes[0].attributes['is-tag'] !== true\n && nodes[0].type === FileType.Folder;\n },\n async exec(node) {\n let dir = node.dirname;\n if (node.type === FileType.Folder) {\n dir = node.path;\n }\n window.OCP.Files.Router.goToRoute(null, // use default route\n { view: 'files', fileid: String(node.fileid) }, { dir, openfile: 'true' });\n return null;\n },\n // Before openFolderAction\n order: -1000,\n default: DefaultType.HIDDEN,\n});\n","/**\n * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { registerDavProperty, registerFileAction } from '@nextcloud/files';\nimport { registerHotkeys } from './services/HotKeysService';\nimport { registerSystemTagsView } from './files_views/systemtagsView';\nimport { action as bulkSystemTagsAction } from './files_actions/bulkSystemTagsAction';\nimport { action as inlineSystemTagsAction } from './files_actions/inlineSystemTagsAction';\nimport { action as openInFilesAction } from './files_actions/openInFilesAction';\nregisterDavProperty('nc:system-tags');\nregisterFileAction(bulkSystemTagsAction);\nregisterFileAction(inlineSystemTagsAction);\nregisterFileAction(openInFilesAction);\nregisterSystemTagsView();\ndocument.addEventListener('DOMContentLoaded', () => {\n registerHotkeys();\n});\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { useHotKey } from '@nextcloud/vue/composables/useHotKey';\nimport { action as manageTagAction } from '../files_actions/bulkSystemTagsAction.ts';\nimport { executeAction } from '../../../files/src/utils/actionUtils.ts';\nimport logger from '../logger.ts';\n/**\n * This register the hotkeys for the Files app.\n * As much as possible, we try to have all the hotkeys in one place.\n * Please make sure to add tests for the hotkeys after adding a new one.\n */\nexport const registerHotkeys = function () {\n // t opens the tag management dialog\n useHotKey('t', () => executeAction(manageTagAction), {\n stop: true,\n prevent: true,\n });\n logger.debug('Hotkeys registered');\n};\n","export default {\n\taliceblue: [240, 248, 255],\n\tantiquewhite: [250, 235, 215],\n\taqua: [0, 255, 255],\n\taquamarine: [127, 255, 212],\n\tazure: [240, 255, 255],\n\tbeige: [245, 245, 220],\n\tbisque: [255, 228, 196],\n\tblack: [0, 0, 0],\n\tblanchedalmond: [255, 235, 205],\n\tblue: [0, 0, 255],\n\tblueviolet: [138, 43, 226],\n\tbrown: [165, 42, 42],\n\tburlywood: [222, 184, 135],\n\tcadetblue: [95, 158, 160],\n\tchartreuse: [127, 255, 0],\n\tchocolate: [210, 105, 30],\n\tcoral: [255, 127, 80],\n\tcornflowerblue: [100, 149, 237],\n\tcornsilk: [255, 248, 220],\n\tcrimson: [220, 20, 60],\n\tcyan: [0, 255, 255],\n\tdarkblue: [0, 0, 139],\n\tdarkcyan: [0, 139, 139],\n\tdarkgoldenrod: [184, 134, 11],\n\tdarkgray: [169, 169, 169],\n\tdarkgreen: [0, 100, 0],\n\tdarkgrey: [169, 169, 169],\n\tdarkkhaki: [189, 183, 107],\n\tdarkmagenta: [139, 0, 139],\n\tdarkolivegreen: [85, 107, 47],\n\tdarkorange: [255, 140, 0],\n\tdarkorchid: [153, 50, 204],\n\tdarkred: [139, 0, 0],\n\tdarksalmon: [233, 150, 122],\n\tdarkseagreen: [143, 188, 143],\n\tdarkslateblue: [72, 61, 139],\n\tdarkslategray: [47, 79, 79],\n\tdarkslategrey: [47, 79, 79],\n\tdarkturquoise: [0, 206, 209],\n\tdarkviolet: [148, 0, 211],\n\tdeeppink: [255, 20, 147],\n\tdeepskyblue: [0, 191, 255],\n\tdimgray: [105, 105, 105],\n\tdimgrey: [105, 105, 105],\n\tdodgerblue: [30, 144, 255],\n\tfirebrick: [178, 34, 34],\n\tfloralwhite: [255, 250, 240],\n\tforestgreen: [34, 139, 34],\n\tfuchsia: [255, 0, 255],\n\tgainsboro: [220, 220, 220],\n\tghostwhite: [248, 248, 255],\n\tgold: [255, 215, 0],\n\tgoldenrod: [218, 165, 32],\n\tgray: [128, 128, 128],\n\tgreen: [0, 128, 0],\n\tgreenyellow: [173, 255, 47],\n\tgrey: [128, 128, 128],\n\thoneydew: [240, 255, 240],\n\thotpink: [255, 105, 180],\n\tindianred: [205, 92, 92],\n\tindigo: [75, 0, 130],\n\tivory: [255, 255, 240],\n\tkhaki: [240, 230, 140],\n\tlavender: [230, 230, 250],\n\tlavenderblush: [255, 240, 245],\n\tlawngreen: [124, 252, 0],\n\tlemonchiffon: [255, 250, 205],\n\tlightblue: [173, 216, 230],\n\tlightcoral: [240, 128, 128],\n\tlightcyan: [224, 255, 255],\n\tlightgoldenrodyellow: [250, 250, 210],\n\tlightgray: [211, 211, 211],\n\tlightgreen: [144, 238, 144],\n\tlightgrey: [211, 211, 211],\n\tlightpink: [255, 182, 193],\n\tlightsalmon: [255, 160, 122],\n\tlightseagreen: [32, 178, 170],\n\tlightskyblue: [135, 206, 250],\n\tlightslategray: [119, 136, 153],\n\tlightslategrey: [119, 136, 153],\n\tlightsteelblue: [176, 196, 222],\n\tlightyellow: [255, 255, 224],\n\tlime: [0, 255, 0],\n\tlimegreen: [50, 205, 50],\n\tlinen: [250, 240, 230],\n\tmagenta: [255, 0, 255],\n\tmaroon: [128, 0, 0],\n\tmediumaquamarine: [102, 205, 170],\n\tmediumblue: [0, 0, 205],\n\tmediumorchid: [186, 85, 211],\n\tmediumpurple: [147, 112, 219],\n\tmediumseagreen: [60, 179, 113],\n\tmediumslateblue: [123, 104, 238],\n\tmediumspringgreen: [0, 250, 154],\n\tmediumturquoise: [72, 209, 204],\n\tmediumvioletred: [199, 21, 133],\n\tmidnightblue: [25, 25, 112],\n\tmintcream: [245, 255, 250],\n\tmistyrose: [255, 228, 225],\n\tmoccasin: [255, 228, 181],\n\tnavajowhite: [255, 222, 173],\n\tnavy: [0, 0, 128],\n\toldlace: [253, 245, 230],\n\tolive: [128, 128, 0],\n\tolivedrab: [107, 142, 35],\n\torange: [255, 165, 0],\n\torangered: [255, 69, 0],\n\torchid: [218, 112, 214],\n\tpalegoldenrod: [238, 232, 170],\n\tpalegreen: [152, 251, 152],\n\tpaleturquoise: [175, 238, 238],\n\tpalevioletred: [219, 112, 147],\n\tpapayawhip: [255, 239, 213],\n\tpeachpuff: [255, 218, 185],\n\tperu: [205, 133, 63],\n\tpink: [255, 192, 203],\n\tplum: [221, 160, 221],\n\tpowderblue: [176, 224, 230],\n\tpurple: [128, 0, 128],\n\trebeccapurple: [102, 51, 153],\n\tred: [255, 0, 0],\n\trosybrown: [188, 143, 143],\n\troyalblue: [65, 105, 225],\n\tsaddlebrown: [139, 69, 19],\n\tsalmon: [250, 128, 114],\n\tsandybrown: [244, 164, 96],\n\tseagreen: [46, 139, 87],\n\tseashell: [255, 245, 238],\n\tsienna: [160, 82, 45],\n\tsilver: [192, 192, 192],\n\tskyblue: [135, 206, 235],\n\tslateblue: [106, 90, 205],\n\tslategray: [112, 128, 144],\n\tslategrey: [112, 128, 144],\n\tsnow: [255, 250, 250],\n\tspringgreen: [0, 255, 127],\n\tsteelblue: [70, 130, 180],\n\ttan: [210, 180, 140],\n\tteal: [0, 128, 128],\n\tthistle: [216, 191, 216],\n\ttomato: [255, 99, 71],\n\tturquoise: [64, 224, 208],\n\tviolet: [238, 130, 238],\n\twheat: [245, 222, 179],\n\twhite: [255, 255, 255],\n\twhitesmoke: [245, 245, 245],\n\tyellow: [255, 255, 0],\n\tyellowgreen: [154, 205, 50]\n}\n","import colorNames from 'color-name';\n\nconst reverseNames = Object.create(null);\n\n// Create a list of reverse color names\nfor (const name in colorNames) {\n\tif (Object.hasOwn(colorNames, name)) {\n\t\treverseNames[colorNames[name]] = name;\n\t}\n}\n\nconst cs = {\n\tto: {},\n\tget: {},\n};\n\ncs.get = function (string) {\n\tconst prefix = string.slice(0, 3).toLowerCase();\n\tlet value;\n\tlet model;\n\tswitch (prefix) {\n\t\tcase 'hsl': {\n\t\t\tvalue = cs.get.hsl(string);\n\t\t\tmodel = 'hsl';\n\t\t\tbreak;\n\t\t}\n\n\t\tcase 'hwb': {\n\t\t\tvalue = cs.get.hwb(string);\n\t\t\tmodel = 'hwb';\n\t\t\tbreak;\n\t\t}\n\n\t\tdefault: {\n\t\t\tvalue = cs.get.rgb(string);\n\t\t\tmodel = 'rgb';\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tif (!value) {\n\t\treturn null;\n\t}\n\n\treturn {model, value};\n};\n\ncs.get.rgb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tconst abbr = /^#([a-f\\d]{3,4})$/i;\n\tconst hex = /^#([a-f\\d]{6})([a-f\\d]{2})?$/i;\n\tconst rgba = /^rgba?\\(\\s*([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)\\s*(?:[,|/]\\s*([+-]?[\\d.]+)(%?)\\s*)?\\)$/;\n\tconst per = /^rgba?\\(\\s*([+-]?[\\d.]+)%\\s*,?\\s*([+-]?[\\d.]+)%\\s*,?\\s*([+-]?[\\d.]+)%\\s*(?:[,|/]\\s*([+-]?[\\d.]+)(%?)\\s*)?\\)$/;\n\tconst keyword = /^(\\w+)$/;\n\n\tlet rgb = [0, 0, 0, 1];\n\tlet match;\n\tlet i;\n\tlet hexAlpha;\n\n\tif (match = string.match(hex)) {\n\t\thexAlpha = match[2];\n\t\tmatch = match[1];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\t// https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19\n\t\t\tconst i2 = i * 2;\n\t\t\trgb[i] = Number.parseInt(match.slice(i2, i2 + 2), 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = Number.parseInt(hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(abbr)) {\n\t\tmatch = match[1];\n\t\thexAlpha = match[3];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Number.parseInt(match[i] + match[i], 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = Number.parseInt(hexAlpha + hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(rgba)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Number.parseInt(match[i + 1], 10);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\trgb[3] = match[5] ? Number.parseFloat(match[4]) * 0.01 : Number.parseFloat(match[4]);\n\t\t}\n\t} else if (match = string.match(per)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Math.round(Number.parseFloat(match[i + 1]) * 2.55);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\trgb[3] = match[5] ? Number.parseFloat(match[4]) * 0.01 : Number.parseFloat(match[4]);\n\t\t}\n\t} else if (match = string.match(keyword)) {\n\t\tif (match[1] === 'transparent') {\n\t\t\treturn [0, 0, 0, 0];\n\t\t}\n\n\t\tif (!Object.hasOwn(colorNames, match[1])) {\n\t\t\treturn null;\n\t\t}\n\n\t\trgb = colorNames[match[1]];\n\t\trgb[3] = 1;\n\n\t\treturn rgb;\n\t} else {\n\t\treturn null;\n\t}\n\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] = clamp(rgb[i], 0, 255);\n\t}\n\n\trgb[3] = clamp(rgb[3], 0, 1);\n\n\treturn rgb;\n};\n\ncs.get.hsl = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tconst hsl = /^hsla?\\(\\s*([+-]?(?:\\d{0,3}\\.)?\\d+)(?:deg)?\\s*,?\\s*([+-]?[\\d.]+)%\\s*,?\\s*([+-]?[\\d.]+)%\\s*(?:[,|/]\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tconst match = string.match(hsl);\n\n\tif (match) {\n\t\tconst alpha = Number.parseFloat(match[4]);\n\t\tconst h = ((Number.parseFloat(match[1]) % 360) + 360) % 360;\n\t\tconst s = clamp(Number.parseFloat(match[2]), 0, 100);\n\t\tconst l = clamp(Number.parseFloat(match[3]), 0, 100);\n\t\tconst a = clamp(Number.isNaN(alpha) ? 1 : alpha, 0, 1);\n\n\t\treturn [h, s, l, a];\n\t}\n\n\treturn null;\n};\n\ncs.get.hwb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tconst hwb = /^hwb\\(\\s*([+-]?\\d{0,3}(?:\\.\\d+)?)(?:deg)?\\s*,\\s*([+-]?[\\d.]+)%\\s*,\\s*([+-]?[\\d.]+)%\\s*(?:,\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tconst match = string.match(hwb);\n\n\tif (match) {\n\t\tconst alpha = Number.parseFloat(match[4]);\n\t\tconst h = ((Number.parseFloat(match[1]) % 360) + 360) % 360;\n\t\tconst w = clamp(Number.parseFloat(match[2]), 0, 100);\n\t\tconst b = clamp(Number.parseFloat(match[3]), 0, 100);\n\t\tconst a = clamp(Number.isNaN(alpha) ? 1 : alpha, 0, 1);\n\t\treturn [h, w, b, a];\n\t}\n\n\treturn null;\n};\n\ncs.to.hex = function (...rgba) {\n\treturn (\n\t\t'#' +\n\t\thexDouble(rgba[0]) +\n\t\thexDouble(rgba[1]) +\n\t\thexDouble(rgba[2]) +\n\t\t(rgba[3] < 1\n\t\t\t? (hexDouble(Math.round(rgba[3] * 255)))\n\t\t\t: '')\n\t);\n};\n\ncs.to.rgb = function (...rgba) {\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')'\n\t\t: 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')';\n};\n\ncs.to.rgb.percent = function (...rgba) {\n\tconst r = Math.round(rgba[0] / 255 * 100);\n\tconst g = Math.round(rgba[1] / 255 * 100);\n\tconst b = Math.round(rgba[2] / 255 * 100);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)'\n\t\t: 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')';\n};\n\ncs.to.hsl = function (...hsla) {\n\treturn hsla.length < 4 || hsla[3] === 1\n\t\t? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)'\n\t\t: 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')';\n};\n\n// Hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\ncs.to.hwb = function (...hwba) {\n\tlet a = '';\n\tif (hwba.length >= 4 && hwba[3] !== 1) {\n\t\ta = ', ' + hwba[3];\n\t}\n\n\treturn 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')';\n};\n\ncs.to.keyword = function (...rgb) {\n\treturn reverseNames[rgb.slice(0, 3)];\n};\n\n// Helpers\nfunction clamp(number_, min, max) {\n\treturn Math.min(Math.max(min, number_), max);\n}\n\nfunction hexDouble(number_) {\n\tconst string_ = Math.round(number_).toString(16).toUpperCase();\n\treturn (string_.length < 2) ? '0' + string_ : string_;\n}\n\nexport default cs;\n","export default {\n\taliceblue: [240, 248, 255],\n\tantiquewhite: [250, 235, 215],\n\taqua: [0, 255, 255],\n\taquamarine: [127, 255, 212],\n\tazure: [240, 255, 255],\n\tbeige: [245, 245, 220],\n\tbisque: [255, 228, 196],\n\tblack: [0, 0, 0],\n\tblanchedalmond: [255, 235, 205],\n\tblue: [0, 0, 255],\n\tblueviolet: [138, 43, 226],\n\tbrown: [165, 42, 42],\n\tburlywood: [222, 184, 135],\n\tcadetblue: [95, 158, 160],\n\tchartreuse: [127, 255, 0],\n\tchocolate: [210, 105, 30],\n\tcoral: [255, 127, 80],\n\tcornflowerblue: [100, 149, 237],\n\tcornsilk: [255, 248, 220],\n\tcrimson: [220, 20, 60],\n\tcyan: [0, 255, 255],\n\tdarkblue: [0, 0, 139],\n\tdarkcyan: [0, 139, 139],\n\tdarkgoldenrod: [184, 134, 11],\n\tdarkgray: [169, 169, 169],\n\tdarkgreen: [0, 100, 0],\n\tdarkgrey: [169, 169, 169],\n\tdarkkhaki: [189, 183, 107],\n\tdarkmagenta: [139, 0, 139],\n\tdarkolivegreen: [85, 107, 47],\n\tdarkorange: [255, 140, 0],\n\tdarkorchid: [153, 50, 204],\n\tdarkred: [139, 0, 0],\n\tdarksalmon: [233, 150, 122],\n\tdarkseagreen: [143, 188, 143],\n\tdarkslateblue: [72, 61, 139],\n\tdarkslategray: [47, 79, 79],\n\tdarkslategrey: [47, 79, 79],\n\tdarkturquoise: [0, 206, 209],\n\tdarkviolet: [148, 0, 211],\n\tdeeppink: [255, 20, 147],\n\tdeepskyblue: [0, 191, 255],\n\tdimgray: [105, 105, 105],\n\tdimgrey: [105, 105, 105],\n\tdodgerblue: [30, 144, 255],\n\tfirebrick: [178, 34, 34],\n\tfloralwhite: [255, 250, 240],\n\tforestgreen: [34, 139, 34],\n\tfuchsia: [255, 0, 255],\n\tgainsboro: [220, 220, 220],\n\tghostwhite: [248, 248, 255],\n\tgold: [255, 215, 0],\n\tgoldenrod: [218, 165, 32],\n\tgray: [128, 128, 128],\n\tgreen: [0, 128, 0],\n\tgreenyellow: [173, 255, 47],\n\tgrey: [128, 128, 128],\n\thoneydew: [240, 255, 240],\n\thotpink: [255, 105, 180],\n\tindianred: [205, 92, 92],\n\tindigo: [75, 0, 130],\n\tivory: [255, 255, 240],\n\tkhaki: [240, 230, 140],\n\tlavender: [230, 230, 250],\n\tlavenderblush: [255, 240, 245],\n\tlawngreen: [124, 252, 0],\n\tlemonchiffon: [255, 250, 205],\n\tlightblue: [173, 216, 230],\n\tlightcoral: [240, 128, 128],\n\tlightcyan: [224, 255, 255],\n\tlightgoldenrodyellow: [250, 250, 210],\n\tlightgray: [211, 211, 211],\n\tlightgreen: [144, 238, 144],\n\tlightgrey: [211, 211, 211],\n\tlightpink: [255, 182, 193],\n\tlightsalmon: [255, 160, 122],\n\tlightseagreen: [32, 178, 170],\n\tlightskyblue: [135, 206, 250],\n\tlightslategray: [119, 136, 153],\n\tlightslategrey: [119, 136, 153],\n\tlightsteelblue: [176, 196, 222],\n\tlightyellow: [255, 255, 224],\n\tlime: [0, 255, 0],\n\tlimegreen: [50, 205, 50],\n\tlinen: [250, 240, 230],\n\tmagenta: [255, 0, 255],\n\tmaroon: [128, 0, 0],\n\tmediumaquamarine: [102, 205, 170],\n\tmediumblue: [0, 0, 205],\n\tmediumorchid: [186, 85, 211],\n\tmediumpurple: [147, 112, 219],\n\tmediumseagreen: [60, 179, 113],\n\tmediumslateblue: [123, 104, 238],\n\tmediumspringgreen: [0, 250, 154],\n\tmediumturquoise: [72, 209, 204],\n\tmediumvioletred: [199, 21, 133],\n\tmidnightblue: [25, 25, 112],\n\tmintcream: [245, 255, 250],\n\tmistyrose: [255, 228, 225],\n\tmoccasin: [255, 228, 181],\n\tnavajowhite: [255, 222, 173],\n\tnavy: [0, 0, 128],\n\toldlace: [253, 245, 230],\n\tolive: [128, 128, 0],\n\tolivedrab: [107, 142, 35],\n\torange: [255, 165, 0],\n\torangered: [255, 69, 0],\n\torchid: [218, 112, 214],\n\tpalegoldenrod: [238, 232, 170],\n\tpalegreen: [152, 251, 152],\n\tpaleturquoise: [175, 238, 238],\n\tpalevioletred: [219, 112, 147],\n\tpapayawhip: [255, 239, 213],\n\tpeachpuff: [255, 218, 185],\n\tperu: [205, 133, 63],\n\tpink: [255, 192, 203],\n\tplum: [221, 160, 221],\n\tpowderblue: [176, 224, 230],\n\tpurple: [128, 0, 128],\n\trebeccapurple: [102, 51, 153],\n\tred: [255, 0, 0],\n\trosybrown: [188, 143, 143],\n\troyalblue: [65, 105, 225],\n\tsaddlebrown: [139, 69, 19],\n\tsalmon: [250, 128, 114],\n\tsandybrown: [244, 164, 96],\n\tseagreen: [46, 139, 87],\n\tseashell: [255, 245, 238],\n\tsienna: [160, 82, 45],\n\tsilver: [192, 192, 192],\n\tskyblue: [135, 206, 235],\n\tslateblue: [106, 90, 205],\n\tslategray: [112, 128, 144],\n\tslategrey: [112, 128, 144],\n\tsnow: [255, 250, 250],\n\tspringgreen: [0, 255, 127],\n\tsteelblue: [70, 130, 180],\n\ttan: [210, 180, 140],\n\tteal: [0, 128, 128],\n\tthistle: [216, 191, 216],\n\ttomato: [255, 99, 71],\n\tturquoise: [64, 224, 208],\n\tviolet: [238, 130, 238],\n\twheat: [245, 222, 179],\n\twhite: [255, 255, 255],\n\twhitesmoke: [245, 245, 245],\n\tyellow: [255, 255, 0],\n\tyellowgreen: [154, 205, 50]\n}\n","/* MIT license */\n/* eslint-disable no-mixed-operators */\nimport cssKeywords from 'color-name';\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nconst reverseKeywords = {};\nfor (const key of Object.keys(cssKeywords)) {\n\treverseKeywords[cssKeywords[key]] = key;\n}\n\nconst convert = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']},\n};\n\nexport default convert;\n\n// LAB f(t) constant\nconst LAB_FT = (6 / 29) ** 3;\n\n// Hide .channels and .labels properties\nfor (const model of Object.keys(convert)) {\n\tif (!('channels' in convert[model])) {\n\t\tthrow new Error('missing channels property: ' + model);\n\t}\n\n\tif (!('labels' in convert[model])) {\n\t\tthrow new Error('missing channel labels property: ' + model);\n\t}\n\n\tif (convert[model].labels.length !== convert[model].channels) {\n\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t}\n\n\tconst {channels, labels} = convert[model];\n\tdelete convert[model].channels;\n\tdelete convert[model].labels;\n\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\tObject.defineProperty(convert[model], 'labels', {value: labels});\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst min = Math.min(r, g, b);\n\tconst max = Math.max(r, g, b);\n\tconst delta = max - min;\n\tlet h;\n\tlet s;\n\n\tswitch (max) {\n\t\tcase min: {\n\t\t\th = 0;\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase r: {\n\t\t\th = (g - b) / delta;\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase g: {\n\t\t\th = 2 + (b - r) / delta;\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase b: {\n\t\t\th = 4 + (r - g) / delta;\n\n\t\t\tbreak;\n\t\t}\n\t// No default\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst l = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tlet rdif;\n\tlet gdif;\n\tlet bdif;\n\tlet h;\n\tlet s;\n\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst v = Math.max(r, g, b);\n\tconst diff = v - Math.min(r, g, b);\n\tconst diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = 0;\n\t\ts = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tswitch (v) {\n\t\t\tcase r: {\n\t\t\t\th = bdif - gdif;\n\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase g: {\n\t\t\t\th = (1 / 3) + rdif - bdif;\n\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase b: {\n\t\t\t\th = (2 / 3) + gdif - rdif;\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t// No default\n\t\t}\n\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100,\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tconst r = rgb[0];\n\tconst g = rgb[1];\n\tlet b = rgb[2];\n\tconst h = convert.rgb.hsl(rgb)[0];\n\tconst w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\n\tconst k = Math.min(1 - r, 1 - g, 1 - b);\n\tconst c = (1 - r - k) / (1 - k) || 0;\n\tconst m = (1 - g - k) / (1 - k) || 0;\n\tconst y = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\nfunction comparativeDistance(x, y) {\n\t/*\n\t\tSee https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n\t*/\n\treturn (\n\t\t((x[0] - y[0]) ** 2) +\n\t\t((x[1] - y[1]) ** 2) +\n\t\t((x[2] - y[2]) ** 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tconst reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tlet currentClosestDistance = Number.POSITIVE_INFINITY;\n\tlet currentClosestKeyword;\n\n\tfor (const keyword of Object.keys(cssKeywords)) {\n\t\tconst value = cssKeywords[keyword];\n\n\t\t// Compute comparative distance\n\t\tconst distance = comparativeDistance(rgb, value);\n\n\t\t// Check if its less, if so set as closest\n\t\tif (distance < currentClosestDistance) {\n\t\t\tcurrentClosestDistance = distance;\n\t\t\tcurrentClosestKeyword = keyword;\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tlet r = rgb[0] / 255;\n\tlet g = rgb[1] / 255;\n\tlet b = rgb[2] / 255;\n\n\t// Assume sRGB\n\tr = r > 0.040_45 ? (((r + 0.055) / 1.055) ** 2.4) : (r / 12.92);\n\tg = g > 0.040_45 ? (((g + 0.055) / 1.055) ** 2.4) : (g / 12.92);\n\tb = b > 0.040_45 ? (((b + 0.055) / 1.055) ** 2.4) : (b / 12.92);\n\n\tconst x = (r * 0.412_456_4) + (g * 0.357_576_1) + (b * 0.180_437_5);\n\tconst y = (r * 0.212_672_9) + (g * 0.715_152_2) + (b * 0.072_175);\n\tconst z = (r * 0.019_333_9) + (g * 0.119_192) + (b * 0.950_304_1);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tconst xyz = convert.rgb.xyz(rgb);\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > LAB_FT ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > LAB_FT ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > LAB_FT ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tconst h = hsl[0] / 360;\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\tlet t3;\n\tlet value;\n\n\tif (s === 0) {\n\t\tvalue = l * 255;\n\t\treturn [value, value, value];\n\t}\n\n\tconst t2 = l < 0.5 ? l * (1 + s) : l + s - l * s;\n\n\tconst t1 = 2 * l - t2;\n\n\tconst rgb = [0, 0, 0];\n\tfor (let i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tvalue = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tvalue = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tvalue = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tvalue = t1;\n\t\t}\n\n\t\trgb[i] = value * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tconst h = hsl[0];\n\tlet s = hsl[1] / 100;\n\tlet l = hsl[2] / 100;\n\tlet smin = s;\n\tconst lmin = Math.max(l, 0.01);\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tconst v = (l + s) / 2;\n\tconst sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tconst h = hsv[0] / 60;\n\tconst s = hsv[1] / 100;\n\tlet v = hsv[2] / 100;\n\tconst hi = Math.floor(h) % 6;\n\n\tconst f = h - Math.floor(h);\n\tconst p = 255 * v * (1 - s);\n\tconst q = 255 * v * (1 - (s * f));\n\tconst t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0: {\n\t\t\treturn [v, t, p];\n\t\t}\n\n\t\tcase 1: {\n\t\t\treturn [q, v, p];\n\t\t}\n\n\t\tcase 2: {\n\t\t\treturn [p, v, t];\n\t\t}\n\n\t\tcase 3: {\n\t\t\treturn [p, q, v];\n\t\t}\n\n\t\tcase 4: {\n\t\t\treturn [t, p, v];\n\t\t}\n\n\t\tcase 5: {\n\t\t\treturn [v, p, q];\n\t\t}\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tconst h = hsv[0];\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\tconst vmin = Math.max(v, 0.01);\n\tlet sl;\n\tlet l;\n\n\tl = (2 - s) * v;\n\tconst lmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tconst h = hwb[0] / 360;\n\tlet wh = hwb[1] / 100;\n\tlet bl = hwb[2] / 100;\n\tconst ratio = wh + bl;\n\tlet f;\n\n\t// Wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\tconst i = Math.floor(6 * h);\n\tconst v = 1 - bl;\n\tf = 6 * h - i;\n\n\t// eslint-disable-next-line no-bitwise\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tconst n = wh + f * (v - wh); // Linear interpolation\n\n\tlet r;\n\tlet g;\n\tlet b;\n\t/* eslint-disable max-statements-per-line,no-multi-spaces, default-case-last */\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: { r = v; g = n; b = wh; break;\n\t\t}\n\n\t\tcase 1: { r = n; g = v; b = wh; break;\n\t\t}\n\n\t\tcase 2: { r = wh; g = v; b = n; break;\n\t\t}\n\n\t\tcase 3: { r = wh; g = n; b = v; break;\n\t\t}\n\n\t\tcase 4: { r = n; g = wh; b = v; break;\n\t\t}\n\n\t\tcase 5: { r = v; g = wh; b = n; break;\n\t\t}\n\t}\n\t/* eslint-enable max-statements-per-line,no-multi-spaces, default-case-last */\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tconst c = cmyk[0] / 100;\n\tconst m = cmyk[1] / 100;\n\tconst y = cmyk[2] / 100;\n\tconst k = cmyk[3] / 100;\n\n\tconst r = 1 - Math.min(1, c * (1 - k) + k);\n\tconst g = 1 - Math.min(1, m * (1 - k) + k);\n\tconst b = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\tlet r;\n\tlet g;\n\tlet b;\n\n\tr = (x * 3.240_454_2) + (y * -1.537_138_5) + (z * -0.498_531_4);\n\tg = (x * -0.969_266) + (y * 1.876_010_8) + (z * 0.041_556);\n\tb = (x * 0.055_643_4) + (y * -0.204_025_9) + (z * 1.057_225_2);\n\n\t// Assume sRGB\n\tr = r > 0.003_130_8\n\t\t? ((1.055 * (r ** (1 / 2.4))) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.003_130_8\n\t\t? ((1.055 * (g ** (1 / 2.4))) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.003_130_8\n\t\t? ((1.055 * (b ** (1 / 2.4))) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > LAB_FT ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > LAB_FT ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > LAB_FT ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet x;\n\tlet y;\n\tlet z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tconst y2 = y ** 3;\n\tconst x2 = x ** 3;\n\tconst z2 = z ** 3;\n\ty = y2 > LAB_FT ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > LAB_FT ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > LAB_FT ? z2 : (z - 16 / 116) / 7.787;\n\n\t// Illuminant D65 XYZ Tristrimulus Values\n\t// https://en.wikipedia.org/wiki/CIE_1931_color_space\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet h;\n\n\tconst hr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst c = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tconst l = lch[0];\n\tconst c = lch[1];\n\tconst h = lch[2];\n\n\tconst hr = h / 360 * 2 * Math.PI;\n\tconst a = c * Math.cos(hr);\n\tconst b = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args, saturation = null) {\n\tconst [r, g, b] = args;\n\tlet value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tlet ansi = 30\n\t\t/* eslint-disable no-bitwise */\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\t\t/* eslint-enable no-bitwise */\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// Optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tconst r = args[0];\n\tconst g = args[1];\n\tconst b = args[2];\n\n\t// We use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\t// eslint-disable-next-line no-bitwise\n\tif (r >> 4 === g >> 4 && g >> 4 === b >> 4) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tconst ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\targs = args[0];\n\n\tlet color = args % 10;\n\n\t// Handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tconst mult = (Math.trunc(args > 50) + 1) * 0.5;\n\t/* eslint-disable no-bitwise */\n\tconst r = ((color & 1) * mult) * 255;\n\tconst g = (((color >> 1) & 1) * mult) * 255;\n\tconst b = (((color >> 2) & 1) * mult) * 255;\n\t/* eslint-enable no-bitwise */\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\targs = args[0];\n\n\t// Handle greyscale\n\tif (args >= 232) {\n\t\tconst c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tlet rem;\n\tconst r = Math.floor(args / 36) / 5 * 255;\n\tconst g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tconst b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\t/* eslint-disable no-bitwise */\n\tconst integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\t/* eslint-enable no-bitwise */\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.slice(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tconst match = args.toString(16).match(/[a-f\\d]{6}|[a-f\\d]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tlet colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = [...colorString].map(char => char + char).join('');\n\t}\n\n\tconst integer = Number.parseInt(colorString, 16);\n\t/* eslint-disable no-bitwise */\n\tconst r = (integer >> 16) & 0xFF;\n\tconst g = (integer >> 8) & 0xFF;\n\tconst b = integer & 0xFF;\n\t/* eslint-enable no-bitwise */\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst max = Math.max(Math.max(r, g), b);\n\tconst min = Math.min(Math.min(r, g), b);\n\tconst chroma = (max - min);\n\tlet hue;\n\n\tconst grayscale = chroma < 1 ? min / (1 - chroma) : 0;\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else if (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else if (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\n\tconst c = l < 0.5 ? (2 * s * l) : (2 * s * (1 - l));\n\n\tlet f = 0;\n\tif (c < 1) {\n\t\tf = (l - 0.5 * c) / (1 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\n\tconst c = s * v;\n\tlet f = 0;\n\n\tif (c < 1) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tconst h = hcg[0] / 360;\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tif (c === 0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tconst pure = [0, 0, 0];\n\tconst hi = (h % 1) * 6;\n\tconst v = hi % 1;\n\tconst w = 1 - v;\n\tlet mg = 0;\n\n\t/* eslint-disable max-statements-per-line */\n\tswitch (Math.floor(hi)) {\n\t\tcase 0: {\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\t}\n\n\t\tcase 1: {\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\t}\n\n\t\tcase 2: {\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\t}\n\n\t\tcase 3: {\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\t}\n\n\t\tcase 4: {\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\t}\n\n\t\tdefault: {\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t\t}\n\t}\n\t/* eslint-enable max-statements-per-line */\n\n\tmg = (1 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255,\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst v = c + g * (1 - c);\n\tlet f = 0;\n\n\tif (v > 0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst l = g * (1 - c) + 0.5 * c;\n\tlet s = 0;\n\n\tif (l > 0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else if (l >= 0.5 && l < 1) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\tconst v = c + g * (1 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tconst w = hwb[1] / 100;\n\tconst b = hwb[2] / 100;\n\tconst v = 1 - b;\n\tconst c = v - w;\n\tlet g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65_535) * 255, (apple[1] / 65_535) * 255, (apple[2] / 65_535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65_535, (rgb[1] / 255) * 65_535, (rgb[2] / 255) * 65_535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hsv = convert.gray.hsl;\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\t/* eslint-disable no-bitwise */\n\tconst value = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tconst integer = (value << 16) + (value << 8) + value;\n\t/* eslint-enable no-bitwise */\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.slice(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tconst value = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [value / 255 * 100];\n};\n","import conversions from './conversions.js';\n\n/*\n\tThis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tconst graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tconst models = Object.keys(conversions);\n\n\tfor (let {length} = models, i = 0; i < length; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null,\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tconst graph = buildGraph();\n\tconst queue = [fromModel]; // Unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length > 0) {\n\t\tconst current = queue.pop();\n\t\tconst adjacents = Object.keys(conversions[current]);\n\n\t\tfor (let {length} = adjacents, i = 0; i < length; i++) {\n\t\t\tconst adjacent = adjacents[i];\n\t\t\tconst node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tconst path = [graph[toModel].parent, toModel];\n\tlet fn = conversions[graph[toModel].parent][toModel];\n\n\tlet cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nfunction route(fromModel) {\n\tconst graph = deriveBFS(fromModel);\n\tconst conversion = {};\n\n\tconst models = Object.keys(graph);\n\tfor (let {length} = models, i = 0; i < length; i++) {\n\t\tconst toModel = models[i];\n\t\tconst node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// No possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n}\n\nexport default route;\n","import conversions from './conversions.js';\nimport route from './route.js';\n\nconst convert = {};\n\nconst models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\tconst result = fn(args);\n\n\t\t// We're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (let {length} = result, i = 0; i < length; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfor (const fromModel of models) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tconst routes = route(fromModel);\n\tconst routeModels = Object.keys(routes);\n\n\tfor (const toModel of routeModels) {\n\t\tconst fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t}\n}\n\nexport default convert;\n","import colorString from 'color-string';\nimport convert from 'color-convert';\n\nconst skippedModels = [\n\t// To be honest, I don't really feel like keyword belongs in color convert, but eh.\n\t'keyword',\n\n\t// Gray conflicts with some method names, and has its own method defined.\n\t'gray',\n\n\t// Shouldn't really be in color-convert either...\n\t'hex',\n];\n\nconst hashedModelKeys = {};\nfor (const model of Object.keys(convert)) {\n\thashedModelKeys[[...convert[model].labels].sort().join('')] = model;\n}\n\nconst limiters = {};\n\nfunction Color(object, model) {\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(object, model);\n\t}\n\n\tif (model && model in skippedModels) {\n\t\tmodel = null;\n\t}\n\n\tif (model && !(model in convert)) {\n\t\tthrow new Error('Unknown model: ' + model);\n\t}\n\n\tlet i;\n\tlet channels;\n\n\tif (object == null) { // eslint-disable-line no-eq-null,eqeqeq\n\t\tthis.model = 'rgb';\n\t\tthis.color = [0, 0, 0];\n\t\tthis.valpha = 1;\n\t} else if (object instanceof Color) {\n\t\tthis.model = object.model;\n\t\tthis.color = [...object.color];\n\t\tthis.valpha = object.valpha;\n\t} else if (typeof object === 'string') {\n\t\tconst result = colorString.get(object);\n\t\tif (result === null) {\n\t\t\tthrow new Error('Unable to parse color from string: ' + object);\n\t\t}\n\n\t\tthis.model = result.model;\n\t\tchannels = convert[this.model].channels;\n\t\tthis.color = result.value.slice(0, channels);\n\t\tthis.valpha = typeof result.value[channels] === 'number' ? result.value[channels] : 1;\n\t} else if (object.length > 0) {\n\t\tthis.model = model || 'rgb';\n\t\tchannels = convert[this.model].channels;\n\t\tconst newArray = Array.prototype.slice.call(object, 0, channels);\n\t\tthis.color = zeroArray(newArray, channels);\n\t\tthis.valpha = typeof object[channels] === 'number' ? object[channels] : 1;\n\t} else if (typeof object === 'number') {\n\t\t// This is always RGB - can be converted later on.\n\t\tthis.model = 'rgb';\n\t\tthis.color = [\n\t\t\t(object >> 16) & 0xFF,\n\t\t\t(object >> 8) & 0xFF,\n\t\t\tobject & 0xFF,\n\t\t];\n\t\tthis.valpha = 1;\n\t} else {\n\t\tthis.valpha = 1;\n\n\t\tconst keys = Object.keys(object);\n\t\tif ('alpha' in object) {\n\t\t\tkeys.splice(keys.indexOf('alpha'), 1);\n\t\t\tthis.valpha = typeof object.alpha === 'number' ? object.alpha : 0;\n\t\t}\n\n\t\tconst hashedKeys = keys.sort().join('');\n\t\tif (!(hashedKeys in hashedModelKeys)) {\n\t\t\tthrow new Error('Unable to parse color from object: ' + JSON.stringify(object));\n\t\t}\n\n\t\tthis.model = hashedModelKeys[hashedKeys];\n\n\t\tconst {labels} = convert[this.model];\n\t\tconst color = [];\n\t\tfor (i = 0; i < labels.length; i++) {\n\t\t\tcolor.push(object[labels[i]]);\n\t\t}\n\n\t\tthis.color = zeroArray(color);\n\t}\n\n\t// Perform limitations (clamping, etc.)\n\tif (limiters[this.model]) {\n\t\tchannels = convert[this.model].channels;\n\t\tfor (i = 0; i < channels; i++) {\n\t\t\tconst limit = limiters[this.model][i];\n\t\t\tif (limit) {\n\t\t\t\tthis.color[i] = limit(this.color[i]);\n\t\t\t}\n\t\t}\n\t}\n\n\tthis.valpha = Math.max(0, Math.min(1, this.valpha));\n\n\tif (Object.freeze) {\n\t\tObject.freeze(this);\n\t}\n}\n\nColor.prototype = {\n\ttoString() {\n\t\treturn this.string();\n\t},\n\n\ttoJSON() {\n\t\treturn this[this.model]();\n\t},\n\n\tstring(places) {\n\t\tlet self = this.model in colorString.to ? this : this.rgb();\n\t\tself = self.round(typeof places === 'number' ? places : 1);\n\t\tconst arguments_ = self.valpha === 1 ? self.color : [...self.color, this.valpha];\n\t\treturn colorString.to[self.model](...arguments_);\n\t},\n\n\tpercentString(places) {\n\t\tconst self = this.rgb().round(typeof places === 'number' ? places : 1);\n\t\tconst arguments_ = self.valpha === 1 ? self.color : [...self.color, this.valpha];\n\t\treturn colorString.to.rgb.percent(...arguments_);\n\t},\n\n\tarray() {\n\t\treturn this.valpha === 1 ? [...this.color] : [...this.color, this.valpha];\n\t},\n\n\tobject() {\n\t\tconst result = {};\n\t\tconst {channels} = convert[this.model];\n\t\tconst {labels} = convert[this.model];\n\n\t\tfor (let i = 0; i < channels; i++) {\n\t\t\tresult[labels[i]] = this.color[i];\n\t\t}\n\n\t\tif (this.valpha !== 1) {\n\t\t\tresult.alpha = this.valpha;\n\t\t}\n\n\t\treturn result;\n\t},\n\n\tunitArray() {\n\t\tconst rgb = this.rgb().color;\n\t\trgb[0] /= 255;\n\t\trgb[1] /= 255;\n\t\trgb[2] /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.push(this.valpha);\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tunitObject() {\n\t\tconst rgb = this.rgb().object();\n\t\trgb.r /= 255;\n\t\trgb.g /= 255;\n\t\trgb.b /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.alpha = this.valpha;\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tround(places) {\n\t\tplaces = Math.max(places || 0, 0);\n\t\treturn new Color([...this.color.map(roundToPlace(places)), this.valpha], this.model);\n\t},\n\n\talpha(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color([...this.color, Math.max(0, Math.min(1, value))], this.model);\n\t\t}\n\n\t\treturn this.valpha;\n\t},\n\n\t// Rgb\n\tred: getset('rgb', 0, maxfn(255)),\n\tgreen: getset('rgb', 1, maxfn(255)),\n\tblue: getset('rgb', 2, maxfn(255)),\n\n\thue: getset(['hsl', 'hsv', 'hsl', 'hwb', 'hcg'], 0, value => ((value % 360) + 360) % 360),\n\n\tsaturationl: getset('hsl', 1, maxfn(100)),\n\tlightness: getset('hsl', 2, maxfn(100)),\n\n\tsaturationv: getset('hsv', 1, maxfn(100)),\n\tvalue: getset('hsv', 2, maxfn(100)),\n\n\tchroma: getset('hcg', 1, maxfn(100)),\n\tgray: getset('hcg', 2, maxfn(100)),\n\n\twhite: getset('hwb', 1, maxfn(100)),\n\twblack: getset('hwb', 2, maxfn(100)),\n\n\tcyan: getset('cmyk', 0, maxfn(100)),\n\tmagenta: getset('cmyk', 1, maxfn(100)),\n\tyellow: getset('cmyk', 2, maxfn(100)),\n\tblack: getset('cmyk', 3, maxfn(100)),\n\n\tx: getset('xyz', 0, maxfn(95.047)),\n\ty: getset('xyz', 1, maxfn(100)),\n\tz: getset('xyz', 2, maxfn(108.833)),\n\n\tl: getset('lab', 0, maxfn(100)),\n\ta: getset('lab', 1),\n\tb: getset('lab', 2),\n\n\tkeyword(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color(value);\n\t\t}\n\n\t\treturn convert[this.model].keyword(this.color);\n\t},\n\n\thex(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color(value);\n\t\t}\n\n\t\treturn colorString.to.hex(...this.rgb().round().color);\n\t},\n\n\thexa(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color(value);\n\t\t}\n\n\t\tconst rgbArray = this.rgb().round().color;\n\n\t\tlet alphaHex = Math.round(this.valpha * 255).toString(16).toUpperCase();\n\t\tif (alphaHex.length === 1) {\n\t\t\talphaHex = '0' + alphaHex;\n\t\t}\n\n\t\treturn colorString.to.hex(...rgbArray) + alphaHex;\n\t},\n\n\trgbNumber() {\n\t\tconst rgb = this.rgb().color;\n\t\treturn ((rgb[0] & 0xFF) << 16) | ((rgb[1] & 0xFF) << 8) | (rgb[2] & 0xFF);\n\t},\n\n\tluminosity() {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tconst rgb = this.rgb().color;\n\n\t\tconst lum = [];\n\t\tfor (const [i, element] of rgb.entries()) {\n\t\t\tconst chan = element / 255;\n\t\t\tlum[i] = (chan <= 0.04045) ? chan / 12.92 : ((chan + 0.055) / 1.055) ** 2.4;\n\t\t}\n\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast(color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tconst lum1 = this.luminosity();\n\t\tconst lum2 = color2.luminosity();\n\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel(color2) {\n\t\t// https://www.w3.org/TR/WCAG/#contrast-enhanced\n\t\tconst contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tisDark() {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tconst rgb = this.rgb().color;\n\t\tconst yiq = (rgb[0] * 2126 + rgb[1] * 7152 + rgb[2] * 722) / 10000;\n\t\treturn yiq < 128;\n\t},\n\n\tisLight() {\n\t\treturn !this.isDark();\n\t},\n\n\tnegate() {\n\t\tconst rgb = this.rgb();\n\t\tfor (let i = 0; i < 3; i++) {\n\t\t\trgb.color[i] = 255 - rgb.color[i];\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tlighten(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[2] += hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdarken(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[2] -= hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tsaturate(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[1] += hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdesaturate(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[1] -= hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\twhiten(ratio) {\n\t\tconst hwb = this.hwb();\n\t\thwb.color[1] += hwb.color[1] * ratio;\n\t\treturn hwb;\n\t},\n\n\tblacken(ratio) {\n\t\tconst hwb = this.hwb();\n\t\thwb.color[2] += hwb.color[2] * ratio;\n\t\treturn hwb;\n\t},\n\n\tgrayscale() {\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_colour_to_grayscale\n\t\tconst rgb = this.rgb().color;\n\t\tconst value = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\treturn Color.rgb(value, value, value);\n\t},\n\n\tfade(ratio) {\n\t\treturn this.alpha(this.valpha - (this.valpha * ratio));\n\t},\n\n\topaquer(ratio) {\n\t\treturn this.alpha(this.valpha + (this.valpha * ratio));\n\t},\n\n\trotate(degrees) {\n\t\tconst hsl = this.hsl();\n\t\tlet hue = hsl.color[0];\n\t\thue = (hue + degrees) % 360;\n\t\thue = hue < 0 ? 360 + hue : hue;\n\t\thsl.color[0] = hue;\n\t\treturn hsl;\n\t},\n\n\tmix(mixinColor, weight) {\n\t\t// Ported from sass implementation in C\n\t\t// https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t\tif (!mixinColor || !mixinColor.rgb) {\n\t\t\tthrow new Error('Argument to \"mix\" was not a Color instance, but rather an instance of ' + typeof mixinColor);\n\t\t}\n\n\t\tconst color1 = mixinColor.rgb();\n\t\tconst color2 = this.rgb();\n\t\tconst p = weight === undefined ? 0.5 : weight;\n\n\t\tconst w = 2 * p - 1;\n\t\tconst a = color1.alpha() - color2.alpha();\n\n\t\tconst w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2;\n\t\tconst w2 = 1 - w1;\n\n\t\treturn Color.rgb(\n\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\tw1 * color1.blue() + w2 * color2.blue(),\n\t\t\tcolor1.alpha() * p + color2.alpha() * (1 - p));\n\t},\n};\n\n// Model conversion methods and static constructors\nfor (const model of Object.keys(convert)) {\n\tif (skippedModels.includes(model)) {\n\t\tcontinue;\n\t}\n\n\tconst {channels} = convert[model];\n\n\t// Conversion methods\n\tColor.prototype[model] = function (...arguments_) {\n\t\tif (this.model === model) {\n\t\t\treturn new Color(this);\n\t\t}\n\n\t\tif (arguments_.length > 0) {\n\t\t\treturn new Color(arguments_, model);\n\t\t}\n\n\t\treturn new Color([...assertArray(convert[this.model][model].raw(this.color)), this.valpha], model);\n\t};\n\n\t// 'static' construction methods\n\tColor[model] = function (...arguments_) {\n\t\tlet color = arguments_[0];\n\t\tif (typeof color === 'number') {\n\t\t\tcolor = zeroArray(arguments_, channels);\n\t\t}\n\n\t\treturn new Color(color, model);\n\t};\n}\n\nfunction roundTo(number, places) {\n\treturn Number(number.toFixed(places));\n}\n\nfunction roundToPlace(places) {\n\treturn function (number) {\n\t\treturn roundTo(number, places);\n\t};\n}\n\nfunction getset(model, channel, modifier) {\n\tmodel = Array.isArray(model) ? model : [model];\n\n\tfor (const m of model) {\n\t\t(limiters[m] ||= [])[channel] = modifier;\n\t}\n\n\tmodel = model[0];\n\n\treturn function (value) {\n\t\tlet result;\n\n\t\tif (value !== undefined) {\n\t\t\tif (modifier) {\n\t\t\t\tvalue = modifier(value);\n\t\t\t}\n\n\t\t\tresult = this[model]();\n\t\t\tresult.color[channel] = value;\n\t\t\treturn result;\n\t\t}\n\n\t\tresult = this[model]().color[channel];\n\t\tif (modifier) {\n\t\t\tresult = modifier(result);\n\t\t}\n\n\t\treturn result;\n\t};\n}\n\nfunction maxfn(max) {\n\treturn function (v) {\n\t\treturn Math.max(0, Math.min(max, v));\n\t};\n}\n\nfunction assertArray(value) {\n\treturn Array.isArray(value) ? value : [value];\n}\n\nfunction zeroArray(array, length) {\n\tfor (let i = 0; i < length; i++) {\n\t\tif (typeof array[i] !== 'number') {\n\t\t\tarray[i] = 0;\n\t\t}\n\t}\n\n\treturn array;\n}\n\nexport default Color;\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport Color from 'color';\n/**\n * Is the current theme dark?\n */\nexport function isDarkModeEnabled() {\n const darkModePreference = window?.matchMedia?.('(prefers-color-scheme: dark)')?.matches;\n const darkModeSetting = document.body.getAttribute('data-themes')?.includes('dark');\n return darkModeSetting || darkModePreference || false;\n}\n/**\n * Is the current theme high contrast?\n */\nexport function isHighContrastModeEnabled() {\n const highContrastPreference = window?.matchMedia?.('(forced-colors: active)')?.matches;\n const highContrastSetting = document.body.getAttribute('data-themes')?.includes('highcontrast');\n return highContrastSetting || highContrastPreference || false;\n}\n/**\n * Should we invert the text on this background color?\n * @param color RGB color value as a hex string\n * @return boolean\n */\nexport function invertTextColor(color) {\n return colorContrast(color, '#ffffff') < 4.5;\n}\n/**\n * Is this color too bright?\n * @param color RGB color value as a hex string\n * @return boolean\n */\nexport function isBrightColor(color) {\n return calculateLuma(color) > 0.6;\n}\n/**\n * Get color for on-page elements\n * theme color by default, grey if theme color is too bright.\n * @param color the color to contrast against, e.g. #ffffff\n * @param backgroundColor the background color to contrast against, e.g. #000000\n */\nexport function elementColor(color, backgroundColor) {\n const brightBackground = isBrightColor(backgroundColor);\n const blurredBackground = mix(backgroundColor, brightBackground ? color : '#ffffff', 66);\n let contrast = colorContrast(color, blurredBackground);\n const minContrast = isHighContrastModeEnabled() ? 5.6 : 3.2;\n let iteration = 0;\n let result = color;\n const epsilon = (brightBackground ? -100 : 100) / 255;\n while (contrast < minContrast && iteration++ < 100) {\n const hsl = hexToHSL(result);\n const l = Math.max(0, Math.min(255, hsl.l + epsilon));\n result = hslToHex({ h: hsl.h, s: hsl.s, l });\n contrast = colorContrast(result, blurredBackground);\n }\n return result;\n}\n/**\n * Get color for on-page text:\n * black if background is bright, white if background is dark.\n * @param color1 the color to contrast against, e.g. #ffffff\n * @param color2 the background color to contrast against, e.g. #000000\n * @param factor the factor to mix the colors between -100 and 100, e.g. 66\n */\nexport function mix(color1, color2, factor) {\n if (factor < -100 || factor > 100) {\n throw new RangeError('Factor must be between -100 and 100');\n }\n return new Color(color2).mix(new Color(color1), (factor + 100) / 200).hex();\n}\n/**\n * Lighten a color by a factor\n * @param color the color to lighten, e.g. #000000\n * @param factor the factor to lighten the color by between -100 and 100, e.g. -41\n */\nexport function lighten(color, factor) {\n if (factor < -100 || factor > 100) {\n throw new RangeError('Factor must be between -100 and 100');\n }\n return new Color(color).lighten((factor + 100) / 200).hex();\n}\n/**\n * Darken a color by a factor\n * @param color the color to darken, e.g. #ffffff\n * @param factor the factor to darken the color by between -100 and 100, e.g. 32\n */\nexport function darken(color, factor) {\n if (factor < -100 || factor > 100) {\n throw new RangeError('Factor must be between -100 and 100');\n }\n return new Color(color).darken((factor + 100) / 200).hex();\n}\n/**\n * Calculate the luminance of a color\n * @param color the color to calculate the luminance of, e.g. #ffffff\n */\nexport function calculateLuminance(color) {\n return hexToHSL(color).l;\n}\n/**\n * Calculate the luma of a color\n * @param color the color to calculate the luma of, e.g. #ffffff\n */\nexport function calculateLuma(color) {\n const rgb = hexToRGB(color).map((value) => {\n value /= 255;\n return value <= 0.03928\n ? value / 12.92\n : Math.pow((value + 0.055) / 1.055, 2.4);\n });\n const [red, green, blue] = rgb;\n return 0.2126 * red + 0.7152 * green + 0.0722 * blue;\n}\n/**\n * Calculate the contrast between two colors\n * @param color1 the first color to calculate the contrast of, e.g. #ffffff\n * @param color2 the second color to calculate the contrast of, e.g. #000000\n */\nexport function colorContrast(color1, color2) {\n const luminance1 = calculateLuma(color1) + 0.05;\n const luminance2 = calculateLuma(color2) + 0.05;\n return Math.max(luminance1, luminance2) / Math.min(luminance1, luminance2);\n}\n/**\n * Convert hex color to RGB\n * @param color RGB color value as a hex string\n */\nexport function hexToRGB(color) {\n return new Color(color).rgb().array();\n}\n/**\n * Convert RGB color to hex\n * @param color RGB color value as a hex string\n */\nexport function hexToHSL(color) {\n const hsl = new Color(color).hsl();\n return { h: hsl.color[0], s: hsl.color[1], l: hsl.color[2] };\n}\n/**\n * Convert HSL color to hex\n * @param hsl HSL color value as an object\n * @param hsl.h hue\n * @param hsl.s saturation\n * @param hsl.l lightness\n */\nexport function hslToHex(hsl) {\n return new Color(hsl).hex();\n}\n/**\n * Convert RGB color to hex\n * @param r red\n * @param g green\n * @param b blue\n */\nexport function rgbToHex(r, g, b) {\n const hex = ((1 << 24) | (r << 16) | (g << 8) | b).toString(16).slice(1);\n return `#${hex}`;\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, `.files-list__system-tags{--min-size: 32px;display:none;justify-content:center;align-items:center;min-width:calc(var(--min-size)*2);max-width:300px}.files-list__system-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:20px;text-align:center}.files-list__system-tag--more{overflow:visible;text-overflow:initial}.files-list__system-tag+.files-list__system-tag{margin-inline-start:5px}.files-list__system-tag[data-systemtag-color]{border-color:var(--systemtag-color);color:var(--systemtag-color);border-width:2px;line-height:18px}@media(min-width: 512px){.files-list__system-tags{display:flex}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/systemtags/src/css/fileEntryInlineSystemTags.scss\"],\"names\":[],\"mappings\":\"AAKA,yBACC,gBAAA,CACA,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,iCAAA,CACA,eAAA,CAGD,wBACC,gBAAA,CACA,gBAAA,CACA,uCAAA,CACA,gCAAA,CACA,mCAAA,CACA,sBAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CACA,gBAAA,CACA,iBAAA,CAEA,8BACC,gBAAA,CACA,qBAAA,CAID,gDACC,uBAAA,CAID,8CACC,mCAAA,CACA,4BAAA,CACA,gBAAA,CACA,gBAAA,CAIF,yBACC,yBACC,YAAA,CAAA\",\"sourcesContent\":[\"/**\\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n\\n.files-list__system-tags {\\n\\t--min-size: 32px;\\n\\tdisplay: none;\\n\\tjustify-content: center;\\n\\talign-items: center;\\n\\tmin-width: calc(var(--min-size) * 2);\\n\\tmax-width: 300px;\\n}\\n\\n.files-list__system-tag {\\n\\tpadding: 5px 10px;\\n\\tborder: 1px solid;\\n\\tborder-radius: var(--border-radius-pill);\\n\\tborder-color: var(--color-border);\\n\\tcolor: var(--color-text-maxcontrast);\\n\\theight: var(--min-size);\\n\\twhite-space: nowrap;\\n\\toverflow: hidden;\\n\\ttext-overflow: ellipsis;\\n\\tline-height: 20px; // min-size - 2 * 5px padding - 2 * 1px border\\n\\ttext-align: center;\\n\\n\\t&--more {\\n\\t\\toverflow: visible;\\n\\t\\ttext-overflow: initial;\\n\\t}\\n\\n\\t// Proper spacing if multiple shown\\n\\t& + .files-list__system-tag {\\n\\t\\tmargin-inline-start: 5px;\\n\\t}\\n\\n\\t// With color\\n\\t&[data-systemtag-color] {\\n\\t\\tborder-color: var(--systemtag-color);\\n\\t\\tcolor: var(--systemtag-color);\\n\\t\\tborder-width: 2px;\\n\\t\\tline-height: 18px; // min-size - 2 * 5px padding - 2 * 2px border\\n\\t}\\n}\\n\\n@media (min-width: 512px) {\\n\\t.files-list__system-tags {\\n\\t\\tdisplay: flex;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport axios from '@nextcloud/axios';\nimport { generateUrl, generateOcsUrl } from '@nextcloud/router';\nimport { t } from '@nextcloud/l10n';\nimport { davClient } from './davClient.js';\nimport { formatTag, parseIdFromLocation, parseTags } from '../utils';\nimport logger from '../logger.ts';\nimport { emit } from '@nextcloud/event-bus';\nimport { confirmPassword } from '@nextcloud/password-confirmation';\nexport const fetchTagsPayload = `<?xml version=\"1.0\"?>\n<d:propfind xmlns:d=\"DAV:\" xmlns:oc=\"http://owncloud.org/ns\" xmlns:nc=\"http://nextcloud.org/ns\">\n\t<d:prop>\n\t\t<oc:id />\n\t\t<oc:display-name />\n\t\t<oc:user-visible />\n\t\t<oc:user-assignable />\n\t\t<oc:can-assign />\n\t\t<d:getetag />\n\t\t<nc:color />\n\t</d:prop>\n</d:propfind>`;\nexport const fetchTags = async () => {\n const path = '/systemtags';\n try {\n const { data: tags } = await davClient.getDirectoryContents(path, {\n data: fetchTagsPayload,\n details: true,\n glob: '/systemtags/*', // Filter out first empty tag\n });\n return parseTags(tags);\n }\n catch (error) {\n logger.error(t('systemtags', 'Failed to load tags'), { error });\n throw new Error(t('systemtags', 'Failed to load tags'));\n }\n};\nexport const fetchTag = async (tagId) => {\n const path = '/systemtags/' + tagId;\n try {\n const { data: tag } = await davClient.stat(path, {\n data: fetchTagsPayload,\n details: true,\n });\n return parseTags([tag])[0];\n }\n catch (error) {\n logger.error(t('systemtags', 'Failed to load tag'), { error });\n throw new Error(t('systemtags', 'Failed to load tag'));\n }\n};\nexport const fetchLastUsedTagIds = async () => {\n const url = generateUrl('/apps/systemtags/lastused');\n try {\n const { data: lastUsedTagIds } = await axios.get(url);\n return lastUsedTagIds.map(Number);\n }\n catch (error) {\n logger.error(t('systemtags', 'Failed to load last used tags'), { error });\n throw new Error(t('systemtags', 'Failed to load last used tags'));\n }\n};\n/**\n * Create a tag and return the Id of the newly created tag.\n *\n * @param tag The tag to create\n */\nexport const createTag = async (tag) => {\n const path = '/systemtags';\n const tagToPost = formatTag(tag);\n try {\n const { headers } = await davClient.customRequest(path, {\n method: 'POST',\n data: tagToPost,\n });\n const contentLocation = headers.get('content-location');\n if (contentLocation) {\n emit('systemtags:tag:created', tag);\n return parseIdFromLocation(contentLocation);\n }\n logger.error(t('systemtags', 'Missing \"Content-Location\" header'));\n throw new Error(t('systemtags', 'Missing \"Content-Location\" header'));\n }\n catch (error) {\n if (error?.response?.status === 409) {\n logger.error(t('systemtags', 'A tag with the same name already exists'), { error });\n throw new Error(t('systemtags', 'A tag with the same name already exists'));\n }\n logger.error(t('systemtags', 'Failed to create tag'), { error });\n throw new Error(t('systemtags', 'Failed to create tag'));\n }\n};\nexport const updateTag = async (tag) => {\n const path = '/systemtags/' + tag.id;\n const data = `<?xml version=\"1.0\"?>\n\t<d:propertyupdate xmlns:d=\"DAV:\" xmlns:oc=\"http://owncloud.org/ns\" xmlns:nc=\"http://nextcloud.org/ns\">\n\t\t<d:set>\n\t\t\t<d:prop>\n\t\t\t\t<oc:display-name>${tag.displayName}</oc:display-name>\n\t\t\t\t<oc:user-visible>${tag.userVisible}</oc:user-visible>\n\t\t\t\t<oc:user-assignable>${tag.userAssignable}</oc:user-assignable>\n\t\t\t\t<nc:color>${tag?.color || null}</nc:color>\n\t\t\t</d:prop>\n\t\t</d:set>\n\t</d:propertyupdate>`;\n try {\n await davClient.customRequest(path, {\n method: 'PROPPATCH',\n data,\n });\n emit('systemtags:tag:updated', tag);\n }\n catch (error) {\n logger.error(t('systemtags', 'Failed to update tag'), { error });\n throw new Error(t('systemtags', 'Failed to update tag'));\n }\n};\nexport const deleteTag = async (tag) => {\n const path = '/systemtags/' + tag.id;\n try {\n await davClient.deleteFile(path);\n emit('systemtags:tag:deleted', tag);\n }\n catch (error) {\n logger.error(t('systemtags', 'Failed to delete tag'), { error });\n throw new Error(t('systemtags', 'Failed to delete tag'));\n }\n};\nexport const getTagObjects = async function (tag, type) {\n const path = `/systemtags/${tag.id}/${type}`;\n const data = `<?xml version=\"1.0\"?>\n\t<d:propfind xmlns:d=\"DAV:\" xmlns:nc=\"http://nextcloud.org/ns\">\n\t\t<d:prop>\n\t\t\t<nc:object-ids />\n\t\t\t<d:getetag />\n\t\t</d:prop>\n\t</d:propfind>`;\n const response = await davClient.stat(path, { data, details: true });\n const etag = response?.data?.props?.getetag || '\"\"';\n const objects = Object.values(response?.data?.props?.['object-ids'] || []).flat();\n return {\n etag,\n objects,\n };\n};\n/**\n * Set the objects for a tag.\n * Warning: This will overwrite the existing objects.\n * @param tag The tag to set the objects for\n * @param type The type of the objects\n * @param objectIds The objects to set\n * @param etag Strongly recommended to avoid conflict and data loss.\n */\nexport const setTagObjects = async function (tag, type, objectIds, etag = '') {\n const path = `/systemtags/${tag.id}/${type}`;\n let data = `<?xml version=\"1.0\"?>\n\t<d:propertyupdate xmlns:d=\"DAV:\" xmlns:nc=\"http://nextcloud.org/ns\">\n\t\t<d:set>\n\t\t\t<d:prop>\n\t\t\t\t<nc:object-ids>${objectIds.map(({ id, type }) => `<nc:object-id><nc:id>${id}</nc:id><nc:type>${type}</nc:type></nc:object-id>`).join('')}</nc:object-ids>\n\t\t\t</d:prop>\n\t\t</d:set>\n\t</d:propertyupdate>`;\n if (objectIds.length === 0) {\n data = `<?xml version=\"1.0\"?>\n\t\t<d:propertyupdate xmlns:d=\"DAV:\" xmlns:nc=\"http://nextcloud.org/ns\">\n\t\t\t<d:remove>\n\t\t\t\t<d:prop>\n\t\t\t\t\t<nc:object-ids />\n\t\t\t\t</d:prop>\n\t\t\t</d:remove>\n\t\t</d:propertyupdate>`;\n }\n await davClient.customRequest(path, {\n method: 'PROPPATCH',\n data,\n headers: {\n 'if-match': etag,\n },\n });\n};\nexport const updateSystemTagsAdminRestriction = async (isAllowed) => {\n // Convert to string for compatibility\n const isAllowedString = isAllowed ? '1' : '0';\n const url = generateOcsUrl('/apps/provisioning_api/api/v1/config/apps/{appId}/{key}', {\n appId: 'systemtags',\n key: 'restrict_creation_to_admin',\n });\n await confirmPassword();\n const res = await axios.post(url, {\n value: isAllowedString,\n });\n return res.data;\n};\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__.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 \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"1406\":\"74ef8c445df7152f9898\",\"2441\":\"2c050d23f9070dfa7f03\",\"5862\":\"142cd48ca8ec32e57725\",\"6227\":\"3494381758c4754ef3f5\"}[chunkId] + \"\";\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 = 2766;","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 && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\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(/^blob:/, \"\").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\t2766: 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}\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, [4208], () => (__webpack_require__(44563)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","rootUrl","generateRemoteUrl","davClient","createClient","setHeaders","token","requesttoken","onRequestTokenUpdate","getRequestToken","parseTags","tags","map","_ref","props","Object","fromEntries","entries","_ref2","key","value","camelCase","String","parseIdFromLocation","url","queryPos","indexOf","substring","parts","split","result","length","pop","Number","formatTag","initialTag","tag","name","displayName","getNodeSystemTags","node","attribute","attributes","undefined","flat","text","setNodeSystemTags","Vue","getLoggerBuilder","setApp","detectUser","build","DefaultType","DefaultType2","FileAction","_action","constructor","action","this","validateAction","id","title","iconSvgInline","enabled","exec","execBatch","order","parent","default","destructive","inline","renderInline","Error","values","includes","registerFileAction","window","_nc_fileactions","debug","find","search","error","push","humanList","humanListBinary","formatFileSize","size","skipSmallSizes","binaryPrefixes","base1000","Math","floor","log","min","readableFormat","relativeSize","pow","toFixed","parseFloat","toLocaleString","stringify","Date","toISOString","sortNodes","nodes","options","sortingOptions","sortingMode","sortingOrder","collection","identifiers2","orders","sorting","_","index","collator","Intl","Collator","numeric","usage","sort","a2","b2","identifier","compare","orderBy","sortFavoritesFirst","v","favorite","sortFoldersFirst","type","basename2","displayname","basename","lastIndexOf","slice","Navigation","_views","_currentView","register","view","dispatchTypedEvent","CustomEvent","remove","findIndex","splice","setActive","event","detail","active","views","getNavigation","_nc_navigation","Column","_column","column","isValidColumn","render","summary","hasRequiredUtil","hasRequiredValidator","validator","util","requireUtil","exports","nameStartChar","nameRegexp","regexName","RegExp","isExist","isEmptyObject","obj","keys","merge","target","arrayMode","len","i2","getValue","isName","string","getAllMatches","regex","matches","match","allmatches","startIndex","lastIndex","requireValidator","util2","defaultOptions","allowBooleanAttributes","unpairedTags","isWhiteSpace","char","readPI","xmlData","start","tagname","substr","getErrorObject","getLineNumberForPosition","readCommentAndCDATA","angleBracketsCount","validate","assign","tagFound","reachedRoot","err","tagStartPos","closingTag","tagName","trim","msg","readAttributeStr","attrStr","attrStrStart","isValid","validateAttributeString","code","line","tagClosed","otg","openPos","col","afterAmp","validateAmpersand","JSON","t2","replace","doubleQuote","singleQuote","startChar","validAttrStrRegxp","attrNames","getPositionFromMatch","attrName","validateAttrName","hasOwnProperty","re2","validateNumberAmpersand","count","message","lineNumber","lines","hasRequiredOptionsBuilder","xmlNode","hasRequiredXmlNode","DocTypeReader","hasRequiredDocTypeReader","strnum","hasRequiredStrnum","ignoreAttributes","hasRequiredIgnoreAttributes","OrderedObjParser_1","hasRequiredOrderedObjParser","OptionsBuilder","requireIgnoreAttributes","ignoreAttributes2","Array","isArray","pattern","test","hasRequiredNode2json","XMLParser_1","hasRequiredXMLParser","orderedJs2Xml","hasRequiredOrderedJs2Xml","json2xml","hasRequiredJson2xml","fxp","hasRequiredFxp","node2json","requireNode2json","compress","arr","jPath","compressedObj","tagObj","property","propName","newJpath","textNodeName","val","isLeaf","isLeafTag","assignAttributes","alwaysCreateTextNode","attrMap","jpath","atrrName","propCount","prettify","requireXMLParser","buildOptions","preserveOrder","attributeNamePrefix","attributesGroupName","removeNSPrefix","parseTagValue","parseAttributeValue","trimValues","cdataPropName","numberParseOptions","hex","leadingZeros","eNotation","tagValueProcessor","attributeValueProcessor","stopNodes","commentPropName","processEntities","htmlEntities","ignoreDeclaration","ignorePiTags","transformTagName","transformAttributeName","updateTag","attrs","requireOptionsBuilder","OrderedObjParser","xmlNode2","child","add","addChild","readDocType","readEntityExp","entityName","isEntity","isElement","isAttlist","isNotation","validateEntityName","entities","hasBody","comment","exp","regx","i","requireDocTypeReader","toNumber","hexRegex","numRegex","parseInt","consider","decimalPoint","str","trimmedStr","skipLike","sign","numTrimmedByZeros","numStr","num","requireStrnum","getIgnoreAttributesFn","addExternalEntities","externalEntities","entKeys","ent","lastEntities","parseTextData","dontTrim","hasAttributes","isLeafNode","escapeEntities","replaceEntitiesValue","newval","parseValue","resolveNameSpace","prefix","charAt","attrsRegx","buildAttributesMap","ignoreAttributesFn","oldVal","aName","newVal","attrCollection","parseXml","xmlObj","currentNode","textData","closeIndex","findClosingIndex","colonIndex","saveTextToParentTag","lastTagName","propIndex","tagsNodeStack","tagData","readTagExp","childNode","tagExp","attrExpPresent","endIndex","docTypeEntities","rawTagName","lastTag","isItStopNode","tagContent","result2","readStopNodeData","entity","ampEntity","currentTagName","allNodesExp","stopNodePath","stopNodeExp","errMsg","closingIndex","closingChar","attrBoundary","ch","data","tagExpWithClosingIndex","separatorIndex","trimStart","openTagCount","shouldParse","fromCharCode","requireOrderedObjParser","validator2","parse","validationOption","toString","orderedObjParser","orderedResult","addEntity","requireOrderedJs2Xml","arrToStr","indentation","xmlStr","isPreviousElementTag","newJPath","tagText","isStopNode","attStr2","attr_to_str","tempInd","piTextNodeName","newIdentation","indentBy","tagStart","tagValue","suppressUnpairedNode","suppressEmptyNode","endsWith","attr","attrVal","suppressBooleanAttributes","textValue","jArray","format","fxpExports","XMLParser","XMLBuilder","buildFromOrderedJs","oneListGroup","Builder","isAttribute","attrPrefixLen","processTextOrObjNode","indentate","tagEndChar","newLine","object","level","ajPath","j2x","concat","buildTextValNode","buildObjectNode","repeat","startsWith","prototype","jObj","arrayNodeName","join","call","buildAttrPairStr","arrLen","listTagVal","listTagAttr","j2","item","Ks","L","closeTag","tagEndExp","piClosingChar","requireJson2xml","XMLValidator","requireFxp","View","_view","isValidView","caption","emptyTitle","emptyCaption","getContents","icon","params","columns","emptyView","sticky","expanded","defaultSortKey","loadChildViews","TypeError","jsonObject","parser","some","x","toLowerCase","isSvg","forEach","debug_1","hasRequiredDebug","constants","hasRequiredConstants","requireDebug","process","env","NODE_DEBUG","args","console","requireConstants","MAX_SAFE_INTEGER","MAX_LENGTH","MAX_SAFE_COMPONENT_LENGTH","MAX_SAFE_BUILD_LENGTH","RELEASE_TYPES","SEMVER_SPEC_VERSION","FLAG_INCLUDE_PRERELEASE","FLAG_LOOSE","hasRequiredRe","parseOptions_1","hasRequiredParseOptions","identifiers","hasRequiredIdentifiers","semver","hasRequiredSemver","parse_1","hasRequiredParse","valid_1","hasRequiredValid","major_1","hasRequiredMajor","re","requireSemver","safeRe","t","module","src","R","LETTERDASHNUMBER","safeRegexReplacements","createToken","isGlobal","safe","max","makeSafeRegex","NUMERICIDENTIFIER","NUMERICIDENTIFIERLOOSE","NONNUMERICIDENTIFIER","PRERELEASEIDENTIFIER","PRERELEASEIDENTIFIERLOOSE","BUILDIDENTIFIER","MAINVERSION","PRERELEASE","BUILD","FULLPLAIN","MAINVERSIONLOOSE","PRERELEASELOOSE","LOOSEPLAIN","XRANGEIDENTIFIER","XRANGEIDENTIFIERLOOSE","GTLT","XRANGEPLAIN","XRANGEPLAINLOOSE","COERCEPLAIN","COERCE","COERCEFULL","LONETILDE","tildeTrimReplace","LONECARET","caretTrimReplace","comparatorTrimReplace","parseOptions","looseOption","freeze","loose","emptyOpts","requireParseOptions","compareIdentifiers","anum","bnum","rcompareIdentifiers","requireIdentifiers","SemVer","version","includePrerelease","m2","LOOSE","FULL","raw","major","minor","patch","prerelease","other","compareMain","comparePre","compareBuild","inc","release","identifierBase","base","isNaN","throwErrors","er","requireParse","requireValid","requireMajor","async","response","Promise","resolve","spawnDialog","defineAsyncComponent","status","fill","TagMultipleSvg","isPublicShare","isDavResource","permissions","Permission","UPDATE","executeAction","activeStore","store","defineStore","state","_initialized","activeNode","activeView","activeAction","actions","setActiveNode","logger","clearActiveNode","onDeletedNode","source","setActiveAction","clearActiveAction","onChangedView","arguments","navigation","subscribe","addEventListener","useActiveStore","_nc_files_pinia","createPinia","currentDir","OCP","Files","Router","query","dir","currentView","NodeStatus","LOADING","success","showSuccess","showError","rootPath","client","davGetClient","resultToNode","davResultToNode","formatReportPayload","tagId","getDavNameSpaces","getDavProperties","tagToNode","Folder","davRemoteURL","owner","getCurrentUser","uid","root","READ","systemTagsViewId","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","cache","renderTag","isMore","tagElement","document","createElement","classList","setAttribute","textContent","cachedTag","color","mainBackgroundColor","getComputedStyle","body","getPropertyValue","isDarkModeEnabled","primaryElement","elementColor","style","setProperty","systemTagsElement","fileid","fetchTags","append","moreTagElement","then","systemTagsHtml","querySelectorAll","element","replaceWith","updateSystemTagsColorAttribute","FileType","dirname","path","goToRoute","openfile","HIDDEN","registerDavProperty","bulkSystemTagsAction","inlineSystemTagsAction","openInFilesAction","svgTagMultiple","tagsCache","filter","userVisible","folder","NONE","contents","getDirectoryContents","davRootPath","details","headers","method","useHotKey","manageTagAction","stop","prevent","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","reverseNames","create","hasOwn","cs","to","get","clamp","number_","hexDouble","string_","round","toUpperCase","model","hsl","hwb","rgb","hexAlpha","alpha","rgba","percent","r","g","b","hsla","hwba","a","keyword","reverseKeywords","convert","channels","labels","hsv","cmyk","xyz","lab","lch","ansi16","ansi256","hcg","apple","LAB_FT","defineProperty","from","wrapConversion","toModel","graph","fn","conversions","cur","unshift","conversion","delta","h","s","l","rdif","gdif","bdif","diff","diffc","c","w","k","reversed","currentClosestKeyword","currentClosestDistance","POSITIVE_INFINITY","distance","y","z","t3","t1","smin","lmin","hi","f","p","q","vmin","sl","wh","bl","ratio","n","m","y2","x2","z2","atan2","PI","sqrt","hr","cos","sin","saturation","ansi","mult","trunc","rem","colorString","integer","chroma","hue","pure","mg","fromModel","models","buildGraph","queue","current","adjacents","adjacent","deriveBFS","wrapRaw","wrappedFn","arg0","wrapRounded","routes","routeModels","skippedModels","hashedModelKeys","limiters","valpha","newArray","zeroArray","hashedKeys","limit","toJSON","places","self","arguments_","percentString","array","unitArray","unitObject","roundToPlace","getset","maxfn","saturationl","lightness","saturationv","wblack","hexa","rgbArray","alphaHex","rgbNumber","luminosity","lum","chan","contrast","color2","lum1","lum2","contrastRatio","isDark","isLight","negate","lighten","darken","saturate","desaturate","whiten","blacken","grayscale","fade","opaquer","rotate","degrees","mix","mixinColor","weight","color1","w1","w2","number","roundTo","channel","modifier","darkModePreference","matchMedia","darkModeSetting","getAttribute","invertTextColor","colorContrast","backgroundColor","brightBackground","calculateLuma","isBrightColor","blurredBackground","Color","minContrast","highContrastPreference","highContrastSetting","isHighContrastModeEnabled","iteration","epsilon","hexToHSL","hslToHex","hexToRGB","luminance1","luminance2","___CSS_LOADER_EXPORT___","fetchTagsPayload","glob","fetchTag","stat","createTag","tagToPost","customRequest","contentLocation","emit","userAssignable","getTagObjects","etag","getetag","objects","setTagObjects","objectIds","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","every","getter","__esModule","d","definition","o","enumerable","e","chunkId","all","reduce","promises","u","globalThis","Function","prop","done","script","needAttach","scripts","getElementsByTagName","charset","timeout","nc","onScriptComplete","prev","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","setTimeout","bind","head","appendChild","Symbol","toStringTag","nmd","paths","children","scriptUrl","importScripts","location","currentScript","baseURI","href","installedChunks","installedChunkData","promise","reject","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file diff --git a/lib/base.php b/lib/base.php index ad80df357c5..639568cf640 100644 --- a/lib/base.php +++ b/lib/base.php @@ -551,10 +551,10 @@ class OC { $processingScript = explode('/', $requestUri); $processingScript = $processingScript[count($processingScript) - 1]; - // index.php routes are handled in the middleware - // and cron.php does not need any authentication at all - if ($processingScript === 'index.php' - || $processingScript === 'cron.php') { + if ($processingScript === 'index.php' // index.php routes are handled in the middleware + || $processingScript === 'cron.php' // and cron.php does not need any authentication at all + || $processingScript === 'public.php' // For public.php, auth for password protected shares is done in the PublicAuth plugin + ) { return; } diff --git a/lib/composer/composer/autoload_classmap.php b/lib/composer/composer/autoload_classmap.php index c65c26af2f2..61c06939d15 100644 --- a/lib/composer/composer/autoload_classmap.php +++ b/lib/composer/composer/autoload_classmap.php @@ -1387,6 +1387,7 @@ return array( 'OC\\Core\\Exception\\ResetPasswordException' => $baseDir . '/core/Exception/ResetPasswordException.php', 'OC\\Core\\Listener\\BeforeMessageLoggedEventListener' => $baseDir . '/core/Listener/BeforeMessageLoggedEventListener.php', 'OC\\Core\\Listener\\BeforeTemplateRenderedListener' => $baseDir . '/core/Listener/BeforeTemplateRenderedListener.php', + 'OC\\Core\\Listener\\FeedBackHandler' => $baseDir . '/core/Listener/FeedBackHandler.php', 'OC\\Core\\Middleware\\TwoFactorMiddleware' => $baseDir . '/core/Middleware/TwoFactorMiddleware.php', 'OC\\Core\\Migrations\\Version13000Date20170705121758' => $baseDir . '/core/Migrations/Version13000Date20170705121758.php', 'OC\\Core\\Migrations\\Version13000Date20170718121200' => $baseDir . '/core/Migrations/Version13000Date20170718121200.php', diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php index b1e162bf71e..f6da9ef7382 100644 --- a/lib/composer/composer/autoload_static.php +++ b/lib/composer/composer/autoload_static.php @@ -1428,6 +1428,7 @@ class ComposerStaticInit749170dad3f5e7f9ca158f5a9f04f6a2 'OC\\Core\\Exception\\ResetPasswordException' => __DIR__ . '/../../..' . '/core/Exception/ResetPasswordException.php', 'OC\\Core\\Listener\\BeforeMessageLoggedEventListener' => __DIR__ . '/../../..' . '/core/Listener/BeforeMessageLoggedEventListener.php', 'OC\\Core\\Listener\\BeforeTemplateRenderedListener' => __DIR__ . '/../../..' . '/core/Listener/BeforeTemplateRenderedListener.php', + 'OC\\Core\\Listener\\FeedBackHandler' => __DIR__ . '/../../..' . '/core/Listener/FeedBackHandler.php', 'OC\\Core\\Middleware\\TwoFactorMiddleware' => __DIR__ . '/../../..' . '/core/Middleware/TwoFactorMiddleware.php', 'OC\\Core\\Migrations\\Version13000Date20170705121758' => __DIR__ . '/../../..' . '/core/Migrations/Version13000Date20170705121758.php', 'OC\\Core\\Migrations\\Version13000Date20170718121200' => __DIR__ . '/../../..' . '/core/Migrations/Version13000Date20170718121200.php', diff --git a/lib/l10n/ko.js b/lib/l10n/ko.js index 2ae40fc9454..375f75f4583 100644 --- a/lib/l10n/ko.js +++ b/lib/l10n/ko.js @@ -140,6 +140,7 @@ OC.L10N.register( "The requested share comes from a disabled user" : "요청한 공유가 비활성화된 사용자로부터 수신되었습니다", "The user was not created because the user limit has been reached. Check your notifications to learn more." : "사용자 수 제한에 도달하여 사용자를 만들 수 없습니다. 더 자세한 정보는 알림을 참조하십시오.", "Could not find category \"%s\"" : "분류 \"%s\"을(를) 찾을 수 없습니다", + "Input text" : "텍스트를 입력", "Sunday" : "일요일", "Monday" : "월요일", "Tuesday" : "화요일", @@ -234,12 +235,16 @@ OC.L10N.register( "Storage connection timeout. %s" : "저장소 연결 시간이 초과되었습니다. %s", "Audio input" : "음성 입력", "Confirmation" : "확인", + "Generated response" : "생성된 응답", "Context write" : "컨텍스트 쓰기", "Writes text in a given style based on the provided source material." : "제공된 소스 자료를 기반으로 특정 스타일로 텍스트를 작성합니다.", "Writing style" : "작문 스타일", "Source material" : "소스 자료", "Generate image" : "이미지 생성", "Prompt" : "프롬프트", + "Change Tone" : "톤을 변경", + "Write a text that you want the assistant to rewrite in another tone." : "어시스턴트에 다른 톤으로 다시 쓰고 싶은 텍스트를 쓰기", + "Desired tone" : "희망하는 톤", "Chat" : "대화", "Generates a possible headline for a text." : "내용에 대한 헤드라인을 생성하십시오.", "Text" : "텍스트", diff --git a/lib/l10n/ko.json b/lib/l10n/ko.json index 2c2001dcc04..3fe9b3cdebd 100644 --- a/lib/l10n/ko.json +++ b/lib/l10n/ko.json @@ -138,6 +138,7 @@ "The requested share comes from a disabled user" : "요청한 공유가 비활성화된 사용자로부터 수신되었습니다", "The user was not created because the user limit has been reached. Check your notifications to learn more." : "사용자 수 제한에 도달하여 사용자를 만들 수 없습니다. 더 자세한 정보는 알림을 참조하십시오.", "Could not find category \"%s\"" : "분류 \"%s\"을(를) 찾을 수 없습니다", + "Input text" : "텍스트를 입력", "Sunday" : "일요일", "Monday" : "월요일", "Tuesday" : "화요일", @@ -232,12 +233,16 @@ "Storage connection timeout. %s" : "저장소 연결 시간이 초과되었습니다. %s", "Audio input" : "음성 입력", "Confirmation" : "확인", + "Generated response" : "생성된 응답", "Context write" : "컨텍스트 쓰기", "Writes text in a given style based on the provided source material." : "제공된 소스 자료를 기반으로 특정 스타일로 텍스트를 작성합니다.", "Writing style" : "작문 스타일", "Source material" : "소스 자료", "Generate image" : "이미지 생성", "Prompt" : "프롬프트", + "Change Tone" : "톤을 변경", + "Write a text that you want the assistant to rewrite in another tone." : "어시스턴트에 다른 톤으로 다시 쓰고 싶은 텍스트를 쓰기", + "Desired tone" : "희망하는 톤", "Chat" : "대화", "Generates a possible headline for a text." : "내용에 대한 헤드라인을 생성하십시오.", "Text" : "텍스트", diff --git a/lib/private/Files/SetupManager.php b/lib/private/Files/SetupManager.php index 7f97187179e..4ab40b01f4a 100644 --- a/lib/private/Files/SetupManager.php +++ b/lib/private/Files/SetupManager.php @@ -23,7 +23,6 @@ use OC\Share\Share; use OC\Share20\ShareDisableChecker; use OC_App; use OC_Hook; -use OC_Util; use OCA\Files_External\Config\ExternalMountPoint; use OCA\Files_Sharing\External\Mount; use OCA\Files_Sharing\ISharedMountPoint; @@ -157,7 +156,7 @@ class SetupManager { if ($mount instanceof HomeMountPoint) { $user = $mount->getUser(); return new Quota(['storage' => $storage, 'quotaCallback' => function () use ($user) { - return OC_Util::getUserQuota($user); + return $user->getQuotaBytes(); }, 'root' => 'files', 'include_external_storage' => $quotaIncludeExternal]); } diff --git a/lib/private/User/LazyUser.php b/lib/private/User/LazyUser.php index 715265f6a39..501169019d4 100644 --- a/lib/private/User/LazyUser.php +++ b/lib/private/User/LazyUser.php @@ -160,6 +160,10 @@ class LazyUser implements IUser { return $this->getUser()->getQuota(); } + public function getQuotaBytes(): int|float { + return $this->getUser()->getQuotaBytes(); + } + public function setQuota($quota) { $this->getUser()->setQuota($quota); } diff --git a/lib/private/User/User.php b/lib/private/User/User.php index 8e01a15695c..88ed0d44387 100644 --- a/lib/private/User/User.php +++ b/lib/private/User/User.php @@ -558,6 +558,19 @@ class User implements IUser { return $quota; } + public function getQuotaBytes(): int|float { + $quota = $this->getQuota(); + if ($quota === 'none') { + return \OCP\Files\FileInfo::SPACE_UNLIMITED; + } + + $bytes = \OCP\Util::computerFileSize($quota); + if ($bytes === false) { + return \OCP\Files\FileInfo::SPACE_UNKNOWN; + } + return $bytes; + } + /** * set the users' quota * diff --git a/lib/private/legacy/OC_Helper.php b/lib/private/legacy/OC_Helper.php index 87c820dcd53..4388f775623 100644 --- a/lib/private/legacy/OC_Helper.php +++ b/lib/private/legacy/OC_Helper.php @@ -272,7 +272,7 @@ class OC_Helper { } else { $user = \OC::$server->getUserSession()->getUser(); } - $quota = OC_Util::getUserQuota($user); + $quota = $user?->getQuotaBytes() ?? \OCP\Files\FileInfo::SPACE_UNKNOWN; if ($quota !== \OCP\Files\FileInfo::SPACE_UNLIMITED) { // always get free space / total space from root + mount points return self::getGlobalStorageInfo($quota, $user, $mount); diff --git a/lib/private/legacy/OC_Util.php b/lib/private/legacy/OC_Util.php index 9444da4f36d..87447af8adc 100644 --- a/lib/private/legacy/OC_Util.php +++ b/lib/private/legacy/OC_Util.php @@ -98,7 +98,7 @@ class OC_Util { * * @param IUser|null $user * @return int|\OCP\Files\FileInfo::SPACE_UNLIMITED|false|float Quota bytes - * @deprecated 9.0.0 - Use \OCP\IUser::getQuota + * @deprecated 9.0.0 - Use \OCP\IUser::getQuota or \OCP\IUser::getQuotaBytes */ public static function getUserQuota(?IUser $user) { if (is_null($user)) { diff --git a/lib/public/IUser.php b/lib/public/IUser.php index 52f79083dc1..945e7e1602a 100644 --- a/lib/public/IUser.php +++ b/lib/public/IUser.php @@ -281,6 +281,15 @@ interface IUser { public function getQuota(); /** + * Get the users' quota in machine readable form. If a specific quota is set + * for the user, then the quota is returned in bytes. Otherwise the default value is returned. + * If a default setting was not set, it is return as `\OCP\Files\FileInfo::SPACE_UNLIMITED`, i.e. quota is not limited. + * + * @since 32.0.0 + */ + public function getQuotaBytes(): int|float; + + /** * set the users' quota * * @param string $quota diff --git a/resources/codesigning/root.crl b/resources/codesigning/root.crl index db98bc350d1..375be03de45 100644 --- a/resources/codesigning/root.crl +++ b/resources/codesigning/root.crl @@ -1,8 +1,8 @@ -----BEGIN X509 CRL----- -MIIJcjCCCFoCAQEwDQYJKoZIhvcNAQELBQAwezELMAkGA1UEBhMCREUxGzAZBgNV +MIIJhzCCCG8CAQEwDQYJKoZIhvcNAQELBQAwezELMAkGA1UEBhMCREUxGzAZBgNV BAgMEkJhZGVuLVd1ZXJ0dGVtYmVyZzEXMBUGA1UECgwOTmV4dGNsb3VkIEdtYkgx NjA0BgNVBAMMLU5leHRjbG91ZCBDb2RlIFNpZ25pbmcgSW50ZXJtZWRpYXRlIEF1 -dGhvcml0eRcNMjUwNDA5MTEyMTQzWhcNMzUwMjE2MTEyMTQzWjCCB3cwEwICEAIX +dGhvcml0eRcNMjUwNTIyMDgwNTA5WhcNMzUwMzMxMDgwNTA5WjCCB4wwEwICEAIX DTIxMDQxOTA5NTI0NVowEwICEBAXDTE2MTAxNzEyMDkxOVowEwICEBYXDTE3MTEy MzE3MzUyOVowEwICEBcXDTE3MDIyMDEwMDIzOFowEwICEBgXDTE5MDEzMDEzMDEy NVowEwICEBwXDTE4MDIwMjEwNTIzOVowEwICEB8XDTE5MDEzMDEzMDEzM1owEwIC @@ -38,16 +38,16 @@ EWQXDTIyMDQxMTE0Mjg0M1owEwICEXwXDTIzMDEwNDAyMjc0NlowEwICEZ4XDTIz MDQyNDIyMTkzM1owEwICEaIXDTIyMDIyNDA5NTk1NFowEwICEaMXDTIxMTAyNzIx NTExNFowEwICEacXDTIyMDMwMzEzMTMzNlowEwICEbQXDTIyMDIyNDExNTc0NVow EwICEcIXDTIyMDMxODExMzcwMlowEwICEcwXDTIyMDUzMDEyNTMxM1owEwICEgwX -DTIzMDkyMTE0NTE0OFowEwICEhIXDTI0MDEwMzE3MjUzMFowEwICEiEXDTIzMDcy -ODExNTc0OVowEwICEicXDTIzMDkwNDA3MzQ0NFowEwICEjoXDTIzMTIxMTA4MzAx -NVowEwICEksXDTI0MDEwMzE3NDkxMFowEwICElAXDTI0MDEyMzA3NTQ0MVowEwIC -ElgXDTI0MDIwOTA4MzI1OVowEwICEloXDTI0MDkxODEzMjI1NVowEwICEl4XDTI0 -MDMyNzE3MDU0OFowEwICEo8XDTI1MDQwNDA3MjgwNlqgMDAuMB8GA1UdIwQYMBaA -FG3qbqqpNyw8iS0XPv1G7sOeeO10MAsGA1UdFAQEAgIQSjANBgkqhkiG9w0BAQsF -AAOCAQEAlc8tkDmLfYKtstrbjARCWVG4Fg15pH8F5kg+C1Vtw9k+pxtQoMLte09e -pNC8KkAxSfgqpvvbTb7C38QekcsJjWN3YA/QW1N4xCGaBgThRpZ7UgW2qzn935j7 -EXmuBjRpmH6MEYkeXP1VrPZq0ZQDXZDCKv/qKBbTrZJHpgAUMYnohISqJCjVM0Ka -v84SiE7bpXF8X6Wvzd+p8XaRzj5hQC0jjtLLDHyja0NYMUCCs29l8UklZHyRigtq -hMP/UzsDPt90xhaOh4ujNZtkkBEiHxPezYjM01xDPw6UkwHKYc+kpDmKdzKOMQ24 -omiWjVzpUTn21QOBiklNtGMOSossuQ== +DTIzMDkyMTE0NTE0OFowEwICEhIXDTI0MDEwMzE3MjUzMFowEwICEhsXDTI1MDUy +MjA4MDUwOFowEwICEiEXDTIzMDcyODExNTc0OVowEwICEicXDTIzMDkwNDA3MzQ0 +NFowEwICEjoXDTIzMTIxMTA4MzAxNVowEwICEksXDTI0MDEwMzE3NDkxMFowEwIC +ElAXDTI0MDEyMzA3NTQ0MVowEwICElgXDTI0MDIwOTA4MzI1OVowEwICEloXDTI0 +MDkxODEzMjI1NVowEwICEl4XDTI0MDMyNzE3MDU0OFowEwICEo8XDTI1MDQwNDA3 +MjgwNlqgMDAuMB8GA1UdIwQYMBaAFG3qbqqpNyw8iS0XPv1G7sOeeO10MAsGA1Ud +FAQEAgIQSzANBgkqhkiG9w0BAQsFAAOCAQEAfbc80qLrogJqeElPvKi01moDZxZW +ahr/D8eYfLrJCy2PnioHXQDf8k82Y11U50sFxQfANWK9wq2ZU51ZgZJ0vDEVHLn1 +vPGjxgp7Mggn6nx+sPCCcU/N3wZ8y1rf16YYwluTZ1tgnVjtT3/I9c7zKie1aW71 +W5CDYIGMPaOrnGk6HyslNRVQ4+pFqztym07iGjim4wsjNItgZGJ+hhr8Fu5t8VqH +Q/HGkzlmoBxkQPu8DjQ4F/26c+o1636Psm3+v8NMypBp3n5/OHLf472l49WWj6JT +BZZMkXQEOEmOMQX4NtoXlYPuJMYUW/bm0aaPUdL7+TNhU2jjbiUAshS3tQ== -----END X509 CRL----- diff --git a/tests/lib/User/UserTest.php b/tests/lib/User/UserTest.php index 694c1e757cb..8f9560d6486 100644 --- a/tests/lib/User/UserTest.php +++ b/tests/lib/User/UserTest.php @@ -14,6 +14,7 @@ use OC\Hooks\PublicEmitter; use OC\User\User; use OCP\Comments\ICommentsManager; use OCP\EventDispatcher\IEventDispatcher; +use OCP\Files\FileInfo; use OCP\Files\Storage\IStorageFactory; use OCP\IConfig; use OCP\IURLGenerator; @@ -834,8 +835,8 @@ class UserTest extends TestCase { $config->method('getAppValue') ->will($this->returnValueMap($appValueMap)); - $quota = $user->getQuota(); - $this->assertEquals('none', $quota); + $this->assertEquals('none', $user->getQuota()); + $this->assertEquals(FileInfo::SPACE_UNLIMITED, $user->getQuotaBytes()); } public function testGetDefaultUnlimitedQuotaForbidden(): void { @@ -868,8 +869,8 @@ class UserTest extends TestCase { $config->method('getAppValue') ->will($this->returnValueMap($appValueMap)); - $quota = $user->getQuota(); - $this->assertEquals('1 GB', $quota); + $this->assertEquals('1 GB', $user->getQuota()); + $this->assertEquals(1024 * 1024 * 1024, $user->getQuotaBytes()); } public function testSetQuotaAddressNoChange(): void { |