aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/dav/composer/composer/autoload_classmap.php3
-rw-r--r--apps/dav/composer/composer/autoload_static.php3
-rw-r--r--apps/dav/lib/AppInfo/Application.php14
-rw-r--r--apps/dav/lib/AppInfo/PluginManager.php5
-rw-r--r--apps/dav/lib/CalDAV/AppCalendar/AppCalendar.php208
-rw-r--r--apps/dav/lib/CalDAV/AppCalendar/AppCalendarPlugin.php74
-rw-r--r--apps/dav/lib/CalDAV/AppCalendar/CalendarObject.php153
-rw-r--r--apps/dav/lib/CalDAV/CalendarProvider.php1
-rw-r--r--apps/dav/tests/unit/AppInfo/PluginManagerTest.php25
-rw-r--r--apps/dav/tests/unit/CalDAV/AppCalendar/AppCalendarTest.php123
-rw-r--r--apps/dav/tests/unit/CalDAV/AppCalendar/CalendarObjectTest.php166
-rw-r--r--apps/dav/tests/unit/Command/DeleteCalendarTest.php2
-rw-r--r--apps/encryption/l10n/de.js5
-rw-r--r--apps/encryption/l10n/de.json5
-rw-r--r--apps/files/l10n/de.js19
-rw-r--r--apps/files/l10n/de.json19
-rw-r--r--apps/files/src/views/ReferenceFileWidget.vue2
-rw-r--r--apps/files_external/js/settings.js4
-rw-r--r--apps/files_sharing/l10n/cs.js2
-rw-r--r--apps/files_sharing/l10n/cs.json2
-rw-r--r--apps/files_sharing/l10n/de.js2
-rw-r--r--apps/files_sharing/l10n/de.json2
-rw-r--r--apps/files_trashbin/l10n/de.js1
-rw-r--r--apps/files_trashbin/l10n/de.json1
-rw-r--r--apps/settings/l10n/de.js2
-rw-r--r--apps/settings/l10n/de.json2
-rw-r--r--apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue2
-rw-r--r--apps/systemtags/l10n/de.js9
-rw-r--r--apps/systemtags/l10n/de.json9
-rw-r--r--apps/updatenotification/l10n/de.js1
-rw-r--r--apps/updatenotification/l10n/de.json1
-rw-r--r--apps/user_ldap/l10n/de.js19
-rw-r--r--apps/user_ldap/l10n/de.json19
-rw-r--r--apps/user_status/l10n/cs.js2
-rw-r--r--apps/user_status/l10n/cs.json2
-rw-r--r--apps/user_status/l10n/de.js7
-rw-r--r--apps/user_status/l10n/de.json7
-rw-r--r--core/l10n/cs.js1
-rw-r--r--core/l10n/cs.json1
-rw-r--r--core/l10n/de.js7
-rw-r--r--core/l10n/de.json7
-rw-r--r--core/l10n/de_DE.js2
-rw-r--r--core/l10n/de_DE.json2
-rw-r--r--core/l10n/pl.js4
-rw-r--r--core/l10n/pl.json4
-rw-r--r--core/src/components/setup/RecommendedApps.vue11
-rw-r--r--core/templates/404.php2
-rw-r--r--dist/core-recommendedapps.js4
-rw-r--r--dist/core-recommendedapps.js.map2
-rw-r--r--dist/files-reference-files.js4
-rw-r--r--dist/files-reference-files.js.map2
-rw-r--r--dist/settings-vue-settings-personal-info.js4
-rw-r--r--dist/settings-vue-settings-personal-info.js.map2
-rw-r--r--lib/l10n/cs.js1
-rw-r--r--lib/l10n/cs.json1
-rw-r--r--lib/l10n/de.js1
-rw-r--r--lib/l10n/de.json1
-rw-r--r--lib/private/Console/Application.php10
-rw-r--r--lib/public/Log/ILogFactory.php2
59 files changed, 947 insertions, 51 deletions
diff --git a/apps/dav/composer/composer/autoload_classmap.php b/apps/dav/composer/composer/autoload_classmap.php
index a9bf60698fd..6745ffe41b4 100644
--- a/apps/dav/composer/composer/autoload_classmap.php
+++ b/apps/dav/composer/composer/autoload_classmap.php
@@ -37,6 +37,9 @@ return array(
'OCA\\DAV\\CalDAV\\Activity\\Setting\\Calendar' => $baseDir . '/../lib/CalDAV/Activity/Setting/Calendar.php',
'OCA\\DAV\\CalDAV\\Activity\\Setting\\Event' => $baseDir . '/../lib/CalDAV/Activity/Setting/Event.php',
'OCA\\DAV\\CalDAV\\Activity\\Setting\\Todo' => $baseDir . '/../lib/CalDAV/Activity/Setting/Todo.php',
+ 'OCA\\DAV\\CalDAV\\AppCalendar\\AppCalendar' => $baseDir . '/../lib/CalDAV/AppCalendar/AppCalendar.php',
+ 'OCA\\DAV\\CalDAV\\AppCalendar\\AppCalendarPlugin' => $baseDir . '/../lib/CalDAV/AppCalendar/AppCalendarPlugin.php',
+ 'OCA\\DAV\\CalDAV\\AppCalendar\\CalendarObject' => $baseDir . '/../lib/CalDAV/AppCalendar/CalendarObject.php',
'OCA\\DAV\\CalDAV\\Auth\\CustomPrincipalPlugin' => $baseDir . '/../lib/CalDAV/Auth/CustomPrincipalPlugin.php',
'OCA\\DAV\\CalDAV\\Auth\\PublicPrincipalPlugin' => $baseDir . '/../lib/CalDAV/Auth/PublicPrincipalPlugin.php',
'OCA\\DAV\\CalDAV\\BirthdayCalendar\\EnablePlugin' => $baseDir . '/../lib/CalDAV/BirthdayCalendar/EnablePlugin.php',
diff --git a/apps/dav/composer/composer/autoload_static.php b/apps/dav/composer/composer/autoload_static.php
index 48104281cd4..302a424d08e 100644
--- a/apps/dav/composer/composer/autoload_static.php
+++ b/apps/dav/composer/composer/autoload_static.php
@@ -52,6 +52,9 @@ class ComposerStaticInitDAV
'OCA\\DAV\\CalDAV\\Activity\\Setting\\Calendar' => __DIR__ . '/..' . '/../lib/CalDAV/Activity/Setting/Calendar.php',
'OCA\\DAV\\CalDAV\\Activity\\Setting\\Event' => __DIR__ . '/..' . '/../lib/CalDAV/Activity/Setting/Event.php',
'OCA\\DAV\\CalDAV\\Activity\\Setting\\Todo' => __DIR__ . '/..' . '/../lib/CalDAV/Activity/Setting/Todo.php',
+ 'OCA\\DAV\\CalDAV\\AppCalendar\\AppCalendar' => __DIR__ . '/..' . '/../lib/CalDAV/AppCalendar/AppCalendar.php',
+ 'OCA\\DAV\\CalDAV\\AppCalendar\\AppCalendarPlugin' => __DIR__ . '/..' . '/../lib/CalDAV/AppCalendar/AppCalendarPlugin.php',
+ 'OCA\\DAV\\CalDAV\\AppCalendar\\CalendarObject' => __DIR__ . '/..' . '/../lib/CalDAV/AppCalendar/CalendarObject.php',
'OCA\\DAV\\CalDAV\\Auth\\CustomPrincipalPlugin' => __DIR__ . '/..' . '/../lib/CalDAV/Auth/CustomPrincipalPlugin.php',
'OCA\\DAV\\CalDAV\\Auth\\PublicPrincipalPlugin' => __DIR__ . '/..' . '/../lib/CalDAV/Auth/PublicPrincipalPlugin.php',
'OCA\\DAV\\CalDAV\\BirthdayCalendar\\EnablePlugin' => __DIR__ . '/..' . '/../lib/CalDAV/BirthdayCalendar/EnablePlugin.php',
diff --git a/apps/dav/lib/AppInfo/Application.php b/apps/dav/lib/AppInfo/Application.php
index 86749862626..10e1130f907 100644
--- a/apps/dav/lib/AppInfo/Application.php
+++ b/apps/dav/lib/AppInfo/Application.php
@@ -35,6 +35,7 @@ namespace OCA\DAV\AppInfo;
use Exception;
use OCA\DAV\BackgroundJob\UpdateCalendarResourcesRoomsBackgroundJob;
use OCA\DAV\CalDAV\Activity\Backend;
+use OCA\DAV\CalDAV\AppCalendar\AppCalendarPlugin;
use OCA\DAV\CalDAV\CalendarManager;
use OCA\DAV\CalDAV\CalendarProvider;
use OCA\DAV\CalDAV\Reminder\NotificationProvider\AudioProvider;
@@ -44,7 +45,6 @@ use OCA\DAV\CalDAV\Reminder\NotificationProviderManager;
use OCA\DAV\CalDAV\Reminder\Notifier;
use OCA\DAV\Capabilities;
-use OCA\DAV\CardDAV\CardDavBackend;
use OCA\DAV\CardDAV\ContactsManager;
use OCA\DAV\CardDAV\PhotoCache;
use OCA\DAV\CardDAV\SyncService;
@@ -100,6 +100,7 @@ use OCP\Calendar\IManager as ICalendarManager;
use OCP\Config\BeforePreferenceDeletedEvent;
use OCP\Config\BeforePreferenceSetEvent;
use OCP\Contacts\IManager as IContactsManager;
+use OCP\Files\AppData\IAppDataFactory;
use OCP\IServerContainer;
use OCP\IUser;
use Psr\Container\ContainerInterface;
@@ -119,14 +120,17 @@ class Application extends App implements IBootstrap {
public function register(IRegistrationContext $context): void {
$context->registerServiceAlias('CardDAVSyncService', SyncService::class);
$context->registerService(PhotoCache::class, function (ContainerInterface $c) {
- /** @var IServerContainer $server */
- $server = $c->get(IServerContainer::class);
-
return new PhotoCache(
- $server->getAppDataDir('dav-photocache'),
+ $c->get(IAppDataFactory::class)->get('dav-photocache'),
$c->get(LoggerInterface::class)
);
});
+ $context->registerService(AppCalendarPlugin::class, function(ContainerInterface $c) {
+ return new AppCalendarPlugin(
+ $c->get(ICalendarManager::class),
+ $c->get(LoggerInterface::class)
+ );
+ });
/*
* Register capabilities
diff --git a/apps/dav/lib/AppInfo/PluginManager.php b/apps/dav/lib/AppInfo/PluginManager.php
index 0b83d6a9205..828818455f7 100644
--- a/apps/dav/lib/AppInfo/PluginManager.php
+++ b/apps/dav/lib/AppInfo/PluginManager.php
@@ -29,6 +29,7 @@ declare(strict_types=1);
namespace OCA\DAV\AppInfo;
use OC\ServerContainer;
+use OCA\DAV\CalDAV\AppCalendar\AppCalendarPlugin;
use OCA\DAV\CalDAV\Integration\ICalendarProvider;
use OCA\DAV\CardDAV\Integration\IAddressBookProvider;
use OCP\App\IAppManager;
@@ -144,6 +145,8 @@ class PluginManager {
}
$this->populated = true;
+ $this->calendarPlugins[] = $this->container->get(AppCalendarPlugin::class);
+
foreach ($this->appManager->getInstalledApps() as $app) {
// load plugins and collections from info.xml
$info = $this->appManager->getAppInfo($app);
@@ -253,7 +256,7 @@ class PluginManager {
private function createClass(string $className): object {
try {
- return $this->container->query($className);
+ return $this->container->get($className);
} catch (QueryException $e) {
if (class_exists($className)) {
return new $className();
diff --git a/apps/dav/lib/CalDAV/AppCalendar/AppCalendar.php b/apps/dav/lib/CalDAV/AppCalendar/AppCalendar.php
new file mode 100644
index 00000000000..d67f1f5a816
--- /dev/null
+++ b/apps/dav/lib/CalDAV/AppCalendar/AppCalendar.php
@@ -0,0 +1,208 @@
+<?php
+declare(strict_types=1);
+
+/**
+ * @copyright 2023 Ferdinand Thiessen <opensource@fthiessen.de>
+ *
+ * @author Ferdinand Thiessen <opensource@fthiessen.de>
+ *
+ * @license AGPL-3.0-or-later
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCA\DAV\CalDAV\AppCalendar;
+
+use OCA\DAV\CalDAV\Plugin;
+use OCA\DAV\CalDAV\Integration\ExternalCalendar;
+use OCP\Calendar\ICalendar;
+use OCP\Calendar\ICreateFromString;
+use OCP\Constants;
+use Sabre\CalDAV\CalendarQueryValidator;
+use Sabre\CalDAV\ICalendarObject;
+use Sabre\CalDAV\Xml\Property\SupportedCalendarComponentSet;
+use Sabre\DAV\Exception\Forbidden;
+use Sabre\DAV\Exception\NotFound;
+use Sabre\DAV\PropPatch;
+use Sabre\VObject\Component\VCalendar;
+use Sabre\VObject\Reader;
+
+class AppCalendar extends ExternalCalendar {
+ protected string $principal;
+ protected ICalendar $calendar;
+
+ public function __construct(string $appId, ICalendar $calendar, string $principal) {
+ parent::__construct($appId, $calendar->getUri());
+ $this->principal = $principal;
+ $this->calendar = $calendar;
+ }
+
+ /**
+ * Return permissions supported by the backend calendar
+ * @return int Permissions based on \OCP\Constants
+ */
+ public function getPermissions(): int {
+ // Make sure to only promote write support if the backend implement the correct interface
+ if ($this->calendar instanceof ICreateFromString) {
+ return $this->calendar->getPermissions();
+ }
+ return Constants::PERMISSION_READ;
+ }
+
+ public function getOwner(): ?string {
+ return $this->principal;
+ }
+
+ public function getGroup(): ?string {
+ return null;
+ }
+
+ public function getACL(): array {
+ $acl = [
+ [
+ 'privilege' => '{DAV:}read',
+ 'principal' => $this->getOwner(),
+ 'protected' => true,
+ ],
+ [
+ 'privilege' => '{DAV:}write-properties',
+ 'principal' => $this->getOwner(),
+ 'protected' => true,
+ ]
+ ];
+ if ($this->getPermissions() & Constants::PERMISSION_CREATE) {
+ $acl[] = [
+ 'privilege' => '{DAV:}write',
+ 'principal' => $this->getOwner(),
+ 'protected' => true,
+ ];
+ }
+ return $acl;
+ }
+
+ public function setACL(array $acl): void {
+ throw new Forbidden('Setting ACL is not supported on this node');
+ }
+
+ public function getSupportedPrivilegeSet(): ?array {
+ // Use the default one
+ return null;
+ }
+
+ public function getLastModified(): ?int {
+ // unknown
+ return null;
+ }
+
+ public function delete(): void {
+ // No method for deleting a calendar in OCP\Calendar\ICalendar
+ throw new Forbidden('Deleting an entry is not implemented');
+ }
+
+ public function createFile($name, $data = null) {
+ if ($this->calendar instanceof ICreateFromString) {
+ if (is_resource($data)) {
+ $data = stream_get_contents($data) ?: null;
+ }
+ $this->calendar->createFromString($name, is_null($data) ? '' : $data);
+ return null;
+ } else {
+ throw new Forbidden('Creating a new entry is not allowed');
+ }
+ }
+
+ public function getProperties($properties) {
+ return [
+ '{DAV:}displayname' => $this->calendar->getDisplayName() ?: $this->calendar->getKey(),
+ '{http://apple.com/ns/ical/}calendar-color' => $this->calendar->getDisplayColor() ?: '#0082c9',
+ '{' . Plugin::NS_CALDAV . '}supported-calendar-component-set' => new SupportedCalendarComponentSet(['VEVENT', 'VJOURNAL', 'VTODO']),
+ ];
+ }
+
+ public function calendarQuery(array $filters) {
+ $result = [];
+ $objects = $this->getChildren();
+
+ foreach ($objects as $object) {
+ if ($this->validateFilterForObject($object, $filters)) {
+ $result[] = $object->getName();
+ }
+ }
+
+ return $result;
+ }
+
+ protected function validateFilterForObject(ICalendarObject $object, array $filters): bool {
+ /** @var \Sabre\VObject\Component\VCalendar */
+ $vObject = Reader::read($object->get());
+
+ $validator = new CalendarQueryValidator();
+ $result = $validator->validate($vObject, $filters);
+
+ // Destroy circular references so PHP will GC the object.
+ $vObject->destroy();
+
+ return $result;
+ }
+
+ public function childExists($name): bool {
+ try {
+ $this->getChild($name);
+ return true;
+ } catch (NotFound $error) {
+ return false;
+ }
+ }
+
+ public function getChild($name) {
+ // Try to get calendar by filename
+ $children = $this->calendar->search($name, ['X-FILENAME']);
+ if (count($children) === 0) {
+ // If nothing found try to get by UID from filename
+ $pos = strrpos($name, '.ics');
+ $children = $this->calendar->search(substr($name, 0, $pos ?: null), ['UID']);
+ }
+
+ if (count($children) > 0) {
+ return new CalendarObject($this, $this->calendar, new VCalendar($children));
+ }
+
+ throw new NotFound('Node not found');
+ }
+
+ /**
+ * @return ICalendarObject[]
+ */
+ public function getChildren(): array {
+ $objects = $this->calendar->search('');
+ // We need to group by UID (actually by filename but we do not have that information)
+ $result = [];
+ foreach ($objects as $object) {
+ $uid = (string)$object['UID'] ?: uniqid();
+ if (!isset($result[$uid])) {
+ $result[$uid] = [];
+ }
+ $result[$uid][] = $object;
+ }
+
+ return array_map(function (array $children) {
+ return new CalendarObject($this, $this->calendar, new VCalendar($children));
+ }, $result);
+ }
+
+ public function propPatch(PropPatch $propPatch): void {
+ // no setDisplayColor or setDisplayName in \OCP\Calendar\ICalendar
+ }
+}
diff --git a/apps/dav/lib/CalDAV/AppCalendar/AppCalendarPlugin.php b/apps/dav/lib/CalDAV/AppCalendar/AppCalendarPlugin.php
new file mode 100644
index 00000000000..cdf7cb9059a
--- /dev/null
+++ b/apps/dav/lib/CalDAV/AppCalendar/AppCalendarPlugin.php
@@ -0,0 +1,74 @@
+<?php
+declare(strict_types=1);
+
+/**
+ * @copyright 2023 Ferdinand Thiessen <opensource@fthiessen.de>
+ *
+ * @author Ferdinand Thiessen <opensource@fthiessen.de>
+ *
+ * @license AGPL-3.0-or-later
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCA\DAV\CalDAV\AppCalendar;
+
+use OCA\DAV\CalDAV\Integration\ExternalCalendar;
+use OCA\DAV\CalDAV\Integration\ICalendarProvider;
+use OCP\Calendar\IManager;
+use Psr\Log\LoggerInterface;
+
+/* Plugin for wrapping application generated calendars registered in nextcloud core (OCP\Calendar\ICalendarProvider) */
+class AppCalendarPlugin implements ICalendarProvider {
+ protected IManager $manager;
+ protected LoggerInterface $logger;
+
+ public function __construct(IManager $manager, LoggerInterface $logger) {
+ $this->manager = $manager;
+ $this->logger = $logger;
+ }
+
+ public function getAppID(): string {
+ return 'dav-wrapper';
+ }
+
+ public function fetchAllForCalendarHome(string $principalUri): array {
+ return array_map(function ($calendar) use (&$principalUri) {
+ return new AppCalendar($this->getAppID(), $calendar, $principalUri);
+ }, $this->getWrappedCalendars($principalUri));
+ }
+
+ public function hasCalendarInCalendarHome(string $principalUri, string $calendarUri): bool {
+ return count($this->getWrappedCalendars($principalUri, [ $calendarUri ])) > 0;
+ }
+
+ public function getCalendarInCalendarHome(string $principalUri, string $calendarUri): ?ExternalCalendar {
+ $calendars = $this->getWrappedCalendars($principalUri, [ $calendarUri ]);
+ if (count($calendars) > 0) {
+ return new AppCalendar($this->getAppID(), $calendars[0], $principalUri);
+ }
+
+ return null;
+ }
+
+ protected function getWrappedCalendars(string $principalUri, array $calendarUris = []): array {
+ return array_values(
+ array_filter($this->manager->getCalendarsForPrincipal($principalUri, $calendarUris), function ($c) {
+ // We must not provide a wrapper for DAV calendars
+ return ! ($c instanceof \OCA\DAV\CalDAV\CalendarImpl);
+ })
+ );
+ }
+}
diff --git a/apps/dav/lib/CalDAV/AppCalendar/CalendarObject.php b/apps/dav/lib/CalDAV/AppCalendar/CalendarObject.php
new file mode 100644
index 00000000000..985b137c955
--- /dev/null
+++ b/apps/dav/lib/CalDAV/AppCalendar/CalendarObject.php
@@ -0,0 +1,153 @@
+<?php
+declare(strict_types=1);
+
+/**
+ * @copyright 2023 Ferdinand Thiessen <opensource@fthiessen.de>
+ *
+ * @author Ferdinand Thiessen <opensource@fthiessen.de>
+ *
+ * @license AGPL-3.0-or-later
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCA\DAV\CalDAV\AppCalendar;
+
+use OCP\Calendar\ICalendar;
+use OCP\Calendar\ICreateFromString;
+use OCP\Constants;
+use Sabre\CalDAV\ICalendarObject;
+use Sabre\DAV\Exception\Forbidden;
+use Sabre\DAV\Exception\NotFound;
+use Sabre\DAVACL\IACL;
+use Sabre\VObject\Component\VCalendar;
+use Sabre\VObject\Property\ICalendar\DateTime;
+
+class CalendarObject implements ICalendarObject, IACL {
+ private VCalendar $vobject;
+ private AppCalendar $calendar;
+ private ICalendar|ICreateFromString $backend;
+
+ public function __construct(AppCalendar $calendar, ICalendar $backend, VCalendar $vobject) {
+ $this->backend = $backend;
+ $this->calendar = $calendar;
+ $this->vobject = $vobject;
+ }
+
+ public function getOwner() {
+ return $this->calendar->getOwner();
+ }
+
+ public function getGroup() {
+ return $this->calendar->getGroup();
+ }
+
+ public function getACL(): array {
+ $acl = [
+ [
+ 'privilege' => '{DAV:}read',
+ 'principal' => $this->getOwner(),
+ 'protected' => true,
+ ]
+ ];
+ if ($this->calendar->getPermissions() & Constants::PERMISSION_UPDATE) {
+ $acl[] = [
+ 'privilege' => '{DAV:}write-content',
+ 'principal' => $this->getOwner(),
+ 'protected' => true,
+ ];
+ }
+ return $acl;
+ }
+
+ public function setACL(array $acl): void {
+ throw new Forbidden('Setting ACL is not supported on this node');
+ }
+
+ public function getSupportedPrivilegeSet(): ?array {
+ return null;
+ }
+
+ public function put($data): void {
+ if ($this->backend instanceof ICreateFromString && $this->calendar->getPermissions() & Constants::PERMISSION_UPDATE) {
+ if (is_resource($data)) {
+ $data = stream_get_contents($data) ?: '';
+ }
+ $this->backend->createFromString($this->getName(), $data);
+ } else {
+ throw new Forbidden('This calendar-object is read-only');
+ }
+ }
+
+ public function get(): string {
+ return $this->vobject->serialize();
+ }
+
+ public function getContentType(): string {
+ return 'text/calendar; charset=utf-8';
+ }
+
+ public function getETag(): ?string {
+ return null;
+ }
+
+ public function getSize() {
+ return mb_strlen($this->vobject->serialize());
+ }
+
+ public function delete(): void {
+ if ($this->backend instanceof ICreateFromString && $this->calendar->getPermissions() & Constants::PERMISSION_DELETE) {
+ /** @var \Sabre\VObject\Component[] */
+ $components = $this->vobject->getBaseComponents();
+ foreach ($components as $key => $component) {
+ $components[$key]->STATUS = 'CANCELLED';
+ $components[$key]->SEQUENCE = isset($component->SEQUENCE) ? ((int)$component->SEQUENCE->getValue()) + 1 : 1;
+ if ($component->name === 'VEVENT') {
+ $components[$key]->METHOD = 'CANCEL';
+ }
+ }
+ $this->backend->createFromString($this->getName(), (new VCalendar($components))->serialize());
+ } else {
+ throw new Forbidden('This calendar-object is read-only');
+ }
+ }
+
+ public function getName(): string {
+ // Every object is required to have an UID
+ $base = $this->vobject->getBaseComponent();
+ // This should never happen except the app provides invalid calendars (VEvent, VTodo... all require UID to be present)
+ if ($base === null) {
+ throw new NotFound('Invalid node');
+ }
+ if (isset($base->{'X-FILENAME'})) {
+ return (string)$base->{'X-FILENAME'};
+ }
+ return (string)$base->UID . '.ics';
+ }
+
+ public function setName($name): void {
+ throw new Forbidden('This calendar-object is read-only');
+ }
+
+ public function getLastModified(): ?int {
+ $base = $this->vobject->getBaseComponent();
+ if ($base !== null && $this->vobject->getBaseComponent()->{'LAST-MODIFIED'}) {
+ /** @var DateTime */
+ $lastModified = $this->vobject->getBaseComponent()->{'LAST-MODIFIED'};
+ return $lastModified->getDateTime()->getTimestamp();
+ }
+ return null;
+ }
+}
diff --git a/apps/dav/lib/CalDAV/CalendarProvider.php b/apps/dav/lib/CalDAV/CalendarProvider.php
index 5779111add3..f29c601db2d 100644
--- a/apps/dav/lib/CalDAV/CalendarProvider.php
+++ b/apps/dav/lib/CalDAV/CalendarProvider.php
@@ -26,7 +26,6 @@ declare(strict_types=1);
namespace OCA\DAV\CalDAV;
use OCP\Calendar\ICalendarProvider;
-use OCP\Calendar\ICreateFromString;
use OCP\IConfig;
use OCP\IL10N;
use Psr\Log\LoggerInterface;
diff --git a/apps/dav/tests/unit/AppInfo/PluginManagerTest.php b/apps/dav/tests/unit/AppInfo/PluginManagerTest.php
index 17f8ffda625..67dd0477685 100644
--- a/apps/dav/tests/unit/AppInfo/PluginManagerTest.php
+++ b/apps/dav/tests/unit/AppInfo/PluginManagerTest.php
@@ -29,6 +29,7 @@ namespace OCA\DAV\Tests\unit\AppInfo;
use OC\App\AppManager;
use OC\ServerContainer;
use OCA\DAV\AppInfo\PluginManager;
+use OCA\DAV\CalDAV\AppCalendar\AppCalendarPlugin;
use OCA\DAV\CalDAV\Integration\ICalendarProvider;
use Sabre\DAV\Collection;
use Sabre\DAV\ServerPlugin;
@@ -43,7 +44,6 @@ class PluginManagerTest extends TestCase {
public function test(): void {
$server = $this->createMock(ServerContainer::class);
-
$appManager = $this->createMock(AppManager::class);
$appManager->method('getInstalledApps')
->willReturn(['adavapp', 'adavapp2']);
@@ -94,6 +94,7 @@ class PluginManagerTest extends TestCase {
$pluginManager = new PluginManager($server, $appManager);
+ $appCalendarPlugin = $this->createMock(AppCalendarPlugin::class);
$calendarPlugin1 = $this->createMock(ICalendarProvider::class);
$calendarPlugin2 = $this->createMock(ICalendarProvider::class);
$calendarPlugin3 = $this->createMock(ICalendarProvider::class);
@@ -106,17 +107,18 @@ class PluginManagerTest extends TestCase {
$dummyCollection2 = $this->createMock(Collection::class);
$dummy2Collection1 = $this->createMock(Collection::class);
- $server->method('query')
+ $server->method('get')
->willReturnMap([
- ['\OCA\DAV\ADavApp\PluginOne', true, $dummyPlugin1],
- ['\OCA\DAV\ADavApp\PluginTwo', true, $dummyPlugin2],
- ['\OCA\DAV\ADavApp\CalendarPluginOne', true, $calendarPlugin1],
- ['\OCA\DAV\ADavApp\CalendarPluginTwo', true, $calendarPlugin2],
- ['\OCA\DAV\ADavApp\CollectionOne', true, $dummyCollection1],
- ['\OCA\DAV\ADavApp\CollectionTwo', true, $dummyCollection2],
- ['\OCA\DAV\ADavApp2\PluginOne', true, $dummy2Plugin1],
- ['\OCA\DAV\ADavApp2\CalendarPluginOne', true, $calendarPlugin3],
- ['\OCA\DAV\ADavApp2\CollectionOne', true, $dummy2Collection1],
+ [AppCalendarPlugin::class, $appCalendarPlugin],
+ ['\OCA\DAV\ADavApp\PluginOne', $dummyPlugin1],
+ ['\OCA\DAV\ADavApp\PluginTwo', $dummyPlugin2],
+ ['\OCA\DAV\ADavApp\CalendarPluginOne', $calendarPlugin1],
+ ['\OCA\DAV\ADavApp\CalendarPluginTwo', $calendarPlugin2],
+ ['\OCA\DAV\ADavApp\CollectionOne', $dummyCollection1],
+ ['\OCA\DAV\ADavApp\CollectionTwo', $dummyCollection2],
+ ['\OCA\DAV\ADavApp2\PluginOne', $dummy2Plugin1],
+ ['\OCA\DAV\ADavApp2\CalendarPluginOne', $calendarPlugin3],
+ ['\OCA\DAV\ADavApp2\CollectionOne', $dummy2Collection1],
]);
$expectedPlugins = [
@@ -125,6 +127,7 @@ class PluginManagerTest extends TestCase {
$dummy2Plugin1,
];
$expectedCalendarPlugins = [
+ $appCalendarPlugin,
$calendarPlugin1,
$calendarPlugin2,
$calendarPlugin3,
diff --git a/apps/dav/tests/unit/CalDAV/AppCalendar/AppCalendarTest.php b/apps/dav/tests/unit/CalDAV/AppCalendar/AppCalendarTest.php
new file mode 100644
index 00000000000..78ebf8b67a4
--- /dev/null
+++ b/apps/dav/tests/unit/CalDAV/AppCalendar/AppCalendarTest.php
@@ -0,0 +1,123 @@
+<?php
+/**
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+namespace OCA\DAV\Tests\unit\CalDAV\AppCalendar;
+
+use OCA\DAV\CalDAV\AppCalendar\AppCalendar;
+use OCP\Calendar\ICalendar;
+use OCP\Calendar\ICreateFromString;
+use OCP\Constants;
+use PHPUnit\Framework\MockObject\MockObject;
+use Test\TestCase;
+
+use function Safe\rewind;
+
+class AppCalendarTest extends TestCase {
+ private $principal = 'principals/users/foo';
+
+ private AppCalendar $appCalendar;
+ private AppCalendar $writeableAppCalendar;
+
+ private ICalendar|MockObject $calendar;
+ private ICalendar|MockObject $writeableCalendar;
+
+ protected function setUp(): void {
+ parent::setUp();
+
+ $this->calendar = $this->getMockBuilder(ICalendar::class)->getMock();
+ $this->calendar->method('getPermissions')
+ ->willReturn(Constants::PERMISSION_READ);
+
+ $this->writeableCalendar = $this->getMockBuilder(ICreateFromString::class)->getMock();
+ $this->writeableCalendar->method('getPermissions')
+ ->willReturn(Constants::PERMISSION_READ | Constants::PERMISSION_CREATE);
+
+ $this->appCalendar = new AppCalendar('dav-wrapper', $this->calendar, $this->principal);
+ $this->writeableAppCalendar = new AppCalendar('dav-wrapper', $this->writeableCalendar, $this->principal);
+ }
+
+ public function testGetPrincipal():void {
+ // Check that the correct name is returned
+ $this->assertEquals($this->principal, $this->appCalendar->getOwner());
+ $this->assertEquals($this->principal, $this->writeableAppCalendar->getOwner());
+ }
+
+ public function testDelete(): void {
+ $this->expectException(\Sabre\DAV\Exception\Forbidden::class);
+ $this->expectExceptionMessage('Deleting an entry is not implemented');
+
+ $this->appCalendar->delete();
+ }
+
+ public function testCreateFile() {
+ $this->writeableCalendar->expects($this->exactly(3))
+ ->method('createFromString')
+ ->withConsecutive(['some-name', 'data'], ['other-name', ''], ['name', 'some data']);
+
+ // pass data
+ $this->assertNull($this->writeableAppCalendar->createFile('some-name', 'data'));
+ // null is empty string
+ $this->assertNull($this->writeableAppCalendar->createFile('other-name', null));
+ // resource to data
+ $fp = fopen('php://memory', 'r+');
+ fwrite($fp, 'some data');
+ rewind($fp);
+ $this->assertNull($this->writeableAppCalendar->createFile('name', $fp));
+ fclose($fp);
+ }
+
+ public function testCreateFile_readOnly() {
+ // If writing is not supported
+ $this->expectException(\Sabre\DAV\Exception\Forbidden::class);
+ $this->expectExceptionMessage('Creating a new entry is not allowed');
+
+ $this->appCalendar->createFile('some-name', 'data');
+ }
+
+ public function testSetACL(): void {
+ $this->expectException(\Sabre\DAV\Exception\Forbidden::class);
+ $this->expectExceptionMessage('Setting ACL is not supported on this node');
+
+ $this->appCalendar->setACL([]);
+ }
+
+ public function testGetACL():void {
+ $expectedRO = [
+ [
+ 'privilege' => '{DAV:}read',
+ 'principal' => $this->principal,
+ 'protected' => true,
+ ],
+ [
+ 'privilege' => '{DAV:}write-properties',
+ 'principal' => $this->principal,
+ 'protected' => true,
+ ]
+ ];
+ $expectedRW = $expectedRO;
+ $expectedRW[] = [
+ 'privilege' => '{DAV:}write',
+ 'principal' => $this->principal,
+ 'protected' => true,
+ ];
+
+ // Check that the correct ACL is returned (default be only readable)
+ $this->assertEquals($expectedRO, $this->appCalendar->getACL());
+ $this->assertEquals($expectedRW, $this->writeableAppCalendar->getACL());
+ }
+}
diff --git a/apps/dav/tests/unit/CalDAV/AppCalendar/CalendarObjectTest.php b/apps/dav/tests/unit/CalDAV/AppCalendar/CalendarObjectTest.php
new file mode 100644
index 00000000000..e7bd2cc0b95
--- /dev/null
+++ b/apps/dav/tests/unit/CalDAV/AppCalendar/CalendarObjectTest.php
@@ -0,0 +1,166 @@
+<?php
+
+namespace OCA\DAV\Tests\unit\CalDAV\AppCalendar;
+
+use OCA\DAV\CalDAV\AppCalendar\AppCalendar;
+use OCA\DAV\CalDAV\AppCalendar\CalendarObject;
+use OCP\Calendar\ICalendar;
+use OCP\Calendar\ICreateFromString;
+use OCP\Constants;
+use PHPUnit\Framework\MockObject\MockObject;
+use Sabre\VObject\Component\VCalendar;
+use Sabre\VObject\Component\VEvent;
+use Test\TestCase;
+
+class CalendarObjectTest extends TestCase {
+ private CalendarObject $calendarObject;
+ private AppCalendar|MockObject $calendar;
+ private ICalendar|MockObject $backend;
+ private VCalendar|MockObject $vobject;
+
+ protected function setUp(): void {
+ parent::setUp();
+
+ $this->calendar = $this->createMock(AppCalendar::class);
+ $this->calendar->method('getOwner')->willReturn('owner');
+ $this->calendar->method('getGroup')->willReturn('group');
+
+ $this->backend = $this->createMock(ICalendar::class);
+ $this->vobject = $this->createMock(VCalendar::class);
+ $this->calendarObject = new CalendarObject($this->calendar, $this->backend, $this->vobject);
+ }
+
+ public function testGetOwner() {
+ $this->assertEquals($this->calendarObject->getOwner(), 'owner');
+ }
+
+ public function testGetGroup() {
+ $this->assertEquals($this->calendarObject->getGroup(), 'group');
+ }
+
+ public function testGetACL() {
+ $this->calendar->expects($this->exactly(2))
+ ->method('getPermissions')
+ ->willReturnOnConsecutiveCalls(Constants::PERMISSION_READ, Constants::PERMISSION_ALL);
+
+ // read only
+ $this->assertEquals($this->calendarObject->getACL(), [
+ [
+ 'privilege' => '{DAV:}read',
+ 'principal' => 'owner',
+ 'protected' => true,
+ ]
+ ]);
+
+ // write permissions
+ $this->assertEquals($this->calendarObject->getACL(), [
+ [
+ 'privilege' => '{DAV:}read',
+ 'principal' => 'owner',
+ 'protected' => true,
+ ],
+ [
+ 'privilege' => '{DAV:}write-content',
+ 'principal' => 'owner',
+ 'protected' => true,
+ ]
+ ]);
+ }
+
+ public function testSetACL() {
+ $this->expectException(\Sabre\DAV\Exception\Forbidden::class);
+ $this->calendarObject->setACL([]);
+ }
+
+ public function testPut_readOnlyBackend() {
+ $this->expectException(\Sabre\DAV\Exception\Forbidden::class);
+ $this->calendarObject->put('foo');
+ }
+
+ public function testPut_noPermissions() {
+ $this->expectException(\Sabre\DAV\Exception\Forbidden::class);
+
+ $backend = $this->createMock(ICreateFromString::class);
+ $calendarObject = new CalendarObject($this->calendar, $backend, $this->vobject);
+
+ $this->calendar->expects($this->once())
+ ->method('getPermissions')
+ ->willReturn(Constants::PERMISSION_READ);
+
+ $calendarObject->put('foo');
+ }
+
+ public function testPut() {
+ $backend = $this->createMock(ICreateFromString::class);
+ $calendarObject = new CalendarObject($this->calendar, $backend, $this->vobject);
+
+ $this->vobject->expects($this->once())
+ ->method('getBaseComponent')
+ ->willReturn((object)['UID' => 'someid']);
+ $this->calendar->expects($this->once())
+ ->method('getPermissions')
+ ->willReturn(Constants::PERMISSION_ALL);
+
+ $backend->expects($this->once())
+ ->method('createFromString')
+ ->with('someid.ics', 'foo');
+ $calendarObject->put('foo');
+ }
+
+ public function testGet() {
+ $this->vobject->expects($this->once())
+ ->method('serialize')
+ ->willReturn('foo');
+ $this->assertEquals($this->calendarObject->get(), 'foo');
+ }
+
+ public function testDelete_notWriteable() {
+ $this->expectException(\Sabre\DAV\Exception\Forbidden::class);
+ $this->calendarObject->delete();
+ }
+
+ public function testDelete_noPermission() {
+ $backend = $this->createMock(ICreateFromString::class);
+ $calendarObject = new CalendarObject($this->calendar, $backend, $this->vobject);
+
+ $this->expectException(\Sabre\DAV\Exception\Forbidden::class);
+ $calendarObject->delete();
+ }
+
+ public function testDelete() {
+ $backend = $this->createMock(ICreateFromString::class);
+ $calendarObject = new CalendarObject($this->calendar, $backend, $this->vobject);
+
+ $components = [(new VCalendar(['VEVENT' => ['UID' => 'someid']]))->getBaseComponent()];
+
+ $this->calendar->expects($this->once())
+ ->method('getPermissions')
+ ->willReturn(Constants::PERMISSION_DELETE);
+ $this->vobject->expects($this->once())
+ ->method('getBaseComponents')
+ ->willReturn($components);
+ $this->vobject->expects($this->once())
+ ->method('getBaseComponent')
+ ->willReturn($components[0]);
+
+ $backend->expects($this->once())
+ ->method('createFromString')
+ ->with('someid.ics', self::callback(fn($data): bool => preg_match('/BEGIN:VEVENT(.|\r\n)+STATUS:CANCELLED/', $data) === 1));
+
+ $calendarObject->delete();
+ }
+
+ public function testGetName() {
+ $this->vobject->expects($this->exactly(2))
+ ->method('getBaseComponent')
+ ->willReturnOnConsecutiveCalls((object)['UID' => 'someid'], (object)['UID' => 'someid', 'X-FILENAME' => 'real-filename.ics']);
+
+ $this->assertEquals($this->calendarObject->getName(), 'someid.ics');
+ $this->assertEquals($this->calendarObject->getName(), 'real-filename.ics');
+ }
+
+ public function testSetName() {
+ $this->expectException(\Sabre\DAV\Exception\Forbidden::class);
+ $this->calendarObject->setName('Some name');
+ }
+}
diff --git a/apps/dav/tests/unit/Command/DeleteCalendarTest.php b/apps/dav/tests/unit/Command/DeleteCalendarTest.php
index dec349006ff..1c499dbcc25 100644
--- a/apps/dav/tests/unit/Command/DeleteCalendarTest.php
+++ b/apps/dav/tests/unit/Command/DeleteCalendarTest.php
@@ -25,7 +25,7 @@ declare(strict_types=1);
namespace OCA\DAV\Tests\Command;
use OCA\DAV\CalDAV\BirthdayService;
-use OCA\DAV\CalDav\CalDavBackend;
+use OCA\DAV\CalDAV\CalDavBackend;
use OCA\DAV\Command\DeleteCalendar;
use OCP\IConfig;
use OCP\IL10N;
diff --git a/apps/encryption/l10n/de.js b/apps/encryption/l10n/de.js
index 0822c0d6c21..b7ee8bee971 100644
--- a/apps/encryption/l10n/de.js
+++ b/apps/encryption/l10n/de.js
@@ -28,10 +28,15 @@ OC.L10N.register(
"Bad Signature" : "Ungültige Signatur",
"Missing Signature" : "Fehlende Signatur",
"one-time password for server-side-encryption" : "Einmal-Passwort für serverseitige Verschlüsselung",
+ "Encryption password" : "Verschlüsselungskennwort",
+ "The administration enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>." : "Die Administration hat die serverseitige Verschlüsselung aktiviert. Deine Dateien wurden mit dem Passwort <strong>%s</strong> verschlüsselt.",
+ "The administration enabled server-side-encryption. Your files were encrypted using the password \"%s\"." : "Die Administration hat die serverseitige Verschlüsselung aktiviert. Deine Dateien wurden mit dem Passwort \"%s\" verschlüsselt.",
+ "Please login to the web interface, go to the \"Security\" section of your personal settings and update your encryption password by entering this password into the \"Old log-in password\" field and your current login-password." : "Bitte melde dich an der Weboberfläche an, gehe zum Abschnitt \"Sicherheit\" deiner persönlichen Einstellungen und aktualisiere dein Verschlüsselungspasswort, indem du dieses Passwort in das Feld \"Altes Login-Passwort\" sowie dein aktuelles Login-Passwort eingibst.",
"Cannot decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Diese Datei kann nicht entschlüsselt werden, es handelt sich wahrscheinlich um eine geteilte Datei. Bitte kontaktiere den Eigentümer der Datei und bitte darum, die Datei noch einmal mit dir zu teilen.",
"Cannot read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Diese Datei kann nicht gelesen werden, es handelt sich wahrscheinlich um eine geteilte Datei. Bitte kontaktiere den Eigentümer der Datei und bitte darum, die Datei noch einmal mit dir zu teilen.",
"Default encryption module" : "Standard-Verschlüsselungsmodul",
"Default encryption module for server-side encryption" : "Standard-Verschlüsselungsmodul für serverseitige Verschlüsselung",
+ "In order to use this encryption module you need to enable server-side encryption in the admin settings. Once enabled this module will encrypt all your files transparently. The encryption is based on AES 256 keys.\nThe module will not touch existing files, only new files will be encrypted after server-side encryption was enabled. It is also not possible to disable the encryption again and switch back to an unencrypted system.\nPlease read the documentation to know all implications before you decide to enable server-side encryption." : "Um dieses Verschlüsselungsmodul nutzen zu können, musst du die serverseitige Verschlüsselung in den Administrationseinstellungen aktivieren. Sobald das Modul aktiviert ist, verschlüsselt es alle deine Dateien transparent. Die Verschlüsselung basiert auf AES-256-Schlüsseln.\nDas Modul ändert keine vorhandenen Dateien, nur neue Dateien werden verschlüsselt, nachdem die serverseitige Verschlüsselung aktiviert wurde. Es ist nicht möglich, die Verschlüsselung zu deaktivieren und wieder auf ein unverschlüsseltes System umzuschalten.\nBitte lese die Dokumentation, um alle Auswirkungen zu kennen, bevor du dich entscheidest, die serverseitige Verschlüsselung zu aktivieren.",
"Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Verschlüsselungs-App ist aktiviert, aber die Schlüssel sind noch nicht initialisiert. Bitte melde dich ab und wieder an",
"Encrypt the home storage" : "Benutzerverzeichnis verschlüsseln",
"Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Die Aktivierung dieser Option verschlüsselt alle Dateien die auf dem Hauptspeicher gespeichert sind, ansonsten werden nur Dateien auf dem externen Speicher verschlüsselt",
diff --git a/apps/encryption/l10n/de.json b/apps/encryption/l10n/de.json
index 502c1cdc223..152e557d8cf 100644
--- a/apps/encryption/l10n/de.json
+++ b/apps/encryption/l10n/de.json
@@ -26,10 +26,15 @@
"Bad Signature" : "Ungültige Signatur",
"Missing Signature" : "Fehlende Signatur",
"one-time password for server-side-encryption" : "Einmal-Passwort für serverseitige Verschlüsselung",
+ "Encryption password" : "Verschlüsselungskennwort",
+ "The administration enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>." : "Die Administration hat die serverseitige Verschlüsselung aktiviert. Deine Dateien wurden mit dem Passwort <strong>%s</strong> verschlüsselt.",
+ "The administration enabled server-side-encryption. Your files were encrypted using the password \"%s\"." : "Die Administration hat die serverseitige Verschlüsselung aktiviert. Deine Dateien wurden mit dem Passwort \"%s\" verschlüsselt.",
+ "Please login to the web interface, go to the \"Security\" section of your personal settings and update your encryption password by entering this password into the \"Old log-in password\" field and your current login-password." : "Bitte melde dich an der Weboberfläche an, gehe zum Abschnitt \"Sicherheit\" deiner persönlichen Einstellungen und aktualisiere dein Verschlüsselungspasswort, indem du dieses Passwort in das Feld \"Altes Login-Passwort\" sowie dein aktuelles Login-Passwort eingibst.",
"Cannot decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Diese Datei kann nicht entschlüsselt werden, es handelt sich wahrscheinlich um eine geteilte Datei. Bitte kontaktiere den Eigentümer der Datei und bitte darum, die Datei noch einmal mit dir zu teilen.",
"Cannot read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Diese Datei kann nicht gelesen werden, es handelt sich wahrscheinlich um eine geteilte Datei. Bitte kontaktiere den Eigentümer der Datei und bitte darum, die Datei noch einmal mit dir zu teilen.",
"Default encryption module" : "Standard-Verschlüsselungsmodul",
"Default encryption module for server-side encryption" : "Standard-Verschlüsselungsmodul für serverseitige Verschlüsselung",
+ "In order to use this encryption module you need to enable server-side encryption in the admin settings. Once enabled this module will encrypt all your files transparently. The encryption is based on AES 256 keys.\nThe module will not touch existing files, only new files will be encrypted after server-side encryption was enabled. It is also not possible to disable the encryption again and switch back to an unencrypted system.\nPlease read the documentation to know all implications before you decide to enable server-side encryption." : "Um dieses Verschlüsselungsmodul nutzen zu können, musst du die serverseitige Verschlüsselung in den Administrationseinstellungen aktivieren. Sobald das Modul aktiviert ist, verschlüsselt es alle deine Dateien transparent. Die Verschlüsselung basiert auf AES-256-Schlüsseln.\nDas Modul ändert keine vorhandenen Dateien, nur neue Dateien werden verschlüsselt, nachdem die serverseitige Verschlüsselung aktiviert wurde. Es ist nicht möglich, die Verschlüsselung zu deaktivieren und wieder auf ein unverschlüsseltes System umzuschalten.\nBitte lese die Dokumentation, um alle Auswirkungen zu kennen, bevor du dich entscheidest, die serverseitige Verschlüsselung zu aktivieren.",
"Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Verschlüsselungs-App ist aktiviert, aber die Schlüssel sind noch nicht initialisiert. Bitte melde dich ab und wieder an",
"Encrypt the home storage" : "Benutzerverzeichnis verschlüsseln",
"Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Die Aktivierung dieser Option verschlüsselt alle Dateien die auf dem Hauptspeicher gespeichert sind, ansonsten werden nur Dateien auf dem externen Speicher verschlüsselt",
diff --git a/apps/files/l10n/de.js b/apps/files/l10n/de.js
index 214ba6da364..a500572d235 100644
--- a/apps/files/l10n/de.js
+++ b/apps/files/l10n/de.js
@@ -166,7 +166,22 @@ OC.L10N.register(
"The ownership transfer of {path} from {user} has completed." : "Die Besitzübertragung von {path} durch {user} wurde fertiggestellt.",
"in %s" : "in %s",
"File Management" : "Dateiverwaltung",
+ "Reload current directory" : "Aktuelles Verzeichnis neu laden",
+ "Go to the \"{dir}\" directory" : "In das Verzeichnis \"{dir}“ wechseln",
+ "Select the row for {displayName}" : "Zeile für {displayName} auswählen",
+ "Open folder {name}" : "Ordner {name} öffnen",
+ "Download file {name}" : "Datei {name} herunterladen",
+ "\"{displayName}\" action executed successfully" : "Aktion \"{displayName}\" erfolgreich ausgeführt",
+ "\"{displayName}\" action failed" : "Aktion \"{displayName}\" fehlgeschlagen",
+ "Total rows summary" : "Zusammenfassung aller Zeilen",
"Select all" : "Alle auswählen",
+ "Unselect all" : "Auswahl aufheben",
+ "\"{displayName}\" failed on some elements " : "\"{displayName}\" ist bei einigen Elementen fehlgeschlagen",
+ "\"{displayName}\" batch action executed successfully" : "Stapelaktion \"{displayName}\" erfolgreich ausgeführt",
+ "ascending" : "Aufsteigend",
+ "descending" : "Absteigend",
+ "Sort list by {column} ({direction})" : "Liste sortieren nach {column} ({direction})",
+ "This list is not fully rendered for performances reasons. The files will be rendered as you navigate through the list." : "Diese Liste ist aus Performance-Gründen nicht vollständig gerendert. Die Dateien werden gerendert, wenn du durch die Liste navigierst.",
"Storage informations" : "Speicherinformationen",
"{usedQuotaByte} used" : "{usedQuotaByte} verwendet",
"{relative}% used" : "{relative}% verwendet",
@@ -175,6 +190,7 @@ OC.L10N.register(
"Choose file or folder to transfer" : "Datei oder Ordner zur Übertragung auswählen",
"Change" : "Ändern",
"New owner" : "Neuer Besitzer",
+ "Search for an account" : "Nach einem Konto suchen",
"Choose a file or folder to transfer" : "Datei oder Ordner zur Übertragung auswählen",
"Transfer" : "Übertragen",
"Transfer {path} to {userid}" : "Übertrage {path} an {userid}",
@@ -183,7 +199,10 @@ OC.L10N.register(
"Ownership transfer request sent" : "Anforderung für die Übertragung des Besitzes gesendet",
"Cannot transfer ownership of a file or folder you do not own" : "Der Besitz an einer Datei oder einem Ordner, der dir nicht gehört, kann nicht übertragen werden",
"Select file or folder to link to" : "Datei oder Ordner zum Verknüpfen auswählen",
+ "Loading current folder" : "Lade aktuellen Ordner",
"No files in here" : "Keine Dateien vorhanden",
+ "No files or folders have been deleted yet" : "Es wurden noch keine Dateien oder Ordner gelöscht",
+ "Go to the previous folder" : "Zum vorherigen Ordner wechseln",
"Go back" : "Zurückgehen",
"Open the files app settings" : "Einstellungen der Dateien-App öffnen",
"Files settings" : "Dateien-Einstellungen",
diff --git a/apps/files/l10n/de.json b/apps/files/l10n/de.json
index 45486daf05a..54e391f0556 100644
--- a/apps/files/l10n/de.json
+++ b/apps/files/l10n/de.json
@@ -164,7 +164,22 @@
"The ownership transfer of {path} from {user} has completed." : "Die Besitzübertragung von {path} durch {user} wurde fertiggestellt.",
"in %s" : "in %s",
"File Management" : "Dateiverwaltung",
+ "Reload current directory" : "Aktuelles Verzeichnis neu laden",
+ "Go to the \"{dir}\" directory" : "In das Verzeichnis \"{dir}“ wechseln",
+ "Select the row for {displayName}" : "Zeile für {displayName} auswählen",
+ "Open folder {name}" : "Ordner {name} öffnen",
+ "Download file {name}" : "Datei {name} herunterladen",
+ "\"{displayName}\" action executed successfully" : "Aktion \"{displayName}\" erfolgreich ausgeführt",
+ "\"{displayName}\" action failed" : "Aktion \"{displayName}\" fehlgeschlagen",
+ "Total rows summary" : "Zusammenfassung aller Zeilen",
"Select all" : "Alle auswählen",
+ "Unselect all" : "Auswahl aufheben",
+ "\"{displayName}\" failed on some elements " : "\"{displayName}\" ist bei einigen Elementen fehlgeschlagen",
+ "\"{displayName}\" batch action executed successfully" : "Stapelaktion \"{displayName}\" erfolgreich ausgeführt",
+ "ascending" : "Aufsteigend",
+ "descending" : "Absteigend",
+ "Sort list by {column} ({direction})" : "Liste sortieren nach {column} ({direction})",
+ "This list is not fully rendered for performances reasons. The files will be rendered as you navigate through the list." : "Diese Liste ist aus Performance-Gründen nicht vollständig gerendert. Die Dateien werden gerendert, wenn du durch die Liste navigierst.",
"Storage informations" : "Speicherinformationen",
"{usedQuotaByte} used" : "{usedQuotaByte} verwendet",
"{relative}% used" : "{relative}% verwendet",
@@ -173,6 +188,7 @@
"Choose file or folder to transfer" : "Datei oder Ordner zur Übertragung auswählen",
"Change" : "Ändern",
"New owner" : "Neuer Besitzer",
+ "Search for an account" : "Nach einem Konto suchen",
"Choose a file or folder to transfer" : "Datei oder Ordner zur Übertragung auswählen",
"Transfer" : "Übertragen",
"Transfer {path} to {userid}" : "Übertrage {path} an {userid}",
@@ -181,7 +197,10 @@
"Ownership transfer request sent" : "Anforderung für die Übertragung des Besitzes gesendet",
"Cannot transfer ownership of a file or folder you do not own" : "Der Besitz an einer Datei oder einem Ordner, der dir nicht gehört, kann nicht übertragen werden",
"Select file or folder to link to" : "Datei oder Ordner zum Verknüpfen auswählen",
+ "Loading current folder" : "Lade aktuellen Ordner",
"No files in here" : "Keine Dateien vorhanden",
+ "No files or folders have been deleted yet" : "Es wurden noch keine Dateien oder Ordner gelöscht",
+ "Go to the previous folder" : "Zum vorherigen Ordner wechseln",
"Go back" : "Zurückgehen",
"Open the files app settings" : "Einstellungen der Dateien-App öffnen",
"Files settings" : "Dateien-Einstellungen",
diff --git a/apps/files/src/views/ReferenceFileWidget.vue b/apps/files/src/views/ReferenceFileWidget.vue
index f0ac7007312..7634994a30d 100644
--- a/apps/files/src/views/ReferenceFileWidget.vue
+++ b/apps/files/src/views/ReferenceFileWidget.vue
@@ -115,7 +115,7 @@ export default {
OCA.Viewer.open({ path: this.richObject.path })
return
}
- window.location = generateUrl('/f/' + this.id)
+ window.location = this.richObject.link
},
},
}
diff --git a/apps/files_external/js/settings.js b/apps/files_external/js/settings.js
index d3e9fd44c0d..db77fe4dfc1 100644
--- a/apps/files_external/js/settings.js
+++ b/apps/files_external/js/settings.js
@@ -698,7 +698,7 @@ MountConfigListView.prototype = _.extend({
* Trigger callback for all existing configurations
*/
whenSelectBackend: function(callback) {
- this.$el.find('tbody tr:not(#addMountPoint)').each(function(i, tr) {
+ this.$el.find('tbody tr:not(#addMountPoint):not(.externalStorageLoading)').each(function(i, tr) {
var backend = $(tr).find('.backend').data('identifier');
callback($(tr), backend);
});
@@ -706,7 +706,7 @@ MountConfigListView.prototype = _.extend({
},
whenSelectAuthMechanism: function(callback) {
var self = this;
- this.$el.find('tbody tr:not(#addMountPoint)').each(function(i, tr) {
+ this.$el.find('tbody tr:not(#addMountPoint):not(.externalStorageLoading)').each(function(i, tr) {
var authMechanism = $(tr).find('.selectAuthMechanism').val();
callback($(tr), authMechanism, self._allAuthMechanisms[authMechanism]['scheme']);
});
diff --git a/apps/files_sharing/l10n/cs.js b/apps/files_sharing/l10n/cs.js
index c1f05508ebd..b35e1aa8309 100644
--- a/apps/files_sharing/l10n/cs.js
+++ b/apps/files_sharing/l10n/cs.js
@@ -120,6 +120,7 @@ OC.L10N.register(
"You cannot share to a Circle if the app is not enabled" : "Do okruhu nemůžete sdílet, pokud není aplikace zapnuta",
"Please specify a valid circle" : "Zadejte platný okruh",
"Sharing %s failed because the back end does not support room shares" : "Sdílení %s se nezdařilo protože podpůrná vrstva nepodporuje sdílení místností",
+ "Sharing %s failed because the back end does not support ScienceMesh shares" : "Sdílení %s se nezdařilo protože podpůrná vrstva nepodporuje ScienceMesh sdílení",
"Unknown share type" : "Neznámý typ sdílení",
"Not a directory" : "Není adresář",
"Could not lock node" : "Uzel se nedaří uzamknout",
@@ -225,6 +226,7 @@ OC.L10N.register(
"Circle" : "Okruh",
"Talk conversation" : "Konverzace v Talk",
"Deck board" : "Tabule aplikace Deck",
+ "ScienceMesh" : "ScienceMesh",
"on {server}" : "na {server}",
"Others with access" : "Ostatní, kteří mají přístup",
"No other users with access found" : "Nenalezeni žádní další uživatelé, kteří mají přístup",
diff --git a/apps/files_sharing/l10n/cs.json b/apps/files_sharing/l10n/cs.json
index 3cad2fefb63..81950e1b477 100644
--- a/apps/files_sharing/l10n/cs.json
+++ b/apps/files_sharing/l10n/cs.json
@@ -118,6 +118,7 @@
"You cannot share to a Circle if the app is not enabled" : "Do okruhu nemůžete sdílet, pokud není aplikace zapnuta",
"Please specify a valid circle" : "Zadejte platný okruh",
"Sharing %s failed because the back end does not support room shares" : "Sdílení %s se nezdařilo protože podpůrná vrstva nepodporuje sdílení místností",
+ "Sharing %s failed because the back end does not support ScienceMesh shares" : "Sdílení %s se nezdařilo protože podpůrná vrstva nepodporuje ScienceMesh sdílení",
"Unknown share type" : "Neznámý typ sdílení",
"Not a directory" : "Není adresář",
"Could not lock node" : "Uzel se nedaří uzamknout",
@@ -223,6 +224,7 @@
"Circle" : "Okruh",
"Talk conversation" : "Konverzace v Talk",
"Deck board" : "Tabule aplikace Deck",
+ "ScienceMesh" : "ScienceMesh",
"on {server}" : "na {server}",
"Others with access" : "Ostatní, kteří mají přístup",
"No other users with access found" : "Nenalezeni žádní další uživatelé, kteří mají přístup",
diff --git a/apps/files_sharing/l10n/de.js b/apps/files_sharing/l10n/de.js
index 714199944b0..ebfbbffef8c 100644
--- a/apps/files_sharing/l10n/de.js
+++ b/apps/files_sharing/l10n/de.js
@@ -120,6 +120,7 @@ OC.L10N.register(
"You cannot share to a Circle if the app is not enabled" : "Du kannst nichts mit einem Kreis teilen, wenn die App nicht aktiviert ist",
"Please specify a valid circle" : "Bitte gib einen gültigen Kreis an",
"Sharing %s failed because the back end does not support room shares" : "Freigabe von %s fehlgeschlagen, da das Backend die Freigabe von Räumen nicht unterstützt",
+ "Sharing %s failed because the back end does not support ScienceMesh shares" : "Freigabe von %s fehlgeschlagen, da das Backend keine ScienceMesh-Freigaben unterstützt",
"Unknown share type" : "Unbekannter Freigabetyp",
"Not a directory" : "Kein Verzeichnis",
"Could not lock node" : "Node konnte nicht gesperrt werden",
@@ -225,6 +226,7 @@ OC.L10N.register(
"Circle" : "Kreis",
"Talk conversation" : "Talk-Unterhaltung",
"Deck board" : "Deck-Board",
+ "ScienceMesh" : "ScienceMesh",
"on {server}" : "auf {server}",
"Others with access" : "Andere mit Zugriff",
"No other users with access found" : "Keine anderen Benutzer mit Zugriff gefunden",
diff --git a/apps/files_sharing/l10n/de.json b/apps/files_sharing/l10n/de.json
index f063ca03cb3..ea343b44212 100644
--- a/apps/files_sharing/l10n/de.json
+++ b/apps/files_sharing/l10n/de.json
@@ -118,6 +118,7 @@
"You cannot share to a Circle if the app is not enabled" : "Du kannst nichts mit einem Kreis teilen, wenn die App nicht aktiviert ist",
"Please specify a valid circle" : "Bitte gib einen gültigen Kreis an",
"Sharing %s failed because the back end does not support room shares" : "Freigabe von %s fehlgeschlagen, da das Backend die Freigabe von Räumen nicht unterstützt",
+ "Sharing %s failed because the back end does not support ScienceMesh shares" : "Freigabe von %s fehlgeschlagen, da das Backend keine ScienceMesh-Freigaben unterstützt",
"Unknown share type" : "Unbekannter Freigabetyp",
"Not a directory" : "Kein Verzeichnis",
"Could not lock node" : "Node konnte nicht gesperrt werden",
@@ -223,6 +224,7 @@
"Circle" : "Kreis",
"Talk conversation" : "Talk-Unterhaltung",
"Deck board" : "Deck-Board",
+ "ScienceMesh" : "ScienceMesh",
"on {server}" : "auf {server}",
"Others with access" : "Andere mit Zugriff",
"No other users with access found" : "Keine anderen Benutzer mit Zugriff gefunden",
diff --git a/apps/files_trashbin/l10n/de.js b/apps/files_trashbin/l10n/de.js
index 471d52b33f9..d1913f449c7 100644
--- a/apps/files_trashbin/l10n/de.js
+++ b/apps/files_trashbin/l10n/de.js
@@ -7,6 +7,7 @@ OC.L10N.register(
"This application enables users to restore files that were deleted from the system." : "Diese App ermöglicht es Benutzern Dateien die vom System gelöscht wurden wiederherzustellen.",
"This application enables users to restore files that were deleted from the system. It displays a list of deleted files in the web interface, and has options to restore those deleted files back to the users file directories or remove them permanently from the system. Restoring a file also restores related file versions, if the versions application is enabled. When a file is deleted from a share, it can be restored in the same manner, though it is no longer shared. By default, these files remain in the trash bin for 30 days.\nTo prevent a user from running out of disk space, the Deleted files app will not utilize more than 50% of the currently available free quota for deleted files. If the deleted files exceed this limit, the app deletes the oldest files until it gets below this limit. More information is available in the Deleted Files documentation." : "Diese Anwendung ermöglicht es Benutzern, gelöschte Dateien wieder herzustellen. In der Web-Oberfläche wird eine Liste mit allen gelöschten Dateien angezeigt. Es besteht die Möglichkeit die Datein im Dateiverzeichnisse des Benutzers wieder herzustelle, oder diese endgültig zu löschen. Bei der Wiederherstellung einer Datei werden, sofern die Versions Anwendung aktiviert ist, die dazugehörigen Dateiversionen ebenfalls wieder hergestellt. Falls eine geteilte Datei gelöscht wurde, kann diese ebenfals wieder hergestellt werden, jedoch ist diese danach nicht mehr geteilt. Normalerweise verbleiben gelöschte Dateien für 30 Tage im Papierkorb .\nUm zu verhindern, dass einem Benutzer der Speicherplatz ausgeht, nutzt die Anwendung maximal 50% des verfügbaren freien Kontingents für gelöschte Dateien. Sofern die gelöschten Dateien dieses Limit überschreiten, werden zunächst die ältesten Dateien gelöscht, bis das Limit unterschritten wird. Mehr Informationen sind in der Dokumentation verfügbar.",
"Restore" : "Wiederherstellen",
+ "List of files that have been deleted." : "Liste der gelöschten Dateien.",
"Deleted" : "gelöscht",
"No deleted files" : "Keine gelöschten Dateien",
"You will be able to recover deleted files from here" : "Hier können gelöschte Dateien wiederhergestellt werden",
diff --git a/apps/files_trashbin/l10n/de.json b/apps/files_trashbin/l10n/de.json
index 9086ac1f5d8..ba46b6bdd70 100644
--- a/apps/files_trashbin/l10n/de.json
+++ b/apps/files_trashbin/l10n/de.json
@@ -5,6 +5,7 @@
"This application enables users to restore files that were deleted from the system." : "Diese App ermöglicht es Benutzern Dateien die vom System gelöscht wurden wiederherzustellen.",
"This application enables users to restore files that were deleted from the system. It displays a list of deleted files in the web interface, and has options to restore those deleted files back to the users file directories or remove them permanently from the system. Restoring a file also restores related file versions, if the versions application is enabled. When a file is deleted from a share, it can be restored in the same manner, though it is no longer shared. By default, these files remain in the trash bin for 30 days.\nTo prevent a user from running out of disk space, the Deleted files app will not utilize more than 50% of the currently available free quota for deleted files. If the deleted files exceed this limit, the app deletes the oldest files until it gets below this limit. More information is available in the Deleted Files documentation." : "Diese Anwendung ermöglicht es Benutzern, gelöschte Dateien wieder herzustellen. In der Web-Oberfläche wird eine Liste mit allen gelöschten Dateien angezeigt. Es besteht die Möglichkeit die Datein im Dateiverzeichnisse des Benutzers wieder herzustelle, oder diese endgültig zu löschen. Bei der Wiederherstellung einer Datei werden, sofern die Versions Anwendung aktiviert ist, die dazugehörigen Dateiversionen ebenfalls wieder hergestellt. Falls eine geteilte Datei gelöscht wurde, kann diese ebenfals wieder hergestellt werden, jedoch ist diese danach nicht mehr geteilt. Normalerweise verbleiben gelöschte Dateien für 30 Tage im Papierkorb .\nUm zu verhindern, dass einem Benutzer der Speicherplatz ausgeht, nutzt die Anwendung maximal 50% des verfügbaren freien Kontingents für gelöschte Dateien. Sofern die gelöschten Dateien dieses Limit überschreiten, werden zunächst die ältesten Dateien gelöscht, bis das Limit unterschritten wird. Mehr Informationen sind in der Dokumentation verfügbar.",
"Restore" : "Wiederherstellen",
+ "List of files that have been deleted." : "Liste der gelöschten Dateien.",
"Deleted" : "gelöscht",
"No deleted files" : "Keine gelöschten Dateien",
"You will be able to recover deleted files from here" : "Hier können gelöschte Dateien wiederhergestellt werden",
diff --git a/apps/settings/l10n/de.js b/apps/settings/l10n/de.js
index 0ce81835701..f692daa1b4a 100644
--- a/apps/settings/l10n/de.js
+++ b/apps/settings/l10n/de.js
@@ -268,10 +268,12 @@ OC.L10N.register(
"Current password" : "Aktuelles Passwort",
"New password" : "Neues Passwort",
"Change password" : "Passwort ändern",
+ "Your profile information" : "Ihre Profilinformation",
"Your profile picture" : "Dein Profilbild",
"Upload profile picture" : "Profilbild hochladen",
"Choose profile picture from Files" : "Profilbild aus Dateien wählen",
"Remove profile picture" : "Profilbild entfernen",
+ "The file must be a PNG or JPG" : "Die Datei muss im PNG- oder JPG-Format sein",
"Picture provided by original account" : "Bild von Original-Konto zur Verfügung gestellt",
"Cancel" : "Abbrechen",
"Set as profile picture" : "Als Profilbild festlegen",
diff --git a/apps/settings/l10n/de.json b/apps/settings/l10n/de.json
index 6080126fd3a..42a888f941e 100644
--- a/apps/settings/l10n/de.json
+++ b/apps/settings/l10n/de.json
@@ -266,10 +266,12 @@
"Current password" : "Aktuelles Passwort",
"New password" : "Neues Passwort",
"Change password" : "Passwort ändern",
+ "Your profile information" : "Ihre Profilinformation",
"Your profile picture" : "Dein Profilbild",
"Upload profile picture" : "Profilbild hochladen",
"Choose profile picture from Files" : "Profilbild aus Dateien wählen",
"Remove profile picture" : "Profilbild entfernen",
+ "The file must be a PNG or JPG" : "Die Datei muss im PNG- oder JPG-Format sein",
"Picture provided by original account" : "Bild von Original-Konto zur Verfügung gestellt",
"Cancel" : "Abbrechen",
"Set as profile picture" : "Als Profilbild festlegen",
diff --git a/apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue b/apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue
index ad58ff282eb..d5d57c47c01 100644
--- a/apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue
+++ b/apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue
@@ -27,7 +27,7 @@
:close-after-click="true"
:disabled="!isSupportedScope"
:icon="iconClass"
- :title="isSupportedScope ? tooltip : tooltipDisabled"
+ :title="displayName"
@click.stop.prevent="updateScope">
{{ isSupportedScope ? tooltip : tooltipDisabled }}
</NcActionButton>
diff --git a/apps/systemtags/l10n/de.js b/apps/systemtags/l10n/de.js
index 944dff3a54b..2fe24c8f5b6 100644
--- a/apps/systemtags/l10n/de.js
+++ b/apps/systemtags/l10n/de.js
@@ -48,7 +48,16 @@ OC.L10N.register(
"Collaborative tags" : "Kollaborative Tags",
"Collaborative tagging functionality which shares tags among users." : "Kollaborative Tags Schlagwort-Funktionalität, welche Schlagworte unter den Benutzern teilt.",
"Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "Gemeinschaftliche Schlagwort-Funktionalität, welche Schlagworte unter den Benutzern teilt. Sehr gut für Gruppen.\n(Wenn du ein Anbieter mit einer Mehrkundeninstallation bist, so ist angeraten diese App zu deaktiveren, da die Schlagworte mit allen Kunden geteilt werden.)",
+ "Search or create collaborative tags" : "Suchen oder erstellen von kollaborativen Schlagworten",
+ "Collaborative tags …" : "Kollaborative Schlagworte ...",
+ "No tags to select, type to create a new tag" : "Keine Schlagworte zur Auswahl, gebe ein, um ein neues Schlagwort zu erstellen",
"Failed to load tags" : "Schlagworte konnten nicht geladen werden",
+ "Failed to load selected tags" : "Ausgewählte Schlagworte konnten nicht geladen werden",
+ "Failed to select tag" : "Schlagwort konnte nicht ausgewählt werden",
+ "Failed to create tag" : "Schlagwort konnte nicht erstellt werden",
+ "Failed to delete tag" : "Fehler beim Löschen des Schlagwortes",
+ "Failed to load last used tags" : "Zuletzt verwendete Schlagworte konnten nicht geladen werden",
+ "Missing \"Content-Location\" header" : "Fehlender \"Content-Location\"-Header",
"Tagged files" : "Mit Tags versehene Dateien",
"Select tags to filter by" : "Wähle Tags nach denen gefilter werden soll",
"No tags found" : "Keine Tags gefunden",
diff --git a/apps/systemtags/l10n/de.json b/apps/systemtags/l10n/de.json
index a1b94350393..c5947bd3483 100644
--- a/apps/systemtags/l10n/de.json
+++ b/apps/systemtags/l10n/de.json
@@ -46,7 +46,16 @@
"Collaborative tags" : "Kollaborative Tags",
"Collaborative tagging functionality which shares tags among users." : "Kollaborative Tags Schlagwort-Funktionalität, welche Schlagworte unter den Benutzern teilt.",
"Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "Gemeinschaftliche Schlagwort-Funktionalität, welche Schlagworte unter den Benutzern teilt. Sehr gut für Gruppen.\n(Wenn du ein Anbieter mit einer Mehrkundeninstallation bist, so ist angeraten diese App zu deaktiveren, da die Schlagworte mit allen Kunden geteilt werden.)",
+ "Search or create collaborative tags" : "Suchen oder erstellen von kollaborativen Schlagworten",
+ "Collaborative tags …" : "Kollaborative Schlagworte ...",
+ "No tags to select, type to create a new tag" : "Keine Schlagworte zur Auswahl, gebe ein, um ein neues Schlagwort zu erstellen",
"Failed to load tags" : "Schlagworte konnten nicht geladen werden",
+ "Failed to load selected tags" : "Ausgewählte Schlagworte konnten nicht geladen werden",
+ "Failed to select tag" : "Schlagwort konnte nicht ausgewählt werden",
+ "Failed to create tag" : "Schlagwort konnte nicht erstellt werden",
+ "Failed to delete tag" : "Fehler beim Löschen des Schlagwortes",
+ "Failed to load last used tags" : "Zuletzt verwendete Schlagworte konnten nicht geladen werden",
+ "Missing \"Content-Location\" header" : "Fehlender \"Content-Location\"-Header",
"Tagged files" : "Mit Tags versehene Dateien",
"Select tags to filter by" : "Wähle Tags nach denen gefilter werden soll",
"No tags found" : "Keine Tags gefunden",
diff --git a/apps/updatenotification/l10n/de.js b/apps/updatenotification/l10n/de.js
index 6ca2c753f76..9d34126f367 100644
--- a/apps/updatenotification/l10n/de.js
+++ b/apps/updatenotification/l10n/de.js
@@ -29,6 +29,7 @@ OC.L10N.register(
"Update channel:" : "Update-Kanal:",
"You can always update to a newer version. But you can never downgrade to a more stable version." : "Es kann immer auf eine neuere Version aktualisiert werden. Jedoch kann kein Downgrade auf eine stabilere Version erfolgen. ",
"Notify members of the following groups about available updates:" : "Informiere die Mitglieder der folgenden Gruppen über verfügbare Updates:",
+ "No groups" : "Keine Gruppen",
"Only notifications for app updates are available." : "Benachrichtigungen sind nur für Aktualisierungen von Apps verfügbar.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Der gewählte Aktualisierungskanal macht dedizierte Benachrichtigungen für Server Aktualisierungen obsolet.",
"The selected update channel does not support updates of the server." : "Der gewählte Aktualisierungskanal unterstützt keine Aktualisierungen für Server.",
diff --git a/apps/updatenotification/l10n/de.json b/apps/updatenotification/l10n/de.json
index 092f58953fc..ad011ea4362 100644
--- a/apps/updatenotification/l10n/de.json
+++ b/apps/updatenotification/l10n/de.json
@@ -27,6 +27,7 @@
"Update channel:" : "Update-Kanal:",
"You can always update to a newer version. But you can never downgrade to a more stable version." : "Es kann immer auf eine neuere Version aktualisiert werden. Jedoch kann kein Downgrade auf eine stabilere Version erfolgen. ",
"Notify members of the following groups about available updates:" : "Informiere die Mitglieder der folgenden Gruppen über verfügbare Updates:",
+ "No groups" : "Keine Gruppen",
"Only notifications for app updates are available." : "Benachrichtigungen sind nur für Aktualisierungen von Apps verfügbar.",
"The selected update channel makes dedicated notifications for the server obsolete." : "Der gewählte Aktualisierungskanal macht dedizierte Benachrichtigungen für Server Aktualisierungen obsolet.",
"The selected update channel does not support updates of the server." : "Der gewählte Aktualisierungskanal unterstützt keine Aktualisierungen für Server.",
diff --git a/apps/user_ldap/l10n/de.js b/apps/user_ldap/l10n/de.js
index c4cd0eae870..6bbef46b224 100644
--- a/apps/user_ldap/l10n/de.js
+++ b/apps/user_ldap/l10n/de.js
@@ -183,6 +183,25 @@ OC.L10N.register(
"Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "Ohne Eingabe wird der Benutzername (Standard) verwendet. Anderenfalls trage ein LDAP/AD-Attribut ein.",
"\"$home\" Placeholder Field" : "\"$home\" Platzhalter-Feld",
"$home in an external storage configuration will be replaced with the value of the specified attribute" : "$home in der Konfiguration eines extern angeschlossenen Speichers wird mit dem Wert des angegebenen Attributs ersetzt",
+ "User Profile Attributes" : "Benutzerprofilattribute",
+ "Phone Field" : "Telefonfeld",
+ "User profile Phone will be set from the specified attribute" : "Benutzerprofil Telefon wird aus dem angegebenen Attribut festgelegt",
+ "Website Field" : "Webseiten-Feld",
+ "User profile Website will be set from the specified attribute" : "Benutzerprofil Webseite wird aus dem angegebenen Attribut festgelegt",
+ "Address Field" : "Adressfeld",
+ "User profile Address will be set from the specified attribute" : "Benutzerprofil Adresse wird aus dem angegebenen Attribut festgelegt",
+ "Twitter Field" : "Twitter-Feld",
+ "User profile Twitter will be set from the specified attribute" : "Benutzerprofil Twitter wird aus dem angegebenen Attribut festgelegt",
+ "Fediverse Field" : "Fediverse-Feld",
+ "User profile Fediverse will be set from the specified attribute" : "Benutzerprofil Fediverse wird aus dem angegebenen Attribut festgelegt",
+ "Organisation Field" : "Organisationsfeld",
+ "User profile Organisation will be set from the specified attribute" : "Benutzerprofil Organisation wird aus dem angegebenen Attribut festgelegt",
+ "Role Field" : "Rollenfeld",
+ "User profile Role will be set from the specified attribute" : "Benutzerprofil Rolle wird anhand des angegebenen Attributs festgelegt\n ",
+ "Headline Field" : "Überschriftenfeld",
+ "User profile Headline will be set from the specified attribute" : "Benutzerprofil Überschrift wird aus dem angegebenen Attribut festgelegt",
+ "Biography Field" : "Biografisches Feld",
+ "User profile Biography will be set from the specified attribute" : "Benutzerprofil Biografie wird aus dem angegebenen Attribut festgelegt",
"Internal Username" : "Interner Benutzername",
"By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [a-zA-Z0-9_.@-]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all DAV services. With this setting, the default behavior can be overridden. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "Standardmäßig wird der interne Benutzername aus dem UUID-Attribut erstellt. So wird sichergestellt, dass der Benutzername einmalig ist und Zeichen nicht konvertiert werden müssen. Für den internen Benutzernamen sind nur folgende Zeichen zulässig: [a-zA-Z0-9_.@-]. Andere Zeichen werden durch ihre ASCII-Entsprechung ersetzt oder einfach weggelassen. Bei Kollisionen wird eine Nummer hinzugefügt/erhöht. Der interne Benutzername wird verwendet, um den Benutzer intern zu identifizieren. Er ist außerdem der Standardname für den Stamm-Ordner des Benutzers. Darüber hinaus ist er Teil der URLs für den Zugriff, zum Beispiel für alle DAV-Dienste. Mit dieser Einstellung kann das Standardverhalten geändert werden. Änderungen wirken sich nur auf neu eingetragene (hinzugefügte) LDAP-Benutzer aus. Für die Standardeinstellung lasse das Eingabefeld leer.",
"Internal Username Attribute:" : "Attribut für interne Benutzernamen:",
diff --git a/apps/user_ldap/l10n/de.json b/apps/user_ldap/l10n/de.json
index 1070e4dadf1..4fe9c38fe2b 100644
--- a/apps/user_ldap/l10n/de.json
+++ b/apps/user_ldap/l10n/de.json
@@ -181,6 +181,25 @@
"Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "Ohne Eingabe wird der Benutzername (Standard) verwendet. Anderenfalls trage ein LDAP/AD-Attribut ein.",
"\"$home\" Placeholder Field" : "\"$home\" Platzhalter-Feld",
"$home in an external storage configuration will be replaced with the value of the specified attribute" : "$home in der Konfiguration eines extern angeschlossenen Speichers wird mit dem Wert des angegebenen Attributs ersetzt",
+ "User Profile Attributes" : "Benutzerprofilattribute",
+ "Phone Field" : "Telefonfeld",
+ "User profile Phone will be set from the specified attribute" : "Benutzerprofil Telefon wird aus dem angegebenen Attribut festgelegt",
+ "Website Field" : "Webseiten-Feld",
+ "User profile Website will be set from the specified attribute" : "Benutzerprofil Webseite wird aus dem angegebenen Attribut festgelegt",
+ "Address Field" : "Adressfeld",
+ "User profile Address will be set from the specified attribute" : "Benutzerprofil Adresse wird aus dem angegebenen Attribut festgelegt",
+ "Twitter Field" : "Twitter-Feld",
+ "User profile Twitter will be set from the specified attribute" : "Benutzerprofil Twitter wird aus dem angegebenen Attribut festgelegt",
+ "Fediverse Field" : "Fediverse-Feld",
+ "User profile Fediverse will be set from the specified attribute" : "Benutzerprofil Fediverse wird aus dem angegebenen Attribut festgelegt",
+ "Organisation Field" : "Organisationsfeld",
+ "User profile Organisation will be set from the specified attribute" : "Benutzerprofil Organisation wird aus dem angegebenen Attribut festgelegt",
+ "Role Field" : "Rollenfeld",
+ "User profile Role will be set from the specified attribute" : "Benutzerprofil Rolle wird anhand des angegebenen Attributs festgelegt\n ",
+ "Headline Field" : "Überschriftenfeld",
+ "User profile Headline will be set from the specified attribute" : "Benutzerprofil Überschrift wird aus dem angegebenen Attribut festgelegt",
+ "Biography Field" : "Biografisches Feld",
+ "User profile Biography will be set from the specified attribute" : "Benutzerprofil Biografie wird aus dem angegebenen Attribut festgelegt",
"Internal Username" : "Interner Benutzername",
"By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [a-zA-Z0-9_.@-]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all DAV services. With this setting, the default behavior can be overridden. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "Standardmäßig wird der interne Benutzername aus dem UUID-Attribut erstellt. So wird sichergestellt, dass der Benutzername einmalig ist und Zeichen nicht konvertiert werden müssen. Für den internen Benutzernamen sind nur folgende Zeichen zulässig: [a-zA-Z0-9_.@-]. Andere Zeichen werden durch ihre ASCII-Entsprechung ersetzt oder einfach weggelassen. Bei Kollisionen wird eine Nummer hinzugefügt/erhöht. Der interne Benutzername wird verwendet, um den Benutzer intern zu identifizieren. Er ist außerdem der Standardname für den Stamm-Ordner des Benutzers. Darüber hinaus ist er Teil der URLs für den Zugriff, zum Beispiel für alle DAV-Dienste. Mit dieser Einstellung kann das Standardverhalten geändert werden. Änderungen wirken sich nur auf neu eingetragene (hinzugefügte) LDAP-Benutzer aus. Für die Standardeinstellung lasse das Eingabefeld leer.",
"Internal Username Attribute:" : "Attribut für interne Benutzernamen:",
diff --git a/apps/user_status/l10n/cs.js b/apps/user_status/l10n/cs.js
index b29a26c9743..4849b1682ec 100644
--- a/apps/user_status/l10n/cs.js
+++ b/apps/user_status/l10n/cs.js
@@ -12,6 +12,7 @@ OC.L10N.register(
"View profile" : "Zobrazit profil ",
"Clear status after" : "Vyčistit stav po uplynutí",
"What is your status?" : "Jaký je váš stav?",
+ "Previously set" : "Dříve nastavené",
"Set status" : "Nastavit stav",
"Online status" : "Stav online",
"Status message" : "Stavová zpráva",
@@ -19,6 +20,7 @@ OC.L10N.register(
"Set status message" : "Nastavit stavovou zprávu",
"There was an error saving the status" : "Došlo k chybě při ukládání stavu",
"There was an error clearing the status" : "Při čištění stavu došlo k chybě",
+ "There was an error reverting the status" : "Při vracení stavu nazpět došlo k chybě",
"No recent status changes" : "Žádné nedávné změny stavu",
"Away" : "Pryč",
"Do not disturb" : "Nerušit",
diff --git a/apps/user_status/l10n/cs.json b/apps/user_status/l10n/cs.json
index 53df7e74ada..16331053d55 100644
--- a/apps/user_status/l10n/cs.json
+++ b/apps/user_status/l10n/cs.json
@@ -10,6 +10,7 @@
"View profile" : "Zobrazit profil ",
"Clear status after" : "Vyčistit stav po uplynutí",
"What is your status?" : "Jaký je váš stav?",
+ "Previously set" : "Dříve nastavené",
"Set status" : "Nastavit stav",
"Online status" : "Stav online",
"Status message" : "Stavová zpráva",
@@ -17,6 +18,7 @@
"Set status message" : "Nastavit stavovou zprávu",
"There was an error saving the status" : "Došlo k chybě při ukládání stavu",
"There was an error clearing the status" : "Při čištění stavu došlo k chybě",
+ "There was an error reverting the status" : "Při vracení stavu nazpět došlo k chybě",
"No recent status changes" : "Žádné nedávné změny stavu",
"Away" : "Pryč",
"Do not disturb" : "Nerušit",
diff --git a/apps/user_status/l10n/de.js b/apps/user_status/l10n/de.js
index 88b2f32e616..85215eced22 100644
--- a/apps/user_status/l10n/de.js
+++ b/apps/user_status/l10n/de.js
@@ -12,13 +12,20 @@ OC.L10N.register(
"View profile" : "Profil ansehen",
"Clear status after" : "Status löschen nach",
"What is your status?" : "Wie ist dein Status?",
+ "Previously set" : "Zuvor eingestellt",
+ "Reset status" : "Status zurücksetzen",
"Set status" : "Status setzen",
"Online status" : "Online-Status",
"Status message" : "Statusnachricht",
+ "Your status was set automatically" : "Dein Status wurde automatisch gesetzt",
"Clear status message" : "Statusnachricht löschen",
"Set status message" : "Statusnachricht setzen",
+ "Reset status to \"{icon} {message}\"" : "Status auf \"{icon} {message}\" zurücksetzen",
+ "Reset status to \"{message}\"" : "Status auf \"{message}\" zurücksetzen",
+ "Reset status to \"{icon}\"" : "Status auf \"{icon}\" zurücksetzen",
"There was an error saving the status" : "Es gab einen Fehler beim Speichern des Status",
"There was an error clearing the status" : "Es gab einen Fehler beim Löschen des Status",
+ "There was an error reverting the status" : "Es ist ein Fehler beim Zurücksetzen des Status aufgetreten",
"No recent status changes" : "Keine kürzlichen Statusänderungen",
"Away" : "Abwesend",
"Do not disturb" : "Bitte nicht stören",
diff --git a/apps/user_status/l10n/de.json b/apps/user_status/l10n/de.json
index cda177d1adc..239437df1a1 100644
--- a/apps/user_status/l10n/de.json
+++ b/apps/user_status/l10n/de.json
@@ -10,13 +10,20 @@
"View profile" : "Profil ansehen",
"Clear status after" : "Status löschen nach",
"What is your status?" : "Wie ist dein Status?",
+ "Previously set" : "Zuvor eingestellt",
+ "Reset status" : "Status zurücksetzen",
"Set status" : "Status setzen",
"Online status" : "Online-Status",
"Status message" : "Statusnachricht",
+ "Your status was set automatically" : "Dein Status wurde automatisch gesetzt",
"Clear status message" : "Statusnachricht löschen",
"Set status message" : "Statusnachricht setzen",
+ "Reset status to \"{icon} {message}\"" : "Status auf \"{icon} {message}\" zurücksetzen",
+ "Reset status to \"{message}\"" : "Status auf \"{message}\" zurücksetzen",
+ "Reset status to \"{icon}\"" : "Status auf \"{icon}\" zurücksetzen",
"There was an error saving the status" : "Es gab einen Fehler beim Speichern des Status",
"There was an error clearing the status" : "Es gab einen Fehler beim Löschen des Status",
+ "There was an error reverting the status" : "Es ist ein Fehler beim Zurücksetzen des Status aufgetreten",
"No recent status changes" : "Keine kürzlichen Statusänderungen",
"Away" : "Abwesend",
"Do not disturb" : "Bitte nicht stören",
diff --git a/core/l10n/cs.js b/core/l10n/cs.js
index 761fbb373da..dc91b21c5c5 100644
--- a/core/l10n/cs.js
+++ b/core/l10n/cs.js
@@ -205,6 +205,7 @@ OC.L10N.register(
"Load more results" : "Načíst další výsledky",
"Search" : "Hledat",
"No results for {query}" : "Pro {query} nic nenalezeno",
+ "Press Enter to start searching" : "Vyhledávání zahájíte stisknutím klávesy Enter",
"An error occurred while searching for {type}" : "Došlo k chybě při hledání pro {type}",
"_Please enter {minSearchLength} character or more to search_::_Please enter {minSearchLength} characters or more to search_" : ["Aby bylo možné vyhledávat, zadejte alespoň {minSearchLength} znak","Aby bylo možné vyhledávat, zadejte alespoň {minSearchLength} znaky","Aby bylo možné vyhledávat, zadejte alespoň {minSearchLength} znaků","Aby bylo možné vyhledávat, zadejte alespoň {minSearchLength} znaky"],
"This browser is not supported" : "Tento prohlížeč není podporován",
diff --git a/core/l10n/cs.json b/core/l10n/cs.json
index 90f11b077c9..6f0291bd77d 100644
--- a/core/l10n/cs.json
+++ b/core/l10n/cs.json
@@ -203,6 +203,7 @@
"Load more results" : "Načíst další výsledky",
"Search" : "Hledat",
"No results for {query}" : "Pro {query} nic nenalezeno",
+ "Press Enter to start searching" : "Vyhledávání zahájíte stisknutím klávesy Enter",
"An error occurred while searching for {type}" : "Došlo k chybě při hledání pro {type}",
"_Please enter {minSearchLength} character or more to search_::_Please enter {minSearchLength} characters or more to search_" : ["Aby bylo možné vyhledávat, zadejte alespoň {minSearchLength} znak","Aby bylo možné vyhledávat, zadejte alespoň {minSearchLength} znaky","Aby bylo možné vyhledávat, zadejte alespoň {minSearchLength} znaků","Aby bylo možné vyhledávat, zadejte alespoň {minSearchLength} znaky"],
"This browser is not supported" : "Tento prohlížeč není podporován",
diff --git a/core/l10n/de.js b/core/l10n/de.js
index 627ef1793fe..485600e42b7 100644
--- a/core/l10n/de.js
+++ b/core/l10n/de.js
@@ -39,6 +39,9 @@ OC.L10N.register(
"Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "Klicke zum Zurücksetzen des Passworts auf die folgende Schaltfläche. Wenn du das Zurücksetzen des Passworts nicht angefordert hast, ignoriere diese E-Mail.",
"Click the following link to reset your password. If you have not requested the password reset, then ignore this email." : "Klicke zum Zurücksetzen des Passworts auf den folgenden Link. Wenn du das Zurücksetzen des Passworts nicht angefordert hast, ignoriere diese E-Mail.",
"Reset your password" : "Setze dein Passwort zurück",
+ "No translation provider available" : "Kein Übersetzungsanbieter verfügbar",
+ "Could not detect language" : "Sprache konnte nicht erkannt werden",
+ "Unable to translate" : "Kann nicht übersetzt werden",
"Nextcloud Server" : "Nextcloud-Server",
"Some of your link shares have been removed" : "Einige der geteilten Freigaben wurden entfernt",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Aufgrund eines Sicherheitsfehlers mussten einige der geteilten Freigaben entfernt werden. Weitere Informationen im Link.",
@@ -78,6 +81,7 @@ OC.L10N.register(
"Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Deine Datenbank läuft nicht mit der Transaktionsisolationsstufe \"READ COMMITED\". Dies kann Probleme hervorrufen, wenn mehrere Aktionen parallel ausgeführt werden.",
"The PHP module \"fileinfo\" is missing. It is strongly recommended to enable this module to get the best results with MIME type detection." : "Das PHP-Modul 'fileinfo' fehlt. Es empfiehlt sich dringend, das Modul zu aktivieren, um bestmögliche Ergebnisse bei der MIME-Dateityp-Erkennung zu erhalten. ",
"Transactional file locking is disabled, this might lead to issues with race conditions. Enable \"filelocking.enabled\" in config.php to avoid these problems. See the {linkstart}documentation ↗{linkend} for more information." : "Transaktionales Sperren ist deaktiviert, was zu Problemen mit Laufzeitbedingungen führen kann. Aktiviere 'filelocking.enabled' in der config.php, um diese Probleme zu vermeiden. Weitere Informationen findest du in unserer {linkstart}Documentation ↗{linkend}.",
+ "The database is used for transactional file locking. To enhance performance, please configure memcache, if available. See the {linkstart}documentation ↗{linkend} for more information." : "Die Datenbank wird zum Sperren von Transaktionsdateien verwendet. Um die Leistung zu verbessern, richte bitte, sofern verfügbar, Memcache ein. Weitere Informationen findest du in der {linkstart}Dokumentation ↗{linkend}.",
"Please make sure to set the \"overwrite.cli.url\" option in your config.php file to the URL that your users mainly use to access this Nextcloud. Suggestion: \"{suggestedOverwriteCliURL}\". Otherwise there might be problems with the URL generation via cron. (It is possible though that the suggested URL is not the URL that your users mainly use to access this Nextcloud. Best is to double check this in any case.)" : "Bitte stelle sicher, dass du die Option „overwrite.cli.url“ in deiner config.php-Datei auf die URL setzt, die deine Benutzer hauptsächlich verwenden, um auf diese Nextcloud zuzugreifen. Vorschlag: \"{suggestedOverwriteCliURL}\". Andernfalls kann es zu Problemen bei der URL-Generierung per Cron kommen. (Es ist jedoch möglich, dass die vorgeschlagene URL nicht die URL ist, die deine Benutzer hauptsächlich verwenden, um auf diese Nextcloud zuzugreifen. Am besten überprüfst du dies in jedem Fall.)",
"Your installation has no default phone region set. This is required to validate phone numbers in the profile settings without a country code. To allow numbers without a country code, please add \"default_phone_region\" with the respective {linkstart}ISO 3166-1 code ↗{linkend} of the region to your config file." : "Für deine Installation ist keine Standard-Telefonregion festgelegt. Dies ist erforderlich, um Telefonnummern in den Profileinstellungen ohne Ländercode überprüfen zu können. Um Nummern ohne Ländercode zuzulassen, füge bitte \"default_phone_region\" mit dem entsprechenden {linkstart}ISO 3166-1-Code ↗{linkend} der gewünschten Region hinzu.",
"It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "Die Ausführung des Cron-Jobs über die Kommandozeile war nicht möglich. Die folgenden technischen Fehler sind dabei aufgetreten: ",
@@ -87,6 +91,7 @@ OC.L10N.register(
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Es wurde kein PHP Memory Cache konfiguriert. Konfiguriere zur Erhöhung der Leistungsfähigkeit, soweit verfügbar, einen Memory Cache. Weitere Informationen findest du in unserer {linkstart}Dokumentation ↗{linkend}.",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Von PHP wurde keine geeignete Quelle für Zufälligkeit gefunden, aus Sicht der Sicherheit ist dies bedenklich. Weitere Informationen sind in der {linkstart}Dokumentation ↗{linkend} zu finden.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Du verwendest im Moment PHP {version}. Wir empfehlen ein Upgrade deiner PHP Version, um die {linkstart}Geschwindigkeits- und Sicherheitsupdates zu nutzen, welche von der PHP Gruppe bereitgestellt werden↗{linkend}, sobald Deine Distribution diese unterstützt.",
+ "PHP 8.0 is now deprecated in Nextcloud 27. Nextcloud 28 may require at least PHP 8.1. Please upgrade to {linkstart}one of the officially supported PHP versions provided by the PHP Group ↗{linkend} as soon as possible." : "PHP 8.0 ist jetzt in Nextcloud 27 veraltet. Nextcloud 28 erfordert möglicherweise mindestens PHP 8.1. Bitte aktualisiere so bald wie möglich auf {linkstart}eine der offiziell unterstützten PHP-Versionen, die von der PHP-Gruppe ↗{linkend} bereitgestellt werden.",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Die Reverse-Proxy-Header-Konfiguration ist fehlerhaft oder du greifst auf Nextcloud über einen vertrauenswürdigen Proxy zu. Ist dies nicht der Fall, dann besteht ein Sicherheitsproblem, das einem Angreifer erlaubt, die IP-Adresse, die für Nextcloud sichtbar ist, auszuspähen. Weitere Informationen hierzu finden sich in der {linkstart}Dokumentation ↗{linkend}.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "Memcached ist als distributed cache konfiguriert aber das falsche PHP-Modul \"memcache\" ist installiert. \\OC\\Memcache\\Memcached unterstützt nur \"memcached\" jedoch nicht \"memcache\". Im {linkstart}memcached wiki nach beiden Modulen suchen ↗{linkend}.",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "Manche Dateien haben die Integritätsprüfung nicht bestanden. Weitere Informationen um den Fehler zu beheben findest du in unserer {linkstart1}Dokumentation↗{linkend}. ({linkstart2}Liste der ungültigen Dateien …{linkend} / {linkstart3}Erneut scannen…{linkend})",
@@ -161,6 +166,7 @@ OC.L10N.register(
"Your connection is not secure" : "Deine Verbindung ist nicht sicher",
"Passwordless authentication is only available over a secure connection." : "Anmeldung ohne Passwort ist nur über eine sichere Verbindung möglich",
"Reset password" : "Passwort zurücksetzen",
+ "If this account exists, a password reset message has been sent to its email address. If you do not receive it, verify your email address and/or account name, check your spam/junk folders or ask your local administration for help." : "Sofern dieses Konto existiert, wurde eine Nachricht zum Zurücksetzen des Passworts die hinterlegte E-Mail-Adresse gesendet. Wenn du diese E-Mail nicht erhältst, überprüfen deine E-Mail-Adresse und/oder deinen Kontonamen sowie deinen Spam-/Junk-Ordner oder bitte deine lokale Administration um Hilfe.",
"Couldn't send reset email. Please contact your administrator." : "Die E-Mail zum Zurücksetzen konnte nicht gesendet werden. Bitte kontaktiere deinen Administrator.",
"Password cannot be changed. Please contact your administrator." : "Passwort kann nicht geändert werden. Bitte wende dich an deinen Administrator.",
"Back to login" : "Zur Anmeldung wechseln",
@@ -202,6 +208,7 @@ OC.L10N.register(
"Load more results" : "Weitere Ergebnisse laden",
"Search" : "Suche",
"No results for {query}" : "Keine Suchergebnisse zu {query}",
+ "Press Enter to start searching" : "Zum Suchen EIngabetaste drücken",
"An error occurred while searching for {type}" : "Es ist ein Fehler beim Suchen nach {type} aufgetreten",
"_Please enter {minSearchLength} character or more to search_::_Please enter {minSearchLength} characters or more to search_" : ["Bitte gebe {minSearchLength} Zeichen oder mehr ein nach denen gesucht werden soll","Bitte gebe {minSearchLength} Zeichen oder mehr ein nach denen gesucht werden soll"],
"This browser is not supported" : "Dieser Browser wird nicht unterstützt.",
diff --git a/core/l10n/de.json b/core/l10n/de.json
index 2fe8494cc40..c0fb1cbc987 100644
--- a/core/l10n/de.json
+++ b/core/l10n/de.json
@@ -37,6 +37,9 @@
"Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "Klicke zum Zurücksetzen des Passworts auf die folgende Schaltfläche. Wenn du das Zurücksetzen des Passworts nicht angefordert hast, ignoriere diese E-Mail.",
"Click the following link to reset your password. If you have not requested the password reset, then ignore this email." : "Klicke zum Zurücksetzen des Passworts auf den folgenden Link. Wenn du das Zurücksetzen des Passworts nicht angefordert hast, ignoriere diese E-Mail.",
"Reset your password" : "Setze dein Passwort zurück",
+ "No translation provider available" : "Kein Übersetzungsanbieter verfügbar",
+ "Could not detect language" : "Sprache konnte nicht erkannt werden",
+ "Unable to translate" : "Kann nicht übersetzt werden",
"Nextcloud Server" : "Nextcloud-Server",
"Some of your link shares have been removed" : "Einige der geteilten Freigaben wurden entfernt",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Aufgrund eines Sicherheitsfehlers mussten einige der geteilten Freigaben entfernt werden. Weitere Informationen im Link.",
@@ -76,6 +79,7 @@
"Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Deine Datenbank läuft nicht mit der Transaktionsisolationsstufe \"READ COMMITED\". Dies kann Probleme hervorrufen, wenn mehrere Aktionen parallel ausgeführt werden.",
"The PHP module \"fileinfo\" is missing. It is strongly recommended to enable this module to get the best results with MIME type detection." : "Das PHP-Modul 'fileinfo' fehlt. Es empfiehlt sich dringend, das Modul zu aktivieren, um bestmögliche Ergebnisse bei der MIME-Dateityp-Erkennung zu erhalten. ",
"Transactional file locking is disabled, this might lead to issues with race conditions. Enable \"filelocking.enabled\" in config.php to avoid these problems. See the {linkstart}documentation ↗{linkend} for more information." : "Transaktionales Sperren ist deaktiviert, was zu Problemen mit Laufzeitbedingungen führen kann. Aktiviere 'filelocking.enabled' in der config.php, um diese Probleme zu vermeiden. Weitere Informationen findest du in unserer {linkstart}Documentation ↗{linkend}.",
+ "The database is used for transactional file locking. To enhance performance, please configure memcache, if available. See the {linkstart}documentation ↗{linkend} for more information." : "Die Datenbank wird zum Sperren von Transaktionsdateien verwendet. Um die Leistung zu verbessern, richte bitte, sofern verfügbar, Memcache ein. Weitere Informationen findest du in der {linkstart}Dokumentation ↗{linkend}.",
"Please make sure to set the \"overwrite.cli.url\" option in your config.php file to the URL that your users mainly use to access this Nextcloud. Suggestion: \"{suggestedOverwriteCliURL}\". Otherwise there might be problems with the URL generation via cron. (It is possible though that the suggested URL is not the URL that your users mainly use to access this Nextcloud. Best is to double check this in any case.)" : "Bitte stelle sicher, dass du die Option „overwrite.cli.url“ in deiner config.php-Datei auf die URL setzt, die deine Benutzer hauptsächlich verwenden, um auf diese Nextcloud zuzugreifen. Vorschlag: \"{suggestedOverwriteCliURL}\". Andernfalls kann es zu Problemen bei der URL-Generierung per Cron kommen. (Es ist jedoch möglich, dass die vorgeschlagene URL nicht die URL ist, die deine Benutzer hauptsächlich verwenden, um auf diese Nextcloud zuzugreifen. Am besten überprüfst du dies in jedem Fall.)",
"Your installation has no default phone region set. This is required to validate phone numbers in the profile settings without a country code. To allow numbers without a country code, please add \"default_phone_region\" with the respective {linkstart}ISO 3166-1 code ↗{linkend} of the region to your config file." : "Für deine Installation ist keine Standard-Telefonregion festgelegt. Dies ist erforderlich, um Telefonnummern in den Profileinstellungen ohne Ländercode überprüfen zu können. Um Nummern ohne Ländercode zuzulassen, füge bitte \"default_phone_region\" mit dem entsprechenden {linkstart}ISO 3166-1-Code ↗{linkend} der gewünschten Region hinzu.",
"It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "Die Ausführung des Cron-Jobs über die Kommandozeile war nicht möglich. Die folgenden technischen Fehler sind dabei aufgetreten: ",
@@ -85,6 +89,7 @@
"No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Es wurde kein PHP Memory Cache konfiguriert. Konfiguriere zur Erhöhung der Leistungsfähigkeit, soweit verfügbar, einen Memory Cache. Weitere Informationen findest du in unserer {linkstart}Dokumentation ↗{linkend}.",
"No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Von PHP wurde keine geeignete Quelle für Zufälligkeit gefunden, aus Sicht der Sicherheit ist dies bedenklich. Weitere Informationen sind in der {linkstart}Dokumentation ↗{linkend} zu finden.",
"You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Du verwendest im Moment PHP {version}. Wir empfehlen ein Upgrade deiner PHP Version, um die {linkstart}Geschwindigkeits- und Sicherheitsupdates zu nutzen, welche von der PHP Gruppe bereitgestellt werden↗{linkend}, sobald Deine Distribution diese unterstützt.",
+ "PHP 8.0 is now deprecated in Nextcloud 27. Nextcloud 28 may require at least PHP 8.1. Please upgrade to {linkstart}one of the officially supported PHP versions provided by the PHP Group ↗{linkend} as soon as possible." : "PHP 8.0 ist jetzt in Nextcloud 27 veraltet. Nextcloud 28 erfordert möglicherweise mindestens PHP 8.1. Bitte aktualisiere so bald wie möglich auf {linkstart}eine der offiziell unterstützten PHP-Versionen, die von der PHP-Gruppe ↗{linkend} bereitgestellt werden.",
"The reverse proxy header configuration is incorrect, or you are accessing Nextcloud from a trusted proxy. If not, this is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Die Reverse-Proxy-Header-Konfiguration ist fehlerhaft oder du greifst auf Nextcloud über einen vertrauenswürdigen Proxy zu. Ist dies nicht der Fall, dann besteht ein Sicherheitsproblem, das einem Angreifer erlaubt, die IP-Adresse, die für Nextcloud sichtbar ist, auszuspähen. Weitere Informationen hierzu finden sich in der {linkstart}Dokumentation ↗{linkend}.",
"Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the {linkstart}memcached wiki about both modules ↗{linkend}." : "Memcached ist als distributed cache konfiguriert aber das falsche PHP-Modul \"memcache\" ist installiert. \\OC\\Memcache\\Memcached unterstützt nur \"memcached\" jedoch nicht \"memcache\". Im {linkstart}memcached wiki nach beiden Modulen suchen ↗{linkend}.",
"Some files have not passed the integrity check. Further information on how to resolve this issue can be found in the {linkstart1}documentation ↗{linkend}. ({linkstart2}List of invalid files…{linkend} / {linkstart3}Rescan…{linkend})" : "Manche Dateien haben die Integritätsprüfung nicht bestanden. Weitere Informationen um den Fehler zu beheben findest du in unserer {linkstart1}Dokumentation↗{linkend}. ({linkstart2}Liste der ungültigen Dateien …{linkend} / {linkstart3}Erneut scannen…{linkend})",
@@ -159,6 +164,7 @@
"Your connection is not secure" : "Deine Verbindung ist nicht sicher",
"Passwordless authentication is only available over a secure connection." : "Anmeldung ohne Passwort ist nur über eine sichere Verbindung möglich",
"Reset password" : "Passwort zurücksetzen",
+ "If this account exists, a password reset message has been sent to its email address. If you do not receive it, verify your email address and/or account name, check your spam/junk folders or ask your local administration for help." : "Sofern dieses Konto existiert, wurde eine Nachricht zum Zurücksetzen des Passworts die hinterlegte E-Mail-Adresse gesendet. Wenn du diese E-Mail nicht erhältst, überprüfen deine E-Mail-Adresse und/oder deinen Kontonamen sowie deinen Spam-/Junk-Ordner oder bitte deine lokale Administration um Hilfe.",
"Couldn't send reset email. Please contact your administrator." : "Die E-Mail zum Zurücksetzen konnte nicht gesendet werden. Bitte kontaktiere deinen Administrator.",
"Password cannot be changed. Please contact your administrator." : "Passwort kann nicht geändert werden. Bitte wende dich an deinen Administrator.",
"Back to login" : "Zur Anmeldung wechseln",
@@ -200,6 +206,7 @@
"Load more results" : "Weitere Ergebnisse laden",
"Search" : "Suche",
"No results for {query}" : "Keine Suchergebnisse zu {query}",
+ "Press Enter to start searching" : "Zum Suchen EIngabetaste drücken",
"An error occurred while searching for {type}" : "Es ist ein Fehler beim Suchen nach {type} aufgetreten",
"_Please enter {minSearchLength} character or more to search_::_Please enter {minSearchLength} characters or more to search_" : ["Bitte gebe {minSearchLength} Zeichen oder mehr ein nach denen gesucht werden soll","Bitte gebe {minSearchLength} Zeichen oder mehr ein nach denen gesucht werden soll"],
"This browser is not supported" : "Dieser Browser wird nicht unterstützt.",
diff --git a/core/l10n/de_DE.js b/core/l10n/de_DE.js
index 2f2e24b3a66..6d4d78313f1 100644
--- a/core/l10n/de_DE.js
+++ b/core/l10n/de_DE.js
@@ -166,7 +166,7 @@ OC.L10N.register(
"Your connection is not secure" : "Ihre Verbindung ist nicht sicher",
"Passwordless authentication is only available over a secure connection." : "Anmeldung ohne Passwort ist nur über eine sichere Verbindung möglich",
"Reset password" : "Passwort zurücksetzen",
- "If this account exists, a password reset message has been sent to its email address. If you do not receive it, verify your email address and/or account name, check your spam/junk folders or ask your local administration for help." : "Wenn dieses Konto existiert, wurde eine Nachricht zum Zurücksetzen des Passworts an seine E-Mail-Adresse gesendet. Wenn Sie es nicht erhalten, überprüfen Sie Ihre E-Mail-Adresse und/oder Ihren Kontonamen, überprüfen Sie Ihre Spam-/Junk-Ordner oder bitten Sie Ihre lokale Verwaltung um Hilfe.",
+ "If this account exists, a password reset message has been sent to its email address. If you do not receive it, verify your email address and/or account name, check your spam/junk folders or ask your local administration for help." : "Sofern dieses Konto existiert, wurde eine Nachricht zum Zurücksetzen des Passworts die hinterlegte E-Mail-Adresse gesendet. Wenn Sie diese E-Mail nicht erhalten, überprüfen Sie Ihre E-Mail-Adresse und/oder Ihren Kontonamen sowie Ihren Spam-/Junk-Ordner oder bitten Sie Ihre lokale Administration um Hilfe.",
"Couldn't send reset email. Please contact your administrator." : "Die E-Mail zum Zurücksetzen konnte nicht versendet werden. Bitte kontaktieren Sie Ihre Administration.",
"Password cannot be changed. Please contact your administrator." : "Passwort kann nicht geändert werden. Bitte kontaktieren Sie Ihren Administrator.",
"Back to login" : "Zurück zur Anmeldung",
diff --git a/core/l10n/de_DE.json b/core/l10n/de_DE.json
index 01de83065b7..f0c69e45dae 100644
--- a/core/l10n/de_DE.json
+++ b/core/l10n/de_DE.json
@@ -164,7 +164,7 @@
"Your connection is not secure" : "Ihre Verbindung ist nicht sicher",
"Passwordless authentication is only available over a secure connection." : "Anmeldung ohne Passwort ist nur über eine sichere Verbindung möglich",
"Reset password" : "Passwort zurücksetzen",
- "If this account exists, a password reset message has been sent to its email address. If you do not receive it, verify your email address and/or account name, check your spam/junk folders or ask your local administration for help." : "Wenn dieses Konto existiert, wurde eine Nachricht zum Zurücksetzen des Passworts an seine E-Mail-Adresse gesendet. Wenn Sie es nicht erhalten, überprüfen Sie Ihre E-Mail-Adresse und/oder Ihren Kontonamen, überprüfen Sie Ihre Spam-/Junk-Ordner oder bitten Sie Ihre lokale Verwaltung um Hilfe.",
+ "If this account exists, a password reset message has been sent to its email address. If you do not receive it, verify your email address and/or account name, check your spam/junk folders or ask your local administration for help." : "Sofern dieses Konto existiert, wurde eine Nachricht zum Zurücksetzen des Passworts die hinterlegte E-Mail-Adresse gesendet. Wenn Sie diese E-Mail nicht erhalten, überprüfen Sie Ihre E-Mail-Adresse und/oder Ihren Kontonamen sowie Ihren Spam-/Junk-Ordner oder bitten Sie Ihre lokale Administration um Hilfe.",
"Couldn't send reset email. Please contact your administrator." : "Die E-Mail zum Zurücksetzen konnte nicht versendet werden. Bitte kontaktieren Sie Ihre Administration.",
"Password cannot be changed. Please contact your administrator." : "Passwort kann nicht geändert werden. Bitte kontaktieren Sie Ihren Administrator.",
"Back to login" : "Zurück zur Anmeldung",
diff --git a/core/l10n/pl.js b/core/l10n/pl.js
index 35a620cd6a2..6d9606906f7 100644
--- a/core/l10n/pl.js
+++ b/core/l10n/pl.js
@@ -39,6 +39,9 @@ OC.L10N.register(
"Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "Kliknij w przycisk, aby zresetować hasło. Jeśli nie zażądałeś zresetowania hasła, zignoruj tego e-maila.",
"Click the following link to reset your password. If you have not requested the password reset, then ignore this email." : "Kliknij poniższy link, aby zresetować hasło. Jeśli nie zażądałeś zresetowania hasła, zignoruj tego e-maila.",
"Reset your password" : "Zresetuj hasło",
+ "No translation provider available" : "Brak dostępnych dostawców tłumaczenia",
+ "Could not detect language" : "Nie można wykryć języka",
+ "Unable to translate" : "Nie można przetłumaczyć",
"Nextcloud Server" : "Serwer Nextcloud",
"Some of your link shares have been removed" : "Niektóre udostępnienia linków zostały usunięte",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Ze względu na błąd bezpieczeństwa musieliśmy usunąć część Twoich udostępnień linków. Zobacz link, aby uzyskać więcej informacji.",
@@ -202,6 +205,7 @@ OC.L10N.register(
"Load more results" : "Wczytaj więcej wyników",
"Search" : "Szukaj",
"No results for {query}" : "Brak wyników dla {query}",
+ "Press Enter to start searching" : "Naciśnij Enter, aby rozpocząć wyszukiwanie",
"An error occurred while searching for {type}" : "Wystąpił błąd podczas wyszukiwania {type}",
"_Please enter {minSearchLength} character or more to search_::_Please enter {minSearchLength} characters or more to search_" : ["Aby wyszukać, wprowadź co najmniej {minSearchLength} znak","Aby wyszukać, wprowadź co najmniej {minSearchLength} znaki","Aby wyszukać, wprowadź co najmniej {minSearchLength} znaków","Aby wyszukać, wprowadź co najmniej {minSearchLength} znaków"],
"This browser is not supported" : "Ta przeglądarka nie jest obsługiwana",
diff --git a/core/l10n/pl.json b/core/l10n/pl.json
index 6fe57599140..5b458db429a 100644
--- a/core/l10n/pl.json
+++ b/core/l10n/pl.json
@@ -37,6 +37,9 @@
"Click the following button to reset your password. If you have not requested the password reset, then ignore this email." : "Kliknij w przycisk, aby zresetować hasło. Jeśli nie zażądałeś zresetowania hasła, zignoruj tego e-maila.",
"Click the following link to reset your password. If you have not requested the password reset, then ignore this email." : "Kliknij poniższy link, aby zresetować hasło. Jeśli nie zażądałeś zresetowania hasła, zignoruj tego e-maila.",
"Reset your password" : "Zresetuj hasło",
+ "No translation provider available" : "Brak dostępnych dostawców tłumaczenia",
+ "Could not detect language" : "Nie można wykryć języka",
+ "Unable to translate" : "Nie można przetłumaczyć",
"Nextcloud Server" : "Serwer Nextcloud",
"Some of your link shares have been removed" : "Niektóre udostępnienia linków zostały usunięte",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Ze względu na błąd bezpieczeństwa musieliśmy usunąć część Twoich udostępnień linków. Zobacz link, aby uzyskać więcej informacji.",
@@ -200,6 +203,7 @@
"Load more results" : "Wczytaj więcej wyników",
"Search" : "Szukaj",
"No results for {query}" : "Brak wyników dla {query}",
+ "Press Enter to start searching" : "Naciśnij Enter, aby rozpocząć wyszukiwanie",
"An error occurred while searching for {type}" : "Wystąpił błąd podczas wyszukiwania {type}",
"_Please enter {minSearchLength} character or more to search_::_Please enter {minSearchLength} characters or more to search_" : ["Aby wyszukać, wprowadź co najmniej {minSearchLength} znak","Aby wyszukać, wprowadź co najmniej {minSearchLength} znaki","Aby wyszukać, wprowadź co najmniej {minSearchLength} znaków","Aby wyszukać, wprowadź co najmniej {minSearchLength} znaków"],
"This browser is not supported" : "Ta przeglądarka nie jest obsługiwana",
diff --git a/core/src/components/setup/RecommendedApps.vue b/core/src/components/setup/RecommendedApps.vue
index 984a6800475..472c011c762 100644
--- a/core/src/components/setup/RecommendedApps.vue
+++ b/core/src/components/setup/RecommendedApps.vue
@@ -59,8 +59,7 @@
<NcButton v-if="showInstallButton"
type="tertiary"
role="link"
- href="defaultPageUrl"
- @click="goTo(defaultPageUrl)">
+ :href="defaultPageUrl">
{{ t('core', 'Skip') }}
</NcButton>
@@ -115,7 +114,6 @@ const recommended = {
},
}
const recommendedIds = Object.keys(recommended)
-const defaultPageUrl = loadState('core', 'defaultPageUrl')
export default {
name: 'RecommendedApps',
@@ -129,7 +127,7 @@ export default {
loadingApps: true,
loadingAppsError: false,
apps: [],
- defaultPageUrl,
+ defaultPageUrl: loadState('core', 'defaultPageUrl')
}
},
computed: {
@@ -180,7 +178,7 @@ export default {
.then(() => {
logger.info('all recommended apps installed, redirecting …')
- window.location = defaultPageUrl
+ window.location = this.defaultPageUrl
})
.catch(error => logger.error('could not install recommended apps', { error }))
},
@@ -210,9 +208,6 @@ export default {
}
return !!recommended[appId].hidden
},
- goTo(href) {
- window.location.href = href
- },
},
}
</script>
diff --git a/core/templates/404.php b/core/templates/404.php
index fcfc7cc1ef8..4cce2434d64 100644
--- a/core/templates/404.php
+++ b/core/templates/404.php
@@ -18,7 +18,7 @@ if (!isset($_)) {//standalone page is not supported anymore - redirect to /
<div class="body-login-container update">
<div class="icon-big icon-search"></div>
<h2><?php p($l->t('Page not found')); ?></h2>
- <p class="infogroup"><?php p($l->t('The page could not be found on the server.')); ?></p>
+ <p class="infogroup"><?php p($l->t('The page could not be found on the server or you may not be allowed to view it.')); ?></p>
<p><a class="button primary" href="<?php p(\OC::$server->getURLGenerator()->linkTo('', 'index.php')) ?>">
<?php p($l->t('Back to %s', [$theme->getName()])); ?>
</a></p>
diff --git a/dist/core-recommendedapps.js b/dist/core-recommendedapps.js
index bd84797ee0a..1cd149a3266 100644
--- a/dist/core-recommendedapps.js
+++ b/dist/core-recommendedapps.js
@@ -1,3 +1,3 @@
/*! For license information please see core-recommendedapps.js.LICENSE.txt */
-(()=>{"use strict";var t,n={13421:(t,n,e)=>{var a=e(45994),o=e(31352),i=e(20144),s=e(17499);const r=null===(c=(0,a.ts)())?(0,s.IY)().setApp("core").build():(0,s.IY)().setApp("core").setUid(c.uid).build();var c,l=e(4820),p=e(79753),d=e(79954),u=e(63560),g=e(10861),m=e.n(g);const f={calendar:{description:(0,o.Iu)("core","Schedule work & meetings, synced with all your devices."),icon:(0,p.imagePath)("core","places/calendar.svg")},contacts:{description:(0,o.Iu)("core","Keep your colleagues and friends in one place without leaking their private info."),icon:(0,p.imagePath)("core","places/contacts.svg")},mail:{description:(0,o.Iu)("core","Simple email app nicely integrated with Files, Contacts and Calendar."),icon:(0,p.imagePath)("core","actions/mail.svg")},spreed:{description:(0,o.Iu)("core","Chatting, video calls, screensharing, online meetings and web conferencing – in your browser and with mobile apps."),icon:(0,p.imagePath)("core","apps/spreed.svg")},richdocuments:{name:"Nextcloud Office",description:(0,o.Iu)("core","Collaborative documents, spreadsheets and presentations, built on Collabora Online."),icon:(0,p.imagePath)("core","apps/richdocuments.svg")},notes:{description:(0,o.Iu)("core","Distraction free note taking app."),icon:(0,p.imagePath)("core","apps/notes.svg")},richdocumentscode:{hidden:!0}},A=Object.keys(f),h=(0,d.j)("core","defaultPageUrl"),v={name:"RecommendedApps",components:{NcButton:m()},data:()=>({showInstallButton:!1,installingApps:!1,loadingApps:!0,loadingAppsError:!1,apps:[],defaultPageUrl:h}),computed:{recommendedApps(){return this.apps.filter((t=>A.includes(t.id)))}},async mounted(){try{const{data:t}=await l.default.get((0,p.generateUrl)("settings/apps/list"));r.info("".concat(t.apps.length," apps fetched")),this.apps=t.apps.map((t=>Object.assign(t,{loading:!1,installationError:!1}))),r.debug("".concat(this.recommendedApps.length," recommended apps found"),{apps:this.recommendedApps}),this.showInstallButton=!0}catch(t){r.error("could not fetch app list",{error:t}),this.loadingAppsError=!0}finally{this.loadingApps=!1}},methods:{installApps(){this.showInstallButton=!1,this.installingApps=!0;const t=(0,u.Z)(1),n=this.recommendedApps.filter((t=>!t.active&&t.isCompatible&&t.canInstall)).map((n=>t((()=>(r.info("installing ".concat(n.id)),n.loading=!0,l.default.post((0,p.generateUrl)("settings/apps/enable"),{appIds:[n.id],groups:[]}).catch((t=>{r.error("could not install ".concat(n.id),{error:t}),n.installationError=!0})).then((()=>{r.info("installed ".concat(n.id)),n.loading=!1})))))));r.debug("installing ".concat(n.length," recommended apps")),Promise.all(n).then((()=>{r.info("all recommended apps installed, redirecting …"),window.location=h})).catch((t=>r.error("could not install recommended apps",{error:t})))},customIcon:t=>t in f&&f[t].icon?f[t].icon:(r.warn("no app icon for recommended app ".concat(t)),(0,p.imagePath)("core","places/default-app-icon.svg")),customName:t=>t.id in f&&f[t.id].name||t.name,customDescription:t=>t in f?f[t].description:(r.warn("no app description for recommended app ".concat(t)),""),isHidden:t=>t in f&&!!f[t].hidden,goTo(t){window.location.href=t}}};var C=e(93379),b=e.n(C),_=e(7795),y=e.n(_),w=e(90569),x=e.n(w),I=e(3565),k=e.n(I),P=e(19216),B=e.n(P),O=e(44589),j=e.n(O),D=e(33887),E={};E.styleTagTransform=j(),E.setAttributes=k(),E.insert=x().bind(null,"head"),E.domAPI=y(),E.insertStyleElement=B(),b()(D.Z,E),D.Z&&D.Z.locals&&D.Z.locals;const S=(0,e(51900).Z)(v,(function(){var t=this,n=t._self._c;return n("div",{staticClass:"guest-box"},[n("h2",[t._v(t._s(t.t("core","Recommended apps")))]),t._v(" "),t.loadingApps?n("p",{staticClass:"loading text-center"},[t._v("\n\t\t"+t._s(t.t("core","Loading apps …"))+"\n\t")]):t.loadingAppsError?n("p",{staticClass:"loading-error text-center"},[t._v("\n\t\t"+t._s(t.t("core","Could not fetch list of apps from the App Store."))+"\n\t")]):t.installingApps?n("p",{staticClass:"text-center"},[t._v("\n\t\t"+t._s(t.t("core","Installing apps …"))+"\n\t")]):t._e(),t._v(" "),t._l(t.recommendedApps,(function(e){return n("div",{key:e.id,staticClass:"app"},[t.isHidden(e.id)?t._e():[n("img",{attrs:{src:t.customIcon(e.id),alt:""}}),t._v(" "),n("div",{staticClass:"info"},[n("h3",[t._v("\n\t\t\t\t\t"+t._s(t.customName(e))+"\n\t\t\t\t\t"),e.loading?n("span",{staticClass:"icon icon-loading-small-dark"}):e.active?n("span",{staticClass:"icon icon-checkmark-white"}):t._e()]),t._v(" "),n("p",{domProps:{innerHTML:t._s(t.customDescription(e.id))}}),t._v(" "),e.installationError?n("p",[n("strong",[t._v(t._s(t.t("core","App download or installation failed")))])]):e.isCompatible?e.canInstall?t._e():n("p",[n("strong",[t._v(t._s(t.t("core","Cannot install this app")))])]):n("p",[n("strong",[t._v(t._s(t.t("core","Cannot install this app because it is not compatible")))])])])]],2)})),t._v(" "),n("div",{staticClass:"dialog-row"},[t.showInstallButton?n("NcButton",{attrs:{type:"tertiary",role:"link",href:"defaultPageUrl"},on:{click:function(n){return t.goTo(t.defaultPageUrl)}}},[t._v("\n\t\t\t"+t._s(t.t("core","Skip"))+"\n\t\t")]):t._e(),t._v(" "),t.showInstallButton?n("NcButton",{attrs:{type:"primary"},on:{click:function(n){return n.stopPropagation(),n.preventDefault(),t.installApps.apply(null,arguments)}}},[t._v("\n\t\t\t"+t._s(t.t("core","Install recommended apps"))+"\n\t\t")]):t._e()],1)],2)}),[],!1,null,"50fce157",null).exports;e.nc=btoa((0,a.IH)()),i.default.mixin({methods:{t:o.Iu}}),(new(i.default.extend(S))).$mount("#recommended-apps"),r.debug("recommended apps view rendered")},33887:(t,n,e)=>{e.d(n,{Z:()=>r});var a=e(87537),o=e.n(a),i=e(23645),s=e.n(i)()(o());s.push([t.id,".dialog-row[data-v-50fce157]{display:flex;justify-content:end;margin-top:8px}p.loading[data-v-50fce157],p.loading-error[data-v-50fce157]{height:100px}p[data-v-50fce157]:last-child{margin-top:10px}.text-center[data-v-50fce157]{text-align:center}.app[data-v-50fce157]{display:flex;flex-direction:row}.app img[data-v-50fce157]{height:50px;width:50px;filter:var(--background-invert-if-dark)}.app img[data-v-50fce157],.app .info[data-v-50fce157]{padding:12px}.app .info h3[data-v-50fce157],.app .info p[data-v-50fce157]{text-align:left}.app .info h3[data-v-50fce157]{margin-top:0}.app .info h3>span.icon[data-v-50fce157]{display:inline-block}","",{version:3,sources:["webpack://./core/src/components/setup/RecommendedApps.vue"],names:[],mappings:"AACA,6BACC,YAAA,CACA,mBAAA,CACA,cAAA,CAIA,4DAEC,YAAA,CAGD,8BACC,eAAA,CAIF,8BACC,iBAAA,CAGD,sBACC,YAAA,CACA,kBAAA,CAEA,0BACC,WAAA,CACA,UAAA,CACA,uCAAA,CAGD,sDACC,YAAA,CAIA,6DACC,eAAA,CAGD,+BACC,YAAA,CAGD,yCACC,oBAAA",sourcesContent:["\n.dialog-row {\n\tdisplay: flex;\n\tjustify-content: end;\n\tmargin-top: 8px;\n}\n\np {\n\t&.loading,\n\t&.loading-error {\n\t\theight: 100px;\n\t}\n\n\t&:last-child {\n\t\tmargin-top: 10px;\n\t}\n}\n\n.text-center {\n\ttext-align: center;\n}\n\n.app {\n\tdisplay: flex;\n\tflex-direction: row;\n\n\timg {\n\t\theight: 50px;\n\t\twidth: 50px;\n\t\tfilter: var(--background-invert-if-dark);\n\t}\n\n\timg, .info {\n\t\tpadding: 12px;\n\t}\n\n\t.info {\n\t\th3, p {\n\t\t\ttext-align: left;\n\t\t}\n\n\t\th3 {\n\t\t\tmargin-top: 0;\n\t\t}\n\n\t\th3 > span.icon {\n\t\t\tdisplay: inline-block;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const r=s}},e={};function a(t){var o=e[t];if(void 0!==o)return o.exports;var i=e[t]={id:t,loaded:!1,exports:{}};return n[t].call(i.exports,i,i.exports,a),i.loaded=!0,i.exports}a.m=n,t=[],a.O=(n,e,o,i)=>{if(!e){var s=1/0;for(p=0;p<t.length;p++){e=t[p][0],o=t[p][1],i=t[p][2];for(var r=!0,c=0;c<e.length;c++)(!1&i||s>=i)&&Object.keys(a.O).every((t=>a.O[t](e[c])))?e.splice(c--,1):(r=!1,i<s&&(s=i));if(r){t.splice(p--,1);var l=o();void 0!==l&&(n=l)}}return n}i=i||0;for(var p=t.length;p>0&&t[p-1][2]>i;p--)t[p]=t[p-1];t[p]=[e,o,i]},a.n=t=>{var n=t&&t.__esModule?()=>t.default:()=>t;return a.d(n,{a:n}),n},a.d=(t,n)=>{for(var e in n)a.o(n,e)&&!a.o(t,e)&&Object.defineProperty(t,e,{enumerable:!0,get:n[e]})},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),a.o=(t,n)=>Object.prototype.hasOwnProperty.call(t,n),a.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},a.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),a.j=1033,(()=>{a.b=document.baseURI||self.location.href;var t={1033:0};a.O.j=n=>0===t[n];var n=(n,e)=>{var o,i,s=e[0],r=e[1],c=e[2],l=0;if(s.some((n=>0!==t[n]))){for(o in r)a.o(r,o)&&(a.m[o]=r[o]);if(c)var p=c(a)}for(n&&n(e);l<s.length;l++)i=s[l],a.o(t,i)&&t[i]&&t[i][0](),t[i]=0;return a.O(p)},e=self.webpackChunknextcloud=self.webpackChunknextcloud||[];e.forEach(n.bind(null,0)),e.push=n.bind(null,e.push.bind(e))})(),a.nc=void 0;var o=a.O(void 0,[7874],(()=>a(13421)));o=a.O(o)})();
-//# sourceMappingURL=core-recommendedapps.js.map?v=534582d384c8b7969a41 \ No newline at end of file
+(()=>{"use strict";var t,n={69897:(t,n,e)=>{var a=e(45994),o=e(31352),i=e(20144),s=e(17499);const r=null===(l=(0,a.ts)())?(0,s.IY)().setApp("core").build():(0,s.IY)().setApp("core").setUid(l.uid).build();var l,p=e(4820),c=e(79753),d=e(79954),u=e(63560),g=e(10861),m=e.n(g);const A={calendar:{description:(0,o.Iu)("core","Schedule work & meetings, synced with all your devices."),icon:(0,c.imagePath)("core","places/calendar.svg")},contacts:{description:(0,o.Iu)("core","Keep your colleagues and friends in one place without leaking their private info."),icon:(0,c.imagePath)("core","places/contacts.svg")},mail:{description:(0,o.Iu)("core","Simple email app nicely integrated with Files, Contacts and Calendar."),icon:(0,c.imagePath)("core","actions/mail.svg")},spreed:{description:(0,o.Iu)("core","Chatting, video calls, screensharing, online meetings and web conferencing – in your browser and with mobile apps."),icon:(0,c.imagePath)("core","apps/spreed.svg")},richdocuments:{name:"Nextcloud Office",description:(0,o.Iu)("core","Collaborative documents, spreadsheets and presentations, built on Collabora Online."),icon:(0,c.imagePath)("core","apps/richdocuments.svg")},notes:{description:(0,o.Iu)("core","Distraction free note taking app."),icon:(0,c.imagePath)("core","apps/notes.svg")},richdocumentscode:{hidden:!0}},h=Object.keys(A),f={name:"RecommendedApps",components:{NcButton:m()},data:()=>({showInstallButton:!1,installingApps:!1,loadingApps:!0,loadingAppsError:!1,apps:[],defaultPageUrl:(0,d.j)("core","defaultPageUrl")}),computed:{recommendedApps(){return this.apps.filter((t=>h.includes(t.id)))}},async mounted(){try{const{data:t}=await p.default.get((0,c.generateUrl)("settings/apps/list"));r.info("".concat(t.apps.length," apps fetched")),this.apps=t.apps.map((t=>Object.assign(t,{loading:!1,installationError:!1}))),r.debug("".concat(this.recommendedApps.length," recommended apps found"),{apps:this.recommendedApps}),this.showInstallButton=!0}catch(t){r.error("could not fetch app list",{error:t}),this.loadingAppsError=!0}finally{this.loadingApps=!1}},methods:{installApps(){this.showInstallButton=!1,this.installingApps=!0;const t=(0,u.Z)(1),n=this.recommendedApps.filter((t=>!t.active&&t.isCompatible&&t.canInstall)).map((n=>t((()=>(r.info("installing ".concat(n.id)),n.loading=!0,p.default.post((0,c.generateUrl)("settings/apps/enable"),{appIds:[n.id],groups:[]}).catch((t=>{r.error("could not install ".concat(n.id),{error:t}),n.installationError=!0})).then((()=>{r.info("installed ".concat(n.id)),n.loading=!1})))))));r.debug("installing ".concat(n.length," recommended apps")),Promise.all(n).then((()=>{r.info("all recommended apps installed, redirecting …"),window.location=this.defaultPageUrl})).catch((t=>r.error("could not install recommended apps",{error:t})))},customIcon:t=>t in A&&A[t].icon?A[t].icon:(r.warn("no app icon for recommended app ".concat(t)),(0,c.imagePath)("core","places/default-app-icon.svg")),customName:t=>t.id in A&&A[t.id].name||t.name,customDescription:t=>t in A?A[t].description:(r.warn("no app description for recommended app ".concat(t)),""),isHidden:t=>t in A&&!!A[t].hidden}};var v=e(93379),C=e.n(v),b=e(7795),_=e.n(b),y=e(90569),x=e.n(y),w=e(3565),I=e.n(w),k=e(19216),P=e.n(k),B=e(44589),O=e.n(B),j=e(46202),D={};D.styleTagTransform=O(),D.setAttributes=I(),D.insert=x().bind(null,"head"),D.domAPI=_(),D.insertStyleElement=P(),C()(j.Z,D),j.Z&&j.Z.locals&&j.Z.locals;const E=(0,e(51900).Z)(f,(function(){var t=this,n=t._self._c;return n("div",{staticClass:"guest-box"},[n("h2",[t._v(t._s(t.t("core","Recommended apps")))]),t._v(" "),t.loadingApps?n("p",{staticClass:"loading text-center"},[t._v("\n\t\t"+t._s(t.t("core","Loading apps …"))+"\n\t")]):t.loadingAppsError?n("p",{staticClass:"loading-error text-center"},[t._v("\n\t\t"+t._s(t.t("core","Could not fetch list of apps from the App Store."))+"\n\t")]):t.installingApps?n("p",{staticClass:"text-center"},[t._v("\n\t\t"+t._s(t.t("core","Installing apps …"))+"\n\t")]):t._e(),t._v(" "),t._l(t.recommendedApps,(function(e){return n("div",{key:e.id,staticClass:"app"},[t.isHidden(e.id)?t._e():[n("img",{attrs:{src:t.customIcon(e.id),alt:""}}),t._v(" "),n("div",{staticClass:"info"},[n("h3",[t._v("\n\t\t\t\t\t"+t._s(t.customName(e))+"\n\t\t\t\t\t"),e.loading?n("span",{staticClass:"icon icon-loading-small-dark"}):e.active?n("span",{staticClass:"icon icon-checkmark-white"}):t._e()]),t._v(" "),n("p",{domProps:{innerHTML:t._s(t.customDescription(e.id))}}),t._v(" "),e.installationError?n("p",[n("strong",[t._v(t._s(t.t("core","App download or installation failed")))])]):e.isCompatible?e.canInstall?t._e():n("p",[n("strong",[t._v(t._s(t.t("core","Cannot install this app")))])]):n("p",[n("strong",[t._v(t._s(t.t("core","Cannot install this app because it is not compatible")))])])])]],2)})),t._v(" "),n("div",{staticClass:"dialog-row"},[t.showInstallButton?n("NcButton",{attrs:{type:"tertiary",role:"link",href:t.defaultPageUrl}},[t._v("\n\t\t\t"+t._s(t.t("core","Skip"))+"\n\t\t")]):t._e(),t._v(" "),t.showInstallButton?n("NcButton",{attrs:{type:"primary"},on:{click:function(n){return n.stopPropagation(),n.preventDefault(),t.installApps.apply(null,arguments)}}},[t._v("\n\t\t\t"+t._s(t.t("core","Install recommended apps"))+"\n\t\t")]):t._e()],1)],2)}),[],!1,null,"880500b4",null).exports;e.nc=btoa((0,a.IH)()),i.default.mixin({methods:{t:o.Iu}}),(new(i.default.extend(E))).$mount("#recommended-apps"),r.debug("recommended apps view rendered")},46202:(t,n,e)=>{e.d(n,{Z:()=>r});var a=e(87537),o=e.n(a),i=e(23645),s=e.n(i)()(o());s.push([t.id,".dialog-row[data-v-880500b4]{display:flex;justify-content:end;margin-top:8px}p.loading[data-v-880500b4],p.loading-error[data-v-880500b4]{height:100px}p[data-v-880500b4]:last-child{margin-top:10px}.text-center[data-v-880500b4]{text-align:center}.app[data-v-880500b4]{display:flex;flex-direction:row}.app img[data-v-880500b4]{height:50px;width:50px;filter:var(--background-invert-if-dark)}.app img[data-v-880500b4],.app .info[data-v-880500b4]{padding:12px}.app .info h3[data-v-880500b4],.app .info p[data-v-880500b4]{text-align:left}.app .info h3[data-v-880500b4]{margin-top:0}.app .info h3>span.icon[data-v-880500b4]{display:inline-block}","",{version:3,sources:["webpack://./core/src/components/setup/RecommendedApps.vue"],names:[],mappings:"AACA,6BACC,YAAA,CACA,mBAAA,CACA,cAAA,CAIA,4DAEC,YAAA,CAGD,8BACC,eAAA,CAIF,8BACC,iBAAA,CAGD,sBACC,YAAA,CACA,kBAAA,CAEA,0BACC,WAAA,CACA,UAAA,CACA,uCAAA,CAGD,sDACC,YAAA,CAIA,6DACC,eAAA,CAGD,+BACC,YAAA,CAGD,yCACC,oBAAA",sourcesContent:["\n.dialog-row {\n\tdisplay: flex;\n\tjustify-content: end;\n\tmargin-top: 8px;\n}\n\np {\n\t&.loading,\n\t&.loading-error {\n\t\theight: 100px;\n\t}\n\n\t&:last-child {\n\t\tmargin-top: 10px;\n\t}\n}\n\n.text-center {\n\ttext-align: center;\n}\n\n.app {\n\tdisplay: flex;\n\tflex-direction: row;\n\n\timg {\n\t\theight: 50px;\n\t\twidth: 50px;\n\t\tfilter: var(--background-invert-if-dark);\n\t}\n\n\timg, .info {\n\t\tpadding: 12px;\n\t}\n\n\t.info {\n\t\th3, p {\n\t\t\ttext-align: left;\n\t\t}\n\n\t\th3 {\n\t\t\tmargin-top: 0;\n\t\t}\n\n\t\th3 > span.icon {\n\t\t\tdisplay: inline-block;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const r=s}},e={};function a(t){var o=e[t];if(void 0!==o)return o.exports;var i=e[t]={id:t,loaded:!1,exports:{}};return n[t].call(i.exports,i,i.exports,a),i.loaded=!0,i.exports}a.m=n,t=[],a.O=(n,e,o,i)=>{if(!e){var s=1/0;for(c=0;c<t.length;c++){e=t[c][0],o=t[c][1],i=t[c][2];for(var r=!0,l=0;l<e.length;l++)(!1&i||s>=i)&&Object.keys(a.O).every((t=>a.O[t](e[l])))?e.splice(l--,1):(r=!1,i<s&&(s=i));if(r){t.splice(c--,1);var p=o();void 0!==p&&(n=p)}}return n}i=i||0;for(var c=t.length;c>0&&t[c-1][2]>i;c--)t[c]=t[c-1];t[c]=[e,o,i]},a.n=t=>{var n=t&&t.__esModule?()=>t.default:()=>t;return a.d(n,{a:n}),n},a.d=(t,n)=>{for(var e in n)a.o(n,e)&&!a.o(t,e)&&Object.defineProperty(t,e,{enumerable:!0,get:n[e]})},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),a.o=(t,n)=>Object.prototype.hasOwnProperty.call(t,n),a.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},a.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),a.j=1033,(()=>{a.b=document.baseURI||self.location.href;var t={1033:0};a.O.j=n=>0===t[n];var n=(n,e)=>{var o,i,s=e[0],r=e[1],l=e[2],p=0;if(s.some((n=>0!==t[n]))){for(o in r)a.o(r,o)&&(a.m[o]=r[o]);if(l)var c=l(a)}for(n&&n(e);p<s.length;p++)i=s[p],a.o(t,i)&&t[i]&&t[i][0](),t[i]=0;return a.O(c)},e=self.webpackChunknextcloud=self.webpackChunknextcloud||[];e.forEach(n.bind(null,0)),e.push=n.bind(null,e.push.bind(e))})(),a.nc=void 0;var o=a.O(void 0,[7874],(()=>a(69897)));o=a.O(o)})();
+//# sourceMappingURL=core-recommendedapps.js.map?v=0719ad302d2eef84daea \ No newline at end of file
diff --git a/dist/core-recommendedapps.js.map b/dist/core-recommendedapps.js.map
index de62ab49789..4efb3f8431d 100644
--- a/dist/core-recommendedapps.js.map
+++ b/dist/core-recommendedapps.js.map
@@ -1 +1 @@
-{"version":3,"file":"core-recommendedapps.js?v=534582d384c8b7969a41","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/core/src/logger.js","webpack:///nextcloud/core/src/components/setup/RecommendedApps.vue","webpack:///nextcloud/core/src/components/setup/RecommendedApps.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/components/setup/RecommendedApps.vue?78ed","webpack://nextcloud/./core/src/components/setup/RecommendedApps.vue?84e8","webpack://nextcloud/./core/src/components/setup/RecommendedApps.vue?5f06","webpack:///nextcloud/core/src/recommendedapps.js","webpack:///nextcloud/core/src/components/setup/RecommendedApps.vue?vue&type=style&index=0&id=50fce157&prod&lang=scss&scoped=true&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nconst getLogger = user => {\n\tif (user === null) {\n\t\treturn getLoggerBuilder()\n\t\t\t.setApp('core')\n\t\t\t.build()\n\t}\n\treturn getLoggerBuilder()\n\t\t.setApp('core')\n\t\t.setUid(user.uid)\n\t\t.build()\n}\n\nexport default getLogger(getCurrentUser())\n","<!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -->\n\n<template>\n\t<div class=\"guest-box\">\n\t\t<h2>{{ t('core', 'Recommended apps') }}</h2>\n\t\t<p v-if=\"loadingApps\" class=\"loading text-center\">\n\t\t\t{{ t('core', 'Loading apps …') }}\n\t\t</p>\n\t\t<p v-else-if=\"loadingAppsError\" class=\"loading-error text-center\">\n\t\t\t{{ t('core', 'Could not fetch list of apps from the App Store.') }}\n\t\t</p>\n\t\t<p v-else-if=\"installingApps\" class=\"text-center\">\n\t\t\t{{ t('core', 'Installing apps …') }}\n\t\t</p>\n\n\t\t<div v-for=\"app in recommendedApps\" :key=\"app.id\" class=\"app\">\n\t\t\t<template v-if=\"!isHidden(app.id)\">\n\t\t\t\t<img :src=\"customIcon(app.id)\" alt=\"\">\n\t\t\t\t<div class=\"info\">\n\t\t\t\t\t<h3>\n\t\t\t\t\t\t{{ customName(app) }}\n\t\t\t\t\t\t<span v-if=\"app.loading\" class=\"icon icon-loading-small-dark\" />\n\t\t\t\t\t\t<span v-else-if=\"app.active\" class=\"icon icon-checkmark-white\" />\n\t\t\t\t\t</h3>\n\t\t\t\t\t<p v-html=\"customDescription(app.id)\" />\n\t\t\t\t\t<p v-if=\"app.installationError\">\n\t\t\t\t\t\t<strong>{{ t('core', 'App download or installation failed') }}</strong>\n\t\t\t\t\t</p>\n\t\t\t\t\t<p v-else-if=\"!app.isCompatible\">\n\t\t\t\t\t\t<strong>{{ t('core', 'Cannot install this app because it is not compatible') }}</strong>\n\t\t\t\t\t</p>\n\t\t\t\t\t<p v-else-if=\"!app.canInstall\">\n\t\t\t\t\t\t<strong>{{ t('core', 'Cannot install this app') }}</strong>\n\t\t\t\t\t</p>\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t</div>\n\n\t\t<div class=\"dialog-row\">\n\t\t\t<NcButton v-if=\"showInstallButton\"\n\t\t\t\ttype=\"tertiary\"\n\t\t\t\trole=\"link\"\n\t\t\t\thref=\"defaultPageUrl\"\n\t\t\t\t@click=\"goTo(defaultPageUrl)\">\n\t\t\t\t{{ t('core', 'Skip') }}\n\t\t\t</NcButton>\n\n\t\t\t<NcButton v-if=\"showInstallButton\"\n\t\t\t\ttype=\"primary\"\n\t\t\t\t@click.stop.prevent=\"installApps\">\n\t\t\t\t{{ t('core', 'Install recommended apps') }}\n\t\t\t</NcButton>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { generateUrl, imagePath } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport pLimit from 'p-limit'\nimport { translate as t } from '@nextcloud/l10n'\n\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\n\nimport logger from '../../logger.js'\n\nconst recommended = {\n\tcalendar: {\n\t\tdescription: t('core', 'Schedule work & meetings, synced with all your devices.'),\n\t\ticon: imagePath('core', 'places/calendar.svg'),\n\t},\n\tcontacts: {\n\t\tdescription: t('core', 'Keep your colleagues and friends in one place without leaking their private info.'),\n\t\ticon: imagePath('core', 'places/contacts.svg'),\n\t},\n\tmail: {\n\t\tdescription: t('core', 'Simple email app nicely integrated with Files, Contacts and Calendar.'),\n\t\ticon: imagePath('core', 'actions/mail.svg'),\n\t},\n\tspreed: {\n\t\tdescription: t('core', 'Chatting, video calls, screensharing, online meetings and web conferencing – in your browser and with mobile apps.'),\n\t\ticon: imagePath('core', 'apps/spreed.svg'),\n\t},\n\trichdocuments: {\n\t\tname: 'Nextcloud Office',\n\t\tdescription: t('core', 'Collaborative documents, spreadsheets and presentations, built on Collabora Online.'),\n\t\ticon: imagePath('core', 'apps/richdocuments.svg'),\n\t},\n\tnotes: {\n\t\tdescription: t('core', 'Distraction free note taking app.'),\n\t\ticon: imagePath('core', 'apps/notes.svg'),\n\t},\n\trichdocumentscode: {\n\t\thidden: true,\n\t},\n}\nconst recommendedIds = Object.keys(recommended)\nconst defaultPageUrl = loadState('core', 'defaultPageUrl')\n\nexport default {\n\tname: 'RecommendedApps',\n\tcomponents: {\n\t\tNcButton,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tshowInstallButton: false,\n\t\t\tinstallingApps: false,\n\t\t\tloadingApps: true,\n\t\t\tloadingAppsError: false,\n\t\t\tapps: [],\n\t\t\tdefaultPageUrl,\n\t\t}\n\t},\n\tcomputed: {\n\t\trecommendedApps() {\n\t\t\treturn this.apps.filter(app => recommendedIds.includes(app.id))\n\t\t},\n\t},\n\tasync mounted() {\n\t\ttry {\n\t\t\tconst { data } = await axios.get(generateUrl('settings/apps/list'))\n\t\t\tlogger.info(`${data.apps.length} apps fetched`)\n\n\t\t\tthis.apps = data.apps.map(app => Object.assign(app, { loading: false, installationError: false }))\n\t\t\tlogger.debug(`${this.recommendedApps.length} recommended apps found`, { apps: this.recommendedApps })\n\n\t\t\tthis.showInstallButton = true\n\t\t} catch (error) {\n\t\t\tlogger.error('could not fetch app list', { error })\n\n\t\t\tthis.loadingAppsError = true\n\t\t} finally {\n\t\t\tthis.loadingApps = false\n\t\t}\n\t},\n\tmethods: {\n\t\tinstallApps() {\n\t\t\tthis.showInstallButton = false\n\t\t\tthis.installingApps = true\n\n\t\t\tconst limit = pLimit(1)\n\t\t\tconst installing = this.recommendedApps\n\t\t\t\t.filter(app => !app.active && app.isCompatible && app.canInstall)\n\t\t\t\t.map(app => limit(() => {\n\t\t\t\t\tlogger.info(`installing ${app.id}`)\n\t\t\t\t\tapp.loading = true\n\t\t\t\t\treturn axios.post(generateUrl('settings/apps/enable'), { appIds: [app.id], groups: [] })\n\t\t\t\t\t\t.catch(error => {\n\t\t\t\t\t\t\tlogger.error(`could not install ${app.id}`, { error })\n\t\t\t\t\t\t\tapp.installationError = true\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\tlogger.info(`installed ${app.id}`)\n\t\t\t\t\t\t\tapp.loading = false\n\t\t\t\t\t\t})\n\t\t\t\t}))\n\t\t\tlogger.debug(`installing ${installing.length} recommended apps`)\n\t\t\tPromise.all(installing)\n\t\t\t\t.then(() => {\n\t\t\t\t\tlogger.info('all recommended apps installed, redirecting …')\n\n\t\t\t\t\twindow.location = defaultPageUrl\n\t\t\t\t})\n\t\t\t\t.catch(error => logger.error('could not install recommended apps', { error }))\n\t\t},\n\t\tcustomIcon(appId) {\n\t\t\tif (!(appId in recommended) || !recommended[appId].icon) {\n\t\t\t\tlogger.warn(`no app icon for recommended app ${appId}`)\n\t\t\t\treturn imagePath('core', 'places/default-app-icon.svg')\n\t\t\t}\n\t\t\treturn recommended[appId].icon\n\t\t},\n\t\tcustomName(app) {\n\t\t\tif (!(app.id in recommended)) {\n\t\t\t\treturn app.name\n\t\t\t}\n\t\t\treturn recommended[app.id].name || app.name\n\t\t},\n\t\tcustomDescription(appId) {\n\t\t\tif (!(appId in recommended)) {\n\t\t\t\tlogger.warn(`no app description for recommended app ${appId}`)\n\t\t\t\treturn ''\n\t\t\t}\n\t\t\treturn recommended[appId].description\n\t\t},\n\t\tisHidden(appId) {\n\t\t\tif (!(appId in recommended)) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn !!recommended[appId].hidden\n\t\t},\n\t\tgoTo(href) {\n\t\t\twindow.location.href = href\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.dialog-row {\n\tdisplay: flex;\n\tjustify-content: end;\n\tmargin-top: 8px;\n}\n\np {\n\t&.loading,\n\t&.loading-error {\n\t\theight: 100px;\n\t}\n\n\t&:last-child {\n\t\tmargin-top: 10px;\n\t}\n}\n\n.text-center {\n\ttext-align: center;\n}\n\n.app {\n\tdisplay: flex;\n\tflex-direction: row;\n\n\timg {\n\t\theight: 50px;\n\t\twidth: 50px;\n\t\tfilter: var(--background-invert-if-dark);\n\t}\n\n\timg, .info {\n\t\tpadding: 12px;\n\t}\n\n\t.info {\n\t\th3, p {\n\t\t\ttext-align: left;\n\t\t}\n\n\t\th3 {\n\t\t\tmargin-top: 0;\n\t\t}\n\n\t\th3 > span.icon {\n\t\t\tdisplay: inline-block;\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!./RecommendedApps.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!./RecommendedApps.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!./RecommendedApps.vue?vue&type=style&index=0&id=50fce157&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecommendedApps.vue?vue&type=style&index=0&id=50fce157&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./RecommendedApps.vue?vue&type=template&id=50fce157&scoped=true&\"\nimport script from \"./RecommendedApps.vue?vue&type=script&lang=js&\"\nexport * from \"./RecommendedApps.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RecommendedApps.vue?vue&type=style&index=0&id=50fce157&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 \"50fce157\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"guest-box\"},[_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Recommended apps')))]),_vm._v(\" \"),(_vm.loadingApps)?_c('p',{staticClass:\"loading text-center\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Loading apps …'))+\"\\n\\t\")]):(_vm.loadingAppsError)?_c('p',{staticClass:\"loading-error text-center\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Could not fetch list of apps from the App Store.'))+\"\\n\\t\")]):(_vm.installingApps)?_c('p',{staticClass:\"text-center\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Installing apps …'))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.recommendedApps),function(app){return _c('div',{key:app.id,staticClass:\"app\"},[(!_vm.isHidden(app.id))?[_c('img',{attrs:{\"src\":_vm.customIcon(app.id),\"alt\":\"\"}}),_vm._v(\" \"),_c('div',{staticClass:\"info\"},[_c('h3',[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.customName(app))+\"\\n\\t\\t\\t\\t\\t\"),(app.loading)?_c('span',{staticClass:\"icon icon-loading-small-dark\"}):(app.active)?_c('span',{staticClass:\"icon icon-checkmark-white\"}):_vm._e()]),_vm._v(\" \"),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.customDescription(app.id))}}),_vm._v(\" \"),(app.installationError)?_c('p',[_c('strong',[_vm._v(_vm._s(_vm.t('core', 'App download or installation failed')))])]):(!app.isCompatible)?_c('p',[_c('strong',[_vm._v(_vm._s(_vm.t('core', 'Cannot install this app because it is not compatible')))])]):(!app.canInstall)?_c('p',[_c('strong',[_vm._v(_vm._s(_vm.t('core', 'Cannot install this app')))])]):_vm._e()])]:_vm._e()],2)}),_vm._v(\" \"),_c('div',{staticClass:\"dialog-row\"},[(_vm.showInstallButton)?_c('NcButton',{attrs:{\"type\":\"tertiary\",\"role\":\"link\",\"href\":\"defaultPageUrl\"},on:{\"click\":function($event){return _vm.goTo(_vm.defaultPageUrl)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Skip'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.showInstallButton)?_c('NcButton',{attrs:{\"type\":\"primary\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.installApps.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Install recommended apps'))+\"\\n\\t\\t\")]):_vm._e()],1)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { getRequestToken } from '@nextcloud/auth'\nimport { translate as t } from '@nextcloud/l10n'\nimport Vue from 'vue'\n\nimport logger from './logger.js'\nimport RecommendedApps from './components/setup/RecommendedApps.vue'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(getRequestToken())\n\nVue.mixin({\n\tmethods: {\n\t\tt,\n\t},\n})\n\nconst View = Vue.extend(RecommendedApps)\nnew View().$mount('#recommended-apps')\n\nlogger.debug('recommended apps view rendered')\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-row[data-v-50fce157]{display:flex;justify-content:end;margin-top:8px}p.loading[data-v-50fce157],p.loading-error[data-v-50fce157]{height:100px}p[data-v-50fce157]:last-child{margin-top:10px}.text-center[data-v-50fce157]{text-align:center}.app[data-v-50fce157]{display:flex;flex-direction:row}.app img[data-v-50fce157]{height:50px;width:50px;filter:var(--background-invert-if-dark)}.app img[data-v-50fce157],.app .info[data-v-50fce157]{padding:12px}.app .info h3[data-v-50fce157],.app .info p[data-v-50fce157]{text-align:left}.app .info h3[data-v-50fce157]{margin-top:0}.app .info h3>span.icon[data-v-50fce157]{display:inline-block}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/setup/RecommendedApps.vue\"],\"names\":[],\"mappings\":\"AACA,6BACC,YAAA,CACA,mBAAA,CACA,cAAA,CAIA,4DAEC,YAAA,CAGD,8BACC,eAAA,CAIF,8BACC,iBAAA,CAGD,sBACC,YAAA,CACA,kBAAA,CAEA,0BACC,WAAA,CACA,UAAA,CACA,uCAAA,CAGD,sDACC,YAAA,CAIA,6DACC,eAAA,CAGD,+BACC,YAAA,CAGD,yCACC,oBAAA\",\"sourcesContent\":[\"\\n.dialog-row {\\n\\tdisplay: flex;\\n\\tjustify-content: end;\\n\\tmargin-top: 8px;\\n}\\n\\np {\\n\\t&.loading,\\n\\t&.loading-error {\\n\\t\\theight: 100px;\\n\\t}\\n\\n\\t&:last-child {\\n\\t\\tmargin-top: 10px;\\n\\t}\\n}\\n\\n.text-center {\\n\\ttext-align: center;\\n}\\n\\n.app {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\n\\timg {\\n\\t\\theight: 50px;\\n\\t\\twidth: 50px;\\n\\t\\tfilter: var(--background-invert-if-dark);\\n\\t}\\n\\n\\timg, .info {\\n\\t\\tpadding: 12px;\\n\\t}\\n\\n\\t.info {\\n\\t\\th3, p {\\n\\t\\t\\ttext-align: left;\\n\\t\\t}\\n\\n\\t\\th3 {\\n\\t\\t\\tmargin-top: 0;\\n\\t\\t}\\n\\n\\t\\th3 > span.icon {\\n\\t\\t\\tdisplay: inline-block;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 1033;","__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\t1033: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], () => (__webpack_require__(13421)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","user","getCurrentUser","getLoggerBuilder","setApp","build","setUid","uid","recommended","calendar","description","t","icon","imagePath","contacts","mail","spreed","richdocuments","name","notes","richdocumentscode","hidden","recommendedIds","Object","keys","defaultPageUrl","loadState","components","NcButton","data","showInstallButton","installingApps","loadingApps","loadingAppsError","apps","computed","recommendedApps","filter","app","includes","id","axios","generateUrl","logger","concat","length","map","assign","loading","installationError","error","methods","installApps","limit","pLimit","installing","active","isCompatible","canInstall","appIds","groups","catch","then","Promise","all","window","location","customIcon","appId","customName","customDescription","isHidden","goTo","href","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_c","_self","staticClass","_v","_s","_e","_l","key","attrs","domProps","on","$event","stopPropagation","preventDefault","apply","arguments","__webpack_nonce__","btoa","getRequestToken","Vue","RecommendedApps","$mount","debug","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","value","nmd","paths","children","b","document","baseURI","self","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"core-recommendedapps.js?v=0719ad302d2eef84daea","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/core/src/logger.js","webpack:///nextcloud/core/src/components/setup/RecommendedApps.vue","webpack:///nextcloud/core/src/components/setup/RecommendedApps.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/components/setup/RecommendedApps.vue?e2c6","webpack://nextcloud/./core/src/components/setup/RecommendedApps.vue?84e8","webpack://nextcloud/./core/src/components/setup/RecommendedApps.vue?5f06","webpack:///nextcloud/core/src/recommendedapps.js","webpack:///nextcloud/core/src/components/setup/RecommendedApps.vue?vue&type=style&index=0&id=880500b4&prod&lang=scss&scoped=true&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nconst getLogger = user => {\n\tif (user === null) {\n\t\treturn getLoggerBuilder()\n\t\t\t.setApp('core')\n\t\t\t.build()\n\t}\n\treturn getLoggerBuilder()\n\t\t.setApp('core')\n\t\t.setUid(user.uid)\n\t\t.build()\n}\n\nexport default getLogger(getCurrentUser())\n","<!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -->\n\n<template>\n\t<div class=\"guest-box\">\n\t\t<h2>{{ t('core', 'Recommended apps') }}</h2>\n\t\t<p v-if=\"loadingApps\" class=\"loading text-center\">\n\t\t\t{{ t('core', 'Loading apps …') }}\n\t\t</p>\n\t\t<p v-else-if=\"loadingAppsError\" class=\"loading-error text-center\">\n\t\t\t{{ t('core', 'Could not fetch list of apps from the App Store.') }}\n\t\t</p>\n\t\t<p v-else-if=\"installingApps\" class=\"text-center\">\n\t\t\t{{ t('core', 'Installing apps …') }}\n\t\t</p>\n\n\t\t<div v-for=\"app in recommendedApps\" :key=\"app.id\" class=\"app\">\n\t\t\t<template v-if=\"!isHidden(app.id)\">\n\t\t\t\t<img :src=\"customIcon(app.id)\" alt=\"\">\n\t\t\t\t<div class=\"info\">\n\t\t\t\t\t<h3>\n\t\t\t\t\t\t{{ customName(app) }}\n\t\t\t\t\t\t<span v-if=\"app.loading\" class=\"icon icon-loading-small-dark\" />\n\t\t\t\t\t\t<span v-else-if=\"app.active\" class=\"icon icon-checkmark-white\" />\n\t\t\t\t\t</h3>\n\t\t\t\t\t<p v-html=\"customDescription(app.id)\" />\n\t\t\t\t\t<p v-if=\"app.installationError\">\n\t\t\t\t\t\t<strong>{{ t('core', 'App download or installation failed') }}</strong>\n\t\t\t\t\t</p>\n\t\t\t\t\t<p v-else-if=\"!app.isCompatible\">\n\t\t\t\t\t\t<strong>{{ t('core', 'Cannot install this app because it is not compatible') }}</strong>\n\t\t\t\t\t</p>\n\t\t\t\t\t<p v-else-if=\"!app.canInstall\">\n\t\t\t\t\t\t<strong>{{ t('core', 'Cannot install this app') }}</strong>\n\t\t\t\t\t</p>\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t</div>\n\n\t\t<div class=\"dialog-row\">\n\t\t\t<NcButton v-if=\"showInstallButton\"\n\t\t\t\ttype=\"tertiary\"\n\t\t\t\trole=\"link\"\n\t\t\t\t:href=\"defaultPageUrl\">\n\t\t\t\t{{ t('core', 'Skip') }}\n\t\t\t</NcButton>\n\n\t\t\t<NcButton v-if=\"showInstallButton\"\n\t\t\t\ttype=\"primary\"\n\t\t\t\t@click.stop.prevent=\"installApps\">\n\t\t\t\t{{ t('core', 'Install recommended apps') }}\n\t\t\t</NcButton>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { generateUrl, imagePath } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport pLimit from 'p-limit'\nimport { translate as t } from '@nextcloud/l10n'\n\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\n\nimport logger from '../../logger.js'\n\nconst recommended = {\n\tcalendar: {\n\t\tdescription: t('core', 'Schedule work & meetings, synced with all your devices.'),\n\t\ticon: imagePath('core', 'places/calendar.svg'),\n\t},\n\tcontacts: {\n\t\tdescription: t('core', 'Keep your colleagues and friends in one place without leaking their private info.'),\n\t\ticon: imagePath('core', 'places/contacts.svg'),\n\t},\n\tmail: {\n\t\tdescription: t('core', 'Simple email app nicely integrated with Files, Contacts and Calendar.'),\n\t\ticon: imagePath('core', 'actions/mail.svg'),\n\t},\n\tspreed: {\n\t\tdescription: t('core', 'Chatting, video calls, screensharing, online meetings and web conferencing – in your browser and with mobile apps.'),\n\t\ticon: imagePath('core', 'apps/spreed.svg'),\n\t},\n\trichdocuments: {\n\t\tname: 'Nextcloud Office',\n\t\tdescription: t('core', 'Collaborative documents, spreadsheets and presentations, built on Collabora Online.'),\n\t\ticon: imagePath('core', 'apps/richdocuments.svg'),\n\t},\n\tnotes: {\n\t\tdescription: t('core', 'Distraction free note taking app.'),\n\t\ticon: imagePath('core', 'apps/notes.svg'),\n\t},\n\trichdocumentscode: {\n\t\thidden: true,\n\t},\n}\nconst recommendedIds = Object.keys(recommended)\n\nexport default {\n\tname: 'RecommendedApps',\n\tcomponents: {\n\t\tNcButton,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tshowInstallButton: false,\n\t\t\tinstallingApps: false,\n\t\t\tloadingApps: true,\n\t\t\tloadingAppsError: false,\n\t\t\tapps: [],\n\t\t\tdefaultPageUrl: loadState('core', 'defaultPageUrl')\n\t\t}\n\t},\n\tcomputed: {\n\t\trecommendedApps() {\n\t\t\treturn this.apps.filter(app => recommendedIds.includes(app.id))\n\t\t},\n\t},\n\tasync mounted() {\n\t\ttry {\n\t\t\tconst { data } = await axios.get(generateUrl('settings/apps/list'))\n\t\t\tlogger.info(`${data.apps.length} apps fetched`)\n\n\t\t\tthis.apps = data.apps.map(app => Object.assign(app, { loading: false, installationError: false }))\n\t\t\tlogger.debug(`${this.recommendedApps.length} recommended apps found`, { apps: this.recommendedApps })\n\n\t\t\tthis.showInstallButton = true\n\t\t} catch (error) {\n\t\t\tlogger.error('could not fetch app list', { error })\n\n\t\t\tthis.loadingAppsError = true\n\t\t} finally {\n\t\t\tthis.loadingApps = false\n\t\t}\n\t},\n\tmethods: {\n\t\tinstallApps() {\n\t\t\tthis.showInstallButton = false\n\t\t\tthis.installingApps = true\n\n\t\t\tconst limit = pLimit(1)\n\t\t\tconst installing = this.recommendedApps\n\t\t\t\t.filter(app => !app.active && app.isCompatible && app.canInstall)\n\t\t\t\t.map(app => limit(() => {\n\t\t\t\t\tlogger.info(`installing ${app.id}`)\n\t\t\t\t\tapp.loading = true\n\t\t\t\t\treturn axios.post(generateUrl('settings/apps/enable'), { appIds: [app.id], groups: [] })\n\t\t\t\t\t\t.catch(error => {\n\t\t\t\t\t\t\tlogger.error(`could not install ${app.id}`, { error })\n\t\t\t\t\t\t\tapp.installationError = true\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\tlogger.info(`installed ${app.id}`)\n\t\t\t\t\t\t\tapp.loading = false\n\t\t\t\t\t\t})\n\t\t\t\t}))\n\t\t\tlogger.debug(`installing ${installing.length} recommended apps`)\n\t\t\tPromise.all(installing)\n\t\t\t\t.then(() => {\n\t\t\t\t\tlogger.info('all recommended apps installed, redirecting …')\n\n\t\t\t\t\twindow.location = this.defaultPageUrl\n\t\t\t\t})\n\t\t\t\t.catch(error => logger.error('could not install recommended apps', { error }))\n\t\t},\n\t\tcustomIcon(appId) {\n\t\t\tif (!(appId in recommended) || !recommended[appId].icon) {\n\t\t\t\tlogger.warn(`no app icon for recommended app ${appId}`)\n\t\t\t\treturn imagePath('core', 'places/default-app-icon.svg')\n\t\t\t}\n\t\t\treturn recommended[appId].icon\n\t\t},\n\t\tcustomName(app) {\n\t\t\tif (!(app.id in recommended)) {\n\t\t\t\treturn app.name\n\t\t\t}\n\t\t\treturn recommended[app.id].name || app.name\n\t\t},\n\t\tcustomDescription(appId) {\n\t\t\tif (!(appId in recommended)) {\n\t\t\t\tlogger.warn(`no app description for recommended app ${appId}`)\n\t\t\t\treturn ''\n\t\t\t}\n\t\t\treturn recommended[appId].description\n\t\t},\n\t\tisHidden(appId) {\n\t\t\tif (!(appId in recommended)) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn !!recommended[appId].hidden\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.dialog-row {\n\tdisplay: flex;\n\tjustify-content: end;\n\tmargin-top: 8px;\n}\n\np {\n\t&.loading,\n\t&.loading-error {\n\t\theight: 100px;\n\t}\n\n\t&:last-child {\n\t\tmargin-top: 10px;\n\t}\n}\n\n.text-center {\n\ttext-align: center;\n}\n\n.app {\n\tdisplay: flex;\n\tflex-direction: row;\n\n\timg {\n\t\theight: 50px;\n\t\twidth: 50px;\n\t\tfilter: var(--background-invert-if-dark);\n\t}\n\n\timg, .info {\n\t\tpadding: 12px;\n\t}\n\n\t.info {\n\t\th3, p {\n\t\t\ttext-align: left;\n\t\t}\n\n\t\th3 {\n\t\t\tmargin-top: 0;\n\t\t}\n\n\t\th3 > span.icon {\n\t\t\tdisplay: inline-block;\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!./RecommendedApps.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!./RecommendedApps.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!./RecommendedApps.vue?vue&type=style&index=0&id=880500b4&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecommendedApps.vue?vue&type=style&index=0&id=880500b4&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./RecommendedApps.vue?vue&type=template&id=880500b4&scoped=true&\"\nimport script from \"./RecommendedApps.vue?vue&type=script&lang=js&\"\nexport * from \"./RecommendedApps.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RecommendedApps.vue?vue&type=style&index=0&id=880500b4&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 \"880500b4\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"guest-box\"},[_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Recommended apps')))]),_vm._v(\" \"),(_vm.loadingApps)?_c('p',{staticClass:\"loading text-center\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Loading apps …'))+\"\\n\\t\")]):(_vm.loadingAppsError)?_c('p',{staticClass:\"loading-error text-center\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Could not fetch list of apps from the App Store.'))+\"\\n\\t\")]):(_vm.installingApps)?_c('p',{staticClass:\"text-center\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Installing apps …'))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.recommendedApps),function(app){return _c('div',{key:app.id,staticClass:\"app\"},[(!_vm.isHidden(app.id))?[_c('img',{attrs:{\"src\":_vm.customIcon(app.id),\"alt\":\"\"}}),_vm._v(\" \"),_c('div',{staticClass:\"info\"},[_c('h3',[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.customName(app))+\"\\n\\t\\t\\t\\t\\t\"),(app.loading)?_c('span',{staticClass:\"icon icon-loading-small-dark\"}):(app.active)?_c('span',{staticClass:\"icon icon-checkmark-white\"}):_vm._e()]),_vm._v(\" \"),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.customDescription(app.id))}}),_vm._v(\" \"),(app.installationError)?_c('p',[_c('strong',[_vm._v(_vm._s(_vm.t('core', 'App download or installation failed')))])]):(!app.isCompatible)?_c('p',[_c('strong',[_vm._v(_vm._s(_vm.t('core', 'Cannot install this app because it is not compatible')))])]):(!app.canInstall)?_c('p',[_c('strong',[_vm._v(_vm._s(_vm.t('core', 'Cannot install this app')))])]):_vm._e()])]:_vm._e()],2)}),_vm._v(\" \"),_c('div',{staticClass:\"dialog-row\"},[(_vm.showInstallButton)?_c('NcButton',{attrs:{\"type\":\"tertiary\",\"role\":\"link\",\"href\":_vm.defaultPageUrl}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Skip'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.showInstallButton)?_c('NcButton',{attrs:{\"type\":\"primary\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.installApps.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Install recommended apps'))+\"\\n\\t\\t\")]):_vm._e()],1)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { getRequestToken } from '@nextcloud/auth'\nimport { translate as t } from '@nextcloud/l10n'\nimport Vue from 'vue'\n\nimport logger from './logger.js'\nimport RecommendedApps from './components/setup/RecommendedApps.vue'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(getRequestToken())\n\nVue.mixin({\n\tmethods: {\n\t\tt,\n\t},\n})\n\nconst View = Vue.extend(RecommendedApps)\nnew View().$mount('#recommended-apps')\n\nlogger.debug('recommended apps view rendered')\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-row[data-v-880500b4]{display:flex;justify-content:end;margin-top:8px}p.loading[data-v-880500b4],p.loading-error[data-v-880500b4]{height:100px}p[data-v-880500b4]:last-child{margin-top:10px}.text-center[data-v-880500b4]{text-align:center}.app[data-v-880500b4]{display:flex;flex-direction:row}.app img[data-v-880500b4]{height:50px;width:50px;filter:var(--background-invert-if-dark)}.app img[data-v-880500b4],.app .info[data-v-880500b4]{padding:12px}.app .info h3[data-v-880500b4],.app .info p[data-v-880500b4]{text-align:left}.app .info h3[data-v-880500b4]{margin-top:0}.app .info h3>span.icon[data-v-880500b4]{display:inline-block}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/setup/RecommendedApps.vue\"],\"names\":[],\"mappings\":\"AACA,6BACC,YAAA,CACA,mBAAA,CACA,cAAA,CAIA,4DAEC,YAAA,CAGD,8BACC,eAAA,CAIF,8BACC,iBAAA,CAGD,sBACC,YAAA,CACA,kBAAA,CAEA,0BACC,WAAA,CACA,UAAA,CACA,uCAAA,CAGD,sDACC,YAAA,CAIA,6DACC,eAAA,CAGD,+BACC,YAAA,CAGD,yCACC,oBAAA\",\"sourcesContent\":[\"\\n.dialog-row {\\n\\tdisplay: flex;\\n\\tjustify-content: end;\\n\\tmargin-top: 8px;\\n}\\n\\np {\\n\\t&.loading,\\n\\t&.loading-error {\\n\\t\\theight: 100px;\\n\\t}\\n\\n\\t&:last-child {\\n\\t\\tmargin-top: 10px;\\n\\t}\\n}\\n\\n.text-center {\\n\\ttext-align: center;\\n}\\n\\n.app {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\n\\timg {\\n\\t\\theight: 50px;\\n\\t\\twidth: 50px;\\n\\t\\tfilter: var(--background-invert-if-dark);\\n\\t}\\n\\n\\timg, .info {\\n\\t\\tpadding: 12px;\\n\\t}\\n\\n\\t.info {\\n\\t\\th3, p {\\n\\t\\t\\ttext-align: left;\\n\\t\\t}\\n\\n\\t\\th3 {\\n\\t\\t\\tmargin-top: 0;\\n\\t\\t}\\n\\n\\t\\th3 > span.icon {\\n\\t\\t\\tdisplay: inline-block;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 1033;","__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\t1033: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], () => (__webpack_require__(69897)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","user","getCurrentUser","getLoggerBuilder","setApp","build","setUid","uid","recommended","calendar","description","t","icon","imagePath","contacts","mail","spreed","richdocuments","name","notes","richdocumentscode","hidden","recommendedIds","Object","keys","components","NcButton","data","showInstallButton","installingApps","loadingApps","loadingAppsError","apps","defaultPageUrl","loadState","computed","recommendedApps","filter","app","includes","id","axios","generateUrl","logger","concat","length","map","assign","loading","installationError","error","methods","installApps","limit","pLimit","installing","active","isCompatible","canInstall","appIds","groups","catch","then","Promise","all","window","location","customIcon","appId","customName","customDescription","isHidden","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_c","_self","staticClass","_v","_s","_e","_l","key","attrs","domProps","on","$event","stopPropagation","preventDefault","apply","arguments","__webpack_nonce__","btoa","getRequestToken","Vue","RecommendedApps","$mount","debug","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","value","nmd","paths","children","b","document","baseURI","self","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/files-reference-files.js b/dist/files-reference-files.js
index c214b19e081..afa6828dd4f 100644
--- a/dist/files-reference-files.js
+++ b/dist/files-reference-files.js
@@ -1,3 +1,3 @@
/*! For license information please see files-reference-files.js.LICENSE.txt */
-(()=>{"use strict";var e,i={90072:(e,i,n)=>{var o=n(20144),r=n(31352),a=n(86680),l=n(79753),s=n(62520),c=n.n(s),d=n(25108);const A={name:"ReferenceFileWidget",props:{richObject:{type:Object,required:!0},accessible:{type:Boolean,default:!0}},data(){return{previewUrl:window.OC.MimeType.getIconUrl(this.richObject.mimetype)}},computed:{fileSize(){return window.OC.Util.humanFileSize(this.richObject.size)},fileMtime(){return window.OC.Util.relativeModifiedDate(1e3*this.richObject.mtime)},filePath(){return c().dirname(this.richObject.path)},filePreview(){return this.previewUrl?{backgroundImage:"url("+this.previewUrl+")"}:{backgroundImage:"url("+window.OC.MimeType.getIconUrl(this.richObject.mimetype)+")"}},filePreviewClass(){return this.previewUrl?"widget-file--image--preview":"widget-file--image--icon"}},mounted(){if(this.richObject["preview-available"]){const e=(0,l.generateUrl)("/core/preview?fileId={fileId}&x=250&y=250",{fileId:this.richObject.id}),t=new Image;t.onload=()=>{this.previewUrl=e},t.onerror=e=>{d.error("could not load recommendation preview",e)},t.src=e}},methods:{navigate(){OCA.Viewer&&-1!==OCA.Viewer.mimetypes.indexOf(this.richObject.mimetype)?OCA.Viewer.open({path:this.richObject.path}):window.location=(0,l.generateUrl)("/f/"+this.id)}}};var p=n(93379),f=n.n(p),C=n(7795),g=n.n(C),w=n(90569),m=n.n(w),v=n(3565),u=n.n(v),h=n(19216),b=n.n(h),x=n(44589),k=n.n(x),y=n(87536),O={};O.styleTagTransform=k(),O.setAttributes=u(),O.insert=m().bind(null,"head"),O.domAPI=g(),O.insertStyleElement=b(),f()(y.Z,O),y.Z&&y.Z.locals&&y.Z.locals;var j=n(51900);const B=(0,j.Z)(A,(function(){var e=this,t=e._self._c;return e.accessible?t("a",{staticClass:"widget-file",attrs:{href:e.richObject.link},on:{click:function(t){return t.preventDefault(),e.navigate.apply(null,arguments)}}},[t("div",{staticClass:"widget-file--image",class:e.filePreviewClass,style:e.filePreview}),e._v(" "),t("div",{staticClass:"widget-file--details"},[t("p",{staticClass:"widget-file--title"},[e._v(e._s(e.richObject.name))]),e._v(" "),t("p",{staticClass:"widget-file--description"},[e._v(e._s(e.fileSize)),t("br"),e._v(e._s(e.fileMtime))]),e._v(" "),t("p",{staticClass:"widget-file--link"},[e._v(e._s(e.filePath))])])]):t("div",{staticClass:"widget-file widget-file--no-access"},[t("div",{staticClass:"widget-file--image widget-file--image--icon icon-folder"}),e._v(" "),t("div",{staticClass:"widget-file--details"},[t("p",{staticClass:"widget-file--title"},[e._v("\n\t\t\t"+e._s(e.t("files","File cannot be accessed"))+"\n\t\t")]),e._v(" "),t("p",{staticClass:"widget-file--description"},[e._v("\n\t\t\t"+e._s(e.t("files","You might not have have permissions to view it, ask the sender to share it"))+"\n\t\t")])])])}),[],!1,null,"88e0217c",null).exports;var _=n(64024);const I={name:"FileReferencePickerElement",components:{},props:{providerId:{type:String,required:!0},accessible:{type:Boolean,default:!1}},mounted(){this.openFilePicker(),window.addEventListener("click",this.onWindowClick)},beforeDestroy(){window.removeEventListener("click",this.onWindowClick)},methods:{onWindowClick(e){"A"===e.target.tagName&&e.target.classList.contains("oc-dialog-close")&&this.$emit("cancel")},async openFilePicker(){OC.dialogs.filepicker(t("files","Select file or folder to link to"),(e=>{OC.Files.getClient().getFileInfo(e).then(((e,t)=>{this.submit(t.id)}))}),!1,[],!1,_.K9.Choose,"",{target:this.$refs.picker})},submit(e){const t=window.location.protocol+"//"+window.location.host+(0,l.generateUrl)("/f/{fileId}",{fileId:e});this.$emit("submit",t)}}};var P=n(99999),E={};E.styleTagTransform=k(),E.setAttributes=u(),E.insert=m().bind(null,"head"),E.domAPI=g(),E.insertStyleElement=b(),f()(P.Z,E),P.Z&&P.Z.locals&&P.Z.locals;const F=(0,j.Z)(I,(function(){return(0,this._self._c)("div",{ref:"picker",staticClass:"reference-file-picker"})}),[],!1,null,"087c9640",null).exports;o.default.mixin({methods:{t:r.Iu}}),(0,a.registerWidget)("file",((e,t)=>{let{richObjectType:i,richObject:n,accessible:r}=t;new(o.default.extend(B))({propsData:{richObjectType:i,richObject:n,accessible:r}}).$mount(e)})),(0,a.registerCustomPickerElement)("files",((e,t)=>{let{providerId:i,accessible:n}=t;const r=new(o.default.extend(F))({propsData:{providerId:i,accessible:n}}).$mount(e);return new a.NcCustomPickerRenderResult(r.$el,r)}),((e,t)=>{t.object.$destroy()}))},99999:(e,t,i)=>{i.d(t,{Z:()=>l});var n=i(87537),o=i.n(n),r=i(23645),a=i.n(r)()(o());a.push([e.id,".reference-file-picker[data-v-087c9640]{flex-grow:1;margin-top:44px}.reference-file-picker[data-v-087c9640] .oc-dialog{transform:none !important;box-shadow:none !important;flex-grow:1 !important;position:static !important;width:100% !important;height:auto !important;padding:0 !important;max-width:initial}.reference-file-picker[data-v-087c9640] .oc-dialog .oc-dialog-close{display:none}.reference-file-picker[data-v-087c9640] .oc-dialog .oc-dialog-buttonrow.onebutton.aside{position:absolute;padding:12px 32px}.reference-file-picker[data-v-087c9640] .oc-dialog .oc-dialog-content{max-width:100% !important}","",{version:3,sources:["webpack://./apps/files/src/views/FileReferencePickerElement.vue"],names:[],mappings:"AACA,wCACC,WAAA,CACA,eAAA,CAEA,mDACC,yBAAA,CACA,0BAAA,CACA,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,sBAAA,CACA,oBAAA,CACA,iBAAA,CAEA,oEACC,YAAA,CAGD,wFACC,iBAAA,CACA,iBAAA,CAGD,sEACC,yBAAA",sourcesContent:["\n.reference-file-picker {\n\tflex-grow: 1;\n\tmargin-top: 44px;\n\n\t&:deep(.oc-dialog) {\n\t\ttransform: none !important;\n\t\tbox-shadow: none !important;\n\t\tflex-grow: 1 !important;\n\t\tposition: static !important;\n\t\twidth: 100% !important;\n\t\theight: auto !important;\n\t\tpadding: 0 !important;\n\t\tmax-width: initial;\n\n\t\t.oc-dialog-close {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\t.oc-dialog-buttonrow.onebutton.aside {\n\t\t\tposition: absolute;\n\t\t\tpadding: 12px 32px;\n\t\t}\n\n\t\t.oc-dialog-content {\n\t\t\tmax-width: 100% !important;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const l=a},87536:(e,t,i)=>{i.d(t,{Z:()=>l});var n=i(87537),o=i.n(n),r=i(23645),a=i.n(r)()(o());a.push([e.id,".widget-file[data-v-88e0217c]{display:flex;flex-grow:1;color:var(--color-main-text) !important;text-decoration:none !important}.widget-file--image[data-v-88e0217c]{min-width:40%;background-position:center;background-size:cover;background-repeat:no-repeat}.widget-file--image.widget-file--image--icon[data-v-88e0217c]{min-width:88px;background-size:44px}.widget-file--title[data-v-88e0217c]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:bold}.widget-file--details[data-v-88e0217c]{padding:12px;flex-grow:1;display:flex;flex-direction:column}.widget-file--details p[data-v-88e0217c]{margin:0;padding:0}.widget-file--description[data-v-88e0217c]{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical}.widget-file--link[data-v-88e0217c]{color:var(--color-text-maxcontrast)}.widget-file.widget-file--no-access[data-v-88e0217c]{padding:12px}.widget-file.widget-file--no-access .widget-file--details[data-v-88e0217c]{padding:0}","",{version:3,sources:["webpack://./apps/files/src/views/ReferenceFileWidget.vue"],names:[],mappings:"AACA,8BACC,YAAA,CACA,WAAA,CACA,uCAAA,CACA,+BAAA,CAEA,qCACC,aAAA,CACA,0BAAA,CACA,qBAAA,CACA,2BAAA,CAEA,8DACC,cAAA,CACA,oBAAA,CAIF,qCACC,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,gBAAA,CAGD,uCACC,YAAA,CACA,WAAA,CACA,YAAA,CACA,qBAAA,CAEA,yCACC,QAAA,CACA,SAAA,CAIF,2CACC,eAAA,CACA,sBAAA,CACA,mBAAA,CACA,oBAAA,CACA,YAAA,CACA,2BAAA,CAGD,oCACC,mCAAA,CAGD,qDACC,YAAA,CAEA,2EACC,SAAA",sourcesContent:["\n.widget-file {\n\tdisplay: flex;\n\tflex-grow: 1;\n\tcolor: var(--color-main-text) !important;\n\ttext-decoration: none !important;\n\n\t&--image {\n\t\tmin-width: 40%;\n\t\tbackground-position: center;\n\t\tbackground-size: cover;\n\t\tbackground-repeat: no-repeat;\n\n\t\t&.widget-file--image--icon {\n\t\t\tmin-width: 88px;\n\t\t\tbackground-size: 44px;\n\t\t}\n\t}\n\n\t&--title {\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\twhite-space: nowrap;\n\t\tfont-weight: bold;\n\t}\n\n\t&--details {\n\t\tpadding: 12px;\n\t\tflex-grow: 1;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\n\t\tp {\n\t\t\tmargin: 0;\n\t\t\tpadding: 0;\n\t\t}\n\t}\n\n\t&--description {\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 3;\n\t\tline-clamp: 3;\n\t\t-webkit-box-orient: vertical;\n\t}\n\n\t&--link {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t&.widget-file--no-access {\n\t\tpadding: 12px;\n\n\t\t.widget-file--details {\n\t\t\tpadding: 0;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const l=a}},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,i,n,r)=>{if(!i){var a=1/0;for(d=0;d<e.length;d++){i=e[d][0],n=e[d][1],r=e[d][2];for(var l=!0,s=0;s<i.length;s++)(!1&r||a>=r)&&Object.keys(o.O).every((e=>o.O[e](i[s])))?i.splice(s--,1):(l=!1,r<a&&(a=r));if(l){e.splice(d--,1);var c=n();void 0!==c&&(t=c)}}return t}r=r||0;for(var d=e.length;d>0&&e[d-1][2]>r;d--)e[d]=e[d-1];e[d]=[i,n,r]},o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var i in t)o.o(t,i)&&!o.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),o.j=9098,(()=>{o.b=document.baseURI||self.location.href;var e={9098:0};o.O.j=t=>0===e[t];var t=(t,i)=>{var n,r,a=i[0],l=i[1],s=i[2],c=0;if(a.some((t=>0!==e[t]))){for(n in l)o.o(l,n)&&(o.m[n]=l[n]);if(s)var d=s(o)}for(t&&t(i);c<a.length;c++)r=a[c],o.o(e,r)&&e[r]&&e[r][0](),e[r]=0;return o.O(d)},i=self.webpackChunknextcloud=self.webpackChunknextcloud||[];i.forEach(t.bind(null,0)),i.push=t.bind(null,i.push.bind(i))})(),o.nc=void 0;var r=o.O(void 0,[7874],(()=>o(90072)));r=o.O(r)})();
-//# sourceMappingURL=files-reference-files.js.map?v=95daac366f4df4b551c4 \ No newline at end of file
+(()=>{"use strict";var e,i={13057:(e,i,n)=>{var o=n(20144),r=n(31352),a=n(86680),l=n(79753),s=n(62520),d=n.n(s),c=n(25108);const A={name:"ReferenceFileWidget",props:{richObject:{type:Object,required:!0},accessible:{type:Boolean,default:!0}},data(){return{previewUrl:window.OC.MimeType.getIconUrl(this.richObject.mimetype)}},computed:{fileSize(){return window.OC.Util.humanFileSize(this.richObject.size)},fileMtime(){return window.OC.Util.relativeModifiedDate(1e3*this.richObject.mtime)},filePath(){return d().dirname(this.richObject.path)},filePreview(){return this.previewUrl?{backgroundImage:"url("+this.previewUrl+")"}:{backgroundImage:"url("+window.OC.MimeType.getIconUrl(this.richObject.mimetype)+")"}},filePreviewClass(){return this.previewUrl?"widget-file--image--preview":"widget-file--image--icon"}},mounted(){if(this.richObject["preview-available"]){const e=(0,l.generateUrl)("/core/preview?fileId={fileId}&x=250&y=250",{fileId:this.richObject.id}),t=new Image;t.onload=()=>{this.previewUrl=e},t.onerror=e=>{c.error("could not load recommendation preview",e)},t.src=e}},methods:{navigate(){OCA.Viewer&&-1!==OCA.Viewer.mimetypes.indexOf(this.richObject.mimetype)?OCA.Viewer.open({path:this.richObject.path}):window.location=this.richObject.link}}};var p=n(93379),f=n.n(p),C=n(7795),g=n.n(C),w=n(90569),m=n.n(w),v=n(3565),u=n.n(v),h=n(19216),b=n.n(h),x=n(44589),k=n.n(x),y=n(7574),O={};O.styleTagTransform=k(),O.setAttributes=u(),O.insert=m().bind(null,"head"),O.domAPI=g(),O.insertStyleElement=b(),f()(y.Z,O),y.Z&&y.Z.locals&&y.Z.locals;var j=n(51900);const B=(0,j.Z)(A,(function(){var e=this,t=e._self._c;return e.accessible?t("a",{staticClass:"widget-file",attrs:{href:e.richObject.link},on:{click:function(t){return t.preventDefault(),e.navigate.apply(null,arguments)}}},[t("div",{staticClass:"widget-file--image",class:e.filePreviewClass,style:e.filePreview}),e._v(" "),t("div",{staticClass:"widget-file--details"},[t("p",{staticClass:"widget-file--title"},[e._v(e._s(e.richObject.name))]),e._v(" "),t("p",{staticClass:"widget-file--description"},[e._v(e._s(e.fileSize)),t("br"),e._v(e._s(e.fileMtime))]),e._v(" "),t("p",{staticClass:"widget-file--link"},[e._v(e._s(e.filePath))])])]):t("div",{staticClass:"widget-file widget-file--no-access"},[t("div",{staticClass:"widget-file--image widget-file--image--icon icon-folder"}),e._v(" "),t("div",{staticClass:"widget-file--details"},[t("p",{staticClass:"widget-file--title"},[e._v("\n\t\t\t"+e._s(e.t("files","File cannot be accessed"))+"\n\t\t")]),e._v(" "),t("p",{staticClass:"widget-file--description"},[e._v("\n\t\t\t"+e._s(e.t("files","You might not have have permissions to view it, ask the sender to share it"))+"\n\t\t")])])])}),[],!1,null,"3f729da0",null).exports;var _=n(64024);const I={name:"FileReferencePickerElement",components:{},props:{providerId:{type:String,required:!0},accessible:{type:Boolean,default:!1}},mounted(){this.openFilePicker(),window.addEventListener("click",this.onWindowClick)},beforeDestroy(){window.removeEventListener("click",this.onWindowClick)},methods:{onWindowClick(e){"A"===e.target.tagName&&e.target.classList.contains("oc-dialog-close")&&this.$emit("cancel")},async openFilePicker(){OC.dialogs.filepicker(t("files","Select file or folder to link to"),(e=>{OC.Files.getClient().getFileInfo(e).then(((e,t)=>{this.submit(t.id)}))}),!1,[],!1,_.K9.Choose,"",{target:this.$refs.picker})},submit(e){const t=window.location.protocol+"//"+window.location.host+(0,l.generateUrl)("/f/{fileId}",{fileId:e});this.$emit("submit",t)}}};var P=n(99999),E={};E.styleTagTransform=k(),E.setAttributes=u(),E.insert=m().bind(null,"head"),E.domAPI=g(),E.insertStyleElement=b(),f()(P.Z,E),P.Z&&P.Z.locals&&P.Z.locals;const F=(0,j.Z)(I,(function(){return(0,this._self._c)("div",{ref:"picker",staticClass:"reference-file-picker"})}),[],!1,null,"087c9640",null).exports;o.default.mixin({methods:{t:r.Iu}}),(0,a.registerWidget)("file",((e,t)=>{let{richObjectType:i,richObject:n,accessible:r}=t;new(o.default.extend(B))({propsData:{richObjectType:i,richObject:n,accessible:r}}).$mount(e)})),(0,a.registerCustomPickerElement)("files",((e,t)=>{let{providerId:i,accessible:n}=t;const r=new(o.default.extend(F))({propsData:{providerId:i,accessible:n}}).$mount(e);return new a.NcCustomPickerRenderResult(r.$el,r)}),((e,t)=>{t.object.$destroy()}))},99999:(e,t,i)=>{i.d(t,{Z:()=>l});var n=i(87537),o=i.n(n),r=i(23645),a=i.n(r)()(o());a.push([e.id,".reference-file-picker[data-v-087c9640]{flex-grow:1;margin-top:44px}.reference-file-picker[data-v-087c9640] .oc-dialog{transform:none !important;box-shadow:none !important;flex-grow:1 !important;position:static !important;width:100% !important;height:auto !important;padding:0 !important;max-width:initial}.reference-file-picker[data-v-087c9640] .oc-dialog .oc-dialog-close{display:none}.reference-file-picker[data-v-087c9640] .oc-dialog .oc-dialog-buttonrow.onebutton.aside{position:absolute;padding:12px 32px}.reference-file-picker[data-v-087c9640] .oc-dialog .oc-dialog-content{max-width:100% !important}","",{version:3,sources:["webpack://./apps/files/src/views/FileReferencePickerElement.vue"],names:[],mappings:"AACA,wCACC,WAAA,CACA,eAAA,CAEA,mDACC,yBAAA,CACA,0BAAA,CACA,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,sBAAA,CACA,oBAAA,CACA,iBAAA,CAEA,oEACC,YAAA,CAGD,wFACC,iBAAA,CACA,iBAAA,CAGD,sEACC,yBAAA",sourcesContent:["\n.reference-file-picker {\n\tflex-grow: 1;\n\tmargin-top: 44px;\n\n\t&:deep(.oc-dialog) {\n\t\ttransform: none !important;\n\t\tbox-shadow: none !important;\n\t\tflex-grow: 1 !important;\n\t\tposition: static !important;\n\t\twidth: 100% !important;\n\t\theight: auto !important;\n\t\tpadding: 0 !important;\n\t\tmax-width: initial;\n\n\t\t.oc-dialog-close {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\t.oc-dialog-buttonrow.onebutton.aside {\n\t\t\tposition: absolute;\n\t\t\tpadding: 12px 32px;\n\t\t}\n\n\t\t.oc-dialog-content {\n\t\t\tmax-width: 100% !important;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const l=a},7574:(e,t,i)=>{i.d(t,{Z:()=>l});var n=i(87537),o=i.n(n),r=i(23645),a=i.n(r)()(o());a.push([e.id,".widget-file[data-v-3f729da0]{display:flex;flex-grow:1;color:var(--color-main-text) !important;text-decoration:none !important}.widget-file--image[data-v-3f729da0]{min-width:40%;background-position:center;background-size:cover;background-repeat:no-repeat}.widget-file--image.widget-file--image--icon[data-v-3f729da0]{min-width:88px;background-size:44px}.widget-file--title[data-v-3f729da0]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:bold}.widget-file--details[data-v-3f729da0]{padding:12px;flex-grow:1;display:flex;flex-direction:column}.widget-file--details p[data-v-3f729da0]{margin:0;padding:0}.widget-file--description[data-v-3f729da0]{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical}.widget-file--link[data-v-3f729da0]{color:var(--color-text-maxcontrast)}.widget-file.widget-file--no-access[data-v-3f729da0]{padding:12px}.widget-file.widget-file--no-access .widget-file--details[data-v-3f729da0]{padding:0}","",{version:3,sources:["webpack://./apps/files/src/views/ReferenceFileWidget.vue"],names:[],mappings:"AACA,8BACC,YAAA,CACA,WAAA,CACA,uCAAA,CACA,+BAAA,CAEA,qCACC,aAAA,CACA,0BAAA,CACA,qBAAA,CACA,2BAAA,CAEA,8DACC,cAAA,CACA,oBAAA,CAIF,qCACC,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,gBAAA,CAGD,uCACC,YAAA,CACA,WAAA,CACA,YAAA,CACA,qBAAA,CAEA,yCACC,QAAA,CACA,SAAA,CAIF,2CACC,eAAA,CACA,sBAAA,CACA,mBAAA,CACA,oBAAA,CACA,YAAA,CACA,2BAAA,CAGD,oCACC,mCAAA,CAGD,qDACC,YAAA,CAEA,2EACC,SAAA",sourcesContent:["\n.widget-file {\n\tdisplay: flex;\n\tflex-grow: 1;\n\tcolor: var(--color-main-text) !important;\n\ttext-decoration: none !important;\n\n\t&--image {\n\t\tmin-width: 40%;\n\t\tbackground-position: center;\n\t\tbackground-size: cover;\n\t\tbackground-repeat: no-repeat;\n\n\t\t&.widget-file--image--icon {\n\t\t\tmin-width: 88px;\n\t\t\tbackground-size: 44px;\n\t\t}\n\t}\n\n\t&--title {\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\twhite-space: nowrap;\n\t\tfont-weight: bold;\n\t}\n\n\t&--details {\n\t\tpadding: 12px;\n\t\tflex-grow: 1;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\n\t\tp {\n\t\t\tmargin: 0;\n\t\t\tpadding: 0;\n\t\t}\n\t}\n\n\t&--description {\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 3;\n\t\tline-clamp: 3;\n\t\t-webkit-box-orient: vertical;\n\t}\n\n\t&--link {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t&.widget-file--no-access {\n\t\tpadding: 12px;\n\n\t\t.widget-file--details {\n\t\t\tpadding: 0;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const l=a}},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,i,n,r)=>{if(!i){var a=1/0;for(c=0;c<e.length;c++){i=e[c][0],n=e[c][1],r=e[c][2];for(var l=!0,s=0;s<i.length;s++)(!1&r||a>=r)&&Object.keys(o.O).every((e=>o.O[e](i[s])))?i.splice(s--,1):(l=!1,r<a&&(a=r));if(l){e.splice(c--,1);var d=n();void 0!==d&&(t=d)}}return t}r=r||0;for(var c=e.length;c>0&&e[c-1][2]>r;c--)e[c]=e[c-1];e[c]=[i,n,r]},o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var i in t)o.o(t,i)&&!o.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),o.j=9098,(()=>{o.b=document.baseURI||self.location.href;var e={9098:0};o.O.j=t=>0===e[t];var t=(t,i)=>{var n,r,a=i[0],l=i[1],s=i[2],d=0;if(a.some((t=>0!==e[t]))){for(n in l)o.o(l,n)&&(o.m[n]=l[n]);if(s)var c=s(o)}for(t&&t(i);d<a.length;d++)r=a[d],o.o(e,r)&&e[r]&&e[r][0](),e[r]=0;return o.O(c)},i=self.webpackChunknextcloud=self.webpackChunknextcloud||[];i.forEach(t.bind(null,0)),i.push=t.bind(null,i.push.bind(i))})(),o.nc=void 0;var r=o.O(void 0,[7874],(()=>o(13057)));r=o.O(r)})();
+//# sourceMappingURL=files-reference-files.js.map?v=0e59efe2da30e1477cbb \ No newline at end of file
diff --git a/dist/files-reference-files.js.map b/dist/files-reference-files.js.map
index b1dbeedcda6..5d7f1317317 100644
--- a/dist/files-reference-files.js.map
+++ b/dist/files-reference-files.js.map
@@ -1 +1 @@
-{"version":3,"file":"files-reference-files.js?v=95daac366f4df4b551c4","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/files/src/views/ReferenceFileWidget.vue","webpack:///nextcloud/apps/files/src/views/ReferenceFileWidget.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files/src/views/ReferenceFileWidget.vue?42cb","webpack://nextcloud/./apps/files/src/views/ReferenceFileWidget.vue?1c02","webpack://nextcloud/./apps/files/src/views/ReferenceFileWidget.vue?6acb","webpack://nextcloud/./apps/files/src/views/FileReferencePickerElement.vue?50c6","webpack:///nextcloud/apps/files/src/views/FileReferencePickerElement.vue","webpack:///nextcloud/apps/files/src/views/FileReferencePickerElement.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files/src/views/FileReferencePickerElement.vue?27dc","webpack://nextcloud/./apps/files/src/views/FileReferencePickerElement.vue?71ed","webpack:///nextcloud/apps/files/src/reference-files.js","webpack:///nextcloud/apps/files/src/views/FileReferencePickerElement.vue?vue&type=style&index=0&id=087c9640&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/files/src/views/ReferenceFileWidget.vue?vue&type=style&index=0&id=88e0217c&prod&lang=scss&scoped=true&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","<!--\n - @copyright Copyright (c) 2022 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -->\n\n<template>\n\t<div v-if=\"!accessible\" class=\"widget-file widget-file--no-access\">\n\t\t<div class=\"widget-file--image widget-file--image--icon icon-folder\" />\n\t\t<div class=\"widget-file--details\">\n\t\t\t<p class=\"widget-file--title\">\n\t\t\t\t{{ t('files', 'File cannot be accessed') }}\n\t\t\t</p>\n\t\t\t<p class=\"widget-file--description\">\n\t\t\t\t{{ t('files', 'You might not have have permissions to view it, ask the sender to share it') }}\n\t\t\t</p>\n\t\t</div>\n\t</div>\n\t<a v-else\n\t\tclass=\"widget-file\"\n\t\t:href=\"richObject.link\"\n\t\t@click.prevent=\"navigate\">\n\t\t<div class=\"widget-file--image\" :class=\"filePreviewClass\" :style=\"filePreview\" />\n\t\t<div class=\"widget-file--details\">\n\t\t\t<p class=\"widget-file--title\">{{ richObject.name }}</p>\n\t\t\t<p class=\"widget-file--description\">{{ fileSize }}<br>{{ fileMtime }}</p>\n\t\t\t<p class=\"widget-file--link\">{{ filePath }}</p>\n\t\t</div>\n\t</a>\n</template>\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport path from 'path'\n\nexport default {\n\tname: 'ReferenceFileWidget',\n\tprops: {\n\t\trichObject: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\taccessible: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tpreviewUrl: window.OC.MimeType.getIconUrl(this.richObject.mimetype),\n\t\t}\n\t},\n\tcomputed: {\n\t\tfileSize() {\n\t\t\treturn window.OC.Util.humanFileSize(this.richObject.size)\n\t\t},\n\t\tfileMtime() {\n\t\t\treturn window.OC.Util.relativeModifiedDate(this.richObject.mtime * 1000)\n\t\t},\n\t\tfilePath() {\n\t\t\treturn path.dirname(this.richObject.path)\n\t\t},\n\t\tfilePreview() {\n\t\t\tif (this.previewUrl) {\n\t\t\t\treturn {\n\t\t\t\t\tbackgroundImage: 'url(' + this.previewUrl + ')',\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tbackgroundImage: 'url(' + window.OC.MimeType.getIconUrl(this.richObject.mimetype) + ')',\n\t\t\t}\n\n\t\t},\n\t\tfilePreviewClass() {\n\t\t\tif (this.previewUrl) {\n\t\t\t\treturn 'widget-file--image--preview'\n\t\t\t}\n\t\t\treturn 'widget-file--image--icon'\n\n\t\t},\n\t},\n\tmounted() {\n\t\tif (this.richObject['preview-available']) {\n\t\t\tconst previewUrl = generateUrl('/core/preview?fileId={fileId}&x=250&y=250', {\n\t\t\t\tfileId: this.richObject.id,\n\t\t\t})\n\t\t\tconst img = new Image()\n\t\t\timg.onload = () => {\n\t\t\t\tthis.previewUrl = previewUrl\n\t\t\t}\n\t\t\timg.onerror = err => {\n\t\t\t\tconsole.error('could not load recommendation preview', err)\n\t\t\t}\n\t\t\timg.src = previewUrl\n\t\t}\n\t},\n\tmethods: {\n\t\tnavigate() {\n\t\t\tif (OCA.Viewer && OCA.Viewer.mimetypes.indexOf(this.richObject.mimetype) !== -1) {\n\t\t\t\tOCA.Viewer.open({ path: this.richObject.path })\n\t\t\t\treturn\n\t\t\t}\n\t\t\twindow.location = generateUrl('/f/' + this.id)\n\t\t},\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n.widget-file {\n\tdisplay: flex;\n\tflex-grow: 1;\n\tcolor: var(--color-main-text) !important;\n\ttext-decoration: none !important;\n\n\t&--image {\n\t\tmin-width: 40%;\n\t\tbackground-position: center;\n\t\tbackground-size: cover;\n\t\tbackground-repeat: no-repeat;\n\n\t\t&.widget-file--image--icon {\n\t\t\tmin-width: 88px;\n\t\t\tbackground-size: 44px;\n\t\t}\n\t}\n\n\t&--title {\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\twhite-space: nowrap;\n\t\tfont-weight: bold;\n\t}\n\n\t&--details {\n\t\tpadding: 12px;\n\t\tflex-grow: 1;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\n\t\tp {\n\t\t\tmargin: 0;\n\t\t\tpadding: 0;\n\t\t}\n\t}\n\n\t&--description {\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 3;\n\t\tline-clamp: 3;\n\t\t-webkit-box-orient: vertical;\n\t}\n\n\t&--link {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t&.widget-file--no-access {\n\t\tpadding: 12px;\n\n\t\t.widget-file--details {\n\t\t\tpadding: 0;\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReferenceFileWidget.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!./ReferenceFileWidget.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!./ReferenceFileWidget.vue?vue&type=style&index=0&id=88e0217c&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReferenceFileWidget.vue?vue&type=style&index=0&id=88e0217c&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ReferenceFileWidget.vue?vue&type=template&id=88e0217c&scoped=true&\"\nimport script from \"./ReferenceFileWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./ReferenceFileWidget.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ReferenceFileWidget.vue?vue&type=style&index=0&id=88e0217c&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 \"88e0217c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (!_vm.accessible)?_c('div',{staticClass:\"widget-file widget-file--no-access\"},[_c('div',{staticClass:\"widget-file--image widget-file--image--icon icon-folder\"}),_vm._v(\" \"),_c('div',{staticClass:\"widget-file--details\"},[_c('p',{staticClass:\"widget-file--title\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'File cannot be accessed'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('p',{staticClass:\"widget-file--description\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'You might not have have permissions to view it, ask the sender to share it'))+\"\\n\\t\\t\")])])]):_c('a',{staticClass:\"widget-file\",attrs:{\"href\":_vm.richObject.link},on:{\"click\":function($event){$event.preventDefault();return _vm.navigate.apply(null, arguments)}}},[_c('div',{staticClass:\"widget-file--image\",class:_vm.filePreviewClass,style:(_vm.filePreview)}),_vm._v(\" \"),_c('div',{staticClass:\"widget-file--details\"},[_c('p',{staticClass:\"widget-file--title\"},[_vm._v(_vm._s(_vm.richObject.name))]),_vm._v(\" \"),_c('p',{staticClass:\"widget-file--description\"},[_vm._v(_vm._s(_vm.fileSize)),_c('br'),_vm._v(_vm._s(_vm.fileMtime))]),_vm._v(\" \"),_c('p',{staticClass:\"widget-file--link\"},[_vm._v(_vm._s(_vm.filePath))])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:\"picker\",staticClass:\"reference-file-picker\"})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2023 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -->\n\n<template>\n\t<div ref=\"picker\" class=\"reference-file-picker\" />\n</template>\n\n<script>\nimport { FilePickerType } from '@nextcloud/dialogs'\nimport { generateUrl } from '@nextcloud/router'\nexport default {\n\tname: 'FileReferencePickerElement',\n\tcomponents: {\n\t},\n\tprops: {\n\t\tproviderId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\taccessible: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.openFilePicker()\n\t\twindow.addEventListener('click', this.onWindowClick)\n\t},\n\tbeforeDestroy() {\n\t\twindow.removeEventListener('click', this.onWindowClick)\n\t},\n\tmethods: {\n\t\tonWindowClick(e) {\n\t\t\tif (e.target.tagName === 'A' && e.target.classList.contains('oc-dialog-close')) {\n\t\t\t\tthis.$emit('cancel')\n\t\t\t}\n\t\t},\n\t\tasync openFilePicker() {\n\t\t\tOC.dialogs.filepicker(\n\t\t\t\tt('files', 'Select file or folder to link to'),\n\t\t\t\t(file) => {\n\t\t\t\t\tconst client = OC.Files.getClient()\n\t\t\t\t\tclient.getFileInfo(file).then((_status, fileInfo) => {\n\t\t\t\t\t\tthis.submit(fileInfo.id)\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t\tfalse, // multiselect\n\t\t\t\t[], // mime filter\n\t\t\t\tfalse, // modal\n\t\t\t\tFilePickerType.Choose, // type\n\t\t\t\t'',\n\t\t\t\t{\n\t\t\t\t\ttarget: this.$refs.picker,\n\t\t\t\t},\n\t\t\t)\n\t\t},\n\t\tsubmit(fileId) {\n\t\t\tconst fileLink = window.location.protocol + '//' + window.location.host\n\t\t\t\t+ generateUrl('/f/{fileId}', { fileId })\n\t\t\tthis.$emit('submit', fileLink)\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.reference-file-picker {\n\tflex-grow: 1;\n\tmargin-top: 44px;\n\n\t&:deep(.oc-dialog) {\n\t\ttransform: none !important;\n\t\tbox-shadow: none !important;\n\t\tflex-grow: 1 !important;\n\t\tposition: static !important;\n\t\twidth: 100% !important;\n\t\theight: auto !important;\n\t\tpadding: 0 !important;\n\t\tmax-width: initial;\n\n\t\t.oc-dialog-close {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\t.oc-dialog-buttonrow.onebutton.aside {\n\t\t\tposition: absolute;\n\t\t\tpadding: 12px 32px;\n\t\t}\n\n\t\t.oc-dialog-content {\n\t\t\tmax-width: 100% !important;\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!./FileReferencePickerElement.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!./FileReferencePickerElement.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!./FileReferencePickerElement.vue?vue&type=style&index=0&id=087c9640&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileReferencePickerElement.vue?vue&type=style&index=0&id=087c9640&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileReferencePickerElement.vue?vue&type=template&id=087c9640&scoped=true&\"\nimport script from \"./FileReferencePickerElement.vue?vue&type=script&lang=js&\"\nexport * from \"./FileReferencePickerElement.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FileReferencePickerElement.vue?vue&type=style&index=0&id=087c9640&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 \"087c9640\",\n null\n \n)\n\nexport default component.exports","/**\n * @copyright Copyright (c) 2022 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport Vue from 'vue'\nimport { translate as t } from '@nextcloud/l10n'\n\nimport { registerWidget, registerCustomPickerElement, NcCustomPickerRenderResult } from '@nextcloud/vue/dist/Components/NcRichText.js'\n\nimport FileWidget from './views/ReferenceFileWidget.vue'\nimport FileReferencePickerElement from './views/FileReferencePickerElement.vue'\n\nVue.mixin({\n\tmethods: {\n\t\tt,\n\t},\n})\n\nregisterWidget('file', (el, { richObjectType, richObject, accessible }) => {\n\tconst Widget = Vue.extend(FileWidget)\n\tnew Widget({\n\t\tpropsData: {\n\t\t\trichObjectType,\n\t\t\trichObject,\n\t\t\taccessible,\n\t\t},\n\t}).$mount(el)\n})\n\nregisterCustomPickerElement('files', (el, { providerId, accessible }) => {\n\tconst Element = Vue.extend(FileReferencePickerElement)\n\tconst vueElement = new Element({\n\t\tpropsData: {\n\t\t\tproviderId,\n\t\t\taccessible,\n\t\t},\n\t}).$mount(el)\n\treturn new NcCustomPickerRenderResult(vueElement.$el, vueElement)\n}, (el, renderResult) => {\n\trenderResult.object.$destroy()\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, \".reference-file-picker[data-v-087c9640]{flex-grow:1;margin-top:44px}.reference-file-picker[data-v-087c9640] .oc-dialog{transform:none !important;box-shadow:none !important;flex-grow:1 !important;position:static !important;width:100% !important;height:auto !important;padding:0 !important;max-width:initial}.reference-file-picker[data-v-087c9640] .oc-dialog .oc-dialog-close{display:none}.reference-file-picker[data-v-087c9640] .oc-dialog .oc-dialog-buttonrow.onebutton.aside{position:absolute;padding:12px 32px}.reference-file-picker[data-v-087c9640] .oc-dialog .oc-dialog-content{max-width:100% !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/FileReferencePickerElement.vue\"],\"names\":[],\"mappings\":\"AACA,wCACC,WAAA,CACA,eAAA,CAEA,mDACC,yBAAA,CACA,0BAAA,CACA,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,sBAAA,CACA,oBAAA,CACA,iBAAA,CAEA,oEACC,YAAA,CAGD,wFACC,iBAAA,CACA,iBAAA,CAGD,sEACC,yBAAA\",\"sourcesContent\":[\"\\n.reference-file-picker {\\n\\tflex-grow: 1;\\n\\tmargin-top: 44px;\\n\\n\\t&:deep(.oc-dialog) {\\n\\t\\ttransform: none !important;\\n\\t\\tbox-shadow: none !important;\\n\\t\\tflex-grow: 1 !important;\\n\\t\\tposition: static !important;\\n\\t\\twidth: 100% !important;\\n\\t\\theight: auto !important;\\n\\t\\tpadding: 0 !important;\\n\\t\\tmax-width: initial;\\n\\n\\t\\t.oc-dialog-close {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\n\\t\\t.oc-dialog-buttonrow.onebutton.aside {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tpadding: 12px 32px;\\n\\t\\t}\\n\\n\\t\\t.oc-dialog-content {\\n\\t\\t\\tmax-width: 100% !important;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".widget-file[data-v-88e0217c]{display:flex;flex-grow:1;color:var(--color-main-text) !important;text-decoration:none !important}.widget-file--image[data-v-88e0217c]{min-width:40%;background-position:center;background-size:cover;background-repeat:no-repeat}.widget-file--image.widget-file--image--icon[data-v-88e0217c]{min-width:88px;background-size:44px}.widget-file--title[data-v-88e0217c]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:bold}.widget-file--details[data-v-88e0217c]{padding:12px;flex-grow:1;display:flex;flex-direction:column}.widget-file--details p[data-v-88e0217c]{margin:0;padding:0}.widget-file--description[data-v-88e0217c]{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical}.widget-file--link[data-v-88e0217c]{color:var(--color-text-maxcontrast)}.widget-file.widget-file--no-access[data-v-88e0217c]{padding:12px}.widget-file.widget-file--no-access .widget-file--details[data-v-88e0217c]{padding:0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/ReferenceFileWidget.vue\"],\"names\":[],\"mappings\":\"AACA,8BACC,YAAA,CACA,WAAA,CACA,uCAAA,CACA,+BAAA,CAEA,qCACC,aAAA,CACA,0BAAA,CACA,qBAAA,CACA,2BAAA,CAEA,8DACC,cAAA,CACA,oBAAA,CAIF,qCACC,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,gBAAA,CAGD,uCACC,YAAA,CACA,WAAA,CACA,YAAA,CACA,qBAAA,CAEA,yCACC,QAAA,CACA,SAAA,CAIF,2CACC,eAAA,CACA,sBAAA,CACA,mBAAA,CACA,oBAAA,CACA,YAAA,CACA,2BAAA,CAGD,oCACC,mCAAA,CAGD,qDACC,YAAA,CAEA,2EACC,SAAA\",\"sourcesContent\":[\"\\n.widget-file {\\n\\tdisplay: flex;\\n\\tflex-grow: 1;\\n\\tcolor: var(--color-main-text) !important;\\n\\ttext-decoration: none !important;\\n\\n\\t&--image {\\n\\t\\tmin-width: 40%;\\n\\t\\tbackground-position: center;\\n\\t\\tbackground-size: cover;\\n\\t\\tbackground-repeat: no-repeat;\\n\\n\\t\\t&.widget-file--image--icon {\\n\\t\\t\\tmin-width: 88px;\\n\\t\\t\\tbackground-size: 44px;\\n\\t\\t}\\n\\t}\\n\\n\\t&--title {\\n\\t\\toverflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\twhite-space: nowrap;\\n\\t\\tfont-weight: bold;\\n\\t}\\n\\n\\t&--details {\\n\\t\\tpadding: 12px;\\n\\t\\tflex-grow: 1;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\n\\t\\tp {\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tpadding: 0;\\n\\t\\t}\\n\\t}\\n\\n\\t&--description {\\n\\t\\toverflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\tdisplay: -webkit-box;\\n\\t\\t-webkit-line-clamp: 3;\\n\\t\\tline-clamp: 3;\\n\\t\\t-webkit-box-orient: vertical;\\n\\t}\\n\\n\\t&--link {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n\\n\\t&.widget-file--no-access {\\n\\t\\tpadding: 12px;\\n\\n\\t\\t.widget-file--details {\\n\\t\\t\\tpadding: 0;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 9098;","__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\t9098: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], () => (__webpack_require__(90072)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","name","props","richObject","type","Object","required","accessible","Boolean","default","data","previewUrl","window","OC","MimeType","getIconUrl","mimetype","computed","fileSize","Util","humanFileSize","size","fileMtime","relativeModifiedDate","mtime","filePath","path","filePreview","backgroundImage","filePreviewClass","mounted","generateUrl","fileId","id","img","Image","onload","onerror","err","console","error","src","methods","navigate","OCA","Viewer","mimetypes","indexOf","open","location","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_c","_self","staticClass","attrs","link","on","$event","preventDefault","apply","arguments","class","style","_v","_s","t","components","providerId","String","openFilePicker","addEventListener","onWindowClick","beforeDestroy","removeEventListener","e","target","tagName","classList","contains","$emit","dialogs","filepicker","file","Files","getClient","getFileInfo","then","_status","fileInfo","submit","FilePickerType","$refs","picker","fileLink","protocol","host","ref","Vue","registerWidget","el","_ref","richObjectType","FileWidget","propsData","$mount","registerCustomPickerElement","_ref2","vueElement","FileReferencePickerElement","NcCustomPickerRenderResult","$el","renderResult","object","$destroy","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","keys","every","key","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","value","nmd","paths","children","b","document","baseURI","self","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"files-reference-files.js?v=0e59efe2da30e1477cbb","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/files/src/views/ReferenceFileWidget.vue","webpack:///nextcloud/apps/files/src/views/ReferenceFileWidget.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files/src/views/ReferenceFileWidget.vue?dd2e","webpack://nextcloud/./apps/files/src/views/ReferenceFileWidget.vue?1c02","webpack://nextcloud/./apps/files/src/views/ReferenceFileWidget.vue?6acb","webpack://nextcloud/./apps/files/src/views/FileReferencePickerElement.vue?50c6","webpack:///nextcloud/apps/files/src/views/FileReferencePickerElement.vue","webpack:///nextcloud/apps/files/src/views/FileReferencePickerElement.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files/src/views/FileReferencePickerElement.vue?27dc","webpack://nextcloud/./apps/files/src/views/FileReferencePickerElement.vue?71ed","webpack:///nextcloud/apps/files/src/reference-files.js","webpack:///nextcloud/apps/files/src/views/FileReferencePickerElement.vue?vue&type=style&index=0&id=087c9640&prod&scoped=true&lang=scss&","webpack:///nextcloud/apps/files/src/views/ReferenceFileWidget.vue?vue&type=style&index=0&id=3f729da0&prod&lang=scss&scoped=true&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","<!--\n - @copyright Copyright (c) 2022 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -->\n\n<template>\n\t<div v-if=\"!accessible\" class=\"widget-file widget-file--no-access\">\n\t\t<div class=\"widget-file--image widget-file--image--icon icon-folder\" />\n\t\t<div class=\"widget-file--details\">\n\t\t\t<p class=\"widget-file--title\">\n\t\t\t\t{{ t('files', 'File cannot be accessed') }}\n\t\t\t</p>\n\t\t\t<p class=\"widget-file--description\">\n\t\t\t\t{{ t('files', 'You might not have have permissions to view it, ask the sender to share it') }}\n\t\t\t</p>\n\t\t</div>\n\t</div>\n\t<a v-else\n\t\tclass=\"widget-file\"\n\t\t:href=\"richObject.link\"\n\t\t@click.prevent=\"navigate\">\n\t\t<div class=\"widget-file--image\" :class=\"filePreviewClass\" :style=\"filePreview\" />\n\t\t<div class=\"widget-file--details\">\n\t\t\t<p class=\"widget-file--title\">{{ richObject.name }}</p>\n\t\t\t<p class=\"widget-file--description\">{{ fileSize }}<br>{{ fileMtime }}</p>\n\t\t\t<p class=\"widget-file--link\">{{ filePath }}</p>\n\t\t</div>\n\t</a>\n</template>\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport path from 'path'\n\nexport default {\n\tname: 'ReferenceFileWidget',\n\tprops: {\n\t\trichObject: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\taccessible: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tpreviewUrl: window.OC.MimeType.getIconUrl(this.richObject.mimetype),\n\t\t}\n\t},\n\tcomputed: {\n\t\tfileSize() {\n\t\t\treturn window.OC.Util.humanFileSize(this.richObject.size)\n\t\t},\n\t\tfileMtime() {\n\t\t\treturn window.OC.Util.relativeModifiedDate(this.richObject.mtime * 1000)\n\t\t},\n\t\tfilePath() {\n\t\t\treturn path.dirname(this.richObject.path)\n\t\t},\n\t\tfilePreview() {\n\t\t\tif (this.previewUrl) {\n\t\t\t\treturn {\n\t\t\t\t\tbackgroundImage: 'url(' + this.previewUrl + ')',\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tbackgroundImage: 'url(' + window.OC.MimeType.getIconUrl(this.richObject.mimetype) + ')',\n\t\t\t}\n\n\t\t},\n\t\tfilePreviewClass() {\n\t\t\tif (this.previewUrl) {\n\t\t\t\treturn 'widget-file--image--preview'\n\t\t\t}\n\t\t\treturn 'widget-file--image--icon'\n\n\t\t},\n\t},\n\tmounted() {\n\t\tif (this.richObject['preview-available']) {\n\t\t\tconst previewUrl = generateUrl('/core/preview?fileId={fileId}&x=250&y=250', {\n\t\t\t\tfileId: this.richObject.id,\n\t\t\t})\n\t\t\tconst img = new Image()\n\t\t\timg.onload = () => {\n\t\t\t\tthis.previewUrl = previewUrl\n\t\t\t}\n\t\t\timg.onerror = err => {\n\t\t\t\tconsole.error('could not load recommendation preview', err)\n\t\t\t}\n\t\t\timg.src = previewUrl\n\t\t}\n\t},\n\tmethods: {\n\t\tnavigate() {\n\t\t\tif (OCA.Viewer && OCA.Viewer.mimetypes.indexOf(this.richObject.mimetype) !== -1) {\n\t\t\t\tOCA.Viewer.open({ path: this.richObject.path })\n\t\t\t\treturn\n\t\t\t}\n\t\t\twindow.location = this.richObject.link\n\t\t},\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n.widget-file {\n\tdisplay: flex;\n\tflex-grow: 1;\n\tcolor: var(--color-main-text) !important;\n\ttext-decoration: none !important;\n\n\t&--image {\n\t\tmin-width: 40%;\n\t\tbackground-position: center;\n\t\tbackground-size: cover;\n\t\tbackground-repeat: no-repeat;\n\n\t\t&.widget-file--image--icon {\n\t\t\tmin-width: 88px;\n\t\t\tbackground-size: 44px;\n\t\t}\n\t}\n\n\t&--title {\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\twhite-space: nowrap;\n\t\tfont-weight: bold;\n\t}\n\n\t&--details {\n\t\tpadding: 12px;\n\t\tflex-grow: 1;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\n\t\tp {\n\t\t\tmargin: 0;\n\t\t\tpadding: 0;\n\t\t}\n\t}\n\n\t&--description {\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 3;\n\t\tline-clamp: 3;\n\t\t-webkit-box-orient: vertical;\n\t}\n\n\t&--link {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t&.widget-file--no-access {\n\t\tpadding: 12px;\n\n\t\t.widget-file--details {\n\t\t\tpadding: 0;\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReferenceFileWidget.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!./ReferenceFileWidget.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!./ReferenceFileWidget.vue?vue&type=style&index=0&id=3f729da0&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReferenceFileWidget.vue?vue&type=style&index=0&id=3f729da0&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ReferenceFileWidget.vue?vue&type=template&id=3f729da0&scoped=true&\"\nimport script from \"./ReferenceFileWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./ReferenceFileWidget.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ReferenceFileWidget.vue?vue&type=style&index=0&id=3f729da0&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 \"3f729da0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (!_vm.accessible)?_c('div',{staticClass:\"widget-file widget-file--no-access\"},[_c('div',{staticClass:\"widget-file--image widget-file--image--icon icon-folder\"}),_vm._v(\" \"),_c('div',{staticClass:\"widget-file--details\"},[_c('p',{staticClass:\"widget-file--title\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'File cannot be accessed'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('p',{staticClass:\"widget-file--description\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'You might not have have permissions to view it, ask the sender to share it'))+\"\\n\\t\\t\")])])]):_c('a',{staticClass:\"widget-file\",attrs:{\"href\":_vm.richObject.link},on:{\"click\":function($event){$event.preventDefault();return _vm.navigate.apply(null, arguments)}}},[_c('div',{staticClass:\"widget-file--image\",class:_vm.filePreviewClass,style:(_vm.filePreview)}),_vm._v(\" \"),_c('div',{staticClass:\"widget-file--details\"},[_c('p',{staticClass:\"widget-file--title\"},[_vm._v(_vm._s(_vm.richObject.name))]),_vm._v(\" \"),_c('p',{staticClass:\"widget-file--description\"},[_vm._v(_vm._s(_vm.fileSize)),_c('br'),_vm._v(_vm._s(_vm.fileMtime))]),_vm._v(\" \"),_c('p',{staticClass:\"widget-file--link\"},[_vm._v(_vm._s(_vm.filePath))])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:\"picker\",staticClass:\"reference-file-picker\"})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2023 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -->\n\n<template>\n\t<div ref=\"picker\" class=\"reference-file-picker\" />\n</template>\n\n<script>\nimport { FilePickerType } from '@nextcloud/dialogs'\nimport { generateUrl } from '@nextcloud/router'\nexport default {\n\tname: 'FileReferencePickerElement',\n\tcomponents: {\n\t},\n\tprops: {\n\t\tproviderId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\taccessible: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.openFilePicker()\n\t\twindow.addEventListener('click', this.onWindowClick)\n\t},\n\tbeforeDestroy() {\n\t\twindow.removeEventListener('click', this.onWindowClick)\n\t},\n\tmethods: {\n\t\tonWindowClick(e) {\n\t\t\tif (e.target.tagName === 'A' && e.target.classList.contains('oc-dialog-close')) {\n\t\t\t\tthis.$emit('cancel')\n\t\t\t}\n\t\t},\n\t\tasync openFilePicker() {\n\t\t\tOC.dialogs.filepicker(\n\t\t\t\tt('files', 'Select file or folder to link to'),\n\t\t\t\t(file) => {\n\t\t\t\t\tconst client = OC.Files.getClient()\n\t\t\t\t\tclient.getFileInfo(file).then((_status, fileInfo) => {\n\t\t\t\t\t\tthis.submit(fileInfo.id)\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t\tfalse, // multiselect\n\t\t\t\t[], // mime filter\n\t\t\t\tfalse, // modal\n\t\t\t\tFilePickerType.Choose, // type\n\t\t\t\t'',\n\t\t\t\t{\n\t\t\t\t\ttarget: this.$refs.picker,\n\t\t\t\t},\n\t\t\t)\n\t\t},\n\t\tsubmit(fileId) {\n\t\t\tconst fileLink = window.location.protocol + '//' + window.location.host\n\t\t\t\t+ generateUrl('/f/{fileId}', { fileId })\n\t\t\tthis.$emit('submit', fileLink)\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.reference-file-picker {\n\tflex-grow: 1;\n\tmargin-top: 44px;\n\n\t&:deep(.oc-dialog) {\n\t\ttransform: none !important;\n\t\tbox-shadow: none !important;\n\t\tflex-grow: 1 !important;\n\t\tposition: static !important;\n\t\twidth: 100% !important;\n\t\theight: auto !important;\n\t\tpadding: 0 !important;\n\t\tmax-width: initial;\n\n\t\t.oc-dialog-close {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\t.oc-dialog-buttonrow.onebutton.aside {\n\t\t\tposition: absolute;\n\t\t\tpadding: 12px 32px;\n\t\t}\n\n\t\t.oc-dialog-content {\n\t\t\tmax-width: 100% !important;\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!./FileReferencePickerElement.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!./FileReferencePickerElement.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!./FileReferencePickerElement.vue?vue&type=style&index=0&id=087c9640&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileReferencePickerElement.vue?vue&type=style&index=0&id=087c9640&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileReferencePickerElement.vue?vue&type=template&id=087c9640&scoped=true&\"\nimport script from \"./FileReferencePickerElement.vue?vue&type=script&lang=js&\"\nexport * from \"./FileReferencePickerElement.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FileReferencePickerElement.vue?vue&type=style&index=0&id=087c9640&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 \"087c9640\",\n null\n \n)\n\nexport default component.exports","/**\n * @copyright Copyright (c) 2022 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport Vue from 'vue'\nimport { translate as t } from '@nextcloud/l10n'\n\nimport { registerWidget, registerCustomPickerElement, NcCustomPickerRenderResult } from '@nextcloud/vue/dist/Components/NcRichText.js'\n\nimport FileWidget from './views/ReferenceFileWidget.vue'\nimport FileReferencePickerElement from './views/FileReferencePickerElement.vue'\n\nVue.mixin({\n\tmethods: {\n\t\tt,\n\t},\n})\n\nregisterWidget('file', (el, { richObjectType, richObject, accessible }) => {\n\tconst Widget = Vue.extend(FileWidget)\n\tnew Widget({\n\t\tpropsData: {\n\t\t\trichObjectType,\n\t\t\trichObject,\n\t\t\taccessible,\n\t\t},\n\t}).$mount(el)\n})\n\nregisterCustomPickerElement('files', (el, { providerId, accessible }) => {\n\tconst Element = Vue.extend(FileReferencePickerElement)\n\tconst vueElement = new Element({\n\t\tpropsData: {\n\t\t\tproviderId,\n\t\t\taccessible,\n\t\t},\n\t}).$mount(el)\n\treturn new NcCustomPickerRenderResult(vueElement.$el, vueElement)\n}, (el, renderResult) => {\n\trenderResult.object.$destroy()\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, \".reference-file-picker[data-v-087c9640]{flex-grow:1;margin-top:44px}.reference-file-picker[data-v-087c9640] .oc-dialog{transform:none !important;box-shadow:none !important;flex-grow:1 !important;position:static !important;width:100% !important;height:auto !important;padding:0 !important;max-width:initial}.reference-file-picker[data-v-087c9640] .oc-dialog .oc-dialog-close{display:none}.reference-file-picker[data-v-087c9640] .oc-dialog .oc-dialog-buttonrow.onebutton.aside{position:absolute;padding:12px 32px}.reference-file-picker[data-v-087c9640] .oc-dialog .oc-dialog-content{max-width:100% !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/FileReferencePickerElement.vue\"],\"names\":[],\"mappings\":\"AACA,wCACC,WAAA,CACA,eAAA,CAEA,mDACC,yBAAA,CACA,0BAAA,CACA,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,sBAAA,CACA,oBAAA,CACA,iBAAA,CAEA,oEACC,YAAA,CAGD,wFACC,iBAAA,CACA,iBAAA,CAGD,sEACC,yBAAA\",\"sourcesContent\":[\"\\n.reference-file-picker {\\n\\tflex-grow: 1;\\n\\tmargin-top: 44px;\\n\\n\\t&:deep(.oc-dialog) {\\n\\t\\ttransform: none !important;\\n\\t\\tbox-shadow: none !important;\\n\\t\\tflex-grow: 1 !important;\\n\\t\\tposition: static !important;\\n\\t\\twidth: 100% !important;\\n\\t\\theight: auto !important;\\n\\t\\tpadding: 0 !important;\\n\\t\\tmax-width: initial;\\n\\n\\t\\t.oc-dialog-close {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\n\\t\\t.oc-dialog-buttonrow.onebutton.aside {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tpadding: 12px 32px;\\n\\t\\t}\\n\\n\\t\\t.oc-dialog-content {\\n\\t\\t\\tmax-width: 100% !important;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".widget-file[data-v-3f729da0]{display:flex;flex-grow:1;color:var(--color-main-text) !important;text-decoration:none !important}.widget-file--image[data-v-3f729da0]{min-width:40%;background-position:center;background-size:cover;background-repeat:no-repeat}.widget-file--image.widget-file--image--icon[data-v-3f729da0]{min-width:88px;background-size:44px}.widget-file--title[data-v-3f729da0]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:bold}.widget-file--details[data-v-3f729da0]{padding:12px;flex-grow:1;display:flex;flex-direction:column}.widget-file--details p[data-v-3f729da0]{margin:0;padding:0}.widget-file--description[data-v-3f729da0]{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical}.widget-file--link[data-v-3f729da0]{color:var(--color-text-maxcontrast)}.widget-file.widget-file--no-access[data-v-3f729da0]{padding:12px}.widget-file.widget-file--no-access .widget-file--details[data-v-3f729da0]{padding:0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/ReferenceFileWidget.vue\"],\"names\":[],\"mappings\":\"AACA,8BACC,YAAA,CACA,WAAA,CACA,uCAAA,CACA,+BAAA,CAEA,qCACC,aAAA,CACA,0BAAA,CACA,qBAAA,CACA,2BAAA,CAEA,8DACC,cAAA,CACA,oBAAA,CAIF,qCACC,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,gBAAA,CAGD,uCACC,YAAA,CACA,WAAA,CACA,YAAA,CACA,qBAAA,CAEA,yCACC,QAAA,CACA,SAAA,CAIF,2CACC,eAAA,CACA,sBAAA,CACA,mBAAA,CACA,oBAAA,CACA,YAAA,CACA,2BAAA,CAGD,oCACC,mCAAA,CAGD,qDACC,YAAA,CAEA,2EACC,SAAA\",\"sourcesContent\":[\"\\n.widget-file {\\n\\tdisplay: flex;\\n\\tflex-grow: 1;\\n\\tcolor: var(--color-main-text) !important;\\n\\ttext-decoration: none !important;\\n\\n\\t&--image {\\n\\t\\tmin-width: 40%;\\n\\t\\tbackground-position: center;\\n\\t\\tbackground-size: cover;\\n\\t\\tbackground-repeat: no-repeat;\\n\\n\\t\\t&.widget-file--image--icon {\\n\\t\\t\\tmin-width: 88px;\\n\\t\\t\\tbackground-size: 44px;\\n\\t\\t}\\n\\t}\\n\\n\\t&--title {\\n\\t\\toverflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\twhite-space: nowrap;\\n\\t\\tfont-weight: bold;\\n\\t}\\n\\n\\t&--details {\\n\\t\\tpadding: 12px;\\n\\t\\tflex-grow: 1;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\n\\t\\tp {\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tpadding: 0;\\n\\t\\t}\\n\\t}\\n\\n\\t&--description {\\n\\t\\toverflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\tdisplay: -webkit-box;\\n\\t\\t-webkit-line-clamp: 3;\\n\\t\\tline-clamp: 3;\\n\\t\\t-webkit-box-orient: vertical;\\n\\t}\\n\\n\\t&--link {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n\\n\\t&.widget-file--no-access {\\n\\t\\tpadding: 12px;\\n\\n\\t\\t.widget-file--details {\\n\\t\\t\\tpadding: 0;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 9098;","__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\t9098: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], () => (__webpack_require__(13057)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","name","props","richObject","type","Object","required","accessible","Boolean","default","data","previewUrl","window","OC","MimeType","getIconUrl","mimetype","computed","fileSize","Util","humanFileSize","size","fileMtime","relativeModifiedDate","mtime","filePath","path","filePreview","backgroundImage","filePreviewClass","mounted","generateUrl","fileId","id","img","Image","onload","onerror","err","console","error","src","methods","navigate","OCA","Viewer","mimetypes","indexOf","open","location","link","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_c","_self","staticClass","attrs","on","$event","preventDefault","apply","arguments","class","style","_v","_s","t","components","providerId","String","openFilePicker","addEventListener","onWindowClick","beforeDestroy","removeEventListener","e","target","tagName","classList","contains","$emit","dialogs","filepicker","file","Files","getClient","getFileInfo","then","_status","fileInfo","submit","FilePickerType","$refs","picker","fileLink","protocol","host","ref","Vue","registerWidget","el","_ref","richObjectType","FileWidget","propsData","$mount","registerCustomPickerElement","_ref2","vueElement","FileReferencePickerElement","NcCustomPickerRenderResult","$el","renderResult","object","$destroy","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","keys","every","key","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","value","nmd","paths","children","b","document","baseURI","self","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/settings-vue-settings-personal-info.js b/dist/settings-vue-settings-personal-info.js
index 84ef6f73bb2..ab30a9b827c 100644
--- a/dist/settings-vue-settings-personal-info.js
+++ b/dist/settings-vue-settings-personal-info.js
@@ -1,3 +1,3 @@
/*! For license information please see settings-vue-settings-personal-info.js.LICENSE.txt */
-(()=>{var e,a={28110:(e,a,n)=>{"use strict";var i=n(20144),o=n(45994),s=n(79954),r=n(31352),l=(n(36144),n(4820)),d=n(79753),c=n(64024),p=n(78595),A=n(75925),u=n.n(A),m=n(10861),h=n.n(m),g=n(17652),v=(n(74063),n(75762)),C=n(34829),f=n(57612),b=n(61149),y=n(12945),x=n.n(y),E=n(45400);const _={name:"FederationControlAction",components:{NcActionButton:n.n(E)()},props:{activeScope:{type:String,required:!0},displayName:{type:String,required:!0},handleScopeChange:{type:Function,default:()=>{}},iconClass:{type:String,required:!0},isSupportedScope:{type:Boolean,required:!0},name:{type:String,required:!0},tooltipDisabled:{type:String,default:""},tooltip:{type:String,required:!0}},methods:{updateScope(){this.handleScopeChange(this.name)}}};var w=n(93379),I=n.n(w),S=n(7795),P=n.n(S),L=n(90569),j=n.n(L),B=n(3565),k=n.n(B),D=n(19216),O=n.n(D),N=n(44589),R=n.n(N),T=n(28561),Z={};Z.styleTagTransform=R(),Z.setAttributes=k(),Z.insert=j().bind(null,"head"),Z.domAPI=P(),Z.insertStyleElement=O(),I()(T.Z,Z),T.Z&&T.Z.locals&&T.Z.locals;var M=n(51900);const U=(0,M.Z)(_,(function(){var t=this;return(0,t._self._c)("NcActionButton",{staticClass:"federation-actions__btn",class:{"federation-actions__btn--active":t.activeScope===t.name},attrs:{"aria-label":t.isSupportedScope?t.tooltip:t.tooltipDisabled,"close-after-click":!0,disabled:!t.isSupportedScope,icon:t.iconClass,title:t.isSupportedScope?t.tooltip:t.tooltipDisabled},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.updateScope.apply(null,arguments)}}},[t._v("\n\t"+t._s(t.isSupportedScope?t.tooltip:t.tooltipDisabled)+"\n")])}),[],!1,null,"d426ed04",null).exports,F=Object.freeze({ADDRESS:"address",AVATAR:"avatar",BIOGRAPHY:"biography",DISPLAYNAME:"displayname",EMAIL_COLLECTION:"additional_mail",EMAIL:"email",HEADLINE:"headline",NOTIFICATION_EMAIL:"notify_email",FEDIVERSE:"fediverse",ORGANISATION:"organisation",PHONE:"phone",PROFILE_ENABLED:"profile_enabled",ROLE:"role",TWITTER:"twitter",WEBSITE:"website"}),z=Object.freeze({ADDRESS:(0,r.Iu)("settings","Location"),AVATAR:(0,r.Iu)("settings","Profile picture"),BIOGRAPHY:(0,r.Iu)("settings","About"),DISPLAYNAME:(0,r.Iu)("settings","Full name"),EMAIL_COLLECTION:(0,r.Iu)("settings","Additional email"),EMAIL:(0,r.Iu)("settings","Email"),HEADLINE:(0,r.Iu)("settings","Headline"),ORGANISATION:(0,r.Iu)("settings","Organisation"),PHONE:(0,r.Iu)("settings","Phone number"),PROFILE_ENABLED:(0,r.Iu)("settings","Profile"),ROLE:(0,r.Iu)("settings","Role"),TWITTER:(0,r.Iu)("settings","Twitter"),FEDIVERSE:(0,r.Iu)("settings","Fediverse (e.g. Mastodon)"),WEBSITE:(0,r.Iu)("settings","Website")}),V=Object.freeze({[F.ADDRESS]:z.ADDRESS,[F.AVATAR]:z.AVATAR,[F.BIOGRAPHY]:z.BIOGRAPHY,[F.DISPLAYNAME]:z.DISPLAYNAME,[F.EMAIL_COLLECTION]:z.EMAIL_COLLECTION,[F.EMAIL]:z.EMAIL,[F.HEADLINE]:z.HEADLINE,[F.ORGANISATION]:z.ORGANISATION,[F.PHONE]:z.PHONE,[F.PROFILE_ENABLED]:z.PROFILE_ENABLED,[F.ROLE]:z.ROLE,[F.TWITTER]:z.TWITTER,[F.FEDIVERSE]:z.FEDIVERSE,[F.WEBSITE]:z.WEBSITE}),H=Object.freeze({PROFILE_VISIBILITY:(0,r.Iu)("settings","Profile visibility")}),G=Object.freeze({[z.ADDRESS]:F.ADDRESS,[z.AVATAR]:F.AVATAR,[z.BIOGRAPHY]:F.BIOGRAPHY,[z.DISPLAYNAME]:F.DISPLAYNAME,[z.EMAIL_COLLECTION]:F.EMAIL_COLLECTION,[z.EMAIL]:F.EMAIL,[z.HEADLINE]:F.HEADLINE,[z.ORGANISATION]:F.ORGANISATION,[z.PHONE]:F.PHONE,[z.PROFILE_ENABLED]:F.PROFILE_ENABLED,[z.ROLE]:F.ROLE,[z.TWITTER]:F.TWITTER,[z.FEDIVERSE]:F.FEDIVERSE,[z.WEBSITE]:F.WEBSITE}),q=Object.freeze({LANGUAGE:"language",LOCALE:"locale"}),Y=Object.freeze({LANGUAGE:(0,r.Iu)("settings","Language"),LOCALE:(0,r.Iu)("settings","Locale")}),$=Object.freeze({PRIVATE:"v2-private",LOCAL:"v2-local",FEDERATED:"v2-federated",PUBLISHED:"v2-published"}),W=Object.freeze({[z.ADDRESS]:[$.LOCAL,$.PRIVATE],[z.AVATAR]:[$.LOCAL,$.PRIVATE],[z.BIOGRAPHY]:[$.LOCAL,$.PRIVATE],[z.DISPLAYNAME]:[$.LOCAL],[z.EMAIL_COLLECTION]:[$.LOCAL],[z.EMAIL]:[$.LOCAL],[z.HEADLINE]:[$.LOCAL,$.PRIVATE],[z.ORGANISATION]:[$.LOCAL,$.PRIVATE],[z.PHONE]:[$.LOCAL,$.PRIVATE],[z.PROFILE_ENABLED]:[$.LOCAL,$.PRIVATE],[z.ROLE]:[$.LOCAL,$.PRIVATE],[z.TWITTER]:[$.LOCAL,$.PRIVATE],[z.FEDIVERSE]:[$.LOCAL,$.PRIVATE],[z.WEBSITE]:[$.LOCAL,$.PRIVATE]}),K=Object.freeze([z.BIOGRAPHY,z.HEADLINE,z.ORGANISATION,z.ROLE]),Q="Scope",J=Object.freeze({[$.PRIVATE]:{name:$.PRIVATE,displayName:(0,r.Iu)("settings","Private"),tooltip:(0,r.Iu)("settings","Only visible to people matched via phone number integration through Talk on mobile"),tooltipDisabled:(0,r.Iu)("settings","Not available as this property is required for core functionality including file sharing and calendar invitations"),iconClass:"icon-phone"},[$.LOCAL]:{name:$.LOCAL,displayName:(0,r.Iu)("settings","Local"),tooltip:(0,r.Iu)("settings","Only visible to people on this instance and guests"),iconClass:"icon-password"},[$.FEDERATED]:{name:$.FEDERATED,displayName:(0,r.Iu)("settings","Federated"),tooltip:(0,r.Iu)("settings","Only synchronize to trusted servers"),tooltipDisabled:(0,r.Iu)("settings","Not available as federation has been disabled for your account, contact your system administrator if you have any questions"),iconClass:"icon-contacts-dark"},[$.PUBLISHED]:{name:$.PUBLISHED,displayName:(0,r.Iu)("settings","Published"),tooltip:(0,r.Iu)("settings","Synchronize to trusted servers and the global and public address book"),tooltipDisabled:(0,r.Iu)("settings","Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions"),iconClass:"icon-link"}}),X=$.LOCAL,tt=Object.freeze({NOT_VERIFIED:0,VERIFICATION_IN_PROGRESS:1,VERIFIED:2}),et=/^(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){255,})(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){65,}@)(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22))(?:\.(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-+[a-z0-9]+)*\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-+[a-z0-9]+)*)|(?:\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\]))$/i;var at=n(10128);n(65509);const nt=async(t,e)=>{"boolean"==typeof e&&(e=e?"1":"0");const a=(0,o.ts)().uid,n=(0,d.generateOcsUrl)("cloud/users/{userId}",{userId:a});return await(0,at.confirmPassword)(),(await l.default.put(n,{key:t,value:e})).data},it=(0,n(17499).IY)().setApp("settings").detectUser().build(),ot=(t,e)=>{var a;let n="";e&&(n+=e),429===(null===(a=t.response)||void 0===a?void 0:a.status)&&(n&&(n+="\n"),n+=(0,r.Iu)("settings","There were too many requests from your network. Retry later or contact your administrator if this is an error.")),(0,c.x2)(n),it.error(n||(0,r.Iu)("Error"),t)},{federationEnabled:st,lookupServerUploadEnabled:rt}=(0,s.j)("settings","accountParameters",{}),lt={name:"FederationControl",components:{NcActions:x(),FederationControlAction:U},props:{readable:{type:String,required:!0,validator:t=>Object.values(z).includes(t)||Object.values(Y).includes(t)||t===H.PROFILE_VISIBILITY},additional:{type:Boolean,default:!1},additionalValue:{type:String,default:""},disabled:{type:Boolean,default:!1},handleAdditionalScopeChange:{type:Function,default:null},scope:{type:String,required:!0}},data(){return{readableLowerCase:this.readable.toLocaleLowerCase(),initialScope:this.scope}},computed:{ariaLabel(){return t("settings","Change scope level of {property}, current scope is {scope}",{property:this.readableLowerCase,scope:this.scopeDisplayNameLowerCase})},scopeDisplayNameLowerCase(){return J[this.scope].displayName.toLocaleLowerCase()},scopeIcon(){return J[this.scope].iconClass},federationScopes:()=>Object.values(J),supportedScopes(){const t=W[this.readable];return K.includes(this.readable)||(st&&t.push($.FEDERATED),rt&&t.push($.PUBLISHED)),t}},methods:{async changeScope(t){this.$emit("update:scope",t),this.additional?await this.updateAdditionalScope(t):await this.updatePrimaryScope(t)},async updatePrimaryScope(e){try{var a,n;const t=await(async(t,e)=>{const a=(0,o.ts)().uid,n=(0,d.generateOcsUrl)("cloud/users/{userId}",{userId:a});return await(0,at.confirmPassword)(),(await l.default.put(n,{key:"".concat(t).concat(Q),value:e})).data})(G[this.readable],e);this.handleResponse({scope:e,status:null===(a=t.ocs)||void 0===a||null===(n=a.meta)||void 0===n?void 0:n.status})}catch(e){this.handleResponse({errorMessage:t("settings","Unable to update federation scope of the primary {property}",{property:this.readableLowerCase}),error:e})}},async updateAdditionalScope(e){try{var a,n;const t=await this.handleAdditionalScopeChange(this.additionalValue,e);this.handleResponse({scope:e,status:null===(a=t.ocs)||void 0===a||null===(n=a.meta)||void 0===n?void 0:n.status})}catch(e){this.handleResponse({errorMessage:t("settings","Unable to update federation scope of additional {property}",{property:this.readableLowerCase}),error:e})}},handleResponse(t){let{scope:e,status:a,errorMessage:n,error:i}=t;"ok"===a?this.initialScope=e:(this.$emit("update:scope",this.initialScope),ot(i,n))}}},dt=lt;var ct=n(14036),pt={};pt.styleTagTransform=R(),pt.setAttributes=k(),pt.insert=j().bind(null,"head"),pt.domAPI=P(),pt.insertStyleElement=O(),I()(ct.Z,pt),ct.Z&&ct.Z.locals&&ct.Z.locals;const At=(0,M.Z)(dt,(function(){var t=this,e=t._self._c;return e("NcActions",{class:{"federation-actions":!t.additional,"federation-actions--additional":t.additional},attrs:{"aria-label":t.ariaLabel,"default-icon":t.scopeIcon,disabled:t.disabled}},t._l(t.federationScopes,(function(a){return e("FederationControlAction",{key:a.name,attrs:{"active-scope":t.scope,"display-name":a.displayName,"handle-scope-change":t.changeScope,"icon-class":a.iconClass,"is-supported-scope":t.supportedScopes.includes(a.name),name:a.name,"tooltip-disabled":a.tooltipDisabled,tooltip:a.tooltip,"aria-label":a.tooltip}})})),1)}),[],!1,null,"4ea07669",null).exports,ut={name:"HeaderBar",components:{FederationControl:At,NcButton:h(),Plus:b.Z},props:{scope:{type:String,default:null},readable:{type:String,required:!0},inputId:{type:String,default:null},isEditable:{type:Boolean,default:!0},isMultiValueSupported:{type:Boolean,default:!1},isValidSection:{type:Boolean,default:!0},isHeading:{type:Boolean,default:!1}},data(){return{localScope:this.scope}},computed:{isProfileProperty(){return this.readable===z.PROFILE_ENABLED},isSettingProperty(){return!Object.values(z).includes(this.readable)&&!Object.values(H).includes(this.readable)}},methods:{onAddAdditional(){this.$emit("add-additional")},onScopeChange(t){this.$emit("update:scope",t)}}};var mt=n(90564),ht={};ht.styleTagTransform=R(),ht.setAttributes=k(),ht.insert=j().bind(null,"head"),ht.domAPI=P(),ht.insertStyleElement=O(),I()(mt.Z,ht),mt.Z&&mt.Z.locals&&mt.Z.locals;const gt=(0,M.Z)(ut,(function(){var t=this,e=t._self._c;return e(t.isHeading?"h3":"div",{tag:"component",staticClass:"headerbar-label",class:{"setting-property":t.isSettingProperty,"profile-property":t.isProfileProperty}},[t.isHeading?e("span",[t._v("\n\t\t"+t._s(t.readable)+"\n\t")]):e("label",{attrs:{for:t.inputId}},[t._v("\n\t\t"+t._s(t.readable)+"\n\t")]),t._v(" "),t.scope?[e("FederationControl",{staticClass:"federation-control",attrs:{readable:t.readable,scope:t.localScope},on:{"update:scope":[function(e){t.localScope=e},t.onScopeChange]}})]:t._e(),t._v(" "),t.isEditable&&t.isMultiValueSupported?[e("NcButton",{attrs:{type:"tertiary",disabled:!t.isValidSection,"aria-label":t.t("settings","Add additional email")},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.onAddAdditional.apply(null,arguments)}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Plus",{attrs:{size:20}})]},proxy:!0}],null,!1,32235154)},[t._v("\n\t\t\t"+t._s(t.t("settings","Add"))+"\n\t\t")])]:t._e()],2)}),[],!1,null,"b43fcc0c",null).exports,{avatar:vt}=(0,s.j)("settings","personalInfoParameters",{}),{avatarChangeSupported:Ct}=(0,s.j)("settings","accountParameters",{}),ft=["image/png","image/jpeg"],bt=(0,c.fn)(t("settings","Choose your profile picture")).setMultiSelect(!1).setMimeTypeFilter(ft).setModal(!0).setType(1).allowDirectories(!1).build(),yt={name:"AvatarSection",components:{Delete:f.Z,Folder:C.default,HeaderBar:gt,NcAvatar:u(),NcButton:h(),Upload:v.Z,VueCropper:g.Z},data:()=>({avatar:{...vt,readable:V[vt.name]},avatarChangeSupported:Ct,showCropper:!1,loading:!1,userId:(0,o.ts)().uid,displayName:(0,o.ts)().displayName,version:oc_userconfig.avatar.version,isGenerated:oc_userconfig.avatar.generated,validMimeTypes:ft,cropperOptions:{aspectRatio:1,viewMode:1,guides:!1,center:!1,highlight:!1,autoCropArea:1,minContainerWidth:300,minContainerHeight:300}}),computed:{inputId(){return"account-property-".concat(this.avatar.name)}},created(){(0,p.Ld)("settings:display-name:updated",this.handleDisplayNameUpdate)},beforeDestroy(){(0,p.r1)("settings:display-name:updated",this.handleDisplayNameUpdate)},methods:{activateLocalFilePicker(){this.$refs.input.value=null,this.$refs.input.click()},onChange(e){this.loading=!0;const a=e.target.files[0];if(!this.validMimeTypes.includes(a.type))return(0,c.x2)(t("settings","Please select a valid png or jpg file")),void this.cancel();const n=new FileReader;n.onload=t=>{this.$refs.cropper.replace(t.target.result),this.showCropper=!0},n.readAsDataURL(a)},async openFilePicker(){const e=await bt.pick();this.loading=!0;try{const{data:t}=await l.default.post((0,d.generateUrl)("/avatar"),{path:e});if("success"===t.status)this.handleAvatarUpdate(!1);else if("notsquare"===t.data){const t=(0,d.generateUrl)("/avatar/tmp")+"?requesttoken="+encodeURIComponent(OC.requestToken)+"#"+Math.floor(1e3*Math.random());this.$refs.cropper.replace(t),this.showCropper=!0}else(0,c.x2)(t.data.message),this.cancel()}catch(e){(0,c.x2)(t("settings","Error setting profile picture")),this.cancel()}},saveAvatar(){this.showCropper=!1,this.loading=!0;const e=this.$refs.cropper.getCroppedCanvas(),a=e.width>512?512/e.width:1;this.$refs.cropper.scale(a,a).getCroppedCanvas().toBlob((async e=>{if(null===e)return(0,c.x2)(t("settings","Error cropping profile picture")),void this.cancel();const a=new FormData;a.append("files[]",e);try{await l.default.post((0,d.generateUrl)("/avatar"),a),this.handleAvatarUpdate(!1)}catch(e){(0,c.x2)(t("settings","Error saving profile picture")),this.handleAvatarUpdate(this.isGenerated)}}))},async removeAvatar(){this.loading=!0;try{await l.default.delete((0,d.generateUrl)("/avatar")),this.handleAvatarUpdate(!0)}catch(e){(0,c.x2)(t("settings","Error removing profile picture")),this.handleAvatarUpdate(this.isGenerated)}},cancel(){this.showCropper=!1,this.loading=!1},handleAvatarUpdate(t){this.version=oc_userconfig.avatar.version=Date.now(),this.isGenerated=oc_userconfig.avatar.generated=t,this.loading=!1,(0,p.j8)("settings:avatar:updated",oc_userconfig.avatar.version)},handleDisplayNameUpdate(){this.version=oc_userconfig.avatar.version}}};var xt=n(31246),Et={};Et.styleTagTransform=R(),Et.setAttributes=k(),Et.insert=j().bind(null,"head"),Et.domAPI=P(),Et.insertStyleElement=O(),I()(xt.Z,Et),xt.Z&&xt.Z.locals&&xt.Z.locals;const _t=(0,M.Z)(yt,(function(){var t=this,e=t._self._c;return e("section",{attrs:{id:"vue-avatar-section"}},[e("h3",{staticClass:"hidden-visually"},[t._v(" "+t._s(t.t("settings","Your profile information"))+" ")]),t._v(" "),e("HeaderBar",{attrs:{"input-id":t.avatarChangeSupported?t.inputId:null,readable:t.avatar.readable,scope:t.avatar.scope},on:{"update:scope":function(e){return t.$set(t.avatar,"scope",e)}}}),t._v(" "),t.showCropper?t._e():e("div",{staticClass:"avatar__container"},[e("div",{staticClass:"avatar__preview"},[t.loading?e("div",{staticClass:"icon-loading"}):e("NcAvatar",{key:t.version,attrs:{user:t.userId,"aria-label":t.t("settings","Your profile picture"),"disabled-menu":!0,"disabled-tooltip":!0,"show-user-status":!1,size:180}})],1),t._v(" "),t.avatarChangeSupported?[e("div",{staticClass:"avatar__buttons"},[e("NcButton",{attrs:{"aria-label":t.t("settings","Upload profile picture")},on:{click:t.activateLocalFilePicker},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Upload",{attrs:{size:20}})]},proxy:!0}],null,!1,1329850251)}),t._v(" "),e("NcButton",{attrs:{"aria-label":t.t("settings","Choose profile picture from Files")},on:{click:t.openFilePicker},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Folder",{attrs:{size:20}})]},proxy:!0}],null,!1,4270628382)}),t._v(" "),t.isGenerated?t._e():e("NcButton",{attrs:{"aria-label":t.t("settings","Remove profile picture")},on:{click:t.removeAvatar},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Delete",{attrs:{size:20}})]},proxy:!0}],null,!1,2705356561)})],1),t._v(" "),e("span",[t._v(t._s(t.t("settings","The file must be a PNG or JPG")))]),t._v(" "),e("input",{ref:"input",attrs:{id:t.inputId,type:"file",accept:t.validMimeTypes.join(",")},on:{change:t.onChange}})]:e("span",[t._v("\n\t\t\t"+t._s(t.t("settings","Picture provided by original account"))+"\n\t\t")])],2),t._v(" "),e("div",{directives:[{name:"show",rawName:"v-show",value:t.showCropper,expression:"showCropper"}],staticClass:"avatar__container"},[e("VueCropper",t._b({ref:"cropper",staticClass:"avatar__cropper"},"VueCropper",t.cropperOptions,!1)),t._v(" "),e("div",{staticClass:"avatar__cropper-buttons"},[e("NcButton",{on:{click:t.cancel}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Cancel"))+"\n\t\t\t")]),t._v(" "),e("NcButton",{attrs:{type:"primary"},on:{click:t.saveAvatar}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Set as profile picture"))+"\n\t\t\t")])],1),t._v(" "),e("span",[t._v(t._s(t.t("settings","Please note that it can take up to 24 hours for your profile picture to be updated everywhere.")))])],1)],1)}),[],!1,null,"022fd5d4",null).exports;var wt=n(48959),It=n.n(wt),St=n(86158),Pt=n(34046);const{groups:Lt,quota:jt,totalSpace:Bt,usage:kt,usageRelative:Dt}=(0,s.j)("settings","personalInfoParameters",{}),Ot={name:"DetailsSection",components:{Account:St.Z,CircleSlice:Pt.Z,HeaderBar:gt,NcProgressBar:It()},computed:{quotaText:()=>-3===jt?t("settings","You are using <strong>{usage}</strong>",{usage:kt}):t("settings","You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)",{usage:kt,totalSpace:Bt,usageRelative:Dt})},data:()=>({groups:Lt,usageRelative:Dt})};var Nt=n(18118),Rt={};Rt.styleTagTransform=R(),Rt.setAttributes=k(),Rt.insert=j().bind(null,"head"),Rt.domAPI=P(),Rt.insertStyleElement=O(),I()(Nt.Z,Rt),Nt.Z&&Nt.Z.locals&&Nt.Z.locals;const Tt=(0,M.Z)(Ot,(function(){var t=this,e=t._self._c;return e("section",[e("HeaderBar",{attrs:{"is-heading":!0,readable:t.t("settings","Details")}}),t._v(" "),e("div",{staticClass:"details"},[e("div",{staticClass:"details__groups"},[e("Account",{attrs:{size:20}}),t._v(" "),e("div",{staticClass:"details__groups-info"},[e("p",[t._v(t._s(t.t("settings","You are a member of the following groups:")))]),t._v(" "),e("p",{staticClass:"details__groups-list"},[t._v(t._s(t.groups.join(", ")))])])],1),t._v(" "),e("div",{staticClass:"details__quota"},[e("CircleSlice",{attrs:{size:20}}),t._v(" "),e("div",{staticClass:"details__quota-info"},[e("p",{staticClass:"details__quota-text",domProps:{innerHTML:t._s(t.quotaText)}}),t._v(" "),e("NcProgressBar",{attrs:{size:"medium",value:t.usageRelative,error:t.usageRelative>80}})],1)],1)])],1)}),[],!1,null,"1ab46e68",null).exports;var Zt=n(20296),Mt=n.n(Zt),Ut=n(94603),Ft=n(31974),zt=n(80419);const Vt={name:"AccountPropertySection",components:{AlertCircle:Ut.default,AlertOctagon:Ft.Z,Check:zt.default,HeaderBar:gt},props:{name:{type:String,required:!0},value:{type:String,required:!0},scope:{type:String,required:!0},readable:{type:String,required:!0},placeholder:{type:String,required:!0},type:{type:String,default:"text"},isEditable:{type:Boolean,default:!0},multiLine:{type:Boolean,default:!1},onValidate:{type:Function,default:null},onSave:{type:Function,default:null}},data(){return{initialValue:this.value,helperText:null,showCheckmarkIcon:!1,showErrorIcon:!1}},computed:{inputId(){return"account-property-".concat(this.name)}},methods:{onPropertyChange(t){this.$emit("update:value",t.target.value),this.debouncePropertyChange(t.target.value.trim())},debouncePropertyChange:Mt()((async function(t){this.helperText=null,this.$refs.input&&this.$refs.input.validationMessage?this.helperText=this.$refs.input.validationMessage:this.onValidate&&!this.onValidate(t)||await this.updateProperty(t)}),500),async updateProperty(e){try{var a,n;const t=await nt(this.name,e);this.handleResponse({value:e,status:null===(a=t.ocs)||void 0===a||null===(n=a.meta)||void 0===n?void 0:n.status})}catch(e){this.handleResponse({errorMessage:t("settings","Unable to update {property}",{property:this.readable.toLocaleLowerCase()}),error:e})}},handleResponse(t){let{value:e,status:a,errorMessage:n,error:i}=t;"ok"===a?(this.initialValue=e,this.onSave&&this.onSave(e),this.showCheckmarkIcon=!0,setTimeout((()=>{this.showCheckmarkIcon=!1}),2e3)):(this.$emit("update:value",this.initialValue),ot(i,n),this.showErrorIcon=!0,setTimeout((()=>{this.showErrorIcon=!1}),2e3))}}};var Ht=n(78784),Gt={};Gt.styleTagTransform=R(),Gt.setAttributes=k(),Gt.insert=j().bind(null,"head"),Gt.domAPI=P(),Gt.insertStyleElement=O(),I()(Ht.Z,Gt),Ht.Z&&Ht.Z.locals&&Ht.Z.locals;const qt=(0,M.Z)(Vt,(function(){var t=this,e=t._self._c;return e("section",[e("HeaderBar",{attrs:{scope:t.scope,readable:t.readable,"input-id":t.inputId,"is-editable":t.isEditable},on:{"update:scope":function(e){t.scope=e},"update:readable":function(e){t.readable=e}}}),t._v(" "),t.isEditable?e("div",{staticClass:"property"},[t.multiLine?e("textarea",{attrs:{id:t.inputId,placeholder:t.placeholder,rows:"8",autocapitalize:"none",autocomplete:"off",autocorrect:"off"},domProps:{value:t.value},on:{input:t.onPropertyChange}}):e("input",{ref:"input",attrs:{id:t.inputId,placeholder:t.placeholder,type:t.type,"aria-describedby":t.helperText?"".concat(t.name,"-helper-text"):"",autocapitalize:"none",autocomplete:"on",autocorrect:"off"},domProps:{value:t.value},on:{input:t.onPropertyChange}}),t._v(" "),e("div",{staticClass:"property__actions-container"},[e("transition",{attrs:{name:"fade"}},[t.showCheckmarkIcon?e("Check",{attrs:{size:20}}):t.showErrorIcon?e("AlertOctagon",{attrs:{size:20}}):t._e()],1)],1)]):e("span",[t._v("\n\t\t"+t._s(t.value||t.t("settings","No {property} set",{property:t.readable.toLocaleLowerCase()}))+"\n\t")]),t._v(" "),t.helperText?e("p",{staticClass:"property__helper-text-message property__helper-text-message--error",attrs:{id:"".concat(t.name,"-helper-text")}},[e("AlertCircle",{staticClass:"property__helper-text-message__icon",attrs:{size:18}}),t._v("\n\t\t"+t._s(t.helperText)+"\n\t")],1):t._e()],1)}),[],!1,null,"6eb7d8e0",null).exports,{displayName:Yt}=(0,s.j)("settings","personalInfoParameters",{}),{displayNameChangeSupported:$t}=(0,s.j)("settings","accountParameters",{}),Wt={name:"DisplayNameSection",components:{AccountPropertySection:qt},data:()=>({displayName:{...Yt,readable:V[Yt.name]},displayNameChangeSupported:$t}),methods:{onValidate:t=>""!==t,onSave(t){oc_userconfig.avatar.generated&&(oc_userconfig.avatar.version=Date.now()),(0,p.j8)("settings:display-name:updated",t)}}},Kt=(0,M.Z)(Wt,(function(){var t=this;return(0,t._self._c)("AccountPropertySection",t._b({attrs:{placeholder:t.t("settings","Your full name"),"is-editable":t.displayNameChangeSupported,"on-validate":t.onValidate,"on-save":t.onSave}},"AccountPropertySection",t.displayName,!1,!0))}),[],!1,null,null,null).exports;var Qt=n(15961);const Jt=async t=>{const e=(0,o.ts)().uid,a=(0,d.generateOcsUrl)("cloud/users/{userId}",{userId:e});return await(0,at.confirmPassword)(),(await l.default.put(a,{key:F.EMAIL,value:t})).data},Xt=async t=>{const e=(0,o.ts)().uid,a=(0,d.generateOcsUrl)("cloud/users/{userId}/{collection}",{userId:e,collection:F.EMAIL_COLLECTION});return await(0,at.confirmPassword)(),(await l.default.put(a,{key:t,value:""})).data},te=async t=>{const e=(0,o.ts)().uid,a=(0,d.generateOcsUrl)("cloud/users/{userId}",{userId:e});return await(0,at.confirmPassword)(),(await l.default.put(a,{key:"".concat(F.EMAIL).concat(Q),value:t})).data},ee=async(t,e)=>{const a=(0,o.ts)().uid,n=(0,d.generateOcsUrl)("cloud/users/{userId}/{collectionScope}",{userId:a,collectionScope:"".concat(F.EMAIL_COLLECTION).concat(Q)});return await(0,at.confirmPassword)(),(await l.default.put(n,{key:t,value:e})).data};function ae(t){return"string"==typeof t&&et.test(t)&&"\n"!==t.slice(-1)&&t.length<=320&&encodeURIComponent(t).replace(/%../g,"x").length<=320}const ne={name:"Email",components:{NcActions:Qt.O3,NcActionButton:Qt.Js,AlertCircle:Ut.default,AlertOctagon:Ft.Z,Check:zt.default,FederationControl:At},props:{email:{type:String,required:!0},index:{type:Number,default:0},primary:{type:Boolean,default:!1},scope:{type:String,required:!0},activeNotificationEmail:{type:String,default:""},localVerificationState:{type:Number,default:tt.NOT_VERIFIED}},data(){return{propertyReadable:z.EMAIL,initialEmail:this.email,localScope:this.scope,saveAdditionalEmailScope:ee,helperText:null,showCheckmarkIcon:!1,showErrorIcon:!1}},computed:{deleteDisabled(){return this.primary?""===this.email||this.initialEmail!==this.email:""!==this.initialEmail&&this.initialEmail!==this.email},deleteEmailLabel(){return this.primary?t("settings","Remove primary email"):t("settings","Delete email")},setNotificationMailDisabled(){return!this.primary&&this.localVerificationState!==tt.VERIFIED},setNotificationMailLabel(){return this.isNotificationEmail?t("settings","Unset as primary email"):this.primary||this.localVerificationState===tt.VERIFIED?t("settings","Set as primary email"):t("settings","This address is not confirmed")},federationDisabled(){return!this.initialEmail},inputId(){return this.primary?"email":"email-".concat(this.index)},inputPlaceholder(){return this.primary?t("settings","Your email address"):t("settings","Additional email address {index}",{index:this.index+1})},isNotificationEmail(){return this.email&&this.email===this.activeNotificationEmail||this.primary&&""===this.activeNotificationEmail}},mounted(){this.primary||""!==this.initialEmail||this.$nextTick((()=>{var t;return null===(t=this.$refs.email)||void 0===t?void 0:t.focus()}))},methods:{onEmailChange(t){this.$emit("update:email",t.target.value),this.debounceEmailChange(t.target.value.trim())},debounceEmailChange:Mt()((async function(t){var e;this.helperText=null,null!==(e=this.$refs.email)&&void 0!==e&&e.validationMessage?this.helperText=this.$refs.email.validationMessage:(ae(t)||""===t)&&(this.primary?await this.updatePrimaryEmail(t):t&&(""===this.initialEmail?await this.addAdditionalEmail(t):await this.updateAdditionalEmail(t)))}),500),async deleteEmail(){this.primary?(this.$emit("update:email",""),await this.updatePrimaryEmail("")):await this.deleteAdditionalEmail()},async updatePrimaryEmail(e){try{var a,n;const t=await Jt(e);this.handleResponse({email:e,status:null===(a=t.ocs)||void 0===a||null===(n=a.meta)||void 0===n?void 0:n.status})}catch(a){""===e?this.handleResponse({errorMessage:t("settings","Unable to delete primary email address"),error:a}):this.handleResponse({errorMessage:t("settings","Unable to update primary email address"),error:a})}},async addAdditionalEmail(e){try{var a,n;const t=await(async t=>{const e=(0,o.ts)().uid,a=(0,d.generateOcsUrl)("cloud/users/{userId}",{userId:e});return await(0,at.confirmPassword)(),(await l.default.put(a,{key:F.EMAIL_COLLECTION,value:t})).data})(e);this.handleResponse({email:e,status:null===(a=t.ocs)||void 0===a||null===(n=a.meta)||void 0===n?void 0:n.status})}catch(e){this.handleResponse({errorMessage:t("settings","Unable to add additional email address"),error:e})}},async setNotificationMail(){try{var t,e;const a=this.primary||this.isNotificationEmail?"":this.initialEmail,n=await(async t=>{const e=(0,o.ts)().uid,a=(0,d.generateOcsUrl)("cloud/users/{userId}",{userId:e});return await(0,at.confirmPassword)(),(await l.default.put(a,{key:F.NOTIFICATION_EMAIL,value:t})).data})(a);this.handleResponse({notificationEmail:a,status:null===(t=n.ocs)||void 0===t||null===(e=t.meta)||void 0===e?void 0:e.status})}catch(t){this.handleResponse({errorMessage:"Unable to choose this email for notifications",error:t})}},async updateAdditionalEmail(e){try{var a,n;const t=await(async(t,e)=>{const a=(0,o.ts)().uid,n=(0,d.generateOcsUrl)("cloud/users/{userId}/{collection}",{userId:a,collection:F.EMAIL_COLLECTION});return await(0,at.confirmPassword)(),(await l.default.put(n,{key:t,value:e})).data})(this.initialEmail,e);this.handleResponse({email:e,status:null===(a=t.ocs)||void 0===a||null===(n=a.meta)||void 0===n?void 0:n.status})}catch(e){this.handleResponse({errorMessage:t("settings","Unable to update additional email address"),error:e})}},async deleteAdditionalEmail(){try{var e,a;const t=await Xt(this.initialEmail);this.handleDeleteAdditionalEmail(null===(e=t.ocs)||void 0===e||null===(a=e.meta)||void 0===a?void 0:a.status)}catch(e){this.handleResponse({errorMessage:t("settings","Unable to delete additional email address"),error:e})}},handleDeleteAdditionalEmail(e){"ok"===e?this.$emit("delete-additional-email"):this.handleResponse({errorMessage:t("settings","Unable to delete additional email address")})},handleResponse(t){let{email:e,notificationEmail:a,status:n,errorMessage:i,error:o}=t;"ok"===n?(e?this.initialEmail=e:void 0!==a&&this.$emit("update:notification-email",a),this.showCheckmarkIcon=!0,setTimeout((()=>{this.showCheckmarkIcon=!1}),2e3)):(ot(o,i),this.showErrorIcon=!0,setTimeout((()=>{this.showErrorIcon=!1}),2e3))},onScopeChange(t){this.$emit("update:scope",t)}}},ie=ne;var oe=n(11121),se={};se.styleTagTransform=R(),se.setAttributes=k(),se.insert=j().bind(null,"head"),se.domAPI=P(),se.insertStyleElement=O(),I()(oe.Z,se),oe.Z&&oe.Z.locals&&oe.Z.locals;const re=(0,M.Z)(ie,(function(){var t=this,e=t._self._c;return e("div",[e("div",{staticClass:"email"},[e("input",{ref:"email",attrs:{id:t.inputId,type:"email",placeholder:t.inputPlaceholder,"aria-describedby":t.helperText?"".concat(t.inputId,"-helper-text"):"",autocapitalize:"none",autocomplete:"on",autocorrect:"off"},domProps:{value:t.email},on:{input:t.onEmailChange}}),t._v(" "),e("div",{staticClass:"email__actions-container"},[e("transition",{attrs:{name:"fade"}},[t.showCheckmarkIcon?e("Check",{attrs:{size:20}}):t.showErrorIcon?e("AlertOctagon",{attrs:{size:20}}):t._e()],1),t._v(" "),t.primary?t._e():[e("FederationControl",{attrs:{readable:t.propertyReadable,additional:!0,"additional-value":t.email,disabled:t.federationDisabled,"handle-additional-scope-change":t.saveAdditionalEmailScope,scope:t.localScope},on:{"update:scope":[function(e){t.localScope=e},t.onScopeChange]}})],t._v(" "),e("NcActions",{staticClass:"email__actions",attrs:{"aria-label":t.t("settings","Email options"),"force-menu":!0}},[e("NcActionButton",{attrs:{"aria-label":t.deleteEmailLabel,"close-after-click":!0,disabled:t.deleteDisabled,icon:"icon-delete"},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.deleteEmail.apply(null,arguments)}}},[t._v("\n\t\t\t\t\t"+t._s(t.deleteEmailLabel)+"\n\t\t\t\t")]),t._v(" "),t.primary&&t.isNotificationEmail?t._e():e("NcActionButton",{attrs:{"aria-label":t.setNotificationMailLabel,"close-after-click":!0,disabled:t.setNotificationMailDisabled,icon:"icon-favorite"},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.setNotificationMail.apply(null,arguments)}}},[t._v("\n\t\t\t\t\t"+t._s(t.setNotificationMailLabel)+"\n\t\t\t\t")])],1)],2)]),t._v(" "),t.helperText?e("p",{staticClass:"email__helper-text-message email__helper-text-message--error",attrs:{id:"".concat(t.inputId,"-helper-text")}},[e("AlertCircle",{staticClass:"email__helper-text-message__icon",attrs:{size:18}}),t._v("\n\t\t"+t._s(t.helperText)+"\n\t")],1):t._e(),t._v(" "),t.isNotificationEmail?e("em",[t._v("\n\t\t"+t._s(t.t("settings","Primary email for password reset and notifications"))+"\n\t")]):t._e()])}),[],!1,null,"5ff85d38",null).exports,{emailMap:{additionalEmails:le,primaryEmail:de,notificationEmail:ce}}=(0,s.j)("settings","personalInfoParameters",{}),{displayNameChangeSupported:pe}=(0,s.j)("settings","accountParameters",{}),Ae={name:"EmailSection",components:{HeaderBar:gt,Email:re},data(){return{accountProperty:z.EMAIL,additionalEmails:le.map((t=>({...t,key:this.generateUniqueKey()}))),displayNameChangeSupported:pe,primaryEmail:{...de,readable:V[de.name]},savePrimaryEmailScope:te,notificationEmail:ce}},computed:{firstAdditionalEmail(){return this.additionalEmails.length?this.additionalEmails[0].value:null},inputId(){return"account-property-".concat(this.primaryEmail.name)},isValidSection(){return ae(this.primaryEmail.value)&&this.additionalEmails.map((t=>{let{value:e}=t;return e})).every(ae)},primaryEmailValue:{get(){return this.primaryEmail.value},set(t){this.primaryEmail.value=t}}},methods:{onAddAdditionalEmail(){this.isValidSection&&this.additionalEmails.push({value:"",scope:X,key:this.generateUniqueKey()})},onDeleteAdditionalEmail(t){this.$delete(this.additionalEmails,t)},async onUpdateEmail(){if(""===this.primaryEmailValue&&this.firstAdditionalEmail){const t=this.firstAdditionalEmail;await this.deleteFirstAdditionalEmail(),this.primaryEmailValue=t,await this.updatePrimaryEmail()}},async onUpdateNotificationEmail(t){this.notificationEmail=t},async updatePrimaryEmail(){try{var e,a;const t=await Jt(this.primaryEmailValue);this.handleResponse(null===(e=t.ocs)||void 0===e||null===(a=e.meta)||void 0===a?void 0:a.status)}catch(e){this.handleResponse("error",t("settings","Unable to update primary email address"),e)}},async deleteFirstAdditionalEmail(){try{var e,a;const t=await Xt(this.firstAdditionalEmail);this.handleDeleteFirstAdditionalEmail(null===(e=t.ocs)||void 0===e||null===(a=e.meta)||void 0===a?void 0:a.status)}catch(e){this.handleResponse("error",t("settings","Unable to delete additional email address"),e)}},handleDeleteFirstAdditionalEmail(e){"ok"===e?this.$delete(this.additionalEmails,0):this.handleResponse("error",t("settings","Unable to delete additional email address"),{})},handleResponse(t,e,a){"ok"!==t&&ot(a,e)},generateUniqueKey:()=>Math.random().toString(36).substring(2)}};var ue=n(73070),me={};me.styleTagTransform=R(),me.setAttributes=k(),me.insert=j().bind(null,"head"),me.domAPI=P(),me.insertStyleElement=O(),I()(ue.Z,me),ue.Z&&ue.Z.locals&&ue.Z.locals;const he=(0,M.Z)(Ae,(function(){var t=this,e=t._self._c;return e("section",[e("HeaderBar",{attrs:{"input-id":t.inputId,readable:t.primaryEmail.readable,"handle-scope-change":t.savePrimaryEmailScope,"is-editable":!0,"is-multi-value-supported":!0,"is-valid-section":t.isValidSection,scope:t.primaryEmail.scope},on:{"update:scope":function(e){return t.$set(t.primaryEmail,"scope",e)},"add-additional":t.onAddAdditionalEmail}}),t._v(" "),t.displayNameChangeSupported?[e("Email",{attrs:{primary:!0,scope:t.primaryEmail.scope,email:t.primaryEmail.value,"active-notification-email":t.notificationEmail},on:{"update:scope":function(e){return t.$set(t.primaryEmail,"scope",e)},"update:email":[function(e){return t.$set(t.primaryEmail,"value",e)},t.onUpdateEmail],"update:activeNotificationEmail":function(e){t.notificationEmail=e},"update:active-notification-email":function(e){t.notificationEmail=e},"update:notification-email":t.onUpdateNotificationEmail}})]:e("span",[t._v("\n\t\t"+t._s(t.primaryEmail.value||t.t("settings","No email address set"))+"\n\t")]),t._v(" "),t.additionalEmails.length?[e("em",{staticClass:"additional-emails-label"},[t._v(t._s(t.t("settings","Additional emails")))]),t._v(" "),t._l(t.additionalEmails,(function(a,n){return e("Email",{key:a.key,attrs:{index:n,scope:a.scope,email:a.value,"local-verification-state":parseInt(a.locallyVerified,10),"active-notification-email":t.notificationEmail},on:{"update:scope":function(e){return t.$set(a,"scope",e)},"update:email":[function(e){return t.$set(a,"value",e)},t.onUpdateEmail],"update:activeNotificationEmail":function(e){t.notificationEmail=e},"update:active-notification-email":function(e){t.notificationEmail=e},"update:notification-email":t.onUpdateNotificationEmail,"delete-additional-email":function(e){return t.onDeleteAdditionalEmail(n)}}})}))]:t._e()],2)}),[],!1,null,"46c7eb7e",null).exports;var ge=n(45004);const{defaultPhoneRegion:ve,phone:Ce}=(0,s.j)("settings","personalInfoParameters",{}),fe={name:"PhoneSection",components:{AccountPropertySection:qt},data:()=>({phone:{...Ce,readable:V[Ce.name]}}),methods:{onValidate:t=>ve?(0,ge.y)(t,ve):(0,ge.y)(t)}},be=(0,M.Z)(fe,(function(){var t=this;return(0,t._self._c)("AccountPropertySection",t._b({attrs:{placeholder:t.t("settings","Your phone number"),type:"tel","on-validate":t.onValidate}},"AccountPropertySection",t.phone,!1,!0))}),[],!1,null,null,null).exports,{location:ye}=(0,s.j)("settings","personalInfoParameters",{}),xe={name:"LocationSection",components:{AccountPropertySection:qt},data:()=>({location:{...ye,readable:V[ye.name]}})},Ee=(0,M.Z)(xe,(function(){var t=this;return(0,t._self._c)("AccountPropertySection",t._b({attrs:{placeholder:t.t("settings","Your location")}},"AccountPropertySection",t.location,!1,!0))}),[],!1,null,null,null).exports,{website:_e}=(0,s.j)("settings","personalInfoParameters",{}),we={name:"WebsiteSection",components:{AccountPropertySection:qt},data:()=>({website:{..._e,readable:V[_e.name]}}),methods:{onValidate:t=>function(t){try{return new URL(t),!0}catch(t){return!1}}(t)}},Ie=(0,M.Z)(we,(function(){var t=this;return(0,t._self._c)("AccountPropertySection",t._b({attrs:{placeholder:t.t("settings","Your website"),type:"url","on-validate":t.onValidate}},"AccountPropertySection",t.website,!1,!0))}),[],!1,null,null,null).exports,{twitter:Se}=(0,s.j)("settings","personalInfoParameters",{}),Pe={name:"TwitterSection",components:{AccountPropertySection:qt},data:()=>({twitter:{...Se,readable:V[Se.name]}})},Le=(0,M.Z)(Pe,(function(){var t=this;return(0,t._self._c)("AccountPropertySection",t._b({attrs:{placeholder:t.t("settings","Your Twitter handle")}},"AccountPropertySection",t.twitter,!1,!0))}),[],!1,null,null,null).exports,{fediverse:je}=(0,s.j)("settings","personalInfoParameters",{}),Be={name:"FediverseSection",components:{AccountPropertySection:qt},data:()=>({fediverse:{...je,readable:V[je.name]}})},ke=(0,M.Z)(Be,(function(){var t=this;return(0,t._self._c)("AccountPropertySection",t._b({attrs:{placeholder:t.t("settings","Your handle")}},"AccountPropertySection",t.fediverse,!1,!0))}),[],!1,null,null,null).exports,De={name:"Language",props:{inputId:{type:String,default:null},commonLanguages:{type:Array,required:!0},otherLanguages:{type:Array,required:!0},language:{type:Object,required:!0}},data(){return{initialLanguage:this.language}},computed:{allLanguages(){return Object.freeze([...this.commonLanguages,...this.otherLanguages].reduce(((t,e)=>{let{code:a,name:n}=e;return{...t,[a]:n}}),{}))}},methods:{async onLanguageChange(t){const e=this.constructLanguage(t.target.value);var a;this.$emit("update:language",e),""!==(a=e).code&&""!==a.name&&void 0!==a.name&&await this.updateLanguage(e)},async updateLanguage(e){try{var a,n;const t=await nt(q.LANGUAGE,e.code);this.handleResponse({language:e,status:null===(a=t.ocs)||void 0===a||null===(n=a.meta)||void 0===n?void 0:n.status}),this.reloadPage()}catch(e){this.handleResponse({errorMessage:t("settings","Unable to update language"),error:e})}},constructLanguage(t){return{code:t,name:this.allLanguages[t]}},handleResponse(t){let{language:e,status:a,errorMessage:n,error:i}=t;"ok"===a?this.initialLanguage=e:ot(i,n)},reloadPage(){location.reload()}}};var Oe=n(42569),Ne={};Ne.styleTagTransform=R(),Ne.setAttributes=k(),Ne.insert=j().bind(null,"head"),Ne.domAPI=P(),Ne.insertStyleElement=O(),I()(Oe.Z,Ne),Oe.Z&&Oe.Z.locals&&Oe.Z.locals;const Re=(0,M.Z)(De,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"language"},[e("select",{attrs:{id:t.inputId,placeholder:t.t("settings","Language")},on:{change:t.onLanguageChange}},[t._l(t.commonLanguages,(function(a){return e("option",{key:a.code,domProps:{selected:t.language.code===a.code,value:a.code}},[t._v("\n\t\t\t"+t._s(a.name)+"\n\t\t")])})),t._v(" "),e("option",{attrs:{disabled:""}},[t._v("\n\t\t\t──────────\n\t\t")]),t._v(" "),t._l(t.otherLanguages,(function(a){return e("option",{key:a.code,domProps:{selected:t.language.code===a.code,value:a.code}},[t._v("\n\t\t\t"+t._s(a.name)+"\n\t\t")])}))],2),t._v(" "),e("a",{attrs:{href:"https://www.transifex.com/nextcloud/nextcloud/",target:"_blank",rel:"noreferrer noopener"}},[e("em",[t._v(t._s(t.t("settings","Help translate")))])])])}),[],!1,null,"5c847b3a",null).exports,{languageMap:{activeLanguage:Te,commonLanguages:Ze,otherLanguages:Me}}=(0,s.j)("settings","personalInfoParameters",{}),Ue={name:"LanguageSection",components:{Language:Re,HeaderBar:gt},data:()=>({propertyReadable:Y.LANGUAGE,commonLanguages:Ze,otherLanguages:Me,language:Te}),computed:{inputId:()=>"account-setting-".concat(q.LANGUAGE),isEditable(){return Boolean(this.language)}}};var Fe=n(12531),ze={};ze.styleTagTransform=R(),ze.setAttributes=k(),ze.insert=j().bind(null,"head"),ze.domAPI=P(),ze.insertStyleElement=O(),I()(Fe.Z,ze),Fe.Z&&Fe.Z.locals&&Fe.Z.locals;const Ve=(0,M.Z)(Ue,(function(){var t=this,e=t._self._c;return e("section",[e("HeaderBar",{attrs:{"input-id":t.inputId,readable:t.propertyReadable}}),t._v(" "),t.isEditable?[e("Language",{attrs:{"input-id":t.inputId,"common-languages":t.commonLanguages,"other-languages":t.otherLanguages,language:t.language},on:{"update:language":function(e){t.language=e}}})]:e("span",[t._v("\n\t\t"+t._s(t.t("settings","No language set"))+"\n\t")])],2)}),[],!1,null,"92685b76",null).exports;var He=n(80351),Ge=n.n(He);const qe={name:"Locale",components:{Web:n(97859).default},props:{inputId:{type:String,default:null},locale:{type:Object,required:!0},localesForLanguage:{type:Array,required:!0},otherLocales:{type:Array,required:!0}},data(){return{initialLocale:this.locale,example:{date:Ge()().format("L"),time:Ge()().format("LTS"),firstDayOfWeek:window.dayNames[window.firstDay]}}},computed:{allLocales(){return Object.freeze([...this.localesForLanguage,...this.otherLocales].reduce(((t,e)=>{let{code:a,name:n}=e;return{...t,[a]:n}}),{}))}},created(){setInterval(this.refreshExample,1e3)},methods:{async onLocaleChange(t){const e=this.constructLocale(t.target.value);var a;this.$emit("update:locale",e),""!==(a=e).code&&""!==a.name&&void 0!==a.name&&await this.updateLocale(e)},async updateLocale(e){try{var a,n;const t=await nt(q.LOCALE,e.code);this.handleResponse({locale:e,status:null===(a=t.ocs)||void 0===a||null===(n=a.meta)||void 0===n?void 0:n.status}),this.reloadPage()}catch(e){this.handleResponse({errorMessage:t("settings","Unable to update locale"),error:e})}},constructLocale(t){return{code:t,name:this.allLocales[t]}},handleResponse(t){let{locale:e,status:a,errorMessage:n,error:i}=t;"ok"===a?this.initialLocale=e:(this.$emit("update:locale",this.initialLocale),ot(i,n))},refreshExample(){this.example={date:Ge()().format("L"),time:Ge()().format("LTS"),firstDayOfWeek:window.dayNames[window.firstDay]}},reloadPage(){location.reload()}}};var Ye=n(87229),$e={};$e.styleTagTransform=R(),$e.setAttributes=k(),$e.insert=j().bind(null,"head"),$e.domAPI=P(),$e.insertStyleElement=O(),I()(Ye.Z,$e),Ye.Z&&Ye.Z.locals&&Ye.Z.locals;const We=(0,M.Z)(qe,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"locale"},[e("select",{attrs:{id:t.inputId,placeholder:t.t("settings","Locale")},on:{change:t.onLocaleChange}},[t._l(t.localesForLanguage,(function(a){return e("option",{key:a.code,domProps:{selected:t.locale.code===a.code,value:a.code}},[t._v("\n\t\t\t"+t._s(a.name)+"\n\t\t")])})),t._v(" "),e("option",{attrs:{disabled:""}},[t._v("\n\t\t\t──────────\n\t\t")]),t._v(" "),t._l(t.otherLocales,(function(a){return e("option",{key:a.code,domProps:{selected:t.locale.code===a.code,value:a.code}},[t._v("\n\t\t\t"+t._s(a.name)+"\n\t\t")])}))],2),t._v(" "),e("div",{staticClass:"example"},[e("Web",{attrs:{size:20}}),t._v(" "),e("div",{staticClass:"example__text"},[e("p",[e("span",[t._v(t._s(t.example.date))]),t._v(" "),e("span",[t._v(t._s(t.example.time))])]),t._v(" "),e("p",[t._v("\n\t\t\t\t"+t._s(t.t("settings","Week starts on {firstDayOfWeek}",{firstDayOfWeek:this.example.firstDayOfWeek}))+"\n\t\t\t")])])],1)])}),[],!1,null,"1ac456dc",null).exports,{localeMap:{activeLocale:Ke,localesForLanguage:Qe,otherLocales:Je}}=(0,s.j)("settings","personalInfoParameters",{}),Xe={name:"LocaleSection",components:{Locale:We,HeaderBar:gt},data:()=>({propertyReadable:Y.LOCALE,localesForLanguage:Qe,otherLocales:Je,locale:Ke}),computed:{inputId:()=>"account-setting-".concat(q.LOCALE),isEditable(){return Boolean(this.locale)}}};var ta=n(682),ea={};ea.styleTagTransform=R(),ea.setAttributes=k(),ea.insert=j().bind(null,"head"),ea.domAPI=P(),ea.insertStyleElement=O(),I()(ta.Z,ea),ta.Z&&ta.Z.locals&&ta.Z.locals;const aa=(0,M.Z)(Xe,(function(){var t=this,e=t._self._c;return e("section",[e("HeaderBar",{attrs:{"input-id":t.inputId,readable:t.propertyReadable}}),t._v(" "),t.isEditable?[e("Locale",{attrs:{"input-id":t.inputId,"locales-for-language":t.localesForLanguage,"other-locales":t.otherLocales,locale:t.locale},on:{"update:locale":function(e){t.locale=e}}})]:e("span",[t._v("\n\t\t"+t._s(t.t("settings","No locale set"))+"\n\t")])],2)}),[],!1,null,"84fca724",null).exports,na={name:"EditProfileAnchorLink",components:{ChevronDownIcon:n(41622).default},props:{profileEnabled:{type:Boolean,required:!0}},computed:{disabled(){return!this.profileEnabled}}};var ia=n(64534),oa={};oa.styleTagTransform=R(),oa.setAttributes=k(),oa.insert=j().bind(null,"head"),oa.domAPI=P(),oa.insertStyleElement=O(),I()(ia.Z,oa),ia.Z&&ia.Z.locals&&ia.Z.locals;var sa=n(40001),ra={};ra.styleTagTransform=R(),ra.setAttributes=k(),ra.insert=j().bind(null,"head"),ra.domAPI=P(),ra.insertStyleElement=O(),I()(sa.Z,ra),sa.Z&&sa.Z.locals&&sa.Z.locals;const la=(0,M.Z)(na,(function(){var t=this,e=t._self._c;return e("a",t._g({class:{disabled:t.disabled},attrs:{href:"#profile-visibility"}},t.$listeners),[e("ChevronDownIcon",{staticClass:"anchor-icon",attrs:{size:22}}),t._v("\n\t"+t._s(t.t("settings","Edit your Profile visibility"))+"\n")],1)}),[],!1,null,"1caba458",null).exports;var da=n(20571);const ca={name:"ProfileCheckbox",components:{NcCheckboxRadioSwitch:n.n(da)()},props:{profileEnabled:{type:Boolean,required:!0}},data(){return{isProfileEnabled:this.profileEnabled,loading:!1}},methods:{async saveEnableProfile(){this.loading=!0;try{var e,a;const t=await nt(F.PROFILE_ENABLED,this.isProfileEnabled);this.handleResponse({isProfileEnabled:this.isProfileEnabled,status:null===(e=t.ocs)||void 0===e||null===(a=e.meta)||void 0===a?void 0:a.status})}catch(e){this.handleResponse({errorMessage:t("settings","Unable to update profile enabled state"),error:e})}},handleResponse(t){let{isProfileEnabled:e,status:a,errorMessage:n,error:i}=t;"ok"===a?(0,p.j8)("settings:profile-enabled:updated",e):ot(i,n),this.loading=!1}}},pa=(0,M.Z)(ca,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"checkbox-container"},[e("NcCheckboxRadioSwitch",{attrs:{type:"switch",checked:t.isProfileEnabled,loading:t.loading},on:{"update:checked":[function(e){t.isProfileEnabled=e},t.saveEnableProfile]}},[t._v("\n\t\t"+t._s(t.t("settings","Enable Profile"))+"\n\t")])],1)}),[],!1,null,null,null).exports,Aa={name:"ProfilePreviewCard",components:{NcAvatar:u()},props:{displayName:{type:String,required:!0},organisation:{type:String,required:!0},profileEnabled:{type:Boolean,required:!0},userId:{type:String,required:!0}},computed:{disabled(){return!this.profileEnabled},profilePageLink(){return this.profileEnabled?(0,d.generateUrl)("/u/{userId}",{userId:(0,o.ts)().uid}):null}}};var ua=n(80507),ma={};ma.styleTagTransform=R(),ma.setAttributes=k(),ma.insert=j().bind(null,"head"),ma.domAPI=P(),ma.insertStyleElement=O(),I()(ua.Z,ma),ua.Z&&ua.Z.locals&&ua.Z.locals;const ha=(0,M.Z)(Aa,(function(){var t=this,e=t._self._c;return e("a",{staticClass:"preview-card",class:{disabled:t.disabled},attrs:{href:t.profilePageLink}},[e("NcAvatar",{staticClass:"preview-card__avatar",attrs:{user:t.userId,size:48,"show-user-status":!0,"show-user-status-compact":!1,"disable-menu":!0,"disable-tooltip":!0}}),t._v(" "),e("div",{staticClass:"preview-card__header"},[e("span",[t._v(t._s(t.displayName))])]),t._v(" "),e("div",{staticClass:"preview-card__footer"},[e("span",[t._v(t._s(t.organisation))])])],1)}),[],!1,null,"61586aa5",null).exports,{organisation:{value:ga},displayName:{value:va},profileEnabled:Ca,userId:fa}=(0,s.j)("settings","personalInfoParameters",{}),ba={name:"ProfileSection",components:{EditProfileAnchorLink:la,HeaderBar:gt,ProfileCheckbox:pa,ProfilePreviewCard:ha},data:()=>({propertyReadable:z.PROFILE_ENABLED,organisation:ga,displayName:va,profileEnabled:Ca,userId:fa}),mounted(){(0,p.Ld)("settings:display-name:updated",this.handleDisplayNameUpdate),(0,p.Ld)("settings:organisation:updated",this.handleOrganisationUpdate)},beforeDestroy(){(0,p.r1)("settings:display-name:updated",this.handleDisplayNameUpdate),(0,p.r1)("settings:organisation:updated",this.handleOrganisationUpdate)},methods:{handleDisplayNameUpdate(t){this.displayName=t},handleOrganisationUpdate(t){this.organisation=t}}},ya=ba;var xa=n(90552),Ea={};Ea.styleTagTransform=R(),Ea.setAttributes=k(),Ea.insert=j().bind(null,"head"),Ea.domAPI=P(),Ea.insertStyleElement=O(),I()(xa.Z,Ea),xa.Z&&xa.Z.locals&&xa.Z.locals;const _a=(0,M.Z)(ya,(function(){var t=this,e=t._self._c;return e("section",[e("HeaderBar",{attrs:{readable:t.propertyReadable}}),t._v(" "),e("ProfileCheckbox",{attrs:{"profile-enabled":t.profileEnabled},on:{"update:profileEnabled":function(e){t.profileEnabled=e},"update:profile-enabled":function(e){t.profileEnabled=e}}}),t._v(" "),e("ProfilePreviewCard",{attrs:{organisation:t.organisation,"display-name":t.displayName,"profile-enabled":t.profileEnabled,"user-id":t.userId}}),t._v(" "),e("EditProfileAnchorLink",{attrs:{"profile-enabled":t.profileEnabled}})],1)}),[],!1,null,"cf64d964",null).exports,{organisation:wa}=(0,s.j)("settings","personalInfoParameters",{}),Ia={name:"OrganisationSection",components:{AccountPropertySection:qt},data:()=>({organisation:{...wa,readable:V[wa.name]}})},Sa=(0,M.Z)(Ia,(function(){var t=this;return(0,t._self._c)("AccountPropertySection",t._b({attrs:{placeholder:t.t("settings","Your organisation")}},"AccountPropertySection",t.organisation,!1,!0))}),[],!1,null,null,null).exports,{role:Pa}=(0,s.j)("settings","personalInfoParameters",{}),La={name:"RoleSection",components:{AccountPropertySection:qt},data:()=>({role:{...Pa,readable:V[Pa.name]}})},ja=(0,M.Z)(La,(function(){var t=this;return(0,t._self._c)("AccountPropertySection",t._b({attrs:{placeholder:t.t("settings","Your role")}},"AccountPropertySection",t.role,!1,!0))}),[],!1,null,null,null).exports,{headline:Ba}=(0,s.j)("settings","personalInfoParameters",{}),ka={name:"HeadlineSection",components:{AccountPropertySection:qt},data:()=>({headline:{...Ba,readable:V[Ba.name]}})},Da=(0,M.Z)(ka,(function(){var t=this;return(0,t._self._c)("AccountPropertySection",t._b({attrs:{placeholder:t.t("settings","Your headline")}},"AccountPropertySection",t.headline,!1,!0))}),[],!1,null,null,null).exports,{biography:Oa}=(0,s.j)("settings","personalInfoParameters",{}),Na={name:"BiographySection",components:{AccountPropertySection:qt},data:()=>({biography:{...Oa,readable:V[Oa.name]}})},Ra=(0,M.Z)(Na,(function(){var t=this;return(0,t._self._c)("AccountPropertySection",t._b({attrs:{placeholder:t.t("settings","Your biography"),"multi-line":!0}},"AccountPropertySection",t.biography,!1,!0))}),[],!1,null,null,null).exports;var Ta=n(36456),Za=n.n(Ta);const Ma=Object.freeze({SHOW:"show",SHOW_USERS_ONLY:"show_users_only",HIDE:"hide"}),Ua=Object.freeze({[Ma.SHOW]:{name:Ma.SHOW,label:t("settings","Show to everyone")},[Ma.SHOW_USERS_ONLY]:{name:Ma.SHOW_USERS_ONLY,label:t("settings","Show to logged in users only")},[Ma.HIDE]:{name:Ma.HIDE,label:t("settings","Hide")}}),{profileEnabled:Fa}=(0,s.j)("settings","personalInfoParameters",!1),za={name:"VisibilityDropdown",components:{NcSelect:Za()},props:{paramId:{type:String,required:!0},displayId:{type:String,required:!0},visibility:{type:String,required:!0}},data(){return{initialVisibility:this.visibility,profileEnabled:Fa}},computed:{disabled(){return!this.profileEnabled},inputId(){return"profile-visibility-".concat(this.paramId)},visibilityObject(){return Ua[this.visibility]},visibilityOptions:()=>Object.values(Ua)},mounted(){(0,p.Ld)("settings:profile-enabled:updated",this.handleProfileEnabledUpdate)},beforeDestroy(){(0,p.r1)("settings:profile-enabled:updated",this.handleProfileEnabledUpdate)},methods:{async onVisibilityChange(t){if(null!==t){const{name:e}=t;this.$emit("update:visibility",e),""!==e&&await this.updateVisibility(e)}},async updateVisibility(e){try{var a,n;const t=await(async(t,e)=>{const a=(0,o.ts)().uid,n=(0,d.generateOcsUrl)("/profile/{userId}",{userId:a});return await(0,at.confirmPassword)(),(await l.default.put(n,{paramId:t,visibility:e})).data})(this.paramId,e);this.handleResponse({visibility:e,status:null===(a=t.ocs)||void 0===a||null===(n=a.meta)||void 0===n?void 0:n.status})}catch(e){this.handleResponse({errorMessage:t("settings","Unable to update visibility of {displayId}",{displayId:this.displayId}),error:e})}},handleResponse(t){let{visibility:e,status:a,errorMessage:n,error:i}=t;"ok"===a?this.initialVisibility=e:ot(i,n)},handleProfileEnabledUpdate(t){this.profileEnabled=t}}},Va=za;var Ha=n(63019),Ga={};Ga.styleTagTransform=R(),Ga.setAttributes=k(),Ga.insert=j().bind(null,"head"),Ga.domAPI=P(),Ga.insertStyleElement=O(),I()(Ha.Z,Ga),Ha.Z&&Ha.Z.locals&&Ha.Z.locals;const qa=(0,M.Z)(Va,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"visibility-container",class:{disabled:t.disabled}},[e("label",{attrs:{for:t.inputId}},[t._v("\n\t\t"+t._s(t.displayId)+"\n\t")]),t._v(" "),e("NcSelect",{staticClass:"visibility-container__select",attrs:{"input-id":t.inputId,clearable:!1,options:t.visibilityOptions,value:t.visibilityObject},on:{"option:selected":t.onVisibilityChange}})],1)}),[],!1,null,"b13d20da",null).exports,{profileConfig:Ya}=(0,s.j)("settings","profileParameters",{}),{profileEnabled:$a}=(0,s.j)("settings","personalInfoParameters",!1),Wa=(t,e)=>t.appId===e.appId||"core"!==t.appId&&"core"!==e.appId?t.displayId.localeCompare(e.displayId):"core"===t.appId?1:-1,Ka={name:"ProfileVisibilitySection",components:{HeaderBar:gt,VisibilityDropdown:qa},data:()=>({heading:H.PROFILE_VISIBILITY,profileEnabled:$a,visibilityParams:Object.entries(Ya).map((t=>{let[e,{appId:a,displayId:n,visibility:i}]=t;return{id:e,appId:a,displayId:n,visibility:i}})).sort(Wa),marginLeft:window.matchMedia("(min-width: 1600px)").matches?window.getComputedStyle(document.getElementById("vue-avatar-section")).getPropertyValue("width").trim():"0px"}),computed:{disabled(){return!this.profileEnabled},rows(){return Math.ceil(this.visibilityParams.length/2)}},mounted(){(0,p.Ld)("settings:profile-enabled:updated",this.handleProfileEnabledUpdate),window.onresize=()=>{this.marginLeft=window.matchMedia("(min-width: 1600px)").matches?window.getComputedStyle(document.getElementById("vue-avatar-section")).getPropertyValue("width").trim():"0px"}},beforeDestroy(){(0,p.r1)("settings:profile-enabled:updated",this.handleProfileEnabledUpdate)},methods:{handleProfileEnabledUpdate(t){this.profileEnabled=t}}},Qa=Ka;var Ja=n(45386),Xa={};Xa.styleTagTransform=R(),Xa.setAttributes=k(),Xa.insert=j().bind(null,"head"),Xa.domAPI=P(),Xa.insertStyleElement=O(),I()(Ja.Z,Xa),Ja.Z&&Ja.Z.locals&&Ja.Z.locals;const tn=(0,M.Z)(Qa,(function(){var t=this,e=t._self._c;return e("section",{style:{marginLeft:t.marginLeft},attrs:{id:"profile-visibility"}},[e("HeaderBar",{attrs:{"is-heading":!0,readable:t.heading}}),t._v(" "),e("em",{class:{disabled:t.disabled}},[t._v("\n\t\t"+t._s(t.t("settings",'The more restrictive setting of either visibility or scope is respected on your Profile. For example, if visibility is set to "Show to everyone" and scope is set to "Private", "Private" is respected.'))+"\n\t")]),t._v(" "),e("div",{staticClass:"visibility-dropdowns",style:{gridTemplateRows:"repeat(".concat(t.rows,", 44px)")}},t._l(t.visibilityParams,(function(a){return e("VisibilityDropdown",{key:a.id,attrs:{"param-id":a.id,"display-id":a.displayId,visibility:a.visibility},on:{"update:visibility":function(e){return t.$set(a,"visibility",e)}}})})),1)],1)}),[],!1,null,"a07dbf96",null).exports;n.nc=btoa((0,o.IH)());const en=(0,s.j)("settings","profileEnabledGlobally",!0);i.default.mixin({methods:{t:r.Iu}});const an=i.default.extend(_t),nn=i.default.extend(Tt),on=i.default.extend(Kt),sn=i.default.extend(he),rn=i.default.extend(be),ln=i.default.extend(Ee),dn=i.default.extend(Ie),cn=i.default.extend(Le),pn=i.default.extend(ke),An=i.default.extend(Ve),un=i.default.extend(aa);if((new an).$mount("#vue-avatar-section"),(new nn).$mount("#vue-details-section"),(new on).$mount("#vue-displayname-section"),(new sn).$mount("#vue-email-section"),(new rn).$mount("#vue-phone-section"),(new ln).$mount("#vue-location-section"),(new dn).$mount("#vue-website-section"),(new cn).$mount("#vue-twitter-section"),(new pn).$mount("#vue-fediverse-section"),(new An).$mount("#vue-language-section"),(new un).$mount("#vue-locale-section"),en){const t=i.default.extend(_a),e=i.default.extend(Sa),a=i.default.extend(ja),n=i.default.extend(Da),o=i.default.extend(Ra),s=i.default.extend(tn);(new t).$mount("#vue-profile-section"),(new e).$mount("#vue-organisation-section"),(new a).$mount("#vue-role-section"),(new n).$mount("#vue-headline-section"),(new o).$mount("#vue-biography-section"),(new s).$mount("#vue-profile-visibility-section")}},31246:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,"section[data-v-022fd5d4]{grid-row:1/3}.avatar__container[data-v-022fd5d4]{margin:0 auto;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:16px 0;width:300px}.avatar__container span[data-v-022fd5d4]{color:var(--color-text-lighter)}.avatar__preview[data-v-022fd5d4]{display:flex;justify-content:center;align-items:center;width:180px;height:180px}.avatar__buttons[data-v-022fd5d4]{display:flex;gap:0 10px}.avatar__cropper[data-v-022fd5d4]{width:300px;height:300px;overflow:hidden}.avatar__cropper-buttons[data-v-022fd5d4]{width:100%;display:flex;justify-content:space-between}.avatar__cropper[data-v-022fd5d4] .cropper-view-box{border-radius:50%}input[type=file][data-v-022fd5d4]{display:none}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/AvatarSection.vue"],names:[],mappings:"AACA,yBACC,YAAA,CAGA,oCACC,aAAA,CACA,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,kBAAA,CACA,UAAA,CACA,WAAA,CAEA,yCACC,+BAAA,CAIF,kCACC,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,WAAA,CACA,YAAA,CAGD,kCACC,YAAA,CACA,UAAA,CAGD,kCACC,WAAA,CACA,YAAA,CACA,eAAA,CAEA,0CACC,UAAA,CACA,YAAA,CACA,6BAAA,CAGD,oDACC,iBAAA,CAKH,kCACC,YAAA",sourcesContent:['\nsection {\n\tgrid-row: 1/3;\n}\n.avatar {\n\t&__container {\n\t\tmargin: 0 auto;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tgap: 16px 0;\n\t\twidth: 300px;\n\n\t\tspan {\n\t\t\tcolor: var(--color-text-lighter);\n\t\t}\n\t}\n\n\t&__preview {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\twidth: 180px;\n\t\theight: 180px;\n\t}\n\n\t&__buttons {\n\t\tdisplay: flex;\n\t\tgap: 0 10px;\n\t}\n\n\t&__cropper {\n\t\twidth: 300px;\n\t\theight: 300px;\n\t\toverflow: hidden;\n\n\t\t&-buttons {\n\t\t\twidth: 100%;\n\t\t\tdisplay: flex;\n\t\t\tjustify-content: space-between;\n\t\t}\n\n\t\t&::v-deep .cropper-view-box {\n\t\t\tborder-radius: 50%;\n\t\t}\n\t}\n}\n\ninput[type="file"] {\n\tdisplay: none;\n}\n'],sourceRoot:""}]);const r=s},18118:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,".details[data-v-1ab46e68]{display:flex;flex-direction:column;margin:10px 32px 10px 0;gap:16px 0;color:var(--color-text-lighter)}.details__groups[data-v-1ab46e68],.details__quota[data-v-1ab46e68]{display:flex;gap:0 10px}.details__groups-info[data-v-1ab46e68],.details__quota-info[data-v-1ab46e68]{display:flex;flex-direction:column;width:100%;gap:4px 0}.details__groups-list[data-v-1ab46e68],.details__quota-list[data-v-1ab46e68]{font-weight:bold}.details__groups[data-v-1ab46e68] .material-design-icon,.details__quota[data-v-1ab46e68] .material-design-icon{align-self:flex-start;margin-top:2px}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/DetailsSection.vue"],names:[],mappings:"AACA,0BACC,YAAA,CACA,qBAAA,CACA,uBAAA,CACA,UAAA,CACA,+BAAA,CAEA,mEAEC,YAAA,CACA,UAAA,CAEA,6EACC,YAAA,CACA,qBAAA,CACA,UAAA,CACA,SAAA,CAGD,6EACC,gBAAA,CAGD,+GACC,qBAAA,CACA,cAAA",sourcesContent:["\n.details {\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin: 10px 32px 10px 0;\n\tgap: 16px 0;\n\tcolor: var(--color-text-lighter);\n\n\t&__groups,\n\t&__quota {\n\t\tdisplay: flex;\n\t\tgap: 0 10px;\n\n\t\t&-info {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\twidth: 100%;\n\t\t\tgap: 4px 0;\n\t\t}\n\n\t\t&-list {\n\t\t\tfont-weight: bold;\n\t\t}\n\n\t\t&::v-deep .material-design-icon {\n\t\t\talign-self: flex-start;\n\t\t\tmargin-top: 2px;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const r=s},11121:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,".email[data-v-5ff85d38]{display:grid;align-items:center}.email input[data-v-5ff85d38]{grid-area:1/1;width:100%}.email .email__actions-container[data-v-5ff85d38]{grid-area:1/1;justify-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px}.email .email__actions-container .email__actions[data-v-5ff85d38]{opacity:.4 !important}.email .email__actions-container .email__actions[data-v-5ff85d38]:hover,.email .email__actions-container .email__actions[data-v-5ff85d38]:focus,.email .email__actions-container .email__actions[data-v-5ff85d38]:active{opacity:.8 !important}.email .email__actions-container .email__actions[data-v-5ff85d38] button{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important}.email__helper-text-message[data-v-5ff85d38]{padding:4px 0;display:flex;align-items:center}.email__helper-text-message__icon[data-v-5ff85d38]{margin-right:8px;align-self:start;margin-top:4px}.email__helper-text-message--error[data-v-5ff85d38]{color:var(--color-error)}.fade-enter[data-v-5ff85d38],.fade-leave-to[data-v-5ff85d38]{opacity:0}.fade-enter-active[data-v-5ff85d38]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-5ff85d38]{transition:opacity 300ms ease-out}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/EmailSection/Email.vue"],names:[],mappings:"AACA,wBACC,YAAA,CACA,kBAAA,CAEA,8BACC,aAAA,CACA,UAAA,CAGD,kDACC,aAAA,CACA,qBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CAEA,kEACC,qBAAA,CAEA,yNAGC,qBAAA,CAGD,yEACC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CAKH,6CACC,aAAA,CACA,YAAA,CACA,kBAAA,CAEA,mDACC,gBAAA,CACA,gBAAA,CACA,cAAA,CAGD,oDACC,wBAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA",sourcesContent:["\n.email {\n\tdisplay: grid;\n\talign-items: center;\n\n\tinput {\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t}\n\n\t.email__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\n\t\t.email__actions {\n\t\t\topacity: 0.4 !important;\n\n\t\t\t&:hover,\n\t\t\t&:focus,\n\t\t\t&:active {\n\t\t\t\topacity: 0.8 !important;\n\t\t\t}\n\n\t\t\t&::v-deep button {\n\t\t\t\theight: 30px !important;\n\t\t\t\tmin-height: 30px !important;\n\t\t\t\twidth: 30px !important;\n\t\t\t\tmin-width: 30px !important;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__helper-text-message {\n\t\tpadding: 4px 0;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\n\t\t&__icon {\n\t\t\tmargin-right: 8px;\n\t\t\talign-self: start;\n\t\t\tmargin-top: 4px;\n\t\t}\n\n\t\t&--error {\n\t\t\tcolor: var(--color-error);\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n"],sourceRoot:""}]);const r=s},73070:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,"section[data-v-46c7eb7e]{padding:10px 10px}section[data-v-46c7eb7e] button:disabled{cursor:default}section .additional-emails-label[data-v-46c7eb7e]{display:block;margin-top:16px}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue"],names:[],mappings:"AACA,yBACC,iBAAA,CAEA,yCACC,cAAA,CAGD,kDACC,aAAA,CACA,eAAA",sourcesContent:["\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n\n\t.additional-emails-label {\n\t\tdisplay: block;\n\t\tmargin-top: 16px;\n\t}\n}\n"],sourceRoot:""}]);const r=s},42569:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,".language[data-v-5c847b3a]{display:grid}.language select[data-v-5c847b3a]{width:100%}.language a[data-v-5c847b3a]{color:var(--color-main-text);text-decoration:none;width:max-content}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue"],names:[],mappings:"AACA,2BACC,YAAA,CAEA,kCACC,UAAA,CAGD,6BACC,4BAAA,CACA,oBAAA,CACA,iBAAA",sourcesContent:["\n.language {\n\tdisplay: grid;\n\n\tselect {\n\t\twidth: 100%;\n\t}\n\n\ta {\n\t\tcolor: var(--color-main-text);\n\t\ttext-decoration: none;\n\t\twidth: max-content;\n\t}\n}\n"],sourceRoot:""}]);const r=s},12531:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,"section[data-v-92685b76]{padding:10px 10px}section[data-v-92685b76] button:disabled{cursor:default}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue"],names:[],mappings:"AACA,yBACC,iBAAA,CAEA,yCACC,cAAA",sourcesContent:["\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n"],sourceRoot:""}]);const r=s},87229:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,".locale[data-v-1ac456dc]{display:grid}.locale select[data-v-1ac456dc]{width:100%}.example[data-v-1ac456dc]{margin:10px 0;display:flex;gap:0 10px;color:var(--color-text-lighter)}.example[data-v-1ac456dc] .material-design-icon{align-self:flex-start;margin-top:2px}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/LocaleSection/Locale.vue"],names:[],mappings:"AACA,yBACC,YAAA,CAEA,gCACC,UAAA,CAIF,0BACC,aAAA,CACA,YAAA,CACA,UAAA,CACA,+BAAA,CAEA,gDACC,qBAAA,CACA,cAAA",sourcesContent:["\n.locale {\n\tdisplay: grid;\n\n\tselect {\n\t\twidth: 100%;\n\t}\n}\n\n.example {\n\tmargin: 10px 0;\n\tdisplay: flex;\n\tgap: 0 10px;\n\tcolor: var(--color-text-lighter);\n\n\t&::v-deep .material-design-icon {\n\t\talign-self: flex-start;\n\t\tmargin-top: 2px;\n\t}\n}\n"],sourceRoot:""}]);const r=s},682:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,"section[data-v-84fca724]{padding:10px 10px}section[data-v-84fca724] button:disabled{cursor:default}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/LocaleSection/LocaleSection.vue"],names:[],mappings:"AACA,yBACC,iBAAA,CAEA,yCACC,cAAA",sourcesContent:["\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n"],sourceRoot:""}]);const r=s},64534:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,"html{scroll-behavior:smooth}@media screen and (prefers-reduced-motion: reduce){html{scroll-behavior:auto}}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue"],names:[],mappings:"AACA,KACC,sBAAA,CAEA,mDAHD,KAIE,oBAAA,CAAA",sourcesContent:["\nhtml {\n\tscroll-behavior: smooth;\n\n\t@media screen and (prefers-reduced-motion: reduce) {\n\t\tscroll-behavior: auto;\n\t}\n}\n"],sourceRoot:""}]);const r=s},40001:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,"a[data-v-1caba458]{display:block;height:44px;width:290px;line-height:44px;padding:0 16px;margin:14px auto;border-radius:var(--border-radius-pill);opacity:.4;background-color:rgba(0,0,0,0)}a .anchor-icon[data-v-1caba458]{display:inline-block;vertical-align:middle;margin-top:6px;margin-right:8px}a[data-v-1caba458]:hover,a[data-v-1caba458]:focus,a[data-v-1caba458]:active{opacity:.8;background-color:rgba(127,127,127,.25)}a.disabled[data-v-1caba458]{pointer-events:none}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue"],names:[],mappings:"AACA,mBACC,aAAA,CACA,WAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,gBAAA,CACA,uCAAA,CACA,UAAA,CACA,8BAAA,CAEA,gCACC,oBAAA,CACA,qBAAA,CACA,cAAA,CACA,gBAAA,CAGD,4EAGC,UAAA,CACA,sCAAA,CAGD,4BACC,mBAAA",sourcesContent:["\na {\n\tdisplay: block;\n\theight: 44px;\n\twidth: 290px;\n\tline-height: 44px;\n\tpadding: 0 16px;\n\tmargin: 14px auto;\n\tborder-radius: var(--border-radius-pill);\n\topacity: 0.4;\n\tbackground-color: transparent;\n\n\t.anchor-icon {\n\t\tdisplay: inline-block;\n\t\tvertical-align: middle;\n\t\tmargin-top: 6px;\n\t\tmargin-right: 8px;\n\t}\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\topacity: 0.8;\n\t\tbackground-color: rgba(127, 127, 127, .25);\n\t}\n\n\t&.disabled {\n\t\tpointer-events: none;\n\t}\n}\n"],sourceRoot:""}]);const r=s},80507:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,".preview-card[data-v-61586aa5]{display:flex;flex-direction:column;position:relative;width:290px;height:116px;margin:14px auto;border-radius:var(--border-radius-large);background-color:var(--color-main-background);font-weight:bold;box-shadow:0 2px 9px var(--color-box-shadow)}.preview-card[data-v-61586aa5]:hover,.preview-card[data-v-61586aa5]:focus,.preview-card[data-v-61586aa5]:active{box-shadow:0 2px 12px var(--color-box-shadow)}.preview-card[data-v-61586aa5]:focus-visible{outline:var(--color-main-text) solid 1px;outline-offset:3px}.preview-card.disabled[data-v-61586aa5]{filter:grayscale(1);opacity:.5;cursor:default;box-shadow:0 0 3px var(--color-box-shadow)}.preview-card.disabled *[data-v-61586aa5],.preview-card.disabled[data-v-61586aa5] *{cursor:default}.preview-card__avatar[data-v-61586aa5]{position:absolute !important;top:40px;left:18px;z-index:1}.preview-card__avatar[data-v-61586aa5]:not(.avatardiv--unknown){box-shadow:0 0 0 3px var(--color-main-background) !important}.preview-card__header[data-v-61586aa5],.preview-card__footer[data-v-61586aa5]{position:relative;width:auto}.preview-card__header span[data-v-61586aa5],.preview-card__footer span[data-v-61586aa5]{position:absolute;left:78px;overflow:hidden;text-overflow:ellipsis;overflow-wrap:anywhere}@supports(-webkit-line-clamp: 2){.preview-card__header span[data-v-61586aa5],.preview-card__footer span[data-v-61586aa5]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.preview-card__header[data-v-61586aa5]{height:70px;border-radius:var(--border-radius-large) var(--border-radius-large) 0 0;background-color:var(--color-primary);background-image:var(--gradient-primary-background)}.preview-card__header span[data-v-61586aa5]{bottom:0;color:var(--color-primary-text);font-size:18px;font-weight:bold;margin:0 4px 8px 0}.preview-card__footer[data-v-61586aa5]{height:46px}.preview-card__footer span[data-v-61586aa5]{top:0;color:var(--color-text-maxcontrast);font-size:14px;font-weight:normal;margin:4px 4px 0 0;line-height:1.3}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue"],names:[],mappings:"AACA,+BACC,YAAA,CACA,qBAAA,CACA,iBAAA,CACA,WAAA,CACA,YAAA,CACA,gBAAA,CACA,wCAAA,CACA,6CAAA,CACA,gBAAA,CACA,4CAAA,CAEA,gHAGC,6CAAA,CAGD,6CACC,wCAAA,CACA,kBAAA,CAGD,wCACC,mBAAA,CACA,UAAA,CACA,cAAA,CACA,0CAAA,CAEA,oFAEC,cAAA,CAIF,uCAEC,4BAAA,CACA,QAAA,CACA,SAAA,CACA,SAAA,CAEA,gEACC,4DAAA,CAIF,8EAEC,iBAAA,CACA,UAAA,CAEA,wFACC,iBAAA,CACA,SAAA,CACA,eAAA,CACA,sBAAA,CACA,sBAAA,CAEA,iCAPD,wFAQE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,uCACC,WAAA,CACA,uEAAA,CACA,qCAAA,CACA,mDAAA,CAEA,4CACC,QAAA,CACA,+BAAA,CACA,cAAA,CACA,gBAAA,CACA,kBAAA,CAIF,uCACC,WAAA,CAEA,4CACC,KAAA,CACA,mCAAA,CACA,cAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA",sourcesContent:["\n.preview-card {\n\tdisplay: flex;\n\tflex-direction: column;\n\tposition: relative;\n\twidth: 290px;\n\theight: 116px;\n\tmargin: 14px auto;\n\tborder-radius: var(--border-radius-large);\n\tbackground-color: var(--color-main-background);\n\tfont-weight: bold;\n\tbox-shadow: 0 2px 9px var(--color-box-shadow);\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\tbox-shadow: 0 2px 12px var(--color-box-shadow);\n\t}\n\n\t&:focus-visible {\n\t\toutline: var(--color-main-text) solid 1px;\n\t\toutline-offset: 3px;\n\t}\n\n\t&.disabled {\n\t\tfilter: grayscale(1);\n\t\topacity: 0.5;\n\t\tcursor: default;\n\t\tbox-shadow: 0 0 3px var(--color-box-shadow);\n\n\t\t& *,\n\t\t&::v-deep * {\n\t\t\tcursor: default;\n\t\t}\n\t}\n\n\t&__avatar {\n\t\t// Override Avatar component position to fix positioning on rerender\n\t\tposition: absolute !important;\n\t\ttop: 40px;\n\t\tleft: 18px;\n\t\tz-index: 1;\n\n\t\t&:not(.avatardiv--unknown) {\n\t\t\tbox-shadow: 0 0 0 3px var(--color-main-background) !important;\n\t\t}\n\t}\n\n\t&__header,\n\t&__footer {\n\t\tposition: relative;\n\t\twidth: auto;\n\n\t\tspan {\n\t\t\tposition: absolute;\n\t\t\tleft: 78px;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\toverflow-wrap: anywhere;\n\n\t\t\t@supports (-webkit-line-clamp: 2) {\n\t\t\t\tdisplay: -webkit-box;\n\t\t\t\t-webkit-line-clamp: 2;\n\t\t\t\t-webkit-box-orient: vertical;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__header {\n\t\theight: 70px;\n\t\tborder-radius: var(--border-radius-large) var(--border-radius-large) 0 0;\n\t\tbackground-color: var(--color-primary);\n\t\tbackground-image: var(--gradient-primary-background);\n\n\t\tspan {\n\t\t\tbottom: 0;\n\t\t\tcolor: var(--color-primary-text);\n\t\t\tfont-size: 18px;\n\t\t\tfont-weight: bold;\n\t\t\tmargin: 0 4px 8px 0;\n\t\t}\n\t}\n\n\t&__footer {\n\t\theight: 46px;\n\n\t\tspan {\n\t\t\ttop: 0;\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\tfont-size: 14px;\n\t\t\tfont-weight: normal;\n\t\t\tmargin: 4px 4px 0 0;\n\t\t\tline-height: 1.3;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const r=s},90552:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,"section[data-v-cf64d964]{padding:10px 10px}section[data-v-cf64d964] button:disabled{cursor:default}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue"],names:[],mappings:"AACA,yBACC,iBAAA,CAEA,yCACC,cAAA",sourcesContent:["\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n"],sourceRoot:""}]);const r=s},45386:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,"section[data-v-a07dbf96]{padding:30px;max-width:900px;width:100%}section em[data-v-a07dbf96]{display:block;margin:16px 0}section em.disabled[data-v-a07dbf96]{filter:grayscale(1);opacity:.5;cursor:default;pointer-events:none}section em.disabled *[data-v-a07dbf96],section em.disabled[data-v-a07dbf96] *{cursor:default;pointer-events:none}section .visibility-dropdowns[data-v-a07dbf96]{display:grid;gap:10px 40px}@media(min-width: 1200px){section[data-v-a07dbf96]{width:940px}section .visibility-dropdowns[data-v-a07dbf96]{grid-auto-flow:column}}@media(max-width: 1200px){section[data-v-a07dbf96]{width:470px}}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue"],names:[],mappings:"AACA,yBACC,YAAA,CACA,eAAA,CACA,UAAA,CAEA,4BACC,aAAA,CACA,aAAA,CAEA,qCACC,mBAAA,CACA,UAAA,CACA,cAAA,CACA,mBAAA,CAEA,8EAEC,cAAA,CACA,mBAAA,CAKH,+CACC,YAAA,CACA,aAAA,CAGD,0BA5BD,yBA6BE,WAAA,CAEA,+CACC,qBAAA,CAAA,CAIF,0BApCD,yBAqCE,WAAA,CAAA",sourcesContent:["\nsection {\n\tpadding: 30px;\n\tmax-width: 900px;\n\twidth: 100%;\n\n\tem {\n\t\tdisplay: block;\n\t\tmargin: 16px 0;\n\n\t\t&.disabled {\n\t\t\tfilter: grayscale(1);\n\t\t\topacity: 0.5;\n\t\t\tcursor: default;\n\t\t\tpointer-events: none;\n\n\t\t\t& *,\n\t\t\t&::v-deep * {\n\t\t\t\tcursor: default;\n\t\t\t\tpointer-events: none;\n\t\t\t}\n\t\t}\n\t}\n\n\t.visibility-dropdowns {\n\t\tdisplay: grid;\n\t\tgap: 10px 40px;\n\t}\n\n\t@media (min-width: 1200px) {\n\t\twidth: 940px;\n\n\t\t.visibility-dropdowns {\n\t\t\tgrid-auto-flow: column;\n\t\t}\n\t}\n\n\t@media (max-width: 1200px) {\n\t\twidth: 470px;\n\t}\n}\n"],sourceRoot:""}]);const r=s},63019:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,".visibility-container[data-v-b13d20da]{display:flex;width:max-content}.visibility-container.disabled[data-v-b13d20da]{filter:grayscale(1);opacity:.5;cursor:default;pointer-events:none}.visibility-container.disabled *[data-v-b13d20da],.visibility-container.disabled[data-v-b13d20da] *{cursor:default;pointer-events:none}.visibility-container label[data-v-b13d20da]{color:var(--color-text-lighter);width:150px;line-height:50px}.visibility-container__select[data-v-b13d20da]{width:270px;max-width:40vw}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue"],names:[],mappings:"AACA,uCACC,YAAA,CACA,iBAAA,CAEA,gDACC,mBAAA,CACA,UAAA,CACA,cAAA,CACA,mBAAA,CAEA,oGAEC,cAAA,CACA,mBAAA,CAIF,6CACC,+BAAA,CACA,WAAA,CACA,gBAAA,CAGD,+CACC,WAAA,CACA,cAAA",sourcesContent:["\n.visibility-container {\n\tdisplay: flex;\n\twidth: max-content;\n\n\t&.disabled {\n\t\tfilter: grayscale(1);\n\t\topacity: 0.5;\n\t\tcursor: default;\n\t\tpointer-events: none;\n\n\t\t& *,\n\t\t&::v-deep * {\n\t\t\tcursor: default;\n\t\t\tpointer-events: none;\n\t\t}\n\t}\n\n\tlabel {\n\t\tcolor: var(--color-text-lighter);\n\t\twidth: 150px;\n\t\tline-height: 50px;\n\t}\n\n\t&__select {\n\t\twidth: 270px;\n\t\tmax-width: 40vw;\n\t}\n}\n"],sourceRoot:""}]);const r=s},78784:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,"section[data-v-6eb7d8e0]{padding:10px 10px}section[data-v-6eb7d8e0] button:disabled{cursor:default}section .property[data-v-6eb7d8e0]{display:grid;align-items:center}section .property textarea[data-v-6eb7d8e0]{resize:vertical;grid-area:1/1;width:100%}section .property input[data-v-6eb7d8e0]{grid-area:1/1;width:100%}section .property .property__actions-container[data-v-6eb7d8e0]{grid-area:1/1;justify-self:flex-end;align-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px;margin-bottom:5px}section .property__helper-text-message[data-v-6eb7d8e0]{padding:4px 0;display:flex;align-items:center}section .property__helper-text-message__icon[data-v-6eb7d8e0]{margin-right:8px;align-self:start;margin-top:4px}section .property__helper-text-message--error[data-v-6eb7d8e0]{color:var(--color-error)}section .fade-enter[data-v-6eb7d8e0],section .fade-leave-to[data-v-6eb7d8e0]{opacity:0}section .fade-enter-active[data-v-6eb7d8e0]{transition:opacity 200ms ease-out}section .fade-leave-active[data-v-6eb7d8e0]{transition:opacity 300ms ease-out}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/shared/AccountPropertySection.vue"],names:[],mappings:"AACA,yBACC,iBAAA,CAEA,yCACC,cAAA,CAGD,mCACC,YAAA,CACA,kBAAA,CAEA,4CACC,eAAA,CACA,aAAA,CACA,UAAA,CAGD,yCACC,aAAA,CACA,UAAA,CAGD,gEACC,aAAA,CACA,qBAAA,CACA,mBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CACA,iBAAA,CAIF,wDACC,aAAA,CACA,YAAA,CACA,kBAAA,CAEA,8DACC,gBAAA,CACA,gBAAA,CACA,cAAA,CAGD,+DACC,wBAAA,CAIF,6EAEC,SAAA,CAGD,4CACC,iCAAA,CAGD,4CACC,iCAAA",sourcesContent:["\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n\n\t.property {\n\t\tdisplay: grid;\n\t\talign-items: center;\n\n\t\ttextarea {\n\t\t\tresize: vertical;\n\t\t\tgrid-area: 1 / 1;\n\t\t\twidth: 100%;\n\t\t}\n\n\t\tinput {\n\t\t\tgrid-area: 1 / 1;\n\t\t\twidth: 100%;\n\t\t}\n\n\t\t.property__actions-container {\n\t\t\tgrid-area: 1 / 1;\n\t\t\tjustify-self: flex-end;\n\t\t\talign-self: flex-end;\n\t\t\theight: 30px;\n\n\t\t\tdisplay: flex;\n\t\t\tgap: 0 2px;\n\t\t\tmargin-right: 5px;\n\t\t\tmargin-bottom: 5px;\n\t\t}\n\t}\n\n\t.property__helper-text-message {\n\t\tpadding: 4px 0;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\n\t\t&__icon {\n\t\t\tmargin-right: 8px;\n\t\t\talign-self: start;\n\t\t\tmargin-top: 4px;\n\t\t}\n\n\t\t&--error {\n\t\t\tcolor: var(--color-error);\n\t\t}\n\t}\n\n\t.fade-enter,\n\t.fade-leave-to {\n\t\topacity: 0;\n\t}\n\n\t.fade-enter-active {\n\t\ttransition: opacity 200ms ease-out;\n\t}\n\n\t.fade-leave-active {\n\t\ttransition: opacity 300ms ease-out;\n\t}\n}\n"],sourceRoot:""}]);const r=s},14036:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,".federation-actions[data-v-4ea07669],.federation-actions--additional[data-v-4ea07669]{opacity:.4 !important}.federation-actions[data-v-4ea07669]:hover,.federation-actions[data-v-4ea07669]:focus,.federation-actions[data-v-4ea07669]:active,.federation-actions--additional[data-v-4ea07669]:hover,.federation-actions--additional[data-v-4ea07669]:focus,.federation-actions--additional[data-v-4ea07669]:active{opacity:.8 !important}.federation-actions--additional[data-v-4ea07669] button{padding-bottom:7px;height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/shared/FederationControl.vue"],names:[],mappings:"AACA,sFAEC,qBAAA,CAEA,wSAGC,qBAAA,CAKD,wDAEC,kBAAA,CACA,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA",sourcesContent:["\n.federation-actions,\n.federation-actions--additional {\n\topacity: 0.4 !important;\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\topacity: 0.8 !important;\n\t}\n}\n\n.federation-actions--additional {\n\t&::v-deep button {\n\t\t// TODO remove this hack\n\t\tpadding-bottom: 7px;\n\t\theight: 30px !important;\n\t\tmin-height: 30px !important;\n\t\twidth: 30px !important;\n\t\tmin-width: 30px !important;\n\t}\n}\n"],sourceRoot:""}]);const r=s},28561:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,".federation-actions__btn[data-v-d426ed04] p{width:150px !important;padding:8px 0 !important;color:var(--color-main-text) !important;font-size:12.8px !important;line-height:1.5em !important}.federation-actions__btn--active[data-v-d426ed04]{background-color:var(--color-primary-light) !important;box-shadow:inset 2px 0 var(--color-primary) !important}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue"],names:[],mappings:"AAEC,4CACC,sBAAA,CACA,wBAAA,CACA,uCAAA,CACA,2BAAA,CACA,4BAAA,CAIF,kDACC,sDAAA,CACA,sDAAA",sourcesContent:["\n.federation-actions__btn {\n\t&::v-deep p {\n\t\twidth: 150px !important;\n\t\tpadding: 8px 0 !important;\n\t\tcolor: var(--color-main-text) !important;\n\t\tfont-size: 12.8px !important;\n\t\tline-height: 1.5em !important;\n\t}\n}\n\n.federation-actions__btn--active {\n\tbackground-color: var(--color-primary-light) !important;\n\tbox-shadow: inset 2px 0 var(--color-primary) !important;\n}\n"],sourceRoot:""}]);const r=s},90564:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,".headerbar-label[data-v-b43fcc0c]{font-weight:normal;display:inline-flex;width:100%;margin:12px 0 0 0;gap:8px;align-items:center;font-size:16px;color:var(--color-text-light)}.headerbar-label.profile-property[data-v-b43fcc0c]{height:38px}.headerbar-label.setting-property[data-v-b43fcc0c]{height:44px}.headerbar-label label[data-v-b43fcc0c]{cursor:pointer}.federation-control[data-v-b43fcc0c]{margin:0}.button-vue[data-v-b43fcc0c]{margin:0 0 0 auto !important}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue"],names:[],mappings:"AACA,kCACC,kBAAA,CACA,mBAAA,CACA,UAAA,CACA,iBAAA,CACA,OAAA,CACA,kBAAA,CACA,cAAA,CACA,6BAAA,CAEA,mDACC,WAAA,CAGD,mDACC,WAAA,CAGD,wCACC,cAAA,CAIF,qCACC,QAAA,CAGD,6BACC,4BAAA",sourcesContent:["\n.headerbar-label {\n\tfont-weight: normal;\n\tdisplay: inline-flex;\n\twidth: 100%;\n\tmargin: 12px 0 0 0;\n\tgap: 8px;\n\talign-items: center;\n\tfont-size: 16px;\n\tcolor: var(--color-text-light);\n\n\t&.profile-property {\n\t\theight: 38px;\n\t}\n\n\t&.setting-property {\n\t\theight: 44px;\n\t}\n\n\tlabel {\n\t\tcursor: pointer;\n\t}\n}\n\n.federation-control {\n\tmargin: 0;\n}\n\n.button-vue {\n\tmargin: 0 0 0 auto !important;\n}\n"],sourceRoot:""}]);const r=s},46700:(t,e,a)=>{var n={"./af":42786,"./af.js":42786,"./ar":30867,"./ar-dz":14130,"./ar-dz.js":14130,"./ar-kw":96135,"./ar-kw.js":96135,"./ar-ly":56440,"./ar-ly.js":56440,"./ar-ma":47702,"./ar-ma.js":47702,"./ar-sa":16040,"./ar-sa.js":16040,"./ar-tn":37100,"./ar-tn.js":37100,"./ar.js":30867,"./az":31083,"./az.js":31083,"./be":9808,"./be.js":9808,"./bg":68338,"./bg.js":68338,"./bm":67438,"./bm.js":67438,"./bn":8905,"./bn-bd":76225,"./bn-bd.js":76225,"./bn.js":8905,"./bo":11560,"./bo.js":11560,"./br":1278,"./br.js":1278,"./bs":80622,"./bs.js":80622,"./ca":2468,"./ca.js":2468,"./cs":5822,"./cs.js":5822,"./cv":50877,"./cv.js":50877,"./cy":47373,"./cy.js":47373,"./da":24780,"./da.js":24780,"./de":59740,"./de-at":60217,"./de-at.js":60217,"./de-ch":60894,"./de-ch.js":60894,"./de.js":59740,"./dv":5300,"./dv.js":5300,"./el":50837,"./el.js":50837,"./en-au":78348,"./en-au.js":78348,"./en-ca":77925,"./en-ca.js":77925,"./en-gb":22243,"./en-gb.js":22243,"./en-ie":46436,"./en-ie.js":46436,"./en-il":47207,"./en-il.js":47207,"./en-in":44175,"./en-in.js":44175,"./en-nz":76319,"./en-nz.js":76319,"./en-sg":31662,"./en-sg.js":31662,"./eo":92915,"./eo.js":92915,"./es":55655,"./es-do":55251,"./es-do.js":55251,"./es-mx":96112,"./es-mx.js":96112,"./es-us":71146,"./es-us.js":71146,"./es.js":55655,"./et":5603,"./et.js":5603,"./eu":77763,"./eu.js":77763,"./fa":76959,"./fa.js":76959,"./fi":11897,"./fi.js":11897,"./fil":42549,"./fil.js":42549,"./fo":94694,"./fo.js":94694,"./fr":94470,"./fr-ca":63049,"./fr-ca.js":63049,"./fr-ch":52330,"./fr-ch.js":52330,"./fr.js":94470,"./fy":5044,"./fy.js":5044,"./ga":29295,"./ga.js":29295,"./gd":2101,"./gd.js":2101,"./gl":38794,"./gl.js":38794,"./gom-deva":27884,"./gom-deva.js":27884,"./gom-latn":23168,"./gom-latn.js":23168,"./gu":95349,"./gu.js":95349,"./he":24206,"./he.js":24206,"./hi":30094,"./hi.js":30094,"./hr":30316,"./hr.js":30316,"./hu":22138,"./hu.js":22138,"./hy-am":11423,"./hy-am.js":11423,"./id":29218,"./id.js":29218,"./is":90135,"./is.js":90135,"./it":90626,"./it-ch":10150,"./it-ch.js":10150,"./it.js":90626,"./ja":39183,"./ja.js":39183,"./jv":24286,"./jv.js":24286,"./ka":12105,"./ka.js":12105,"./kk":47772,"./kk.js":47772,"./km":18758,"./km.js":18758,"./kn":79282,"./kn.js":79282,"./ko":33730,"./ko.js":33730,"./ku":1408,"./ku.js":1408,"./ky":33291,"./ky.js":33291,"./lb":36841,"./lb.js":36841,"./lo":55466,"./lo.js":55466,"./lt":57010,"./lt.js":57010,"./lv":37595,"./lv.js":37595,"./me":39861,"./me.js":39861,"./mi":35493,"./mi.js":35493,"./mk":95966,"./mk.js":95966,"./ml":87341,"./ml.js":87341,"./mn":5115,"./mn.js":5115,"./mr":10370,"./mr.js":10370,"./ms":9847,"./ms-my":41237,"./ms-my.js":41237,"./ms.js":9847,"./mt":72126,"./mt.js":72126,"./my":56165,"./my.js":56165,"./nb":64924,"./nb.js":64924,"./ne":16744,"./ne.js":16744,"./nl":93901,"./nl-be":59814,"./nl-be.js":59814,"./nl.js":93901,"./nn":83877,"./nn.js":83877,"./oc-lnc":92135,"./oc-lnc.js":92135,"./pa-in":15858,"./pa-in.js":15858,"./pl":64495,"./pl.js":64495,"./pt":89520,"./pt-br":57971,"./pt-br.js":57971,"./pt.js":89520,"./ro":96459,"./ro.js":96459,"./ru":21793,"./ru.js":21793,"./sd":40950,"./sd.js":40950,"./se":10490,"./se.js":10490,"./si":90124,"./si.js":90124,"./sk":64249,"./sk.js":64249,"./sl":14985,"./sl.js":14985,"./sq":51104,"./sq.js":51104,"./sr":49131,"./sr-cyrl":79915,"./sr-cyrl.js":79915,"./sr.js":49131,"./ss":85893,"./ss.js":85893,"./sv":98760,"./sv.js":98760,"./sw":91172,"./sw.js":91172,"./ta":27333,"./ta.js":27333,"./te":23110,"./te.js":23110,"./tet":52095,"./tet.js":52095,"./tg":27321,"./tg.js":27321,"./th":9041,"./th.js":9041,"./tk":19005,"./tk.js":19005,"./tl-ph":75768,"./tl-ph.js":75768,"./tlh":89444,"./tlh.js":89444,"./tr":72397,"./tr.js":72397,"./tzl":28254,"./tzl.js":28254,"./tzm":51106,"./tzm-latn":30699,"./tzm-latn.js":30699,"./tzm.js":51106,"./ug-cn":9288,"./ug-cn.js":9288,"./uk":67691,"./uk.js":67691,"./ur":13795,"./ur.js":13795,"./uz":6791,"./uz-latn":60588,"./uz-latn.js":60588,"./uz.js":6791,"./vi":65666,"./vi.js":65666,"./x-pseudo":14378,"./x-pseudo.js":14378,"./yo":75805,"./yo.js":75805,"./zh-cn":83839,"./zh-cn.js":83839,"./zh-hk":55726,"./zh-hk.js":55726,"./zh-mo":99807,"./zh-mo.js":99807,"./zh-tw":74152,"./zh-tw.js":74152};function i(t){var e=o(t);return a(e)}function o(t){if(!a.o(n,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return n[t]}i.keys=function(){return Object.keys(n)},i.resolve=o,t.exports=i,i.id=46700},8738:t=>{"use strict";t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC"},81490:t=>{"use strict";t.exports="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTYiIHdpZHRoPSIxNiI+CiAgPHBhdGggZD0iTTE0IDEyLjNMMTIuMyAxNCA4IDkuNyAzLjcgMTQgMiAxMi4zIDYuMyA4IDIgMy43IDMuNyAyIDggNi4zIDEyLjMgMiAxNCAzLjcgOS43IDh6Ii8+Cjwvc3ZnPgo="},90888:t=>{"use strict";t.exports="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTYiIHdpZHRoPSIxNiI+CiAgPHBhdGggZD0iTTE0IDEyLjNMMTIuMyAxNCA4IDkuNyAzLjcgMTQgMiAxMi4zIDYuMyA4IDIgMy43IDMuNyAyIDggNi4zIDEyLjMgMiAxNCAzLjcgOS43IDh6IiBzdHlsZT0iZmlsbC1vcGFjaXR5OjE7ZmlsbDojZmZmZmZmIi8+Cjwvc3ZnPgo="}},n={};function i(t){var e=n[t];if(void 0!==e)return e.exports;var o=n[t]={id:t,loaded:!1,exports:{}};return a[t].call(o.exports,o,o.exports,i),o.loaded=!0,o.exports}i.m=a,e=[],i.O=(t,a,n,o)=>{if(!a){var s=1/0;for(c=0;c<e.length;c++){a=e[c][0],n=e[c][1],o=e[c][2];for(var r=!0,l=0;l<a.length;l++)(!1&o||s>=o)&&Object.keys(i.O).every((t=>i.O[t](a[l])))?a.splice(l--,1):(r=!1,o<s&&(s=o));if(r){e.splice(c--,1);var d=n();void 0!==d&&(t=d)}}return t}o=o||0;for(var c=e.length;c>0&&e[c-1][2]>o;c--)e[c]=e[c-1];e[c]=[a,n,o]},i.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},i.d=(t,e)=>{for(var a in e)i.o(e,a)&&!i.o(t,a)&&Object.defineProperty(t,a,{enumerable:!0,get:e[a]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),i.j=4418,(()=>{i.b=document.baseURI||self.location.href;var t={4418:0};i.O.j=e=>0===t[e];var e=(e,a)=>{var n,o,s=a[0],r=a[1],l=a[2],d=0;if(s.some((e=>0!==t[e]))){for(n in r)i.o(r,n)&&(i.m[n]=r[n]);if(l)var c=l(i)}for(e&&e(a);d<s.length;d++)o=s[d],i.o(t,o)&&t[o]&&t[o][0](),t[o]=0;return i.O(c)},a=self.webpackChunknextcloud=self.webpackChunknextcloud||[];a.forEach(e.bind(null,0)),a.push=e.bind(null,a.push.bind(a))})(),i.nc=void 0;var o=i.O(void 0,[7874],(()=>i(28110)));o=i.O(o)})();
-//# sourceMappingURL=settings-vue-settings-personal-info.js.map?v=c3c6597eed6e57c37261 \ No newline at end of file
+(()=>{var e,a={71945:(e,a,n)=>{"use strict";var i=n(20144),o=n(45994),s=n(79954),r=n(31352),l=(n(36144),n(4820)),d=n(79753),c=n(64024),p=n(78595),A=n(75925),u=n.n(A),m=n(10861),h=n.n(m),g=n(17652),v=(n(74063),n(75762)),f=n(34829),C=n(57612),y=n(61149),b=n(12945),x=n.n(b),E=n(45400);const _={name:"FederationControlAction",components:{NcActionButton:n.n(E)()},props:{activeScope:{type:String,required:!0},displayName:{type:String,required:!0},handleScopeChange:{type:Function,default:()=>{}},iconClass:{type:String,required:!0},isSupportedScope:{type:Boolean,required:!0},name:{type:String,required:!0},tooltipDisabled:{type:String,default:""},tooltip:{type:String,required:!0}},methods:{updateScope(){this.handleScopeChange(this.name)}}};var w=n(93379),I=n.n(w),S=n(7795),P=n.n(S),L=n(90569),j=n.n(L),B=n(3565),k=n.n(B),D=n(19216),O=n.n(D),N=n(44589),R=n.n(N),T=n(69205),Z={};Z.styleTagTransform=R(),Z.setAttributes=k(),Z.insert=j().bind(null,"head"),Z.domAPI=P(),Z.insertStyleElement=O(),I()(T.Z,Z),T.Z&&T.Z.locals&&T.Z.locals;var M=n(51900);const U=(0,M.Z)(_,(function(){var t=this;return(0,t._self._c)("NcActionButton",{staticClass:"federation-actions__btn",class:{"federation-actions__btn--active":t.activeScope===t.name},attrs:{"aria-label":t.isSupportedScope?t.tooltip:t.tooltipDisabled,"close-after-click":!0,disabled:!t.isSupportedScope,icon:t.iconClass,title:t.displayName},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.updateScope.apply(null,arguments)}}},[t._v("\n\t"+t._s(t.isSupportedScope?t.tooltip:t.tooltipDisabled)+"\n")])}),[],!1,null,"404f7a30",null).exports,F=Object.freeze({ADDRESS:"address",AVATAR:"avatar",BIOGRAPHY:"biography",DISPLAYNAME:"displayname",EMAIL_COLLECTION:"additional_mail",EMAIL:"email",HEADLINE:"headline",NOTIFICATION_EMAIL:"notify_email",FEDIVERSE:"fediverse",ORGANISATION:"organisation",PHONE:"phone",PROFILE_ENABLED:"profile_enabled",ROLE:"role",TWITTER:"twitter",WEBSITE:"website"}),z=Object.freeze({ADDRESS:(0,r.Iu)("settings","Location"),AVATAR:(0,r.Iu)("settings","Profile picture"),BIOGRAPHY:(0,r.Iu)("settings","About"),DISPLAYNAME:(0,r.Iu)("settings","Full name"),EMAIL_COLLECTION:(0,r.Iu)("settings","Additional email"),EMAIL:(0,r.Iu)("settings","Email"),HEADLINE:(0,r.Iu)("settings","Headline"),ORGANISATION:(0,r.Iu)("settings","Organisation"),PHONE:(0,r.Iu)("settings","Phone number"),PROFILE_ENABLED:(0,r.Iu)("settings","Profile"),ROLE:(0,r.Iu)("settings","Role"),TWITTER:(0,r.Iu)("settings","Twitter"),FEDIVERSE:(0,r.Iu)("settings","Fediverse (e.g. Mastodon)"),WEBSITE:(0,r.Iu)("settings","Website")}),V=Object.freeze({[F.ADDRESS]:z.ADDRESS,[F.AVATAR]:z.AVATAR,[F.BIOGRAPHY]:z.BIOGRAPHY,[F.DISPLAYNAME]:z.DISPLAYNAME,[F.EMAIL_COLLECTION]:z.EMAIL_COLLECTION,[F.EMAIL]:z.EMAIL,[F.HEADLINE]:z.HEADLINE,[F.ORGANISATION]:z.ORGANISATION,[F.PHONE]:z.PHONE,[F.PROFILE_ENABLED]:z.PROFILE_ENABLED,[F.ROLE]:z.ROLE,[F.TWITTER]:z.TWITTER,[F.FEDIVERSE]:z.FEDIVERSE,[F.WEBSITE]:z.WEBSITE}),H=Object.freeze({PROFILE_VISIBILITY:(0,r.Iu)("settings","Profile visibility")}),G=Object.freeze({[z.ADDRESS]:F.ADDRESS,[z.AVATAR]:F.AVATAR,[z.BIOGRAPHY]:F.BIOGRAPHY,[z.DISPLAYNAME]:F.DISPLAYNAME,[z.EMAIL_COLLECTION]:F.EMAIL_COLLECTION,[z.EMAIL]:F.EMAIL,[z.HEADLINE]:F.HEADLINE,[z.ORGANISATION]:F.ORGANISATION,[z.PHONE]:F.PHONE,[z.PROFILE_ENABLED]:F.PROFILE_ENABLED,[z.ROLE]:F.ROLE,[z.TWITTER]:F.TWITTER,[z.FEDIVERSE]:F.FEDIVERSE,[z.WEBSITE]:F.WEBSITE}),q=Object.freeze({LANGUAGE:"language",LOCALE:"locale"}),Y=Object.freeze({LANGUAGE:(0,r.Iu)("settings","Language"),LOCALE:(0,r.Iu)("settings","Locale")}),$=Object.freeze({PRIVATE:"v2-private",LOCAL:"v2-local",FEDERATED:"v2-federated",PUBLISHED:"v2-published"}),W=Object.freeze({[z.ADDRESS]:[$.LOCAL,$.PRIVATE],[z.AVATAR]:[$.LOCAL,$.PRIVATE],[z.BIOGRAPHY]:[$.LOCAL,$.PRIVATE],[z.DISPLAYNAME]:[$.LOCAL],[z.EMAIL_COLLECTION]:[$.LOCAL],[z.EMAIL]:[$.LOCAL],[z.HEADLINE]:[$.LOCAL,$.PRIVATE],[z.ORGANISATION]:[$.LOCAL,$.PRIVATE],[z.PHONE]:[$.LOCAL,$.PRIVATE],[z.PROFILE_ENABLED]:[$.LOCAL,$.PRIVATE],[z.ROLE]:[$.LOCAL,$.PRIVATE],[z.TWITTER]:[$.LOCAL,$.PRIVATE],[z.FEDIVERSE]:[$.LOCAL,$.PRIVATE],[z.WEBSITE]:[$.LOCAL,$.PRIVATE]}),K=Object.freeze([z.BIOGRAPHY,z.HEADLINE,z.ORGANISATION,z.ROLE]),Q="Scope",J=Object.freeze({[$.PRIVATE]:{name:$.PRIVATE,displayName:(0,r.Iu)("settings","Private"),tooltip:(0,r.Iu)("settings","Only visible to people matched via phone number integration through Talk on mobile"),tooltipDisabled:(0,r.Iu)("settings","Not available as this property is required for core functionality including file sharing and calendar invitations"),iconClass:"icon-phone"},[$.LOCAL]:{name:$.LOCAL,displayName:(0,r.Iu)("settings","Local"),tooltip:(0,r.Iu)("settings","Only visible to people on this instance and guests"),iconClass:"icon-password"},[$.FEDERATED]:{name:$.FEDERATED,displayName:(0,r.Iu)("settings","Federated"),tooltip:(0,r.Iu)("settings","Only synchronize to trusted servers"),tooltipDisabled:(0,r.Iu)("settings","Not available as federation has been disabled for your account, contact your system administrator if you have any questions"),iconClass:"icon-contacts-dark"},[$.PUBLISHED]:{name:$.PUBLISHED,displayName:(0,r.Iu)("settings","Published"),tooltip:(0,r.Iu)("settings","Synchronize to trusted servers and the global and public address book"),tooltipDisabled:(0,r.Iu)("settings","Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions"),iconClass:"icon-link"}}),X=$.LOCAL,tt=Object.freeze({NOT_VERIFIED:0,VERIFICATION_IN_PROGRESS:1,VERIFIED:2}),et=/^(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){255,})(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){65,}@)(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22))(?:\.(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-+[a-z0-9]+)*\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-+[a-z0-9]+)*)|(?:\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\]))$/i;var at=n(10128);n(65509);const nt=async(t,e)=>{"boolean"==typeof e&&(e=e?"1":"0");const a=(0,o.ts)().uid,n=(0,d.generateOcsUrl)("cloud/users/{userId}",{userId:a});return await(0,at.confirmPassword)(),(await l.default.put(n,{key:t,value:e})).data},it=(0,n(17499).IY)().setApp("settings").detectUser().build(),ot=(t,e)=>{var a;let n="";e&&(n+=e),429===(null===(a=t.response)||void 0===a?void 0:a.status)&&(n&&(n+="\n"),n+=(0,r.Iu)("settings","There were too many requests from your network. Retry later or contact your administrator if this is an error.")),(0,c.x2)(n),it.error(n||(0,r.Iu)("Error"),t)},{federationEnabled:st,lookupServerUploadEnabled:rt}=(0,s.j)("settings","accountParameters",{}),lt={name:"FederationControl",components:{NcActions:x(),FederationControlAction:U},props:{readable:{type:String,required:!0,validator:t=>Object.values(z).includes(t)||Object.values(Y).includes(t)||t===H.PROFILE_VISIBILITY},additional:{type:Boolean,default:!1},additionalValue:{type:String,default:""},disabled:{type:Boolean,default:!1},handleAdditionalScopeChange:{type:Function,default:null},scope:{type:String,required:!0}},data(){return{readableLowerCase:this.readable.toLocaleLowerCase(),initialScope:this.scope}},computed:{ariaLabel(){return t("settings","Change scope level of {property}, current scope is {scope}",{property:this.readableLowerCase,scope:this.scopeDisplayNameLowerCase})},scopeDisplayNameLowerCase(){return J[this.scope].displayName.toLocaleLowerCase()},scopeIcon(){return J[this.scope].iconClass},federationScopes:()=>Object.values(J),supportedScopes(){const t=W[this.readable];return K.includes(this.readable)||(st&&t.push($.FEDERATED),rt&&t.push($.PUBLISHED)),t}},methods:{async changeScope(t){this.$emit("update:scope",t),this.additional?await this.updateAdditionalScope(t):await this.updatePrimaryScope(t)},async updatePrimaryScope(e){try{var a,n;const t=await(async(t,e)=>{const a=(0,o.ts)().uid,n=(0,d.generateOcsUrl)("cloud/users/{userId}",{userId:a});return await(0,at.confirmPassword)(),(await l.default.put(n,{key:"".concat(t).concat(Q),value:e})).data})(G[this.readable],e);this.handleResponse({scope:e,status:null===(a=t.ocs)||void 0===a||null===(n=a.meta)||void 0===n?void 0:n.status})}catch(e){this.handleResponse({errorMessage:t("settings","Unable to update federation scope of the primary {property}",{property:this.readableLowerCase}),error:e})}},async updateAdditionalScope(e){try{var a,n;const t=await this.handleAdditionalScopeChange(this.additionalValue,e);this.handleResponse({scope:e,status:null===(a=t.ocs)||void 0===a||null===(n=a.meta)||void 0===n?void 0:n.status})}catch(e){this.handleResponse({errorMessage:t("settings","Unable to update federation scope of additional {property}",{property:this.readableLowerCase}),error:e})}},handleResponse(t){let{scope:e,status:a,errorMessage:n,error:i}=t;"ok"===a?this.initialScope=e:(this.$emit("update:scope",this.initialScope),ot(i,n))}}},dt=lt;var ct=n(14036),pt={};pt.styleTagTransform=R(),pt.setAttributes=k(),pt.insert=j().bind(null,"head"),pt.domAPI=P(),pt.insertStyleElement=O(),I()(ct.Z,pt),ct.Z&&ct.Z.locals&&ct.Z.locals;const At=(0,M.Z)(dt,(function(){var t=this,e=t._self._c;return e("NcActions",{class:{"federation-actions":!t.additional,"federation-actions--additional":t.additional},attrs:{"aria-label":t.ariaLabel,"default-icon":t.scopeIcon,disabled:t.disabled}},t._l(t.federationScopes,(function(a){return e("FederationControlAction",{key:a.name,attrs:{"active-scope":t.scope,"display-name":a.displayName,"handle-scope-change":t.changeScope,"icon-class":a.iconClass,"is-supported-scope":t.supportedScopes.includes(a.name),name:a.name,"tooltip-disabled":a.tooltipDisabled,tooltip:a.tooltip,"aria-label":a.tooltip}})})),1)}),[],!1,null,"4ea07669",null).exports,ut={name:"HeaderBar",components:{FederationControl:At,NcButton:h(),Plus:y.Z},props:{scope:{type:String,default:null},readable:{type:String,required:!0},inputId:{type:String,default:null},isEditable:{type:Boolean,default:!0},isMultiValueSupported:{type:Boolean,default:!1},isValidSection:{type:Boolean,default:!0},isHeading:{type:Boolean,default:!1}},data(){return{localScope:this.scope}},computed:{isProfileProperty(){return this.readable===z.PROFILE_ENABLED},isSettingProperty(){return!Object.values(z).includes(this.readable)&&!Object.values(H).includes(this.readable)}},methods:{onAddAdditional(){this.$emit("add-additional")},onScopeChange(t){this.$emit("update:scope",t)}}};var mt=n(90564),ht={};ht.styleTagTransform=R(),ht.setAttributes=k(),ht.insert=j().bind(null,"head"),ht.domAPI=P(),ht.insertStyleElement=O(),I()(mt.Z,ht),mt.Z&&mt.Z.locals&&mt.Z.locals;const gt=(0,M.Z)(ut,(function(){var t=this,e=t._self._c;return e(t.isHeading?"h3":"div",{tag:"component",staticClass:"headerbar-label",class:{"setting-property":t.isSettingProperty,"profile-property":t.isProfileProperty}},[t.isHeading?e("span",[t._v("\n\t\t"+t._s(t.readable)+"\n\t")]):e("label",{attrs:{for:t.inputId}},[t._v("\n\t\t"+t._s(t.readable)+"\n\t")]),t._v(" "),t.scope?[e("FederationControl",{staticClass:"federation-control",attrs:{readable:t.readable,scope:t.localScope},on:{"update:scope":[function(e){t.localScope=e},t.onScopeChange]}})]:t._e(),t._v(" "),t.isEditable&&t.isMultiValueSupported?[e("NcButton",{attrs:{type:"tertiary",disabled:!t.isValidSection,"aria-label":t.t("settings","Add additional email")},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.onAddAdditional.apply(null,arguments)}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Plus",{attrs:{size:20}})]},proxy:!0}],null,!1,32235154)},[t._v("\n\t\t\t"+t._s(t.t("settings","Add"))+"\n\t\t")])]:t._e()],2)}),[],!1,null,"b43fcc0c",null).exports,{avatar:vt}=(0,s.j)("settings","personalInfoParameters",{}),{avatarChangeSupported:ft}=(0,s.j)("settings","accountParameters",{}),Ct=["image/png","image/jpeg"],yt=(0,c.fn)(t("settings","Choose your profile picture")).setMultiSelect(!1).setMimeTypeFilter(Ct).setModal(!0).setType(1).allowDirectories(!1).build(),bt={name:"AvatarSection",components:{Delete:C.Z,Folder:f.default,HeaderBar:gt,NcAvatar:u(),NcButton:h(),Upload:v.Z,VueCropper:g.Z},data:()=>({avatar:{...vt,readable:V[vt.name]},avatarChangeSupported:ft,showCropper:!1,loading:!1,userId:(0,o.ts)().uid,displayName:(0,o.ts)().displayName,version:oc_userconfig.avatar.version,isGenerated:oc_userconfig.avatar.generated,validMimeTypes:Ct,cropperOptions:{aspectRatio:1,viewMode:1,guides:!1,center:!1,highlight:!1,autoCropArea:1,minContainerWidth:300,minContainerHeight:300}}),computed:{inputId(){return"account-property-".concat(this.avatar.name)}},created(){(0,p.Ld)("settings:display-name:updated",this.handleDisplayNameUpdate)},beforeDestroy(){(0,p.r1)("settings:display-name:updated",this.handleDisplayNameUpdate)},methods:{activateLocalFilePicker(){this.$refs.input.value=null,this.$refs.input.click()},onChange(e){this.loading=!0;const a=e.target.files[0];if(!this.validMimeTypes.includes(a.type))return(0,c.x2)(t("settings","Please select a valid png or jpg file")),void this.cancel();const n=new FileReader;n.onload=t=>{this.$refs.cropper.replace(t.target.result),this.showCropper=!0},n.readAsDataURL(a)},async openFilePicker(){const e=await yt.pick();this.loading=!0;try{const{data:t}=await l.default.post((0,d.generateUrl)("/avatar"),{path:e});if("success"===t.status)this.handleAvatarUpdate(!1);else if("notsquare"===t.data){const t=(0,d.generateUrl)("/avatar/tmp")+"?requesttoken="+encodeURIComponent(OC.requestToken)+"#"+Math.floor(1e3*Math.random());this.$refs.cropper.replace(t),this.showCropper=!0}else(0,c.x2)(t.data.message),this.cancel()}catch(e){(0,c.x2)(t("settings","Error setting profile picture")),this.cancel()}},saveAvatar(){this.showCropper=!1,this.loading=!0;const e=this.$refs.cropper.getCroppedCanvas(),a=e.width>512?512/e.width:1;this.$refs.cropper.scale(a,a).getCroppedCanvas().toBlob((async e=>{if(null===e)return(0,c.x2)(t("settings","Error cropping profile picture")),void this.cancel();const a=new FormData;a.append("files[]",e);try{await l.default.post((0,d.generateUrl)("/avatar"),a),this.handleAvatarUpdate(!1)}catch(e){(0,c.x2)(t("settings","Error saving profile picture")),this.handleAvatarUpdate(this.isGenerated)}}))},async removeAvatar(){this.loading=!0;try{await l.default.delete((0,d.generateUrl)("/avatar")),this.handleAvatarUpdate(!0)}catch(e){(0,c.x2)(t("settings","Error removing profile picture")),this.handleAvatarUpdate(this.isGenerated)}},cancel(){this.showCropper=!1,this.loading=!1},handleAvatarUpdate(t){this.version=oc_userconfig.avatar.version=Date.now(),this.isGenerated=oc_userconfig.avatar.generated=t,this.loading=!1,(0,p.j8)("settings:avatar:updated",oc_userconfig.avatar.version)},handleDisplayNameUpdate(){this.version=oc_userconfig.avatar.version}}};var xt=n(31246),Et={};Et.styleTagTransform=R(),Et.setAttributes=k(),Et.insert=j().bind(null,"head"),Et.domAPI=P(),Et.insertStyleElement=O(),I()(xt.Z,Et),xt.Z&&xt.Z.locals&&xt.Z.locals;const _t=(0,M.Z)(bt,(function(){var t=this,e=t._self._c;return e("section",{attrs:{id:"vue-avatar-section"}},[e("h3",{staticClass:"hidden-visually"},[t._v(" "+t._s(t.t("settings","Your profile information"))+" ")]),t._v(" "),e("HeaderBar",{attrs:{"input-id":t.avatarChangeSupported?t.inputId:null,readable:t.avatar.readable,scope:t.avatar.scope},on:{"update:scope":function(e){return t.$set(t.avatar,"scope",e)}}}),t._v(" "),t.showCropper?t._e():e("div",{staticClass:"avatar__container"},[e("div",{staticClass:"avatar__preview"},[t.loading?e("div",{staticClass:"icon-loading"}):e("NcAvatar",{key:t.version,attrs:{user:t.userId,"aria-label":t.t("settings","Your profile picture"),"disabled-menu":!0,"disabled-tooltip":!0,"show-user-status":!1,size:180}})],1),t._v(" "),t.avatarChangeSupported?[e("div",{staticClass:"avatar__buttons"},[e("NcButton",{attrs:{"aria-label":t.t("settings","Upload profile picture")},on:{click:t.activateLocalFilePicker},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Upload",{attrs:{size:20}})]},proxy:!0}],null,!1,1329850251)}),t._v(" "),e("NcButton",{attrs:{"aria-label":t.t("settings","Choose profile picture from Files")},on:{click:t.openFilePicker},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Folder",{attrs:{size:20}})]},proxy:!0}],null,!1,4270628382)}),t._v(" "),t.isGenerated?t._e():e("NcButton",{attrs:{"aria-label":t.t("settings","Remove profile picture")},on:{click:t.removeAvatar},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Delete",{attrs:{size:20}})]},proxy:!0}],null,!1,2705356561)})],1),t._v(" "),e("span",[t._v(t._s(t.t("settings","The file must be a PNG or JPG")))]),t._v(" "),e("input",{ref:"input",attrs:{id:t.inputId,type:"file",accept:t.validMimeTypes.join(",")},on:{change:t.onChange}})]:e("span",[t._v("\n\t\t\t"+t._s(t.t("settings","Picture provided by original account"))+"\n\t\t")])],2),t._v(" "),e("div",{directives:[{name:"show",rawName:"v-show",value:t.showCropper,expression:"showCropper"}],staticClass:"avatar__container"},[e("VueCropper",t._b({ref:"cropper",staticClass:"avatar__cropper"},"VueCropper",t.cropperOptions,!1)),t._v(" "),e("div",{staticClass:"avatar__cropper-buttons"},[e("NcButton",{on:{click:t.cancel}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Cancel"))+"\n\t\t\t")]),t._v(" "),e("NcButton",{attrs:{type:"primary"},on:{click:t.saveAvatar}},[t._v("\n\t\t\t\t"+t._s(t.t("settings","Set as profile picture"))+"\n\t\t\t")])],1),t._v(" "),e("span",[t._v(t._s(t.t("settings","Please note that it can take up to 24 hours for your profile picture to be updated everywhere.")))])],1)],1)}),[],!1,null,"022fd5d4",null).exports;var wt=n(48959),It=n.n(wt),St=n(86158),Pt=n(34046);const{groups:Lt,quota:jt,totalSpace:Bt,usage:kt,usageRelative:Dt}=(0,s.j)("settings","personalInfoParameters",{}),Ot={name:"DetailsSection",components:{Account:St.Z,CircleSlice:Pt.Z,HeaderBar:gt,NcProgressBar:It()},computed:{quotaText:()=>-3===jt?t("settings","You are using <strong>{usage}</strong>",{usage:kt}):t("settings","You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)",{usage:kt,totalSpace:Bt,usageRelative:Dt})},data:()=>({groups:Lt,usageRelative:Dt})};var Nt=n(18118),Rt={};Rt.styleTagTransform=R(),Rt.setAttributes=k(),Rt.insert=j().bind(null,"head"),Rt.domAPI=P(),Rt.insertStyleElement=O(),I()(Nt.Z,Rt),Nt.Z&&Nt.Z.locals&&Nt.Z.locals;const Tt=(0,M.Z)(Ot,(function(){var t=this,e=t._self._c;return e("section",[e("HeaderBar",{attrs:{"is-heading":!0,readable:t.t("settings","Details")}}),t._v(" "),e("div",{staticClass:"details"},[e("div",{staticClass:"details__groups"},[e("Account",{attrs:{size:20}}),t._v(" "),e("div",{staticClass:"details__groups-info"},[e("p",[t._v(t._s(t.t("settings","You are a member of the following groups:")))]),t._v(" "),e("p",{staticClass:"details__groups-list"},[t._v(t._s(t.groups.join(", ")))])])],1),t._v(" "),e("div",{staticClass:"details__quota"},[e("CircleSlice",{attrs:{size:20}}),t._v(" "),e("div",{staticClass:"details__quota-info"},[e("p",{staticClass:"details__quota-text",domProps:{innerHTML:t._s(t.quotaText)}}),t._v(" "),e("NcProgressBar",{attrs:{size:"medium",value:t.usageRelative,error:t.usageRelative>80}})],1)],1)])],1)}),[],!1,null,"1ab46e68",null).exports;var Zt=n(20296),Mt=n.n(Zt),Ut=n(94603),Ft=n(31974),zt=n(80419);const Vt={name:"AccountPropertySection",components:{AlertCircle:Ut.default,AlertOctagon:Ft.Z,Check:zt.default,HeaderBar:gt},props:{name:{type:String,required:!0},value:{type:String,required:!0},scope:{type:String,required:!0},readable:{type:String,required:!0},placeholder:{type:String,required:!0},type:{type:String,default:"text"},isEditable:{type:Boolean,default:!0},multiLine:{type:Boolean,default:!1},onValidate:{type:Function,default:null},onSave:{type:Function,default:null}},data(){return{initialValue:this.value,helperText:null,showCheckmarkIcon:!1,showErrorIcon:!1}},computed:{inputId(){return"account-property-".concat(this.name)}},methods:{onPropertyChange(t){this.$emit("update:value",t.target.value),this.debouncePropertyChange(t.target.value.trim())},debouncePropertyChange:Mt()((async function(t){this.helperText=null,this.$refs.input&&this.$refs.input.validationMessage?this.helperText=this.$refs.input.validationMessage:this.onValidate&&!this.onValidate(t)||await this.updateProperty(t)}),500),async updateProperty(e){try{var a,n;const t=await nt(this.name,e);this.handleResponse({value:e,status:null===(a=t.ocs)||void 0===a||null===(n=a.meta)||void 0===n?void 0:n.status})}catch(e){this.handleResponse({errorMessage:t("settings","Unable to update {property}",{property:this.readable.toLocaleLowerCase()}),error:e})}},handleResponse(t){let{value:e,status:a,errorMessage:n,error:i}=t;"ok"===a?(this.initialValue=e,this.onSave&&this.onSave(e),this.showCheckmarkIcon=!0,setTimeout((()=>{this.showCheckmarkIcon=!1}),2e3)):(this.$emit("update:value",this.initialValue),ot(i,n),this.showErrorIcon=!0,setTimeout((()=>{this.showErrorIcon=!1}),2e3))}}};var Ht=n(78784),Gt={};Gt.styleTagTransform=R(),Gt.setAttributes=k(),Gt.insert=j().bind(null,"head"),Gt.domAPI=P(),Gt.insertStyleElement=O(),I()(Ht.Z,Gt),Ht.Z&&Ht.Z.locals&&Ht.Z.locals;const qt=(0,M.Z)(Vt,(function(){var t=this,e=t._self._c;return e("section",[e("HeaderBar",{attrs:{scope:t.scope,readable:t.readable,"input-id":t.inputId,"is-editable":t.isEditable},on:{"update:scope":function(e){t.scope=e},"update:readable":function(e){t.readable=e}}}),t._v(" "),t.isEditable?e("div",{staticClass:"property"},[t.multiLine?e("textarea",{attrs:{id:t.inputId,placeholder:t.placeholder,rows:"8",autocapitalize:"none",autocomplete:"off",autocorrect:"off"},domProps:{value:t.value},on:{input:t.onPropertyChange}}):e("input",{ref:"input",attrs:{id:t.inputId,placeholder:t.placeholder,type:t.type,"aria-describedby":t.helperText?"".concat(t.name,"-helper-text"):"",autocapitalize:"none",autocomplete:"on",autocorrect:"off"},domProps:{value:t.value},on:{input:t.onPropertyChange}}),t._v(" "),e("div",{staticClass:"property__actions-container"},[e("transition",{attrs:{name:"fade"}},[t.showCheckmarkIcon?e("Check",{attrs:{size:20}}):t.showErrorIcon?e("AlertOctagon",{attrs:{size:20}}):t._e()],1)],1)]):e("span",[t._v("\n\t\t"+t._s(t.value||t.t("settings","No {property} set",{property:t.readable.toLocaleLowerCase()}))+"\n\t")]),t._v(" "),t.helperText?e("p",{staticClass:"property__helper-text-message property__helper-text-message--error",attrs:{id:"".concat(t.name,"-helper-text")}},[e("AlertCircle",{staticClass:"property__helper-text-message__icon",attrs:{size:18}}),t._v("\n\t\t"+t._s(t.helperText)+"\n\t")],1):t._e()],1)}),[],!1,null,"6eb7d8e0",null).exports,{displayName:Yt}=(0,s.j)("settings","personalInfoParameters",{}),{displayNameChangeSupported:$t}=(0,s.j)("settings","accountParameters",{}),Wt={name:"DisplayNameSection",components:{AccountPropertySection:qt},data:()=>({displayName:{...Yt,readable:V[Yt.name]},displayNameChangeSupported:$t}),methods:{onValidate:t=>""!==t,onSave(t){oc_userconfig.avatar.generated&&(oc_userconfig.avatar.version=Date.now()),(0,p.j8)("settings:display-name:updated",t)}}},Kt=(0,M.Z)(Wt,(function(){var t=this;return(0,t._self._c)("AccountPropertySection",t._b({attrs:{placeholder:t.t("settings","Your full name"),"is-editable":t.displayNameChangeSupported,"on-validate":t.onValidate,"on-save":t.onSave}},"AccountPropertySection",t.displayName,!1,!0))}),[],!1,null,null,null).exports;var Qt=n(15961);const Jt=async t=>{const e=(0,o.ts)().uid,a=(0,d.generateOcsUrl)("cloud/users/{userId}",{userId:e});return await(0,at.confirmPassword)(),(await l.default.put(a,{key:F.EMAIL,value:t})).data},Xt=async t=>{const e=(0,o.ts)().uid,a=(0,d.generateOcsUrl)("cloud/users/{userId}/{collection}",{userId:e,collection:F.EMAIL_COLLECTION});return await(0,at.confirmPassword)(),(await l.default.put(a,{key:t,value:""})).data},te=async t=>{const e=(0,o.ts)().uid,a=(0,d.generateOcsUrl)("cloud/users/{userId}",{userId:e});return await(0,at.confirmPassword)(),(await l.default.put(a,{key:"".concat(F.EMAIL).concat(Q),value:t})).data},ee=async(t,e)=>{const a=(0,o.ts)().uid,n=(0,d.generateOcsUrl)("cloud/users/{userId}/{collectionScope}",{userId:a,collectionScope:"".concat(F.EMAIL_COLLECTION).concat(Q)});return await(0,at.confirmPassword)(),(await l.default.put(n,{key:t,value:e})).data};function ae(t){return"string"==typeof t&&et.test(t)&&"\n"!==t.slice(-1)&&t.length<=320&&encodeURIComponent(t).replace(/%../g,"x").length<=320}const ne={name:"Email",components:{NcActions:Qt.O3,NcActionButton:Qt.Js,AlertCircle:Ut.default,AlertOctagon:Ft.Z,Check:zt.default,FederationControl:At},props:{email:{type:String,required:!0},index:{type:Number,default:0},primary:{type:Boolean,default:!1},scope:{type:String,required:!0},activeNotificationEmail:{type:String,default:""},localVerificationState:{type:Number,default:tt.NOT_VERIFIED}},data(){return{propertyReadable:z.EMAIL,initialEmail:this.email,localScope:this.scope,saveAdditionalEmailScope:ee,helperText:null,showCheckmarkIcon:!1,showErrorIcon:!1}},computed:{deleteDisabled(){return this.primary?""===this.email||this.initialEmail!==this.email:""!==this.initialEmail&&this.initialEmail!==this.email},deleteEmailLabel(){return this.primary?t("settings","Remove primary email"):t("settings","Delete email")},setNotificationMailDisabled(){return!this.primary&&this.localVerificationState!==tt.VERIFIED},setNotificationMailLabel(){return this.isNotificationEmail?t("settings","Unset as primary email"):this.primary||this.localVerificationState===tt.VERIFIED?t("settings","Set as primary email"):t("settings","This address is not confirmed")},federationDisabled(){return!this.initialEmail},inputId(){return this.primary?"email":"email-".concat(this.index)},inputPlaceholder(){return this.primary?t("settings","Your email address"):t("settings","Additional email address {index}",{index:this.index+1})},isNotificationEmail(){return this.email&&this.email===this.activeNotificationEmail||this.primary&&""===this.activeNotificationEmail}},mounted(){this.primary||""!==this.initialEmail||this.$nextTick((()=>{var t;return null===(t=this.$refs.email)||void 0===t?void 0:t.focus()}))},methods:{onEmailChange(t){this.$emit("update:email",t.target.value),this.debounceEmailChange(t.target.value.trim())},debounceEmailChange:Mt()((async function(t){var e;this.helperText=null,null!==(e=this.$refs.email)&&void 0!==e&&e.validationMessage?this.helperText=this.$refs.email.validationMessage:(ae(t)||""===t)&&(this.primary?await this.updatePrimaryEmail(t):t&&(""===this.initialEmail?await this.addAdditionalEmail(t):await this.updateAdditionalEmail(t)))}),500),async deleteEmail(){this.primary?(this.$emit("update:email",""),await this.updatePrimaryEmail("")):await this.deleteAdditionalEmail()},async updatePrimaryEmail(e){try{var a,n;const t=await Jt(e);this.handleResponse({email:e,status:null===(a=t.ocs)||void 0===a||null===(n=a.meta)||void 0===n?void 0:n.status})}catch(a){""===e?this.handleResponse({errorMessage:t("settings","Unable to delete primary email address"),error:a}):this.handleResponse({errorMessage:t("settings","Unable to update primary email address"),error:a})}},async addAdditionalEmail(e){try{var a,n;const t=await(async t=>{const e=(0,o.ts)().uid,a=(0,d.generateOcsUrl)("cloud/users/{userId}",{userId:e});return await(0,at.confirmPassword)(),(await l.default.put(a,{key:F.EMAIL_COLLECTION,value:t})).data})(e);this.handleResponse({email:e,status:null===(a=t.ocs)||void 0===a||null===(n=a.meta)||void 0===n?void 0:n.status})}catch(e){this.handleResponse({errorMessage:t("settings","Unable to add additional email address"),error:e})}},async setNotificationMail(){try{var t,e;const a=this.primary||this.isNotificationEmail?"":this.initialEmail,n=await(async t=>{const e=(0,o.ts)().uid,a=(0,d.generateOcsUrl)("cloud/users/{userId}",{userId:e});return await(0,at.confirmPassword)(),(await l.default.put(a,{key:F.NOTIFICATION_EMAIL,value:t})).data})(a);this.handleResponse({notificationEmail:a,status:null===(t=n.ocs)||void 0===t||null===(e=t.meta)||void 0===e?void 0:e.status})}catch(t){this.handleResponse({errorMessage:"Unable to choose this email for notifications",error:t})}},async updateAdditionalEmail(e){try{var a,n;const t=await(async(t,e)=>{const a=(0,o.ts)().uid,n=(0,d.generateOcsUrl)("cloud/users/{userId}/{collection}",{userId:a,collection:F.EMAIL_COLLECTION});return await(0,at.confirmPassword)(),(await l.default.put(n,{key:t,value:e})).data})(this.initialEmail,e);this.handleResponse({email:e,status:null===(a=t.ocs)||void 0===a||null===(n=a.meta)||void 0===n?void 0:n.status})}catch(e){this.handleResponse({errorMessage:t("settings","Unable to update additional email address"),error:e})}},async deleteAdditionalEmail(){try{var e,a;const t=await Xt(this.initialEmail);this.handleDeleteAdditionalEmail(null===(e=t.ocs)||void 0===e||null===(a=e.meta)||void 0===a?void 0:a.status)}catch(e){this.handleResponse({errorMessage:t("settings","Unable to delete additional email address"),error:e})}},handleDeleteAdditionalEmail(e){"ok"===e?this.$emit("delete-additional-email"):this.handleResponse({errorMessage:t("settings","Unable to delete additional email address")})},handleResponse(t){let{email:e,notificationEmail:a,status:n,errorMessage:i,error:o}=t;"ok"===n?(e?this.initialEmail=e:void 0!==a&&this.$emit("update:notification-email",a),this.showCheckmarkIcon=!0,setTimeout((()=>{this.showCheckmarkIcon=!1}),2e3)):(ot(o,i),this.showErrorIcon=!0,setTimeout((()=>{this.showErrorIcon=!1}),2e3))},onScopeChange(t){this.$emit("update:scope",t)}}},ie=ne;var oe=n(11121),se={};se.styleTagTransform=R(),se.setAttributes=k(),se.insert=j().bind(null,"head"),se.domAPI=P(),se.insertStyleElement=O(),I()(oe.Z,se),oe.Z&&oe.Z.locals&&oe.Z.locals;const re=(0,M.Z)(ie,(function(){var t=this,e=t._self._c;return e("div",[e("div",{staticClass:"email"},[e("input",{ref:"email",attrs:{id:t.inputId,type:"email",placeholder:t.inputPlaceholder,"aria-describedby":t.helperText?"".concat(t.inputId,"-helper-text"):"",autocapitalize:"none",autocomplete:"on",autocorrect:"off"},domProps:{value:t.email},on:{input:t.onEmailChange}}),t._v(" "),e("div",{staticClass:"email__actions-container"},[e("transition",{attrs:{name:"fade"}},[t.showCheckmarkIcon?e("Check",{attrs:{size:20}}):t.showErrorIcon?e("AlertOctagon",{attrs:{size:20}}):t._e()],1),t._v(" "),t.primary?t._e():[e("FederationControl",{attrs:{readable:t.propertyReadable,additional:!0,"additional-value":t.email,disabled:t.federationDisabled,"handle-additional-scope-change":t.saveAdditionalEmailScope,scope:t.localScope},on:{"update:scope":[function(e){t.localScope=e},t.onScopeChange]}})],t._v(" "),e("NcActions",{staticClass:"email__actions",attrs:{"aria-label":t.t("settings","Email options"),"force-menu":!0}},[e("NcActionButton",{attrs:{"aria-label":t.deleteEmailLabel,"close-after-click":!0,disabled:t.deleteDisabled,icon:"icon-delete"},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.deleteEmail.apply(null,arguments)}}},[t._v("\n\t\t\t\t\t"+t._s(t.deleteEmailLabel)+"\n\t\t\t\t")]),t._v(" "),t.primary&&t.isNotificationEmail?t._e():e("NcActionButton",{attrs:{"aria-label":t.setNotificationMailLabel,"close-after-click":!0,disabled:t.setNotificationMailDisabled,icon:"icon-favorite"},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.setNotificationMail.apply(null,arguments)}}},[t._v("\n\t\t\t\t\t"+t._s(t.setNotificationMailLabel)+"\n\t\t\t\t")])],1)],2)]),t._v(" "),t.helperText?e("p",{staticClass:"email__helper-text-message email__helper-text-message--error",attrs:{id:"".concat(t.inputId,"-helper-text")}},[e("AlertCircle",{staticClass:"email__helper-text-message__icon",attrs:{size:18}}),t._v("\n\t\t"+t._s(t.helperText)+"\n\t")],1):t._e(),t._v(" "),t.isNotificationEmail?e("em",[t._v("\n\t\t"+t._s(t.t("settings","Primary email for password reset and notifications"))+"\n\t")]):t._e()])}),[],!1,null,"5ff85d38",null).exports,{emailMap:{additionalEmails:le,primaryEmail:de,notificationEmail:ce}}=(0,s.j)("settings","personalInfoParameters",{}),{displayNameChangeSupported:pe}=(0,s.j)("settings","accountParameters",{}),Ae={name:"EmailSection",components:{HeaderBar:gt,Email:re},data(){return{accountProperty:z.EMAIL,additionalEmails:le.map((t=>({...t,key:this.generateUniqueKey()}))),displayNameChangeSupported:pe,primaryEmail:{...de,readable:V[de.name]},savePrimaryEmailScope:te,notificationEmail:ce}},computed:{firstAdditionalEmail(){return this.additionalEmails.length?this.additionalEmails[0].value:null},inputId(){return"account-property-".concat(this.primaryEmail.name)},isValidSection(){return ae(this.primaryEmail.value)&&this.additionalEmails.map((t=>{let{value:e}=t;return e})).every(ae)},primaryEmailValue:{get(){return this.primaryEmail.value},set(t){this.primaryEmail.value=t}}},methods:{onAddAdditionalEmail(){this.isValidSection&&this.additionalEmails.push({value:"",scope:X,key:this.generateUniqueKey()})},onDeleteAdditionalEmail(t){this.$delete(this.additionalEmails,t)},async onUpdateEmail(){if(""===this.primaryEmailValue&&this.firstAdditionalEmail){const t=this.firstAdditionalEmail;await this.deleteFirstAdditionalEmail(),this.primaryEmailValue=t,await this.updatePrimaryEmail()}},async onUpdateNotificationEmail(t){this.notificationEmail=t},async updatePrimaryEmail(){try{var e,a;const t=await Jt(this.primaryEmailValue);this.handleResponse(null===(e=t.ocs)||void 0===e||null===(a=e.meta)||void 0===a?void 0:a.status)}catch(e){this.handleResponse("error",t("settings","Unable to update primary email address"),e)}},async deleteFirstAdditionalEmail(){try{var e,a;const t=await Xt(this.firstAdditionalEmail);this.handleDeleteFirstAdditionalEmail(null===(e=t.ocs)||void 0===e||null===(a=e.meta)||void 0===a?void 0:a.status)}catch(e){this.handleResponse("error",t("settings","Unable to delete additional email address"),e)}},handleDeleteFirstAdditionalEmail(e){"ok"===e?this.$delete(this.additionalEmails,0):this.handleResponse("error",t("settings","Unable to delete additional email address"),{})},handleResponse(t,e,a){"ok"!==t&&ot(a,e)},generateUniqueKey:()=>Math.random().toString(36).substring(2)}};var ue=n(73070),me={};me.styleTagTransform=R(),me.setAttributes=k(),me.insert=j().bind(null,"head"),me.domAPI=P(),me.insertStyleElement=O(),I()(ue.Z,me),ue.Z&&ue.Z.locals&&ue.Z.locals;const he=(0,M.Z)(Ae,(function(){var t=this,e=t._self._c;return e("section",[e("HeaderBar",{attrs:{"input-id":t.inputId,readable:t.primaryEmail.readable,"handle-scope-change":t.savePrimaryEmailScope,"is-editable":!0,"is-multi-value-supported":!0,"is-valid-section":t.isValidSection,scope:t.primaryEmail.scope},on:{"update:scope":function(e){return t.$set(t.primaryEmail,"scope",e)},"add-additional":t.onAddAdditionalEmail}}),t._v(" "),t.displayNameChangeSupported?[e("Email",{attrs:{primary:!0,scope:t.primaryEmail.scope,email:t.primaryEmail.value,"active-notification-email":t.notificationEmail},on:{"update:scope":function(e){return t.$set(t.primaryEmail,"scope",e)},"update:email":[function(e){return t.$set(t.primaryEmail,"value",e)},t.onUpdateEmail],"update:activeNotificationEmail":function(e){t.notificationEmail=e},"update:active-notification-email":function(e){t.notificationEmail=e},"update:notification-email":t.onUpdateNotificationEmail}})]:e("span",[t._v("\n\t\t"+t._s(t.primaryEmail.value||t.t("settings","No email address set"))+"\n\t")]),t._v(" "),t.additionalEmails.length?[e("em",{staticClass:"additional-emails-label"},[t._v(t._s(t.t("settings","Additional emails")))]),t._v(" "),t._l(t.additionalEmails,(function(a,n){return e("Email",{key:a.key,attrs:{index:n,scope:a.scope,email:a.value,"local-verification-state":parseInt(a.locallyVerified,10),"active-notification-email":t.notificationEmail},on:{"update:scope":function(e){return t.$set(a,"scope",e)},"update:email":[function(e){return t.$set(a,"value",e)},t.onUpdateEmail],"update:activeNotificationEmail":function(e){t.notificationEmail=e},"update:active-notification-email":function(e){t.notificationEmail=e},"update:notification-email":t.onUpdateNotificationEmail,"delete-additional-email":function(e){return t.onDeleteAdditionalEmail(n)}}})}))]:t._e()],2)}),[],!1,null,"46c7eb7e",null).exports;var ge=n(45004);const{defaultPhoneRegion:ve,phone:fe}=(0,s.j)("settings","personalInfoParameters",{}),Ce={name:"PhoneSection",components:{AccountPropertySection:qt},data:()=>({phone:{...fe,readable:V[fe.name]}}),methods:{onValidate:t=>ve?(0,ge.y)(t,ve):(0,ge.y)(t)}},ye=(0,M.Z)(Ce,(function(){var t=this;return(0,t._self._c)("AccountPropertySection",t._b({attrs:{placeholder:t.t("settings","Your phone number"),type:"tel","on-validate":t.onValidate}},"AccountPropertySection",t.phone,!1,!0))}),[],!1,null,null,null).exports,{location:be}=(0,s.j)("settings","personalInfoParameters",{}),xe={name:"LocationSection",components:{AccountPropertySection:qt},data:()=>({location:{...be,readable:V[be.name]}})},Ee=(0,M.Z)(xe,(function(){var t=this;return(0,t._self._c)("AccountPropertySection",t._b({attrs:{placeholder:t.t("settings","Your location")}},"AccountPropertySection",t.location,!1,!0))}),[],!1,null,null,null).exports,{website:_e}=(0,s.j)("settings","personalInfoParameters",{}),we={name:"WebsiteSection",components:{AccountPropertySection:qt},data:()=>({website:{..._e,readable:V[_e.name]}}),methods:{onValidate:t=>function(t){try{return new URL(t),!0}catch(t){return!1}}(t)}},Ie=(0,M.Z)(we,(function(){var t=this;return(0,t._self._c)("AccountPropertySection",t._b({attrs:{placeholder:t.t("settings","Your website"),type:"url","on-validate":t.onValidate}},"AccountPropertySection",t.website,!1,!0))}),[],!1,null,null,null).exports,{twitter:Se}=(0,s.j)("settings","personalInfoParameters",{}),Pe={name:"TwitterSection",components:{AccountPropertySection:qt},data:()=>({twitter:{...Se,readable:V[Se.name]}})},Le=(0,M.Z)(Pe,(function(){var t=this;return(0,t._self._c)("AccountPropertySection",t._b({attrs:{placeholder:t.t("settings","Your Twitter handle")}},"AccountPropertySection",t.twitter,!1,!0))}),[],!1,null,null,null).exports,{fediverse:je}=(0,s.j)("settings","personalInfoParameters",{}),Be={name:"FediverseSection",components:{AccountPropertySection:qt},data:()=>({fediverse:{...je,readable:V[je.name]}})},ke=(0,M.Z)(Be,(function(){var t=this;return(0,t._self._c)("AccountPropertySection",t._b({attrs:{placeholder:t.t("settings","Your handle")}},"AccountPropertySection",t.fediverse,!1,!0))}),[],!1,null,null,null).exports,De={name:"Language",props:{inputId:{type:String,default:null},commonLanguages:{type:Array,required:!0},otherLanguages:{type:Array,required:!0},language:{type:Object,required:!0}},data(){return{initialLanguage:this.language}},computed:{allLanguages(){return Object.freeze([...this.commonLanguages,...this.otherLanguages].reduce(((t,e)=>{let{code:a,name:n}=e;return{...t,[a]:n}}),{}))}},methods:{async onLanguageChange(t){const e=this.constructLanguage(t.target.value);var a;this.$emit("update:language",e),""!==(a=e).code&&""!==a.name&&void 0!==a.name&&await this.updateLanguage(e)},async updateLanguage(e){try{var a,n;const t=await nt(q.LANGUAGE,e.code);this.handleResponse({language:e,status:null===(a=t.ocs)||void 0===a||null===(n=a.meta)||void 0===n?void 0:n.status}),this.reloadPage()}catch(e){this.handleResponse({errorMessage:t("settings","Unable to update language"),error:e})}},constructLanguage(t){return{code:t,name:this.allLanguages[t]}},handleResponse(t){let{language:e,status:a,errorMessage:n,error:i}=t;"ok"===a?this.initialLanguage=e:ot(i,n)},reloadPage(){location.reload()}}};var Oe=n(42569),Ne={};Ne.styleTagTransform=R(),Ne.setAttributes=k(),Ne.insert=j().bind(null,"head"),Ne.domAPI=P(),Ne.insertStyleElement=O(),I()(Oe.Z,Ne),Oe.Z&&Oe.Z.locals&&Oe.Z.locals;const Re=(0,M.Z)(De,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"language"},[e("select",{attrs:{id:t.inputId,placeholder:t.t("settings","Language")},on:{change:t.onLanguageChange}},[t._l(t.commonLanguages,(function(a){return e("option",{key:a.code,domProps:{selected:t.language.code===a.code,value:a.code}},[t._v("\n\t\t\t"+t._s(a.name)+"\n\t\t")])})),t._v(" "),e("option",{attrs:{disabled:""}},[t._v("\n\t\t\t──────────\n\t\t")]),t._v(" "),t._l(t.otherLanguages,(function(a){return e("option",{key:a.code,domProps:{selected:t.language.code===a.code,value:a.code}},[t._v("\n\t\t\t"+t._s(a.name)+"\n\t\t")])}))],2),t._v(" "),e("a",{attrs:{href:"https://www.transifex.com/nextcloud/nextcloud/",target:"_blank",rel:"noreferrer noopener"}},[e("em",[t._v(t._s(t.t("settings","Help translate")))])])])}),[],!1,null,"5c847b3a",null).exports,{languageMap:{activeLanguage:Te,commonLanguages:Ze,otherLanguages:Me}}=(0,s.j)("settings","personalInfoParameters",{}),Ue={name:"LanguageSection",components:{Language:Re,HeaderBar:gt},data:()=>({propertyReadable:Y.LANGUAGE,commonLanguages:Ze,otherLanguages:Me,language:Te}),computed:{inputId:()=>"account-setting-".concat(q.LANGUAGE),isEditable(){return Boolean(this.language)}}};var Fe=n(12531),ze={};ze.styleTagTransform=R(),ze.setAttributes=k(),ze.insert=j().bind(null,"head"),ze.domAPI=P(),ze.insertStyleElement=O(),I()(Fe.Z,ze),Fe.Z&&Fe.Z.locals&&Fe.Z.locals;const Ve=(0,M.Z)(Ue,(function(){var t=this,e=t._self._c;return e("section",[e("HeaderBar",{attrs:{"input-id":t.inputId,readable:t.propertyReadable}}),t._v(" "),t.isEditable?[e("Language",{attrs:{"input-id":t.inputId,"common-languages":t.commonLanguages,"other-languages":t.otherLanguages,language:t.language},on:{"update:language":function(e){t.language=e}}})]:e("span",[t._v("\n\t\t"+t._s(t.t("settings","No language set"))+"\n\t")])],2)}),[],!1,null,"92685b76",null).exports;var He=n(80351),Ge=n.n(He);const qe={name:"Locale",components:{Web:n(97859).default},props:{inputId:{type:String,default:null},locale:{type:Object,required:!0},localesForLanguage:{type:Array,required:!0},otherLocales:{type:Array,required:!0}},data(){return{initialLocale:this.locale,example:{date:Ge()().format("L"),time:Ge()().format("LTS"),firstDayOfWeek:window.dayNames[window.firstDay]}}},computed:{allLocales(){return Object.freeze([...this.localesForLanguage,...this.otherLocales].reduce(((t,e)=>{let{code:a,name:n}=e;return{...t,[a]:n}}),{}))}},created(){setInterval(this.refreshExample,1e3)},methods:{async onLocaleChange(t){const e=this.constructLocale(t.target.value);var a;this.$emit("update:locale",e),""!==(a=e).code&&""!==a.name&&void 0!==a.name&&await this.updateLocale(e)},async updateLocale(e){try{var a,n;const t=await nt(q.LOCALE,e.code);this.handleResponse({locale:e,status:null===(a=t.ocs)||void 0===a||null===(n=a.meta)||void 0===n?void 0:n.status}),this.reloadPage()}catch(e){this.handleResponse({errorMessage:t("settings","Unable to update locale"),error:e})}},constructLocale(t){return{code:t,name:this.allLocales[t]}},handleResponse(t){let{locale:e,status:a,errorMessage:n,error:i}=t;"ok"===a?this.initialLocale=e:(this.$emit("update:locale",this.initialLocale),ot(i,n))},refreshExample(){this.example={date:Ge()().format("L"),time:Ge()().format("LTS"),firstDayOfWeek:window.dayNames[window.firstDay]}},reloadPage(){location.reload()}}};var Ye=n(87229),$e={};$e.styleTagTransform=R(),$e.setAttributes=k(),$e.insert=j().bind(null,"head"),$e.domAPI=P(),$e.insertStyleElement=O(),I()(Ye.Z,$e),Ye.Z&&Ye.Z.locals&&Ye.Z.locals;const We=(0,M.Z)(qe,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"locale"},[e("select",{attrs:{id:t.inputId,placeholder:t.t("settings","Locale")},on:{change:t.onLocaleChange}},[t._l(t.localesForLanguage,(function(a){return e("option",{key:a.code,domProps:{selected:t.locale.code===a.code,value:a.code}},[t._v("\n\t\t\t"+t._s(a.name)+"\n\t\t")])})),t._v(" "),e("option",{attrs:{disabled:""}},[t._v("\n\t\t\t──────────\n\t\t")]),t._v(" "),t._l(t.otherLocales,(function(a){return e("option",{key:a.code,domProps:{selected:t.locale.code===a.code,value:a.code}},[t._v("\n\t\t\t"+t._s(a.name)+"\n\t\t")])}))],2),t._v(" "),e("div",{staticClass:"example"},[e("Web",{attrs:{size:20}}),t._v(" "),e("div",{staticClass:"example__text"},[e("p",[e("span",[t._v(t._s(t.example.date))]),t._v(" "),e("span",[t._v(t._s(t.example.time))])]),t._v(" "),e("p",[t._v("\n\t\t\t\t"+t._s(t.t("settings","Week starts on {firstDayOfWeek}",{firstDayOfWeek:this.example.firstDayOfWeek}))+"\n\t\t\t")])])],1)])}),[],!1,null,"1ac456dc",null).exports,{localeMap:{activeLocale:Ke,localesForLanguage:Qe,otherLocales:Je}}=(0,s.j)("settings","personalInfoParameters",{}),Xe={name:"LocaleSection",components:{Locale:We,HeaderBar:gt},data:()=>({propertyReadable:Y.LOCALE,localesForLanguage:Qe,otherLocales:Je,locale:Ke}),computed:{inputId:()=>"account-setting-".concat(q.LOCALE),isEditable(){return Boolean(this.locale)}}};var ta=n(682),ea={};ea.styleTagTransform=R(),ea.setAttributes=k(),ea.insert=j().bind(null,"head"),ea.domAPI=P(),ea.insertStyleElement=O(),I()(ta.Z,ea),ta.Z&&ta.Z.locals&&ta.Z.locals;const aa=(0,M.Z)(Xe,(function(){var t=this,e=t._self._c;return e("section",[e("HeaderBar",{attrs:{"input-id":t.inputId,readable:t.propertyReadable}}),t._v(" "),t.isEditable?[e("Locale",{attrs:{"input-id":t.inputId,"locales-for-language":t.localesForLanguage,"other-locales":t.otherLocales,locale:t.locale},on:{"update:locale":function(e){t.locale=e}}})]:e("span",[t._v("\n\t\t"+t._s(t.t("settings","No locale set"))+"\n\t")])],2)}),[],!1,null,"84fca724",null).exports,na={name:"EditProfileAnchorLink",components:{ChevronDownIcon:n(41622).default},props:{profileEnabled:{type:Boolean,required:!0}},computed:{disabled(){return!this.profileEnabled}}};var ia=n(64534),oa={};oa.styleTagTransform=R(),oa.setAttributes=k(),oa.insert=j().bind(null,"head"),oa.domAPI=P(),oa.insertStyleElement=O(),I()(ia.Z,oa),ia.Z&&ia.Z.locals&&ia.Z.locals;var sa=n(40001),ra={};ra.styleTagTransform=R(),ra.setAttributes=k(),ra.insert=j().bind(null,"head"),ra.domAPI=P(),ra.insertStyleElement=O(),I()(sa.Z,ra),sa.Z&&sa.Z.locals&&sa.Z.locals;const la=(0,M.Z)(na,(function(){var t=this,e=t._self._c;return e("a",t._g({class:{disabled:t.disabled},attrs:{href:"#profile-visibility"}},t.$listeners),[e("ChevronDownIcon",{staticClass:"anchor-icon",attrs:{size:22}}),t._v("\n\t"+t._s(t.t("settings","Edit your Profile visibility"))+"\n")],1)}),[],!1,null,"1caba458",null).exports;var da=n(20571);const ca={name:"ProfileCheckbox",components:{NcCheckboxRadioSwitch:n.n(da)()},props:{profileEnabled:{type:Boolean,required:!0}},data(){return{isProfileEnabled:this.profileEnabled,loading:!1}},methods:{async saveEnableProfile(){this.loading=!0;try{var e,a;const t=await nt(F.PROFILE_ENABLED,this.isProfileEnabled);this.handleResponse({isProfileEnabled:this.isProfileEnabled,status:null===(e=t.ocs)||void 0===e||null===(a=e.meta)||void 0===a?void 0:a.status})}catch(e){this.handleResponse({errorMessage:t("settings","Unable to update profile enabled state"),error:e})}},handleResponse(t){let{isProfileEnabled:e,status:a,errorMessage:n,error:i}=t;"ok"===a?(0,p.j8)("settings:profile-enabled:updated",e):ot(i,n),this.loading=!1}}},pa=(0,M.Z)(ca,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"checkbox-container"},[e("NcCheckboxRadioSwitch",{attrs:{type:"switch",checked:t.isProfileEnabled,loading:t.loading},on:{"update:checked":[function(e){t.isProfileEnabled=e},t.saveEnableProfile]}},[t._v("\n\t\t"+t._s(t.t("settings","Enable Profile"))+"\n\t")])],1)}),[],!1,null,null,null).exports,Aa={name:"ProfilePreviewCard",components:{NcAvatar:u()},props:{displayName:{type:String,required:!0},organisation:{type:String,required:!0},profileEnabled:{type:Boolean,required:!0},userId:{type:String,required:!0}},computed:{disabled(){return!this.profileEnabled},profilePageLink(){return this.profileEnabled?(0,d.generateUrl)("/u/{userId}",{userId:(0,o.ts)().uid}):null}}};var ua=n(80507),ma={};ma.styleTagTransform=R(),ma.setAttributes=k(),ma.insert=j().bind(null,"head"),ma.domAPI=P(),ma.insertStyleElement=O(),I()(ua.Z,ma),ua.Z&&ua.Z.locals&&ua.Z.locals;const ha=(0,M.Z)(Aa,(function(){var t=this,e=t._self._c;return e("a",{staticClass:"preview-card",class:{disabled:t.disabled},attrs:{href:t.profilePageLink}},[e("NcAvatar",{staticClass:"preview-card__avatar",attrs:{user:t.userId,size:48,"show-user-status":!0,"show-user-status-compact":!1,"disable-menu":!0,"disable-tooltip":!0}}),t._v(" "),e("div",{staticClass:"preview-card__header"},[e("span",[t._v(t._s(t.displayName))])]),t._v(" "),e("div",{staticClass:"preview-card__footer"},[e("span",[t._v(t._s(t.organisation))])])],1)}),[],!1,null,"61586aa5",null).exports,{organisation:{value:ga},displayName:{value:va},profileEnabled:fa,userId:Ca}=(0,s.j)("settings","personalInfoParameters",{}),ya={name:"ProfileSection",components:{EditProfileAnchorLink:la,HeaderBar:gt,ProfileCheckbox:pa,ProfilePreviewCard:ha},data:()=>({propertyReadable:z.PROFILE_ENABLED,organisation:ga,displayName:va,profileEnabled:fa,userId:Ca}),mounted(){(0,p.Ld)("settings:display-name:updated",this.handleDisplayNameUpdate),(0,p.Ld)("settings:organisation:updated",this.handleOrganisationUpdate)},beforeDestroy(){(0,p.r1)("settings:display-name:updated",this.handleDisplayNameUpdate),(0,p.r1)("settings:organisation:updated",this.handleOrganisationUpdate)},methods:{handleDisplayNameUpdate(t){this.displayName=t},handleOrganisationUpdate(t){this.organisation=t}}},ba=ya;var xa=n(90552),Ea={};Ea.styleTagTransform=R(),Ea.setAttributes=k(),Ea.insert=j().bind(null,"head"),Ea.domAPI=P(),Ea.insertStyleElement=O(),I()(xa.Z,Ea),xa.Z&&xa.Z.locals&&xa.Z.locals;const _a=(0,M.Z)(ba,(function(){var t=this,e=t._self._c;return e("section",[e("HeaderBar",{attrs:{readable:t.propertyReadable}}),t._v(" "),e("ProfileCheckbox",{attrs:{"profile-enabled":t.profileEnabled},on:{"update:profileEnabled":function(e){t.profileEnabled=e},"update:profile-enabled":function(e){t.profileEnabled=e}}}),t._v(" "),e("ProfilePreviewCard",{attrs:{organisation:t.organisation,"display-name":t.displayName,"profile-enabled":t.profileEnabled,"user-id":t.userId}}),t._v(" "),e("EditProfileAnchorLink",{attrs:{"profile-enabled":t.profileEnabled}})],1)}),[],!1,null,"cf64d964",null).exports,{organisation:wa}=(0,s.j)("settings","personalInfoParameters",{}),Ia={name:"OrganisationSection",components:{AccountPropertySection:qt},data:()=>({organisation:{...wa,readable:V[wa.name]}})},Sa=(0,M.Z)(Ia,(function(){var t=this;return(0,t._self._c)("AccountPropertySection",t._b({attrs:{placeholder:t.t("settings","Your organisation")}},"AccountPropertySection",t.organisation,!1,!0))}),[],!1,null,null,null).exports,{role:Pa}=(0,s.j)("settings","personalInfoParameters",{}),La={name:"RoleSection",components:{AccountPropertySection:qt},data:()=>({role:{...Pa,readable:V[Pa.name]}})},ja=(0,M.Z)(La,(function(){var t=this;return(0,t._self._c)("AccountPropertySection",t._b({attrs:{placeholder:t.t("settings","Your role")}},"AccountPropertySection",t.role,!1,!0))}),[],!1,null,null,null).exports,{headline:Ba}=(0,s.j)("settings","personalInfoParameters",{}),ka={name:"HeadlineSection",components:{AccountPropertySection:qt},data:()=>({headline:{...Ba,readable:V[Ba.name]}})},Da=(0,M.Z)(ka,(function(){var t=this;return(0,t._self._c)("AccountPropertySection",t._b({attrs:{placeholder:t.t("settings","Your headline")}},"AccountPropertySection",t.headline,!1,!0))}),[],!1,null,null,null).exports,{biography:Oa}=(0,s.j)("settings","personalInfoParameters",{}),Na={name:"BiographySection",components:{AccountPropertySection:qt},data:()=>({biography:{...Oa,readable:V[Oa.name]}})},Ra=(0,M.Z)(Na,(function(){var t=this;return(0,t._self._c)("AccountPropertySection",t._b({attrs:{placeholder:t.t("settings","Your biography"),"multi-line":!0}},"AccountPropertySection",t.biography,!1,!0))}),[],!1,null,null,null).exports;var Ta=n(36456),Za=n.n(Ta);const Ma=Object.freeze({SHOW:"show",SHOW_USERS_ONLY:"show_users_only",HIDE:"hide"}),Ua=Object.freeze({[Ma.SHOW]:{name:Ma.SHOW,label:t("settings","Show to everyone")},[Ma.SHOW_USERS_ONLY]:{name:Ma.SHOW_USERS_ONLY,label:t("settings","Show to logged in users only")},[Ma.HIDE]:{name:Ma.HIDE,label:t("settings","Hide")}}),{profileEnabled:Fa}=(0,s.j)("settings","personalInfoParameters",!1),za={name:"VisibilityDropdown",components:{NcSelect:Za()},props:{paramId:{type:String,required:!0},displayId:{type:String,required:!0},visibility:{type:String,required:!0}},data(){return{initialVisibility:this.visibility,profileEnabled:Fa}},computed:{disabled(){return!this.profileEnabled},inputId(){return"profile-visibility-".concat(this.paramId)},visibilityObject(){return Ua[this.visibility]},visibilityOptions:()=>Object.values(Ua)},mounted(){(0,p.Ld)("settings:profile-enabled:updated",this.handleProfileEnabledUpdate)},beforeDestroy(){(0,p.r1)("settings:profile-enabled:updated",this.handleProfileEnabledUpdate)},methods:{async onVisibilityChange(t){if(null!==t){const{name:e}=t;this.$emit("update:visibility",e),""!==e&&await this.updateVisibility(e)}},async updateVisibility(e){try{var a,n;const t=await(async(t,e)=>{const a=(0,o.ts)().uid,n=(0,d.generateOcsUrl)("/profile/{userId}",{userId:a});return await(0,at.confirmPassword)(),(await l.default.put(n,{paramId:t,visibility:e})).data})(this.paramId,e);this.handleResponse({visibility:e,status:null===(a=t.ocs)||void 0===a||null===(n=a.meta)||void 0===n?void 0:n.status})}catch(e){this.handleResponse({errorMessage:t("settings","Unable to update visibility of {displayId}",{displayId:this.displayId}),error:e})}},handleResponse(t){let{visibility:e,status:a,errorMessage:n,error:i}=t;"ok"===a?this.initialVisibility=e:ot(i,n)},handleProfileEnabledUpdate(t){this.profileEnabled=t}}},Va=za;var Ha=n(63019),Ga={};Ga.styleTagTransform=R(),Ga.setAttributes=k(),Ga.insert=j().bind(null,"head"),Ga.domAPI=P(),Ga.insertStyleElement=O(),I()(Ha.Z,Ga),Ha.Z&&Ha.Z.locals&&Ha.Z.locals;const qa=(0,M.Z)(Va,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"visibility-container",class:{disabled:t.disabled}},[e("label",{attrs:{for:t.inputId}},[t._v("\n\t\t"+t._s(t.displayId)+"\n\t")]),t._v(" "),e("NcSelect",{staticClass:"visibility-container__select",attrs:{"input-id":t.inputId,clearable:!1,options:t.visibilityOptions,value:t.visibilityObject},on:{"option:selected":t.onVisibilityChange}})],1)}),[],!1,null,"b13d20da",null).exports,{profileConfig:Ya}=(0,s.j)("settings","profileParameters",{}),{profileEnabled:$a}=(0,s.j)("settings","personalInfoParameters",!1),Wa=(t,e)=>t.appId===e.appId||"core"!==t.appId&&"core"!==e.appId?t.displayId.localeCompare(e.displayId):"core"===t.appId?1:-1,Ka={name:"ProfileVisibilitySection",components:{HeaderBar:gt,VisibilityDropdown:qa},data:()=>({heading:H.PROFILE_VISIBILITY,profileEnabled:$a,visibilityParams:Object.entries(Ya).map((t=>{let[e,{appId:a,displayId:n,visibility:i}]=t;return{id:e,appId:a,displayId:n,visibility:i}})).sort(Wa),marginLeft:window.matchMedia("(min-width: 1600px)").matches?window.getComputedStyle(document.getElementById("vue-avatar-section")).getPropertyValue("width").trim():"0px"}),computed:{disabled(){return!this.profileEnabled},rows(){return Math.ceil(this.visibilityParams.length/2)}},mounted(){(0,p.Ld)("settings:profile-enabled:updated",this.handleProfileEnabledUpdate),window.onresize=()=>{this.marginLeft=window.matchMedia("(min-width: 1600px)").matches?window.getComputedStyle(document.getElementById("vue-avatar-section")).getPropertyValue("width").trim():"0px"}},beforeDestroy(){(0,p.r1)("settings:profile-enabled:updated",this.handleProfileEnabledUpdate)},methods:{handleProfileEnabledUpdate(t){this.profileEnabled=t}}},Qa=Ka;var Ja=n(45386),Xa={};Xa.styleTagTransform=R(),Xa.setAttributes=k(),Xa.insert=j().bind(null,"head"),Xa.domAPI=P(),Xa.insertStyleElement=O(),I()(Ja.Z,Xa),Ja.Z&&Ja.Z.locals&&Ja.Z.locals;const tn=(0,M.Z)(Qa,(function(){var t=this,e=t._self._c;return e("section",{style:{marginLeft:t.marginLeft},attrs:{id:"profile-visibility"}},[e("HeaderBar",{attrs:{"is-heading":!0,readable:t.heading}}),t._v(" "),e("em",{class:{disabled:t.disabled}},[t._v("\n\t\t"+t._s(t.t("settings",'The more restrictive setting of either visibility or scope is respected on your Profile. For example, if visibility is set to "Show to everyone" and scope is set to "Private", "Private" is respected.'))+"\n\t")]),t._v(" "),e("div",{staticClass:"visibility-dropdowns",style:{gridTemplateRows:"repeat(".concat(t.rows,", 44px)")}},t._l(t.visibilityParams,(function(a){return e("VisibilityDropdown",{key:a.id,attrs:{"param-id":a.id,"display-id":a.displayId,visibility:a.visibility},on:{"update:visibility":function(e){return t.$set(a,"visibility",e)}}})})),1)],1)}),[],!1,null,"a07dbf96",null).exports;n.nc=btoa((0,o.IH)());const en=(0,s.j)("settings","profileEnabledGlobally",!0);i.default.mixin({methods:{t:r.Iu}});const an=i.default.extend(_t),nn=i.default.extend(Tt),on=i.default.extend(Kt),sn=i.default.extend(he),rn=i.default.extend(ye),ln=i.default.extend(Ee),dn=i.default.extend(Ie),cn=i.default.extend(Le),pn=i.default.extend(ke),An=i.default.extend(Ve),un=i.default.extend(aa);if((new an).$mount("#vue-avatar-section"),(new nn).$mount("#vue-details-section"),(new on).$mount("#vue-displayname-section"),(new sn).$mount("#vue-email-section"),(new rn).$mount("#vue-phone-section"),(new ln).$mount("#vue-location-section"),(new dn).$mount("#vue-website-section"),(new cn).$mount("#vue-twitter-section"),(new pn).$mount("#vue-fediverse-section"),(new An).$mount("#vue-language-section"),(new un).$mount("#vue-locale-section"),en){const t=i.default.extend(_a),e=i.default.extend(Sa),a=i.default.extend(ja),n=i.default.extend(Da),o=i.default.extend(Ra),s=i.default.extend(tn);(new t).$mount("#vue-profile-section"),(new e).$mount("#vue-organisation-section"),(new a).$mount("#vue-role-section"),(new n).$mount("#vue-headline-section"),(new o).$mount("#vue-biography-section"),(new s).$mount("#vue-profile-visibility-section")}},31246:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,"section[data-v-022fd5d4]{grid-row:1/3}.avatar__container[data-v-022fd5d4]{margin:0 auto;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:16px 0;width:300px}.avatar__container span[data-v-022fd5d4]{color:var(--color-text-lighter)}.avatar__preview[data-v-022fd5d4]{display:flex;justify-content:center;align-items:center;width:180px;height:180px}.avatar__buttons[data-v-022fd5d4]{display:flex;gap:0 10px}.avatar__cropper[data-v-022fd5d4]{width:300px;height:300px;overflow:hidden}.avatar__cropper-buttons[data-v-022fd5d4]{width:100%;display:flex;justify-content:space-between}.avatar__cropper[data-v-022fd5d4] .cropper-view-box{border-radius:50%}input[type=file][data-v-022fd5d4]{display:none}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/AvatarSection.vue"],names:[],mappings:"AACA,yBACC,YAAA,CAGA,oCACC,aAAA,CACA,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,kBAAA,CACA,UAAA,CACA,WAAA,CAEA,yCACC,+BAAA,CAIF,kCACC,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,WAAA,CACA,YAAA,CAGD,kCACC,YAAA,CACA,UAAA,CAGD,kCACC,WAAA,CACA,YAAA,CACA,eAAA,CAEA,0CACC,UAAA,CACA,YAAA,CACA,6BAAA,CAGD,oDACC,iBAAA,CAKH,kCACC,YAAA",sourcesContent:['\nsection {\n\tgrid-row: 1/3;\n}\n.avatar {\n\t&__container {\n\t\tmargin: 0 auto;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tgap: 16px 0;\n\t\twidth: 300px;\n\n\t\tspan {\n\t\t\tcolor: var(--color-text-lighter);\n\t\t}\n\t}\n\n\t&__preview {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\twidth: 180px;\n\t\theight: 180px;\n\t}\n\n\t&__buttons {\n\t\tdisplay: flex;\n\t\tgap: 0 10px;\n\t}\n\n\t&__cropper {\n\t\twidth: 300px;\n\t\theight: 300px;\n\t\toverflow: hidden;\n\n\t\t&-buttons {\n\t\t\twidth: 100%;\n\t\t\tdisplay: flex;\n\t\t\tjustify-content: space-between;\n\t\t}\n\n\t\t&::v-deep .cropper-view-box {\n\t\t\tborder-radius: 50%;\n\t\t}\n\t}\n}\n\ninput[type="file"] {\n\tdisplay: none;\n}\n'],sourceRoot:""}]);const r=s},18118:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,".details[data-v-1ab46e68]{display:flex;flex-direction:column;margin:10px 32px 10px 0;gap:16px 0;color:var(--color-text-lighter)}.details__groups[data-v-1ab46e68],.details__quota[data-v-1ab46e68]{display:flex;gap:0 10px}.details__groups-info[data-v-1ab46e68],.details__quota-info[data-v-1ab46e68]{display:flex;flex-direction:column;width:100%;gap:4px 0}.details__groups-list[data-v-1ab46e68],.details__quota-list[data-v-1ab46e68]{font-weight:bold}.details__groups[data-v-1ab46e68] .material-design-icon,.details__quota[data-v-1ab46e68] .material-design-icon{align-self:flex-start;margin-top:2px}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/DetailsSection.vue"],names:[],mappings:"AACA,0BACC,YAAA,CACA,qBAAA,CACA,uBAAA,CACA,UAAA,CACA,+BAAA,CAEA,mEAEC,YAAA,CACA,UAAA,CAEA,6EACC,YAAA,CACA,qBAAA,CACA,UAAA,CACA,SAAA,CAGD,6EACC,gBAAA,CAGD,+GACC,qBAAA,CACA,cAAA",sourcesContent:["\n.details {\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin: 10px 32px 10px 0;\n\tgap: 16px 0;\n\tcolor: var(--color-text-lighter);\n\n\t&__groups,\n\t&__quota {\n\t\tdisplay: flex;\n\t\tgap: 0 10px;\n\n\t\t&-info {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\twidth: 100%;\n\t\t\tgap: 4px 0;\n\t\t}\n\n\t\t&-list {\n\t\t\tfont-weight: bold;\n\t\t}\n\n\t\t&::v-deep .material-design-icon {\n\t\t\talign-self: flex-start;\n\t\t\tmargin-top: 2px;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const r=s},11121:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,".email[data-v-5ff85d38]{display:grid;align-items:center}.email input[data-v-5ff85d38]{grid-area:1/1;width:100%}.email .email__actions-container[data-v-5ff85d38]{grid-area:1/1;justify-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px}.email .email__actions-container .email__actions[data-v-5ff85d38]{opacity:.4 !important}.email .email__actions-container .email__actions[data-v-5ff85d38]:hover,.email .email__actions-container .email__actions[data-v-5ff85d38]:focus,.email .email__actions-container .email__actions[data-v-5ff85d38]:active{opacity:.8 !important}.email .email__actions-container .email__actions[data-v-5ff85d38] button{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important}.email__helper-text-message[data-v-5ff85d38]{padding:4px 0;display:flex;align-items:center}.email__helper-text-message__icon[data-v-5ff85d38]{margin-right:8px;align-self:start;margin-top:4px}.email__helper-text-message--error[data-v-5ff85d38]{color:var(--color-error)}.fade-enter[data-v-5ff85d38],.fade-leave-to[data-v-5ff85d38]{opacity:0}.fade-enter-active[data-v-5ff85d38]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-5ff85d38]{transition:opacity 300ms ease-out}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/EmailSection/Email.vue"],names:[],mappings:"AACA,wBACC,YAAA,CACA,kBAAA,CAEA,8BACC,aAAA,CACA,UAAA,CAGD,kDACC,aAAA,CACA,qBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CAEA,kEACC,qBAAA,CAEA,yNAGC,qBAAA,CAGD,yEACC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CAKH,6CACC,aAAA,CACA,YAAA,CACA,kBAAA,CAEA,mDACC,gBAAA,CACA,gBAAA,CACA,cAAA,CAGD,oDACC,wBAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA",sourcesContent:["\n.email {\n\tdisplay: grid;\n\talign-items: center;\n\n\tinput {\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t}\n\n\t.email__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\n\t\t.email__actions {\n\t\t\topacity: 0.4 !important;\n\n\t\t\t&:hover,\n\t\t\t&:focus,\n\t\t\t&:active {\n\t\t\t\topacity: 0.8 !important;\n\t\t\t}\n\n\t\t\t&::v-deep button {\n\t\t\t\theight: 30px !important;\n\t\t\t\tmin-height: 30px !important;\n\t\t\t\twidth: 30px !important;\n\t\t\t\tmin-width: 30px !important;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__helper-text-message {\n\t\tpadding: 4px 0;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\n\t\t&__icon {\n\t\t\tmargin-right: 8px;\n\t\t\talign-self: start;\n\t\t\tmargin-top: 4px;\n\t\t}\n\n\t\t&--error {\n\t\t\tcolor: var(--color-error);\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n"],sourceRoot:""}]);const r=s},73070:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,"section[data-v-46c7eb7e]{padding:10px 10px}section[data-v-46c7eb7e] button:disabled{cursor:default}section .additional-emails-label[data-v-46c7eb7e]{display:block;margin-top:16px}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue"],names:[],mappings:"AACA,yBACC,iBAAA,CAEA,yCACC,cAAA,CAGD,kDACC,aAAA,CACA,eAAA",sourcesContent:["\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n\n\t.additional-emails-label {\n\t\tdisplay: block;\n\t\tmargin-top: 16px;\n\t}\n}\n"],sourceRoot:""}]);const r=s},42569:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,".language[data-v-5c847b3a]{display:grid}.language select[data-v-5c847b3a]{width:100%}.language a[data-v-5c847b3a]{color:var(--color-main-text);text-decoration:none;width:max-content}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue"],names:[],mappings:"AACA,2BACC,YAAA,CAEA,kCACC,UAAA,CAGD,6BACC,4BAAA,CACA,oBAAA,CACA,iBAAA",sourcesContent:["\n.language {\n\tdisplay: grid;\n\n\tselect {\n\t\twidth: 100%;\n\t}\n\n\ta {\n\t\tcolor: var(--color-main-text);\n\t\ttext-decoration: none;\n\t\twidth: max-content;\n\t}\n}\n"],sourceRoot:""}]);const r=s},12531:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,"section[data-v-92685b76]{padding:10px 10px}section[data-v-92685b76] button:disabled{cursor:default}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue"],names:[],mappings:"AACA,yBACC,iBAAA,CAEA,yCACC,cAAA",sourcesContent:["\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n"],sourceRoot:""}]);const r=s},87229:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,".locale[data-v-1ac456dc]{display:grid}.locale select[data-v-1ac456dc]{width:100%}.example[data-v-1ac456dc]{margin:10px 0;display:flex;gap:0 10px;color:var(--color-text-lighter)}.example[data-v-1ac456dc] .material-design-icon{align-self:flex-start;margin-top:2px}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/LocaleSection/Locale.vue"],names:[],mappings:"AACA,yBACC,YAAA,CAEA,gCACC,UAAA,CAIF,0BACC,aAAA,CACA,YAAA,CACA,UAAA,CACA,+BAAA,CAEA,gDACC,qBAAA,CACA,cAAA",sourcesContent:["\n.locale {\n\tdisplay: grid;\n\n\tselect {\n\t\twidth: 100%;\n\t}\n}\n\n.example {\n\tmargin: 10px 0;\n\tdisplay: flex;\n\tgap: 0 10px;\n\tcolor: var(--color-text-lighter);\n\n\t&::v-deep .material-design-icon {\n\t\talign-self: flex-start;\n\t\tmargin-top: 2px;\n\t}\n}\n"],sourceRoot:""}]);const r=s},682:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,"section[data-v-84fca724]{padding:10px 10px}section[data-v-84fca724] button:disabled{cursor:default}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/LocaleSection/LocaleSection.vue"],names:[],mappings:"AACA,yBACC,iBAAA,CAEA,yCACC,cAAA",sourcesContent:["\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n"],sourceRoot:""}]);const r=s},64534:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,"html{scroll-behavior:smooth}@media screen and (prefers-reduced-motion: reduce){html{scroll-behavior:auto}}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue"],names:[],mappings:"AACA,KACC,sBAAA,CAEA,mDAHD,KAIE,oBAAA,CAAA",sourcesContent:["\nhtml {\n\tscroll-behavior: smooth;\n\n\t@media screen and (prefers-reduced-motion: reduce) {\n\t\tscroll-behavior: auto;\n\t}\n}\n"],sourceRoot:""}]);const r=s},40001:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,"a[data-v-1caba458]{display:block;height:44px;width:290px;line-height:44px;padding:0 16px;margin:14px auto;border-radius:var(--border-radius-pill);opacity:.4;background-color:rgba(0,0,0,0)}a .anchor-icon[data-v-1caba458]{display:inline-block;vertical-align:middle;margin-top:6px;margin-right:8px}a[data-v-1caba458]:hover,a[data-v-1caba458]:focus,a[data-v-1caba458]:active{opacity:.8;background-color:rgba(127,127,127,.25)}a.disabled[data-v-1caba458]{pointer-events:none}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue"],names:[],mappings:"AACA,mBACC,aAAA,CACA,WAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,gBAAA,CACA,uCAAA,CACA,UAAA,CACA,8BAAA,CAEA,gCACC,oBAAA,CACA,qBAAA,CACA,cAAA,CACA,gBAAA,CAGD,4EAGC,UAAA,CACA,sCAAA,CAGD,4BACC,mBAAA",sourcesContent:["\na {\n\tdisplay: block;\n\theight: 44px;\n\twidth: 290px;\n\tline-height: 44px;\n\tpadding: 0 16px;\n\tmargin: 14px auto;\n\tborder-radius: var(--border-radius-pill);\n\topacity: 0.4;\n\tbackground-color: transparent;\n\n\t.anchor-icon {\n\t\tdisplay: inline-block;\n\t\tvertical-align: middle;\n\t\tmargin-top: 6px;\n\t\tmargin-right: 8px;\n\t}\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\topacity: 0.8;\n\t\tbackground-color: rgba(127, 127, 127, .25);\n\t}\n\n\t&.disabled {\n\t\tpointer-events: none;\n\t}\n}\n"],sourceRoot:""}]);const r=s},80507:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,".preview-card[data-v-61586aa5]{display:flex;flex-direction:column;position:relative;width:290px;height:116px;margin:14px auto;border-radius:var(--border-radius-large);background-color:var(--color-main-background);font-weight:bold;box-shadow:0 2px 9px var(--color-box-shadow)}.preview-card[data-v-61586aa5]:hover,.preview-card[data-v-61586aa5]:focus,.preview-card[data-v-61586aa5]:active{box-shadow:0 2px 12px var(--color-box-shadow)}.preview-card[data-v-61586aa5]:focus-visible{outline:var(--color-main-text) solid 1px;outline-offset:3px}.preview-card.disabled[data-v-61586aa5]{filter:grayscale(1);opacity:.5;cursor:default;box-shadow:0 0 3px var(--color-box-shadow)}.preview-card.disabled *[data-v-61586aa5],.preview-card.disabled[data-v-61586aa5] *{cursor:default}.preview-card__avatar[data-v-61586aa5]{position:absolute !important;top:40px;left:18px;z-index:1}.preview-card__avatar[data-v-61586aa5]:not(.avatardiv--unknown){box-shadow:0 0 0 3px var(--color-main-background) !important}.preview-card__header[data-v-61586aa5],.preview-card__footer[data-v-61586aa5]{position:relative;width:auto}.preview-card__header span[data-v-61586aa5],.preview-card__footer span[data-v-61586aa5]{position:absolute;left:78px;overflow:hidden;text-overflow:ellipsis;overflow-wrap:anywhere}@supports(-webkit-line-clamp: 2){.preview-card__header span[data-v-61586aa5],.preview-card__footer span[data-v-61586aa5]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.preview-card__header[data-v-61586aa5]{height:70px;border-radius:var(--border-radius-large) var(--border-radius-large) 0 0;background-color:var(--color-primary);background-image:var(--gradient-primary-background)}.preview-card__header span[data-v-61586aa5]{bottom:0;color:var(--color-primary-text);font-size:18px;font-weight:bold;margin:0 4px 8px 0}.preview-card__footer[data-v-61586aa5]{height:46px}.preview-card__footer span[data-v-61586aa5]{top:0;color:var(--color-text-maxcontrast);font-size:14px;font-weight:normal;margin:4px 4px 0 0;line-height:1.3}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue"],names:[],mappings:"AACA,+BACC,YAAA,CACA,qBAAA,CACA,iBAAA,CACA,WAAA,CACA,YAAA,CACA,gBAAA,CACA,wCAAA,CACA,6CAAA,CACA,gBAAA,CACA,4CAAA,CAEA,gHAGC,6CAAA,CAGD,6CACC,wCAAA,CACA,kBAAA,CAGD,wCACC,mBAAA,CACA,UAAA,CACA,cAAA,CACA,0CAAA,CAEA,oFAEC,cAAA,CAIF,uCAEC,4BAAA,CACA,QAAA,CACA,SAAA,CACA,SAAA,CAEA,gEACC,4DAAA,CAIF,8EAEC,iBAAA,CACA,UAAA,CAEA,wFACC,iBAAA,CACA,SAAA,CACA,eAAA,CACA,sBAAA,CACA,sBAAA,CAEA,iCAPD,wFAQE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,uCACC,WAAA,CACA,uEAAA,CACA,qCAAA,CACA,mDAAA,CAEA,4CACC,QAAA,CACA,+BAAA,CACA,cAAA,CACA,gBAAA,CACA,kBAAA,CAIF,uCACC,WAAA,CAEA,4CACC,KAAA,CACA,mCAAA,CACA,cAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA",sourcesContent:["\n.preview-card {\n\tdisplay: flex;\n\tflex-direction: column;\n\tposition: relative;\n\twidth: 290px;\n\theight: 116px;\n\tmargin: 14px auto;\n\tborder-radius: var(--border-radius-large);\n\tbackground-color: var(--color-main-background);\n\tfont-weight: bold;\n\tbox-shadow: 0 2px 9px var(--color-box-shadow);\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\tbox-shadow: 0 2px 12px var(--color-box-shadow);\n\t}\n\n\t&:focus-visible {\n\t\toutline: var(--color-main-text) solid 1px;\n\t\toutline-offset: 3px;\n\t}\n\n\t&.disabled {\n\t\tfilter: grayscale(1);\n\t\topacity: 0.5;\n\t\tcursor: default;\n\t\tbox-shadow: 0 0 3px var(--color-box-shadow);\n\n\t\t& *,\n\t\t&::v-deep * {\n\t\t\tcursor: default;\n\t\t}\n\t}\n\n\t&__avatar {\n\t\t// Override Avatar component position to fix positioning on rerender\n\t\tposition: absolute !important;\n\t\ttop: 40px;\n\t\tleft: 18px;\n\t\tz-index: 1;\n\n\t\t&:not(.avatardiv--unknown) {\n\t\t\tbox-shadow: 0 0 0 3px var(--color-main-background) !important;\n\t\t}\n\t}\n\n\t&__header,\n\t&__footer {\n\t\tposition: relative;\n\t\twidth: auto;\n\n\t\tspan {\n\t\t\tposition: absolute;\n\t\t\tleft: 78px;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\toverflow-wrap: anywhere;\n\n\t\t\t@supports (-webkit-line-clamp: 2) {\n\t\t\t\tdisplay: -webkit-box;\n\t\t\t\t-webkit-line-clamp: 2;\n\t\t\t\t-webkit-box-orient: vertical;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__header {\n\t\theight: 70px;\n\t\tborder-radius: var(--border-radius-large) var(--border-radius-large) 0 0;\n\t\tbackground-color: var(--color-primary);\n\t\tbackground-image: var(--gradient-primary-background);\n\n\t\tspan {\n\t\t\tbottom: 0;\n\t\t\tcolor: var(--color-primary-text);\n\t\t\tfont-size: 18px;\n\t\t\tfont-weight: bold;\n\t\t\tmargin: 0 4px 8px 0;\n\t\t}\n\t}\n\n\t&__footer {\n\t\theight: 46px;\n\n\t\tspan {\n\t\t\ttop: 0;\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\tfont-size: 14px;\n\t\t\tfont-weight: normal;\n\t\t\tmargin: 4px 4px 0 0;\n\t\t\tline-height: 1.3;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const r=s},90552:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,"section[data-v-cf64d964]{padding:10px 10px}section[data-v-cf64d964] button:disabled{cursor:default}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue"],names:[],mappings:"AACA,yBACC,iBAAA,CAEA,yCACC,cAAA",sourcesContent:["\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n"],sourceRoot:""}]);const r=s},45386:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,"section[data-v-a07dbf96]{padding:30px;max-width:900px;width:100%}section em[data-v-a07dbf96]{display:block;margin:16px 0}section em.disabled[data-v-a07dbf96]{filter:grayscale(1);opacity:.5;cursor:default;pointer-events:none}section em.disabled *[data-v-a07dbf96],section em.disabled[data-v-a07dbf96] *{cursor:default;pointer-events:none}section .visibility-dropdowns[data-v-a07dbf96]{display:grid;gap:10px 40px}@media(min-width: 1200px){section[data-v-a07dbf96]{width:940px}section .visibility-dropdowns[data-v-a07dbf96]{grid-auto-flow:column}}@media(max-width: 1200px){section[data-v-a07dbf96]{width:470px}}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue"],names:[],mappings:"AACA,yBACC,YAAA,CACA,eAAA,CACA,UAAA,CAEA,4BACC,aAAA,CACA,aAAA,CAEA,qCACC,mBAAA,CACA,UAAA,CACA,cAAA,CACA,mBAAA,CAEA,8EAEC,cAAA,CACA,mBAAA,CAKH,+CACC,YAAA,CACA,aAAA,CAGD,0BA5BD,yBA6BE,WAAA,CAEA,+CACC,qBAAA,CAAA,CAIF,0BApCD,yBAqCE,WAAA,CAAA",sourcesContent:["\nsection {\n\tpadding: 30px;\n\tmax-width: 900px;\n\twidth: 100%;\n\n\tem {\n\t\tdisplay: block;\n\t\tmargin: 16px 0;\n\n\t\t&.disabled {\n\t\t\tfilter: grayscale(1);\n\t\t\topacity: 0.5;\n\t\t\tcursor: default;\n\t\t\tpointer-events: none;\n\n\t\t\t& *,\n\t\t\t&::v-deep * {\n\t\t\t\tcursor: default;\n\t\t\t\tpointer-events: none;\n\t\t\t}\n\t\t}\n\t}\n\n\t.visibility-dropdowns {\n\t\tdisplay: grid;\n\t\tgap: 10px 40px;\n\t}\n\n\t@media (min-width: 1200px) {\n\t\twidth: 940px;\n\n\t\t.visibility-dropdowns {\n\t\t\tgrid-auto-flow: column;\n\t\t}\n\t}\n\n\t@media (max-width: 1200px) {\n\t\twidth: 470px;\n\t}\n}\n"],sourceRoot:""}]);const r=s},63019:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,".visibility-container[data-v-b13d20da]{display:flex;width:max-content}.visibility-container.disabled[data-v-b13d20da]{filter:grayscale(1);opacity:.5;cursor:default;pointer-events:none}.visibility-container.disabled *[data-v-b13d20da],.visibility-container.disabled[data-v-b13d20da] *{cursor:default;pointer-events:none}.visibility-container label[data-v-b13d20da]{color:var(--color-text-lighter);width:150px;line-height:50px}.visibility-container__select[data-v-b13d20da]{width:270px;max-width:40vw}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue"],names:[],mappings:"AACA,uCACC,YAAA,CACA,iBAAA,CAEA,gDACC,mBAAA,CACA,UAAA,CACA,cAAA,CACA,mBAAA,CAEA,oGAEC,cAAA,CACA,mBAAA,CAIF,6CACC,+BAAA,CACA,WAAA,CACA,gBAAA,CAGD,+CACC,WAAA,CACA,cAAA",sourcesContent:["\n.visibility-container {\n\tdisplay: flex;\n\twidth: max-content;\n\n\t&.disabled {\n\t\tfilter: grayscale(1);\n\t\topacity: 0.5;\n\t\tcursor: default;\n\t\tpointer-events: none;\n\n\t\t& *,\n\t\t&::v-deep * {\n\t\t\tcursor: default;\n\t\t\tpointer-events: none;\n\t\t}\n\t}\n\n\tlabel {\n\t\tcolor: var(--color-text-lighter);\n\t\twidth: 150px;\n\t\tline-height: 50px;\n\t}\n\n\t&__select {\n\t\twidth: 270px;\n\t\tmax-width: 40vw;\n\t}\n}\n"],sourceRoot:""}]);const r=s},78784:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,"section[data-v-6eb7d8e0]{padding:10px 10px}section[data-v-6eb7d8e0] button:disabled{cursor:default}section .property[data-v-6eb7d8e0]{display:grid;align-items:center}section .property textarea[data-v-6eb7d8e0]{resize:vertical;grid-area:1/1;width:100%}section .property input[data-v-6eb7d8e0]{grid-area:1/1;width:100%}section .property .property__actions-container[data-v-6eb7d8e0]{grid-area:1/1;justify-self:flex-end;align-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px;margin-bottom:5px}section .property__helper-text-message[data-v-6eb7d8e0]{padding:4px 0;display:flex;align-items:center}section .property__helper-text-message__icon[data-v-6eb7d8e0]{margin-right:8px;align-self:start;margin-top:4px}section .property__helper-text-message--error[data-v-6eb7d8e0]{color:var(--color-error)}section .fade-enter[data-v-6eb7d8e0],section .fade-leave-to[data-v-6eb7d8e0]{opacity:0}section .fade-enter-active[data-v-6eb7d8e0]{transition:opacity 200ms ease-out}section .fade-leave-active[data-v-6eb7d8e0]{transition:opacity 300ms ease-out}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/shared/AccountPropertySection.vue"],names:[],mappings:"AACA,yBACC,iBAAA,CAEA,yCACC,cAAA,CAGD,mCACC,YAAA,CACA,kBAAA,CAEA,4CACC,eAAA,CACA,aAAA,CACA,UAAA,CAGD,yCACC,aAAA,CACA,UAAA,CAGD,gEACC,aAAA,CACA,qBAAA,CACA,mBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CACA,iBAAA,CAIF,wDACC,aAAA,CACA,YAAA,CACA,kBAAA,CAEA,8DACC,gBAAA,CACA,gBAAA,CACA,cAAA,CAGD,+DACC,wBAAA,CAIF,6EAEC,SAAA,CAGD,4CACC,iCAAA,CAGD,4CACC,iCAAA",sourcesContent:["\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n\n\t.property {\n\t\tdisplay: grid;\n\t\talign-items: center;\n\n\t\ttextarea {\n\t\t\tresize: vertical;\n\t\t\tgrid-area: 1 / 1;\n\t\t\twidth: 100%;\n\t\t}\n\n\t\tinput {\n\t\t\tgrid-area: 1 / 1;\n\t\t\twidth: 100%;\n\t\t}\n\n\t\t.property__actions-container {\n\t\t\tgrid-area: 1 / 1;\n\t\t\tjustify-self: flex-end;\n\t\t\talign-self: flex-end;\n\t\t\theight: 30px;\n\n\t\t\tdisplay: flex;\n\t\t\tgap: 0 2px;\n\t\t\tmargin-right: 5px;\n\t\t\tmargin-bottom: 5px;\n\t\t}\n\t}\n\n\t.property__helper-text-message {\n\t\tpadding: 4px 0;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\n\t\t&__icon {\n\t\t\tmargin-right: 8px;\n\t\t\talign-self: start;\n\t\t\tmargin-top: 4px;\n\t\t}\n\n\t\t&--error {\n\t\t\tcolor: var(--color-error);\n\t\t}\n\t}\n\n\t.fade-enter,\n\t.fade-leave-to {\n\t\topacity: 0;\n\t}\n\n\t.fade-enter-active {\n\t\ttransition: opacity 200ms ease-out;\n\t}\n\n\t.fade-leave-active {\n\t\ttransition: opacity 300ms ease-out;\n\t}\n}\n"],sourceRoot:""}]);const r=s},14036:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,".federation-actions[data-v-4ea07669],.federation-actions--additional[data-v-4ea07669]{opacity:.4 !important}.federation-actions[data-v-4ea07669]:hover,.federation-actions[data-v-4ea07669]:focus,.federation-actions[data-v-4ea07669]:active,.federation-actions--additional[data-v-4ea07669]:hover,.federation-actions--additional[data-v-4ea07669]:focus,.federation-actions--additional[data-v-4ea07669]:active{opacity:.8 !important}.federation-actions--additional[data-v-4ea07669] button{padding-bottom:7px;height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/shared/FederationControl.vue"],names:[],mappings:"AACA,sFAEC,qBAAA,CAEA,wSAGC,qBAAA,CAKD,wDAEC,kBAAA,CACA,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA",sourcesContent:["\n.federation-actions,\n.federation-actions--additional {\n\topacity: 0.4 !important;\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\topacity: 0.8 !important;\n\t}\n}\n\n.federation-actions--additional {\n\t&::v-deep button {\n\t\t// TODO remove this hack\n\t\tpadding-bottom: 7px;\n\t\theight: 30px !important;\n\t\tmin-height: 30px !important;\n\t\twidth: 30px !important;\n\t\tmin-width: 30px !important;\n\t}\n}\n"],sourceRoot:""}]);const r=s},69205:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,".federation-actions__btn[data-v-404f7a30] p{width:150px !important;padding:8px 0 !important;color:var(--color-main-text) !important;font-size:12.8px !important;line-height:1.5em !important}.federation-actions__btn--active[data-v-404f7a30]{background-color:var(--color-primary-light) !important;box-shadow:inset 2px 0 var(--color-primary) !important}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue"],names:[],mappings:"AAEC,4CACC,sBAAA,CACA,wBAAA,CACA,uCAAA,CACA,2BAAA,CACA,4BAAA,CAIF,kDACC,sDAAA,CACA,sDAAA",sourcesContent:["\n.federation-actions__btn {\n\t&::v-deep p {\n\t\twidth: 150px !important;\n\t\tpadding: 8px 0 !important;\n\t\tcolor: var(--color-main-text) !important;\n\t\tfont-size: 12.8px !important;\n\t\tline-height: 1.5em !important;\n\t}\n}\n\n.federation-actions__btn--active {\n\tbackground-color: var(--color-primary-light) !important;\n\tbox-shadow: inset 2px 0 var(--color-primary) !important;\n}\n"],sourceRoot:""}]);const r=s},90564:(t,e,a)=>{"use strict";a.d(e,{Z:()=>r});var n=a(87537),i=a.n(n),o=a(23645),s=a.n(o)()(i());s.push([t.id,".headerbar-label[data-v-b43fcc0c]{font-weight:normal;display:inline-flex;width:100%;margin:12px 0 0 0;gap:8px;align-items:center;font-size:16px;color:var(--color-text-light)}.headerbar-label.profile-property[data-v-b43fcc0c]{height:38px}.headerbar-label.setting-property[data-v-b43fcc0c]{height:44px}.headerbar-label label[data-v-b43fcc0c]{cursor:pointer}.federation-control[data-v-b43fcc0c]{margin:0}.button-vue[data-v-b43fcc0c]{margin:0 0 0 auto !important}","",{version:3,sources:["webpack://./apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue"],names:[],mappings:"AACA,kCACC,kBAAA,CACA,mBAAA,CACA,UAAA,CACA,iBAAA,CACA,OAAA,CACA,kBAAA,CACA,cAAA,CACA,6BAAA,CAEA,mDACC,WAAA,CAGD,mDACC,WAAA,CAGD,wCACC,cAAA,CAIF,qCACC,QAAA,CAGD,6BACC,4BAAA",sourcesContent:["\n.headerbar-label {\n\tfont-weight: normal;\n\tdisplay: inline-flex;\n\twidth: 100%;\n\tmargin: 12px 0 0 0;\n\tgap: 8px;\n\talign-items: center;\n\tfont-size: 16px;\n\tcolor: var(--color-text-light);\n\n\t&.profile-property {\n\t\theight: 38px;\n\t}\n\n\t&.setting-property {\n\t\theight: 44px;\n\t}\n\n\tlabel {\n\t\tcursor: pointer;\n\t}\n}\n\n.federation-control {\n\tmargin: 0;\n}\n\n.button-vue {\n\tmargin: 0 0 0 auto !important;\n}\n"],sourceRoot:""}]);const r=s},46700:(t,e,a)=>{var n={"./af":42786,"./af.js":42786,"./ar":30867,"./ar-dz":14130,"./ar-dz.js":14130,"./ar-kw":96135,"./ar-kw.js":96135,"./ar-ly":56440,"./ar-ly.js":56440,"./ar-ma":47702,"./ar-ma.js":47702,"./ar-sa":16040,"./ar-sa.js":16040,"./ar-tn":37100,"./ar-tn.js":37100,"./ar.js":30867,"./az":31083,"./az.js":31083,"./be":9808,"./be.js":9808,"./bg":68338,"./bg.js":68338,"./bm":67438,"./bm.js":67438,"./bn":8905,"./bn-bd":76225,"./bn-bd.js":76225,"./bn.js":8905,"./bo":11560,"./bo.js":11560,"./br":1278,"./br.js":1278,"./bs":80622,"./bs.js":80622,"./ca":2468,"./ca.js":2468,"./cs":5822,"./cs.js":5822,"./cv":50877,"./cv.js":50877,"./cy":47373,"./cy.js":47373,"./da":24780,"./da.js":24780,"./de":59740,"./de-at":60217,"./de-at.js":60217,"./de-ch":60894,"./de-ch.js":60894,"./de.js":59740,"./dv":5300,"./dv.js":5300,"./el":50837,"./el.js":50837,"./en-au":78348,"./en-au.js":78348,"./en-ca":77925,"./en-ca.js":77925,"./en-gb":22243,"./en-gb.js":22243,"./en-ie":46436,"./en-ie.js":46436,"./en-il":47207,"./en-il.js":47207,"./en-in":44175,"./en-in.js":44175,"./en-nz":76319,"./en-nz.js":76319,"./en-sg":31662,"./en-sg.js":31662,"./eo":92915,"./eo.js":92915,"./es":55655,"./es-do":55251,"./es-do.js":55251,"./es-mx":96112,"./es-mx.js":96112,"./es-us":71146,"./es-us.js":71146,"./es.js":55655,"./et":5603,"./et.js":5603,"./eu":77763,"./eu.js":77763,"./fa":76959,"./fa.js":76959,"./fi":11897,"./fi.js":11897,"./fil":42549,"./fil.js":42549,"./fo":94694,"./fo.js":94694,"./fr":94470,"./fr-ca":63049,"./fr-ca.js":63049,"./fr-ch":52330,"./fr-ch.js":52330,"./fr.js":94470,"./fy":5044,"./fy.js":5044,"./ga":29295,"./ga.js":29295,"./gd":2101,"./gd.js":2101,"./gl":38794,"./gl.js":38794,"./gom-deva":27884,"./gom-deva.js":27884,"./gom-latn":23168,"./gom-latn.js":23168,"./gu":95349,"./gu.js":95349,"./he":24206,"./he.js":24206,"./hi":30094,"./hi.js":30094,"./hr":30316,"./hr.js":30316,"./hu":22138,"./hu.js":22138,"./hy-am":11423,"./hy-am.js":11423,"./id":29218,"./id.js":29218,"./is":90135,"./is.js":90135,"./it":90626,"./it-ch":10150,"./it-ch.js":10150,"./it.js":90626,"./ja":39183,"./ja.js":39183,"./jv":24286,"./jv.js":24286,"./ka":12105,"./ka.js":12105,"./kk":47772,"./kk.js":47772,"./km":18758,"./km.js":18758,"./kn":79282,"./kn.js":79282,"./ko":33730,"./ko.js":33730,"./ku":1408,"./ku.js":1408,"./ky":33291,"./ky.js":33291,"./lb":36841,"./lb.js":36841,"./lo":55466,"./lo.js":55466,"./lt":57010,"./lt.js":57010,"./lv":37595,"./lv.js":37595,"./me":39861,"./me.js":39861,"./mi":35493,"./mi.js":35493,"./mk":95966,"./mk.js":95966,"./ml":87341,"./ml.js":87341,"./mn":5115,"./mn.js":5115,"./mr":10370,"./mr.js":10370,"./ms":9847,"./ms-my":41237,"./ms-my.js":41237,"./ms.js":9847,"./mt":72126,"./mt.js":72126,"./my":56165,"./my.js":56165,"./nb":64924,"./nb.js":64924,"./ne":16744,"./ne.js":16744,"./nl":93901,"./nl-be":59814,"./nl-be.js":59814,"./nl.js":93901,"./nn":83877,"./nn.js":83877,"./oc-lnc":92135,"./oc-lnc.js":92135,"./pa-in":15858,"./pa-in.js":15858,"./pl":64495,"./pl.js":64495,"./pt":89520,"./pt-br":57971,"./pt-br.js":57971,"./pt.js":89520,"./ro":96459,"./ro.js":96459,"./ru":21793,"./ru.js":21793,"./sd":40950,"./sd.js":40950,"./se":10490,"./se.js":10490,"./si":90124,"./si.js":90124,"./sk":64249,"./sk.js":64249,"./sl":14985,"./sl.js":14985,"./sq":51104,"./sq.js":51104,"./sr":49131,"./sr-cyrl":79915,"./sr-cyrl.js":79915,"./sr.js":49131,"./ss":85893,"./ss.js":85893,"./sv":98760,"./sv.js":98760,"./sw":91172,"./sw.js":91172,"./ta":27333,"./ta.js":27333,"./te":23110,"./te.js":23110,"./tet":52095,"./tet.js":52095,"./tg":27321,"./tg.js":27321,"./th":9041,"./th.js":9041,"./tk":19005,"./tk.js":19005,"./tl-ph":75768,"./tl-ph.js":75768,"./tlh":89444,"./tlh.js":89444,"./tr":72397,"./tr.js":72397,"./tzl":28254,"./tzl.js":28254,"./tzm":51106,"./tzm-latn":30699,"./tzm-latn.js":30699,"./tzm.js":51106,"./ug-cn":9288,"./ug-cn.js":9288,"./uk":67691,"./uk.js":67691,"./ur":13795,"./ur.js":13795,"./uz":6791,"./uz-latn":60588,"./uz-latn.js":60588,"./uz.js":6791,"./vi":65666,"./vi.js":65666,"./x-pseudo":14378,"./x-pseudo.js":14378,"./yo":75805,"./yo.js":75805,"./zh-cn":83839,"./zh-cn.js":83839,"./zh-hk":55726,"./zh-hk.js":55726,"./zh-mo":99807,"./zh-mo.js":99807,"./zh-tw":74152,"./zh-tw.js":74152};function i(t){var e=o(t);return a(e)}function o(t){if(!a.o(n,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return n[t]}i.keys=function(){return Object.keys(n)},i.resolve=o,t.exports=i,i.id=46700},8738:t=>{"use strict";t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC"},81490:t=>{"use strict";t.exports="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTYiIHdpZHRoPSIxNiI+CiAgPHBhdGggZD0iTTE0IDEyLjNMMTIuMyAxNCA4IDkuNyAzLjcgMTQgMiAxMi4zIDYuMyA4IDIgMy43IDMuNyAyIDggNi4zIDEyLjMgMiAxNCAzLjcgOS43IDh6Ii8+Cjwvc3ZnPgo="},90888:t=>{"use strict";t.exports="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTYiIHdpZHRoPSIxNiI+CiAgPHBhdGggZD0iTTE0IDEyLjNMMTIuMyAxNCA4IDkuNyAzLjcgMTQgMiAxMi4zIDYuMyA4IDIgMy43IDMuNyAyIDggNi4zIDEyLjMgMiAxNCAzLjcgOS43IDh6IiBzdHlsZT0iZmlsbC1vcGFjaXR5OjE7ZmlsbDojZmZmZmZmIi8+Cjwvc3ZnPgo="}},n={};function i(t){var e=n[t];if(void 0!==e)return e.exports;var o=n[t]={id:t,loaded:!1,exports:{}};return a[t].call(o.exports,o,o.exports,i),o.loaded=!0,o.exports}i.m=a,e=[],i.O=(t,a,n,o)=>{if(!a){var s=1/0;for(c=0;c<e.length;c++){a=e[c][0],n=e[c][1],o=e[c][2];for(var r=!0,l=0;l<a.length;l++)(!1&o||s>=o)&&Object.keys(i.O).every((t=>i.O[t](a[l])))?a.splice(l--,1):(r=!1,o<s&&(s=o));if(r){e.splice(c--,1);var d=n();void 0!==d&&(t=d)}}return t}o=o||0;for(var c=e.length;c>0&&e[c-1][2]>o;c--)e[c]=e[c-1];e[c]=[a,n,o]},i.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},i.d=(t,e)=>{for(var a in e)i.o(e,a)&&!i.o(t,a)&&Object.defineProperty(t,a,{enumerable:!0,get:e[a]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),i.j=4418,(()=>{i.b=document.baseURI||self.location.href;var t={4418:0};i.O.j=e=>0===t[e];var e=(e,a)=>{var n,o,s=a[0],r=a[1],l=a[2],d=0;if(s.some((e=>0!==t[e]))){for(n in r)i.o(r,n)&&(i.m[n]=r[n]);if(l)var c=l(i)}for(e&&e(a);d<s.length;d++)o=s[d],i.o(t,o)&&t[o]&&t[o][0](),t[o]=0;return i.O(c)},a=self.webpackChunknextcloud=self.webpackChunknextcloud||[];a.forEach(e.bind(null,0)),a.push=e.bind(null,a.push.bind(a))})(),i.nc=void 0;var o=i.O(void 0,[7874],(()=>i(71945)));o=i.O(o)})();
+//# sourceMappingURL=settings-vue-settings-personal-info.js.map?v=445880c59941764a9abd \ No newline at end of file
diff --git a/dist/settings-vue-settings-personal-info.js.map b/dist/settings-vue-settings-personal-info.js.map
index 7c5788f72de..00e0becfe30 100644
--- a/dist/settings-vue-settings-personal-info.js.map
+++ b/dist/settings-vue-settings-personal-info.js.map
@@ -1 +1 @@
-{"version":3,"file":"settings-vue-settings-personal-info.js?v=c3c6597eed6e57c37261","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue?0b38","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue?90b5","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue?02db","webpack:///nextcloud/apps/settings/src/constants/AccountPropertyConstants.js","webpack:///nextcloud/apps/settings/src/service/PersonalInfo/PersonalInfoService.js","webpack:///nextcloud/apps/settings/src/logger.js","webpack:///nextcloud/apps/settings/src/utils/handlers.js","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControl.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControl.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/FederationControl.vue?b9f2","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/FederationControl.vue?e342","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/FederationControl.vue?d068","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue?c843","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue?feed","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue?e65f","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/AvatarSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/AvatarSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/AvatarSection.vue?a960","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/AvatarSection.vue?5014","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/AvatarSection.vue?5282","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/DetailsSection.vue?08e9","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DetailsSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DetailsSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/DetailsSection.vue?e7aa","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/DetailsSection.vue?295f","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/DisplayNameSection.vue?3162","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/AccountPropertySection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/AccountPropertySection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/AccountPropertySection.vue?096a","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/AccountPropertySection.vue?ac46","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/AccountPropertySection.vue?d38d","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DisplayNameSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DisplayNameSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/DisplayNameSection.vue?bde5","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue?3dd6","webpack:///nextcloud/apps/settings/src/service/PersonalInfo/EmailService.js","webpack:///nextcloud/apps/settings/src/utils/validate.js","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/Email.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/Email.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/EmailSection/Email.vue?7a13","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/EmailSection/Email.vue?bd2c","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/EmailSection/Email.vue?04df","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue?b77b","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue?1258","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/PhoneSection.vue?8b50","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/PhoneSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/PhoneSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/PhoneSection.vue?d5e3","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LocationSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LocationSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LocationSection.vue?fdc7","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LocationSection.vue?414f","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/WebsiteSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/WebsiteSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/WebsiteSection.vue?897b","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/WebsiteSection.vue?4b20","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/TwitterSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/TwitterSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/TwitterSection.vue?7e82","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/TwitterSection.vue?8ae2","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/FediverseSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/FediverseSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/FediverseSection.vue?e202","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/FediverseSection.vue?4a92","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue?22ad","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue?6358","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue?94ab","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue?6762","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue?a350","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue?41aa","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LocaleSection/LocaleSection.vue?6463","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LocaleSection/Locale.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LocaleSection/Locale.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LocaleSection/Locale.vue?16dc","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LocaleSection/Locale.vue?9b6c","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LocaleSection/Locale.vue?8511","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LocaleSection/LocaleSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LocaleSection/LocaleSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LocaleSection/LocaleSection.vue?1e8d","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LocaleSection/LocaleSection.vue?fafb","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?f65d","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?fb42","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?7d4b","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?253f","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfileCheckbox.vue?9b34","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileCheckbox.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileCheckbox.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfileCheckbox.vue?7612","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue?2aa0","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue?240c","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue?564e","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue?accf","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue?c85f","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue?3f25","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/OrganisationSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/OrganisationSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/OrganisationSection.vue?5684","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/OrganisationSection.vue?adaf","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/RoleSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/RoleSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/RoleSection.vue?a7b4","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/RoleSection.vue?49db","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/HeadlineSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/HeadlineSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/HeadlineSection.vue?9d73","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/HeadlineSection.vue?d565","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/BiographySection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/BiographySection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/BiographySection.vue?a6b2","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/BiographySection.vue?7384","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue?d7f0","webpack:///nextcloud/apps/settings/src/service/ProfileService.js","webpack:///nextcloud/apps/settings/src/constants/ProfileConstants.js","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue?1509","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue?c222","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue?5e5d","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue?1d28","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue?7729","webpack:///nextcloud/apps/settings/src/main-personal-info.js","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/AvatarSection.vue?vue&type=style&index=0&id=022fd5d4&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DetailsSection.vue?vue&type=style&index=0&id=1ab46e68&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/Email.vue?vue&type=style&index=0&id=5ff85d38&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue?vue&type=style&index=0&id=46c7eb7e&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue?vue&type=style&index=0&id=5c847b3a&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue?vue&type=style&index=0&id=92685b76&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LocaleSection/Locale.vue?vue&type=style&index=0&id=1ac456dc&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LocaleSection/LocaleSection.vue?vue&type=style&index=0&id=84fca724&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?vue&type=style&index=0&id=1caba458&prod&lang=scss&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?vue&type=style&index=1&id=1caba458&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue?vue&type=style&index=0&id=61586aa5&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue?vue&type=style&index=0&id=cf64d964&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue?vue&type=style&index=0&id=a07dbf96&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue?vue&type=style&index=0&id=b13d20da&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/AccountPropertySection.vue?vue&type=style&index=0&id=6eb7d8e0&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControl.vue?vue&type=style&index=0&id=4ea07669&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue?vue&type=style&index=0&id=d426ed04&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue?vue&type=style&index=0&id=b43fcc0c&prod&lang=scss&scoped=true&","webpack:///nextcloud/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","<!--\n\t- @copyright 2021 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<NcActionButton :aria-label=\"isSupportedScope ? tooltip : tooltipDisabled\"\n\t\tclass=\"federation-actions__btn\"\n\t\t:class=\"{ 'federation-actions__btn--active': activeScope === name }\"\n\t\t:close-after-click=\"true\"\n\t\t:disabled=\"!isSupportedScope\"\n\t\t:icon=\"iconClass\"\n\t\t:title=\"isSupportedScope ? tooltip : tooltipDisabled\"\n\t\t@click.stop.prevent=\"updateScope\">\n\t\t{{ isSupportedScope ? tooltip : tooltipDisabled }}\n\t</NcActionButton>\n</template>\n\n<script>\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'\n\nexport default {\n\tname: 'FederationControlAction',\n\n\tcomponents: {\n\t\tNcActionButton,\n\t},\n\n\tprops: {\n\t\tactiveScope: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tdisplayName: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\thandleScopeChange: {\n\t\t\ttype: Function,\n\t\t\tdefault: () => {},\n\t\t},\n\t\ticonClass: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tisSupportedScope: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\ttooltipDisabled: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\ttooltip: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tmethods: {\n\t\tupdateScope() {\n\t\t\tthis.handleScopeChange(this.name)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\t.federation-actions__btn {\n\t\t&::v-deep p {\n\t\t\twidth: 150px !important;\n\t\t\tpadding: 8px 0 !important;\n\t\t\tcolor: var(--color-main-text) !important;\n\t\t\tfont-size: 12.8px !important;\n\t\t\tline-height: 1.5em !important;\n\t\t}\n\t}\n\n\t.federation-actions__btn--active {\n\t\tbackground-color: var(--color-primary-light) !important;\n\t\tbox-shadow: inset 2px 0 var(--color-primary) !important;\n\t}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FederationControlAction.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FederationControlAction.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FederationControlAction.vue?vue&type=style&index=0&id=d426ed04&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FederationControlAction.vue?vue&type=style&index=0&id=d426ed04&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FederationControlAction.vue?vue&type=template&id=d426ed04&scoped=true&\"\nimport script from \"./FederationControlAction.vue?vue&type=script&lang=js&\"\nexport * from \"./FederationControlAction.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FederationControlAction.vue?vue&type=style&index=0&id=d426ed04&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 \"d426ed04\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcActionButton',{staticClass:\"federation-actions__btn\",class:{ 'federation-actions__btn--active': _vm.activeScope === _vm.name },attrs:{\"aria-label\":_vm.isSupportedScope ? _vm.tooltip : _vm.tooltipDisabled,\"close-after-click\":true,\"disabled\":!_vm.isSupportedScope,\"icon\":_vm.iconClass,\"title\":_vm.isSupportedScope ? _vm.tooltip : _vm.tooltipDisabled},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.updateScope.apply(null, arguments)}}},[_vm._v(\"\\n\\t\"+_vm._s(_vm.isSupportedScope ? _vm.tooltip : _vm.tooltipDisabled)+\"\\n\")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/*\n * SYNC to be kept in sync with `lib/public/Accounts/IAccountManager.php`\n */\n\nimport { translate as t } from '@nextcloud/l10n'\n\n/** Enum of account properties */\nexport const ACCOUNT_PROPERTY_ENUM = Object.freeze({\n\tADDRESS: 'address',\n\tAVATAR: 'avatar',\n\tBIOGRAPHY: 'biography',\n\tDISPLAYNAME: 'displayname',\n\tEMAIL_COLLECTION: 'additional_mail',\n\tEMAIL: 'email',\n\tHEADLINE: 'headline',\n\tNOTIFICATION_EMAIL: 'notify_email',\n\tFEDIVERSE: 'fediverse',\n\tORGANISATION: 'organisation',\n\tPHONE: 'phone',\n\tPROFILE_ENABLED: 'profile_enabled',\n\tROLE: 'role',\n\tTWITTER: 'twitter',\n\tWEBSITE: 'website',\n})\n\n/** Enum of account properties to human readable account property names */\nexport const ACCOUNT_PROPERTY_READABLE_ENUM = Object.freeze({\n\tADDRESS: t('settings', 'Location'),\n\tAVATAR: t('settings', 'Profile picture'),\n\tBIOGRAPHY: t('settings', 'About'),\n\tDISPLAYNAME: t('settings', 'Full name'),\n\tEMAIL_COLLECTION: t('settings', 'Additional email'),\n\tEMAIL: t('settings', 'Email'),\n\tHEADLINE: t('settings', 'Headline'),\n\tORGANISATION: t('settings', 'Organisation'),\n\tPHONE: t('settings', 'Phone number'),\n\tPROFILE_ENABLED: t('settings', 'Profile'),\n\tROLE: t('settings', 'Role'),\n\tTWITTER: t('settings', 'Twitter'),\n\tFEDIVERSE: t('settings', 'Fediverse (e.g. Mastodon)'),\n\tWEBSITE: t('settings', 'Website'),\n})\n\nexport const NAME_READABLE_ENUM = Object.freeze({\n\t[ACCOUNT_PROPERTY_ENUM.ADDRESS]: ACCOUNT_PROPERTY_READABLE_ENUM.ADDRESS,\n\t[ACCOUNT_PROPERTY_ENUM.AVATAR]: ACCOUNT_PROPERTY_READABLE_ENUM.AVATAR,\n\t[ACCOUNT_PROPERTY_ENUM.BIOGRAPHY]: ACCOUNT_PROPERTY_READABLE_ENUM.BIOGRAPHY,\n\t[ACCOUNT_PROPERTY_ENUM.DISPLAYNAME]: ACCOUNT_PROPERTY_READABLE_ENUM.DISPLAYNAME,\n\t[ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION]: ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL_COLLECTION,\n\t[ACCOUNT_PROPERTY_ENUM.EMAIL]: ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL,\n\t[ACCOUNT_PROPERTY_ENUM.HEADLINE]: ACCOUNT_PROPERTY_READABLE_ENUM.HEADLINE,\n\t[ACCOUNT_PROPERTY_ENUM.ORGANISATION]: ACCOUNT_PROPERTY_READABLE_ENUM.ORGANISATION,\n\t[ACCOUNT_PROPERTY_ENUM.PHONE]: ACCOUNT_PROPERTY_READABLE_ENUM.PHONE,\n\t[ACCOUNT_PROPERTY_ENUM.PROFILE_ENABLED]: ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED,\n\t[ACCOUNT_PROPERTY_ENUM.ROLE]: ACCOUNT_PROPERTY_READABLE_ENUM.ROLE,\n\t[ACCOUNT_PROPERTY_ENUM.TWITTER]: ACCOUNT_PROPERTY_READABLE_ENUM.TWITTER,\n\t[ACCOUNT_PROPERTY_ENUM.FEDIVERSE]: ACCOUNT_PROPERTY_READABLE_ENUM.FEDIVERSE,\n\t[ACCOUNT_PROPERTY_ENUM.WEBSITE]: ACCOUNT_PROPERTY_READABLE_ENUM.WEBSITE,\n})\n\n/** Enum of profile specific sections to human readable names */\nexport const PROFILE_READABLE_ENUM = Object.freeze({\n\tPROFILE_VISIBILITY: t('settings', 'Profile visibility'),\n})\n\n/** Enum of readable account properties to account property keys used by the server */\nexport const PROPERTY_READABLE_KEYS_ENUM = Object.freeze({\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ADDRESS]: ACCOUNT_PROPERTY_ENUM.ADDRESS,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.AVATAR]: ACCOUNT_PROPERTY_ENUM.AVATAR,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.BIOGRAPHY]: ACCOUNT_PROPERTY_ENUM.BIOGRAPHY,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.DISPLAYNAME]: ACCOUNT_PROPERTY_ENUM.DISPLAYNAME,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL_COLLECTION]: ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL]: ACCOUNT_PROPERTY_ENUM.EMAIL,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.HEADLINE]: ACCOUNT_PROPERTY_ENUM.HEADLINE,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ORGANISATION]: ACCOUNT_PROPERTY_ENUM.ORGANISATION,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.PHONE]: ACCOUNT_PROPERTY_ENUM.PHONE,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED]: ACCOUNT_PROPERTY_ENUM.PROFILE_ENABLED,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ROLE]: ACCOUNT_PROPERTY_ENUM.ROLE,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.TWITTER]: ACCOUNT_PROPERTY_ENUM.TWITTER,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.FEDIVERSE]: ACCOUNT_PROPERTY_ENUM.FEDIVERSE,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.WEBSITE]: ACCOUNT_PROPERTY_ENUM.WEBSITE,\n})\n\n/**\n * Enum of account setting properties\n *\n * Account setting properties unlike account properties do not support scopes*\n */\nexport const ACCOUNT_SETTING_PROPERTY_ENUM = Object.freeze({\n\tLANGUAGE: 'language',\n\tLOCALE: 'locale',\n})\n\n/** Enum of account setting properties to human readable setting properties */\nexport const ACCOUNT_SETTING_PROPERTY_READABLE_ENUM = Object.freeze({\n\tLANGUAGE: t('settings', 'Language'),\n\tLOCALE: t('settings', 'Locale'),\n})\n\n/** Enum of scopes */\nexport const SCOPE_ENUM = Object.freeze({\n\tPRIVATE: 'v2-private',\n\tLOCAL: 'v2-local',\n\tFEDERATED: 'v2-federated',\n\tPUBLISHED: 'v2-published',\n})\n\n/** Enum of readable account properties to supported scopes */\nexport const PROPERTY_READABLE_SUPPORTED_SCOPES_ENUM = Object.freeze({\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ADDRESS]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.AVATAR]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.BIOGRAPHY]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.DISPLAYNAME]: [SCOPE_ENUM.LOCAL],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL_COLLECTION]: [SCOPE_ENUM.LOCAL],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL]: [SCOPE_ENUM.LOCAL],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.HEADLINE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ORGANISATION]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.PHONE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ROLE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.TWITTER]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.FEDIVERSE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.WEBSITE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n})\n\n/** List of readable account properties which aren't published to the lookup server */\nexport const UNPUBLISHED_READABLE_PROPERTIES = Object.freeze([\n\tACCOUNT_PROPERTY_READABLE_ENUM.BIOGRAPHY,\n\tACCOUNT_PROPERTY_READABLE_ENUM.HEADLINE,\n\tACCOUNT_PROPERTY_READABLE_ENUM.ORGANISATION,\n\tACCOUNT_PROPERTY_READABLE_ENUM.ROLE,\n])\n\n/** Scope suffix */\nexport const SCOPE_SUFFIX = 'Scope'\n\n/**\n * Enum of scope names to properties\n *\n * Used for federation control*\n */\nexport const SCOPE_PROPERTY_ENUM = Object.freeze({\n\t[SCOPE_ENUM.PRIVATE]: {\n\t\tname: SCOPE_ENUM.PRIVATE,\n\t\tdisplayName: t('settings', 'Private'),\n\t\ttooltip: t('settings', 'Only visible to people matched via phone number integration through Talk on mobile'),\n\t\ttooltipDisabled: t('settings', 'Not available as this property is required for core functionality including file sharing and calendar invitations'),\n\t\ticonClass: 'icon-phone',\n\t},\n\t[SCOPE_ENUM.LOCAL]: {\n\t\tname: SCOPE_ENUM.LOCAL,\n\t\tdisplayName: t('settings', 'Local'),\n\t\ttooltip: t('settings', 'Only visible to people on this instance and guests'),\n\t\t// tooltipDisabled is not required here as this scope is supported by all account properties\n\t\ticonClass: 'icon-password',\n\t},\n\t[SCOPE_ENUM.FEDERATED]: {\n\t\tname: SCOPE_ENUM.FEDERATED,\n\t\tdisplayName: t('settings', 'Federated'),\n\t\ttooltip: t('settings', 'Only synchronize to trusted servers'),\n\t\ttooltipDisabled: t('settings', 'Not available as federation has been disabled for your account, contact your system administrator if you have any questions'),\n\t\ticonClass: 'icon-contacts-dark',\n\t},\n\t[SCOPE_ENUM.PUBLISHED]: {\n\t\tname: SCOPE_ENUM.PUBLISHED,\n\t\tdisplayName: t('settings', 'Published'),\n\t\ttooltip: t('settings', 'Synchronize to trusted servers and the global and public address book'),\n\t\ttooltipDisabled: t('settings', 'Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions'),\n\t\ticonClass: 'icon-link',\n\t},\n})\n\n/** Default additional email scope */\nexport const DEFAULT_ADDITIONAL_EMAIL_SCOPE = SCOPE_ENUM.LOCAL\n\n/** Enum of verification constants, according to IAccountManager */\nexport const VERIFICATION_ENUM = Object.freeze({\n\tNOT_VERIFIED: 0,\n\tVERIFICATION_IN_PROGRESS: 1,\n\tVERIFIED: 2,\n})\n\n/**\n * Email validation regex\n *\n * Sourced from https://github.com/mpyw/FILTER_VALIDATE_EMAIL.js/blob/71e62ca48841d2246a1b531e7e84f5a01f15e615/src/regexp/ascii.ts*\n */\n// eslint-disable-next-line no-control-regex\nexport const VALIDATE_EMAIL_REGEX = /^(?!(?:(?:\\x22?\\x5C[\\x00-\\x7E]\\x22?)|(?:\\x22?[^\\x5C\\x22]\\x22?)){255,})(?!(?:(?:\\x22?\\x5C[\\x00-\\x7E]\\x22?)|(?:\\x22?[^\\x5C\\x22]\\x22?)){65,}@)(?:(?:[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2F-\\x39\\x3D\\x3F\\x5E-\\x7E]+)|(?:\\x22(?:[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21\\x23-\\x5B\\x5D-\\x7F]|(?:\\x5C[\\x00-\\x7F]))*\\x22))(?:\\.(?:(?:[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2F-\\x39\\x3D\\x3F\\x5E-\\x7E]+)|(?:\\x22(?:[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21\\x23-\\x5B\\x5D-\\x7F]|(?:\\x5C[\\x00-\\x7F]))*\\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-+[a-z0-9]+)*\\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-+[a-z0-9]+)*)|(?:\\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\\]))$/i\n","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { confirmPassword } from '@nextcloud/password-confirmation'\nimport '@nextcloud/password-confirmation/dist/style.css'\n\nimport { SCOPE_SUFFIX } from '../../constants/AccountPropertyConstants.js'\n\n/**\n * Save the primary account property value for the user\n *\n * @param {string} accountProperty the account property\n * @param {string|boolean} value the primary value\n * @return {object}\n */\nexport const savePrimaryAccountProperty = async (accountProperty, value) => {\n\t// TODO allow boolean values on backend route handler\n\t// Convert boolean to string for compatibility\n\tif (typeof value === 'boolean') {\n\t\tvalue = value ? '1' : '0'\n\t}\n\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: accountProperty,\n\t\tvalue,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save the federation scope of the primary account property for the user\n *\n * @param {string} accountProperty the account property\n * @param {string} scope the federation scope\n * @return {object}\n */\nexport const savePrimaryAccountPropertyScope = async (accountProperty, scope) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: `${accountProperty}${SCOPE_SUFFIX}`,\n\t\tvalue: scope,\n\t})\n\n\treturn res.data\n}\n","/**\n * @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('settings')\n\t.detectUser()\n\t.build()\n","/**\n * @copyright 2023 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { showError } from '@nextcloud/dialogs'\nimport { translate as t } from '@nextcloud/l10n'\n\nimport logger from '../logger.js'\n\n/**\n * @param {import('axios').AxiosError} error the error\n * @param {string?} message the message to display\n */\nexport const handleError = (error, message) => {\n\tlet fullMessage = ''\n\n\tif (message) {\n\t\tfullMessage += message\n\t}\n\n\tif (error.response?.status === 429) {\n\t\tif (fullMessage) {\n\t\t\tfullMessage += '\\n'\n\t\t}\n\t\tfullMessage += t('settings', 'There were too many requests from your network. Retry later or contact your administrator if this is an error.')\n\t}\n\n\tshowError(fullMessage)\n\tlogger.error(fullMessage || t('Error'), error)\n}\n","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<NcActions :class=\"{ 'federation-actions': !additional, 'federation-actions--additional': additional }\"\n\t\t:aria-label=\"ariaLabel\"\n\t\t:default-icon=\"scopeIcon\"\n\t\t:disabled=\"disabled\">\n\t\t<FederationControlAction v-for=\"federationScope in federationScopes\"\n\t\t\t:key=\"federationScope.name\"\n\t\t\t:active-scope=\"scope\"\n\t\t\t:display-name=\"federationScope.displayName\"\n\t\t\t:handle-scope-change=\"changeScope\"\n\t\t\t:icon-class=\"federationScope.iconClass\"\n\t\t\t:is-supported-scope=\"supportedScopes.includes(federationScope.name)\"\n\t\t\t:name=\"federationScope.name\"\n\t\t\t:tooltip-disabled=\"federationScope.tooltipDisabled\"\n\t\t\t:tooltip=\"federationScope.tooltip\"\n\t\t\t:aria-label=\"federationScope.tooltip\" />\n\t</NcActions>\n</template>\n\n<script>\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions.js'\nimport { loadState } from '@nextcloud/initial-state'\n\nimport FederationControlAction from './FederationControlAction.vue'\n\nimport {\n\tACCOUNT_PROPERTY_READABLE_ENUM,\n\tACCOUNT_SETTING_PROPERTY_READABLE_ENUM,\n\tPROFILE_READABLE_ENUM,\n\tPROPERTY_READABLE_KEYS_ENUM,\n\tPROPERTY_READABLE_SUPPORTED_SCOPES_ENUM,\n\tSCOPE_ENUM, SCOPE_PROPERTY_ENUM,\n\tUNPUBLISHED_READABLE_PROPERTIES,\n} from '../../../constants/AccountPropertyConstants.js'\nimport { savePrimaryAccountPropertyScope } from '../../../service/PersonalInfo/PersonalInfoService.js'\nimport { handleError } from '../../../utils/handlers.js'\n\nconst {\n\tfederationEnabled,\n\tlookupServerUploadEnabled,\n} = loadState('settings', 'accountParameters', {})\n\nexport default {\n\tname: 'FederationControl',\n\n\tcomponents: {\n\t\tNcActions,\n\t\tFederationControlAction,\n\t},\n\n\tprops: {\n\t\treadable: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t\tvalidator: (value) => Object.values(ACCOUNT_PROPERTY_READABLE_ENUM).includes(value) || Object.values(ACCOUNT_SETTING_PROPERTY_READABLE_ENUM).includes(value) || value === PROFILE_READABLE_ENUM.PROFILE_VISIBILITY,\n\t\t},\n\t\tadditional: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tadditionalValue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\thandleAdditionalScopeChange: {\n\t\t\ttype: Function,\n\t\t\tdefault: null,\n\t\t},\n\t\tscope: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\treadableLowerCase: this.readable.toLocaleLowerCase(),\n\t\t\tinitialScope: this.scope,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tariaLabel() {\n\t\t\treturn t('settings', 'Change scope level of {property}, current scope is {scope}', { property: this.readableLowerCase, scope: this.scopeDisplayNameLowerCase })\n\t\t},\n\n\t\tscopeDisplayNameLowerCase() {\n\t\t\treturn SCOPE_PROPERTY_ENUM[this.scope].displayName.toLocaleLowerCase()\n\t\t},\n\n\t\tscopeIcon() {\n\t\t\treturn SCOPE_PROPERTY_ENUM[this.scope].iconClass\n\t\t},\n\n\t\tfederationScopes() {\n\t\t\treturn Object.values(SCOPE_PROPERTY_ENUM)\n\t\t},\n\n\t\tsupportedScopes() {\n\t\t\tconst scopes = PROPERTY_READABLE_SUPPORTED_SCOPES_ENUM[this.readable]\n\n\t\t\tif (UNPUBLISHED_READABLE_PROPERTIES.includes(this.readable)) {\n\t\t\t\treturn scopes\n\t\t\t}\n\n\t\t\tif (federationEnabled) {\n\t\t\t\tscopes.push(SCOPE_ENUM.FEDERATED)\n\t\t\t}\n\n\t\t\tif (lookupServerUploadEnabled) {\n\t\t\t\tscopes.push(SCOPE_ENUM.PUBLISHED)\n\t\t\t}\n\n\t\t\treturn scopes\n\t\t},\n\t},\n\n\tmethods: {\n\t\tasync changeScope(scope) {\n\t\t\tthis.$emit('update:scope', scope)\n\n\t\t\tif (!this.additional) {\n\t\t\t\tawait this.updatePrimaryScope(scope)\n\t\t\t} else {\n\t\t\t\tawait this.updateAdditionalScope(scope)\n\t\t\t}\n\t\t},\n\n\t\tasync updatePrimaryScope(scope) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountPropertyScope(PROPERTY_READABLE_KEYS_ENUM[this.readable], scope)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tscope,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update federation scope of the primary {property}', { property: this.readableLowerCase }),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\tasync updateAdditionalScope(scope) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await this.handleAdditionalScopeChange(this.additionalValue, scope)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tscope,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update federation scope of additional {property}', { property: this.readableLowerCase }),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ scope, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\tthis.initialScope = scope\n\t\t\t} else {\n\t\t\t\tthis.$emit('update:scope', this.initialScope)\n\t\t\t\thandleError(error, errorMessage)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\t.federation-actions,\n\t.federation-actions--additional {\n\t\topacity: 0.4 !important;\n\n\t\t&:hover,\n\t\t&:focus,\n\t\t&:active {\n\t\t\topacity: 0.8 !important;\n\t\t}\n\t}\n\n\t.federation-actions--additional {\n\t\t&::v-deep button {\n\t\t\t// TODO remove this hack\n\t\t\tpadding-bottom: 7px;\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t}\n\t}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FederationControl.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FederationControl.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FederationControl.vue?vue&type=style&index=0&id=4ea07669&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FederationControl.vue?vue&type=style&index=0&id=4ea07669&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FederationControl.vue?vue&type=template&id=4ea07669&scoped=true&\"\nimport script from \"./FederationControl.vue?vue&type=script&lang=js&\"\nexport * from \"./FederationControl.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FederationControl.vue?vue&type=style&index=0&id=4ea07669&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4ea07669\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcActions',{class:{ 'federation-actions': !_vm.additional, 'federation-actions--additional': _vm.additional },attrs:{\"aria-label\":_vm.ariaLabel,\"default-icon\":_vm.scopeIcon,\"disabled\":_vm.disabled}},_vm._l((_vm.federationScopes),function(federationScope){return _c('FederationControlAction',{key:federationScope.name,attrs:{\"active-scope\":_vm.scope,\"display-name\":federationScope.displayName,\"handle-scope-change\":_vm.changeScope,\"icon-class\":federationScope.iconClass,\"is-supported-scope\":_vm.supportedScopes.includes(federationScope.name),\"name\":federationScope.name,\"tooltip-disabled\":federationScope.tooltipDisabled,\"tooltip\":federationScope.tooltip,\"aria-label\":federationScope.tooltip}})}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeaderBar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeaderBar.vue?vue&type=script&lang=js&\"","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<component :is=\"isHeading ? `h3` : `div`\" class=\"headerbar-label\" :class=\"{ 'setting-property': isSettingProperty, 'profile-property': isProfileProperty }\">\n\t\t<span v-if=\"isHeading\">\n\t\t\t<!-- Already translated as required by prop validator -->\n\t\t\t{{ readable }}\n\t\t</span>\n\t\t<label v-else :for=\"inputId\">\n\t\t\t<!-- Already translated as required by prop validator -->\n\t\t\t{{ readable }}\n\t\t</label>\n\n\t\t<template v-if=\"scope\">\n\t\t\t<FederationControl class=\"federation-control\"\n\t\t\t\t:readable=\"readable\"\n\t\t\t\t:scope.sync=\"localScope\"\n\t\t\t\t@update:scope=\"onScopeChange\" />\n\t\t</template>\n\n\t\t<template v-if=\"isEditable && isMultiValueSupported\">\n\t\t\t<NcButton type=\"tertiary\"\n\t\t\t\t:disabled=\"!isValidSection\"\n\t\t\t\t:aria-label=\"t('settings', 'Add additional email')\"\n\t\t\t\t@click.stop.prevent=\"onAddAdditional\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Plus :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\t{{ t('settings', 'Add') }}\n\t\t\t</NcButton>\n\t\t</template>\n\t</component>\n</template>\n\n<script>\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport Plus from 'vue-material-design-icons/Plus.vue'\n\nimport FederationControl from './FederationControl.vue'\n\nimport {\n\tACCOUNT_PROPERTY_READABLE_ENUM,\n\tPROFILE_READABLE_ENUM,\n} from '../../../constants/AccountPropertyConstants.js'\n\nexport default {\n\tname: 'HeaderBar',\n\n\tcomponents: {\n\t\tFederationControl,\n\t\tNcButton,\n\t\tPlus,\n\t},\n\n\tprops: {\n\t\tscope: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\treadable: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tinputId: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\tisEditable: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tisMultiValueSupported: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tisValidSection: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tisHeading: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tlocalScope: this.scope,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisProfileProperty() {\n\t\t\treturn this.readable === ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED\n\t\t},\n\n\t\tisSettingProperty() {\n\t\t\treturn !Object.values(ACCOUNT_PROPERTY_READABLE_ENUM).includes(this.readable) && !Object.values(PROFILE_READABLE_ENUM).includes(this.readable)\n\t\t},\n\t},\n\n\tmethods: {\n\t\tonAddAdditional() {\n\t\t\tthis.$emit('add-additional')\n\t\t},\n\n\t\tonScopeChange(scope) {\n\t\t\tthis.$emit('update:scope', scope)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\t.headerbar-label {\n\t\tfont-weight: normal;\n\t\tdisplay: inline-flex;\n\t\twidth: 100%;\n\t\tmargin: 12px 0 0 0;\n\t\tgap: 8px;\n\t\talign-items: center;\n\t\tfont-size: 16px;\n\t\tcolor: var(--color-text-light);\n\n\t\t&.profile-property {\n\t\t\theight: 38px;\n\t\t}\n\n\t\t&.setting-property {\n\t\t\theight: 44px;\n\t\t}\n\n\t\tlabel {\n\t\t\tcursor: pointer;\n\t\t}\n\t}\n\n\t.federation-control {\n\t\tmargin: 0;\n\t}\n\n\t.button-vue {\n\t\tmargin: 0 0 0 auto !important;\n\t}\n</style>\n","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeaderBar.vue?vue&type=style&index=0&id=b43fcc0c&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeaderBar.vue?vue&type=style&index=0&id=b43fcc0c&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./HeaderBar.vue?vue&type=template&id=b43fcc0c&scoped=true&\"\nimport script from \"./HeaderBar.vue?vue&type=script&lang=js&\"\nexport * from \"./HeaderBar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./HeaderBar.vue?vue&type=style&index=0&id=b43fcc0c&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b43fcc0c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c(_vm.isHeading ? `h3` : `div`,{tag:\"component\",staticClass:\"headerbar-label\",class:{ 'setting-property': _vm.isSettingProperty, 'profile-property': _vm.isProfileProperty }},[(_vm.isHeading)?_c('span',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.readable)+\"\\n\\t\")]):_c('label',{attrs:{\"for\":_vm.inputId}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.readable)+\"\\n\\t\")]),_vm._v(\" \"),(_vm.scope)?[_c('FederationControl',{staticClass:\"federation-control\",attrs:{\"readable\":_vm.readable,\"scope\":_vm.localScope},on:{\"update:scope\":[function($event){_vm.localScope=$event},_vm.onScopeChange]}})]:_vm._e(),_vm._v(\" \"),(_vm.isEditable && _vm.isMultiValueSupported)?[_c('NcButton',{attrs:{\"type\":\"tertiary\",\"disabled\":!_vm.isValidSection,\"aria-label\":_vm.t('settings', 'Add additional email')},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.onAddAdditional.apply(null, arguments)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Plus',{attrs:{\"size\":20}})]},proxy:true}],null,false,32235154)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Add'))+\"\\n\\t\\t\")])]:_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section id=\"vue-avatar-section\">\n\t\t<h3 class=\"hidden-visually\"> {{ t('settings', 'Your profile information') }} </h3>\n\t\t<HeaderBar :input-id=\"avatarChangeSupported ? inputId : null\"\n\t\t\t:readable=\"avatar.readable\"\n\t\t\t:scope.sync=\"avatar.scope\" />\n\n\t\t<div v-if=\"!showCropper\" class=\"avatar__container\">\n\t\t\t<div class=\"avatar__preview\">\n\t\t\t\t<NcAvatar v-if=\"!loading\"\n\t\t\t\t\t:user=\"userId\"\n\t\t\t\t\t:aria-label=\"t('settings', 'Your profile picture')\"\n\t\t\t\t\t:disabled-menu=\"true\"\n\t\t\t\t\t:disabled-tooltip=\"true\"\n\t\t\t\t\t:show-user-status=\"false\"\n\t\t\t\t\t:size=\"180\"\n\t\t\t\t\t:key=\"version\" />\n\t\t\t\t<div v-else class=\"icon-loading\" />\n\t\t\t</div>\n\t\t\t<template v-if=\"avatarChangeSupported\">\n\t\t\t\t<div class=\"avatar__buttons\">\n\t\t\t\t\t<NcButton :aria-label=\"t('settings', 'Upload profile picture')\"\n\t\t\t\t\t\t@click=\"activateLocalFilePicker\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<Upload :size=\"20\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</NcButton>\n\t\t\t\t\t<NcButton :aria-label=\"t('settings', 'Choose profile picture from Files')\"\n\t\t\t\t\t\t@click=\"openFilePicker\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<Folder :size=\"20\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</NcButton>\n\t\t\t\t\t<NcButton v-if=\"!isGenerated\"\n\t\t\t\t\t\t:aria-label=\"t('settings', 'Remove profile picture')\"\n\t\t\t\t\t\t@click=\"removeAvatar\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<Delete :size=\"20\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</NcButton>\n\t\t\t\t</div>\n\t\t\t\t<span>{{ t('settings', 'The file must be a PNG or JPG') }}</span>\n\t\t\t\t<input ref=\"input\"\n\t\t\t\t\t:id=\"inputId\"\n\t\t\t\t\ttype=\"file\"\n\t\t\t\t\t:accept=\"validMimeTypes.join(',')\"\n\t\t\t\t\t@change=\"onChange\">\n\t\t\t</template>\n\t\t\t<span v-else>\n\t\t\t\t{{ t('settings', 'Picture provided by original account') }}\n\t\t\t</span>\n\t\t</div>\n\n\t\t<!-- Use v-show to ensure early cropper ref availability -->\n\t\t<div v-show=\"showCropper\" class=\"avatar__container\">\n\t\t\t<VueCropper ref=\"cropper\"\n\t\t\t\tclass=\"avatar__cropper\"\n\t\t\t\tv-bind=\"cropperOptions\" />\n\t\t\t<div class=\"avatar__cropper-buttons\">\n\t\t\t\t<NcButton @click=\"cancel\">\n\t\t\t\t\t{{ t('settings', 'Cancel') }}\n\t\t\t\t</NcButton>\n\t\t\t\t<NcButton type=\"primary\"\n\t\t\t\t\t@click=\"saveAvatar\">\n\t\t\t\t\t{{ t('settings', 'Set as profile picture') }}\n\t\t\t\t</NcButton>\n\t\t\t</div>\n\t\t\t<span>{{ t('settings', 'Please note that it can take up to 24 hours for your profile picture to be updated everywhere.') }}</span>\n\t\t</div>\n\t</section>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getFilePickerBuilder, showError } from '@nextcloud/dialogs'\nimport { emit, subscribe, unsubscribe } from '@nextcloud/event-bus'\n\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport VueCropper from 'vue-cropperjs'\n// eslint-disable-next-line n/no-extraneous-import\nimport 'cropperjs/dist/cropper.css'\n\nimport Upload from 'vue-material-design-icons/Upload.vue'\nimport Folder from 'vue-material-design-icons/Folder.vue'\nimport Delete from 'vue-material-design-icons/Delete.vue'\n\nimport HeaderBar from './shared/HeaderBar.vue'\nimport { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js'\n\nconst { avatar } = loadState('settings', 'personalInfoParameters', {})\nconst { avatarChangeSupported } = loadState('settings', 'accountParameters', {})\n\nconst VALID_MIME_TYPES = ['image/png', 'image/jpeg']\n\nconst picker = getFilePickerBuilder(t('settings', 'Choose your profile picture'))\n\t.setMultiSelect(false)\n\t.setMimeTypeFilter(VALID_MIME_TYPES)\n\t.setModal(true)\n\t.setType(1)\n\t.allowDirectories(false)\n\t.build()\n\nexport default {\n\tname: 'AvatarSection',\n\n\tcomponents: {\n\t\tDelete,\n\t\tFolder,\n\t\tHeaderBar,\n\t\tNcAvatar,\n\t\tNcButton,\n\t\tUpload,\n\t\tVueCropper,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tavatar: { ...avatar, readable: NAME_READABLE_ENUM[avatar.name] },\n\t\t\tavatarChangeSupported,\n\t\t\tshowCropper: false,\n\t\t\tloading: false,\n\t\t\tuserId: getCurrentUser().uid,\n\t\t\tdisplayName: getCurrentUser().displayName,\n\t\t\tversion: oc_userconfig.avatar.version,\n\t\t\tisGenerated: oc_userconfig.avatar.generated,\n\t\t\tvalidMimeTypes: VALID_MIME_TYPES,\n\t\t\tcropperOptions: {\n\t\t\t\taspectRatio: 1 / 1,\n\t\t\t\tviewMode: 1,\n\t\t\t\tguides: false,\n\t\t\t\tcenter: false,\n\t\t\t\thighlight: false,\n\t\t\t\tautoCropArea: 1,\n\t\t\t\tminContainerWidth: 300,\n\t\t\t\tminContainerHeight: 300,\n\t\t\t},\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tinputId() {\n\t\t\treturn `account-property-${this.avatar.name}`\n\t\t},\n\t},\n\n\tcreated() {\n\t\tsubscribe('settings:display-name:updated', this.handleDisplayNameUpdate)\n\t},\n\n\tbeforeDestroy() {\n\t\tunsubscribe('settings:display-name:updated', this.handleDisplayNameUpdate)\n\t},\n\n\tmethods: {\n\t\tactivateLocalFilePicker() {\n\t\t\t// Set to null so that selecting the same file will trigger the change event\n\t\t\tthis.$refs.input.value = null\n\t\t\tthis.$refs.input.click()\n\t\t},\n\n\t\tonChange(e) {\n\t\t\tthis.loading = true\n\t\t\tconst file = e.target.files[0]\n\t\t\tif (!this.validMimeTypes.includes(file.type)) {\n\t\t\t\tshowError(t('settings', 'Please select a valid png or jpg file'))\n\t\t\t\tthis.cancel()\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst reader = new FileReader()\n\t\t\treader.onload = (e) => {\n\t\t\t\tthis.$refs.cropper.replace(e.target.result)\n\t\t\t\tthis.showCropper = true\n\t\t\t}\n\t\t\treader.readAsDataURL(file)\n\t\t},\n\n\t\tasync openFilePicker() {\n\t\t\tconst path = await picker.pick()\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tconst { data } = await axios.post(generateUrl('/avatar'), { path })\n\t\t\t\tif (data.status === 'success') {\n\t\t\t\t\tthis.handleAvatarUpdate(false)\n\t\t\t\t} else if (data.data === 'notsquare') {\n\t\t\t\t\tconst tempAvatar = generateUrl('/avatar/tmp') + '?requesttoken=' + encodeURIComponent(OC.requestToken) + '#' + Math.floor(Math.random() * 1000)\n\t\t\t\t\tthis.$refs.cropper.replace(tempAvatar)\n\t\t\t\t\tthis.showCropper = true\n\t\t\t\t} else {\n\t\t\t\t\tshowError(data.data.message)\n\t\t\t\t\tthis.cancel()\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tshowError(t('settings', 'Error setting profile picture'))\n\t\t\t\tthis.cancel()\n\t\t\t}\n\t\t},\n\n\t\tsaveAvatar() {\n\t\t\tthis.showCropper = false\n\t\t\tthis.loading = true\n\n\t\t\tconst canvasData = this.$refs.cropper.getCroppedCanvas()\n\t\t\tconst scaleFactor = canvasData.width > 512 ? 512 / canvasData.width : 1\n\n\t\t\tthis.$refs.cropper.scale(scaleFactor, scaleFactor).getCroppedCanvas().toBlob(async (blob) => {\n\t\t\t\tif (blob === null) {\n\t\t\t\t\tshowError(t('settings', 'Error cropping profile picture'))\n\t\t\t\t\tthis.cancel()\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tconst formData = new FormData()\n\t\t\t\tformData.append('files[]', blob)\n\t\t\t\ttry {\n\t\t\t\t\tawait axios.post(generateUrl('/avatar'), formData)\n\t\t\t\t\tthis.handleAvatarUpdate(false)\n\t\t\t\t} catch (e) {\n\t\t\t\t\tshowError(t('settings', 'Error saving profile picture'))\n\t\t\t\t\tthis.handleAvatarUpdate(this.isGenerated)\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\n\t\tasync removeAvatar() {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tawait axios.delete(generateUrl('/avatar'))\n\t\t\t\tthis.handleAvatarUpdate(true)\n\t\t\t} catch (e) {\n\t\t\t\tshowError(t('settings', 'Error removing profile picture'))\n\t\t\t\tthis.handleAvatarUpdate(this.isGenerated)\n\t\t\t}\n\t\t},\n\n\t\tcancel() {\n\t\t\tthis.showCropper = false\n\t\t\tthis.loading = false\n\t\t},\n\n\t\thandleAvatarUpdate(isGenerated) {\n\t\t\t// Update the avatar version so that avatar update handlers refresh correctly\n\t\t\tthis.version = oc_userconfig.avatar.version = Date.now()\n\t\t\tthis.isGenerated = oc_userconfig.avatar.generated = isGenerated\n\t\t\tthis.loading = false\n\t\t\temit('settings:avatar:updated', oc_userconfig.avatar.version)\n\t\t},\n\n\t\thandleDisplayNameUpdate() {\n\t\t\tthis.version = oc_userconfig.avatar.version\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tgrid-row: 1/3;\n}\n.avatar {\n\t&__container {\n\t\tmargin: 0 auto;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tgap: 16px 0;\n\t\twidth: 300px;\n\n\t\tspan {\n\t\t\tcolor: var(--color-text-lighter);\n\t\t}\n\t}\n\n\t&__preview {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\twidth: 180px;\n\t\theight: 180px;\n\t}\n\n\t&__buttons {\n\t\tdisplay: flex;\n\t\tgap: 0 10px;\n\t}\n\n\t&__cropper {\n\t\twidth: 300px;\n\t\theight: 300px;\n\t\toverflow: hidden;\n\n\t\t&-buttons {\n\t\t\twidth: 100%;\n\t\t\tdisplay: flex;\n\t\t\tjustify-content: space-between;\n\t\t}\n\n\t\t&::v-deep .cropper-view-box {\n\t\t\tborder-radius: 50%;\n\t\t}\n\t}\n}\n\ninput[type=\"file\"] {\n\tdisplay: none;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvatarSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvatarSection.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvatarSection.vue?vue&type=style&index=0&id=022fd5d4&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvatarSection.vue?vue&type=style&index=0&id=022fd5d4&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AvatarSection.vue?vue&type=template&id=022fd5d4&scoped=true&\"\nimport script from \"./AvatarSection.vue?vue&type=script&lang=js&\"\nexport * from \"./AvatarSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AvatarSection.vue?vue&type=style&index=0&id=022fd5d4&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"022fd5d4\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',{attrs:{\"id\":\"vue-avatar-section\"}},[_c('h3',{staticClass:\"hidden-visually\"},[_vm._v(\" \"+_vm._s(_vm.t('settings', 'Your profile information'))+\" \")]),_vm._v(\" \"),_c('HeaderBar',{attrs:{\"input-id\":_vm.avatarChangeSupported ? _vm.inputId : null,\"readable\":_vm.avatar.readable,\"scope\":_vm.avatar.scope},on:{\"update:scope\":function($event){return _vm.$set(_vm.avatar, \"scope\", $event)}}}),_vm._v(\" \"),(!_vm.showCropper)?_c('div',{staticClass:\"avatar__container\"},[_c('div',{staticClass:\"avatar__preview\"},[(!_vm.loading)?_c('NcAvatar',{key:_vm.version,attrs:{\"user\":_vm.userId,\"aria-label\":_vm.t('settings', 'Your profile picture'),\"disabled-menu\":true,\"disabled-tooltip\":true,\"show-user-status\":false,\"size\":180}}):_c('div',{staticClass:\"icon-loading\"})],1),_vm._v(\" \"),(_vm.avatarChangeSupported)?[_c('div',{staticClass:\"avatar__buttons\"},[_c('NcButton',{attrs:{\"aria-label\":_vm.t('settings', 'Upload profile picture')},on:{\"click\":_vm.activateLocalFilePicker},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Upload',{attrs:{\"size\":20}})]},proxy:true}],null,false,1329850251)}),_vm._v(\" \"),_c('NcButton',{attrs:{\"aria-label\":_vm.t('settings', 'Choose profile picture from Files')},on:{\"click\":_vm.openFilePicker},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Folder',{attrs:{\"size\":20}})]},proxy:true}],null,false,4270628382)}),_vm._v(\" \"),(!_vm.isGenerated)?_c('NcButton',{attrs:{\"aria-label\":_vm.t('settings', 'Remove profile picture')},on:{\"click\":_vm.removeAvatar},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Delete',{attrs:{\"size\":20}})]},proxy:true}],null,false,2705356561)}):_vm._e()],1),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.t('settings', 'The file must be a PNG or JPG')))]),_vm._v(\" \"),_c('input',{ref:\"input\",attrs:{\"id\":_vm.inputId,\"type\":\"file\",\"accept\":_vm.validMimeTypes.join(',')},on:{\"change\":_vm.onChange}})]:_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Picture provided by original account'))+\"\\n\\t\\t\")])],2):_vm._e(),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showCropper),expression:\"showCropper\"}],staticClass:\"avatar__container\"},[_c('VueCropper',_vm._b({ref:\"cropper\",staticClass:\"avatar__cropper\"},'VueCropper',_vm.cropperOptions,false)),_vm._v(\" \"),_c('div',{staticClass:\"avatar__cropper-buttons\"},[_c('NcButton',{on:{\"click\":_vm.cancel}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Cancel'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcButton',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.saveAvatar}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Set as profile picture'))+\"\\n\\t\\t\\t\")])],1),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Please note that it can take up to 24 hours for your profile picture to be updated everywhere.')))])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',[_c('HeaderBar',{attrs:{\"is-heading\":true,\"readable\":_vm.t('settings', 'Details')}}),_vm._v(\" \"),_c('div',{staticClass:\"details\"},[_c('div',{staticClass:\"details__groups\"},[_c('Account',{attrs:{\"size\":20}}),_vm._v(\" \"),_c('div',{staticClass:\"details__groups-info\"},[_c('p',[_vm._v(_vm._s(_vm.t('settings', 'You are a member of the following groups:')))]),_vm._v(\" \"),_c('p',{staticClass:\"details__groups-list\"},[_vm._v(_vm._s(_vm.groups.join(', ')))])])],1),_vm._v(\" \"),_c('div',{staticClass:\"details__quota\"},[_c('CircleSlice',{attrs:{\"size\":20}}),_vm._v(\" \"),_c('div',{staticClass:\"details__quota-info\"},[_c('p',{staticClass:\"details__quota-text\",domProps:{\"innerHTML\":_vm._s(_vm.quotaText)}}),_vm._v(\" \"),_c('NcProgressBar',{attrs:{\"size\":\"medium\",\"value\":_vm.usageRelative,\"error\":_vm.usageRelative > 80}})],1)],1)])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :is-heading=\"true\" :readable=\"t('settings', 'Details')\" />\n\n\t\t<div class=\"details\">\n\t\t\t<div class=\"details__groups\">\n\t\t\t\t<Account :size=\"20\" />\n\t\t\t\t<div class=\"details__groups-info\">\n\t\t\t\t\t<p>{{ t('settings', 'You are a member of the following groups:') }}</p>\n\t\t\t\t\t<p class=\"details__groups-list\">{{ groups.join(', ') }}</p>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"details__quota\">\n\t\t\t\t<CircleSlice :size=\"20\" />\n\t\t\t\t<div class=\"details__quota-info\">\n\t\t\t\t\t<p class=\"details__quota-text\" v-html=\"quotaText\" />\n\t\t\t\t\t<NcProgressBar size=\"medium\"\n\t\t\t\t\t\t:value=\"usageRelative\"\n\t\t\t\t\t\t:error=\"usageRelative > 80\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport NcProgressBar from '@nextcloud/vue/dist/Components/NcProgressBar.js'\n\nimport Account from 'vue-material-design-icons/Account.vue'\nimport CircleSlice from 'vue-material-design-icons/CircleSlice3.vue'\n\nimport HeaderBar from './shared/HeaderBar.vue'\n\n/** SYNC to be kept in sync with `lib/public/Files/FileInfo.php` */\nconst SPACE_UNLIMITED = -3\n\nconst { groups, quota, totalSpace, usage, usageRelative } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'DetailsSection',\n\n\tcomponents: {\n\t\tAccount,\n\t\tCircleSlice,\n\t\tHeaderBar,\n\t\tNcProgressBar,\n\t},\n\n\tcomputed: {\n\t\tquotaText() {\n\t\t\tif (quota === SPACE_UNLIMITED) {\n\t\t\t\treturn t('settings', 'You are using <strong>{usage}</strong>', { usage })\n\t\t\t}\n\t\t\treturn t(\n\t\t\t\t'settings',\n\t\t\t\t'You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)',\n\t\t\t\t{ usage, totalSpace, usageRelative },\n\t\t\t)\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tgroups,\n\t\t\tusageRelative,\n\t\t}\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.details {\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin: 10px 32px 10px 0;\n\tgap: 16px 0;\n\tcolor: var(--color-text-lighter);\n\n\t&__groups,\n\t&__quota {\n\t\tdisplay: flex;\n\t\tgap: 0 10px;\n\n\t\t&-info {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\twidth: 100%;\n\t\t\tgap: 4px 0;\n\t\t}\n\n\t\t&-list {\n\t\t\tfont-weight: bold;\n\t\t}\n\n\t\t&::v-deep .material-design-icon {\n\t\t\talign-self: flex-start;\n\t\t\tmargin-top: 2px;\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DetailsSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DetailsSection.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DetailsSection.vue?vue&type=style&index=0&id=1ab46e68&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DetailsSection.vue?vue&type=style&index=0&id=1ab46e68&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./DetailsSection.vue?vue&type=template&id=1ab46e68&scoped=true&\"\nimport script from \"./DetailsSection.vue?vue&type=script&lang=js&\"\nexport * from \"./DetailsSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DetailsSection.vue?vue&type=style&index=0&id=1ab46e68&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1ab46e68\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('AccountPropertySection',_vm._b({attrs:{\"placeholder\":_vm.t('settings', 'Your full name'),\"is-editable\":_vm.displayNameChangeSupported,\"on-validate\":_vm.onValidate,\"on-save\":_vm.onSave}},'AccountPropertySection',_vm.displayName,false,true))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :scope.sync=\"scope\"\n\t\t\t:readable.sync=\"readable\"\n\t\t\t:input-id=\"inputId\"\n\t\t\t:is-editable=\"isEditable\" />\n\n\t\t<div v-if=\"isEditable\" class=\"property\">\n\t\t\t<textarea v-if=\"multiLine\"\n\t\t\t\t:id=\"inputId\"\n\t\t\t\t:placeholder=\"placeholder\"\n\t\t\t\t:value=\"value\"\n\t\t\t\trows=\"8\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\tautocomplete=\"off\"\n\t\t\t\tautocorrect=\"off\"\n\t\t\t\t@input=\"onPropertyChange\" />\n\t\t\t<input v-else\n\t\t\t\tref=\"input\"\n\t\t\t\t:id=\"inputId\"\n\t\t\t\t:placeholder=\"placeholder\"\n\t\t\t\t:type=\"type\"\n\t\t\t\t:value=\"value\"\n\t\t\t\t:aria-describedby=\"helperText ? `${name}-helper-text` : ''\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\tautocomplete=\"on\"\n\t\t\t\tautocorrect=\"off\"\n\t\t\t\t@input=\"onPropertyChange\">\n\n\t\t\t<div class=\"property__actions-container\">\n\t\t\t\t<transition name=\"fade\">\n\t\t\t\t\t<Check v-if=\"showCheckmarkIcon\" :size=\"20\" />\n\t\t\t\t\t<AlertOctagon v-else-if=\"showErrorIcon\" :size=\"20\" />\n\t\t\t\t</transition>\n\t\t\t</div>\n\t\t</div>\n\t\t<span v-else>\n\t\t\t{{ value || t('settings', 'No {property} set', { property: readable.toLocaleLowerCase() }) }}\n\t\t</span>\n\n\t\t<p v-if=\"helperText\"\n\t\t\t:id=\"`${name}-helper-text`\"\n\t\t\tclass=\"property__helper-text-message property__helper-text-message--error\">\n\t\t\t<AlertCircle class=\"property__helper-text-message__icon\" :size=\"18\" />\n\t\t\t{{ helperText }}\n\t\t</p>\n\t</section>\n</template>\n\n<script>\nimport debounce from 'debounce'\n\nimport AlertCircle from 'vue-material-design-icons/AlertCircleOutline.vue'\nimport AlertOctagon from 'vue-material-design-icons/AlertOctagon.vue'\nimport Check from 'vue-material-design-icons/Check.vue'\n\nimport HeaderBar from '../shared/HeaderBar.vue'\n\nimport { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService.js'\nimport { handleError } from '../../../utils/handlers.js'\n\nexport default {\n\tname: 'AccountPropertySection',\n\n\tcomponents: {\n\t\tAlertCircle,\n\t\tAlertOctagon,\n\t\tCheck,\n\t\tHeaderBar,\n\t},\n\n\tprops: {\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tscope: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\treadable: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tplaceholder: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\ttype: {\n\t\t\ttype: String,\n\t\t\tdefault: 'text',\n\t\t},\n\t\tisEditable: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tmultiLine: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tonValidate: {\n\t\t\ttype: Function,\n\t\t\tdefault: null,\n\t\t},\n\t\tonSave: {\n\t\t\ttype: Function,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialValue: this.value,\n\t\t\thelperText: null,\n\t\t\tshowCheckmarkIcon: false,\n\t\t\tshowErrorIcon: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tinputId() {\n\t\t\treturn `account-property-${this.name}`\n\t\t},\n\t},\n\n\tmethods: {\n\t\tonPropertyChange(e) {\n\t\t\tthis.$emit('update:value', e.target.value)\n\t\t\tthis.debouncePropertyChange(e.target.value.trim())\n\t\t},\n\n\t\tdebouncePropertyChange: debounce(async function(value) {\n\t\t\tthis.helperText = null\n\t\t\tif (this.$refs.input && this.$refs.input.validationMessage) {\n\t\t\t\tthis.helperText = this.$refs.input.validationMessage\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (this.onValidate && !this.onValidate(value)) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tawait this.updateProperty(value)\n\t\t}, 500),\n\n\t\tasync updateProperty(value) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountProperty(\n\t\t\t\t\tthis.name,\n\t\t\t\t\tvalue,\n\t\t\t\t)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tvalue,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update {property}', { property: this.readable.toLocaleLowerCase() }),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ value, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\tthis.initialValue = value\n\t\t\t\tif (this.onSave) {\n\t\t\t\t\tthis.onSave(value)\n\t\t\t\t}\n\t\t\t\tthis.showCheckmarkIcon = true\n\t\t\t\tsetTimeout(() => { this.showCheckmarkIcon = false }, 2000)\n\t\t\t} else {\n\t\t\t\tthis.$emit('update:value', this.initialValue)\n\t\t\t\thandleError(error, errorMessage)\n\t\t\t\tthis.showErrorIcon = true\n\t\t\t\tsetTimeout(() => { this.showErrorIcon = false }, 2000)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n\n\t.property {\n\t\tdisplay: grid;\n\t\talign-items: center;\n\n\t\ttextarea {\n\t\t\tresize: vertical;\n\t\t\tgrid-area: 1 / 1;\n\t\t\twidth: 100%;\n\t\t}\n\n\t\tinput {\n\t\t\tgrid-area: 1 / 1;\n\t\t\twidth: 100%;\n\t\t}\n\n\t\t.property__actions-container {\n\t\t\tgrid-area: 1 / 1;\n\t\t\tjustify-self: flex-end;\n\t\t\talign-self: flex-end;\n\t\t\theight: 30px;\n\n\t\t\tdisplay: flex;\n\t\t\tgap: 0 2px;\n\t\t\tmargin-right: 5px;\n\t\t\tmargin-bottom: 5px;\n\t\t}\n\t}\n\n\t.property__helper-text-message {\n\t\tpadding: 4px 0;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\n\t\t&__icon {\n\t\t\tmargin-right: 8px;\n\t\t\talign-self: start;\n\t\t\tmargin-top: 4px;\n\t\t}\n\n\t\t&--error {\n\t\t\tcolor: var(--color-error);\n\t\t}\n\t}\n\n\t.fade-enter,\n\t.fade-leave-to {\n\t\topacity: 0;\n\t}\n\n\t.fade-enter-active {\n\t\ttransition: opacity 200ms ease-out;\n\t}\n\n\t.fade-leave-active {\n\t\ttransition: opacity 300ms ease-out;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AccountPropertySection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AccountPropertySection.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AccountPropertySection.vue?vue&type=style&index=0&id=6eb7d8e0&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AccountPropertySection.vue?vue&type=style&index=0&id=6eb7d8e0&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AccountPropertySection.vue?vue&type=template&id=6eb7d8e0&scoped=true&\"\nimport script from \"./AccountPropertySection.vue?vue&type=script&lang=js&\"\nexport * from \"./AccountPropertySection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AccountPropertySection.vue?vue&type=style&index=0&id=6eb7d8e0&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 \"6eb7d8e0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',[_c('HeaderBar',{attrs:{\"scope\":_vm.scope,\"readable\":_vm.readable,\"input-id\":_vm.inputId,\"is-editable\":_vm.isEditable},on:{\"update:scope\":function($event){_vm.scope=$event},\"update:readable\":function($event){_vm.readable=$event}}}),_vm._v(\" \"),(_vm.isEditable)?_c('div',{staticClass:\"property\"},[(_vm.multiLine)?_c('textarea',{attrs:{\"id\":_vm.inputId,\"placeholder\":_vm.placeholder,\"rows\":\"8\",\"autocapitalize\":\"none\",\"autocomplete\":\"off\",\"autocorrect\":\"off\"},domProps:{\"value\":_vm.value},on:{\"input\":_vm.onPropertyChange}}):_c('input',{ref:\"input\",attrs:{\"id\":_vm.inputId,\"placeholder\":_vm.placeholder,\"type\":_vm.type,\"aria-describedby\":_vm.helperText ? `${_vm.name}-helper-text` : '',\"autocapitalize\":\"none\",\"autocomplete\":\"on\",\"autocorrect\":\"off\"},domProps:{\"value\":_vm.value},on:{\"input\":_vm.onPropertyChange}}),_vm._v(\" \"),_c('div',{staticClass:\"property__actions-container\"},[_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.showCheckmarkIcon)?_c('Check',{attrs:{\"size\":20}}):(_vm.showErrorIcon)?_c('AlertOctagon',{attrs:{\"size\":20}}):_vm._e()],1)],1)]):_c('span',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.value || _vm.t('settings', 'No {property} set', { property: _vm.readable.toLocaleLowerCase() }))+\"\\n\\t\")]),_vm._v(\" \"),(_vm.helperText)?_c('p',{staticClass:\"property__helper-text-message property__helper-text-message--error\",attrs:{\"id\":`${_vm.name}-helper-text`}},[_c('AlertCircle',{staticClass:\"property__helper-text-message__icon\",attrs:{\"size\":18}}),_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.helperText)+\"\\n\\t\")],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<AccountPropertySection v-bind.sync=\"displayName\"\n\t\t:placeholder=\"t('settings', 'Your full name')\"\n\t\t:is-editable=\"displayNameChangeSupported\"\n\t\t:on-validate=\"onValidate\"\n\t\t:on-save=\"onSave\" />\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport { emit } from '@nextcloud/event-bus'\n\nimport AccountPropertySection from './shared/AccountPropertySection.vue'\n\nimport { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js'\n\nconst { displayName } = loadState('settings', 'personalInfoParameters', {})\nconst { displayNameChangeSupported } = loadState('settings', 'accountParameters', {})\n\nexport default {\n\tname: 'DisplayNameSection',\n\n\tcomponents: {\n\t\tAccountPropertySection,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tdisplayName: { ...displayName, readable: NAME_READABLE_ENUM[displayName.name] },\n\t\t\tdisplayNameChangeSupported,\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonValidate(value) {\n\t\t\treturn value !== ''\n\t\t},\n\n\t\tonSave(value) {\n\t\t\tif (oc_userconfig.avatar.generated) {\n\t\t\t\t// Update the avatar version so that avatar update handlers refresh correctly\n\t\t\t\toc_userconfig.avatar.version = Date.now()\n\t\t\t}\n\t\t\temit('settings:display-name:updated', value)\n\t\t},\n\t}\n}\n</script>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DisplayNameSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DisplayNameSection.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DisplayNameSection.vue?vue&type=template&id=8950c424&\"\nimport script from \"./DisplayNameSection.vue?vue&type=script&lang=js&\"\nexport * from \"./DisplayNameSection.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',[_c('HeaderBar',{attrs:{\"input-id\":_vm.inputId,\"readable\":_vm.primaryEmail.readable,\"handle-scope-change\":_vm.savePrimaryEmailScope,\"is-editable\":true,\"is-multi-value-supported\":true,\"is-valid-section\":_vm.isValidSection,\"scope\":_vm.primaryEmail.scope},on:{\"update:scope\":function($event){return _vm.$set(_vm.primaryEmail, \"scope\", $event)},\"add-additional\":_vm.onAddAdditionalEmail}}),_vm._v(\" \"),(_vm.displayNameChangeSupported)?[_c('Email',{attrs:{\"primary\":true,\"scope\":_vm.primaryEmail.scope,\"email\":_vm.primaryEmail.value,\"active-notification-email\":_vm.notificationEmail},on:{\"update:scope\":function($event){return _vm.$set(_vm.primaryEmail, \"scope\", $event)},\"update:email\":[function($event){return _vm.$set(_vm.primaryEmail, \"value\", $event)},_vm.onUpdateEmail],\"update:activeNotificationEmail\":function($event){_vm.notificationEmail=$event},\"update:active-notification-email\":function($event){_vm.notificationEmail=$event},\"update:notification-email\":_vm.onUpdateNotificationEmail}})]:_c('span',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.primaryEmail.value || _vm.t('settings', 'No email address set'))+\"\\n\\t\")]),_vm._v(\" \"),(_vm.additionalEmails.length)?[_c('em',{staticClass:\"additional-emails-label\"},[_vm._v(_vm._s(_vm.t('settings', 'Additional emails')))]),_vm._v(\" \"),_vm._l((_vm.additionalEmails),function(additionalEmail,index){return _c('Email',{key:additionalEmail.key,attrs:{\"index\":index,\"scope\":additionalEmail.scope,\"email\":additionalEmail.value,\"local-verification-state\":parseInt(additionalEmail.locallyVerified, 10),\"active-notification-email\":_vm.notificationEmail},on:{\"update:scope\":function($event){return _vm.$set(additionalEmail, \"scope\", $event)},\"update:email\":[function($event){return _vm.$set(additionalEmail, \"value\", $event)},_vm.onUpdateEmail],\"update:activeNotificationEmail\":function($event){_vm.notificationEmail=$event},\"update:active-notification-email\":function($event){_vm.notificationEmail=$event},\"update:notification-email\":_vm.onUpdateNotificationEmail,\"delete-additional-email\":function($event){return _vm.onDeleteAdditionalEmail(index)}}})})]:_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { confirmPassword } from '@nextcloud/password-confirmation'\nimport '@nextcloud/password-confirmation/dist/style.css'\n\nimport { ACCOUNT_PROPERTY_ENUM, SCOPE_SUFFIX } from '../../constants/AccountPropertyConstants.js'\n\n/**\n * Save the primary email of the user\n *\n * @param {string} email the primary email\n * @return {object}\n */\nexport const savePrimaryEmail = async (email) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: ACCOUNT_PROPERTY_ENUM.EMAIL,\n\t\tvalue: email,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save an additional email of the user\n *\n * Will be appended to the user's additional emails*\n *\n * @param {string} email the additional email\n * @return {object}\n */\nexport const saveAdditionalEmail = async (email) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION,\n\t\tvalue: email,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save the notification email of the user\n *\n * @param {string} email the notification email\n * @return {object}\n */\nexport const saveNotificationEmail = async (email) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: ACCOUNT_PROPERTY_ENUM.NOTIFICATION_EMAIL,\n\t\tvalue: email,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Remove an additional email of the user\n *\n * @param {string} email the additional email\n * @return {object}\n */\nexport const removeAdditionalEmail = async (email) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}/{collection}', { userId, collection: ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: email,\n\t\tvalue: '',\n\t})\n\n\treturn res.data\n}\n\n/**\n * Update an additional email of the user\n *\n * @param {string} prevEmail the additional email to be updated\n * @param {string} newEmail the new additional email\n * @return {object}\n */\nexport const updateAdditionalEmail = async (prevEmail, newEmail) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}/{collection}', { userId, collection: ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: prevEmail,\n\t\tvalue: newEmail,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save the federation scope for the primary email of the user\n *\n * @param {string} scope the federation scope\n * @return {object}\n */\nexport const savePrimaryEmailScope = async (scope) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: `${ACCOUNT_PROPERTY_ENUM.EMAIL}${SCOPE_SUFFIX}`,\n\t\tvalue: scope,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save the federation scope for the additional email of the user\n *\n * @param {string} email the additional email\n * @param {string} scope the federation scope\n * @return {object}\n */\nexport const saveAdditionalEmailScope = async (email, scope) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}/{collectionScope}', { userId, collectionScope: `${ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION}${SCOPE_SUFFIX}` })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: email,\n\t\tvalue: scope,\n\t})\n\n\treturn res.data\n}\n","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/*\n * Frontend validators, less strict than backend validators\n *\n * TODO add nice validation errors for Profile page settings modal\n */\n\nimport { VALIDATE_EMAIL_REGEX } from '../constants/AccountPropertyConstants.js'\n\n/**\n * Validate the email input\n *\n * Compliant with PHP core FILTER_VALIDATE_EMAIL validator*\n *\n * Reference implementation https://github.com/mpyw/FILTER_VALIDATE_EMAIL.js/blob/71e62ca48841d2246a1b531e7e84f5a01f15e615/src/index.ts*\n *\n * @param {string} input the input\n * @return {boolean}\n */\nexport function validateEmail(input) {\n\treturn typeof input === 'string'\n\t\t&& VALIDATE_EMAIL_REGEX.test(input)\n\t\t&& input.slice(-1) !== '\\n'\n\t\t&& input.length <= 320\n\t\t&& encodeURIComponent(input).replace(/%../g, 'x').length <= 320\n}\n\n/**\n * Validate the URL input\n *\n * @param {string} input the input\n * @return {boolean}\n */\nexport function validateUrl(input) {\n\ttry {\n\t\t// eslint-disable-next-line no-new\n\t\tnew URL(input)\n\t\treturn true\n\t} catch (e) {\n\t\treturn false\n\t}\n}\n\n/**\n * Validate the language input\n *\n * @param {object} input the input\n * @return {boolean}\n */\nexport function validateLanguage(input) {\n\treturn input.code !== ''\n\t\t&& input.name !== ''\n\t\t&& input.name !== undefined\n}\n\n/**\n * Validate the locale input\n *\n * @param {object} input the input\n * @return {boolean}\n */\nexport function validateLocale(input) {\n\treturn input.code !== ''\n\t\t&& input.name !== ''\n\t\t&& input.name !== undefined\n}\n\n/**\n * Validate boolean input\n *\n * @param {boolean} input the input\n * @return {boolean}\n */\nexport function validateBoolean(input) {\n\treturn typeof input === 'boolean'\n}\n","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div>\n\t\t<div class=\"email\">\n\t\t\t<input :id=\"inputId\"\n\t\t\t\tref=\"email\"\n\t\t\t\ttype=\"email\"\n\t\t\t\t:placeholder=\"inputPlaceholder\"\n\t\t\t\t:value=\"email\"\n\t\t\t\t:aria-describedby=\"helperText ? `${inputId}-helper-text` : ''\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\tautocomplete=\"on\"\n\t\t\t\tautocorrect=\"off\"\n\t\t\t\t@input=\"onEmailChange\">\n\n\t\t\t<div class=\"email__actions-container\">\n\t\t\t\t<transition name=\"fade\">\n\t\t\t\t\t<Check v-if=\"showCheckmarkIcon\" :size=\"20\" />\n\t\t\t\t\t<AlertOctagon v-else-if=\"showErrorIcon\" :size=\"20\" />\n\t\t\t\t</transition>\n\n\t\t\t\t<template v-if=\"!primary\">\n\t\t\t\t\t<FederationControl :readable=\"propertyReadable\"\n\t\t\t\t\t\t:additional=\"true\"\n\t\t\t\t\t\t:additional-value=\"email\"\n\t\t\t\t\t\t:disabled=\"federationDisabled\"\n\t\t\t\t\t\t:handle-additional-scope-change=\"saveAdditionalEmailScope\"\n\t\t\t\t\t\t:scope.sync=\"localScope\"\n\t\t\t\t\t\t@update:scope=\"onScopeChange\" />\n\t\t\t\t</template>\n\n\t\t\t\t<NcActions class=\"email__actions\"\n\t\t\t\t\t:aria-label=\"t('settings', 'Email options')\"\n\t\t\t\t\t:force-menu=\"true\">\n\t\t\t\t\t<NcActionButton :aria-label=\"deleteEmailLabel\"\n\t\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t\t:disabled=\"deleteDisabled\"\n\t\t\t\t\t\ticon=\"icon-delete\"\n\t\t\t\t\t\t@click.stop.prevent=\"deleteEmail\">\n\t\t\t\t\t\t{{ deleteEmailLabel }}\n\t\t\t\t\t</NcActionButton>\n\t\t\t\t\t<NcActionButton v-if=\"!primary || !isNotificationEmail\"\n\t\t\t\t\t\t:aria-label=\"setNotificationMailLabel\"\n\t\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t\t:disabled=\"setNotificationMailDisabled\"\n\t\t\t\t\t\ticon=\"icon-favorite\"\n\t\t\t\t\t\t@click.stop.prevent=\"setNotificationMail\">\n\t\t\t\t\t\t{{ setNotificationMailLabel }}\n\t\t\t\t\t</NcActionButton>\n\t\t\t\t</NcActions>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<p v-if=\"helperText\"\n\t\t\t:id=\"`${inputId}-helper-text`\"\n\t\t\tclass=\"email__helper-text-message email__helper-text-message--error\">\n\t\t\t<AlertCircle class=\"email__helper-text-message__icon\" :size=\"18\" />\n\t\t\t{{ helperText }}\n\t\t</p>\n\n\t\t<em v-if=\"isNotificationEmail\">\n\t\t\t{{ t('settings', 'Primary email for password reset and notifications') }}\n\t\t</em>\n\t</div>\n</template>\n\n<script>\nimport { NcActions, NcActionButton } from '@nextcloud/vue'\nimport AlertCircle from 'vue-material-design-icons/AlertCircleOutline.vue'\nimport AlertOctagon from 'vue-material-design-icons/AlertOctagon.vue'\nimport Check from 'vue-material-design-icons/Check.vue'\nimport debounce from 'debounce'\n\nimport FederationControl from '../shared/FederationControl.vue'\nimport { handleError } from '../../../utils/handlers.js'\n\nimport { ACCOUNT_PROPERTY_READABLE_ENUM, VERIFICATION_ENUM } from '../../../constants/AccountPropertyConstants.js'\nimport {\n\tremoveAdditionalEmail,\n\tsaveAdditionalEmail,\n\tsaveAdditionalEmailScope,\n\tsaveNotificationEmail,\n\tsavePrimaryEmail,\n\tupdateAdditionalEmail,\n} from '../../../service/PersonalInfo/EmailService.js'\nimport { validateEmail } from '../../../utils/validate.js'\n\nexport default {\n\tname: 'Email',\n\n\tcomponents: {\n\t\tNcActions,\n\t\tNcActionButton,\n\t\tAlertCircle,\n\t\tAlertOctagon,\n\t\tCheck,\n\t\tFederationControl,\n\t},\n\n\tprops: {\n\t\temail: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tindex: {\n\t\t\ttype: Number,\n\t\t\tdefault: 0,\n\t\t},\n\t\tprimary: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tscope: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tactiveNotificationEmail: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tlocalVerificationState: {\n\t\t\ttype: Number,\n\t\t\tdefault: VERIFICATION_ENUM.NOT_VERIFIED,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tpropertyReadable: ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL,\n\t\t\tinitialEmail: this.email,\n\t\t\tlocalScope: this.scope,\n\t\t\tsaveAdditionalEmailScope,\n\t\t\thelperText: null,\n\t\t\tshowCheckmarkIcon: false,\n\t\t\tshowErrorIcon: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tdeleteDisabled() {\n\t\t\tif (this.primary) {\n\t\t\t\t// Disable for empty primary email as there is nothing to delete\n\t\t\t\t// OR when initialEmail (reflects server state) and email (current input) are not the same\n\t\t\t\treturn this.email === '' || this.initialEmail !== this.email\n\t\t\t} else if (this.initialEmail !== '') {\n\t\t\t\treturn this.initialEmail !== this.email\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\n\t\tdeleteEmailLabel() {\n\t\t\tif (this.primary) {\n\t\t\t\treturn t('settings', 'Remove primary email')\n\t\t\t}\n\t\t\treturn t('settings', 'Delete email')\n\t\t},\n\n\t setNotificationMailDisabled() {\n\t\t\treturn !this.primary && this.localVerificationState !== VERIFICATION_ENUM.VERIFIED\n\t\t},\n\n\t setNotificationMailLabel() {\n\t\t\tif (this.isNotificationEmail) {\n\t\t\t\treturn t('settings', 'Unset as primary email')\n\t\t\t} else if (!this.primary && this.localVerificationState !== VERIFICATION_ENUM.VERIFIED) {\n\t\t\t\treturn t('settings', 'This address is not confirmed')\n\t\t\t}\n\t\t\treturn t('settings', 'Set as primary email')\n\t\t},\n\n\t\tfederationDisabled() {\n\t\t\treturn !this.initialEmail\n\t\t},\n\n\t\tinputId() {\n\t\t\tif (this.primary) {\n\t\t\t\treturn 'email'\n\t\t\t}\n\t\t\treturn `email-${this.index}`\n\t\t},\n\n\t\tinputPlaceholder() {\n\t\t\tif (this.primary) {\n\t\t\t\treturn t('settings', 'Your email address')\n\t\t\t}\n\t\t\treturn t('settings', 'Additional email address {index}', { index: this.index + 1 })\n\t\t},\n\n\t\tisNotificationEmail() {\n\t\t\treturn (this.email && this.email === this.activeNotificationEmail)\n\t\t\t\t|| (this.primary && this.activeNotificationEmail === '')\n\t\t},\n\t},\n\n\tmounted() {\n\t\tif (!this.primary && this.initialEmail === '') {\n\t\t\t// $nextTick is needed here, otherwise it may not always work https://stackoverflow.com/questions/51922767/autofocus-input-on-mount-vue-ios/63485725#63485725\n\t\t\tthis.$nextTick(() => this.$refs.email?.focus())\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonEmailChange(e) {\n\t\t\tthis.$emit('update:email', e.target.value)\n\t\t\tthis.debounceEmailChange(e.target.value.trim())\n\t\t},\n\n\t\tdebounceEmailChange: debounce(async function(email) {\n\t\t\tthis.helperText = null\n\t\t\tif (this.$refs.email?.validationMessage) {\n\t\t\t\tthis.helperText = this.$refs.email.validationMessage\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (validateEmail(email) || email === '') {\n\t\t\t\tif (this.primary) {\n\t\t\t\t\tawait this.updatePrimaryEmail(email)\n\t\t\t\t} else {\n\t\t\t\t\tif (email) {\n\t\t\t\t\t\tif (this.initialEmail === '') {\n\t\t\t\t\t\t\tawait this.addAdditionalEmail(email)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tawait this.updateAdditionalEmail(email)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}, 500),\n\n\t\tasync deleteEmail() {\n\t\t\tif (this.primary) {\n\t\t\t\tthis.$emit('update:email', '')\n\t\t\t\tawait this.updatePrimaryEmail('')\n\t\t\t} else {\n\t\t\t\tawait this.deleteAdditionalEmail()\n\t\t\t}\n\t\t},\n\n\t\tasync updatePrimaryEmail(email) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryEmail(email)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\temail,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tif (email === '') {\n\t\t\t\t\tthis.handleResponse({\n\t\t\t\t\t\terrorMessage: t('settings', 'Unable to delete primary email address'),\n\t\t\t\t\t\terror: e,\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\tthis.handleResponse({\n\t\t\t\t\t\terrorMessage: t('settings', 'Unable to update primary email address'),\n\t\t\t\t\t\terror: e,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tasync addAdditionalEmail(email) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await saveAdditionalEmail(email)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\temail,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to add additional email address'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\tasync setNotificationMail() {\n\t\t try {\n\t\t\t const newNotificationMailValue = (this.primary || this.isNotificationEmail) ? '' : this.initialEmail\n\t\t\t const responseData = await saveNotificationEmail(newNotificationMailValue)\n\t\t\t this.handleResponse({\n\t\t\t\t notificationEmail: newNotificationMailValue,\n\t\t\t\t status: responseData.ocs?.meta?.status,\n\t\t\t })\n\t\t } catch (e) {\n\t\t\t this.handleResponse({\n\t\t\t\t errorMessage: 'Unable to choose this email for notifications',\n\t\t\t\t error: e,\n\t\t\t })\n\t\t }\n\t\t},\n\n\t\tasync updateAdditionalEmail(email) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await updateAdditionalEmail(this.initialEmail, email)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\temail,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update additional email address'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\tasync deleteAdditionalEmail() {\n\t\t\ttry {\n\t\t\t\tconst responseData = await removeAdditionalEmail(this.initialEmail)\n\t\t\t\tthis.handleDeleteAdditionalEmail(responseData.ocs?.meta?.status)\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to delete additional email address'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleDeleteAdditionalEmail(status) {\n\t\t\tif (status === 'ok') {\n\t\t\t\tthis.$emit('delete-additional-email')\n\t\t\t} else {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to delete additional email address'),\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ email, notificationEmail, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\t// Ensure that local state reflects server state\n\t\t\t\tif (email) {\n\t\t\t\t\tthis.initialEmail = email\n\t\t\t\t} else if (notificationEmail !== undefined) {\n\t\t\t\t\tthis.$emit('update:notification-email', notificationEmail)\n\t\t\t\t}\n\t\t\t\tthis.showCheckmarkIcon = true\n\t\t\t\tsetTimeout(() => { this.showCheckmarkIcon = false }, 2000)\n\t\t\t} else {\n\t\t\t\thandleError(error, errorMessage)\n\t\t\t\tthis.showErrorIcon = true\n\t\t\t\tsetTimeout(() => { this.showErrorIcon = false }, 2000)\n\t\t\t}\n\t\t},\n\n\t\tonScopeChange(scope) {\n\t\t\tthis.$emit('update:scope', scope)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.email {\n\tdisplay: grid;\n\talign-items: center;\n\n\tinput {\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t}\n\n\t.email__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\n\t\t.email__actions {\n\t\t\topacity: 0.4 !important;\n\n\t\t\t&:hover,\n\t\t\t&:focus,\n\t\t\t&:active {\n\t\t\t\topacity: 0.8 !important;\n\t\t\t}\n\n\t\t\t&::v-deep button {\n\t\t\t\theight: 30px !important;\n\t\t\t\tmin-height: 30px !important;\n\t\t\t\twidth: 30px !important;\n\t\t\t\tmin-width: 30px !important;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__helper-text-message {\n\t\tpadding: 4px 0;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\n\t\t&__icon {\n\t\t\tmargin-right: 8px;\n\t\t\talign-self: start;\n\t\t\tmargin-top: 4px;\n\t\t}\n\n\t\t&--error {\n\t\t\tcolor: var(--color-error);\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Email.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Email.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Email.vue?vue&type=style&index=0&id=5ff85d38&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Email.vue?vue&type=style&index=0&id=5ff85d38&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Email.vue?vue&type=template&id=5ff85d38&scoped=true&\"\nimport script from \"./Email.vue?vue&type=script&lang=js&\"\nexport * from \"./Email.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Email.vue?vue&type=style&index=0&id=5ff85d38&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 \"5ff85d38\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{staticClass:\"email\"},[_c('input',{ref:\"email\",attrs:{\"id\":_vm.inputId,\"type\":\"email\",\"placeholder\":_vm.inputPlaceholder,\"aria-describedby\":_vm.helperText ? `${_vm.inputId}-helper-text` : '',\"autocapitalize\":\"none\",\"autocomplete\":\"on\",\"autocorrect\":\"off\"},domProps:{\"value\":_vm.email},on:{\"input\":_vm.onEmailChange}}),_vm._v(\" \"),_c('div',{staticClass:\"email__actions-container\"},[_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.showCheckmarkIcon)?_c('Check',{attrs:{\"size\":20}}):(_vm.showErrorIcon)?_c('AlertOctagon',{attrs:{\"size\":20}}):_vm._e()],1),_vm._v(\" \"),(!_vm.primary)?[_c('FederationControl',{attrs:{\"readable\":_vm.propertyReadable,\"additional\":true,\"additional-value\":_vm.email,\"disabled\":_vm.federationDisabled,\"handle-additional-scope-change\":_vm.saveAdditionalEmailScope,\"scope\":_vm.localScope},on:{\"update:scope\":[function($event){_vm.localScope=$event},_vm.onScopeChange]}})]:_vm._e(),_vm._v(\" \"),_c('NcActions',{staticClass:\"email__actions\",attrs:{\"aria-label\":_vm.t('settings', 'Email options'),\"force-menu\":true}},[_c('NcActionButton',{attrs:{\"aria-label\":_vm.deleteEmailLabel,\"close-after-click\":true,\"disabled\":_vm.deleteDisabled,\"icon\":\"icon-delete\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.deleteEmail.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.deleteEmailLabel)+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(!_vm.primary || !_vm.isNotificationEmail)?_c('NcActionButton',{attrs:{\"aria-label\":_vm.setNotificationMailLabel,\"close-after-click\":true,\"disabled\":_vm.setNotificationMailDisabled,\"icon\":\"icon-favorite\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.setNotificationMail.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.setNotificationMailLabel)+\"\\n\\t\\t\\t\\t\")]):_vm._e()],1)],2)]),_vm._v(\" \"),(_vm.helperText)?_c('p',{staticClass:\"email__helper-text-message email__helper-text-message--error\",attrs:{\"id\":`${_vm.inputId}-helper-text`}},[_c('AlertCircle',{staticClass:\"email__helper-text-message__icon\",attrs:{\"size\":18}}),_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.helperText)+\"\\n\\t\")],1):_vm._e(),_vm._v(\" \"),(_vm.isNotificationEmail)?_c('em',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Primary email for password reset and notifications'))+\"\\n\\t\")]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :input-id=\"inputId\"\n\t\t\t:readable=\"primaryEmail.readable\"\n\t\t\t:handle-scope-change=\"savePrimaryEmailScope\"\n\t\t\t:is-editable=\"true\"\n\t\t\t:is-multi-value-supported=\"true\"\n\t\t\t:is-valid-section=\"isValidSection\"\n\t\t\t:scope.sync=\"primaryEmail.scope\"\n\t\t\t@add-additional=\"onAddAdditionalEmail\" />\n\n\t\t<template v-if=\"displayNameChangeSupported\">\n\t\t\t<Email :primary=\"true\"\n\t\t\t\t:scope.sync=\"primaryEmail.scope\"\n\t\t\t\t:email.sync=\"primaryEmail.value\"\n\t\t\t\t:active-notification-email.sync=\"notificationEmail\"\n\t\t\t\t@update:email=\"onUpdateEmail\"\n\t\t\t\t@update:notification-email=\"onUpdateNotificationEmail\" />\n\t\t</template>\n\n\t\t<span v-else>\n\t\t\t{{ primaryEmail.value || t('settings', 'No email address set') }}\n\t\t</span>\n\n\t\t<template v-if=\"additionalEmails.length\">\n\t\t\t<em class=\"additional-emails-label\">{{ t('settings', 'Additional emails') }}</em>\n\t\t\t<!-- TODO use unique key for additional email when uniqueness can be guaranteed, see https://github.com/nextcloud/server/issues/26866 -->\n\t\t\t<Email v-for=\"(additionalEmail, index) in additionalEmails\"\n\t\t\t\t:key=\"additionalEmail.key\"\n\t\t\t\t:index=\"index\"\n\t\t\t\t:scope.sync=\"additionalEmail.scope\"\n\t\t\t\t:email.sync=\"additionalEmail.value\"\n\t\t\t\t:local-verification-state=\"parseInt(additionalEmail.locallyVerified, 10)\"\n\t\t\t\t:active-notification-email.sync=\"notificationEmail\"\n\t\t\t\t@update:email=\"onUpdateEmail\"\n\t\t\t\t@update:notification-email=\"onUpdateNotificationEmail\"\n\t\t\t\t@delete-additional-email=\"onDeleteAdditionalEmail(index)\" />\n\t\t</template>\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport Email from './Email.vue'\nimport HeaderBar from '../shared/HeaderBar.vue'\n\nimport { ACCOUNT_PROPERTY_READABLE_ENUM, DEFAULT_ADDITIONAL_EMAIL_SCOPE, NAME_READABLE_ENUM } from '../../../constants/AccountPropertyConstants.js'\nimport { savePrimaryEmail, savePrimaryEmailScope, removeAdditionalEmail } from '../../../service/PersonalInfo/EmailService.js'\nimport { validateEmail } from '../../../utils/validate.js'\nimport { handleError } from '../../../utils/handlers.js'\n\nconst { emailMap: { additionalEmails, primaryEmail, notificationEmail } } = loadState('settings', 'personalInfoParameters', {})\nconst { displayNameChangeSupported } = loadState('settings', 'accountParameters', {})\n\nexport default {\n\tname: 'EmailSection',\n\n\tcomponents: {\n\t\tHeaderBar,\n\t\tEmail,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\taccountProperty: ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL,\n\t\t\tadditionalEmails: additionalEmails.map(properties => ({ ...properties, key: this.generateUniqueKey() })),\n\t\t\tdisplayNameChangeSupported,\n\t\t\tprimaryEmail: { ...primaryEmail, readable: NAME_READABLE_ENUM[primaryEmail.name] },\n\t\t\tsavePrimaryEmailScope,\n\t\t\tnotificationEmail,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tfirstAdditionalEmail() {\n\t\t\tif (this.additionalEmails.length) {\n\t\t\t\treturn this.additionalEmails[0].value\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\tinputId() {\n\t\t\treturn `account-property-${this.primaryEmail.name}`\n\t\t},\n\n\t\tisValidSection() {\n\t\t\treturn validateEmail(this.primaryEmail.value)\n\t\t\t\t&& this.additionalEmails.map(({ value }) => value).every(validateEmail)\n\t\t},\n\n\t\tprimaryEmailValue: {\n\t\t\tget() {\n\t\t\t\treturn this.primaryEmail.value\n\t\t\t},\n\t\t\tset(value) {\n\t\t\t\tthis.primaryEmail.value = value\n\t\t\t},\n\t\t},\n\t},\n\n\tmethods: {\n\t\tonAddAdditionalEmail() {\n\t\t\tif (this.isValidSection) {\n\t\t\t\tthis.additionalEmails.push({ value: '', scope: DEFAULT_ADDITIONAL_EMAIL_SCOPE, key: this.generateUniqueKey() })\n\t\t\t}\n\t\t},\n\n\t\tonDeleteAdditionalEmail(index) {\n\t\t\tthis.$delete(this.additionalEmails, index)\n\t\t},\n\n\t\tasync onUpdateEmail() {\n\t\t\tif (this.primaryEmailValue === '' && this.firstAdditionalEmail) {\n\t\t\t\tconst deletedEmail = this.firstAdditionalEmail\n\t\t\t\tawait this.deleteFirstAdditionalEmail()\n\t\t\t\tthis.primaryEmailValue = deletedEmail\n\t\t\t\tawait this.updatePrimaryEmail()\n\t\t\t}\n\t\t},\n\n\t\tasync onUpdateNotificationEmail(email) {\n\t\t\tthis.notificationEmail = email\n\t\t},\n\n\t\tasync updatePrimaryEmail() {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryEmail(this.primaryEmailValue)\n\t\t\t\tthis.handleResponse(responseData.ocs?.meta?.status)\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse(\n\t\t\t\t\t'error',\n\t\t\t\t\tt('settings', 'Unable to update primary email address'),\n\t\t\t\t\te\n\t\t\t\t)\n\t\t\t}\n\t\t},\n\n\t\tasync deleteFirstAdditionalEmail() {\n\t\t\ttry {\n\t\t\t\tconst responseData = await removeAdditionalEmail(this.firstAdditionalEmail)\n\t\t\t\tthis.handleDeleteFirstAdditionalEmail(responseData.ocs?.meta?.status)\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse(\n\t\t\t\t\t'error',\n\t\t\t\t\tt('settings', 'Unable to delete additional email address'),\n\t\t\t\t\te\n\t\t\t\t)\n\t\t\t}\n\t\t},\n\n\t\thandleDeleteFirstAdditionalEmail(status) {\n\t\t\tif (status === 'ok') {\n\t\t\t\tthis.$delete(this.additionalEmails, 0)\n\t\t\t} else {\n\t\t\t\tthis.handleResponse(\n\t\t\t\t\t'error',\n\t\t\t\t\tt('settings', 'Unable to delete additional email address'),\n\t\t\t\t\t{}\n\t\t\t\t)\n\t\t\t}\n\t\t},\n\n\t\thandleResponse(status, errorMessage, error) {\n\t\t\tif (status !== 'ok') {\n\t\t\t\thandleError(error, errorMessage)\n\t\t\t}\n\t\t},\n\n\t\tgenerateUniqueKey() {\n\t\t\treturn Math.random().toString(36).substring(2)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n\n\t.additional-emails-label {\n\t\tdisplay: block;\n\t\tmargin-top: 16px;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmailSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmailSection.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmailSection.vue?vue&type=style&index=0&id=46c7eb7e&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmailSection.vue?vue&type=style&index=0&id=46c7eb7e&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./EmailSection.vue?vue&type=template&id=46c7eb7e&scoped=true&\"\nimport script from \"./EmailSection.vue?vue&type=script&lang=js&\"\nexport * from \"./EmailSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./EmailSection.vue?vue&type=style&index=0&id=46c7eb7e&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"46c7eb7e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('AccountPropertySection',_vm._b({attrs:{\"placeholder\":_vm.t('settings', 'Your phone number'),\"type\":\"tel\",\"on-validate\":_vm.onValidate}},'AccountPropertySection',_vm.phone,false,true))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<AccountPropertySection v-bind.sync=\"phone\"\n\t\t:placeholder=\"t('settings', 'Your phone number')\"\n\t\ttype=\"tel\"\n\t\t:on-validate=\"onValidate\" />\n</template>\n\n<script>\nimport { isValidPhoneNumber } from 'libphonenumber-js'\nimport { loadState } from '@nextcloud/initial-state'\n\nimport AccountPropertySection from './shared/AccountPropertySection.vue'\n\nimport { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js'\n\nconst {\n\tdefaultPhoneRegion,\n\tphone,\n} = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'PhoneSection',\n\n\tcomponents: {\n\t\tAccountPropertySection,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tphone: { ...phone, readable: NAME_READABLE_ENUM[phone.name] },\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonValidate(value) {\n\t\t\tif (defaultPhoneRegion) {\n\t\t\t\treturn isValidPhoneNumber(value, defaultPhoneRegion)\n\t\t\t}\n\t\t\treturn isValidPhoneNumber(value)\n\t\t},\n\t},\n}\n</script>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PhoneSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PhoneSection.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PhoneSection.vue?vue&type=template&id=4a6cc7c9&\"\nimport script from \"./PhoneSection.vue?vue&type=script&lang=js&\"\nexport * from \"./PhoneSection.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<AccountPropertySection v-bind.sync=\"location\"\n\t\t:placeholder=\"t('settings', 'Your location')\" />\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport AccountPropertySection from './shared/AccountPropertySection.vue'\n\nimport { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js'\n\nconst { location } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'LocationSection',\n\n\tcomponents: {\n\t\tAccountPropertySection,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tlocation: { ...location, readable: NAME_READABLE_ENUM[location.name] },\n\t\t}\n\t},\n}\n</script>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocationSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocationSection.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LocationSection.vue?vue&type=template&id=3b6d0ee7&\"\nimport script from \"./LocationSection.vue?vue&type=script&lang=js&\"\nexport * from \"./LocationSection.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('AccountPropertySection',_vm._b({attrs:{\"placeholder\":_vm.t('settings', 'Your location')}},'AccountPropertySection',_vm.location,false,true))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<AccountPropertySection v-bind.sync=\"website\"\n\t\t:placeholder=\"t('settings', 'Your website')\"\n\t\ttype=\"url\"\n\t\t:on-validate=\"onValidate\" />\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport AccountPropertySection from './shared/AccountPropertySection.vue'\n\nimport { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js'\nimport { validateUrl } from '../../utils/validate.js'\n\nconst { website } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'WebsiteSection',\n\n\tcomponents: {\n\t\tAccountPropertySection,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\twebsite: { ...website, readable: NAME_READABLE_ENUM[website.name] },\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonValidate(value) {\n\t\t\treturn validateUrl(value)\n\t\t},\n\t},\n}\n</script>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebsiteSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebsiteSection.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./WebsiteSection.vue?vue&type=template&id=b18d14ae&\"\nimport script from \"./WebsiteSection.vue?vue&type=script&lang=js&\"\nexport * from \"./WebsiteSection.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('AccountPropertySection',_vm._b({attrs:{\"placeholder\":_vm.t('settings', 'Your website'),\"type\":\"url\",\"on-validate\":_vm.onValidate}},'AccountPropertySection',_vm.website,false,true))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<AccountPropertySection v-bind.sync=\"twitter\"\n\t\t:placeholder=\"t('settings', 'Your Twitter handle')\" />\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport AccountPropertySection from './shared/AccountPropertySection.vue'\n\nimport { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js'\n\nconst { twitter } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'TwitterSection',\n\n\tcomponents: {\n\t\tAccountPropertySection,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\ttwitter: { ...twitter, readable: NAME_READABLE_ENUM[twitter.name] },\n\t\t}\n\t},\n}\n</script>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TwitterSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TwitterSection.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TwitterSection.vue?vue&type=template&id=203feaef&\"\nimport script from \"./TwitterSection.vue?vue&type=script&lang=js&\"\nexport * from \"./TwitterSection.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('AccountPropertySection',_vm._b({attrs:{\"placeholder\":_vm.t('settings', 'Your Twitter handle')}},'AccountPropertySection',_vm.twitter,false,true))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<AccountPropertySection v-bind.sync=\"fediverse\"\n\t\t:placeholder=\"t('settings', 'Your handle')\" />\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport AccountPropertySection from './shared/AccountPropertySection.vue'\n\nimport { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js'\n\nconst { fediverse } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'FediverseSection',\n\n\tcomponents: {\n\t\tAccountPropertySection,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tfediverse: { ...fediverse, readable: NAME_READABLE_ENUM[fediverse.name] },\n\t\t}\n\t},\n}\n</script>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FediverseSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FediverseSection.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./FediverseSection.vue?vue&type=template&id=78433a38&\"\nimport script from \"./FediverseSection.vue?vue&type=script&lang=js&\"\nexport * from \"./FediverseSection.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('AccountPropertySection',_vm._b({attrs:{\"placeholder\":_vm.t('settings', 'Your handle')}},'AccountPropertySection',_vm.fediverse,false,true))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Language.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Language.vue?vue&type=script&lang=js&\"","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div class=\"language\">\n\t\t<select :id=\"inputId\"\n\t\t\t:placeholder=\"t('settings', 'Language')\"\n\t\t\t@change=\"onLanguageChange\">\n\t\t\t<option v-for=\"commonLanguage in commonLanguages\"\n\t\t\t\t:key=\"commonLanguage.code\"\n\t\t\t\t:selected=\"language.code === commonLanguage.code\"\n\t\t\t\t:value=\"commonLanguage.code\">\n\t\t\t\t{{ commonLanguage.name }}\n\t\t\t</option>\n\t\t\t<option disabled>\n\t\t\t\t──────────\n\t\t\t</option>\n\t\t\t<option v-for=\"otherLanguage in otherLanguages\"\n\t\t\t\t:key=\"otherLanguage.code\"\n\t\t\t\t:selected=\"language.code === otherLanguage.code\"\n\t\t\t\t:value=\"otherLanguage.code\">\n\t\t\t\t{{ otherLanguage.name }}\n\t\t\t</option>\n\t\t</select>\n\n\t\t<a href=\"https://www.transifex.com/nextcloud/nextcloud/\"\n\t\t\ttarget=\"_blank\"\n\t\t\trel=\"noreferrer noopener\">\n\t\t\t<em>{{ t('settings', 'Help translate') }}</em>\n\t\t</a>\n\t</div>\n</template>\n\n<script>\nimport { ACCOUNT_SETTING_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants.js'\nimport { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService.js'\nimport { validateLanguage } from '../../../utils/validate.js'\nimport { handleError } from '../../../utils/handlers.js'\n\nexport default {\n\tname: 'Language',\n\n\tprops: {\n\t\tinputId: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\tcommonLanguages: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\totherLanguages: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\tlanguage: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialLanguage: this.language,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tallLanguages() {\n\t\t\treturn Object.freeze(\n\t\t\t\t[...this.commonLanguages, ...this.otherLanguages]\n\t\t\t\t\t.reduce((acc, { code, name }) => ({ ...acc, [code]: name }), {})\n\t\t\t)\n\t\t},\n\t},\n\n\tmethods: {\n\t\tasync onLanguageChange(e) {\n\t\t\tconst language = this.constructLanguage(e.target.value)\n\t\t\tthis.$emit('update:language', language)\n\n\t\t\tif (validateLanguage(language)) {\n\t\t\t\tawait this.updateLanguage(language)\n\t\t\t}\n\t\t},\n\n\t\tasync updateLanguage(language) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountProperty(ACCOUNT_SETTING_PROPERTY_ENUM.LANGUAGE, language.code)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tlanguage,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t\tthis.reloadPage()\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update language'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\tconstructLanguage(languageCode) {\n\t\t\treturn {\n\t\t\t\tcode: languageCode,\n\t\t\t\tname: this.allLanguages[languageCode],\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ language, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\t// Ensure that local state reflects server state\n\t\t\t\tthis.initialLanguage = language\n\t\t\t} else {\n\t\t\t\thandleError(error, errorMessage)\n\t\t\t}\n\t\t},\n\n\t\treloadPage() {\n\t\t\tlocation.reload()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.language {\n\tdisplay: grid;\n\n\tselect {\n\t\twidth: 100%;\n\t}\n\n\ta {\n\t\tcolor: var(--color-main-text);\n\t\ttext-decoration: none;\n\t\twidth: max-content;\n\t}\n}\n</style>\n","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Language.vue?vue&type=style&index=0&id=5c847b3a&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Language.vue?vue&type=style&index=0&id=5c847b3a&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Language.vue?vue&type=template&id=5c847b3a&scoped=true&\"\nimport script from \"./Language.vue?vue&type=script&lang=js&\"\nexport * from \"./Language.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Language.vue?vue&type=style&index=0&id=5c847b3a&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5c847b3a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"language\"},[_c('select',{attrs:{\"id\":_vm.inputId,\"placeholder\":_vm.t('settings', 'Language')},on:{\"change\":_vm.onLanguageChange}},[_vm._l((_vm.commonLanguages),function(commonLanguage){return _c('option',{key:commonLanguage.code,domProps:{\"selected\":_vm.language.code === commonLanguage.code,\"value\":commonLanguage.code}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(commonLanguage.name)+\"\\n\\t\\t\")])}),_vm._v(\" \"),_c('option',{attrs:{\"disabled\":\"\"}},[_vm._v(\"\\n\\t\\t\\t──────────\\n\\t\\t\")]),_vm._v(\" \"),_vm._l((_vm.otherLanguages),function(otherLanguage){return _c('option',{key:otherLanguage.code,domProps:{\"selected\":_vm.language.code === otherLanguage.code,\"value\":otherLanguage.code}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(otherLanguage.name)+\"\\n\\t\\t\")])})],2),_vm._v(\" \"),_c('a',{attrs:{\"href\":\"https://www.transifex.com/nextcloud/nextcloud/\",\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_c('em',[_vm._v(_vm._s(_vm.t('settings', 'Help translate')))])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :input-id=\"inputId\"\n\t\t\t:readable=\"propertyReadable\" />\n\n\t\t<template v-if=\"isEditable\">\n\t\t\t<Language :input-id=\"inputId\"\n\t\t\t\t:common-languages=\"commonLanguages\"\n\t\t\t\t:other-languages=\"otherLanguages\"\n\t\t\t\t:language.sync=\"language\" />\n\t\t</template>\n\n\t\t<span v-else>\n\t\t\t{{ t('settings', 'No language set') }}\n\t\t</span>\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport Language from './Language.vue'\nimport HeaderBar from '../shared/HeaderBar.vue'\n\nimport { ACCOUNT_SETTING_PROPERTY_ENUM, ACCOUNT_SETTING_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants.js'\n\nconst { languageMap: { activeLanguage, commonLanguages, otherLanguages } } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'LanguageSection',\n\n\tcomponents: {\n\t\tLanguage,\n\t\tHeaderBar,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tpropertyReadable: ACCOUNT_SETTING_PROPERTY_READABLE_ENUM.LANGUAGE,\n\t\t\tcommonLanguages,\n\t\t\totherLanguages,\n\t\t\tlanguage: activeLanguage,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tinputId() {\n\t\t\treturn `account-setting-${ACCOUNT_SETTING_PROPERTY_ENUM.LANGUAGE}`\n\t\t},\n\n\t\tisEditable() {\n\t\t\treturn Boolean(this.language)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LanguageSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LanguageSection.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LanguageSection.vue?vue&type=style&index=0&id=92685b76&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LanguageSection.vue?vue&type=style&index=0&id=92685b76&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./LanguageSection.vue?vue&type=template&id=92685b76&scoped=true&\"\nimport script from \"./LanguageSection.vue?vue&type=script&lang=js&\"\nexport * from \"./LanguageSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LanguageSection.vue?vue&type=style&index=0&id=92685b76&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"92685b76\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',[_c('HeaderBar',{attrs:{\"input-id\":_vm.inputId,\"readable\":_vm.propertyReadable}}),_vm._v(\" \"),(_vm.isEditable)?[_c('Language',{attrs:{\"input-id\":_vm.inputId,\"common-languages\":_vm.commonLanguages,\"other-languages\":_vm.otherLanguages,\"language\":_vm.language},on:{\"update:language\":function($event){_vm.language=$event}}})]:_c('span',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'No language set'))+\"\\n\\t\")])],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',[_c('HeaderBar',{attrs:{\"input-id\":_vm.inputId,\"readable\":_vm.propertyReadable}}),_vm._v(\" \"),(_vm.isEditable)?[_c('Locale',{attrs:{\"input-id\":_vm.inputId,\"locales-for-language\":_vm.localesForLanguage,\"other-locales\":_vm.otherLocales,\"locale\":_vm.locale},on:{\"update:locale\":function($event){_vm.locale=$event}}})]:_c('span',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'No locale set'))+\"\\n\\t\")])],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div class=\"locale\">\n\t\t<select :id=\"inputId\"\n\t\t\t:placeholder=\"t('settings', 'Locale')\"\n\t\t\t@change=\"onLocaleChange\">\n\t\t\t<option v-for=\"currentLocale in localesForLanguage\"\n\t\t\t\t:key=\"currentLocale.code\"\n\t\t\t\t:selected=\"locale.code === currentLocale.code\"\n\t\t\t\t:value=\"currentLocale.code\">\n\t\t\t\t{{ currentLocale.name }}\n\t\t\t</option>\n\t\t\t<option disabled>\n\t\t\t\t──────────\n\t\t\t</option>\n\t\t\t<option v-for=\"currentLocale in otherLocales\"\n\t\t\t\t:key=\"currentLocale.code\"\n\t\t\t\t:selected=\"locale.code === currentLocale.code\"\n\t\t\t\t:value=\"currentLocale.code\">\n\t\t\t\t{{ currentLocale.name }}\n\t\t\t</option>\n\t\t</select>\n\n\t\t<div class=\"example\">\n\t\t\t<Web :size=\"20\" />\n\t\t\t<div class=\"example__text\">\n\t\t\t\t<p>\n\t\t\t\t\t<span>{{ example.date }}</span>\n\t\t\t\t\t<span>{{ example.time }}</span>\n\t\t\t\t</p>\n\t\t\t\t<p>\n\t\t\t\t\t{{ t('settings', 'Week starts on {firstDayOfWeek}', { firstDayOfWeek: this.example.firstDayOfWeek }) }}\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport moment from '@nextcloud/moment'\nimport Web from 'vue-material-design-icons/Web.vue'\n\nimport { ACCOUNT_SETTING_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants.js'\nimport { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService.js'\nimport { validateLocale } from '../../../utils/validate.js'\nimport { handleError } from '../../../utils/handlers.js'\n\nexport default {\n\tname: 'Locale',\n\n\tcomponents: {\n\t\tWeb,\n\t},\n\n\tprops: {\n\t\tinputId: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\tlocale: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tlocalesForLanguage: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\totherLocales: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialLocale: this.locale,\n\t\t\texample: {\n\t\t\t\tdate: moment().format('L'),\n\t\t\t\ttime: moment().format('LTS'),\n\t\t\t\tfirstDayOfWeek: window.dayNames[window.firstDay],\n\t\t\t},\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tallLocales() {\n\t\t\treturn Object.freeze(\n\t\t\t\t[...this.localesForLanguage, ...this.otherLocales]\n\t\t\t\t\t.reduce((acc, { code, name }) => ({ ...acc, [code]: name }), {})\n\t\t\t)\n\t\t},\n\t},\n\n\tcreated() {\n\t\tsetInterval(this.refreshExample, 1000)\n\t},\n\n\tmethods: {\n\t\tasync onLocaleChange(e) {\n\t\t\tconst locale = this.constructLocale(e.target.value)\n\t\t\tthis.$emit('update:locale', locale)\n\n\t\t\tif (validateLocale(locale)) {\n\t\t\t\tawait this.updateLocale(locale)\n\t\t\t}\n\t\t},\n\n\t\tasync updateLocale(locale) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountProperty(ACCOUNT_SETTING_PROPERTY_ENUM.LOCALE, locale.code)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tlocale,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t\tthis.reloadPage()\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update locale'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\tconstructLocale(localeCode) {\n\t\t\treturn {\n\t\t\t\tcode: localeCode,\n\t\t\t\tname: this.allLocales[localeCode],\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ locale, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\tthis.initialLocale = locale\n\t\t\t} else {\n\t\t\t\tthis.$emit('update:locale', this.initialLocale)\n\t\t\t\thandleError(error, errorMessage)\n\t\t\t}\n\t\t},\n\n\t\trefreshExample() {\n\t\t\tthis.example = {\n\t\t\t\tdate: moment().format('L'),\n\t\t\t\ttime: moment().format('LTS'),\n\t\t\t\tfirstDayOfWeek: window.dayNames[window.firstDay],\n\t\t\t}\n\t\t},\n\n\t\treloadPage() {\n\t\t\tlocation.reload()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.locale {\n\tdisplay: grid;\n\n\tselect {\n\t\twidth: 100%;\n\t}\n}\n\n.example {\n\tmargin: 10px 0;\n\tdisplay: flex;\n\tgap: 0 10px;\n\tcolor: var(--color-text-lighter);\n\n\t&::v-deep .material-design-icon {\n\t\talign-self: flex-start;\n\t\tmargin-top: 2px;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Locale.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Locale.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Locale.vue?vue&type=style&index=0&id=1ac456dc&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Locale.vue?vue&type=style&index=0&id=1ac456dc&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Locale.vue?vue&type=template&id=1ac456dc&scoped=true&\"\nimport script from \"./Locale.vue?vue&type=script&lang=js&\"\nexport * from \"./Locale.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Locale.vue?vue&type=style&index=0&id=1ac456dc&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1ac456dc\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"locale\"},[_c('select',{attrs:{\"id\":_vm.inputId,\"placeholder\":_vm.t('settings', 'Locale')},on:{\"change\":_vm.onLocaleChange}},[_vm._l((_vm.localesForLanguage),function(currentLocale){return _c('option',{key:currentLocale.code,domProps:{\"selected\":_vm.locale.code === currentLocale.code,\"value\":currentLocale.code}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(currentLocale.name)+\"\\n\\t\\t\")])}),_vm._v(\" \"),_c('option',{attrs:{\"disabled\":\"\"}},[_vm._v(\"\\n\\t\\t\\t──────────\\n\\t\\t\")]),_vm._v(\" \"),_vm._l((_vm.otherLocales),function(currentLocale){return _c('option',{key:currentLocale.code,domProps:{\"selected\":_vm.locale.code === currentLocale.code,\"value\":currentLocale.code}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(currentLocale.name)+\"\\n\\t\\t\")])})],2),_vm._v(\" \"),_c('div',{staticClass:\"example\"},[_c('Web',{attrs:{\"size\":20}}),_vm._v(\" \"),_c('div',{staticClass:\"example__text\"},[_c('p',[_c('span',[_vm._v(_vm._s(_vm.example.date))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.example.time))])]),_vm._v(\" \"),_c('p',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Week starts on {firstDayOfWeek}', { firstDayOfWeek: this.example.firstDayOfWeek }))+\"\\n\\t\\t\\t\")])])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :input-id=\"inputId\"\n\t\t\t:readable=\"propertyReadable\" />\n\n\t\t<template v-if=\"isEditable\">\n\t\t\t<Locale :input-id=\"inputId\"\n\t\t\t\t:locales-for-language=\"localesForLanguage\"\n\t\t\t\t:other-locales=\"otherLocales\"\n\t\t\t\t:locale.sync=\"locale\" />\n\t\t</template>\n\n\t\t<span v-else>\n\t\t\t{{ t('settings', 'No locale set') }}\n\t\t</span>\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport Locale from './Locale.vue'\nimport HeaderBar from '../shared/HeaderBar.vue'\n\nimport { ACCOUNT_SETTING_PROPERTY_ENUM, ACCOUNT_SETTING_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants.js'\n\nconst { localeMap: { activeLocale, localesForLanguage, otherLocales } } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'LocaleSection',\n\n\tcomponents: {\n\t\tLocale,\n\t\tHeaderBar,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tpropertyReadable: ACCOUNT_SETTING_PROPERTY_READABLE_ENUM.LOCALE,\n\t\t\tlocalesForLanguage,\n\t\t\totherLocales,\n\t\t\tlocale: activeLocale,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tinputId() {\n\t\t\treturn `account-setting-${ACCOUNT_SETTING_PROPERTY_ENUM.LOCALE}`\n\t\t},\n\n\t\tisEditable() {\n\t\t\treturn Boolean(this.locale)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocaleSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocaleSection.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocaleSection.vue?vue&type=style&index=0&id=84fca724&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocaleSection.vue?vue&type=style&index=0&id=84fca724&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./LocaleSection.vue?vue&type=template&id=84fca724&scoped=true&\"\nimport script from \"./LocaleSection.vue?vue&type=script&lang=js&\"\nexport * from \"./LocaleSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LocaleSection.vue?vue&type=style&index=0&id=84fca724&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"84fca724\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditProfileAnchorLink.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditProfileAnchorLink.vue?vue&type=script&lang=js&\"","<!--\n\t- @copyright 2021 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<a :class=\"{ disabled }\"\n\t\thref=\"#profile-visibility\"\n\t\tv-on=\"$listeners\">\n\t\t<ChevronDownIcon class=\"anchor-icon\"\n\t\t\t:size=\"22\" />\n\t\t{{ t('settings', 'Edit your Profile visibility') }}\n\t</a>\n</template>\n\n<script>\nimport ChevronDownIcon from 'vue-material-design-icons/ChevronDown.vue'\n\nexport default {\n\tname: 'EditProfileAnchorLink',\n\n\tcomponents: {\n\t\tChevronDownIcon,\n\t},\n\n\tprops: {\n\t\tprofileEnabled: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tdisabled() {\n\t\t\treturn !this.profileEnabled\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\nhtml {\n\tscroll-behavior: smooth;\n\n\t@media screen and (prefers-reduced-motion: reduce) {\n\t\tscroll-behavior: auto;\n\t}\n}\n</style>\n\n<style lang=\"scss\" scoped>\na {\n\tdisplay: block;\n\theight: 44px;\n\twidth: 290px;\n\tline-height: 44px;\n\tpadding: 0 16px;\n\tmargin: 14px auto;\n\tborder-radius: var(--border-radius-pill);\n\topacity: 0.4;\n\tbackground-color: transparent;\n\n\t.anchor-icon {\n\t\tdisplay: inline-block;\n\t\tvertical-align: middle;\n\t\tmargin-top: 6px;\n\t\tmargin-right: 8px;\n\t}\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\topacity: 0.8;\n\t\tbackground-color: rgba(127, 127, 127, .25);\n\t}\n\n\t&.disabled {\n\t\tpointer-events: none;\n\t}\n}\n</style>\n","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditProfileAnchorLink.vue?vue&type=style&index=0&id=1caba458&prod&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditProfileAnchorLink.vue?vue&type=style&index=0&id=1caba458&prod&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditProfileAnchorLink.vue?vue&type=style&index=1&id=1caba458&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditProfileAnchorLink.vue?vue&type=style&index=1&id=1caba458&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./EditProfileAnchorLink.vue?vue&type=template&id=1caba458&scoped=true&\"\nimport script from \"./EditProfileAnchorLink.vue?vue&type=script&lang=js&\"\nexport * from \"./EditProfileAnchorLink.vue?vue&type=script&lang=js&\"\nimport style0 from \"./EditProfileAnchorLink.vue?vue&type=style&index=0&id=1caba458&prod&lang=scss&\"\nimport style1 from \"./EditProfileAnchorLink.vue?vue&type=style&index=1&id=1caba458&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 \"1caba458\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('a',_vm._g({class:{ disabled: _vm.disabled },attrs:{\"href\":\"#profile-visibility\"}},_vm.$listeners),[_c('ChevronDownIcon',{staticClass:\"anchor-icon\",attrs:{\"size\":22}}),_vm._v(\"\\n\\t\"+_vm._s(_vm.t('settings', 'Edit your Profile visibility'))+\"\\n\")],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"checkbox-container\"},[_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"checked\":_vm.isProfileEnabled,\"loading\":_vm.loading},on:{\"update:checked\":[function($event){_vm.isProfileEnabled=$event},_vm.saveEnableProfile]}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Enable Profile'))+\"\\n\\t\")])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div class=\"checkbox-container\">\n\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t:checked.sync=\"isProfileEnabled\"\n\t\t\t:loading=\"loading\"\n\t\t\t@update:checked=\"saveEnableProfile\">\n\t\t\t{{ t('settings', 'Enable Profile') }}\n\t\t</NcCheckboxRadioSwitch>\n\t</div>\n</template>\n\n<script>\nimport { emit } from '@nextcloud/event-bus'\n\nimport { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService.js'\nimport { ACCOUNT_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants.js'\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js'\nimport { handleError } from '../../../utils/handlers.js'\n\nexport default {\n\tname: 'ProfileCheckbox',\n\n\tcomponents: {\n\t\tNcCheckboxRadioSwitch,\n\t},\n\n\tprops: {\n\t\tprofileEnabled: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tisProfileEnabled: this.profileEnabled,\n\t\t\tloading: false,\n\t\t}\n\t},\n\n\tmethods: {\n\t\tasync saveEnableProfile() {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountProperty(ACCOUNT_PROPERTY_ENUM.PROFILE_ENABLED, this.isProfileEnabled)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tisProfileEnabled: this.isProfileEnabled,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update profile enabled state'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ isProfileEnabled, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\temit('settings:profile-enabled:updated', isProfileEnabled)\n\t\t\t} else {\n\t\t\t\thandleError(error, errorMessage)\n\t\t\t}\n\t\t\tthis.loading = false\n\t\t},\n\t},\n}\n</script>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileCheckbox.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileCheckbox.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ProfileCheckbox.vue?vue&type=template&id=061ac04c&\"\nimport script from \"./ProfileCheckbox.vue?vue&type=script&lang=js&\"\nexport * from \"./ProfileCheckbox.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfilePreviewCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfilePreviewCard.vue?vue&type=script&lang=js&\"","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<a class=\"preview-card\"\n\t\t:class=\"{ disabled }\"\n\t\t:href=\"profilePageLink\">\n\t\t<NcAvatar class=\"preview-card__avatar\"\n\t\t\t:user=\"userId\"\n\t\t\t:size=\"48\"\n\t\t\t:show-user-status=\"true\"\n\t\t\t:show-user-status-compact=\"false\"\n\t\t\t:disable-menu=\"true\"\n\t\t\t:disable-tooltip=\"true\" />\n\t\t<div class=\"preview-card__header\">\n\t\t\t<span>{{ displayName }}</span>\n\t\t</div>\n\t\t<div class=\"preview-card__footer\">\n\t\t\t<span>{{ organisation }}</span>\n\t\t</div>\n\t</a>\n</template>\n\n<script>\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateUrl } from '@nextcloud/router'\n\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js'\n\nexport default {\n\tname: 'ProfilePreviewCard',\n\n\tcomponents: {\n\t\tNcAvatar,\n\t},\n\n\tprops: {\n\t\tdisplayName: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\torganisation: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tprofileEnabled: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tuserId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tdisabled() {\n\t\t\treturn !this.profileEnabled\n\t\t},\n\n\t\tprofilePageLink() {\n\t\t\tif (this.profileEnabled) {\n\t\t\t\treturn generateUrl('/u/{userId}', { userId: getCurrentUser().uid })\n\t\t\t}\n\t\t\t// Since an anchor element is used rather than a button for better UX,\n\t\t\t// this hack removes href if the profile is disabled so that disabling pointer-events is not needed to prevent a click from opening a page\n\t\t\t// and to allow the hover event (which disabling pointer-events wouldn't allow) for styling\n\t\t\treturn null\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.preview-card {\n\tdisplay: flex;\n\tflex-direction: column;\n\tposition: relative;\n\twidth: 290px;\n\theight: 116px;\n\tmargin: 14px auto;\n\tborder-radius: var(--border-radius-large);\n\tbackground-color: var(--color-main-background);\n\tfont-weight: bold;\n\tbox-shadow: 0 2px 9px var(--color-box-shadow);\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\tbox-shadow: 0 2px 12px var(--color-box-shadow);\n\t}\n\n\t&:focus-visible {\n\t\toutline: var(--color-main-text) solid 1px;\n\t\toutline-offset: 3px;\n\t}\n\n\t&.disabled {\n\t\tfilter: grayscale(1);\n\t\topacity: 0.5;\n\t\tcursor: default;\n\t\tbox-shadow: 0 0 3px var(--color-box-shadow);\n\n\t\t& *,\n\t\t&::v-deep * {\n\t\t\tcursor: default;\n\t\t}\n\t}\n\n\t&__avatar {\n\t\t// Override Avatar component position to fix positioning on rerender\n\t\tposition: absolute !important;\n\t\ttop: 40px;\n\t\tleft: 18px;\n\t\tz-index: 1;\n\n\t\t&:not(.avatardiv--unknown) {\n\t\t\tbox-shadow: 0 0 0 3px var(--color-main-background) !important;\n\t\t}\n\t}\n\n\t&__header,\n\t&__footer {\n\t\tposition: relative;\n\t\twidth: auto;\n\n\t\tspan {\n\t\t\tposition: absolute;\n\t\t\tleft: 78px;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\toverflow-wrap: anywhere;\n\n\t\t\t@supports (-webkit-line-clamp: 2) {\n\t\t\t\tdisplay: -webkit-box;\n\t\t\t\t-webkit-line-clamp: 2;\n\t\t\t\t-webkit-box-orient: vertical;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__header {\n\t\theight: 70px;\n\t\tborder-radius: var(--border-radius-large) var(--border-radius-large) 0 0;\n\t\tbackground-color: var(--color-primary);\n\t\tbackground-image: var(--gradient-primary-background);\n\n\t\tspan {\n\t\t\tbottom: 0;\n\t\t\tcolor: var(--color-primary-text);\n\t\t\tfont-size: 18px;\n\t\t\tfont-weight: bold;\n\t\t\tmargin: 0 4px 8px 0;\n\t\t}\n\t}\n\n\t&__footer {\n\t\theight: 46px;\n\n\t\tspan {\n\t\t\ttop: 0;\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\tfont-size: 14px;\n\t\t\tfont-weight: normal;\n\t\t\tmargin: 4px 4px 0 0;\n\t\t\tline-height: 1.3;\n\t\t}\n\t}\n}\n</style>\n","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfilePreviewCard.vue?vue&type=style&index=0&id=61586aa5&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfilePreviewCard.vue?vue&type=style&index=0&id=61586aa5&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ProfilePreviewCard.vue?vue&type=template&id=61586aa5&scoped=true&\"\nimport script from \"./ProfilePreviewCard.vue?vue&type=script&lang=js&\"\nexport * from \"./ProfilePreviewCard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ProfilePreviewCard.vue?vue&type=style&index=0&id=61586aa5&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"61586aa5\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('a',{staticClass:\"preview-card\",class:{ disabled: _vm.disabled },attrs:{\"href\":_vm.profilePageLink}},[_c('NcAvatar',{staticClass:\"preview-card__avatar\",attrs:{\"user\":_vm.userId,\"size\":48,\"show-user-status\":true,\"show-user-status-compact\":false,\"disable-menu\":true,\"disable-tooltip\":true}}),_vm._v(\" \"),_c('div',{staticClass:\"preview-card__header\"},[_c('span',[_vm._v(_vm._s(_vm.displayName))])]),_vm._v(\" \"),_c('div',{staticClass:\"preview-card__footer\"},[_c('span',[_vm._v(_vm._s(_vm.organisation))])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :readable=\"propertyReadable\" />\n\n\t\t<ProfileCheckbox :profile-enabled.sync=\"profileEnabled\" />\n\n\t\t<ProfilePreviewCard :organisation=\"organisation\"\n\t\t\t:display-name=\"displayName\"\n\t\t\t:profile-enabled=\"profileEnabled\"\n\t\t\t:user-id=\"userId\" />\n\n\t\t<EditProfileAnchorLink :profile-enabled=\"profileEnabled\" />\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\n\nimport EditProfileAnchorLink from './EditProfileAnchorLink.vue'\nimport HeaderBar from '../shared/HeaderBar.vue'\nimport ProfileCheckbox from './ProfileCheckbox.vue'\nimport ProfilePreviewCard from './ProfilePreviewCard.vue'\n\nimport { ACCOUNT_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants.js'\n\nconst {\n\torganisation: { value: organisation },\n\tdisplayName: { value: displayName },\n\tprofileEnabled,\n\tuserId,\n} = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'ProfileSection',\n\n\tcomponents: {\n\t\tEditProfileAnchorLink,\n\t\tHeaderBar,\n\t\tProfileCheckbox,\n\t\tProfilePreviewCard,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tpropertyReadable: ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED,\n\t\t\torganisation,\n\t\t\tdisplayName,\n\t\t\tprofileEnabled,\n\t\t\tuserId,\n\t\t}\n\t},\n\n\tmounted() {\n\t\tsubscribe('settings:display-name:updated', this.handleDisplayNameUpdate)\n\t\tsubscribe('settings:organisation:updated', this.handleOrganisationUpdate)\n\t},\n\n\tbeforeDestroy() {\n\t\tunsubscribe('settings:display-name:updated', this.handleDisplayNameUpdate)\n\t\tunsubscribe('settings:organisation:updated', this.handleOrganisationUpdate)\n\t},\n\n\tmethods: {\n\t\thandleDisplayNameUpdate(displayName) {\n\t\t\tthis.displayName = displayName\n\t\t},\n\n\t\thandleOrganisationUpdate(organisation) {\n\t\t\tthis.organisation = organisation\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileSection.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileSection.vue?vue&type=style&index=0&id=cf64d964&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileSection.vue?vue&type=style&index=0&id=cf64d964&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ProfileSection.vue?vue&type=template&id=cf64d964&scoped=true&\"\nimport script from \"./ProfileSection.vue?vue&type=script&lang=js&\"\nexport * from \"./ProfileSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ProfileSection.vue?vue&type=style&index=0&id=cf64d964&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"cf64d964\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',[_c('HeaderBar',{attrs:{\"readable\":_vm.propertyReadable}}),_vm._v(\" \"),_c('ProfileCheckbox',{attrs:{\"profile-enabled\":_vm.profileEnabled},on:{\"update:profileEnabled\":function($event){_vm.profileEnabled=$event},\"update:profile-enabled\":function($event){_vm.profileEnabled=$event}}}),_vm._v(\" \"),_c('ProfilePreviewCard',{attrs:{\"organisation\":_vm.organisation,\"display-name\":_vm.displayName,\"profile-enabled\":_vm.profileEnabled,\"user-id\":_vm.userId}}),_vm._v(\" \"),_c('EditProfileAnchorLink',{attrs:{\"profile-enabled\":_vm.profileEnabled}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<AccountPropertySection v-bind.sync=\"organisation\"\n\t\t:placeholder=\"t('settings', 'Your organisation')\" />\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport AccountPropertySection from './shared/AccountPropertySection.vue'\n\nimport { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js'\n\nconst { organisation } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'OrganisationSection',\n\n\tcomponents: {\n\t\tAccountPropertySection,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\torganisation: { ...organisation, readable: NAME_READABLE_ENUM[organisation.name] },\n\t\t}\n\t},\n}\n</script>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OrganisationSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OrganisationSection.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./OrganisationSection.vue?vue&type=template&id=50ddf4bd&\"\nimport script from \"./OrganisationSection.vue?vue&type=script&lang=js&\"\nexport * from \"./OrganisationSection.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('AccountPropertySection',_vm._b({attrs:{\"placeholder\":_vm.t('settings', 'Your organisation')}},'AccountPropertySection',_vm.organisation,false,true))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<AccountPropertySection v-bind.sync=\"role\"\n\t\t:placeholder=\"t('settings', 'Your role')\" />\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport AccountPropertySection from './shared/AccountPropertySection.vue'\n\nimport { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js'\n\nconst { role } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'RoleSection',\n\n\tcomponents: {\n\t\tAccountPropertySection,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\trole: { ...role, readable: NAME_READABLE_ENUM[role.name] },\n\t\t}\n\t},\n}\n</script>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RoleSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RoleSection.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RoleSection.vue?vue&type=template&id=3dbe0705&\"\nimport script from \"./RoleSection.vue?vue&type=script&lang=js&\"\nexport * from \"./RoleSection.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('AccountPropertySection',_vm._b({attrs:{\"placeholder\":_vm.t('settings', 'Your role')}},'AccountPropertySection',_vm.role,false,true))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<AccountPropertySection v-bind.sync=\"headline\"\n\t\t:placeholder=\"t('settings', 'Your headline')\" />\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport AccountPropertySection from './shared/AccountPropertySection.vue'\n\nimport { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js'\n\nconst { headline } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'HeadlineSection',\n\n\tcomponents: {\n\t\tAccountPropertySection,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\theadline: { ...headline, readable: NAME_READABLE_ENUM[headline.name] },\n\t\t}\n\t},\n}\n</script>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeadlineSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeadlineSection.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./HeadlineSection.vue?vue&type=template&id=0f3859ee&\"\nimport script from \"./HeadlineSection.vue?vue&type=script&lang=js&\"\nexport * from \"./HeadlineSection.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('AccountPropertySection',_vm._b({attrs:{\"placeholder\":_vm.t('settings', 'Your headline')}},'AccountPropertySection',_vm.headline,false,true))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<AccountPropertySection v-bind.sync=\"biography\"\n\t\t:placeholder=\"t('settings', 'Your biography')\"\n\t\t:multi-line=\"true\" />\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport AccountPropertySection from './shared/AccountPropertySection.vue'\n\nimport { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js'\n\nconst { biography } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'BiographySection',\n\n\tcomponents: {\n\t\tAccountPropertySection,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tbiography: { ...biography, readable: NAME_READABLE_ENUM[biography.name] },\n\t\t}\n\t},\n}\n</script>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BiographySection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BiographySection.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./BiographySection.vue?vue&type=template&id=a916ca60&\"\nimport script from \"./BiographySection.vue?vue&type=script&lang=js&\"\nexport * from \"./BiographySection.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('AccountPropertySection',_vm._b({attrs:{\"placeholder\":_vm.t('settings', 'Your biography'),\"multi-line\":true}},'AccountPropertySection',_vm.biography,false,true))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',{style:({ marginLeft: _vm.marginLeft }),attrs:{\"id\":\"profile-visibility\"}},[_c('HeaderBar',{attrs:{\"is-heading\":true,\"readable\":_vm.heading}}),_vm._v(\" \"),_c('em',{class:{ disabled: _vm.disabled }},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'The more restrictive setting of either visibility or scope is respected on your Profile. For example, if visibility is set to \"Show to everyone\" and scope is set to \"Private\", \"Private\" is respected.'))+\"\\n\\t\")]),_vm._v(\" \"),_c('div',{staticClass:\"visibility-dropdowns\",style:({\n\t\t\tgridTemplateRows: `repeat(${_vm.rows}, 44px)`,\n\t\t})},_vm._l((_vm.visibilityParams),function(param){return _c('VisibilityDropdown',{key:param.id,attrs:{\"param-id\":param.id,\"display-id\":param.displayId,\"visibility\":param.visibility},on:{\"update:visibility\":function($event){return _vm.$set(param, \"visibility\", $event)}}})}),1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2021 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { confirmPassword } from '@nextcloud/password-confirmation'\nimport '@nextcloud/password-confirmation/dist/style.css'\n\n/**\n * Save the visibility of the profile parameter\n *\n * @param {string} paramId the profile parameter ID\n * @param {string} visibility the visibility\n * @return {object}\n */\nexport const saveProfileParameterVisibility = async (paramId, visibility) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('/profile/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tparamId,\n\t\tvisibility,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save profile default\n *\n * @param {boolean} isEnabled the default\n * @return {object}\n */\nexport const saveProfileDefault = async (isEnabled) => {\n\t// Convert to string for compatibility\n\tisEnabled = isEnabled ? '1' : '0'\n\n\tconst url = generateOcsUrl('/apps/provisioning_api/api/v1/config/apps/{appId}/{key}', {\n\t\tappId: 'settings',\n\t\tkey: 'profile_enabled_by_default',\n\t})\n\n\tawait confirmPassword()\n\n\tconst res = await axios.post(url, {\n\t\tvalue: isEnabled,\n\t})\n\n\treturn res.data\n}\n","/**\n * @copyright 2021 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/*\n * SYNC to be kept in sync with `core/Db/ProfileConfig.php`\n */\n\n/** Enum of profile visibility constants */\nexport const VISIBILITY_ENUM = Object.freeze({\n\tSHOW: 'show',\n\tSHOW_USERS_ONLY: 'show_users_only',\n\tHIDE: 'hide',\n})\n\n/**\n * Enum of profile visibility constants to properties\n */\nexport const VISIBILITY_PROPERTY_ENUM = Object.freeze({\n\t[VISIBILITY_ENUM.SHOW]: {\n\t\tname: VISIBILITY_ENUM.SHOW,\n\t\tlabel: t('settings', 'Show to everyone'),\n\t},\n\t[VISIBILITY_ENUM.SHOW_USERS_ONLY]: {\n\t\tname: VISIBILITY_ENUM.SHOW_USERS_ONLY,\n\t\tlabel: t('settings', 'Show to logged in users only'),\n\t},\n\t[VISIBILITY_ENUM.HIDE]: {\n\t\tname: VISIBILITY_ENUM.HIDE,\n\t\tlabel: t('settings', 'Hide'),\n\t},\n})\n","<!--\n\t- @copyright 2021 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div class=\"visibility-container\"\n\t\t:class=\"{ disabled }\">\n\t\t<label :for=\"inputId\">\n\t\t\t{{ displayId }}\n\t\t</label>\n\t\t<NcSelect :input-id=\"inputId\"\n\t\t\tclass=\"visibility-container__select\"\n\t\t\t:clearable=\"false\"\n\t\t\t:options=\"visibilityOptions\"\n\t\t\t:value=\"visibilityObject\"\n\t\t\t@option:selected=\"onVisibilityChange\" />\n\t</div>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\n\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\n\nimport { saveProfileParameterVisibility } from '../../../service/ProfileService.js'\nimport { VISIBILITY_PROPERTY_ENUM } from '../../../constants/ProfileConstants.js'\nimport { handleError } from '../../../utils/handlers.js'\n\nconst { profileEnabled } = loadState('settings', 'personalInfoParameters', false)\n\nexport default {\n\tname: 'VisibilityDropdown',\n\n\tcomponents: {\n\t\tNcSelect,\n\t},\n\n\tprops: {\n\t\tparamId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tdisplayId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tvisibility: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialVisibility: this.visibility,\n\t\t\tprofileEnabled,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tdisabled() {\n\t\t\treturn !this.profileEnabled\n\t\t},\n\n\t\tinputId() {\n\t\t\treturn `profile-visibility-${this.paramId}`\n\t\t},\n\n\t\tvisibilityObject() {\n\t\t\treturn VISIBILITY_PROPERTY_ENUM[this.visibility]\n\t\t},\n\n\t\tvisibilityOptions() {\n\t\t\treturn Object.values(VISIBILITY_PROPERTY_ENUM)\n\t\t},\n\t},\n\n\tmounted() {\n\t\tsubscribe('settings:profile-enabled:updated', this.handleProfileEnabledUpdate)\n\t},\n\n\tbeforeDestroy() {\n\t\tunsubscribe('settings:profile-enabled:updated', this.handleProfileEnabledUpdate)\n\t},\n\n\tmethods: {\n\t\tasync onVisibilityChange(visibilityObject) {\n\t\t\t// This check is needed as the argument is null when selecting the same option\n\t\t\tif (visibilityObject !== null) {\n\t\t\t\tconst { name: visibility } = visibilityObject\n\t\t\t\tthis.$emit('update:visibility', visibility)\n\n\t\t\t\tif (visibility !== '') {\n\t\t\t\t\tawait this.updateVisibility(visibility)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tasync updateVisibility(visibility) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await saveProfileParameterVisibility(this.paramId, visibility)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tvisibility,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update visibility of {displayId}', { displayId: this.displayId }),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ visibility, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\t// Ensure that local state reflects server state\n\t\t\t\tthis.initialVisibility = visibility\n\t\t\t} else {\n\t\t\t\thandleError(error, errorMessage)\n\t\t\t}\n\t\t},\n\n\t\thandleProfileEnabledUpdate(profileEnabled) {\n\t\t\tthis.profileEnabled = profileEnabled\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.visibility-container {\n\tdisplay: flex;\n\twidth: max-content;\n\n\t&.disabled {\n\t\tfilter: grayscale(1);\n\t\topacity: 0.5;\n\t\tcursor: default;\n\t\tpointer-events: none;\n\n\t\t& *,\n\t\t&::v-deep * {\n\t\t\tcursor: default;\n\t\t\tpointer-events: none;\n\t\t}\n\t}\n\n\tlabel {\n\t\tcolor: var(--color-text-lighter);\n\t\twidth: 150px;\n\t\tline-height: 50px;\n\t}\n\n\t&__select {\n\t\twidth: 270px;\n\t\tmax-width: 40vw;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VisibilityDropdown.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VisibilityDropdown.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VisibilityDropdown.vue?vue&type=style&index=0&id=b13d20da&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VisibilityDropdown.vue?vue&type=style&index=0&id=b13d20da&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./VisibilityDropdown.vue?vue&type=template&id=b13d20da&scoped=true&\"\nimport script from \"./VisibilityDropdown.vue?vue&type=script&lang=js&\"\nexport * from \"./VisibilityDropdown.vue?vue&type=script&lang=js&\"\nimport style0 from \"./VisibilityDropdown.vue?vue&type=style&index=0&id=b13d20da&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b13d20da\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"visibility-container\",class:{ disabled: _vm.disabled }},[_c('label',{attrs:{\"for\":_vm.inputId}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.displayId)+\"\\n\\t\")]),_vm._v(\" \"),_c('NcSelect',{staticClass:\"visibility-container__select\",attrs:{\"input-id\":_vm.inputId,\"clearable\":false,\"options\":_vm.visibilityOptions,\"value\":_vm.visibilityObject},on:{\"option:selected\":_vm.onVisibilityChange}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<!-- TODO remove this inline margin placeholder once the settings layout is updated -->\n\t<section id=\"profile-visibility\"\n\t\t:style=\"{ marginLeft }\">\n\t\t<HeaderBar :is-heading=\"true\" :readable=\"heading\" />\n\n\t\t<em :class=\"{ disabled }\">\n\t\t\t{{ t('settings', 'The more restrictive setting of either visibility or scope is respected on your Profile. For example, if visibility is set to \"Show to everyone\" and scope is set to \"Private\", \"Private\" is respected.') }}\n\t\t</em>\n\n\t\t<div class=\"visibility-dropdowns\"\n\t\t\t:style=\"{\n\t\t\t\tgridTemplateRows: `repeat(${rows}, 44px)`,\n\t\t\t}\">\n\t\t\t<VisibilityDropdown v-for=\"param in visibilityParams\"\n\t\t\t\t:key=\"param.id\"\n\t\t\t\t:param-id=\"param.id\"\n\t\t\t\t:display-id=\"param.displayId\"\n\t\t\t\t:visibility.sync=\"param.visibility\" />\n\t\t</div>\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\n\nimport HeaderBar from '../shared/HeaderBar.vue'\nimport VisibilityDropdown from './VisibilityDropdown.vue'\nimport { PROFILE_READABLE_ENUM } from '../../../constants/AccountPropertyConstants.js'\n\nconst { profileConfig } = loadState('settings', 'profileParameters', {})\nconst { profileEnabled } = loadState('settings', 'personalInfoParameters', false)\n\nconst compareParams = (a, b) => {\n\tif (a.appId === b.appId || (a.appId !== 'core' && b.appId !== 'core')) {\n\t\treturn a.displayId.localeCompare(b.displayId)\n\t} else if (a.appId === 'core') {\n\t\treturn 1\n\t} else {\n\t\treturn -1\n\t}\n}\n\nexport default {\n\tname: 'ProfileVisibilitySection',\n\n\tcomponents: {\n\t\tHeaderBar,\n\t\tVisibilityDropdown,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\theading: PROFILE_READABLE_ENUM.PROFILE_VISIBILITY,\n\t\t\tprofileEnabled,\n\t\t\tvisibilityParams: Object.entries(profileConfig)\n\t\t\t\t.map(([paramId, { appId, displayId, visibility }]) => ({ id: paramId, appId, displayId, visibility }))\n\t\t\t\t.sort(compareParams),\n\t\t\t// TODO remove this when not used once the settings layout is updated\n\t\t\tmarginLeft: window.matchMedia('(min-width: 1600px)').matches\n\t\t\t\t? window.getComputedStyle(document.getElementById('vue-avatar-section')).getPropertyValue('width').trim()\n\t\t\t\t: '0px',\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tdisabled() {\n\t\t\treturn !this.profileEnabled\n\t\t},\n\n\t\trows() {\n\t\t\treturn Math.ceil(this.visibilityParams.length / 2)\n\t\t},\n\t},\n\n\tmounted() {\n\t\tsubscribe('settings:profile-enabled:updated', this.handleProfileEnabledUpdate)\n\t\t// TODO remove this when not used once the settings layout is updated\n\t\twindow.onresize = () => {\n\t\t\tthis.marginLeft = window.matchMedia('(min-width: 1600px)').matches\n\t\t\t\t? window.getComputedStyle(document.getElementById('vue-avatar-section')).getPropertyValue('width').trim()\n\t\t\t\t: '0px'\n\t\t}\n\t},\n\n\tbeforeDestroy() {\n\t\tunsubscribe('settings:profile-enabled:updated', this.handleProfileEnabledUpdate)\n\t},\n\n\tmethods: {\n\t\thandleProfileEnabledUpdate(profileEnabled) {\n\t\t\tthis.profileEnabled = profileEnabled\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 30px;\n\tmax-width: 900px;\n\twidth: 100%;\n\n\tem {\n\t\tdisplay: block;\n\t\tmargin: 16px 0;\n\n\t\t&.disabled {\n\t\t\tfilter: grayscale(1);\n\t\t\topacity: 0.5;\n\t\t\tcursor: default;\n\t\t\tpointer-events: none;\n\n\t\t\t& *,\n\t\t\t&::v-deep * {\n\t\t\t\tcursor: default;\n\t\t\t\tpointer-events: none;\n\t\t\t}\n\t\t}\n\t}\n\n\t.visibility-dropdowns {\n\t\tdisplay: grid;\n\t\tgap: 10px 40px;\n\t}\n\n\t@media (min-width: 1200px) {\n\t\twidth: 940px;\n\n\t\t.visibility-dropdowns {\n\t\t\tgrid-auto-flow: column;\n\t\t}\n\t}\n\n\t@media (max-width: 1200px) {\n\t\twidth: 470px;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileVisibilitySection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileVisibilitySection.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileVisibilitySection.vue?vue&type=style&index=0&id=a07dbf96&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileVisibilitySection.vue?vue&type=style&index=0&id=a07dbf96&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ProfileVisibilitySection.vue?vue&type=template&id=a07dbf96&scoped=true&\"\nimport script from \"./ProfileVisibilitySection.vue?vue&type=script&lang=js&\"\nexport * from \"./ProfileVisibilitySection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ProfileVisibilitySection.vue?vue&type=style&index=0&id=a07dbf96&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a07dbf96\",\n null\n \n)\n\nexport default component.exports","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport { getRequestToken } from '@nextcloud/auth'\nimport { loadState } from '@nextcloud/initial-state'\nimport { translate as t } from '@nextcloud/l10n'\nimport '@nextcloud/dialogs/dist/index.css'\n\nimport AvatarSection from './components/PersonalInfo/AvatarSection.vue'\nimport DetailsSection from './components/PersonalInfo/DetailsSection.vue'\nimport DisplayNameSection from './components/PersonalInfo/DisplayNameSection.vue'\nimport EmailSection from './components/PersonalInfo/EmailSection/EmailSection.vue'\nimport PhoneSection from './components/PersonalInfo/PhoneSection.vue'\nimport LocationSection from './components/PersonalInfo/LocationSection.vue'\nimport WebsiteSection from './components/PersonalInfo/WebsiteSection.vue'\nimport TwitterSection from './components/PersonalInfo/TwitterSection.vue'\nimport FediverseSection from './components/PersonalInfo/FediverseSection.vue'\nimport LanguageSection from './components/PersonalInfo/LanguageSection/LanguageSection.vue'\nimport LocaleSection from './components/PersonalInfo/LocaleSection/LocaleSection.vue'\nimport ProfileSection from './components/PersonalInfo/ProfileSection/ProfileSection.vue'\nimport OrganisationSection from './components/PersonalInfo/OrganisationSection.vue'\nimport RoleSection from './components/PersonalInfo/RoleSection.vue'\nimport HeadlineSection from './components/PersonalInfo/HeadlineSection.vue'\nimport BiographySection from './components/PersonalInfo/BiographySection.vue'\nimport ProfileVisibilitySection from './components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue'\n\n__webpack_nonce__ = btoa(getRequestToken())\n\nconst profileEnabledGlobally = loadState('settings', 'profileEnabledGlobally', true)\n\nVue.mixin({\n\tmethods: {\n\t\tt,\n\t},\n})\n\nconst AvatarView = Vue.extend(AvatarSection)\nconst DetailsView = Vue.extend(DetailsSection)\nconst DisplayNameView = Vue.extend(DisplayNameSection)\nconst EmailView = Vue.extend(EmailSection)\nconst PhoneView = Vue.extend(PhoneSection)\nconst LocationView = Vue.extend(LocationSection)\nconst WebsiteView = Vue.extend(WebsiteSection)\nconst TwitterView = Vue.extend(TwitterSection)\nconst FediverseView = Vue.extend(FediverseSection)\nconst LanguageView = Vue.extend(LanguageSection)\nconst LocaleView = Vue.extend(LocaleSection)\n\nnew AvatarView().$mount('#vue-avatar-section')\nnew DetailsView().$mount('#vue-details-section')\nnew DisplayNameView().$mount('#vue-displayname-section')\nnew EmailView().$mount('#vue-email-section')\nnew PhoneView().$mount('#vue-phone-section')\nnew LocationView().$mount('#vue-location-section')\nnew WebsiteView().$mount('#vue-website-section')\nnew TwitterView().$mount('#vue-twitter-section')\nnew FediverseView().$mount('#vue-fediverse-section')\nnew LanguageView().$mount('#vue-language-section')\nnew LocaleView().$mount('#vue-locale-section')\n\nif (profileEnabledGlobally) {\n\tconst ProfileView = Vue.extend(ProfileSection)\n\tconst OrganisationView = Vue.extend(OrganisationSection)\n\tconst RoleView = Vue.extend(RoleSection)\n\tconst HeadlineView = Vue.extend(HeadlineSection)\n\tconst BiographyView = Vue.extend(BiographySection)\n\tconst ProfileVisibilityView = Vue.extend(ProfileVisibilitySection)\n\n\tnew ProfileView().$mount('#vue-profile-section')\n\tnew OrganisationView().$mount('#vue-organisation-section')\n\tnew RoleView().$mount('#vue-role-section')\n\tnew HeadlineView().$mount('#vue-headline-section')\n\tnew BiographyView().$mount('#vue-biography-section')\n\tnew ProfileVisibilityView().$mount('#vue-profile-visibility-section')\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"section[data-v-022fd5d4]{grid-row:1/3}.avatar__container[data-v-022fd5d4]{margin:0 auto;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:16px 0;width:300px}.avatar__container span[data-v-022fd5d4]{color:var(--color-text-lighter)}.avatar__preview[data-v-022fd5d4]{display:flex;justify-content:center;align-items:center;width:180px;height:180px}.avatar__buttons[data-v-022fd5d4]{display:flex;gap:0 10px}.avatar__cropper[data-v-022fd5d4]{width:300px;height:300px;overflow:hidden}.avatar__cropper-buttons[data-v-022fd5d4]{width:100%;display:flex;justify-content:space-between}.avatar__cropper[data-v-022fd5d4] .cropper-view-box{border-radius:50%}input[type=file][data-v-022fd5d4]{display:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/AvatarSection.vue\"],\"names\":[],\"mappings\":\"AACA,yBACC,YAAA,CAGA,oCACC,aAAA,CACA,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,kBAAA,CACA,UAAA,CACA,WAAA,CAEA,yCACC,+BAAA,CAIF,kCACC,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,WAAA,CACA,YAAA,CAGD,kCACC,YAAA,CACA,UAAA,CAGD,kCACC,WAAA,CACA,YAAA,CACA,eAAA,CAEA,0CACC,UAAA,CACA,YAAA,CACA,6BAAA,CAGD,oDACC,iBAAA,CAKH,kCACC,YAAA\",\"sourcesContent\":[\"\\nsection {\\n\\tgrid-row: 1/3;\\n}\\n.avatar {\\n\\t&__container {\\n\\t\\tmargin: 0 auto;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: center;\\n\\t\\talign-items: center;\\n\\t\\tgap: 16px 0;\\n\\t\\twidth: 300px;\\n\\n\\t\\tspan {\\n\\t\\t\\tcolor: var(--color-text-lighter);\\n\\t\\t}\\n\\t}\\n\\n\\t&__preview {\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: center;\\n\\t\\talign-items: center;\\n\\t\\twidth: 180px;\\n\\t\\theight: 180px;\\n\\t}\\n\\n\\t&__buttons {\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 10px;\\n\\t}\\n\\n\\t&__cropper {\\n\\t\\twidth: 300px;\\n\\t\\theight: 300px;\\n\\t\\toverflow: hidden;\\n\\n\\t\\t&-buttons {\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tjustify-content: space-between;\\n\\t\\t}\\n\\n\\t\\t&::v-deep .cropper-view-box {\\n\\t\\t\\tborder-radius: 50%;\\n\\t\\t}\\n\\t}\\n}\\n\\ninput[type=\\\"file\\\"] {\\n\\tdisplay: none;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".details[data-v-1ab46e68]{display:flex;flex-direction:column;margin:10px 32px 10px 0;gap:16px 0;color:var(--color-text-lighter)}.details__groups[data-v-1ab46e68],.details__quota[data-v-1ab46e68]{display:flex;gap:0 10px}.details__groups-info[data-v-1ab46e68],.details__quota-info[data-v-1ab46e68]{display:flex;flex-direction:column;width:100%;gap:4px 0}.details__groups-list[data-v-1ab46e68],.details__quota-list[data-v-1ab46e68]{font-weight:bold}.details__groups[data-v-1ab46e68] .material-design-icon,.details__quota[data-v-1ab46e68] .material-design-icon{align-self:flex-start;margin-top:2px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/DetailsSection.vue\"],\"names\":[],\"mappings\":\"AACA,0BACC,YAAA,CACA,qBAAA,CACA,uBAAA,CACA,UAAA,CACA,+BAAA,CAEA,mEAEC,YAAA,CACA,UAAA,CAEA,6EACC,YAAA,CACA,qBAAA,CACA,UAAA,CACA,SAAA,CAGD,6EACC,gBAAA,CAGD,+GACC,qBAAA,CACA,cAAA\",\"sourcesContent\":[\"\\n.details {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tmargin: 10px 32px 10px 0;\\n\\tgap: 16px 0;\\n\\tcolor: var(--color-text-lighter);\\n\\n\\t&__groups,\\n\\t&__quota {\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 10px;\\n\\n\\t\\t&-info {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tgap: 4px 0;\\n\\t\\t}\\n\\n\\t\\t&-list {\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t}\\n\\n\\t\\t&::v-deep .material-design-icon {\\n\\t\\t\\talign-self: flex-start;\\n\\t\\t\\tmargin-top: 2px;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".email[data-v-5ff85d38]{display:grid;align-items:center}.email input[data-v-5ff85d38]{grid-area:1/1;width:100%}.email .email__actions-container[data-v-5ff85d38]{grid-area:1/1;justify-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px}.email .email__actions-container .email__actions[data-v-5ff85d38]{opacity:.4 !important}.email .email__actions-container .email__actions[data-v-5ff85d38]:hover,.email .email__actions-container .email__actions[data-v-5ff85d38]:focus,.email .email__actions-container .email__actions[data-v-5ff85d38]:active{opacity:.8 !important}.email .email__actions-container .email__actions[data-v-5ff85d38] button{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important}.email__helper-text-message[data-v-5ff85d38]{padding:4px 0;display:flex;align-items:center}.email__helper-text-message__icon[data-v-5ff85d38]{margin-right:8px;align-self:start;margin-top:4px}.email__helper-text-message--error[data-v-5ff85d38]{color:var(--color-error)}.fade-enter[data-v-5ff85d38],.fade-leave-to[data-v-5ff85d38]{opacity:0}.fade-enter-active[data-v-5ff85d38]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-5ff85d38]{transition:opacity 300ms ease-out}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/EmailSection/Email.vue\"],\"names\":[],\"mappings\":\"AACA,wBACC,YAAA,CACA,kBAAA,CAEA,8BACC,aAAA,CACA,UAAA,CAGD,kDACC,aAAA,CACA,qBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CAEA,kEACC,qBAAA,CAEA,yNAGC,qBAAA,CAGD,yEACC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CAKH,6CACC,aAAA,CACA,YAAA,CACA,kBAAA,CAEA,mDACC,gBAAA,CACA,gBAAA,CACA,cAAA,CAGD,oDACC,wBAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA\",\"sourcesContent\":[\"\\n.email {\\n\\tdisplay: grid;\\n\\talign-items: center;\\n\\n\\tinput {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t.email__actions-container {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\tjustify-self: flex-end;\\n\\t\\theight: 30px;\\n\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 2px;\\n\\t\\tmargin-right: 5px;\\n\\n\\t\\t.email__actions {\\n\\t\\t\\topacity: 0.4 !important;\\n\\n\\t\\t\\t&:hover,\\n\\t\\t\\t&:focus,\\n\\t\\t\\t&:active {\\n\\t\\t\\t\\topacity: 0.8 !important;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&::v-deep button {\\n\\t\\t\\t\\theight: 30px !important;\\n\\t\\t\\t\\tmin-height: 30px !important;\\n\\t\\t\\t\\twidth: 30px !important;\\n\\t\\t\\t\\tmin-width: 30px !important;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__helper-text-message {\\n\\t\\tpadding: 4px 0;\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\n\\t\\t&__icon {\\n\\t\\t\\tmargin-right: 8px;\\n\\t\\t\\talign-self: start;\\n\\t\\t\\tmargin-top: 4px;\\n\\t\\t}\\n\\n\\t\\t&--error {\\n\\t\\t\\tcolor: var(--color-error);\\n\\t\\t}\\n\\t}\\n}\\n\\n.fade-enter,\\n.fade-leave-to {\\n\\topacity: 0;\\n}\\n\\n.fade-enter-active {\\n\\ttransition: opacity 200ms ease-out;\\n}\\n\\n.fade-leave-active {\\n\\ttransition: opacity 300ms ease-out;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"section[data-v-46c7eb7e]{padding:10px 10px}section[data-v-46c7eb7e] button:disabled{cursor:default}section .additional-emails-label[data-v-46c7eb7e]{display:block;margin-top:16px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue\"],\"names\":[],\"mappings\":\"AACA,yBACC,iBAAA,CAEA,yCACC,cAAA,CAGD,kDACC,aAAA,CACA,eAAA\",\"sourcesContent\":[\"\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\n\\t}\\n\\n\\t.additional-emails-label {\\n\\t\\tdisplay: block;\\n\\t\\tmargin-top: 16px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".language[data-v-5c847b3a]{display:grid}.language select[data-v-5c847b3a]{width:100%}.language a[data-v-5c847b3a]{color:var(--color-main-text);text-decoration:none;width:max-content}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue\"],\"names\":[],\"mappings\":\"AACA,2BACC,YAAA,CAEA,kCACC,UAAA,CAGD,6BACC,4BAAA,CACA,oBAAA,CACA,iBAAA\",\"sourcesContent\":[\"\\n.language {\\n\\tdisplay: grid;\\n\\n\\tselect {\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\ta {\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\ttext-decoration: none;\\n\\t\\twidth: max-content;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"section[data-v-92685b76]{padding:10px 10px}section[data-v-92685b76] button:disabled{cursor:default}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue\"],\"names\":[],\"mappings\":\"AACA,yBACC,iBAAA,CAEA,yCACC,cAAA\",\"sourcesContent\":[\"\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".locale[data-v-1ac456dc]{display:grid}.locale select[data-v-1ac456dc]{width:100%}.example[data-v-1ac456dc]{margin:10px 0;display:flex;gap:0 10px;color:var(--color-text-lighter)}.example[data-v-1ac456dc] .material-design-icon{align-self:flex-start;margin-top:2px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/LocaleSection/Locale.vue\"],\"names\":[],\"mappings\":\"AACA,yBACC,YAAA,CAEA,gCACC,UAAA,CAIF,0BACC,aAAA,CACA,YAAA,CACA,UAAA,CACA,+BAAA,CAEA,gDACC,qBAAA,CACA,cAAA\",\"sourcesContent\":[\"\\n.locale {\\n\\tdisplay: grid;\\n\\n\\tselect {\\n\\t\\twidth: 100%;\\n\\t}\\n}\\n\\n.example {\\n\\tmargin: 10px 0;\\n\\tdisplay: flex;\\n\\tgap: 0 10px;\\n\\tcolor: var(--color-text-lighter);\\n\\n\\t&::v-deep .material-design-icon {\\n\\t\\talign-self: flex-start;\\n\\t\\tmargin-top: 2px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"section[data-v-84fca724]{padding:10px 10px}section[data-v-84fca724] button:disabled{cursor:default}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/LocaleSection/LocaleSection.vue\"],\"names\":[],\"mappings\":\"AACA,yBACC,iBAAA,CAEA,yCACC,cAAA\",\"sourcesContent\":[\"\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"html{scroll-behavior:smooth}@media screen and (prefers-reduced-motion: reduce){html{scroll-behavior:auto}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue\"],\"names\":[],\"mappings\":\"AACA,KACC,sBAAA,CAEA,mDAHD,KAIE,oBAAA,CAAA\",\"sourcesContent\":[\"\\nhtml {\\n\\tscroll-behavior: smooth;\\n\\n\\t@media screen and (prefers-reduced-motion: reduce) {\\n\\t\\tscroll-behavior: auto;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"a[data-v-1caba458]{display:block;height:44px;width:290px;line-height:44px;padding:0 16px;margin:14px auto;border-radius:var(--border-radius-pill);opacity:.4;background-color:rgba(0,0,0,0)}a .anchor-icon[data-v-1caba458]{display:inline-block;vertical-align:middle;margin-top:6px;margin-right:8px}a[data-v-1caba458]:hover,a[data-v-1caba458]:focus,a[data-v-1caba458]:active{opacity:.8;background-color:rgba(127,127,127,.25)}a.disabled[data-v-1caba458]{pointer-events:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue\"],\"names\":[],\"mappings\":\"AACA,mBACC,aAAA,CACA,WAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,gBAAA,CACA,uCAAA,CACA,UAAA,CACA,8BAAA,CAEA,gCACC,oBAAA,CACA,qBAAA,CACA,cAAA,CACA,gBAAA,CAGD,4EAGC,UAAA,CACA,sCAAA,CAGD,4BACC,mBAAA\",\"sourcesContent\":[\"\\na {\\n\\tdisplay: block;\\n\\theight: 44px;\\n\\twidth: 290px;\\n\\tline-height: 44px;\\n\\tpadding: 0 16px;\\n\\tmargin: 14px auto;\\n\\tborder-radius: var(--border-radius-pill);\\n\\topacity: 0.4;\\n\\tbackground-color: transparent;\\n\\n\\t.anchor-icon {\\n\\t\\tdisplay: inline-block;\\n\\t\\tvertical-align: middle;\\n\\t\\tmargin-top: 6px;\\n\\t\\tmargin-right: 8px;\\n\\t}\\n\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\topacity: 0.8;\\n\\t\\tbackground-color: rgba(127, 127, 127, .25);\\n\\t}\\n\\n\\t&.disabled {\\n\\t\\tpointer-events: none;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".preview-card[data-v-61586aa5]{display:flex;flex-direction:column;position:relative;width:290px;height:116px;margin:14px auto;border-radius:var(--border-radius-large);background-color:var(--color-main-background);font-weight:bold;box-shadow:0 2px 9px var(--color-box-shadow)}.preview-card[data-v-61586aa5]:hover,.preview-card[data-v-61586aa5]:focus,.preview-card[data-v-61586aa5]:active{box-shadow:0 2px 12px var(--color-box-shadow)}.preview-card[data-v-61586aa5]:focus-visible{outline:var(--color-main-text) solid 1px;outline-offset:3px}.preview-card.disabled[data-v-61586aa5]{filter:grayscale(1);opacity:.5;cursor:default;box-shadow:0 0 3px var(--color-box-shadow)}.preview-card.disabled *[data-v-61586aa5],.preview-card.disabled[data-v-61586aa5] *{cursor:default}.preview-card__avatar[data-v-61586aa5]{position:absolute !important;top:40px;left:18px;z-index:1}.preview-card__avatar[data-v-61586aa5]:not(.avatardiv--unknown){box-shadow:0 0 0 3px var(--color-main-background) !important}.preview-card__header[data-v-61586aa5],.preview-card__footer[data-v-61586aa5]{position:relative;width:auto}.preview-card__header span[data-v-61586aa5],.preview-card__footer span[data-v-61586aa5]{position:absolute;left:78px;overflow:hidden;text-overflow:ellipsis;overflow-wrap:anywhere}@supports(-webkit-line-clamp: 2){.preview-card__header span[data-v-61586aa5],.preview-card__footer span[data-v-61586aa5]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.preview-card__header[data-v-61586aa5]{height:70px;border-radius:var(--border-radius-large) var(--border-radius-large) 0 0;background-color:var(--color-primary);background-image:var(--gradient-primary-background)}.preview-card__header span[data-v-61586aa5]{bottom:0;color:var(--color-primary-text);font-size:18px;font-weight:bold;margin:0 4px 8px 0}.preview-card__footer[data-v-61586aa5]{height:46px}.preview-card__footer span[data-v-61586aa5]{top:0;color:var(--color-text-maxcontrast);font-size:14px;font-weight:normal;margin:4px 4px 0 0;line-height:1.3}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue\"],\"names\":[],\"mappings\":\"AACA,+BACC,YAAA,CACA,qBAAA,CACA,iBAAA,CACA,WAAA,CACA,YAAA,CACA,gBAAA,CACA,wCAAA,CACA,6CAAA,CACA,gBAAA,CACA,4CAAA,CAEA,gHAGC,6CAAA,CAGD,6CACC,wCAAA,CACA,kBAAA,CAGD,wCACC,mBAAA,CACA,UAAA,CACA,cAAA,CACA,0CAAA,CAEA,oFAEC,cAAA,CAIF,uCAEC,4BAAA,CACA,QAAA,CACA,SAAA,CACA,SAAA,CAEA,gEACC,4DAAA,CAIF,8EAEC,iBAAA,CACA,UAAA,CAEA,wFACC,iBAAA,CACA,SAAA,CACA,eAAA,CACA,sBAAA,CACA,sBAAA,CAEA,iCAPD,wFAQE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,uCACC,WAAA,CACA,uEAAA,CACA,qCAAA,CACA,mDAAA,CAEA,4CACC,QAAA,CACA,+BAAA,CACA,cAAA,CACA,gBAAA,CACA,kBAAA,CAIF,uCACC,WAAA,CAEA,4CACC,KAAA,CACA,mCAAA,CACA,cAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA\",\"sourcesContent\":[\"\\n.preview-card {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tposition: relative;\\n\\twidth: 290px;\\n\\theight: 116px;\\n\\tmargin: 14px auto;\\n\\tborder-radius: var(--border-radius-large);\\n\\tbackground-color: var(--color-main-background);\\n\\tfont-weight: bold;\\n\\tbox-shadow: 0 2px 9px var(--color-box-shadow);\\n\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\tbox-shadow: 0 2px 12px var(--color-box-shadow);\\n\\t}\\n\\n\\t&:focus-visible {\\n\\t\\toutline: var(--color-main-text) solid 1px;\\n\\t\\toutline-offset: 3px;\\n\\t}\\n\\n\\t&.disabled {\\n\\t\\tfilter: grayscale(1);\\n\\t\\topacity: 0.5;\\n\\t\\tcursor: default;\\n\\t\\tbox-shadow: 0 0 3px var(--color-box-shadow);\\n\\n\\t\\t& *,\\n\\t\\t&::v-deep * {\\n\\t\\t\\tcursor: default;\\n\\t\\t}\\n\\t}\\n\\n\\t&__avatar {\\n\\t\\t// Override Avatar component position to fix positioning on rerender\\n\\t\\tposition: absolute !important;\\n\\t\\ttop: 40px;\\n\\t\\tleft: 18px;\\n\\t\\tz-index: 1;\\n\\n\\t\\t&:not(.avatardiv--unknown) {\\n\\t\\t\\tbox-shadow: 0 0 0 3px var(--color-main-background) !important;\\n\\t\\t}\\n\\t}\\n\\n\\t&__header,\\n\\t&__footer {\\n\\t\\tposition: relative;\\n\\t\\twidth: auto;\\n\\n\\t\\tspan {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tleft: 78px;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\toverflow-wrap: anywhere;\\n\\n\\t\\t\\t@supports (-webkit-line-clamp: 2) {\\n\\t\\t\\t\\tdisplay: -webkit-box;\\n\\t\\t\\t\\t-webkit-line-clamp: 2;\\n\\t\\t\\t\\t-webkit-box-orient: vertical;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__header {\\n\\t\\theight: 70px;\\n\\t\\tborder-radius: var(--border-radius-large) var(--border-radius-large) 0 0;\\n\\t\\tbackground-color: var(--color-primary);\\n\\t\\tbackground-image: var(--gradient-primary-background);\\n\\n\\t\\tspan {\\n\\t\\t\\tbottom: 0;\\n\\t\\t\\tcolor: var(--color-primary-text);\\n\\t\\t\\tfont-size: 18px;\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tmargin: 0 4px 8px 0;\\n\\t\\t}\\n\\t}\\n\\n\\t&__footer {\\n\\t\\theight: 46px;\\n\\n\\t\\tspan {\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\tfont-size: 14px;\\n\\t\\t\\tfont-weight: normal;\\n\\t\\t\\tmargin: 4px 4px 0 0;\\n\\t\\t\\tline-height: 1.3;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"section[data-v-cf64d964]{padding:10px 10px}section[data-v-cf64d964] button:disabled{cursor:default}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue\"],\"names\":[],\"mappings\":\"AACA,yBACC,iBAAA,CAEA,yCACC,cAAA\",\"sourcesContent\":[\"\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"section[data-v-a07dbf96]{padding:30px;max-width:900px;width:100%}section em[data-v-a07dbf96]{display:block;margin:16px 0}section em.disabled[data-v-a07dbf96]{filter:grayscale(1);opacity:.5;cursor:default;pointer-events:none}section em.disabled *[data-v-a07dbf96],section em.disabled[data-v-a07dbf96] *{cursor:default;pointer-events:none}section .visibility-dropdowns[data-v-a07dbf96]{display:grid;gap:10px 40px}@media(min-width: 1200px){section[data-v-a07dbf96]{width:940px}section .visibility-dropdowns[data-v-a07dbf96]{grid-auto-flow:column}}@media(max-width: 1200px){section[data-v-a07dbf96]{width:470px}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue\"],\"names\":[],\"mappings\":\"AACA,yBACC,YAAA,CACA,eAAA,CACA,UAAA,CAEA,4BACC,aAAA,CACA,aAAA,CAEA,qCACC,mBAAA,CACA,UAAA,CACA,cAAA,CACA,mBAAA,CAEA,8EAEC,cAAA,CACA,mBAAA,CAKH,+CACC,YAAA,CACA,aAAA,CAGD,0BA5BD,yBA6BE,WAAA,CAEA,+CACC,qBAAA,CAAA,CAIF,0BApCD,yBAqCE,WAAA,CAAA\",\"sourcesContent\":[\"\\nsection {\\n\\tpadding: 30px;\\n\\tmax-width: 900px;\\n\\twidth: 100%;\\n\\n\\tem {\\n\\t\\tdisplay: block;\\n\\t\\tmargin: 16px 0;\\n\\n\\t\\t&.disabled {\\n\\t\\t\\tfilter: grayscale(1);\\n\\t\\t\\topacity: 0.5;\\n\\t\\t\\tcursor: default;\\n\\t\\t\\tpointer-events: none;\\n\\n\\t\\t\\t& *,\\n\\t\\t\\t&::v-deep * {\\n\\t\\t\\t\\tcursor: default;\\n\\t\\t\\t\\tpointer-events: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t.visibility-dropdowns {\\n\\t\\tdisplay: grid;\\n\\t\\tgap: 10px 40px;\\n\\t}\\n\\n\\t@media (min-width: 1200px) {\\n\\t\\twidth: 940px;\\n\\n\\t\\t.visibility-dropdowns {\\n\\t\\t\\tgrid-auto-flow: column;\\n\\t\\t}\\n\\t}\\n\\n\\t@media (max-width: 1200px) {\\n\\t\\twidth: 470px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".visibility-container[data-v-b13d20da]{display:flex;width:max-content}.visibility-container.disabled[data-v-b13d20da]{filter:grayscale(1);opacity:.5;cursor:default;pointer-events:none}.visibility-container.disabled *[data-v-b13d20da],.visibility-container.disabled[data-v-b13d20da] *{cursor:default;pointer-events:none}.visibility-container label[data-v-b13d20da]{color:var(--color-text-lighter);width:150px;line-height:50px}.visibility-container__select[data-v-b13d20da]{width:270px;max-width:40vw}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue\"],\"names\":[],\"mappings\":\"AACA,uCACC,YAAA,CACA,iBAAA,CAEA,gDACC,mBAAA,CACA,UAAA,CACA,cAAA,CACA,mBAAA,CAEA,oGAEC,cAAA,CACA,mBAAA,CAIF,6CACC,+BAAA,CACA,WAAA,CACA,gBAAA,CAGD,+CACC,WAAA,CACA,cAAA\",\"sourcesContent\":[\"\\n.visibility-container {\\n\\tdisplay: flex;\\n\\twidth: max-content;\\n\\n\\t&.disabled {\\n\\t\\tfilter: grayscale(1);\\n\\t\\topacity: 0.5;\\n\\t\\tcursor: default;\\n\\t\\tpointer-events: none;\\n\\n\\t\\t& *,\\n\\t\\t&::v-deep * {\\n\\t\\t\\tcursor: default;\\n\\t\\t\\tpointer-events: none;\\n\\t\\t}\\n\\t}\\n\\n\\tlabel {\\n\\t\\tcolor: var(--color-text-lighter);\\n\\t\\twidth: 150px;\\n\\t\\tline-height: 50px;\\n\\t}\\n\\n\\t&__select {\\n\\t\\twidth: 270px;\\n\\t\\tmax-width: 40vw;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"section[data-v-6eb7d8e0]{padding:10px 10px}section[data-v-6eb7d8e0] button:disabled{cursor:default}section .property[data-v-6eb7d8e0]{display:grid;align-items:center}section .property textarea[data-v-6eb7d8e0]{resize:vertical;grid-area:1/1;width:100%}section .property input[data-v-6eb7d8e0]{grid-area:1/1;width:100%}section .property .property__actions-container[data-v-6eb7d8e0]{grid-area:1/1;justify-self:flex-end;align-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px;margin-bottom:5px}section .property__helper-text-message[data-v-6eb7d8e0]{padding:4px 0;display:flex;align-items:center}section .property__helper-text-message__icon[data-v-6eb7d8e0]{margin-right:8px;align-self:start;margin-top:4px}section .property__helper-text-message--error[data-v-6eb7d8e0]{color:var(--color-error)}section .fade-enter[data-v-6eb7d8e0],section .fade-leave-to[data-v-6eb7d8e0]{opacity:0}section .fade-enter-active[data-v-6eb7d8e0]{transition:opacity 200ms ease-out}section .fade-leave-active[data-v-6eb7d8e0]{transition:opacity 300ms ease-out}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/shared/AccountPropertySection.vue\"],\"names\":[],\"mappings\":\"AACA,yBACC,iBAAA,CAEA,yCACC,cAAA,CAGD,mCACC,YAAA,CACA,kBAAA,CAEA,4CACC,eAAA,CACA,aAAA,CACA,UAAA,CAGD,yCACC,aAAA,CACA,UAAA,CAGD,gEACC,aAAA,CACA,qBAAA,CACA,mBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CACA,iBAAA,CAIF,wDACC,aAAA,CACA,YAAA,CACA,kBAAA,CAEA,8DACC,gBAAA,CACA,gBAAA,CACA,cAAA,CAGD,+DACC,wBAAA,CAIF,6EAEC,SAAA,CAGD,4CACC,iCAAA,CAGD,4CACC,iCAAA\",\"sourcesContent\":[\"\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\n\\t}\\n\\n\\t.property {\\n\\t\\tdisplay: grid;\\n\\t\\talign-items: center;\\n\\n\\t\\ttextarea {\\n\\t\\t\\tresize: vertical;\\n\\t\\t\\tgrid-area: 1 / 1;\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\n\\t\\tinput {\\n\\t\\t\\tgrid-area: 1 / 1;\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\n\\t\\t.property__actions-container {\\n\\t\\t\\tgrid-area: 1 / 1;\\n\\t\\t\\tjustify-self: flex-end;\\n\\t\\t\\talign-self: flex-end;\\n\\t\\t\\theight: 30px;\\n\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tgap: 0 2px;\\n\\t\\t\\tmargin-right: 5px;\\n\\t\\t\\tmargin-bottom: 5px;\\n\\t\\t}\\n\\t}\\n\\n\\t.property__helper-text-message {\\n\\t\\tpadding: 4px 0;\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\n\\t\\t&__icon {\\n\\t\\t\\tmargin-right: 8px;\\n\\t\\t\\talign-self: start;\\n\\t\\t\\tmargin-top: 4px;\\n\\t\\t}\\n\\n\\t\\t&--error {\\n\\t\\t\\tcolor: var(--color-error);\\n\\t\\t}\\n\\t}\\n\\n\\t.fade-enter,\\n\\t.fade-leave-to {\\n\\t\\topacity: 0;\\n\\t}\\n\\n\\t.fade-enter-active {\\n\\t\\ttransition: opacity 200ms ease-out;\\n\\t}\\n\\n\\t.fade-leave-active {\\n\\t\\ttransition: opacity 300ms ease-out;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".federation-actions[data-v-4ea07669],.federation-actions--additional[data-v-4ea07669]{opacity:.4 !important}.federation-actions[data-v-4ea07669]:hover,.federation-actions[data-v-4ea07669]:focus,.federation-actions[data-v-4ea07669]:active,.federation-actions--additional[data-v-4ea07669]:hover,.federation-actions--additional[data-v-4ea07669]:focus,.federation-actions--additional[data-v-4ea07669]:active{opacity:.8 !important}.federation-actions--additional[data-v-4ea07669] button{padding-bottom:7px;height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/shared/FederationControl.vue\"],\"names\":[],\"mappings\":\"AACA,sFAEC,qBAAA,CAEA,wSAGC,qBAAA,CAKD,wDAEC,kBAAA,CACA,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA\",\"sourcesContent\":[\"\\n.federation-actions,\\n.federation-actions--additional {\\n\\topacity: 0.4 !important;\\n\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\topacity: 0.8 !important;\\n\\t}\\n}\\n\\n.federation-actions--additional {\\n\\t&::v-deep button {\\n\\t\\t// TODO remove this hack\\n\\t\\tpadding-bottom: 7px;\\n\\t\\theight: 30px !important;\\n\\t\\tmin-height: 30px !important;\\n\\t\\twidth: 30px !important;\\n\\t\\tmin-width: 30px !important;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".federation-actions__btn[data-v-d426ed04] p{width:150px !important;padding:8px 0 !important;color:var(--color-main-text) !important;font-size:12.8px !important;line-height:1.5em !important}.federation-actions__btn--active[data-v-d426ed04]{background-color:var(--color-primary-light) !important;box-shadow:inset 2px 0 var(--color-primary) !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue\"],\"names\":[],\"mappings\":\"AAEC,4CACC,sBAAA,CACA,wBAAA,CACA,uCAAA,CACA,2BAAA,CACA,4BAAA,CAIF,kDACC,sDAAA,CACA,sDAAA\",\"sourcesContent\":[\"\\n.federation-actions__btn {\\n\\t&::v-deep p {\\n\\t\\twidth: 150px !important;\\n\\t\\tpadding: 8px 0 !important;\\n\\t\\tcolor: var(--color-main-text) !important;\\n\\t\\tfont-size: 12.8px !important;\\n\\t\\tline-height: 1.5em !important;\\n\\t}\\n}\\n\\n.federation-actions__btn--active {\\n\\tbackground-color: var(--color-primary-light) !important;\\n\\tbox-shadow: inset 2px 0 var(--color-primary) !important;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".headerbar-label[data-v-b43fcc0c]{font-weight:normal;display:inline-flex;width:100%;margin:12px 0 0 0;gap:8px;align-items:center;font-size:16px;color:var(--color-text-light)}.headerbar-label.profile-property[data-v-b43fcc0c]{height:38px}.headerbar-label.setting-property[data-v-b43fcc0c]{height:44px}.headerbar-label label[data-v-b43fcc0c]{cursor:pointer}.federation-control[data-v-b43fcc0c]{margin:0}.button-vue[data-v-b43fcc0c]{margin:0 0 0 auto !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue\"],\"names\":[],\"mappings\":\"AACA,kCACC,kBAAA,CACA,mBAAA,CACA,UAAA,CACA,iBAAA,CACA,OAAA,CACA,kBAAA,CACA,cAAA,CACA,6BAAA,CAEA,mDACC,WAAA,CAGD,mDACC,WAAA,CAGD,wCACC,cAAA,CAIF,qCACC,QAAA,CAGD,6BACC,4BAAA\",\"sourcesContent\":[\"\\n.headerbar-label {\\n\\tfont-weight: normal;\\n\\tdisplay: inline-flex;\\n\\twidth: 100%;\\n\\tmargin: 12px 0 0 0;\\n\\tgap: 8px;\\n\\talign-items: center;\\n\\tfont-size: 16px;\\n\\tcolor: var(--color-text-light);\\n\\n\\t&.profile-property {\\n\\t\\theight: 38px;\\n\\t}\\n\\n\\t&.setting-property {\\n\\t\\theight: 44px;\\n\\t}\\n\\n\\tlabel {\\n\\t\\tcursor: pointer;\\n\\t}\\n}\\n\\n.federation-control {\\n\\tmargin: 0;\\n}\\n\\n.button-vue {\\n\\tmargin: 0 0 0 auto !important;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 30094,\n\t\"./hi.js\": 30094,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 4418;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t4418: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], () => (__webpack_require__(28110)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","name","components","NcActionButton","props","activeScope","type","String","required","displayName","handleScopeChange","Function","default","iconClass","isSupportedScope","Boolean","tooltipDisabled","tooltip","methods","updateScope","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_c","_self","staticClass","class","attrs","on","$event","stopPropagation","preventDefault","apply","arguments","_v","_s","ACCOUNT_PROPERTY_ENUM","Object","freeze","ADDRESS","AVATAR","BIOGRAPHY","DISPLAYNAME","EMAIL_COLLECTION","EMAIL","HEADLINE","NOTIFICATION_EMAIL","FEDIVERSE","ORGANISATION","PHONE","PROFILE_ENABLED","ROLE","TWITTER","WEBSITE","ACCOUNT_PROPERTY_READABLE_ENUM","t","NAME_READABLE_ENUM","PROFILE_READABLE_ENUM","PROFILE_VISIBILITY","PROPERTY_READABLE_KEYS_ENUM","ACCOUNT_SETTING_PROPERTY_ENUM","LANGUAGE","LOCALE","ACCOUNT_SETTING_PROPERTY_READABLE_ENUM","SCOPE_ENUM","PRIVATE","LOCAL","FEDERATED","PUBLISHED","PROPERTY_READABLE_SUPPORTED_SCOPES_ENUM","UNPUBLISHED_READABLE_PROPERTIES","SCOPE_SUFFIX","SCOPE_PROPERTY_ENUM","DEFAULT_ADDITIONAL_EMAIL_SCOPE","VERIFICATION_ENUM","NOT_VERIFIED","VERIFICATION_IN_PROGRESS","VERIFIED","VALIDATE_EMAIL_REGEX","savePrimaryAccountProperty","async","accountProperty","value","userId","getCurrentUser","uid","url","generateOcsUrl","confirmPassword","axios","key","data","getLoggerBuilder","setApp","detectUser","build","handleError","error","message","_error$response","fullMessage","response","status","showError","logger","federationEnabled","lookupServerUploadEnabled","loadState","NcActions","FederationControlAction","readable","validator","values","includes","additional","additionalValue","disabled","handleAdditionalScopeChange","scope","readableLowerCase","toLocaleLowerCase","initialScope","computed","ariaLabel","property","scopeDisplayNameLowerCase","scopeIcon","federationScopes","supportedScopes","scopes","push","$emit","updateAdditionalScope","updatePrimaryScope","_responseData$ocs","_responseData$ocs$met","responseData","concat","savePrimaryAccountPropertyScope","handleResponse","ocs","meta","e","errorMessage","_responseData$ocs2","_responseData$ocs2$me","_ref","_l","federationScope","changeScope","FederationControl","NcButton","Plus","inputId","isEditable","isMultiValueSupported","isValidSection","isHeading","localScope","isProfileProperty","isSettingProperty","onAddAdditional","onScopeChange","tag","_e","scopedSlots","_u","fn","proxy","avatar","avatarChangeSupported","VALID_MIME_TYPES","picker","getFilePickerBuilder","setMultiSelect","setMimeTypeFilter","setModal","setType","allowDirectories","Delete","Folder","HeaderBar","NcAvatar","Upload","VueCropper","showCropper","loading","version","oc_userconfig","isGenerated","generated","validMimeTypes","cropperOptions","aspectRatio","viewMode","guides","center","highlight","autoCropArea","minContainerWidth","minContainerHeight","created","subscribe","handleDisplayNameUpdate","beforeDestroy","unsubscribe","activateLocalFilePicker","$refs","input","click","onChange","file","target","files","cancel","reader","FileReader","onload","cropper","replace","result","readAsDataURL","path","pick","generateUrl","handleAvatarUpdate","tempAvatar","encodeURIComponent","OC","requestToken","Math","floor","random","saveAvatar","canvasData","getCroppedCanvas","scaleFactor","width","scale","toBlob","blob","formData","FormData","append","Date","now","emit","$set","openFilePicker","removeAvatar","ref","join","directives","rawName","expression","_b","groups","quota","totalSpace","usage","usageRelative","Account","CircleSlice","NcProgressBar","quotaText","domProps","AlertCircle","AlertOctagon","Check","placeholder","multiLine","onValidate","onSave","initialValue","helperText","showCheckmarkIcon","showErrorIcon","onPropertyChange","debouncePropertyChange","trim","debounce","validationMessage","updateProperty","setTimeout","displayNameChangeSupported","AccountPropertySection","savePrimaryEmail","email","removeAdditionalEmail","collection","savePrimaryEmailScope","saveAdditionalEmailScope","collectionScope","validateEmail","test","slice","length","index","Number","primary","activeNotificationEmail","localVerificationState","propertyReadable","initialEmail","deleteDisabled","deleteEmailLabel","setNotificationMailDisabled","setNotificationMailLabel","isNotificationEmail","federationDisabled","inputPlaceholder","mounted","$nextTick","_this$$refs$email","focus","onEmailChange","debounceEmailChange","_this$$refs$email2","updatePrimaryEmail","addAdditionalEmail","updateAdditionalEmail","deleteAdditionalEmail","saveAdditionalEmail","_responseData$ocs3","_responseData$ocs3$me","newNotificationMailValue","saveNotificationEmail","notificationEmail","_responseData$ocs4","_responseData$ocs4$me","prevEmail","newEmail","_responseData$ocs5","_responseData$ocs5$me","handleDeleteAdditionalEmail","undefined","deleteEmail","setNotificationMail","emailMap","additionalEmails","primaryEmail","Email","map","properties","generateUniqueKey","firstAdditionalEmail","every","primaryEmailValue","get","set","onAddAdditionalEmail","onDeleteAdditionalEmail","$delete","deletedEmail","deleteFirstAdditionalEmail","handleDeleteFirstAdditionalEmail","toString","substring","onUpdateEmail","onUpdateNotificationEmail","additionalEmail","parseInt","locallyVerified","defaultPhoneRegion","phone","isValidPhoneNumber","location","website","URL","validateUrl","twitter","fediverse","commonLanguages","Array","otherLanguages","language","initialLanguage","allLanguages","reduce","acc","code","constructLanguage","updateLanguage","reloadPage","languageCode","_ref2","reload","onLanguageChange","commonLanguage","otherLanguage","languageMap","activeLanguage","Language","Web","locale","localesForLanguage","otherLocales","initialLocale","example","date","moment","format","time","firstDayOfWeek","window","dayNames","firstDay","allLocales","setInterval","refreshExample","constructLocale","updateLocale","localeCode","onLocaleChange","currentLocale","localeMap","activeLocale","Locale","ChevronDownIcon","profileEnabled","_g","$listeners","NcCheckboxRadioSwitch","isProfileEnabled","saveEnableProfile","organisation","profilePageLink","EditProfileAnchorLink","ProfileCheckbox","ProfilePreviewCard","handleOrganisationUpdate","role","headline","biography","VISIBILITY_ENUM","SHOW","SHOW_USERS_ONLY","HIDE","VISIBILITY_PROPERTY_ENUM","label","NcSelect","paramId","displayId","visibility","initialVisibility","visibilityObject","visibilityOptions","handleProfileEnabledUpdate","updateVisibility","saveProfileParameterVisibility","onVisibilityChange","profileConfig","compareParams","a","b","appId","localeCompare","VisibilityDropdown","heading","visibilityParams","entries","id","sort","marginLeft","matchMedia","matches","getComputedStyle","document","getElementById","getPropertyValue","rows","ceil","onresize","style","gridTemplateRows","param","__webpack_nonce__","btoa","getRequestToken","profileEnabledGlobally","Vue","AvatarView","AvatarSection","DetailsView","DetailsSection","DisplayNameView","DisplayNameSection","EmailView","EmailSection","PhoneView","PhoneSection","LocationView","LocationSection","WebsiteView","WebsiteSection","TwitterView","TwitterSection","FediverseView","FediverseSection","LanguageView","LanguageSection","LocaleView","LocaleSection","$mount","ProfileView","ProfileSection","OrganisationView","OrganisationSection","RoleView","RoleSection","HeadlineView","HeadlineSection","BiographyView","BiographySection","ProfileVisibilityView","ProfileVisibilitySection","___CSS_LOADER_EXPORT___","module","webpackContext","req","webpackContextResolve","__webpack_require__","o","Error","keys","resolve","exports","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","call","m","O","chunkIds","priority","notFulfilled","Infinity","i","fulfilled","j","splice","r","n","getter","__esModule","d","definition","defineProperty","enumerable","g","globalThis","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","baseURI","self","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"settings-vue-settings-personal-info.js?v=445880c59941764a9abd","mappings":";UAAIA,iRCsCJ,MCtCgN,EDsChN,CACAC,KAAA,0BAEAC,WAAA,CACAC,qBAAAA,IAGAC,MAAA,CACAC,YAAA,CACAC,KAAAC,OACAC,UAAA,GAEAC,YAAA,CACAH,KAAAC,OACAC,UAAA,GAEAE,kBAAA,CACAJ,KAAAK,SACAC,QAAAA,QAEAC,UAAA,CACAP,KAAAC,OACAC,UAAA,GAEAM,iBAAA,CACAR,KAAAS,QACAP,UAAA,GAEAP,KAAA,CACAK,KAAAC,OACAC,UAAA,GAEAQ,gBAAA,CACAV,KAAAC,OACAK,QAAA,IAEAK,QAAA,CACAX,KAAAC,OACAC,UAAA,IAIAU,QAAA,CACAC,cACA,KAAAT,kBAAA,KAAAT,KACA,yIExEImB,EAAU,CAAC,EAEfA,EAAQC,kBAAoB,IAC5BD,EAAQE,cAAgB,IAElBF,EAAQG,OAAS,SAAc,KAAM,QAE3CH,EAAQI,OAAS,IACjBJ,EAAQK,mBAAqB,IAEhB,IAAI,IAASL,GAKJ,KAAW,YAAiB,0BCPlD,SAXgB,OACd,GCTW,WAAkB,IAAIM,EAAIC,KAAqB,OAAOC,EAApBF,EAAIG,MAAMD,IAAa,iBAAiB,CAACE,YAAY,0BAA0BC,MAAM,CAAE,kCAAmCL,EAAIrB,cAAgBqB,EAAIzB,MAAO+B,MAAM,CAAC,aAAaN,EAAIZ,iBAAmBY,EAAIT,QAAUS,EAAIV,gBAAgB,qBAAoB,EAAK,UAAYU,EAAIZ,iBAAiB,KAAOY,EAAIb,UAAU,MAAQa,EAAIjB,aAAawB,GAAG,CAAC,MAAQ,SAASC,GAAyD,OAAjDA,EAAOC,kBAAkBD,EAAOE,iBAAwBV,EAAIP,YAAYkB,MAAM,KAAMC,UAAU,IAAI,CAACZ,EAAIa,GAAG,OAAOb,EAAIc,GAAGd,EAAIZ,iBAAmBY,EAAIT,QAAUS,EAAIV,iBAAiB,OAC5kB,GACsB,IDUpB,EACA,KACA,WACA,MAI8B,QEUnByB,EAAwBC,OAAOC,OAAO,CAClDC,QAAS,UACTC,OAAQ,SACRC,UAAW,YACXC,YAAa,cACbC,iBAAkB,kBAClBC,MAAO,QACPC,SAAU,WACVC,mBAAoB,eACpBC,UAAW,YACXC,aAAc,eACdC,MAAO,QACPC,gBAAiB,kBACjBC,KAAM,OACNC,QAAS,UACTC,QAAS,YAIGC,EAAiCjB,OAAOC,OAAO,CAC3DC,SAASgB,EAAAA,EAAAA,IAAE,WAAY,YACvBf,QAAQe,EAAAA,EAAAA,IAAE,WAAY,mBACtBd,WAAWc,EAAAA,EAAAA,IAAE,WAAY,SACzBb,aAAaa,EAAAA,EAAAA,IAAE,WAAY,aAC3BZ,kBAAkBY,EAAAA,EAAAA,IAAE,WAAY,oBAChCX,OAAOW,EAAAA,EAAAA,IAAE,WAAY,SACrBV,UAAUU,EAAAA,EAAAA,IAAE,WAAY,YACxBP,cAAcO,EAAAA,EAAAA,IAAE,WAAY,gBAC5BN,OAAOM,EAAAA,EAAAA,IAAE,WAAY,gBACrBL,iBAAiBK,EAAAA,EAAAA,IAAE,WAAY,WAC/BJ,MAAMI,EAAAA,EAAAA,IAAE,WAAY,QACpBH,SAASG,EAAAA,EAAAA,IAAE,WAAY,WACvBR,WAAWQ,EAAAA,EAAAA,IAAE,WAAY,6BACzBF,SAASE,EAAAA,EAAAA,IAAE,WAAY,aAGXC,EAAqBnB,OAAOC,OAAO,CAC/C,CAACF,EAAsBG,SAAUe,EAA+Bf,QAChE,CAACH,EAAsBI,QAASc,EAA+Bd,OAC/D,CAACJ,EAAsBK,WAAYa,EAA+Bb,UAClE,CAACL,EAAsBM,aAAcY,EAA+BZ,YACpE,CAACN,EAAsBO,kBAAmBW,EAA+BX,iBACzE,CAACP,EAAsBQ,OAAQU,EAA+BV,MAC9D,CAACR,EAAsBS,UAAWS,EAA+BT,SACjE,CAACT,EAAsBY,cAAeM,EAA+BN,aACrE,CAACZ,EAAsBa,OAAQK,EAA+BL,MAC9D,CAACb,EAAsBc,iBAAkBI,EAA+BJ,gBACxE,CAACd,EAAsBe,MAAOG,EAA+BH,KAC7D,CAACf,EAAsBgB,SAAUE,EAA+BF,QAChE,CAAChB,EAAsBW,WAAYO,EAA+BP,UAClE,CAACX,EAAsBiB,SAAUC,EAA+BD,UAIpDI,EAAwBpB,OAAOC,OAAO,CAClDoB,oBAAoBH,EAAAA,EAAAA,IAAE,WAAY,wBAItBI,EAA8BtB,OAAOC,OAAO,CACxD,CAACgB,EAA+Bf,SAAUH,EAAsBG,QAChE,CAACe,EAA+Bd,QAASJ,EAAsBI,OAC/D,CAACc,EAA+Bb,WAAYL,EAAsBK,UAClE,CAACa,EAA+BZ,aAAcN,EAAsBM,YACpE,CAACY,EAA+BX,kBAAmBP,EAAsBO,iBACzE,CAACW,EAA+BV,OAAQR,EAAsBQ,MAC9D,CAACU,EAA+BT,UAAWT,EAAsBS,SACjE,CAACS,EAA+BN,cAAeZ,EAAsBY,aACrE,CAACM,EAA+BL,OAAQb,EAAsBa,MAC9D,CAACK,EAA+BJ,iBAAkBd,EAAsBc,gBACxE,CAACI,EAA+BH,MAAOf,EAAsBe,KAC7D,CAACG,EAA+BF,SAAUhB,EAAsBgB,QAChE,CAACE,EAA+BP,WAAYX,EAAsBW,UAClE,CAACO,EAA+BD,SAAUjB,EAAsBiB,UAQpDO,EAAgCvB,OAAOC,OAAO,CAC1DuB,SAAU,WACVC,OAAQ,WAIIC,EAAyC1B,OAAOC,OAAO,CACnEuB,UAAUN,EAAAA,EAAAA,IAAE,WAAY,YACxBO,QAAQP,EAAAA,EAAAA,IAAE,WAAY,YAIVS,EAAa3B,OAAOC,OAAO,CACvC2B,QAAS,aACTC,MAAO,WACPC,UAAW,eACXC,UAAW,iBAICC,EAA0ChC,OAAOC,OAAO,CACpE,CAACgB,EAA+Bf,SAAU,CAACyB,EAAWE,MAAOF,EAAWC,SACxE,CAACX,EAA+Bd,QAAS,CAACwB,EAAWE,MAAOF,EAAWC,SACvE,CAACX,EAA+Bb,WAAY,CAACuB,EAAWE,MAAOF,EAAWC,SAC1E,CAACX,EAA+BZ,aAAc,CAACsB,EAAWE,OAC1D,CAACZ,EAA+BX,kBAAmB,CAACqB,EAAWE,OAC/D,CAACZ,EAA+BV,OAAQ,CAACoB,EAAWE,OACpD,CAACZ,EAA+BT,UAAW,CAACmB,EAAWE,MAAOF,EAAWC,SACzE,CAACX,EAA+BN,cAAe,CAACgB,EAAWE,MAAOF,EAAWC,SAC7E,CAACX,EAA+BL,OAAQ,CAACe,EAAWE,MAAOF,EAAWC,SACtE,CAACX,EAA+BJ,iBAAkB,CAACc,EAAWE,MAAOF,EAAWC,SAChF,CAACX,EAA+BH,MAAO,CAACa,EAAWE,MAAOF,EAAWC,SACrE,CAACX,EAA+BF,SAAU,CAACY,EAAWE,MAAOF,EAAWC,SACxE,CAACX,EAA+BP,WAAY,CAACiB,EAAWE,MAAOF,EAAWC,SAC1E,CAACX,EAA+BD,SAAU,CAACW,EAAWE,MAAOF,EAAWC,WAI5DK,EAAkCjC,OAAOC,OAAO,CAC5DgB,EAA+Bb,UAC/Ba,EAA+BT,SAC/BS,EAA+BN,aAC/BM,EAA+BH,OAInBoB,EAAe,QAOfC,EAAsBnC,OAAOC,OAAO,CAChD,CAAC0B,EAAWC,SAAU,CACrBrE,KAAMoE,EAAWC,QACjB7D,aAAamD,EAAAA,EAAAA,IAAE,WAAY,WAC3B3C,SAAS2C,EAAAA,EAAAA,IAAE,WAAY,sFACvB5C,iBAAiB4C,EAAAA,EAAAA,IAAE,WAAY,qHAC/B/C,UAAW,cAEZ,CAACwD,EAAWE,OAAQ,CACnBtE,KAAMoE,EAAWE,MACjB9D,aAAamD,EAAAA,EAAAA,IAAE,WAAY,SAC3B3C,SAAS2C,EAAAA,EAAAA,IAAE,WAAY,sDAEvB/C,UAAW,iBAEZ,CAACwD,EAAWG,WAAY,CACvBvE,KAAMoE,EAAWG,UACjB/D,aAAamD,EAAAA,EAAAA,IAAE,WAAY,aAC3B3C,SAAS2C,EAAAA,EAAAA,IAAE,WAAY,uCACvB5C,iBAAiB4C,EAAAA,EAAAA,IAAE,WAAY,+HAC/B/C,UAAW,sBAEZ,CAACwD,EAAWI,WAAY,CACvBxE,KAAMoE,EAAWI,UACjBhE,aAAamD,EAAAA,EAAAA,IAAE,WAAY,aAC3B3C,SAAS2C,EAAAA,EAAAA,IAAE,WAAY,yEACvB5C,iBAAiB4C,EAAAA,EAAAA,IAAE,WAAY,mJAC/B/C,UAAW,eAKAiE,EAAiCT,EAAWE,MAG5CQ,GAAoBrC,OAAOC,OAAO,CAC9CqC,aAAc,EACdC,yBAA0B,EAC1BC,SAAU,IASEC,GAAuB,ykCC7K7B,MAAMC,GAA6BC,MAAOC,EAAiBC,KAG5C,kBAAVA,IACVA,EAAQA,EAAQ,IAAM,KAGvB,MAAMC,GAASC,EAAAA,EAAAA,MAAiBC,IAC1BC,GAAMC,EAAAA,EAAAA,gBAAe,uBAAwB,CAAEJ,WASrD,aAPMK,EAAAA,GAAAA,0BAEYC,EAAAA,QAAAA,IAAUH,EAAK,CAChCI,IAAKT,EACLC,WAGUS,IAAI,EC9BhB,IAAeC,WAAAA,MACbC,OAAO,YACPC,aACAC,QCIWC,GAAcA,CAACC,EAAOC,KAAY,IAAAC,EAC9C,IAAIC,EAAc,GAEdF,IACHE,GAAeF,GAGe,OAAb,QAAdC,EAAAF,EAAMI,gBAAQ,IAAAF,OAAA,EAAdA,EAAgBG,UACfF,IACHA,GAAe,MAEhBA,IAAe7C,EAAAA,EAAAA,IAAE,WAAY,oHAG9BgD,EAAAA,EAAAA,IAAUH,GACVI,GAAOP,MAAMG,IAAe7C,EAAAA,EAAAA,IAAE,SAAU0C,EAAM,GCazC,kBACNQ,GAAA,0BACAC,KACAC,EAAAA,EAAAA,GAAA,mCAEA,IACA/G,KAAA,oBAEAC,WAAA,CACA+G,UAAA,IACAC,wBAAAA,GAGA9G,MAAA,CACA+G,SAAA,CACA7G,KAAAC,OACAC,UAAA,EACA4G,UAAA7B,GAAA7C,OAAA2E,OAAA1D,GAAA2D,SAAA/B,IAAA7C,OAAA2E,OAAAjD,GAAAkD,SAAA/B,IAAAA,IAAAzB,EAAAA,oBAEAyD,WAAA,CACAjH,KAAAS,QACAH,SAAA,GAEA4G,gBAAA,CACAlH,KAAAC,OACAK,QAAA,IAEA6G,SAAA,CACAnH,KAAAS,QACAH,SAAA,GAEA8G,4BAAA,CACApH,KAAAK,SACAC,QAAA,MAEA+G,MAAA,CACArH,KAAAC,OACAC,UAAA,IAIAwF,OACA,OACA4B,kBAAA,KAAAT,SAAAU,oBACAC,aAAA,KAAAH,MAEA,EAEAI,SAAA,CACAC,YACA,OAAApE,EAAA,yEAAAqE,SAAA,KAAAL,kBAAAD,MAAA,KAAAO,2BACA,EAEAA,4BACA,OAAArD,EAAA,KAAA8C,OAAAlH,YAAAoH,mBACA,EAEAM,YACA,OAAAtD,EAAA,KAAA8C,OAAA9G,SACA,EAEAuH,iBAAAA,IACA1F,OAAA2E,OAAAxC,GAGAwD,kBACA,MAAAC,EAAA5D,EAAA,KAAAyC,UAEA,OAAAxC,EAAAA,SAAA,KAAAwC,YAIAL,IACAwB,EAAAC,KAAAlE,EAAAA,WAGA0C,IACAuB,EAAAC,KAAAlE,EAAAA,YARAiE,CAYA,GAGApH,QAAA,CACA,kBAAAyG,GACA,KAAAa,MAAA,eAAAb,GAEA,KAAAJ,iBAGA,KAAAkB,sBAAAd,SAFA,KAAAe,mBAAAf,EAIA,EAEA,yBAAAA,GACA,QAAAgB,EAAAC,EACA,MAAAC,OH5F+CxD,OAAOC,EAAiBqC,KACtE,MAAMnC,GAASC,EAAAA,EAAAA,MAAiBC,IAC1BC,GAAMC,EAAAA,EAAAA,gBAAe,uBAAwB,CAAEJ,WASrD,aAPMK,EAAAA,GAAAA,0BAEYC,EAAAA,QAAAA,IAAUH,EAAK,CAChCI,IAAK,GAAF+C,OAAKxD,GAAewD,OAAGlE,GAC1BW,MAAOoC,KAGG3B,IAAI,EGiFhB+C,CAAA/E,EAAA,KAAAmD,UAAAQ,GACA,KAAAqB,eAAA,CACArB,QACAhB,OAAA,QAAAgC,EAAAE,EAAAI,WAAA,IAAAN,GAAA,QAAAC,EAAAD,EAAAO,YAAA,IAAAN,OAAA,EAAAA,EAAAjC,QAEA,OAAAwC,GACA,KAAAH,eAAA,CACAI,aAAAxF,EAAA,0EAAAqE,SAAA,KAAAL,oBACAtB,MAAA6C,GAEA,CACA,EAEA,4BAAAxB,GACA,QAAA0B,EAAAC,EACA,MAAAT,QAAA,KAAAnB,4BAAA,KAAAF,gBAAAG,GACA,KAAAqB,eAAA,CACArB,QACAhB,OAAA,QAAA0C,EAAAR,EAAAI,WAAA,IAAAI,GAAA,QAAAC,EAAAD,EAAAH,YAAA,IAAAI,OAAA,EAAAA,EAAA3C,QAEA,OAAAwC,GACA,KAAAH,eAAA,CACAI,aAAAxF,EAAA,yEAAAqE,SAAA,KAAAL,oBACAtB,MAAA6C,GAEA,CACA,EAEAH,eAAAO,GAAA,UAAA5B,EAAA,OAAAhB,EAAA,aAAAyC,EAAA,MAAA9C,GAAAiD,EACA,OAAA5C,EACA,KAAAmB,aAAAH,GAEA,KAAAa,MAAA,oBAAAV,cACAzB,GAAAC,EAAA8C,GAEA,IC/L0M,sBCWtM,GAAU,CAAC,EAEf,GAAQ/H,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YCPlD,UAXgB,OACd,ICTW,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,YAAY,CAACG,MAAM,CAAE,sBAAuBL,EAAI6F,WAAY,iCAAkC7F,EAAI6F,YAAavF,MAAM,CAAC,aAAaN,EAAIsG,UAAU,eAAetG,EAAIyG,UAAU,SAAWzG,EAAI+F,WAAW/F,EAAI8H,GAAI9H,EAAI0G,kBAAkB,SAASqB,GAAiB,OAAO7H,EAAG,0BAA0B,CAACmE,IAAI0D,EAAgBxJ,KAAK+B,MAAM,CAAC,eAAeN,EAAIiG,MAAM,eAAe8B,EAAgBhJ,YAAY,sBAAsBiB,EAAIgI,YAAY,aAAaD,EAAgB5I,UAAU,qBAAqBa,EAAI2G,gBAAgBf,SAASmC,EAAgBxJ,MAAM,KAAOwJ,EAAgBxJ,KAAK,mBAAmBwJ,EAAgBzI,gBAAgB,QAAUyI,EAAgBxI,QAAQ,aAAawI,EAAgBxI,UAAU,IAAG,EAC/vB,GACsB,IDUpB,EACA,KACA,WACA,MAI8B,QEnBkK,GCiElM,CACAhB,KAAA,YAEAC,WAAA,CACAyJ,kBAAA,GACAC,SAAA,IACAC,KAAAA,EAAAA,GAGAzJ,MAAA,CACAuH,MAAA,CACArH,KAAAC,OACAK,QAAA,MAEAuG,SAAA,CACA7G,KAAAC,OACAC,UAAA,GAEAsJ,QAAA,CACAxJ,KAAAC,OACAK,QAAA,MAEAmJ,WAAA,CACAzJ,KAAAS,QACAH,SAAA,GAEAoJ,sBAAA,CACA1J,KAAAS,QACAH,SAAA,GAEAqJ,eAAA,CACA3J,KAAAS,QACAH,SAAA,GAEAsJ,UAAA,CACA5J,KAAAS,QACAH,SAAA,IAIAoF,OACA,OACAmE,WAAA,KAAAxC,MAEA,EAEAI,SAAA,CACAqC,oBACA,YAAAjD,WAAAxD,EAAAA,eACA,EAEA0G,oBACA,OAAA3H,OAAA2E,OAAA1D,GAAA2D,SAAA,KAAAH,YAAAzE,OAAA2E,OAAAvD,GAAAwD,SAAA,KAAAH,SACA,GAGAjG,QAAA,CACAoJ,kBACA,KAAA9B,MAAA,iBACA,EAEA+B,cAAA5C,GACA,KAAAa,MAAA,eAAAb,EACA,oBCrHI,GAAU,CAAC,EAEf,GAAQtG,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YCPlD,UAXgB,OACd,ICTW,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAGF,EAAIwI,UAAY,KAAH,MAAgB,CAACM,IAAI,YAAY1I,YAAY,kBAAkBC,MAAM,CAAE,mBAAoBL,EAAI2I,kBAAmB,mBAAoB3I,EAAI0I,oBAAqB,CAAE1I,EAAIwI,UAAWtI,EAAG,OAAO,CAACF,EAAIa,GAAG,SAASb,EAAIc,GAAGd,EAAIyF,UAAU,UAAUvF,EAAG,QAAQ,CAACI,MAAM,CAAC,IAAMN,EAAIoI,UAAU,CAACpI,EAAIa,GAAG,SAASb,EAAIc,GAAGd,EAAIyF,UAAU,UAAUzF,EAAIa,GAAG,KAAMb,EAAIiG,MAAO,CAAC/F,EAAG,oBAAoB,CAACE,YAAY,qBAAqBE,MAAM,CAAC,SAAWN,EAAIyF,SAAS,MAAQzF,EAAIyI,YAAYlI,GAAG,CAAC,eAAe,CAAC,SAASC,GAAQR,EAAIyI,WAAWjI,CAAM,EAAER,EAAI6I,mBAAmB7I,EAAI+I,KAAK/I,EAAIa,GAAG,KAAMb,EAAIqI,YAAcrI,EAAIsI,sBAAuB,CAACpI,EAAG,WAAW,CAACI,MAAM,CAAC,KAAO,WAAW,UAAYN,EAAIuI,eAAe,aAAavI,EAAIkC,EAAE,WAAY,yBAAyB3B,GAAG,CAAC,MAAQ,SAASC,GAAyD,OAAjDA,EAAOC,kBAAkBD,EAAOE,iBAAwBV,EAAI4I,gBAAgBjI,MAAM,KAAMC,UAAU,GAAGoI,YAAYhJ,EAAIiJ,GAAG,CAAC,CAAC5E,IAAI,OAAO6E,GAAG,WAAW,MAAO,CAAChJ,EAAG,OAAO,CAACI,MAAM,CAAC,KAAO,MAAM,EAAE6I,OAAM,IAAO,MAAK,EAAM,WAAW,CAACnJ,EAAIa,GAAG,WAAWb,EAAIc,GAAGd,EAAIkC,EAAE,WAAY,QAAQ,aAAalC,EAAI+I,MAAM,EAC1nC,GACsB,IDUpB,EACA,KACA,WACA,MAI8B,SEgG1B,OAANK,KAAA9D,EAAAA,EAAAA,GAAA,yCACM,sBAAN+D,KAAA/D,EAAAA,EAAAA,GAAA,mCAEAgE,GAAA,2BAEAC,IAAAC,EAAAA,EAAAA,IAAAtH,EAAA,2CACAuH,gBAAA,GACAC,kBAAAJ,IACAK,UAAA,GACAC,QAAA,GACAC,kBAAA,GACAnF,QC9HgM,GDgIhM,CACAnG,KAAA,gBAEAC,WAAA,CACAsL,OAAA,IACAC,OAAA,UACAC,UAAA,GACAC,SAAA,IACA/B,SAAA,IACAgC,OAAA,IACAC,WAAAA,EAAAA,GAGA7F,KAAAA,KACA,CACA8E,OAAA,IAAAA,GAAA3D,SAAAtD,EAAAiH,GAAA7K,OACA8K,yBACAe,aAAA,EACAC,SAAA,EACAvG,QAAAC,EAAAA,EAAAA,MAAAC,IACAjF,aAAAgF,EAAAA,EAAAA,MAAAhF,YACAuL,QAAAC,cAAAnB,OAAAkB,QACAE,YAAAD,cAAAnB,OAAAqB,UACAC,eAAApB,GACAqB,eAAA,CACAC,YAAA,EACAC,SAAA,EACAC,QAAA,EACAC,QAAA,EACAC,WAAA,EACAC,aAAA,EACAC,kBAAA,IACAC,mBAAA,OAKA9E,SAAA,CACA+B,UACA,0BAAAhB,OAAA,KAAAgC,OAAA7K,KACA,GAGA6M,WACAC,EAAAA,EAAAA,IAAA,qCAAAC,wBACA,EAEAC,iBACAC,EAAAA,EAAAA,IAAA,qCAAAF,wBACA,EAEA9L,QAAA,CACAiM,0BAEA,KAAAC,MAAAC,MAAA9H,MAAA,KACA,KAAA6H,MAAAC,MAAAC,OACA,EAEAC,SAAApE,GACA,KAAA4C,SAAA,EACA,MAAAyB,EAAArE,EAAAsE,OAAAC,MAAA,GACA,SAAAtB,eAAA9E,SAAAkG,EAAAlN,MAGA,OAFAsG,EAAAA,EAAAA,IAAAhD,EAAA,0DACA,KAAA+J,SAIA,MAAAC,EAAA,IAAAC,WACAD,EAAAE,OAAA3E,IACA,KAAAiE,MAAAW,QAAAC,QAAA7E,EAAAsE,OAAAQ,QACA,KAAAnC,aAAA,GAEA8B,EAAAM,cAAAV,EACA,EAEA,uBACA,MAAAW,QAAAlD,GAAAmD,OACA,KAAArC,SAAA,EACA,IACA,WAAA/F,SAAAF,EAAAA,QAAAA,MAAAuI,EAAAA,EAAAA,aAAA,YAAAF,SACA,eAAAnI,EAAAW,OACA,KAAA2H,oBAAA,QACA,iBAAAtI,EAAAA,KAAA,CACA,MAAAuI,GAAAF,EAAAA,EAAAA,aAAA,gCAAAG,mBAAAC,GAAAC,cAAA,IAAAC,KAAAC,MAAA,IAAAD,KAAAE,UACA,KAAAzB,MAAAW,QAAAC,QAAAO,GACA,KAAAzC,aAAA,CACA,MACAlF,EAAAA,EAAAA,IAAAZ,EAAAA,KAAAO,SACA,KAAAoH,QAEA,OAAAxE,IACAvC,EAAAA,EAAAA,IAAAhD,EAAA,6CACA,KAAA+J,QACA,CACA,EAEAmB,aACA,KAAAhD,aAAA,EACA,KAAAC,SAAA,EAEA,MAAAgD,EAAA,KAAA3B,MAAAW,QAAAiB,mBACAC,EAAAF,EAAAG,MAAA,QAAAH,EAAAG,MAAA,EAEA,KAAA9B,MAAAW,QAAAoB,MAAAF,EAAAA,GAAAD,mBAAAI,QAAA,UACA,UAAAC,EAGA,OAFAzI,EAAAA,EAAAA,IAAAhD,EAAA,mDACA,KAAA+J,SAIA,MAAA2B,EAAA,IAAAC,SACAD,EAAAE,OAAA,UAAAH,GACA,UACAvJ,EAAAA,QAAAA,MAAAuI,EAAAA,EAAAA,aAAA,WAAAiB,GACA,KAAAhB,oBAAA,EACA,OAAAnF,IACAvC,EAAAA,EAAAA,IAAAhD,EAAA,4CACA,KAAA0K,mBAAA,KAAApC,YACA,IAEA,EAEA,qBACA,KAAAH,SAAA,EACA,UACAjG,EAAAA,QAAAA,QAAAuI,EAAAA,EAAAA,aAAA,YACA,KAAAC,oBAAA,EACA,OAAAnF,IACAvC,EAAAA,EAAAA,IAAAhD,EAAA,8CACA,KAAA0K,mBAAA,KAAApC,YACA,CACA,EAEAyB,SACA,KAAA7B,aAAA,EACA,KAAAC,SAAA,CACA,EAEAuC,mBAAApC,GAEA,KAAAF,QAAAC,cAAAnB,OAAAkB,QAAAyD,KAAAC,MACA,KAAAxD,YAAAD,cAAAnB,OAAAqB,UAAAD,EACA,KAAAH,SAAA,GACA4D,EAAAA,EAAAA,IAAA,0BAAA1D,cAAAnB,OAAAkB,QACA,EAEAgB,0BACA,KAAAhB,QAAAC,cAAAnB,OAAAkB,OACA,oBEzQI,GAAU,CAAC,EAEf,GAAQ3K,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YCPlD,UAXgB,OACd,ICTW,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,UAAU,CAACI,MAAM,CAAC,GAAK,uBAAuB,CAACJ,EAAG,KAAK,CAACE,YAAY,mBAAmB,CAACJ,EAAIa,GAAG,IAAIb,EAAIc,GAAGd,EAAIkC,EAAE,WAAY,6BAA6B,OAAOlC,EAAIa,GAAG,KAAKX,EAAG,YAAY,CAACI,MAAM,CAAC,WAAWN,EAAIqJ,sBAAwBrJ,EAAIoI,QAAU,KAAK,SAAWpI,EAAIoJ,OAAO3D,SAAS,MAAQzF,EAAIoJ,OAAOnD,OAAO1F,GAAG,CAAC,eAAe,SAASC,GAAQ,OAAOR,EAAIkO,KAAKlO,EAAIoJ,OAAQ,QAAS5I,EAAO,KAAKR,EAAIa,GAAG,KAAOb,EAAIoK,YAAoiDpK,EAAI+I,KAA3hD7I,EAAG,MAAM,CAACE,YAAY,qBAAqB,CAACF,EAAG,MAAM,CAACE,YAAY,mBAAmB,CAAGJ,EAAIqK,QAA4MnK,EAAG,MAAM,CAACE,YAAY,iBAAzNF,EAAG,WAAW,CAACmE,IAAIrE,EAAIsK,QAAQhK,MAAM,CAAC,KAAON,EAAI8D,OAAO,aAAa9D,EAAIkC,EAAE,WAAY,wBAAwB,iBAAgB,EAAK,oBAAmB,EAAK,oBAAmB,EAAM,KAAO,QAA+C,GAAGlC,EAAIa,GAAG,KAAMb,EAAIqJ,sBAAuB,CAACnJ,EAAG,MAAM,CAACE,YAAY,mBAAmB,CAACF,EAAG,WAAW,CAACI,MAAM,CAAC,aAAaN,EAAIkC,EAAE,WAAY,2BAA2B3B,GAAG,CAAC,MAAQP,EAAIyL,yBAAyBzC,YAAYhJ,EAAIiJ,GAAG,CAAC,CAAC5E,IAAI,OAAO6E,GAAG,WAAW,MAAO,CAAChJ,EAAG,SAAS,CAACI,MAAM,CAAC,KAAO,MAAM,EAAE6I,OAAM,IAAO,MAAK,EAAM,cAAcnJ,EAAIa,GAAG,KAAKX,EAAG,WAAW,CAACI,MAAM,CAAC,aAAaN,EAAIkC,EAAE,WAAY,sCAAsC3B,GAAG,CAAC,MAAQP,EAAImO,gBAAgBnF,YAAYhJ,EAAIiJ,GAAG,CAAC,CAAC5E,IAAI,OAAO6E,GAAG,WAAW,MAAO,CAAChJ,EAAG,SAAS,CAACI,MAAM,CAAC,KAAO,MAAM,EAAE6I,OAAM,IAAO,MAAK,EAAM,cAAcnJ,EAAIa,GAAG,KAAOb,EAAIwK,YAA0PxK,EAAI+I,KAAjP7I,EAAG,WAAW,CAACI,MAAM,CAAC,aAAaN,EAAIkC,EAAE,WAAY,2BAA2B3B,GAAG,CAAC,MAAQP,EAAIoO,cAAcpF,YAAYhJ,EAAIiJ,GAAG,CAAC,CAAC5E,IAAI,OAAO6E,GAAG,WAAW,MAAO,CAAChJ,EAAG,SAAS,CAACI,MAAM,CAAC,KAAO,MAAM,EAAE6I,OAAM,IAAO,MAAK,EAAM,eAAwB,GAAGnJ,EAAIa,GAAG,KAAKX,EAAG,OAAO,CAACF,EAAIa,GAAGb,EAAIc,GAAGd,EAAIkC,EAAE,WAAY,qCAAqClC,EAAIa,GAAG,KAAKX,EAAG,QAAQ,CAACmO,IAAI,QAAQ/N,MAAM,CAAC,GAAKN,EAAIoI,QAAQ,KAAO,OAAO,OAASpI,EAAI0K,eAAe4D,KAAK,MAAM/N,GAAG,CAAC,OAASP,EAAI6L,aAAa3L,EAAG,OAAO,CAACF,EAAIa,GAAG,WAAWb,EAAIc,GAAGd,EAAIkC,EAAE,WAAY,yCAAyC,aAAa,GAAYlC,EAAIa,GAAG,KAAKX,EAAG,MAAM,CAACqO,WAAW,CAAC,CAAChQ,KAAK,OAAOiQ,QAAQ,SAAS3K,MAAO7D,EAAIoK,YAAaqE,WAAW,gBAAgBrO,YAAY,qBAAqB,CAACF,EAAG,aAAaF,EAAI0O,GAAG,CAACL,IAAI,UAAUjO,YAAY,mBAAmB,aAAaJ,EAAI2K,gBAAe,IAAQ3K,EAAIa,GAAG,KAAKX,EAAG,MAAM,CAACE,YAAY,2BAA2B,CAACF,EAAG,WAAW,CAACK,GAAG,CAAC,MAAQP,EAAIiM,SAAS,CAACjM,EAAIa,GAAG,aAAab,EAAIc,GAAGd,EAAIkC,EAAE,WAAY,WAAW,cAAclC,EAAIa,GAAG,KAAKX,EAAG,WAAW,CAACI,MAAM,CAAC,KAAO,WAAWC,GAAG,CAAC,MAAQP,EAAIoN,aAAa,CAACpN,EAAIa,GAAG,aAAab,EAAIc,GAAGd,EAAIkC,EAAE,WAAY,2BAA2B,eAAe,GAAGlC,EAAIa,GAAG,KAAKX,EAAG,OAAO,CAACF,EAAIa,GAAGb,EAAIc,GAAGd,EAAIkC,EAAE,WAAY,uGAAuG,IAAI,EAC7wF,GACsB,IDUpB,EACA,KACA,WACA,MAI8B,QEnBhC,mDCyDA,MAEM,OAANyM,GAAA,MAAAC,GAAA,WAAAC,GAAA,MAAAC,GAAA,cAAAC,KAAAzJ,EAAAA,EAAAA,GAAA,wCC3DiM,GD6DjM,CACA/G,KAAA,iBAEAC,WAAA,CACAwQ,QAAA,KACAC,YAAA,KACAjF,UAAA,GACAkF,cAAAA,MAGA7I,SAAA,CACA8I,UAAAA,KAfA,IAgBAP,GACA1M,EAAA,qDAAA4M,WAEA5M,EACA,WACA,8GACA,CAAA4M,SAAAD,cAAAE,oBAKAzK,KAAAA,KACA,CACAqK,UACAI,oCE5EI,GAAU,CAAC,EAEf,GAAQpP,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YCPlD,UAXgB,OACd,IJTW,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,UAAU,CAACA,EAAG,YAAY,CAACI,MAAM,CAAC,cAAa,EAAK,SAAWN,EAAIkC,EAAE,WAAY,cAAclC,EAAIa,GAAG,KAAKX,EAAG,MAAM,CAACE,YAAY,WAAW,CAACF,EAAG,MAAM,CAACE,YAAY,mBAAmB,CAACF,EAAG,UAAU,CAACI,MAAM,CAAC,KAAO,MAAMN,EAAIa,GAAG,KAAKX,EAAG,MAAM,CAACE,YAAY,wBAAwB,CAACF,EAAG,IAAI,CAACF,EAAIa,GAAGb,EAAIc,GAAGd,EAAIkC,EAAE,WAAY,iDAAiDlC,EAAIa,GAAG,KAAKX,EAAG,IAAI,CAACE,YAAY,wBAAwB,CAACJ,EAAIa,GAAGb,EAAIc,GAAGd,EAAI2O,OAAOL,KAAK,aAAa,GAAGtO,EAAIa,GAAG,KAAKX,EAAG,MAAM,CAACE,YAAY,kBAAkB,CAACF,EAAG,cAAc,CAACI,MAAM,CAAC,KAAO,MAAMN,EAAIa,GAAG,KAAKX,EAAG,MAAM,CAACE,YAAY,uBAAuB,CAACF,EAAG,IAAI,CAACE,YAAY,sBAAsBgP,SAAS,CAAC,UAAYpP,EAAIc,GAAGd,EAAImP,cAAcnP,EAAIa,GAAG,KAAKX,EAAG,gBAAgB,CAACI,MAAM,CAAC,KAAO,SAAS,MAAQN,EAAI+O,cAAc,MAAQ/O,EAAI+O,cAAgB,OAAO,IAAI,MAAM,EACt4B,GACsB,IIUpB,EACA,KACA,WACA,MAI8B,QCnBhC,+DCmFA,MCnF+M,GDmF/M,CACAxQ,KAAA,yBAEAC,WAAA,CACA6Q,YAAA,WACAC,aAAA,KACAC,MAAA,WACAvF,UAAAA,IAGAtL,MAAA,CACAH,KAAA,CACAK,KAAAC,OACAC,UAAA,GAEA+E,MAAA,CACAjF,KAAAC,OACAC,UAAA,GAEAmH,MAAA,CACArH,KAAAC,OACAC,UAAA,GAEA2G,SAAA,CACA7G,KAAAC,OACAC,UAAA,GAEA0Q,YAAA,CACA5Q,KAAAC,OACAC,UAAA,GAEAF,KAAA,CACAA,KAAAC,OACAK,QAAA,QAEAmJ,WAAA,CACAzJ,KAAAS,QACAH,SAAA,GAEAuQ,UAAA,CACA7Q,KAAAS,QACAH,SAAA,GAEAwQ,WAAA,CACA9Q,KAAAK,SACAC,QAAA,MAEAyQ,OAAA,CACA/Q,KAAAK,SACAC,QAAA,OAIAoF,OACA,OACAsL,aAAA,KAAA/L,MACAgM,WAAA,KACAC,mBAAA,EACAC,eAAA,EAEA,EAEA1J,SAAA,CACA+B,UACA,0BAAAhB,OAAA,KAAA7I,KACA,GAGAiB,QAAA,CACAwQ,iBAAAvI,GACA,KAAAX,MAAA,eAAAW,EAAAsE,OAAAlI,OACA,KAAAoM,uBAAAxI,EAAAsE,OAAAlI,MAAAqM,OACA,EAEAD,uBAAAE,MAAA,eAAAtM,GACA,KAAAgM,WAAA,KACA,KAAAnE,MAAAC,OAAA,KAAAD,MAAAC,MAAAyE,kBACA,KAAAP,WAAA,KAAAnE,MAAAC,MAAAyE,kBAGA,KAAAV,aAAA,KAAAA,WAAA7L,UAGA,KAAAwM,eAAAxM,EACA,QAEA,qBAAAA,GACA,QAAAoD,EAAAC,EACA,MAAAC,QAAAzD,GACA,KAAAnF,KACAsF,GAEA,KAAAyD,eAAA,CACAzD,QACAoB,OAAA,QAAAgC,EAAAE,EAAAI,WAAA,IAAAN,GAAA,QAAAC,EAAAD,EAAAO,YAAA,IAAAN,OAAA,EAAAA,EAAAjC,QAEA,OAAAwC,GACA,KAAAH,eAAA,CACAI,aAAAxF,EAAA,0CAAAqE,SAAA,KAAAd,SAAAU,sBACAvB,MAAA6C,GAEA,CACA,EAEAH,eAAAO,GAAA,UAAAhE,EAAA,OAAAoB,EAAA,aAAAyC,EAAA,MAAA9C,GAAAiD,EACA,OAAA5C,GACA,KAAA2K,aAAA/L,EACA,KAAA8L,QACA,KAAAA,OAAA9L,GAEA,KAAAiM,mBAAA,EACAQ,YAAA,UAAAR,mBAAA,WAEA,KAAAhJ,MAAA,oBAAA8I,cACAjL,GAAAC,EAAA8C,GACA,KAAAqI,eAAA,EACAO,YAAA,UAAAP,eAAA,SAEA,oBE9LI,GAAU,CAAC,EAEf,GAAQpQ,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YCPlD,UAXgB,OACd,ICTW,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,UAAU,CAACA,EAAG,YAAY,CAACI,MAAM,CAAC,MAAQN,EAAIiG,MAAM,SAAWjG,EAAIyF,SAAS,WAAWzF,EAAIoI,QAAQ,cAAcpI,EAAIqI,YAAY9H,GAAG,CAAC,eAAe,SAASC,GAAQR,EAAIiG,MAAMzF,CAAM,EAAE,kBAAkB,SAASA,GAAQR,EAAIyF,SAASjF,CAAM,KAAKR,EAAIa,GAAG,KAAMb,EAAIqI,WAAYnI,EAAG,MAAM,CAACE,YAAY,YAAY,CAAEJ,EAAIyP,UAAWvP,EAAG,WAAW,CAACI,MAAM,CAAC,GAAKN,EAAIoI,QAAQ,YAAcpI,EAAIwP,YAAY,KAAO,IAAI,eAAiB,OAAO,aAAe,MAAM,YAAc,OAAOJ,SAAS,CAAC,MAAQpP,EAAI6D,OAAOtD,GAAG,CAAC,MAAQP,EAAIgQ,oBAAoB9P,EAAG,QAAQ,CAACmO,IAAI,QAAQ/N,MAAM,CAAC,GAAKN,EAAIoI,QAAQ,YAAcpI,EAAIwP,YAAY,KAAOxP,EAAIpB,KAAK,mBAAmBoB,EAAI6P,WAAa,GAAHzI,OAAMpH,EAAIzB,KAAI,gBAAiB,GAAG,eAAiB,OAAO,aAAe,KAAK,YAAc,OAAO6Q,SAAS,CAAC,MAAQpP,EAAI6D,OAAOtD,GAAG,CAAC,MAAQP,EAAIgQ,oBAAoBhQ,EAAIa,GAAG,KAAKX,EAAG,MAAM,CAACE,YAAY,+BAA+B,CAACF,EAAG,aAAa,CAACI,MAAM,CAAC,KAAO,SAAS,CAAEN,EAAI8P,kBAAmB5P,EAAG,QAAQ,CAACI,MAAM,CAAC,KAAO,MAAON,EAAI+P,cAAe7P,EAAG,eAAe,CAACI,MAAM,CAAC,KAAO,MAAMN,EAAI+I,MAAM,IAAI,KAAK7I,EAAG,OAAO,CAACF,EAAIa,GAAG,SAASb,EAAIc,GAAGd,EAAI6D,OAAS7D,EAAIkC,EAAE,WAAY,oBAAqB,CAAEqE,SAAUvG,EAAIyF,SAASU,uBAAwB,UAAUnG,EAAIa,GAAG,KAAMb,EAAI6P,WAAY3P,EAAG,IAAI,CAACE,YAAY,qEAAqEE,MAAM,CAAC,GAAI,GAAA8G,OAAIpH,EAAIzB,KAAI,kBAAiB,CAAC2B,EAAG,cAAc,CAACE,YAAY,sCAAsCE,MAAM,CAAC,KAAO,MAAMN,EAAIa,GAAG,SAASb,EAAIc,GAAGd,EAAI6P,YAAY,SAAS,GAAG7P,EAAI+I,MAAM,EACpjD,GACsB,IDUpB,EACA,KACA,WACA,MAI8B,SEmB1B,YAANhK,KAAAuG,EAAAA,EAAAA,GAAA,yCACM,2BAANiL,KAAAjL,EAAAA,EAAAA,GAAA,mCCvCqM,GDyCrM,CACA/G,KAAA,qBAEAC,WAAA,CACAgS,uBAAAA,IAGAlM,KAAAA,KACA,CACAvF,YAAA,IAAAA,GAAA0G,SAAAtD,EAAApD,GAAAR,OACAgS,gCAIA/Q,QAAA,CACAkQ,WAAA7L,GACA,KAAAA,EAGA8L,OAAA9L,GACA0G,cAAAnB,OAAAqB,YAEAF,cAAAnB,OAAAkB,QAAAyD,KAAAC,QAEAC,EAAAA,EAAAA,IAAA,gCAAApK,EACA,IEhDA,IAXgB,OACd,IRRW,WAAkB,IAAI7D,EAAIC,KAAqB,OAAOC,EAApBF,EAAIG,MAAMD,IAAa,yBAAyBF,EAAI0O,GAAG,CAACpO,MAAM,CAAC,YAAcN,EAAIkC,EAAE,WAAY,kBAAkB,cAAclC,EAAIuQ,2BAA2B,cAAcvQ,EAAI0P,WAAW,UAAU1P,EAAI2P,SAAS,yBAAyB3P,EAAIjB,aAAY,GAAM,GAChT,GACsB,IQSpB,EACA,KACA,KACA,MAI8B,QClBhC,gBCoCO,MAAM0R,GAAmB9M,UAC/B,MAAMG,GAASC,EAAAA,EAAAA,MAAiBC,IAC1BC,GAAMC,EAAAA,EAAAA,gBAAe,uBAAwB,CAAEJ,WASrD,aAPMK,EAAAA,GAAAA,0BAEYC,EAAAA,QAAAA,IAAUH,EAAK,CAChCI,IAAKtD,EAAsBQ,MAC3BsC,MAAO6M,KAGGpM,IAAI,EAmDHqM,GAAwBhN,UACpC,MAAMG,GAASC,EAAAA,EAAAA,MAAiBC,IAC1BC,GAAMC,EAAAA,EAAAA,gBAAe,oCAAqC,CAAEJ,SAAQ8M,WAAY7P,EAAsBO,mBAS5G,aAPM6C,EAAAA,GAAAA,0BAEYC,EAAAA,QAAAA,IAAUH,EAAK,CAChCI,IAAKqM,EACL7M,MAAO,MAGGS,IAAI,EA8BHuM,GAAwBlN,UACpC,MAAMG,GAASC,EAAAA,EAAAA,MAAiBC,IAC1BC,GAAMC,EAAAA,EAAAA,gBAAe,uBAAwB,CAAEJ,WASrD,aAPMK,EAAAA,GAAAA,0BAEYC,EAAAA,QAAAA,IAAUH,EAAK,CAChCI,IAAK,GAAF+C,OAAKrG,EAAsBQ,OAAK6F,OAAGlE,GACtCW,MAAOoC,KAGG3B,IAAI,EAUHwM,GAA2BnN,MAAO+M,EAAOzK,KACrD,MAAMnC,GAASC,EAAAA,EAAAA,MAAiBC,IAC1BC,GAAMC,EAAAA,EAAAA,gBAAe,yCAA0C,CAAEJ,SAAQiN,gBAAiB,GAAF3J,OAAKrG,EAAsBO,kBAAgB8F,OAAGlE,KAS5I,aAPMiB,EAAAA,GAAAA,0BAEYC,EAAAA,QAAAA,IAAUH,EAAK,CAChCI,IAAKqM,EACL7M,MAAOoC,KAGG3B,IAAI,ECnIT,SAAS0M,GAAcrF,GAC7B,MAAwB,iBAAVA,GACVlI,GAAqBwN,KAAKtF,IACN,OAApBA,EAAMuF,OAAO,IACbvF,EAAMwF,QAAU,KAChBrE,mBAAmBnB,GAAOW,QAAQ,OAAQ,KAAK6E,QAAU,GAC9D,CC8DA,UACA5S,KAAA,QAEAC,WAAA,CACA+G,UAAA,MACA9G,eAAA,MACA4Q,YAAA,WACAC,aAAA,KACAC,MAAA,WACAtH,kBAAAA,IAGAvJ,MAAA,CACAgS,MAAA,CACA9R,KAAAC,OACAC,UAAA,GAEAsS,MAAA,CACAxS,KAAAyS,OACAnS,QAAA,GAEAoS,QAAA,CACA1S,KAAAS,QACAH,SAAA,GAEA+G,MAAA,CACArH,KAAAC,OACAC,UAAA,GAEAyS,wBAAA,CACA3S,KAAAC,OACAK,QAAA,IAEAsS,uBAAA,CACA5S,KAAAyS,OACAnS,QAAAmE,GAAAA,eAIAiB,OACA,OACAmN,iBAAAxP,EAAAA,MACAyP,aAAA,KAAAhB,MACAjI,WAAA,KAAAxC,MACA6K,yBAAA,GACAjB,WAAA,KACAC,mBAAA,EACAC,eAAA,EAEA,EAEA1J,SAAA,CACAsL,iBACA,YAAAL,QAGA,UAAAZ,OAAA,KAAAgB,eAAA,KAAAhB,MACA,UAAAgB,cACA,KAAAA,eAAA,KAAAhB,KAGA,EAEAkB,mBACA,YAAAN,QACApP,EAAA,mCAEAA,EAAA,0BACA,EAEA2P,8BACA,YAAAP,SAAA,KAAAE,yBAAAnO,GAAAA,QACA,EAEAyO,2BACA,YAAAC,oBACA7P,EAAA,qCACA,KAAAoP,SAAA,KAAAE,yBAAAnO,GAAAA,SAGAnB,EAAA,mCAFAA,EAAA,2CAGA,EAEA8P,qBACA,YAAAN,YACA,EAEAtJ,UACA,YAAAkJ,QACA,QAEA,SAAAlK,OAAA,KAAAgK,MACA,EAEAa,mBACA,YAAAX,QACApP,EAAA,iCAEAA,EAAA,+CAAAkP,MAAA,KAAAA,MAAA,GACA,EAEAW,sBACA,YAAArB,OAAA,KAAAA,QAAA,KAAAa,yBACA,KAAAD,SAAA,UAAAC,uBACA,GAGAW,UACA,KAAAZ,SAAA,UAAAI,cAEA,KAAAS,WAAA,SAAAC,EAAA,eAAAA,EAAA,KAAA1G,MAAAgF,aAAA,IAAA0B,OAAA,EAAAA,EAAAC,OAAA,GAEA,EAEA7S,QAAA,CACA8S,cAAA7K,GACA,KAAAX,MAAA,eAAAW,EAAAsE,OAAAlI,OACA,KAAA0O,oBAAA9K,EAAAsE,OAAAlI,MAAAqM,OACA,EAEAqC,oBAAApC,MAAA,eAAAO,GAAA,IAAA8B,EACA,KAAA3C,WAAA,KACA,QAAA2C,EAAA,KAAA9G,MAAAgF,aAAA,IAAA8B,GAAAA,EAAApC,kBACA,KAAAP,WAAA,KAAAnE,MAAAgF,MAAAN,mBAGAY,GAAAN,IAAA,KAAAA,KACA,KAAAY,cACA,KAAAmB,mBAAA/B,GAEAA,IACA,UAAAgB,mBACA,KAAAgB,mBAAAhC,SAEA,KAAAiC,sBAAAjC,IAKA,QAEA,oBACA,KAAAY,SACA,KAAAxK,MAAA,yBACA,KAAA2L,mBAAA,WAEA,KAAAG,uBAEA,EAEA,yBAAAlC,GACA,QAAAzJ,EAAAC,EACA,MAAAC,QAAAsJ,GAAAC,GACA,KAAApJ,eAAA,CACAoJ,QACAzL,OAAA,QAAAgC,EAAAE,EAAAI,WAAA,IAAAN,GAAA,QAAAC,EAAAD,EAAAO,YAAA,IAAAN,OAAA,EAAAA,EAAAjC,QAEA,OAAAwC,GACA,KAAAiJ,EACA,KAAApJ,eAAA,CACAI,aAAAxF,EAAA,qDACA0C,MAAA6C,IAGA,KAAAH,eAAA,CACAI,aAAAxF,EAAA,qDACA0C,MAAA6C,GAGA,CACA,EAEA,yBAAAiJ,GACA,QAAA/I,EAAAC,EACA,MAAAT,OFhOmCxD,WAClC,MAAMG,GAASC,EAAAA,EAAAA,MAAiBC,IAC1BC,GAAMC,EAAAA,EAAAA,gBAAe,uBAAwB,CAAEJ,WASrD,aAPMK,EAAAA,GAAAA,0BAEYC,EAAAA,QAAAA,IAAUH,EAAK,CAChCI,IAAKtD,EAAsBO,iBAC3BuC,MAAO6M,KAGGpM,IAAI,EEqNhBuO,CAAAnC,GACA,KAAApJ,eAAA,CACAoJ,QACAzL,OAAA,QAAA0C,EAAAR,EAAAI,WAAA,IAAAI,GAAA,QAAAC,EAAAD,EAAAH,YAAA,IAAAI,OAAA,EAAAA,EAAA3C,QAEA,OAAAwC,GACA,KAAAH,eAAA,CACAI,aAAAxF,EAAA,qDACA0C,MAAA6C,GAEA,CACA,EAEA,4BACA,QAAAqL,EAAAC,EACA,MAAAC,EAAA,KAAA1B,SAAA,KAAAS,oBAAA,QAAAL,aACAvK,OF5NqCxD,WACpC,MAAMG,GAASC,EAAAA,EAAAA,MAAiBC,IAC1BC,GAAMC,EAAAA,EAAAA,gBAAe,uBAAwB,CAAEJ,WASrD,aAPMK,EAAAA,GAAAA,0BAEYC,EAAAA,QAAAA,IAAUH,EAAK,CAChCI,IAAKtD,EAAsBU,mBAC3BoC,MAAO6M,KAGGpM,IAAI,EEiNhB2O,CAAAD,GACA,KAAA1L,eAAA,CACA4L,kBAAAF,EACA/N,OAAA,QAAA6N,EAAA3L,EAAAI,WAAA,IAAAuL,GAAA,QAAAC,EAAAD,EAAAtL,YAAA,IAAAuL,OAAA,EAAAA,EAAA9N,QAEA,OAAAwC,GACA,KAAAH,eAAA,CACAI,aAAA,gDACA9C,MAAA6C,GAEA,CACA,EAEA,4BAAAiJ,GACA,QAAAyC,EAAAC,EACA,MAAAjM,OFlMqCxD,OAAO0P,EAAWC,KACtD,MAAMxP,GAASC,EAAAA,EAAAA,MAAiBC,IAC1BC,GAAMC,EAAAA,EAAAA,gBAAe,oCAAqC,CAAEJ,SAAQ8M,WAAY7P,EAAsBO,mBAS5G,aAPM6C,EAAAA,GAAAA,0BAEYC,EAAAA,QAAAA,IAAUH,EAAK,CAChCI,IAAKgP,EACLxP,MAAOyP,KAGGhP,IAAI,EEuLhBqO,CAAA,KAAAjB,aAAAhB,GACA,KAAApJ,eAAA,CACAoJ,QACAzL,OAAA,QAAAkO,EAAAhM,EAAAI,WAAA,IAAA4L,GAAA,QAAAC,EAAAD,EAAA3L,YAAA,IAAA4L,OAAA,EAAAA,EAAAnO,QAEA,OAAAwC,GACA,KAAAH,eAAA,CACAI,aAAAxF,EAAA,wDACA0C,MAAA6C,GAEA,CACA,EAEA,8BACA,QAAA8L,EAAAC,EACA,MAAArM,QAAAwJ,GAAA,KAAAe,cACA,KAAA+B,4BAAA,QAAAF,EAAApM,EAAAI,WAAA,IAAAgM,GAAA,QAAAC,EAAAD,EAAA/L,YAAA,IAAAgM,OAAA,EAAAA,EAAAvO,OACA,OAAAwC,GACA,KAAAH,eAAA,CACAI,aAAAxF,EAAA,wDACA0C,MAAA6C,GAEA,CACA,EAEAgM,4BAAAxO,GACA,OAAAA,EACA,KAAA6B,MAAA,2BAEA,KAAAQ,eAAA,CACAI,aAAAxF,EAAA,yDAGA,EAEAoF,eAAAO,GAAA,UAAA6I,EAAA,kBAAAwC,EAAA,OAAAjO,EAAA,aAAAyC,EAAA,MAAA9C,GAAAiD,EACA,OAAA5C,GAEAyL,EACA,KAAAgB,aAAAhB,OACAgD,IAAAR,GACA,KAAApM,MAAA,4BAAAoM,GAEA,KAAApD,mBAAA,EACAQ,YAAA,UAAAR,mBAAA,WAEAnL,GAAAC,EAAA8C,GACA,KAAAqI,eAAA,EACAO,YAAA,UAAAP,eAAA,SAEA,EAEAlH,cAAA5C,GACA,KAAAa,MAAA,eAAAb,EACA,IC/W8L,sBCW1L,GAAU,CAAC,EAEf,GAAQtG,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YCPlD,UAXgB,OACd,ICTW,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACA,EAAG,MAAM,CAACE,YAAY,SAAS,CAACF,EAAG,QAAQ,CAACmO,IAAI,QAAQ/N,MAAM,CAAC,GAAKN,EAAIoI,QAAQ,KAAO,QAAQ,YAAcpI,EAAIiS,iBAAiB,mBAAmBjS,EAAI6P,WAAa,GAAHzI,OAAMpH,EAAIoI,QAAO,gBAAiB,GAAG,eAAiB,OAAO,aAAe,KAAK,YAAc,OAAOgH,SAAS,CAAC,MAAQpP,EAAI0Q,OAAOnQ,GAAG,CAAC,MAAQP,EAAIsS,iBAAiBtS,EAAIa,GAAG,KAAKX,EAAG,MAAM,CAACE,YAAY,4BAA4B,CAACF,EAAG,aAAa,CAACI,MAAM,CAAC,KAAO,SAAS,CAAEN,EAAI8P,kBAAmB5P,EAAG,QAAQ,CAACI,MAAM,CAAC,KAAO,MAAON,EAAI+P,cAAe7P,EAAG,eAAe,CAACI,MAAM,CAAC,KAAO,MAAMN,EAAI+I,MAAM,GAAG/I,EAAIa,GAAG,KAAOb,EAAIsR,QAAmUtR,EAAI+I,KAA9T,CAAC7I,EAAG,oBAAoB,CAACI,MAAM,CAAC,SAAWN,EAAIyR,iBAAiB,YAAa,EAAK,mBAAmBzR,EAAI0Q,MAAM,SAAW1Q,EAAIgS,mBAAmB,iCAAiChS,EAAI8Q,yBAAyB,MAAQ9Q,EAAIyI,YAAYlI,GAAG,CAAC,eAAe,CAAC,SAASC,GAAQR,EAAIyI,WAAWjI,CAAM,EAAER,EAAI6I,mBAA4B7I,EAAIa,GAAG,KAAKX,EAAG,YAAY,CAACE,YAAY,iBAAiBE,MAAM,CAAC,aAAaN,EAAIkC,EAAE,WAAY,iBAAiB,cAAa,IAAO,CAAChC,EAAG,iBAAiB,CAACI,MAAM,CAAC,aAAaN,EAAI4R,iBAAiB,qBAAoB,EAAK,SAAW5R,EAAI2R,eAAe,KAAO,eAAepR,GAAG,CAAC,MAAQ,SAASC,GAAyD,OAAjDA,EAAOC,kBAAkBD,EAAOE,iBAAwBV,EAAI2T,YAAYhT,MAAM,KAAMC,UAAU,IAAI,CAACZ,EAAIa,GAAG,eAAeb,EAAIc,GAAGd,EAAI4R,kBAAkB,gBAAgB5R,EAAIa,GAAG,KAAOb,EAAIsR,SAAYtR,EAAI+R,oBAA0Y/R,EAAI+I,KAAzX7I,EAAG,iBAAiB,CAACI,MAAM,CAAC,aAAaN,EAAI8R,yBAAyB,qBAAoB,EAAK,SAAW9R,EAAI6R,4BAA4B,KAAO,iBAAiBtR,GAAG,CAAC,MAAQ,SAASC,GAAyD,OAAjDA,EAAOC,kBAAkBD,EAAOE,iBAAwBV,EAAI4T,oBAAoBjT,MAAM,KAAMC,UAAU,IAAI,CAACZ,EAAIa,GAAG,eAAeb,EAAIc,GAAGd,EAAI8R,0BAA0B,iBAA0B,IAAI,KAAK9R,EAAIa,GAAG,KAAMb,EAAI6P,WAAY3P,EAAG,IAAI,CAACE,YAAY,+DAA+DE,MAAM,CAAC,GAAI,GAAA8G,OAAIpH,EAAIoI,QAAO,kBAAiB,CAAClI,EAAG,cAAc,CAACE,YAAY,mCAAmCE,MAAM,CAAC,KAAO,MAAMN,EAAIa,GAAG,SAASb,EAAIc,GAAGd,EAAI6P,YAAY,SAAS,GAAG7P,EAAI+I,KAAK/I,EAAIa,GAAG,KAAMb,EAAI+R,oBAAqB7R,EAAG,KAAK,CAACF,EAAIa,GAAG,SAASb,EAAIc,GAAGd,EAAIkC,EAAE,WAAY,uDAAuD,UAAUlC,EAAI+I,MACtzE,GACsB,IDUpB,EACA,KACA,WACA,MAI8B,SEuDhC8K,UAAA,iBAAAC,GAAA,aAAAC,GAAA,kBAAAb,MAAA5N,EAAAA,EAAAA,GAAA,yCACAiL,2BAAAA,KAAAjL,EAAAA,EAAAA,GAAA,mCC3EqM,GD6ErM,CACA/G,KAAA,eAEAC,WAAA,CACAwL,UAAA,GACAgK,MAAAA,IAGA1P,OACA,OACAV,gBAAA3B,EAAAA,MACA6R,iBAAAA,GAAAG,KAAAC,IAAA,IAAAA,EAAA7P,IAAA,KAAA8P,wBACA5D,2BAAA,GACAwD,aAAA,IAAAA,GAAAtO,SAAAtD,EAAA4R,GAAAxV,OACAsS,sBAAA,GACAqC,qBAEA,EAEA7M,SAAA,CACA+N,uBACA,YAAAN,iBAAA3C,OACA,KAAA2C,iBAAA,GAAAjQ,MAEA,IACA,EAEAuE,UACA,0BAAAhB,OAAA,KAAA2M,aAAAxV,KACA,EAEAgK,iBACA,OAAAyI,GAAA,KAAA+C,aAAAlQ,QACA,KAAAiQ,iBAAAG,KAAApM,IAAA,UAAAhE,GAAAgE,EAAA,OAAAhE,CAAA,IAAAwQ,MAAArD,GACA,EAEAsD,kBAAA,CACAC,MACA,YAAAR,aAAAlQ,KACA,EACA2Q,IAAA3Q,GACA,KAAAkQ,aAAAlQ,MAAAA,CACA,IAIArE,QAAA,CACAiV,uBACA,KAAAlM,gBACA,KAAAuL,iBAAAjN,KAAA,CAAAhD,MAAA,GAAAoC,MAAA7C,EAAAiB,IAAA,KAAA8P,qBAEA,EAEAO,wBAAAtD,GACA,KAAAuD,QAAA,KAAAb,iBAAA1C,EACA,EAEA,sBACA,aAAAkD,mBAAA,KAAAF,qBAAA,CACA,MAAAQ,EAAA,KAAAR,2BACA,KAAAS,6BACA,KAAAP,kBAAAM,QACA,KAAAnC,oBACA,CACA,EAEA,gCAAA/B,GACA,KAAAwC,kBAAAxC,CACA,EAEA,2BACA,QAAAzJ,EAAAC,EACA,MAAAC,QAAAsJ,GAAA,KAAA6D,mBACA,KAAAhN,eAAA,QAAAL,EAAAE,EAAAI,WAAA,IAAAN,GAAA,QAAAC,EAAAD,EAAAO,YAAA,IAAAN,OAAA,EAAAA,EAAAjC,OACA,OAAAwC,GACA,KAAAH,eACA,QACApF,EAAA,qDACAuF,EAEA,CACA,EAEA,mCACA,QAAAE,EAAAC,EACA,MAAAT,QAAAwJ,GAAA,KAAAyD,sBACA,KAAAU,iCAAA,QAAAnN,EAAAR,EAAAI,WAAA,IAAAI,GAAA,QAAAC,EAAAD,EAAAH,YAAA,IAAAI,OAAA,EAAAA,EAAA3C,OACA,OAAAwC,GACA,KAAAH,eACA,QACApF,EAAA,wDACAuF,EAEA,CACA,EAEAqN,iCAAA7P,GACA,OAAAA,EACA,KAAA0P,QAAA,KAAAb,iBAAA,GAEA,KAAAxM,eACA,QACApF,EAAA,wDACA,GAGA,EAEAoF,eAAArC,EAAAyC,EAAA9C,GACA,OAAAK,GACAN,GAAAC,EAAA8C,EAEA,EAEAyM,kBAAAA,IACAlH,KAAAE,SAAA4H,SAAA,IAAAC,UAAA,qBErLI,GAAU,CAAC,EAEf,GAAQrV,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YCPlD,UAXgB,OACd,IXTW,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,UAAU,CAACA,EAAG,YAAY,CAACI,MAAM,CAAC,WAAWN,EAAIoI,QAAQ,SAAWpI,EAAI+T,aAAatO,SAAS,sBAAsBzF,EAAI6Q,sBAAsB,eAAc,EAAK,4BAA2B,EAAK,mBAAmB7Q,EAAIuI,eAAe,MAAQvI,EAAI+T,aAAa9N,OAAO1F,GAAG,CAAC,eAAe,SAASC,GAAQ,OAAOR,EAAIkO,KAAKlO,EAAI+T,aAAc,QAASvT,EAAO,EAAE,iBAAiBR,EAAIyU,wBAAwBzU,EAAIa,GAAG,KAAMb,EAAIuQ,2BAA4B,CAACrQ,EAAG,QAAQ,CAACI,MAAM,CAAC,SAAU,EAAK,MAAQN,EAAI+T,aAAa9N,MAAM,MAAQjG,EAAI+T,aAAalQ,MAAM,4BAA4B7D,EAAIkT,mBAAmB3S,GAAG,CAAC,eAAe,SAASC,GAAQ,OAAOR,EAAIkO,KAAKlO,EAAI+T,aAAc,QAASvT,EAAO,EAAE,eAAe,CAAC,SAASA,GAAQ,OAAOR,EAAIkO,KAAKlO,EAAI+T,aAAc,QAASvT,EAAO,EAAER,EAAIiV,eAAe,iCAAiC,SAASzU,GAAQR,EAAIkT,kBAAkB1S,CAAM,EAAE,mCAAmC,SAASA,GAAQR,EAAIkT,kBAAkB1S,CAAM,EAAE,4BAA4BR,EAAIkV,8BAA8BhV,EAAG,OAAO,CAACF,EAAIa,GAAG,SAASb,EAAIc,GAAGd,EAAI+T,aAAalQ,OAAS7D,EAAIkC,EAAE,WAAY,yBAAyB,UAAUlC,EAAIa,GAAG,KAAMb,EAAI8T,iBAAiB3C,OAAQ,CAACjR,EAAG,KAAK,CAACE,YAAY,2BAA2B,CAACJ,EAAIa,GAAGb,EAAIc,GAAGd,EAAIkC,EAAE,WAAY,yBAAyBlC,EAAIa,GAAG,KAAKb,EAAI8H,GAAI9H,EAAI8T,kBAAkB,SAASqB,EAAgB/D,GAAO,OAAOlR,EAAG,QAAQ,CAACmE,IAAI8Q,EAAgB9Q,IAAI/D,MAAM,CAAC,MAAQ8Q,EAAM,MAAQ+D,EAAgBlP,MAAM,MAAQkP,EAAgBtR,MAAM,2BAA2BuR,SAASD,EAAgBE,gBAAiB,IAAI,4BAA4BrV,EAAIkT,mBAAmB3S,GAAG,CAAC,eAAe,SAASC,GAAQ,OAAOR,EAAIkO,KAAKiH,EAAiB,QAAS3U,EAAO,EAAE,eAAe,CAAC,SAASA,GAAQ,OAAOR,EAAIkO,KAAKiH,EAAiB,QAAS3U,EAAO,EAAER,EAAIiV,eAAe,iCAAiC,SAASzU,GAAQR,EAAIkT,kBAAkB1S,CAAM,EAAE,mCAAmC,SAASA,GAAQR,EAAIkT,kBAAkB1S,CAAM,EAAE,4BAA4BR,EAAIkV,0BAA0B,0BAA0B,SAAS1U,GAAQ,OAAOR,EAAI0U,wBAAwBtD,EAAM,IAAI,KAAIpR,EAAI+I,MAAM,EAC3nE,GACsB,IWUpB,EACA,KACA,WACA,MAI8B,QCnBhC,gBCqCA,MAAM,mBACNuM,GAAA,MACAC,KACAjQ,EAAAA,EAAAA,GAAA,wCCxC+L,GD0C/L,CACA/G,KAAA,eAEAC,WAAA,CACAgS,uBAAAA,IAGAlM,KAAAA,KACA,CACAiR,MAAA,IAAAA,GAAA9P,SAAAtD,EAAAoT,GAAAhX,SAIAiB,QAAA,CACAkQ,WAAA7L,GACAyR,IACAE,EAAAA,GAAAA,GAAA3R,EAAAyR,KAEAE,EAAAA,GAAAA,GAAA3R,KE1CA,IAXgB,OACd,IHRW,WAAkB,IAAI7D,EAAIC,KAAqB,OAAOC,EAApBF,EAAIG,MAAMD,IAAa,yBAAyBF,EAAI0O,GAAG,CAACpO,MAAM,CAAC,YAAcN,EAAIkC,EAAE,WAAY,qBAAqB,KAAO,MAAM,cAAclC,EAAI0P,aAAa,yBAAyB1P,EAAIuV,OAAM,GAAM,GACxP,GACsB,IGSpB,EACA,KACA,KACA,MAI8B,SCgBhCE,SAAAA,KAAAnQ,EAAAA,EAAAA,GAAA,wCClCkM,GDoClM,CACA/G,KAAA,kBAEAC,WAAA,CACAgS,uBAAAA,IAGAlM,KAAAA,KACA,CACAmR,SAAA,IAAAA,GAAAhQ,SAAAtD,EAAAsT,GAAAlX,UE3BA,IAXgB,OACd,ICRW,WAAkB,IAAIyB,EAAIC,KAAqB,OAAOC,EAApBF,EAAIG,MAAMD,IAAa,yBAAyBF,EAAI0O,GAAG,CAACpO,MAAM,CAAC,YAAcN,EAAIkC,EAAE,WAAY,mBAAmB,yBAAyBlC,EAAIyV,UAAS,GAAM,GAC7M,GACsB,IDSpB,EACA,KACA,KACA,MAI8B,SEmB1B,QAANC,KAAApQ,EAAAA,EAAAA,GAAA,wCCrCiM,GDuCjM,CACA/G,KAAA,iBAEAC,WAAA,CACAgS,uBAAAA,IAGAlM,KAAAA,KACA,CACAoR,QAAA,IAAAA,GAAAjQ,SAAAtD,EAAAuT,GAAAnX,SAIAiB,QAAA,CACAkQ,WAAA7L,GlBCO,SAAqB8H,GAC3B,IAGC,OADA,IAAIgK,IAAIhK,IACD,CACR,CAAE,MAAOlE,GACR,OAAO,CACR,CACD,CkBRAmO,CAAA/R,KEpCA,IAXgB,OACd,ICRW,WAAkB,IAAI7D,EAAIC,KAAqB,OAAOC,EAApBF,EAAIG,MAAMD,IAAa,yBAAyBF,EAAI0O,GAAG,CAACpO,MAAM,CAAC,YAAcN,EAAIkC,EAAE,WAAY,gBAAgB,KAAO,MAAM,cAAclC,EAAI0P,aAAa,yBAAyB1P,EAAI0V,SAAQ,GAAM,GACrP,GACsB,IDSpB,EACA,KACA,KACA,MAI8B,SEgB1B,QAANG,KAAAvQ,EAAAA,EAAAA,GAAA,wCClCiM,GDoCjM,CACA/G,KAAA,iBAEAC,WAAA,CACAgS,uBAAAA,IAGAlM,KAAAA,KACA,CACAuR,QAAA,IAAAA,GAAApQ,SAAAtD,EAAA0T,GAAAtX,UE3BA,IAXgB,OACd,ICRW,WAAkB,IAAIyB,EAAIC,KAAqB,OAAOC,EAApBF,EAAIG,MAAMD,IAAa,yBAAyBF,EAAI0O,GAAG,CAACpO,MAAM,CAAC,YAAcN,EAAIkC,EAAE,WAAY,yBAAyB,yBAAyBlC,EAAI6V,SAAQ,GAAM,GAClN,GACsB,IDSpB,EACA,KACA,KACA,MAI8B,SEgB1B,UAANC,KAAAxQ,EAAAA,EAAAA,GAAA,wCClCmM,GDoCnM,CACA/G,KAAA,mBAEAC,WAAA,CACAgS,uBAAAA,IAGAlM,KAAAA,KACA,CACAwR,UAAA,IAAAA,GAAArQ,SAAAtD,EAAA2T,GAAAvX,UE3BA,IAXgB,OACd,ICRW,WAAkB,IAAIyB,EAAIC,KAAqB,OAAOC,EAApBF,EAAIG,MAAMD,IAAa,yBAAyBF,EAAI0O,GAAG,CAACpO,MAAM,CAAC,YAAcN,EAAIkC,EAAE,WAAY,iBAAiB,yBAAyBlC,EAAI8V,WAAU,GAAM,GAC5M,GACsB,IDSpB,EACA,KACA,KACA,MAI8B,QElBiK,GC0DjM,CACAvX,KAAA,WAEAG,MAAA,CACA0J,QAAA,CACAxJ,KAAAC,OACAK,QAAA,MAEA6W,gBAAA,CACAnX,KAAAoX,MACAlX,UAAA,GAEAmX,eAAA,CACArX,KAAAoX,MACAlX,UAAA,GAEAoX,SAAA,CACAtX,KAAAoC,OACAlC,UAAA,IAIAwF,OACA,OACA6R,gBAAA,KAAAD,SAEA,EAEA7P,SAAA,CACA+P,eACA,OAAApV,OAAAC,OACA,SAAA8U,mBAAA,KAAAE,gBACAI,QAAA,CAAAC,EAAAzO,KAAA,SAAA0O,EAAA,KAAAhY,GAAAsJ,EAAA,UAAAyO,EAAA,CAAAC,GAAAhY,EAAA,OAEA,GAGAiB,QAAA,CACA,uBAAAiI,GACA,MAAAyO,EAAA,KAAAM,kBAAA/O,EAAAsE,OAAAlI,O/B3BO,IAA0B8H,E+B4BjC,KAAA7E,MAAA,kBAAAoP,G/B3BuB,MADUvK,E+B8BjCuK,G/B7BcK,MACM,KAAf5K,EAAMpN,WACSmV,IAAf/H,EAAMpN,Y+B4BX,KAAAkY,eAAAP,EAEA,EAEA,qBAAAA,GACA,QAAAjP,EAAAC,EACA,MAAAC,QAAAzD,GAAAnB,EAAAA,SAAA2T,EAAAK,MACA,KAAAjP,eAAA,CACA4O,WACAjR,OAAA,QAAAgC,EAAAE,EAAAI,WAAA,IAAAN,GAAA,QAAAC,EAAAD,EAAAO,YAAA,IAAAN,OAAA,EAAAA,EAAAjC,SAEA,KAAAyR,YACA,OAAAjP,GACA,KAAAH,eAAA,CACAI,aAAAxF,EAAA,wCACA0C,MAAA6C,GAEA,CACA,EAEA+O,kBAAAG,GACA,OACAJ,KAAAI,EACApY,KAAA,KAAA6X,aAAAO,GAEA,EAEArP,eAAAsP,GAAA,aAAAV,EAAA,OAAAjR,EAAA,aAAAyC,EAAA,MAAA9C,GAAAgS,EACA,OAAA3R,EAEA,KAAAkR,gBAAAD,EAEAvR,GAAAC,EAAA8C,EAEA,EAEAgP,aACAjB,SAAAoB,QACA,oBChII,GAAU,CAAC,EAEf,GAAQlX,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YCPlD,UAXgB,OACd,ICTW,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACE,YAAY,YAAY,CAACF,EAAG,SAAS,CAACI,MAAM,CAAC,GAAKN,EAAIoI,QAAQ,YAAcpI,EAAIkC,EAAE,WAAY,aAAa3B,GAAG,CAAC,OAASP,EAAI8W,mBAAmB,CAAC9W,EAAI8H,GAAI9H,EAAI+V,iBAAiB,SAASgB,GAAgB,OAAO7W,EAAG,SAAS,CAACmE,IAAI0S,EAAeR,KAAKnH,SAAS,CAAC,SAAWpP,EAAIkW,SAASK,OAASQ,EAAeR,KAAK,MAAQQ,EAAeR,OAAO,CAACvW,EAAIa,GAAG,WAAWb,EAAIc,GAAGiW,EAAexY,MAAM,WAAW,IAAGyB,EAAIa,GAAG,KAAKX,EAAG,SAAS,CAACI,MAAM,CAAC,SAAW,KAAK,CAACN,EAAIa,GAAG,8BAA8Bb,EAAIa,GAAG,KAAKb,EAAI8H,GAAI9H,EAAIiW,gBAAgB,SAASe,GAAe,OAAO9W,EAAG,SAAS,CAACmE,IAAI2S,EAAcT,KAAKnH,SAAS,CAAC,SAAWpP,EAAIkW,SAASK,OAASS,EAAcT,KAAK,MAAQS,EAAcT,OAAO,CAACvW,EAAIa,GAAG,WAAWb,EAAIc,GAAGkW,EAAczY,MAAM,WAAW,KAAI,GAAGyB,EAAIa,GAAG,KAAKX,EAAG,IAAI,CAACI,MAAM,CAAC,KAAO,iDAAiD,OAAS,SAAS,IAAM,wBAAwB,CAACJ,EAAG,KAAK,CAACF,EAAIa,GAAGb,EAAIc,GAAGd,EAAIkC,EAAE,WAAY,yBACl+B,GACsB,IDUpB,EACA,KACA,WACA,MAI8B,SE6BhC+U,aAAA,eAAAC,GAAA,gBAAAnB,GAAA,eAAAE,MAAA3Q,EAAAA,EAAAA,GAAA,wCChDwM,GDkDxM,CACA/G,KAAA,kBAEAC,WAAA,CACA2Y,SAAA,GACAnN,UAAAA,IAGA1F,KAAAA,KACA,CACAmN,iBAAA/O,EAAAA,SACAqT,mBACAE,kBACAC,SAAAgB,KAIA7Q,SAAA,CACA+B,QAAAA,IACA,mBAAAhB,OAAA7E,EAAAA,UAGA8F,aACA,OAAAhJ,QAAA,KAAA6W,SACA,oBE/DI,GAAU,CAAC,EAEf,GAAQvW,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YCPlD,UAXgB,OACd,ICTW,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,UAAU,CAACA,EAAG,YAAY,CAACI,MAAM,CAAC,WAAWN,EAAIoI,QAAQ,SAAWpI,EAAIyR,oBAAoBzR,EAAIa,GAAG,KAAMb,EAAIqI,WAAY,CAACnI,EAAG,WAAW,CAACI,MAAM,CAAC,WAAWN,EAAIoI,QAAQ,mBAAmBpI,EAAI+V,gBAAgB,kBAAkB/V,EAAIiW,eAAe,SAAWjW,EAAIkW,UAAU3V,GAAG,CAAC,kBAAkB,SAASC,GAAQR,EAAIkW,SAAS1V,CAAM,MAAMN,EAAG,OAAO,CAACF,EAAIa,GAAG,SAASb,EAAIc,GAAGd,EAAIkC,EAAE,WAAY,oBAAoB,WAAW,EACre,GACsB,IDUpB,EACA,KACA,WACA,MAI8B,QEnBhC,2BCoEA,MCpE+L,GDoE/L,CACA3D,KAAA,SAEAC,WAAA,CACA4Y,aAAAA,SAGA1Y,MAAA,CACA0J,QAAA,CACAxJ,KAAAC,OACAK,QAAA,MAEAmY,OAAA,CACAzY,KAAAoC,OACAlC,UAAA,GAEAwY,mBAAA,CACA1Y,KAAAoX,MACAlX,UAAA,GAEAyY,aAAA,CACA3Y,KAAAoX,MACAlX,UAAA,IAIAwF,OACA,OACAkT,cAAA,KAAAH,OACAI,QAAA,CACAC,KAAAC,OAAAC,OAAA,KACAC,KAAAF,OAAAC,OAAA,OACAE,eAAAC,OAAAC,SAAAD,OAAAE,WAGA,EAEA5R,SAAA,CACA6R,aACA,OAAAlX,OAAAC,OACA,SAAAqW,sBAAA,KAAAC,cACAlB,QAAA,CAAAC,EAAAzO,KAAA,SAAA0O,EAAA,KAAAhY,GAAAsJ,EAAA,UAAAyO,EAAA,CAAAC,GAAAhY,EAAA,OAEA,GAGA6M,UACA+M,YAAA,KAAAC,eAAA,IACA,EAEA5Y,QAAA,CACA,qBAAAiI,GACA,MAAA4P,EAAA,KAAAgB,gBAAA5Q,EAAAsE,OAAAlI,OzCtCO,IAAwB8H,EyCuC/B,KAAA7E,MAAA,gBAAAuQ,GzCtCuB,MADQ1L,EyCyC/B0L,GzCxCcd,MACM,KAAf5K,EAAMpN,WACSmV,IAAf/H,EAAMpN,YyCuCX,KAAA+Z,aAAAjB,EAEA,EAEA,mBAAAA,GACA,QAAApQ,EAAAC,EACA,MAAAC,QAAAzD,GAAAnB,EAAAA,OAAA8U,EAAAd,MACA,KAAAjP,eAAA,CACA+P,SACApS,OAAA,QAAAgC,EAAAE,EAAAI,WAAA,IAAAN,GAAA,QAAAC,EAAAD,EAAAO,YAAA,IAAAN,OAAA,EAAAA,EAAAjC,SAEA,KAAAyR,YACA,OAAAjP,GACA,KAAAH,eAAA,CACAI,aAAAxF,EAAA,sCACA0C,MAAA6C,GAEA,CACA,EAEA4Q,gBAAAE,GACA,OACAhC,KAAAgC,EACAha,KAAA,KAAA2Z,WAAAK,GAEA,EAEAjR,eAAAsP,GAAA,WAAAS,EAAA,OAAApS,EAAA,aAAAyC,EAAA,MAAA9C,GAAAgS,EACA,OAAA3R,EACA,KAAAuS,cAAAH,GAEA,KAAAvQ,MAAA,qBAAA0Q,eACA7S,GAAAC,EAAA8C,GAEA,EAEA0Q,iBACA,KAAAX,QAAA,CACAC,KAAAC,OAAAC,OAAA,KACAC,KAAAF,OAAAC,OAAA,OACAE,eAAAC,OAAAC,SAAAD,OAAAE,UAEA,EAEAvB,aACAjB,SAAAoB,QACA,oBE/JI,GAAU,CAAC,EAEf,GAAQlX,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YCPlD,UAXgB,OACd,ICTW,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACE,YAAY,UAAU,CAACF,EAAG,SAAS,CAACI,MAAM,CAAC,GAAKN,EAAIoI,QAAQ,YAAcpI,EAAIkC,EAAE,WAAY,WAAW3B,GAAG,CAAC,OAASP,EAAIwY,iBAAiB,CAACxY,EAAI8H,GAAI9H,EAAIsX,oBAAoB,SAASmB,GAAe,OAAOvY,EAAG,SAAS,CAACmE,IAAIoU,EAAclC,KAAKnH,SAAS,CAAC,SAAWpP,EAAIqX,OAAOd,OAASkC,EAAclC,KAAK,MAAQkC,EAAclC,OAAO,CAACvW,EAAIa,GAAG,WAAWb,EAAIc,GAAG2X,EAAcla,MAAM,WAAW,IAAGyB,EAAIa,GAAG,KAAKX,EAAG,SAAS,CAACI,MAAM,CAAC,SAAW,KAAK,CAACN,EAAIa,GAAG,8BAA8Bb,EAAIa,GAAG,KAAKb,EAAI8H,GAAI9H,EAAIuX,cAAc,SAASkB,GAAe,OAAOvY,EAAG,SAAS,CAACmE,IAAIoU,EAAclC,KAAKnH,SAAS,CAAC,SAAWpP,EAAIqX,OAAOd,OAASkC,EAAclC,KAAK,MAAQkC,EAAclC,OAAO,CAACvW,EAAIa,GAAG,WAAWb,EAAIc,GAAG2X,EAAcla,MAAM,WAAW,KAAI,GAAGyB,EAAIa,GAAG,KAAKX,EAAG,MAAM,CAACE,YAAY,WAAW,CAACF,EAAG,MAAM,CAACI,MAAM,CAAC,KAAO,MAAMN,EAAIa,GAAG,KAAKX,EAAG,MAAM,CAACE,YAAY,iBAAiB,CAACF,EAAG,IAAI,CAACA,EAAG,OAAO,CAACF,EAAIa,GAAGb,EAAIc,GAAGd,EAAIyX,QAAQC,SAAS1X,EAAIa,GAAG,KAAKX,EAAG,OAAO,CAACF,EAAIa,GAAGb,EAAIc,GAAGd,EAAIyX,QAAQI,WAAW7X,EAAIa,GAAG,KAAKX,EAAG,IAAI,CAACF,EAAIa,GAAG,aAAab,EAAIc,GAAGd,EAAIkC,EAAE,WAAY,kCAAmC,CAAE4V,eAAgB7X,KAAKwX,QAAQK,kBAAmB,iBAAiB,IAChsC,GACsB,IDUpB,EACA,KACA,WACA,MAI8B,SE6BhCY,WAAA,aAAAC,GAAA,mBAAArB,GAAA,aAAAC,MAAAjS,EAAAA,EAAAA,GAAA,wCChDsM,GDkDtM,CACA/G,KAAA,gBAEAC,WAAA,CACAoa,OAAA,GACA5O,UAAAA,IAGA1F,KAAAA,KACA,CACAmN,iBAAA/O,EAAAA,OACA4U,sBACAC,gBACAF,OAAAsB,KAIAtS,SAAA,CACA+B,QAAAA,IACA,mBAAAhB,OAAA7E,EAAAA,QAGA8F,aACA,OAAAhJ,QAAA,KAAAgY,OACA,kBE/DI,GAAU,CAAC,EAEf,GAAQ1X,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YCPlD,UAXgB,OACd,ITTW,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,UAAU,CAACA,EAAG,YAAY,CAACI,MAAM,CAAC,WAAWN,EAAIoI,QAAQ,SAAWpI,EAAIyR,oBAAoBzR,EAAIa,GAAG,KAAMb,EAAIqI,WAAY,CAACnI,EAAG,SAAS,CAACI,MAAM,CAAC,WAAWN,EAAIoI,QAAQ,uBAAuBpI,EAAIsX,mBAAmB,gBAAgBtX,EAAIuX,aAAa,OAASvX,EAAIqX,QAAQ9W,GAAG,CAAC,gBAAgB,SAASC,GAAQR,EAAIqX,OAAO7W,CAAM,MAAMN,EAAG,OAAO,CAACF,EAAIa,GAAG,SAASb,EAAIc,GAAGd,EAAIkC,EAAE,WAAY,kBAAkB,WAAW,EAC5d,GACsB,ISUpB,EACA,KACA,WACA,MAI8B,QCnB8K,GCmC9M,CACA3D,KAAA,wBAEAC,WAAA,CACAqa,yBAAAA,SAGAna,MAAA,CACAoa,eAAA,CACAla,KAAAS,QACAP,UAAA,IAIAuH,SAAA,CACAN,WACA,YAAA+S,cACA,oBCzCI,GAAU,CAAC,EAEf,GAAQnZ,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,4BCf9C,GAAU,CAAC,EAEf,GAAQJ,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YCNlD,UAXgB,OACd,ICVW,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,IAAIF,EAAI+Y,GAAG,CAAC1Y,MAAM,CAAE0F,SAAU/F,EAAI+F,UAAWzF,MAAM,CAAC,KAAO,wBAAwBN,EAAIgZ,YAAY,CAAC9Y,EAAG,kBAAkB,CAACE,YAAY,cAAcE,MAAM,CAAC,KAAO,MAAMN,EAAIa,GAAG,OAAOb,EAAIc,GAAGd,EAAIkC,EAAE,WAAY,iCAAiC,OAAO,EAC7T,GACsB,IDWpB,EACA,KACA,WACA,MAI8B,QEpBhC,gBCyCA,MCzCwM,GDyCxM,CACA3D,KAAA,kBAEAC,WAAA,CACAya,6BAAAA,IAGAva,MAAA,CACAoa,eAAA,CACAla,KAAAS,QACAP,UAAA,IAIAwF,OACA,OACA4U,iBAAA,KAAAJ,eACAzO,SAAA,EAEA,EAEA7K,QAAA,CACA,0BACA,KAAA6K,SAAA,EACA,QAAApD,EAAAC,EACA,MAAAC,QAAAzD,GAAA3C,EAAAA,gBAAA,KAAAmY,kBACA,KAAA5R,eAAA,CACA4R,iBAAA,KAAAA,iBACAjU,OAAA,QAAAgC,EAAAE,EAAAI,WAAA,IAAAN,GAAA,QAAAC,EAAAD,EAAAO,YAAA,IAAAN,OAAA,EAAAA,EAAAjC,QAEA,OAAAwC,GACA,KAAAH,eAAA,CACAI,aAAAxF,EAAA,qDACA0C,MAAA6C,GAEA,CACA,EAEAH,eAAAO,GAAA,qBAAAqR,EAAA,OAAAjU,EAAA,aAAAyC,EAAA,MAAA9C,GAAAiD,EACA,OAAA5C,GACAgJ,EAAAA,EAAAA,IAAA,mCAAAiL,GAEAvU,GAAAC,EAAA8C,GAEA,KAAA2C,SAAA,CACA,IEpEA,IAXgB,OACd,IHRW,WAAkB,IAAIrK,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACE,YAAY,sBAAsB,CAACF,EAAG,wBAAwB,CAACI,MAAM,CAAC,KAAO,SAAS,QAAUN,EAAIkZ,iBAAiB,QAAUlZ,EAAIqK,SAAS9J,GAAG,CAAC,iBAAiB,CAAC,SAASC,GAAQR,EAAIkZ,iBAAiB1Y,CAAM,EAAER,EAAImZ,qBAAqB,CAACnZ,EAAIa,GAAG,SAASb,EAAIc,GAAGd,EAAIkC,EAAE,WAAY,mBAAmB,WAAW,EAC9X,GACsB,IGSpB,EACA,KACA,KACA,MAI8B,QClB2K,GCgD3M,CACA3D,KAAA,qBAEAC,WAAA,CACAyL,SAAAA,KAGAvL,MAAA,CACAK,YAAA,CACAH,KAAAC,OACAC,UAAA,GAEAsa,aAAA,CACAxa,KAAAC,OACAC,UAAA,GAEAga,eAAA,CACAla,KAAAS,QACAP,UAAA,GAEAgF,OAAA,CACAlF,KAAAC,OACAC,UAAA,IAIAuH,SAAA,CACAN,WACA,YAAA+S,cACA,EAEAO,kBACA,YAAAP,gBACAnM,EAAAA,EAAAA,aAAA,eAAA7I,QAAAC,EAAAA,EAAAA,MAAAC,MAKA,IACA,oBC5EI,GAAU,CAAC,EAEf,GAAQrE,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YCPlD,UAXgB,OACd,ICTW,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,IAAI,CAACE,YAAY,eAAeC,MAAM,CAAE0F,SAAU/F,EAAI+F,UAAWzF,MAAM,CAAC,KAAON,EAAIqZ,kBAAkB,CAACnZ,EAAG,WAAW,CAACE,YAAY,uBAAuBE,MAAM,CAAC,KAAON,EAAI8D,OAAO,KAAO,GAAG,oBAAmB,EAAK,4BAA2B,EAAM,gBAAe,EAAK,mBAAkB,KAAQ9D,EAAIa,GAAG,KAAKX,EAAG,MAAM,CAACE,YAAY,wBAAwB,CAACF,EAAG,OAAO,CAACF,EAAIa,GAAGb,EAAIc,GAAGd,EAAIjB,kBAAkBiB,EAAIa,GAAG,KAAKX,EAAG,MAAM,CAACE,YAAY,wBAAwB,CAACF,EAAG,OAAO,CAACF,EAAIa,GAAGb,EAAIc,GAAGd,EAAIoZ,oBAAoB,EAC9jB,GACsB,IDUpB,EACA,KACA,WACA,MAI8B,SE8BhCA,cAAAvV,MAAAuV,IACAra,aAAA8E,MAAA9E,IAAA,eACA+Z,GAAA,OACAhV,KACAwB,EAAAA,EAAAA,GAAA,wCAEA,IACA/G,KAAA,iBAEAC,WAAA,CACA8a,sBAAA,GACAtP,UAAA,GACAuP,gBAAA,GACAC,mBAAAA,IAGAlV,KAAAA,KACA,CACAmN,iBAAAxP,EAAAA,gBACAmX,gBACAra,YAAA,GACA+Z,kBACAhV,YAIAoO,WACA7G,EAAAA,EAAAA,IAAA,qCAAAC,0BACAD,EAAAA,EAAAA,IAAA,qCAAAoO,yBACA,EAEAlO,iBACAC,EAAAA,EAAAA,IAAA,qCAAAF,0BACAE,EAAAA,EAAAA,IAAA,qCAAAiO,yBACA,EAEAja,QAAA,CACA8L,wBAAAvM,GACA,KAAAA,YAAAA,CACA,EAEA0a,yBAAAL,GACA,KAAAA,aAAAA,CACA,IC5FuM,sBCWnM,GAAU,CAAC,EAEf,GAAQzZ,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YCPlD,UAXgB,OACd,ICTW,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,UAAU,CAACA,EAAG,YAAY,CAACI,MAAM,CAAC,SAAWN,EAAIyR,oBAAoBzR,EAAIa,GAAG,KAAKX,EAAG,kBAAkB,CAACI,MAAM,CAAC,kBAAkBN,EAAI8Y,gBAAgBvY,GAAG,CAAC,wBAAwB,SAASC,GAAQR,EAAI8Y,eAAetY,CAAM,EAAE,yBAAyB,SAASA,GAAQR,EAAI8Y,eAAetY,CAAM,KAAKR,EAAIa,GAAG,KAAKX,EAAG,qBAAqB,CAACI,MAAM,CAAC,aAAeN,EAAIoZ,aAAa,eAAepZ,EAAIjB,YAAY,kBAAkBiB,EAAI8Y,eAAe,UAAU9Y,EAAI8D,UAAU9D,EAAIa,GAAG,KAAKX,EAAG,wBAAwB,CAACI,MAAM,CAAC,kBAAkBN,EAAI8Y,mBAAmB,EAC1mB,GACsB,IDUpB,EACA,KACA,WACA,MAI8B,SEehCM,aAAAA,KAAA9T,EAAAA,EAAAA,GAAA,wCClCsM,GDoCtM,CACA/G,KAAA,sBAEAC,WAAA,CACAgS,uBAAAA,IAGAlM,KAAAA,KACA,CACA8U,aAAA,IAAAA,GAAA3T,SAAAtD,EAAAiX,GAAA7a,UE3BA,IAXgB,OACd,ICRW,WAAkB,IAAIyB,EAAIC,KAAqB,OAAOC,EAApBF,EAAIG,MAAMD,IAAa,yBAAyBF,EAAI0O,GAAG,CAACpO,MAAM,CAAC,YAAcN,EAAIkC,EAAE,WAAY,uBAAuB,yBAAyBlC,EAAIoZ,cAAa,GAAM,GACrN,GACsB,IDSpB,EACA,KACA,KACA,MAI8B,SEgB1B,KAANM,KAAApU,EAAAA,EAAAA,GAAA,wCClC8L,GDoC9L,CACA/G,KAAA,cAEAC,WAAA,CACAgS,uBAAAA,IAGAlM,KAAAA,KACA,CACAoV,KAAA,IAAAA,GAAAjU,SAAAtD,EAAAuX,GAAAnb,UE3BA,IAXgB,OACd,ICRW,WAAkB,IAAIyB,EAAIC,KAAqB,OAAOC,EAApBF,EAAIG,MAAMD,IAAa,yBAAyBF,EAAI0O,GAAG,CAACpO,MAAM,CAAC,YAAcN,EAAIkC,EAAE,WAAY,eAAe,yBAAyBlC,EAAI0Z,MAAK,GAAM,GACrM,GACsB,IDSpB,EACA,KACA,KACA,MAI8B,SEgB1B,SAANC,KAAArU,EAAAA,EAAAA,GAAA,wCClCkM,GDoClM,CACA/G,KAAA,kBAEAC,WAAA,CACAgS,uBAAAA,IAGAlM,KAAAA,KACA,CACAqV,SAAA,IAAAA,GAAAlU,SAAAtD,EAAAwX,GAAApb,UE3BA,IAXgB,OACd,ICRW,WAAkB,IAAIyB,EAAIC,KAAqB,OAAOC,EAApBF,EAAIG,MAAMD,IAAa,yBAAyBF,EAAI0O,GAAG,CAACpO,MAAM,CAAC,YAAcN,EAAIkC,EAAE,WAAY,mBAAmB,yBAAyBlC,EAAI2Z,UAAS,GAAM,GAC7M,GACsB,IDSpB,EACA,KACA,KACA,MAI8B,SEiB1B,UAANC,KAAAtU,EAAAA,EAAAA,GAAA,wCCnCmM,GDqCnM,CACA/G,KAAA,mBAEAC,WAAA,CACAgS,uBAAAA,IAGAlM,KAAAA,KACA,CACAsV,UAAA,IAAAA,GAAAnU,SAAAtD,EAAAyX,GAAArb,UE5BA,IAXgB,OACd,ICRW,WAAkB,IAAIyB,EAAIC,KAAqB,OAAOC,EAApBF,EAAIG,MAAMD,IAAa,yBAAyBF,EAAI0O,GAAG,CAACpO,MAAM,CAAC,YAAcN,EAAIkC,EAAE,WAAY,kBAAkB,cAAa,IAAO,yBAAyBlC,EAAI4Z,WAAU,GAAM,GACjO,GACsB,IDSpB,EACA,KACA,KACA,MAI8B,QElBhC,2BCmCO,MCRMC,GAAkB7Y,OAAOC,OAAO,CAC5C6Y,KAAM,OACNC,gBAAiB,kBACjBC,KAAM,SAMMC,GAA2BjZ,OAAOC,OAAO,CACrD,CAAC4Y,GAAgBC,MAAO,CACvBvb,KAAMsb,GAAgBC,KACtBI,MAAOhY,EAAE,WAAY,qBAEtB,CAAC2X,GAAgBE,iBAAkB,CAClCxb,KAAMsb,GAAgBE,gBACtBG,MAAOhY,EAAE,WAAY,iCAEtB,CAAC2X,GAAgBG,MAAO,CACvBzb,KAAMsb,GAAgBG,KACtBE,MAAOhY,EAAE,WAAY,YCAvB4W,eAAAA,KAAAxT,EAAAA,EAAAA,GAAA,wCAEA,IACA/G,KAAA,qBAEAC,WAAA,CACA2b,SAAAA,MAGAzb,MAAA,CACA0b,QAAA,CACAxb,KAAAC,OACAC,UAAA,GAEAub,UAAA,CACAzb,KAAAC,OACAC,UAAA,GAEAwb,WAAA,CACA1b,KAAAC,OACAC,UAAA,IAIAwF,OACA,OACAiW,kBAAA,KAAAD,WACAxB,eAAAA,GAEA,EAEAzS,SAAA,CACAN,WACA,YAAA+S,cACA,EAEA1Q,UACA,4BAAAhB,OAAA,KAAAgT,QACA,EAEAI,mBACA,OAAAP,GAAA,KAAAK,WACA,EAEAG,kBAAAA,IACAzZ,OAAA2E,OAAAsU,KAIA/H,WACA7G,EAAAA,EAAAA,IAAA,wCAAAqP,2BACA,EAEAnP,iBACAC,EAAAA,EAAAA,IAAA,wCAAAkP,2BACA,EAEAlb,QAAA,CACA,yBAAAgb,GAEA,UAAAA,EAAA,CACA,MAAAjc,KAAA+b,GAAAE,EACA,KAAA1T,MAAA,oBAAAwT,GAEA,KAAAA,SACA,KAAAK,iBAAAL,EAEA,CACA,EAEA,uBAAAA,GACA,QAAArT,EAAAC,EACA,MAAAC,OFpF8CxD,OAAOyW,EAASE,KAC7D,MAAMxW,GAASC,EAAAA,EAAAA,MAAiBC,IAC1BC,GAAMC,EAAAA,EAAAA,gBAAe,oBAAqB,CAAEJ,WASlD,aAPMK,EAAAA,GAAAA,0BAEYC,EAAAA,QAAAA,IAAUH,EAAK,CAChCmW,UACAE,gBAGUhW,IAAI,EEyEhBsW,CAAA,KAAAR,QAAAE,GACA,KAAAhT,eAAA,CACAgT,aACArV,OAAA,QAAAgC,EAAAE,EAAAI,WAAA,IAAAN,GAAA,QAAAC,EAAAD,EAAAO,YAAA,IAAAN,OAAA,EAAAA,EAAAjC,QAEA,OAAAwC,GACA,KAAAH,eAAA,CACAI,aAAAxF,EAAA,yDAAAmY,UAAA,KAAAA,YACAzV,MAAA6C,GAEA,CACA,EAEAH,eAAAO,GAAA,eAAAyS,EAAA,OAAArV,EAAA,aAAAyC,EAAA,MAAA9C,GAAAiD,EACA,OAAA5C,EAEA,KAAAsV,kBAAAD,EAEA3V,GAAAC,EAAA8C,EAEA,EAEAgT,2BAAA5B,GACA,KAAAA,eAAAA,CACA,IC/I2M,sBCWvM,GAAU,CAAC,EAEf,GAAQnZ,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YCPlD,UAXgB,OACd,ICTW,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACE,YAAY,uBAAuBC,MAAM,CAAE0F,SAAU/F,EAAI+F,WAAY,CAAC7F,EAAG,QAAQ,CAACI,MAAM,CAAC,IAAMN,EAAIoI,UAAU,CAACpI,EAAIa,GAAG,SAASb,EAAIc,GAAGd,EAAIqa,WAAW,UAAUra,EAAIa,GAAG,KAAKX,EAAG,WAAW,CAACE,YAAY,+BAA+BE,MAAM,CAAC,WAAWN,EAAIoI,QAAQ,WAAY,EAAM,QAAUpI,EAAIya,kBAAkB,MAAQza,EAAIwa,kBAAkBja,GAAG,CAAC,kBAAkBP,EAAI6a,uBAAuB,EAChd,GACsB,IDUpB,EACA,KACA,WACA,MAI8B,SEkC1B,cAANC,KAAAxV,EAAAA,EAAAA,GAAA,oCACAwT,eAAAA,KAAAxT,EAAAA,EAAAA,GAAA,wCAEAyV,GAAAA,CAAAC,EAAAC,IACAD,EAAAE,QAAAD,EAAAC,OAAA,SAAAF,EAAAE,OAAA,SAAAD,EAAAC,MACAF,EAAAX,UAAAc,cAAAF,EAAAZ,WACA,SAAAW,EAAAE,MACA,GAEA,EAIA,IACA3c,KAAA,2BAEAC,WAAA,CACAwL,UAAA,GACAoR,mBAAAA,IAGA9W,KAAAA,KACA,CACA+W,QAAAjZ,EAAAA,mBACA0W,eAAA,GACAwC,iBAAAta,OAAAua,QAAAT,IACA7G,KAAApM,IAAA,IAAAuS,GAAA,MAAAc,EAAA,UAAAb,EAAA,WAAAC,IAAAzS,EAAA,OAAA2T,GAAApB,EAAAc,QAAAb,YAAAC,aAAA,IACAmB,KAAAV,IAEAW,WAAA3D,OAAA4D,WAAA,uBAAAC,QACA7D,OAAA8D,iBAAAC,SAAAC,eAAA,uBAAAC,iBAAA,SAAA9L,OACA,QAIA7J,SAAA,CACAN,WACA,YAAA+S,cACA,EAEAmD,OACA,OAAAhP,KAAAiP,KAAA,KAAAZ,iBAAAnK,OAAA,EACA,GAGAe,WACA7G,EAAAA,EAAAA,IAAA,wCAAAqP,4BAEA3C,OAAAoE,SAAA,KACA,KAAAT,WAAA3D,OAAA4D,WAAA,uBAAAC,QACA7D,OAAA8D,iBAAAC,SAAAC,eAAA,uBAAAC,iBAAA,SAAA9L,OACA,MAEA,EAEA3E,iBACAC,EAAAA,EAAAA,IAAA,wCAAAkP,2BACA,EAEAlb,QAAA,CACAkb,2BAAA5B,GACA,KAAAA,eAAAA,CACA,ICnHiN,sBCW7M,GAAU,CAAC,EAEf,GAAQnZ,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YCPlD,UAXgB,OACd,IXTW,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAG,OAAOA,EAAG,UAAU,CAACkc,MAAO,CAAEV,WAAY1b,EAAI0b,YAAcpb,MAAM,CAAC,GAAK,uBAAuB,CAACJ,EAAG,YAAY,CAACI,MAAM,CAAC,cAAa,EAAK,SAAWN,EAAIqb,WAAWrb,EAAIa,GAAG,KAAKX,EAAG,KAAK,CAACG,MAAM,CAAE0F,SAAU/F,EAAI+F,WAAY,CAAC/F,EAAIa,GAAG,SAASb,EAAIc,GAAGd,EAAIkC,EAAE,WAAY,4MAA4M,UAAUlC,EAAIa,GAAG,KAAKX,EAAG,MAAM,CAACE,YAAY,uBAAuBgc,MAAO,CACnlBC,iBAAkB,UAAFjV,OAAYpH,EAAIic,KAAI,aACjCjc,EAAI8H,GAAI9H,EAAIsb,kBAAkB,SAASgB,GAAO,OAAOpc,EAAG,qBAAqB,CAACmE,IAAIiY,EAAMd,GAAGlb,MAAM,CAAC,WAAWgc,EAAMd,GAAG,aAAac,EAAMjC,UAAU,WAAaiC,EAAMhC,YAAY/Z,GAAG,CAAC,oBAAoB,SAASC,GAAQ,OAAOR,EAAIkO,KAAKoO,EAAO,aAAc9b,EAAO,IAAI,IAAG,IAAI,EACxR,GACsB,IWQpB,EACA,KACA,WACA,MAI8B,QC2BhC+b,EAAAA,GAAoBC,MAAKC,EAAAA,EAAAA,OAEzB,MAAMC,IAAyBpX,EAAAA,EAAAA,GAAU,WAAY,0BAA0B,GAE/EqX,EAAAA,QAAAA,MAAU,CACTnd,QAAS,CACR0C,EAACA,EAAAA,MAIH,MAAM0a,GAAaD,EAAAA,QAAAA,OAAWE,IACxBC,GAAcH,EAAAA,QAAAA,OAAWI,IACzBC,GAAkBL,EAAAA,QAAAA,OAAWM,IAC7BC,GAAYP,EAAAA,QAAAA,OAAWQ,IACvBC,GAAYT,EAAAA,QAAAA,OAAWU,IACvBC,GAAeX,EAAAA,QAAAA,OAAWY,IAC1BC,GAAcb,EAAAA,QAAAA,OAAWc,IACzBC,GAAcf,EAAAA,QAAAA,OAAWgB,IACzBC,GAAgBjB,EAAAA,QAAAA,OAAWkB,IAC3BC,GAAenB,EAAAA,QAAAA,OAAWoB,IAC1BC,GAAarB,EAAAA,QAAAA,OAAWsB,IAc9B,IAZA,IAAIrB,IAAasB,OAAO,wBACxB,IAAIpB,IAAcoB,OAAO,yBACzB,IAAIlB,IAAkBkB,OAAO,6BAC7B,IAAIhB,IAAYgB,OAAO,uBACvB,IAAId,IAAYc,OAAO,uBACvB,IAAIZ,IAAeY,OAAO,0BAC1B,IAAIV,IAAcU,OAAO,yBACzB,IAAIR,IAAcQ,OAAO,yBACzB,IAAIN,IAAgBM,OAAO,2BAC3B,IAAIJ,IAAeI,OAAO,0BAC1B,IAAIF,IAAaE,OAAO,uBAEpBxB,GAAwB,CAC3B,MAAMyB,EAAcxB,EAAAA,QAAAA,OAAWyB,IACzBC,EAAmB1B,EAAAA,QAAAA,OAAW2B,IAC9BC,EAAW5B,EAAAA,QAAAA,OAAW6B,IACtBC,EAAe9B,EAAAA,QAAAA,OAAW+B,IAC1BC,EAAgBhC,EAAAA,QAAAA,OAAWiC,IAC3BC,EAAwBlC,EAAAA,QAAAA,OAAWmC,KAEzC,IAAIX,GAAcD,OAAO,yBACzB,IAAIG,GAAmBH,OAAO,8BAC9B,IAAIK,GAAWL,OAAO,sBACtB,IAAIO,GAAeP,OAAO,0BAC1B,IAAIS,GAAgBT,OAAO,2BAC3B,IAAIW,GAAwBX,OAAO,kCACpC,oFC3FIa,QAA0B,GAA4B,KAE1DA,EAAwBlY,KAAK,CAACmY,EAAOxD,GAAI,otBAAqtB,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,2EAA2E,MAAQ,GAAG,SAAW,gTAAgT,eAAiB,CAAC,uyBAAyyB,WAAa,MAEl/D,4FCJIuD,QAA0B,GAA4B,KAE1DA,EAAwBlY,KAAK,CAACmY,EAAOxD,GAAI,qlBAAslB,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,4EAA4E,MAAQ,GAAG,SAAW,kLAAkL,eAAiB,CAAC,weAAwe,WAAa,MAEr7C,4FCJIuD,QAA0B,GAA4B,KAE1DA,EAAwBlY,KAAK,CAACmY,EAAOxD,GAAI,6sCAA8sC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,gFAAgF,MAAQ,GAAG,SAAW,6VAA6V,eAAiB,CAAC,mjCAAmjC,WAAa,MAEvyF,4FCJIuD,QAA0B,GAA4B,KAE1DA,EAAwBlY,KAAK,CAACmY,EAAOxD,GAAI,sLAAuL,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,uFAAuF,MAAQ,GAAG,SAAW,6DAA6D,eAAiB,CAAC,wLAAwL,WAAa,MAE5nB,4FCJIuD,QAA0B,GAA4B,KAE1DA,EAAwBlY,KAAK,CAACmY,EAAOxD,GAAI,yLAA0L,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,sFAAsF,MAAQ,GAAG,SAAW,yEAAyE,eAAiB,CAAC,oLAAoL,WAAa,MAEtoB,4FCJIuD,QAA0B,GAA4B,KAE1DA,EAAwBlY,KAAK,CAACmY,EAAOxD,GAAI,sGAAuG,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,6FAA6F,MAAQ,GAAG,SAAW,mCAAmC,eAAiB,CAAC,uGAAuG,WAAa,MAEvc,4FCJIuD,QAA0B,GAA4B,KAE1DA,EAAwBlY,KAAK,CAACmY,EAAOxD,GAAI,yQAA0Q,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,kFAAkF,MAAQ,GAAG,SAAW,4GAA4G,eAAiB,CAAC,qRAAqR,WAAa,MAEt1B,0FCJIuD,QAA0B,GAA4B,KAE1DA,EAAwBlY,KAAK,CAACmY,EAAOxD,GAAI,sGAAuG,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,yFAAyF,MAAQ,GAAG,SAAW,mCAAmC,eAAiB,CAAC,uGAAuG,WAAa,MAEnc,4FCJIuD,QAA0B,GAA4B,KAE1DA,EAAwBlY,KAAK,CAACmY,EAAOxD,GAAI,6GAA8G,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,kGAAkG,MAAQ,GAAG,SAAW,6CAA6C,eAAiB,CAAC,wIAAwI,WAAa,MAE9f,4FCJIuD,QAA0B,GAA4B,KAE1DA,EAAwBlY,KAAK,CAACmY,EAAOxD,GAAI,wdAAyd,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,kGAAkG,MAAQ,GAAG,SAAW,mMAAmM,eAAiB,CAAC,sgBAAsgB,WAAa,MAE73C,4FCJIuD,QAA0B,GAA4B,KAE1DA,EAAwBlY,KAAK,CAACmY,EAAOxD,GAAI,s+DAAu+D,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,+FAA+F,MAAQ,GAAG,SAAW,ymBAAymB,eAAiB,CAAC,k+DAAk+D,WAAa,MAE1wJ,4FCJIuD,QAA0B,GAA4B,KAE1DA,EAAwBlY,KAAK,CAACmY,EAAOxD,GAAI,sGAAuG,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,2FAA2F,MAAQ,GAAG,SAAW,mCAAmC,eAAiB,CAAC,uGAAuG,WAAa,MAErc,4FCJIuD,QAA0B,GAA4B,KAE1DA,EAAwBlY,KAAK,CAACmY,EAAOxD,GAAI,mmBAAomB,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,+GAA+G,MAAQ,GAAG,SAAW,gPAAgP,eAAiB,CAAC,+mBAA+mB,WAAa,MAE3qD,4FCJIuD,QAA0B,GAA4B,KAE1DA,EAAwBlY,KAAK,CAACmY,EAAOxD,GAAI,sfAAuf,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,yGAAyG,MAAQ,GAAG,SAAW,wKAAwK,eAAiB,CAAC,+bAA+b,WAAa,MAEh0C,4FCJIuD,QAA0B,GAA4B,KAE1DA,EAAwBlY,KAAK,CAACmY,EAAOxD,GAAI,8hCAA+hC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,2FAA2F,MAAQ,GAAG,SAAW,oWAAoW,eAAiB,CAAC,6hCAA6hC,WAAa,MAEpnF,4FCJIuD,QAA0B,GAA4B,KAE1DA,EAAwBlY,KAAK,CAACmY,EAAOxD,GAAI,0lBAA2lB,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,sFAAsF,MAAQ,GAAG,SAAW,iGAAiG,eAAiB,CAAC,kaAAka,WAAa,MAE7yC,4FCJIuD,QAA0B,GAA4B,KAE1DA,EAAwBlY,KAAK,CAACmY,EAAOxD,GAAI,gWAAiW,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,4FAA4F,MAAQ,GAAG,SAAW,2FAA2F,eAAiB,CAAC,gZAAgZ,WAAa,MAEjiC,4FCJIuD,QAA0B,GAA4B,KAE1DA,EAAwBlY,KAAK,CAACmY,EAAOxD,GAAI,8cAA+c,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,8EAA8E,MAAQ,GAAG,SAAW,8KAA8K,eAAiB,CAAC,8bAA8b,WAAa,MAElwC,2BCPA,IAAIvH,EAAM,CACT,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,MACX,aAAc,MACd,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,QAAS,MACT,WAAY,MACZ,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,gBAAiB,MACjB,aAAc,MACd,gBAAiB,MACjB,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,MACX,aAAc,MACd,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,WAAY,MACZ,cAAe,MACf,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,YAAa,MACb,eAAgB,MAChB,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,QAAS,MACT,WAAY,MACZ,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,QAAS,MACT,WAAY,MACZ,OAAQ,MACR,UAAW,MACX,QAAS,MACT,WAAY,MACZ,QAAS,MACT,aAAc,MACd,gBAAiB,MACjB,WAAY,MACZ,UAAW,KACX,aAAc,KACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,YAAa,MACb,eAAgB,MAChB,UAAW,KACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,gBAAiB,MACjB,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,OAIf,SAASgL,EAAeC,GACvB,IAAI1D,EAAK2D,EAAsBD,GAC/B,OAAOE,EAAoB5D,EAC5B,CACA,SAAS2D,EAAsBD,GAC9B,IAAIE,EAAoBC,EAAEpL,EAAKiL,GAAM,CACpC,IAAIzX,EAAI,IAAI6X,MAAM,uBAAyBJ,EAAM,KAEjD,MADAzX,EAAE8O,KAAO,mBACH9O,CACP,CACA,OAAOwM,EAAIiL,EACZ,CACAD,EAAeM,KAAO,WACrB,OAAOve,OAAOue,KAAKtL,EACpB,EACAgL,EAAeO,QAAUL,EACzBH,EAAOS,QAAUR,EACjBA,EAAezD,GAAK,g5BClShBkE,EAA2B,CAAC,EAGhC,SAASN,EAAoBO,GAE5B,IAAIC,EAAeF,EAAyBC,GAC5C,QAAqBjM,IAAjBkM,EACH,OAAOA,EAAaH,QAGrB,IAAIT,EAASU,EAAyBC,GAAY,CACjDnE,GAAImE,EACJE,QAAQ,EACRJ,QAAS,CAAC,GAUX,OANAK,EAAoBH,GAAUI,KAAKf,EAAOS,QAAST,EAAQA,EAAOS,QAASL,GAG3EJ,EAAOa,QAAS,EAGTb,EAAOS,OACf,CAGAL,EAAoBY,EAAIF,E/J5BpBxhB,EAAW,GACf8gB,EAAoBa,EAAI,CAAC1T,EAAQ2T,EAAUhX,EAAIiX,KAC9C,IAAGD,EAAH,CAMA,IAAIE,EAAeC,IACnB,IAASC,EAAI,EAAGA,EAAIhiB,EAAS6S,OAAQmP,IAAK,CACrCJ,EAAW5hB,EAASgiB,GAAG,GACvBpX,EAAK5K,EAASgiB,GAAG,GACjBH,EAAW7hB,EAASgiB,GAAG,GAE3B,IAJA,IAGIC,GAAY,EACPC,EAAI,EAAGA,EAAIN,EAAS/O,OAAQqP,MACpB,EAAXL,GAAsBC,GAAgBD,IAAanf,OAAOue,KAAKH,EAAoBa,GAAG5L,OAAOhQ,GAAS+a,EAAoBa,EAAE5b,GAAK6b,EAASM,MAC9IN,EAASO,OAAOD,IAAK,IAErBD,GAAY,EACTJ,EAAWC,IAAcA,EAAeD,IAG7C,GAAGI,EAAW,CACbjiB,EAASmiB,OAAOH,IAAK,GACrB,IAAII,EAAIxX,SACEwK,IAANgN,IAAiBnU,EAASmU,EAC/B,CACD,CACA,OAAOnU,CArBP,CAJC4T,EAAWA,GAAY,EACvB,IAAI,IAAIG,EAAIhiB,EAAS6S,OAAQmP,EAAI,GAAKhiB,EAASgiB,EAAI,GAAG,GAAKH,EAAUG,IAAKhiB,EAASgiB,GAAKhiB,EAASgiB,EAAI,GACrGhiB,EAASgiB,GAAK,CAACJ,EAAUhX,EAAIiX,EAuBjB,EgK3Bdf,EAAoBuB,EAAK3B,IACxB,IAAI4B,EAAS5B,GAAUA,EAAO6B,WAC7B,IAAO7B,EAAiB,QACxB,IAAM,EAEP,OADAI,EAAoB0B,EAAEF,EAAQ,CAAE5F,EAAG4F,IAC5BA,CAAM,ECLdxB,EAAoB0B,EAAI,CAACrB,EAASsB,KACjC,IAAI,IAAI1c,KAAO0c,EACX3B,EAAoBC,EAAE0B,EAAY1c,KAAS+a,EAAoBC,EAAEI,EAASpb,IAC5ErD,OAAOggB,eAAevB,EAASpb,EAAK,CAAE4c,YAAY,EAAM1M,IAAKwM,EAAW1c,IAE1E,ECND+a,EAAoB8B,EAAI,WACvB,GAA0B,iBAAfC,WAAyB,OAAOA,WAC3C,IACC,OAAOlhB,MAAQ,IAAIhB,SAAS,cAAb,EAChB,CAAE,MAAOwI,GACR,GAAsB,iBAAXsQ,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxBqH,EAAoBC,EAAI,CAAC+B,EAAKC,IAAUrgB,OAAOsgB,UAAUC,eAAexB,KAAKqB,EAAKC,GCClFjC,EAAoBsB,EAAKjB,IACH,oBAAX+B,QAA0BA,OAAOC,aAC1CzgB,OAAOggB,eAAevB,EAAS+B,OAAOC,YAAa,CAAE5d,MAAO,WAE7D7C,OAAOggB,eAAevB,EAAS,aAAc,CAAE5b,OAAO,GAAO,ECL9Dub,EAAoBsC,IAAO1C,IAC1BA,EAAO2C,MAAQ,GACV3C,EAAO4C,WAAU5C,EAAO4C,SAAW,IACjC5C,GCHRI,EAAoBoB,EAAI,WCAxBpB,EAAoBnE,EAAIa,SAAS+F,SAAWC,KAAKrM,SAASsM,KAK1D,IAAIC,EAAkB,CACrB,KAAM,GAaP5C,EAAoBa,EAAEO,EAAKyB,GAA0C,IAA7BD,EAAgBC,GAGxD,IAAIC,EAAuB,CAACC,EAA4B7d,KACvD,IAKIqb,EAAUsC,EALV/B,EAAW5b,EAAK,GAChB8d,EAAc9d,EAAK,GACnB+d,EAAU/d,EAAK,GAGIgc,EAAI,EAC3B,GAAGJ,EAASoC,MAAM9G,GAAgC,IAAxBwG,EAAgBxG,KAAa,CACtD,IAAImE,KAAYyC,EACZhD,EAAoBC,EAAE+C,EAAazC,KACrCP,EAAoBY,EAAEL,GAAYyC,EAAYzC,IAGhD,GAAG0C,EAAS,IAAI9V,EAAS8V,EAAQjD,EAClC,CAEA,IADG+C,GAA4BA,EAA2B7d,GACrDgc,EAAIJ,EAAS/O,OAAQmP,IACzB2B,EAAU/B,EAASI,GAChBlB,EAAoBC,EAAE2C,EAAiBC,IAAYD,EAAgBC,IACrED,EAAgBC,GAAS,KAE1BD,EAAgBC,GAAW,EAE5B,OAAO7C,EAAoBa,EAAE1T,EAAO,EAGjCgW,EAAqBT,KAA4B,sBAAIA,KAA4B,uBAAK,GAC1FS,EAAmBC,QAAQN,EAAqBO,KAAK,KAAM,IAC3DF,EAAmB1b,KAAOqb,EAAqBO,KAAK,KAAMF,EAAmB1b,KAAK4b,KAAKF,QClDvFnD,EAAoBsD,QAAKhP,ECGzB,IAAIiP,EAAsBvD,EAAoBa,OAAEvM,EAAW,CAAC,OAAO,IAAO0L,EAAoB,SAC9FuD,EAAsBvD,EAAoBa,EAAE0C","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue?7c57","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue?90b5","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue?02db","webpack:///nextcloud/apps/settings/src/constants/AccountPropertyConstants.js","webpack:///nextcloud/apps/settings/src/service/PersonalInfo/PersonalInfoService.js","webpack:///nextcloud/apps/settings/src/logger.js","webpack:///nextcloud/apps/settings/src/utils/handlers.js","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControl.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControl.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/FederationControl.vue?b9f2","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/FederationControl.vue?e342","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/FederationControl.vue?d068","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue?c843","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue?feed","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue?e65f","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/AvatarSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/AvatarSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/AvatarSection.vue?a960","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/AvatarSection.vue?5014","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/AvatarSection.vue?5282","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/DetailsSection.vue?08e9","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DetailsSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DetailsSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/DetailsSection.vue?e7aa","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/DetailsSection.vue?295f","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/DisplayNameSection.vue?3162","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/AccountPropertySection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/AccountPropertySection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/AccountPropertySection.vue?096a","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/AccountPropertySection.vue?ac46","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/shared/AccountPropertySection.vue?d38d","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DisplayNameSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DisplayNameSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/DisplayNameSection.vue?bde5","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue?3dd6","webpack:///nextcloud/apps/settings/src/service/PersonalInfo/EmailService.js","webpack:///nextcloud/apps/settings/src/utils/validate.js","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/Email.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/Email.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/EmailSection/Email.vue?7a13","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/EmailSection/Email.vue?bd2c","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/EmailSection/Email.vue?04df","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue?b77b","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue?1258","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/PhoneSection.vue?8b50","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/PhoneSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/PhoneSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/PhoneSection.vue?d5e3","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LocationSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LocationSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LocationSection.vue?fdc7","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LocationSection.vue?414f","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/WebsiteSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/WebsiteSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/WebsiteSection.vue?897b","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/WebsiteSection.vue?4b20","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/TwitterSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/TwitterSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/TwitterSection.vue?7e82","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/TwitterSection.vue?8ae2","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/FediverseSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/FediverseSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/FediverseSection.vue?e202","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/FediverseSection.vue?4a92","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue?22ad","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue?6358","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue?94ab","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue?6762","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue?a350","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue?41aa","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LocaleSection/LocaleSection.vue?6463","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LocaleSection/Locale.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LocaleSection/Locale.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LocaleSection/Locale.vue?16dc","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LocaleSection/Locale.vue?9b6c","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LocaleSection/Locale.vue?8511","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LocaleSection/LocaleSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LocaleSection/LocaleSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LocaleSection/LocaleSection.vue?1e8d","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/LocaleSection/LocaleSection.vue?fafb","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?f65d","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?fb42","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?7d4b","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?253f","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfileCheckbox.vue?9b34","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileCheckbox.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileCheckbox.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfileCheckbox.vue?7612","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue?2aa0","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue?240c","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue?564e","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue?accf","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue?c85f","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue?3f25","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/OrganisationSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/OrganisationSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/OrganisationSection.vue?5684","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/OrganisationSection.vue?adaf","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/RoleSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/RoleSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/RoleSection.vue?a7b4","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/RoleSection.vue?49db","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/HeadlineSection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/HeadlineSection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/HeadlineSection.vue?9d73","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/HeadlineSection.vue?d565","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/BiographySection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/BiographySection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/BiographySection.vue?a6b2","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/BiographySection.vue?7384","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue?d7f0","webpack:///nextcloud/apps/settings/src/service/ProfileService.js","webpack:///nextcloud/apps/settings/src/constants/ProfileConstants.js","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue?1509","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue?c222","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue?5e5d","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue?1d28","webpack://nextcloud/./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue?7729","webpack:///nextcloud/apps/settings/src/main-personal-info.js","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/AvatarSection.vue?vue&type=style&index=0&id=022fd5d4&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/DetailsSection.vue?vue&type=style&index=0&id=1ab46e68&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/Email.vue?vue&type=style&index=0&id=5ff85d38&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue?vue&type=style&index=0&id=46c7eb7e&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue?vue&type=style&index=0&id=5c847b3a&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue?vue&type=style&index=0&id=92685b76&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LocaleSection/Locale.vue?vue&type=style&index=0&id=1ac456dc&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/LocaleSection/LocaleSection.vue?vue&type=style&index=0&id=84fca724&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?vue&type=style&index=0&id=1caba458&prod&lang=scss&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue?vue&type=style&index=1&id=1caba458&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue?vue&type=style&index=0&id=61586aa5&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue?vue&type=style&index=0&id=cf64d964&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue?vue&type=style&index=0&id=a07dbf96&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue?vue&type=style&index=0&id=b13d20da&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/AccountPropertySection.vue?vue&type=style&index=0&id=6eb7d8e0&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControl.vue?vue&type=style&index=0&id=4ea07669&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue?vue&type=style&index=0&id=404f7a30&prod&lang=scss&scoped=true&","webpack:///nextcloud/apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue?vue&type=style&index=0&id=b43fcc0c&prod&lang=scss&scoped=true&","webpack:///nextcloud/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","<!--\n\t- @copyright 2021 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<NcActionButton :aria-label=\"isSupportedScope ? tooltip : tooltipDisabled\"\n\t\tclass=\"federation-actions__btn\"\n\t\t:class=\"{ 'federation-actions__btn--active': activeScope === name }\"\n\t\t:close-after-click=\"true\"\n\t\t:disabled=\"!isSupportedScope\"\n\t\t:icon=\"iconClass\"\n\t\t:title=\"displayName\"\n\t\t@click.stop.prevent=\"updateScope\">\n\t\t{{ isSupportedScope ? tooltip : tooltipDisabled }}\n\t</NcActionButton>\n</template>\n\n<script>\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'\n\nexport default {\n\tname: 'FederationControlAction',\n\n\tcomponents: {\n\t\tNcActionButton,\n\t},\n\n\tprops: {\n\t\tactiveScope: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tdisplayName: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\thandleScopeChange: {\n\t\t\ttype: Function,\n\t\t\tdefault: () => {},\n\t\t},\n\t\ticonClass: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tisSupportedScope: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\ttooltipDisabled: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\ttooltip: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tmethods: {\n\t\tupdateScope() {\n\t\t\tthis.handleScopeChange(this.name)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\t.federation-actions__btn {\n\t\t&::v-deep p {\n\t\t\twidth: 150px !important;\n\t\t\tpadding: 8px 0 !important;\n\t\t\tcolor: var(--color-main-text) !important;\n\t\t\tfont-size: 12.8px !important;\n\t\t\tline-height: 1.5em !important;\n\t\t}\n\t}\n\n\t.federation-actions__btn--active {\n\t\tbackground-color: var(--color-primary-light) !important;\n\t\tbox-shadow: inset 2px 0 var(--color-primary) !important;\n\t}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FederationControlAction.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FederationControlAction.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FederationControlAction.vue?vue&type=style&index=0&id=404f7a30&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FederationControlAction.vue?vue&type=style&index=0&id=404f7a30&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FederationControlAction.vue?vue&type=template&id=404f7a30&scoped=true&\"\nimport script from \"./FederationControlAction.vue?vue&type=script&lang=js&\"\nexport * from \"./FederationControlAction.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FederationControlAction.vue?vue&type=style&index=0&id=404f7a30&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"404f7a30\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcActionButton',{staticClass:\"federation-actions__btn\",class:{ 'federation-actions__btn--active': _vm.activeScope === _vm.name },attrs:{\"aria-label\":_vm.isSupportedScope ? _vm.tooltip : _vm.tooltipDisabled,\"close-after-click\":true,\"disabled\":!_vm.isSupportedScope,\"icon\":_vm.iconClass,\"title\":_vm.displayName},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.updateScope.apply(null, arguments)}}},[_vm._v(\"\\n\\t\"+_vm._s(_vm.isSupportedScope ? _vm.tooltip : _vm.tooltipDisabled)+\"\\n\")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/*\n * SYNC to be kept in sync with `lib/public/Accounts/IAccountManager.php`\n */\n\nimport { translate as t } from '@nextcloud/l10n'\n\n/** Enum of account properties */\nexport const ACCOUNT_PROPERTY_ENUM = Object.freeze({\n\tADDRESS: 'address',\n\tAVATAR: 'avatar',\n\tBIOGRAPHY: 'biography',\n\tDISPLAYNAME: 'displayname',\n\tEMAIL_COLLECTION: 'additional_mail',\n\tEMAIL: 'email',\n\tHEADLINE: 'headline',\n\tNOTIFICATION_EMAIL: 'notify_email',\n\tFEDIVERSE: 'fediverse',\n\tORGANISATION: 'organisation',\n\tPHONE: 'phone',\n\tPROFILE_ENABLED: 'profile_enabled',\n\tROLE: 'role',\n\tTWITTER: 'twitter',\n\tWEBSITE: 'website',\n})\n\n/** Enum of account properties to human readable account property names */\nexport const ACCOUNT_PROPERTY_READABLE_ENUM = Object.freeze({\n\tADDRESS: t('settings', 'Location'),\n\tAVATAR: t('settings', 'Profile picture'),\n\tBIOGRAPHY: t('settings', 'About'),\n\tDISPLAYNAME: t('settings', 'Full name'),\n\tEMAIL_COLLECTION: t('settings', 'Additional email'),\n\tEMAIL: t('settings', 'Email'),\n\tHEADLINE: t('settings', 'Headline'),\n\tORGANISATION: t('settings', 'Organisation'),\n\tPHONE: t('settings', 'Phone number'),\n\tPROFILE_ENABLED: t('settings', 'Profile'),\n\tROLE: t('settings', 'Role'),\n\tTWITTER: t('settings', 'Twitter'),\n\tFEDIVERSE: t('settings', 'Fediverse (e.g. Mastodon)'),\n\tWEBSITE: t('settings', 'Website'),\n})\n\nexport const NAME_READABLE_ENUM = Object.freeze({\n\t[ACCOUNT_PROPERTY_ENUM.ADDRESS]: ACCOUNT_PROPERTY_READABLE_ENUM.ADDRESS,\n\t[ACCOUNT_PROPERTY_ENUM.AVATAR]: ACCOUNT_PROPERTY_READABLE_ENUM.AVATAR,\n\t[ACCOUNT_PROPERTY_ENUM.BIOGRAPHY]: ACCOUNT_PROPERTY_READABLE_ENUM.BIOGRAPHY,\n\t[ACCOUNT_PROPERTY_ENUM.DISPLAYNAME]: ACCOUNT_PROPERTY_READABLE_ENUM.DISPLAYNAME,\n\t[ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION]: ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL_COLLECTION,\n\t[ACCOUNT_PROPERTY_ENUM.EMAIL]: ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL,\n\t[ACCOUNT_PROPERTY_ENUM.HEADLINE]: ACCOUNT_PROPERTY_READABLE_ENUM.HEADLINE,\n\t[ACCOUNT_PROPERTY_ENUM.ORGANISATION]: ACCOUNT_PROPERTY_READABLE_ENUM.ORGANISATION,\n\t[ACCOUNT_PROPERTY_ENUM.PHONE]: ACCOUNT_PROPERTY_READABLE_ENUM.PHONE,\n\t[ACCOUNT_PROPERTY_ENUM.PROFILE_ENABLED]: ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED,\n\t[ACCOUNT_PROPERTY_ENUM.ROLE]: ACCOUNT_PROPERTY_READABLE_ENUM.ROLE,\n\t[ACCOUNT_PROPERTY_ENUM.TWITTER]: ACCOUNT_PROPERTY_READABLE_ENUM.TWITTER,\n\t[ACCOUNT_PROPERTY_ENUM.FEDIVERSE]: ACCOUNT_PROPERTY_READABLE_ENUM.FEDIVERSE,\n\t[ACCOUNT_PROPERTY_ENUM.WEBSITE]: ACCOUNT_PROPERTY_READABLE_ENUM.WEBSITE,\n})\n\n/** Enum of profile specific sections to human readable names */\nexport const PROFILE_READABLE_ENUM = Object.freeze({\n\tPROFILE_VISIBILITY: t('settings', 'Profile visibility'),\n})\n\n/** Enum of readable account properties to account property keys used by the server */\nexport const PROPERTY_READABLE_KEYS_ENUM = Object.freeze({\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ADDRESS]: ACCOUNT_PROPERTY_ENUM.ADDRESS,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.AVATAR]: ACCOUNT_PROPERTY_ENUM.AVATAR,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.BIOGRAPHY]: ACCOUNT_PROPERTY_ENUM.BIOGRAPHY,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.DISPLAYNAME]: ACCOUNT_PROPERTY_ENUM.DISPLAYNAME,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL_COLLECTION]: ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL]: ACCOUNT_PROPERTY_ENUM.EMAIL,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.HEADLINE]: ACCOUNT_PROPERTY_ENUM.HEADLINE,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ORGANISATION]: ACCOUNT_PROPERTY_ENUM.ORGANISATION,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.PHONE]: ACCOUNT_PROPERTY_ENUM.PHONE,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED]: ACCOUNT_PROPERTY_ENUM.PROFILE_ENABLED,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ROLE]: ACCOUNT_PROPERTY_ENUM.ROLE,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.TWITTER]: ACCOUNT_PROPERTY_ENUM.TWITTER,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.FEDIVERSE]: ACCOUNT_PROPERTY_ENUM.FEDIVERSE,\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.WEBSITE]: ACCOUNT_PROPERTY_ENUM.WEBSITE,\n})\n\n/**\n * Enum of account setting properties\n *\n * Account setting properties unlike account properties do not support scopes*\n */\nexport const ACCOUNT_SETTING_PROPERTY_ENUM = Object.freeze({\n\tLANGUAGE: 'language',\n\tLOCALE: 'locale',\n})\n\n/** Enum of account setting properties to human readable setting properties */\nexport const ACCOUNT_SETTING_PROPERTY_READABLE_ENUM = Object.freeze({\n\tLANGUAGE: t('settings', 'Language'),\n\tLOCALE: t('settings', 'Locale'),\n})\n\n/** Enum of scopes */\nexport const SCOPE_ENUM = Object.freeze({\n\tPRIVATE: 'v2-private',\n\tLOCAL: 'v2-local',\n\tFEDERATED: 'v2-federated',\n\tPUBLISHED: 'v2-published',\n})\n\n/** Enum of readable account properties to supported scopes */\nexport const PROPERTY_READABLE_SUPPORTED_SCOPES_ENUM = Object.freeze({\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ADDRESS]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.AVATAR]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.BIOGRAPHY]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.DISPLAYNAME]: [SCOPE_ENUM.LOCAL],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL_COLLECTION]: [SCOPE_ENUM.LOCAL],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL]: [SCOPE_ENUM.LOCAL],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.HEADLINE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ORGANISATION]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.PHONE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.ROLE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.TWITTER]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.FEDIVERSE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n\t[ACCOUNT_PROPERTY_READABLE_ENUM.WEBSITE]: [SCOPE_ENUM.LOCAL, SCOPE_ENUM.PRIVATE],\n})\n\n/** List of readable account properties which aren't published to the lookup server */\nexport const UNPUBLISHED_READABLE_PROPERTIES = Object.freeze([\n\tACCOUNT_PROPERTY_READABLE_ENUM.BIOGRAPHY,\n\tACCOUNT_PROPERTY_READABLE_ENUM.HEADLINE,\n\tACCOUNT_PROPERTY_READABLE_ENUM.ORGANISATION,\n\tACCOUNT_PROPERTY_READABLE_ENUM.ROLE,\n])\n\n/** Scope suffix */\nexport const SCOPE_SUFFIX = 'Scope'\n\n/**\n * Enum of scope names to properties\n *\n * Used for federation control*\n */\nexport const SCOPE_PROPERTY_ENUM = Object.freeze({\n\t[SCOPE_ENUM.PRIVATE]: {\n\t\tname: SCOPE_ENUM.PRIVATE,\n\t\tdisplayName: t('settings', 'Private'),\n\t\ttooltip: t('settings', 'Only visible to people matched via phone number integration through Talk on mobile'),\n\t\ttooltipDisabled: t('settings', 'Not available as this property is required for core functionality including file sharing and calendar invitations'),\n\t\ticonClass: 'icon-phone',\n\t},\n\t[SCOPE_ENUM.LOCAL]: {\n\t\tname: SCOPE_ENUM.LOCAL,\n\t\tdisplayName: t('settings', 'Local'),\n\t\ttooltip: t('settings', 'Only visible to people on this instance and guests'),\n\t\t// tooltipDisabled is not required here as this scope is supported by all account properties\n\t\ticonClass: 'icon-password',\n\t},\n\t[SCOPE_ENUM.FEDERATED]: {\n\t\tname: SCOPE_ENUM.FEDERATED,\n\t\tdisplayName: t('settings', 'Federated'),\n\t\ttooltip: t('settings', 'Only synchronize to trusted servers'),\n\t\ttooltipDisabled: t('settings', 'Not available as federation has been disabled for your account, contact your system administrator if you have any questions'),\n\t\ticonClass: 'icon-contacts-dark',\n\t},\n\t[SCOPE_ENUM.PUBLISHED]: {\n\t\tname: SCOPE_ENUM.PUBLISHED,\n\t\tdisplayName: t('settings', 'Published'),\n\t\ttooltip: t('settings', 'Synchronize to trusted servers and the global and public address book'),\n\t\ttooltipDisabled: t('settings', 'Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions'),\n\t\ticonClass: 'icon-link',\n\t},\n})\n\n/** Default additional email scope */\nexport const DEFAULT_ADDITIONAL_EMAIL_SCOPE = SCOPE_ENUM.LOCAL\n\n/** Enum of verification constants, according to IAccountManager */\nexport const VERIFICATION_ENUM = Object.freeze({\n\tNOT_VERIFIED: 0,\n\tVERIFICATION_IN_PROGRESS: 1,\n\tVERIFIED: 2,\n})\n\n/**\n * Email validation regex\n *\n * Sourced from https://github.com/mpyw/FILTER_VALIDATE_EMAIL.js/blob/71e62ca48841d2246a1b531e7e84f5a01f15e615/src/regexp/ascii.ts*\n */\n// eslint-disable-next-line no-control-regex\nexport const VALIDATE_EMAIL_REGEX = /^(?!(?:(?:\\x22?\\x5C[\\x00-\\x7E]\\x22?)|(?:\\x22?[^\\x5C\\x22]\\x22?)){255,})(?!(?:(?:\\x22?\\x5C[\\x00-\\x7E]\\x22?)|(?:\\x22?[^\\x5C\\x22]\\x22?)){65,}@)(?:(?:[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2F-\\x39\\x3D\\x3F\\x5E-\\x7E]+)|(?:\\x22(?:[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21\\x23-\\x5B\\x5D-\\x7F]|(?:\\x5C[\\x00-\\x7F]))*\\x22))(?:\\.(?:(?:[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2F-\\x39\\x3D\\x3F\\x5E-\\x7E]+)|(?:\\x22(?:[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21\\x23-\\x5B\\x5D-\\x7F]|(?:\\x5C[\\x00-\\x7F]))*\\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-+[a-z0-9]+)*\\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-+[a-z0-9]+)*)|(?:\\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\\]))$/i\n","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { confirmPassword } from '@nextcloud/password-confirmation'\nimport '@nextcloud/password-confirmation/dist/style.css'\n\nimport { SCOPE_SUFFIX } from '../../constants/AccountPropertyConstants.js'\n\n/**\n * Save the primary account property value for the user\n *\n * @param {string} accountProperty the account property\n * @param {string|boolean} value the primary value\n * @return {object}\n */\nexport const savePrimaryAccountProperty = async (accountProperty, value) => {\n\t// TODO allow boolean values on backend route handler\n\t// Convert boolean to string for compatibility\n\tif (typeof value === 'boolean') {\n\t\tvalue = value ? '1' : '0'\n\t}\n\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: accountProperty,\n\t\tvalue,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save the federation scope of the primary account property for the user\n *\n * @param {string} accountProperty the account property\n * @param {string} scope the federation scope\n * @return {object}\n */\nexport const savePrimaryAccountPropertyScope = async (accountProperty, scope) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: `${accountProperty}${SCOPE_SUFFIX}`,\n\t\tvalue: scope,\n\t})\n\n\treturn res.data\n}\n","/**\n * @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('settings')\n\t.detectUser()\n\t.build()\n","/**\n * @copyright 2023 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { showError } from '@nextcloud/dialogs'\nimport { translate as t } from '@nextcloud/l10n'\n\nimport logger from '../logger.js'\n\n/**\n * @param {import('axios').AxiosError} error the error\n * @param {string?} message the message to display\n */\nexport const handleError = (error, message) => {\n\tlet fullMessage = ''\n\n\tif (message) {\n\t\tfullMessage += message\n\t}\n\n\tif (error.response?.status === 429) {\n\t\tif (fullMessage) {\n\t\t\tfullMessage += '\\n'\n\t\t}\n\t\tfullMessage += t('settings', 'There were too many requests from your network. Retry later or contact your administrator if this is an error.')\n\t}\n\n\tshowError(fullMessage)\n\tlogger.error(fullMessage || t('Error'), error)\n}\n","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<NcActions :class=\"{ 'federation-actions': !additional, 'federation-actions--additional': additional }\"\n\t\t:aria-label=\"ariaLabel\"\n\t\t:default-icon=\"scopeIcon\"\n\t\t:disabled=\"disabled\">\n\t\t<FederationControlAction v-for=\"federationScope in federationScopes\"\n\t\t\t:key=\"federationScope.name\"\n\t\t\t:active-scope=\"scope\"\n\t\t\t:display-name=\"federationScope.displayName\"\n\t\t\t:handle-scope-change=\"changeScope\"\n\t\t\t:icon-class=\"federationScope.iconClass\"\n\t\t\t:is-supported-scope=\"supportedScopes.includes(federationScope.name)\"\n\t\t\t:name=\"federationScope.name\"\n\t\t\t:tooltip-disabled=\"federationScope.tooltipDisabled\"\n\t\t\t:tooltip=\"federationScope.tooltip\"\n\t\t\t:aria-label=\"federationScope.tooltip\" />\n\t</NcActions>\n</template>\n\n<script>\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions.js'\nimport { loadState } from '@nextcloud/initial-state'\n\nimport FederationControlAction from './FederationControlAction.vue'\n\nimport {\n\tACCOUNT_PROPERTY_READABLE_ENUM,\n\tACCOUNT_SETTING_PROPERTY_READABLE_ENUM,\n\tPROFILE_READABLE_ENUM,\n\tPROPERTY_READABLE_KEYS_ENUM,\n\tPROPERTY_READABLE_SUPPORTED_SCOPES_ENUM,\n\tSCOPE_ENUM, SCOPE_PROPERTY_ENUM,\n\tUNPUBLISHED_READABLE_PROPERTIES,\n} from '../../../constants/AccountPropertyConstants.js'\nimport { savePrimaryAccountPropertyScope } from '../../../service/PersonalInfo/PersonalInfoService.js'\nimport { handleError } from '../../../utils/handlers.js'\n\nconst {\n\tfederationEnabled,\n\tlookupServerUploadEnabled,\n} = loadState('settings', 'accountParameters', {})\n\nexport default {\n\tname: 'FederationControl',\n\n\tcomponents: {\n\t\tNcActions,\n\t\tFederationControlAction,\n\t},\n\n\tprops: {\n\t\treadable: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t\tvalidator: (value) => Object.values(ACCOUNT_PROPERTY_READABLE_ENUM).includes(value) || Object.values(ACCOUNT_SETTING_PROPERTY_READABLE_ENUM).includes(value) || value === PROFILE_READABLE_ENUM.PROFILE_VISIBILITY,\n\t\t},\n\t\tadditional: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tadditionalValue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\thandleAdditionalScopeChange: {\n\t\t\ttype: Function,\n\t\t\tdefault: null,\n\t\t},\n\t\tscope: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\treadableLowerCase: this.readable.toLocaleLowerCase(),\n\t\t\tinitialScope: this.scope,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tariaLabel() {\n\t\t\treturn t('settings', 'Change scope level of {property}, current scope is {scope}', { property: this.readableLowerCase, scope: this.scopeDisplayNameLowerCase })\n\t\t},\n\n\t\tscopeDisplayNameLowerCase() {\n\t\t\treturn SCOPE_PROPERTY_ENUM[this.scope].displayName.toLocaleLowerCase()\n\t\t},\n\n\t\tscopeIcon() {\n\t\t\treturn SCOPE_PROPERTY_ENUM[this.scope].iconClass\n\t\t},\n\n\t\tfederationScopes() {\n\t\t\treturn Object.values(SCOPE_PROPERTY_ENUM)\n\t\t},\n\n\t\tsupportedScopes() {\n\t\t\tconst scopes = PROPERTY_READABLE_SUPPORTED_SCOPES_ENUM[this.readable]\n\n\t\t\tif (UNPUBLISHED_READABLE_PROPERTIES.includes(this.readable)) {\n\t\t\t\treturn scopes\n\t\t\t}\n\n\t\t\tif (federationEnabled) {\n\t\t\t\tscopes.push(SCOPE_ENUM.FEDERATED)\n\t\t\t}\n\n\t\t\tif (lookupServerUploadEnabled) {\n\t\t\t\tscopes.push(SCOPE_ENUM.PUBLISHED)\n\t\t\t}\n\n\t\t\treturn scopes\n\t\t},\n\t},\n\n\tmethods: {\n\t\tasync changeScope(scope) {\n\t\t\tthis.$emit('update:scope', scope)\n\n\t\t\tif (!this.additional) {\n\t\t\t\tawait this.updatePrimaryScope(scope)\n\t\t\t} else {\n\t\t\t\tawait this.updateAdditionalScope(scope)\n\t\t\t}\n\t\t},\n\n\t\tasync updatePrimaryScope(scope) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountPropertyScope(PROPERTY_READABLE_KEYS_ENUM[this.readable], scope)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tscope,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update federation scope of the primary {property}', { property: this.readableLowerCase }),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\tasync updateAdditionalScope(scope) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await this.handleAdditionalScopeChange(this.additionalValue, scope)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tscope,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update federation scope of additional {property}', { property: this.readableLowerCase }),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ scope, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\tthis.initialScope = scope\n\t\t\t} else {\n\t\t\t\tthis.$emit('update:scope', this.initialScope)\n\t\t\t\thandleError(error, errorMessage)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\t.federation-actions,\n\t.federation-actions--additional {\n\t\topacity: 0.4 !important;\n\n\t\t&:hover,\n\t\t&:focus,\n\t\t&:active {\n\t\t\topacity: 0.8 !important;\n\t\t}\n\t}\n\n\t.federation-actions--additional {\n\t\t&::v-deep button {\n\t\t\t// TODO remove this hack\n\t\t\tpadding-bottom: 7px;\n\t\t\theight: 30px !important;\n\t\t\tmin-height: 30px !important;\n\t\t\twidth: 30px !important;\n\t\t\tmin-width: 30px !important;\n\t\t}\n\t}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FederationControl.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FederationControl.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FederationControl.vue?vue&type=style&index=0&id=4ea07669&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FederationControl.vue?vue&type=style&index=0&id=4ea07669&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FederationControl.vue?vue&type=template&id=4ea07669&scoped=true&\"\nimport script from \"./FederationControl.vue?vue&type=script&lang=js&\"\nexport * from \"./FederationControl.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FederationControl.vue?vue&type=style&index=0&id=4ea07669&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4ea07669\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcActions',{class:{ 'federation-actions': !_vm.additional, 'federation-actions--additional': _vm.additional },attrs:{\"aria-label\":_vm.ariaLabel,\"default-icon\":_vm.scopeIcon,\"disabled\":_vm.disabled}},_vm._l((_vm.federationScopes),function(federationScope){return _c('FederationControlAction',{key:federationScope.name,attrs:{\"active-scope\":_vm.scope,\"display-name\":federationScope.displayName,\"handle-scope-change\":_vm.changeScope,\"icon-class\":federationScope.iconClass,\"is-supported-scope\":_vm.supportedScopes.includes(federationScope.name),\"name\":federationScope.name,\"tooltip-disabled\":federationScope.tooltipDisabled,\"tooltip\":federationScope.tooltip,\"aria-label\":federationScope.tooltip}})}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeaderBar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeaderBar.vue?vue&type=script&lang=js&\"","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<component :is=\"isHeading ? `h3` : `div`\" class=\"headerbar-label\" :class=\"{ 'setting-property': isSettingProperty, 'profile-property': isProfileProperty }\">\n\t\t<span v-if=\"isHeading\">\n\t\t\t<!-- Already translated as required by prop validator -->\n\t\t\t{{ readable }}\n\t\t</span>\n\t\t<label v-else :for=\"inputId\">\n\t\t\t<!-- Already translated as required by prop validator -->\n\t\t\t{{ readable }}\n\t\t</label>\n\n\t\t<template v-if=\"scope\">\n\t\t\t<FederationControl class=\"federation-control\"\n\t\t\t\t:readable=\"readable\"\n\t\t\t\t:scope.sync=\"localScope\"\n\t\t\t\t@update:scope=\"onScopeChange\" />\n\t\t</template>\n\n\t\t<template v-if=\"isEditable && isMultiValueSupported\">\n\t\t\t<NcButton type=\"tertiary\"\n\t\t\t\t:disabled=\"!isValidSection\"\n\t\t\t\t:aria-label=\"t('settings', 'Add additional email')\"\n\t\t\t\t@click.stop.prevent=\"onAddAdditional\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Plus :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\t{{ t('settings', 'Add') }}\n\t\t\t</NcButton>\n\t\t</template>\n\t</component>\n</template>\n\n<script>\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport Plus from 'vue-material-design-icons/Plus.vue'\n\nimport FederationControl from './FederationControl.vue'\n\nimport {\n\tACCOUNT_PROPERTY_READABLE_ENUM,\n\tPROFILE_READABLE_ENUM,\n} from '../../../constants/AccountPropertyConstants.js'\n\nexport default {\n\tname: 'HeaderBar',\n\n\tcomponents: {\n\t\tFederationControl,\n\t\tNcButton,\n\t\tPlus,\n\t},\n\n\tprops: {\n\t\tscope: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\treadable: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tinputId: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\tisEditable: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tisMultiValueSupported: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tisValidSection: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tisHeading: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tlocalScope: this.scope,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisProfileProperty() {\n\t\t\treturn this.readable === ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED\n\t\t},\n\n\t\tisSettingProperty() {\n\t\t\treturn !Object.values(ACCOUNT_PROPERTY_READABLE_ENUM).includes(this.readable) && !Object.values(PROFILE_READABLE_ENUM).includes(this.readable)\n\t\t},\n\t},\n\n\tmethods: {\n\t\tonAddAdditional() {\n\t\t\tthis.$emit('add-additional')\n\t\t},\n\n\t\tonScopeChange(scope) {\n\t\t\tthis.$emit('update:scope', scope)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\t.headerbar-label {\n\t\tfont-weight: normal;\n\t\tdisplay: inline-flex;\n\t\twidth: 100%;\n\t\tmargin: 12px 0 0 0;\n\t\tgap: 8px;\n\t\talign-items: center;\n\t\tfont-size: 16px;\n\t\tcolor: var(--color-text-light);\n\n\t\t&.profile-property {\n\t\t\theight: 38px;\n\t\t}\n\n\t\t&.setting-property {\n\t\t\theight: 44px;\n\t\t}\n\n\t\tlabel {\n\t\t\tcursor: pointer;\n\t\t}\n\t}\n\n\t.federation-control {\n\t\tmargin: 0;\n\t}\n\n\t.button-vue {\n\t\tmargin: 0 0 0 auto !important;\n\t}\n</style>\n","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeaderBar.vue?vue&type=style&index=0&id=b43fcc0c&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeaderBar.vue?vue&type=style&index=0&id=b43fcc0c&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./HeaderBar.vue?vue&type=template&id=b43fcc0c&scoped=true&\"\nimport script from \"./HeaderBar.vue?vue&type=script&lang=js&\"\nexport * from \"./HeaderBar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./HeaderBar.vue?vue&type=style&index=0&id=b43fcc0c&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b43fcc0c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c(_vm.isHeading ? `h3` : `div`,{tag:\"component\",staticClass:\"headerbar-label\",class:{ 'setting-property': _vm.isSettingProperty, 'profile-property': _vm.isProfileProperty }},[(_vm.isHeading)?_c('span',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.readable)+\"\\n\\t\")]):_c('label',{attrs:{\"for\":_vm.inputId}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.readable)+\"\\n\\t\")]),_vm._v(\" \"),(_vm.scope)?[_c('FederationControl',{staticClass:\"federation-control\",attrs:{\"readable\":_vm.readable,\"scope\":_vm.localScope},on:{\"update:scope\":[function($event){_vm.localScope=$event},_vm.onScopeChange]}})]:_vm._e(),_vm._v(\" \"),(_vm.isEditable && _vm.isMultiValueSupported)?[_c('NcButton',{attrs:{\"type\":\"tertiary\",\"disabled\":!_vm.isValidSection,\"aria-label\":_vm.t('settings', 'Add additional email')},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.onAddAdditional.apply(null, arguments)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Plus',{attrs:{\"size\":20}})]},proxy:true}],null,false,32235154)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Add'))+\"\\n\\t\\t\")])]:_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section id=\"vue-avatar-section\">\n\t\t<h3 class=\"hidden-visually\"> {{ t('settings', 'Your profile information') }} </h3>\n\t\t<HeaderBar :input-id=\"avatarChangeSupported ? inputId : null\"\n\t\t\t:readable=\"avatar.readable\"\n\t\t\t:scope.sync=\"avatar.scope\" />\n\n\t\t<div v-if=\"!showCropper\" class=\"avatar__container\">\n\t\t\t<div class=\"avatar__preview\">\n\t\t\t\t<NcAvatar v-if=\"!loading\"\n\t\t\t\t\t:user=\"userId\"\n\t\t\t\t\t:aria-label=\"t('settings', 'Your profile picture')\"\n\t\t\t\t\t:disabled-menu=\"true\"\n\t\t\t\t\t:disabled-tooltip=\"true\"\n\t\t\t\t\t:show-user-status=\"false\"\n\t\t\t\t\t:size=\"180\"\n\t\t\t\t\t:key=\"version\" />\n\t\t\t\t<div v-else class=\"icon-loading\" />\n\t\t\t</div>\n\t\t\t<template v-if=\"avatarChangeSupported\">\n\t\t\t\t<div class=\"avatar__buttons\">\n\t\t\t\t\t<NcButton :aria-label=\"t('settings', 'Upload profile picture')\"\n\t\t\t\t\t\t@click=\"activateLocalFilePicker\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<Upload :size=\"20\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</NcButton>\n\t\t\t\t\t<NcButton :aria-label=\"t('settings', 'Choose profile picture from Files')\"\n\t\t\t\t\t\t@click=\"openFilePicker\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<Folder :size=\"20\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</NcButton>\n\t\t\t\t\t<NcButton v-if=\"!isGenerated\"\n\t\t\t\t\t\t:aria-label=\"t('settings', 'Remove profile picture')\"\n\t\t\t\t\t\t@click=\"removeAvatar\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<Delete :size=\"20\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</NcButton>\n\t\t\t\t</div>\n\t\t\t\t<span>{{ t('settings', 'The file must be a PNG or JPG') }}</span>\n\t\t\t\t<input ref=\"input\"\n\t\t\t\t\t:id=\"inputId\"\n\t\t\t\t\ttype=\"file\"\n\t\t\t\t\t:accept=\"validMimeTypes.join(',')\"\n\t\t\t\t\t@change=\"onChange\">\n\t\t\t</template>\n\t\t\t<span v-else>\n\t\t\t\t{{ t('settings', 'Picture provided by original account') }}\n\t\t\t</span>\n\t\t</div>\n\n\t\t<!-- Use v-show to ensure early cropper ref availability -->\n\t\t<div v-show=\"showCropper\" class=\"avatar__container\">\n\t\t\t<VueCropper ref=\"cropper\"\n\t\t\t\tclass=\"avatar__cropper\"\n\t\t\t\tv-bind=\"cropperOptions\" />\n\t\t\t<div class=\"avatar__cropper-buttons\">\n\t\t\t\t<NcButton @click=\"cancel\">\n\t\t\t\t\t{{ t('settings', 'Cancel') }}\n\t\t\t\t</NcButton>\n\t\t\t\t<NcButton type=\"primary\"\n\t\t\t\t\t@click=\"saveAvatar\">\n\t\t\t\t\t{{ t('settings', 'Set as profile picture') }}\n\t\t\t\t</NcButton>\n\t\t\t</div>\n\t\t\t<span>{{ t('settings', 'Please note that it can take up to 24 hours for your profile picture to be updated everywhere.') }}</span>\n\t\t</div>\n\t</section>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getFilePickerBuilder, showError } from '@nextcloud/dialogs'\nimport { emit, subscribe, unsubscribe } from '@nextcloud/event-bus'\n\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport VueCropper from 'vue-cropperjs'\n// eslint-disable-next-line n/no-extraneous-import\nimport 'cropperjs/dist/cropper.css'\n\nimport Upload from 'vue-material-design-icons/Upload.vue'\nimport Folder from 'vue-material-design-icons/Folder.vue'\nimport Delete from 'vue-material-design-icons/Delete.vue'\n\nimport HeaderBar from './shared/HeaderBar.vue'\nimport { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js'\n\nconst { avatar } = loadState('settings', 'personalInfoParameters', {})\nconst { avatarChangeSupported } = loadState('settings', 'accountParameters', {})\n\nconst VALID_MIME_TYPES = ['image/png', 'image/jpeg']\n\nconst picker = getFilePickerBuilder(t('settings', 'Choose your profile picture'))\n\t.setMultiSelect(false)\n\t.setMimeTypeFilter(VALID_MIME_TYPES)\n\t.setModal(true)\n\t.setType(1)\n\t.allowDirectories(false)\n\t.build()\n\nexport default {\n\tname: 'AvatarSection',\n\n\tcomponents: {\n\t\tDelete,\n\t\tFolder,\n\t\tHeaderBar,\n\t\tNcAvatar,\n\t\tNcButton,\n\t\tUpload,\n\t\tVueCropper,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tavatar: { ...avatar, readable: NAME_READABLE_ENUM[avatar.name] },\n\t\t\tavatarChangeSupported,\n\t\t\tshowCropper: false,\n\t\t\tloading: false,\n\t\t\tuserId: getCurrentUser().uid,\n\t\t\tdisplayName: getCurrentUser().displayName,\n\t\t\tversion: oc_userconfig.avatar.version,\n\t\t\tisGenerated: oc_userconfig.avatar.generated,\n\t\t\tvalidMimeTypes: VALID_MIME_TYPES,\n\t\t\tcropperOptions: {\n\t\t\t\taspectRatio: 1 / 1,\n\t\t\t\tviewMode: 1,\n\t\t\t\tguides: false,\n\t\t\t\tcenter: false,\n\t\t\t\thighlight: false,\n\t\t\t\tautoCropArea: 1,\n\t\t\t\tminContainerWidth: 300,\n\t\t\t\tminContainerHeight: 300,\n\t\t\t},\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tinputId() {\n\t\t\treturn `account-property-${this.avatar.name}`\n\t\t},\n\t},\n\n\tcreated() {\n\t\tsubscribe('settings:display-name:updated', this.handleDisplayNameUpdate)\n\t},\n\n\tbeforeDestroy() {\n\t\tunsubscribe('settings:display-name:updated', this.handleDisplayNameUpdate)\n\t},\n\n\tmethods: {\n\t\tactivateLocalFilePicker() {\n\t\t\t// Set to null so that selecting the same file will trigger the change event\n\t\t\tthis.$refs.input.value = null\n\t\t\tthis.$refs.input.click()\n\t\t},\n\n\t\tonChange(e) {\n\t\t\tthis.loading = true\n\t\t\tconst file = e.target.files[0]\n\t\t\tif (!this.validMimeTypes.includes(file.type)) {\n\t\t\t\tshowError(t('settings', 'Please select a valid png or jpg file'))\n\t\t\t\tthis.cancel()\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst reader = new FileReader()\n\t\t\treader.onload = (e) => {\n\t\t\t\tthis.$refs.cropper.replace(e.target.result)\n\t\t\t\tthis.showCropper = true\n\t\t\t}\n\t\t\treader.readAsDataURL(file)\n\t\t},\n\n\t\tasync openFilePicker() {\n\t\t\tconst path = await picker.pick()\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tconst { data } = await axios.post(generateUrl('/avatar'), { path })\n\t\t\t\tif (data.status === 'success') {\n\t\t\t\t\tthis.handleAvatarUpdate(false)\n\t\t\t\t} else if (data.data === 'notsquare') {\n\t\t\t\t\tconst tempAvatar = generateUrl('/avatar/tmp') + '?requesttoken=' + encodeURIComponent(OC.requestToken) + '#' + Math.floor(Math.random() * 1000)\n\t\t\t\t\tthis.$refs.cropper.replace(tempAvatar)\n\t\t\t\t\tthis.showCropper = true\n\t\t\t\t} else {\n\t\t\t\t\tshowError(data.data.message)\n\t\t\t\t\tthis.cancel()\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tshowError(t('settings', 'Error setting profile picture'))\n\t\t\t\tthis.cancel()\n\t\t\t}\n\t\t},\n\n\t\tsaveAvatar() {\n\t\t\tthis.showCropper = false\n\t\t\tthis.loading = true\n\n\t\t\tconst canvasData = this.$refs.cropper.getCroppedCanvas()\n\t\t\tconst scaleFactor = canvasData.width > 512 ? 512 / canvasData.width : 1\n\n\t\t\tthis.$refs.cropper.scale(scaleFactor, scaleFactor).getCroppedCanvas().toBlob(async (blob) => {\n\t\t\t\tif (blob === null) {\n\t\t\t\t\tshowError(t('settings', 'Error cropping profile picture'))\n\t\t\t\t\tthis.cancel()\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tconst formData = new FormData()\n\t\t\t\tformData.append('files[]', blob)\n\t\t\t\ttry {\n\t\t\t\t\tawait axios.post(generateUrl('/avatar'), formData)\n\t\t\t\t\tthis.handleAvatarUpdate(false)\n\t\t\t\t} catch (e) {\n\t\t\t\t\tshowError(t('settings', 'Error saving profile picture'))\n\t\t\t\t\tthis.handleAvatarUpdate(this.isGenerated)\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\n\t\tasync removeAvatar() {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tawait axios.delete(generateUrl('/avatar'))\n\t\t\t\tthis.handleAvatarUpdate(true)\n\t\t\t} catch (e) {\n\t\t\t\tshowError(t('settings', 'Error removing profile picture'))\n\t\t\t\tthis.handleAvatarUpdate(this.isGenerated)\n\t\t\t}\n\t\t},\n\n\t\tcancel() {\n\t\t\tthis.showCropper = false\n\t\t\tthis.loading = false\n\t\t},\n\n\t\thandleAvatarUpdate(isGenerated) {\n\t\t\t// Update the avatar version so that avatar update handlers refresh correctly\n\t\t\tthis.version = oc_userconfig.avatar.version = Date.now()\n\t\t\tthis.isGenerated = oc_userconfig.avatar.generated = isGenerated\n\t\t\tthis.loading = false\n\t\t\temit('settings:avatar:updated', oc_userconfig.avatar.version)\n\t\t},\n\n\t\thandleDisplayNameUpdate() {\n\t\t\tthis.version = oc_userconfig.avatar.version\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tgrid-row: 1/3;\n}\n.avatar {\n\t&__container {\n\t\tmargin: 0 auto;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tgap: 16px 0;\n\t\twidth: 300px;\n\n\t\tspan {\n\t\t\tcolor: var(--color-text-lighter);\n\t\t}\n\t}\n\n\t&__preview {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\twidth: 180px;\n\t\theight: 180px;\n\t}\n\n\t&__buttons {\n\t\tdisplay: flex;\n\t\tgap: 0 10px;\n\t}\n\n\t&__cropper {\n\t\twidth: 300px;\n\t\theight: 300px;\n\t\toverflow: hidden;\n\n\t\t&-buttons {\n\t\t\twidth: 100%;\n\t\t\tdisplay: flex;\n\t\t\tjustify-content: space-between;\n\t\t}\n\n\t\t&::v-deep .cropper-view-box {\n\t\t\tborder-radius: 50%;\n\t\t}\n\t}\n}\n\ninput[type=\"file\"] {\n\tdisplay: none;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvatarSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvatarSection.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvatarSection.vue?vue&type=style&index=0&id=022fd5d4&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvatarSection.vue?vue&type=style&index=0&id=022fd5d4&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AvatarSection.vue?vue&type=template&id=022fd5d4&scoped=true&\"\nimport script from \"./AvatarSection.vue?vue&type=script&lang=js&\"\nexport * from \"./AvatarSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AvatarSection.vue?vue&type=style&index=0&id=022fd5d4&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"022fd5d4\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',{attrs:{\"id\":\"vue-avatar-section\"}},[_c('h3',{staticClass:\"hidden-visually\"},[_vm._v(\" \"+_vm._s(_vm.t('settings', 'Your profile information'))+\" \")]),_vm._v(\" \"),_c('HeaderBar',{attrs:{\"input-id\":_vm.avatarChangeSupported ? _vm.inputId : null,\"readable\":_vm.avatar.readable,\"scope\":_vm.avatar.scope},on:{\"update:scope\":function($event){return _vm.$set(_vm.avatar, \"scope\", $event)}}}),_vm._v(\" \"),(!_vm.showCropper)?_c('div',{staticClass:\"avatar__container\"},[_c('div',{staticClass:\"avatar__preview\"},[(!_vm.loading)?_c('NcAvatar',{key:_vm.version,attrs:{\"user\":_vm.userId,\"aria-label\":_vm.t('settings', 'Your profile picture'),\"disabled-menu\":true,\"disabled-tooltip\":true,\"show-user-status\":false,\"size\":180}}):_c('div',{staticClass:\"icon-loading\"})],1),_vm._v(\" \"),(_vm.avatarChangeSupported)?[_c('div',{staticClass:\"avatar__buttons\"},[_c('NcButton',{attrs:{\"aria-label\":_vm.t('settings', 'Upload profile picture')},on:{\"click\":_vm.activateLocalFilePicker},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Upload',{attrs:{\"size\":20}})]},proxy:true}],null,false,1329850251)}),_vm._v(\" \"),_c('NcButton',{attrs:{\"aria-label\":_vm.t('settings', 'Choose profile picture from Files')},on:{\"click\":_vm.openFilePicker},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Folder',{attrs:{\"size\":20}})]},proxy:true}],null,false,4270628382)}),_vm._v(\" \"),(!_vm.isGenerated)?_c('NcButton',{attrs:{\"aria-label\":_vm.t('settings', 'Remove profile picture')},on:{\"click\":_vm.removeAvatar},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Delete',{attrs:{\"size\":20}})]},proxy:true}],null,false,2705356561)}):_vm._e()],1),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.t('settings', 'The file must be a PNG or JPG')))]),_vm._v(\" \"),_c('input',{ref:\"input\",attrs:{\"id\":_vm.inputId,\"type\":\"file\",\"accept\":_vm.validMimeTypes.join(',')},on:{\"change\":_vm.onChange}})]:_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Picture provided by original account'))+\"\\n\\t\\t\")])],2):_vm._e(),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showCropper),expression:\"showCropper\"}],staticClass:\"avatar__container\"},[_c('VueCropper',_vm._b({ref:\"cropper\",staticClass:\"avatar__cropper\"},'VueCropper',_vm.cropperOptions,false)),_vm._v(\" \"),_c('div',{staticClass:\"avatar__cropper-buttons\"},[_c('NcButton',{on:{\"click\":_vm.cancel}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Cancel'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcButton',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.saveAvatar}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Set as profile picture'))+\"\\n\\t\\t\\t\")])],1),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.t('settings', 'Please note that it can take up to 24 hours for your profile picture to be updated everywhere.')))])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',[_c('HeaderBar',{attrs:{\"is-heading\":true,\"readable\":_vm.t('settings', 'Details')}}),_vm._v(\" \"),_c('div',{staticClass:\"details\"},[_c('div',{staticClass:\"details__groups\"},[_c('Account',{attrs:{\"size\":20}}),_vm._v(\" \"),_c('div',{staticClass:\"details__groups-info\"},[_c('p',[_vm._v(_vm._s(_vm.t('settings', 'You are a member of the following groups:')))]),_vm._v(\" \"),_c('p',{staticClass:\"details__groups-list\"},[_vm._v(_vm._s(_vm.groups.join(', ')))])])],1),_vm._v(\" \"),_c('div',{staticClass:\"details__quota\"},[_c('CircleSlice',{attrs:{\"size\":20}}),_vm._v(\" \"),_c('div',{staticClass:\"details__quota-info\"},[_c('p',{staticClass:\"details__quota-text\",domProps:{\"innerHTML\":_vm._s(_vm.quotaText)}}),_vm._v(\" \"),_c('NcProgressBar',{attrs:{\"size\":\"medium\",\"value\":_vm.usageRelative,\"error\":_vm.usageRelative > 80}})],1)],1)])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :is-heading=\"true\" :readable=\"t('settings', 'Details')\" />\n\n\t\t<div class=\"details\">\n\t\t\t<div class=\"details__groups\">\n\t\t\t\t<Account :size=\"20\" />\n\t\t\t\t<div class=\"details__groups-info\">\n\t\t\t\t\t<p>{{ t('settings', 'You are a member of the following groups:') }}</p>\n\t\t\t\t\t<p class=\"details__groups-list\">{{ groups.join(', ') }}</p>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"details__quota\">\n\t\t\t\t<CircleSlice :size=\"20\" />\n\t\t\t\t<div class=\"details__quota-info\">\n\t\t\t\t\t<p class=\"details__quota-text\" v-html=\"quotaText\" />\n\t\t\t\t\t<NcProgressBar size=\"medium\"\n\t\t\t\t\t\t:value=\"usageRelative\"\n\t\t\t\t\t\t:error=\"usageRelative > 80\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport NcProgressBar from '@nextcloud/vue/dist/Components/NcProgressBar.js'\n\nimport Account from 'vue-material-design-icons/Account.vue'\nimport CircleSlice from 'vue-material-design-icons/CircleSlice3.vue'\n\nimport HeaderBar from './shared/HeaderBar.vue'\n\n/** SYNC to be kept in sync with `lib/public/Files/FileInfo.php` */\nconst SPACE_UNLIMITED = -3\n\nconst { groups, quota, totalSpace, usage, usageRelative } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'DetailsSection',\n\n\tcomponents: {\n\t\tAccount,\n\t\tCircleSlice,\n\t\tHeaderBar,\n\t\tNcProgressBar,\n\t},\n\n\tcomputed: {\n\t\tquotaText() {\n\t\t\tif (quota === SPACE_UNLIMITED) {\n\t\t\t\treturn t('settings', 'You are using <strong>{usage}</strong>', { usage })\n\t\t\t}\n\t\t\treturn t(\n\t\t\t\t'settings',\n\t\t\t\t'You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)',\n\t\t\t\t{ usage, totalSpace, usageRelative },\n\t\t\t)\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tgroups,\n\t\t\tusageRelative,\n\t\t}\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.details {\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin: 10px 32px 10px 0;\n\tgap: 16px 0;\n\tcolor: var(--color-text-lighter);\n\n\t&__groups,\n\t&__quota {\n\t\tdisplay: flex;\n\t\tgap: 0 10px;\n\n\t\t&-info {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\twidth: 100%;\n\t\t\tgap: 4px 0;\n\t\t}\n\n\t\t&-list {\n\t\t\tfont-weight: bold;\n\t\t}\n\n\t\t&::v-deep .material-design-icon {\n\t\t\talign-self: flex-start;\n\t\t\tmargin-top: 2px;\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DetailsSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DetailsSection.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DetailsSection.vue?vue&type=style&index=0&id=1ab46e68&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DetailsSection.vue?vue&type=style&index=0&id=1ab46e68&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./DetailsSection.vue?vue&type=template&id=1ab46e68&scoped=true&\"\nimport script from \"./DetailsSection.vue?vue&type=script&lang=js&\"\nexport * from \"./DetailsSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DetailsSection.vue?vue&type=style&index=0&id=1ab46e68&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1ab46e68\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('AccountPropertySection',_vm._b({attrs:{\"placeholder\":_vm.t('settings', 'Your full name'),\"is-editable\":_vm.displayNameChangeSupported,\"on-validate\":_vm.onValidate,\"on-save\":_vm.onSave}},'AccountPropertySection',_vm.displayName,false,true))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :scope.sync=\"scope\"\n\t\t\t:readable.sync=\"readable\"\n\t\t\t:input-id=\"inputId\"\n\t\t\t:is-editable=\"isEditable\" />\n\n\t\t<div v-if=\"isEditable\" class=\"property\">\n\t\t\t<textarea v-if=\"multiLine\"\n\t\t\t\t:id=\"inputId\"\n\t\t\t\t:placeholder=\"placeholder\"\n\t\t\t\t:value=\"value\"\n\t\t\t\trows=\"8\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\tautocomplete=\"off\"\n\t\t\t\tautocorrect=\"off\"\n\t\t\t\t@input=\"onPropertyChange\" />\n\t\t\t<input v-else\n\t\t\t\tref=\"input\"\n\t\t\t\t:id=\"inputId\"\n\t\t\t\t:placeholder=\"placeholder\"\n\t\t\t\t:type=\"type\"\n\t\t\t\t:value=\"value\"\n\t\t\t\t:aria-describedby=\"helperText ? `${name}-helper-text` : ''\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\tautocomplete=\"on\"\n\t\t\t\tautocorrect=\"off\"\n\t\t\t\t@input=\"onPropertyChange\">\n\n\t\t\t<div class=\"property__actions-container\">\n\t\t\t\t<transition name=\"fade\">\n\t\t\t\t\t<Check v-if=\"showCheckmarkIcon\" :size=\"20\" />\n\t\t\t\t\t<AlertOctagon v-else-if=\"showErrorIcon\" :size=\"20\" />\n\t\t\t\t</transition>\n\t\t\t</div>\n\t\t</div>\n\t\t<span v-else>\n\t\t\t{{ value || t('settings', 'No {property} set', { property: readable.toLocaleLowerCase() }) }}\n\t\t</span>\n\n\t\t<p v-if=\"helperText\"\n\t\t\t:id=\"`${name}-helper-text`\"\n\t\t\tclass=\"property__helper-text-message property__helper-text-message--error\">\n\t\t\t<AlertCircle class=\"property__helper-text-message__icon\" :size=\"18\" />\n\t\t\t{{ helperText }}\n\t\t</p>\n\t</section>\n</template>\n\n<script>\nimport debounce from 'debounce'\n\nimport AlertCircle from 'vue-material-design-icons/AlertCircleOutline.vue'\nimport AlertOctagon from 'vue-material-design-icons/AlertOctagon.vue'\nimport Check from 'vue-material-design-icons/Check.vue'\n\nimport HeaderBar from '../shared/HeaderBar.vue'\n\nimport { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService.js'\nimport { handleError } from '../../../utils/handlers.js'\n\nexport default {\n\tname: 'AccountPropertySection',\n\n\tcomponents: {\n\t\tAlertCircle,\n\t\tAlertOctagon,\n\t\tCheck,\n\t\tHeaderBar,\n\t},\n\n\tprops: {\n\t\tname: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tscope: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\treadable: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tplaceholder: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\ttype: {\n\t\t\ttype: String,\n\t\t\tdefault: 'text',\n\t\t},\n\t\tisEditable: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tmultiLine: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tonValidate: {\n\t\t\ttype: Function,\n\t\t\tdefault: null,\n\t\t},\n\t\tonSave: {\n\t\t\ttype: Function,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialValue: this.value,\n\t\t\thelperText: null,\n\t\t\tshowCheckmarkIcon: false,\n\t\t\tshowErrorIcon: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tinputId() {\n\t\t\treturn `account-property-${this.name}`\n\t\t},\n\t},\n\n\tmethods: {\n\t\tonPropertyChange(e) {\n\t\t\tthis.$emit('update:value', e.target.value)\n\t\t\tthis.debouncePropertyChange(e.target.value.trim())\n\t\t},\n\n\t\tdebouncePropertyChange: debounce(async function(value) {\n\t\t\tthis.helperText = null\n\t\t\tif (this.$refs.input && this.$refs.input.validationMessage) {\n\t\t\t\tthis.helperText = this.$refs.input.validationMessage\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (this.onValidate && !this.onValidate(value)) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tawait this.updateProperty(value)\n\t\t}, 500),\n\n\t\tasync updateProperty(value) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountProperty(\n\t\t\t\t\tthis.name,\n\t\t\t\t\tvalue,\n\t\t\t\t)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tvalue,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update {property}', { property: this.readable.toLocaleLowerCase() }),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ value, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\tthis.initialValue = value\n\t\t\t\tif (this.onSave) {\n\t\t\t\t\tthis.onSave(value)\n\t\t\t\t}\n\t\t\t\tthis.showCheckmarkIcon = true\n\t\t\t\tsetTimeout(() => { this.showCheckmarkIcon = false }, 2000)\n\t\t\t} else {\n\t\t\t\tthis.$emit('update:value', this.initialValue)\n\t\t\t\thandleError(error, errorMessage)\n\t\t\t\tthis.showErrorIcon = true\n\t\t\t\tsetTimeout(() => { this.showErrorIcon = false }, 2000)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n\n\t.property {\n\t\tdisplay: grid;\n\t\talign-items: center;\n\n\t\ttextarea {\n\t\t\tresize: vertical;\n\t\t\tgrid-area: 1 / 1;\n\t\t\twidth: 100%;\n\t\t}\n\n\t\tinput {\n\t\t\tgrid-area: 1 / 1;\n\t\t\twidth: 100%;\n\t\t}\n\n\t\t.property__actions-container {\n\t\t\tgrid-area: 1 / 1;\n\t\t\tjustify-self: flex-end;\n\t\t\talign-self: flex-end;\n\t\t\theight: 30px;\n\n\t\t\tdisplay: flex;\n\t\t\tgap: 0 2px;\n\t\t\tmargin-right: 5px;\n\t\t\tmargin-bottom: 5px;\n\t\t}\n\t}\n\n\t.property__helper-text-message {\n\t\tpadding: 4px 0;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\n\t\t&__icon {\n\t\t\tmargin-right: 8px;\n\t\t\talign-self: start;\n\t\t\tmargin-top: 4px;\n\t\t}\n\n\t\t&--error {\n\t\t\tcolor: var(--color-error);\n\t\t}\n\t}\n\n\t.fade-enter,\n\t.fade-leave-to {\n\t\topacity: 0;\n\t}\n\n\t.fade-enter-active {\n\t\ttransition: opacity 200ms ease-out;\n\t}\n\n\t.fade-leave-active {\n\t\ttransition: opacity 300ms ease-out;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AccountPropertySection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AccountPropertySection.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AccountPropertySection.vue?vue&type=style&index=0&id=6eb7d8e0&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AccountPropertySection.vue?vue&type=style&index=0&id=6eb7d8e0&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AccountPropertySection.vue?vue&type=template&id=6eb7d8e0&scoped=true&\"\nimport script from \"./AccountPropertySection.vue?vue&type=script&lang=js&\"\nexport * from \"./AccountPropertySection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AccountPropertySection.vue?vue&type=style&index=0&id=6eb7d8e0&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 \"6eb7d8e0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',[_c('HeaderBar',{attrs:{\"scope\":_vm.scope,\"readable\":_vm.readable,\"input-id\":_vm.inputId,\"is-editable\":_vm.isEditable},on:{\"update:scope\":function($event){_vm.scope=$event},\"update:readable\":function($event){_vm.readable=$event}}}),_vm._v(\" \"),(_vm.isEditable)?_c('div',{staticClass:\"property\"},[(_vm.multiLine)?_c('textarea',{attrs:{\"id\":_vm.inputId,\"placeholder\":_vm.placeholder,\"rows\":\"8\",\"autocapitalize\":\"none\",\"autocomplete\":\"off\",\"autocorrect\":\"off\"},domProps:{\"value\":_vm.value},on:{\"input\":_vm.onPropertyChange}}):_c('input',{ref:\"input\",attrs:{\"id\":_vm.inputId,\"placeholder\":_vm.placeholder,\"type\":_vm.type,\"aria-describedby\":_vm.helperText ? `${_vm.name}-helper-text` : '',\"autocapitalize\":\"none\",\"autocomplete\":\"on\",\"autocorrect\":\"off\"},domProps:{\"value\":_vm.value},on:{\"input\":_vm.onPropertyChange}}),_vm._v(\" \"),_c('div',{staticClass:\"property__actions-container\"},[_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.showCheckmarkIcon)?_c('Check',{attrs:{\"size\":20}}):(_vm.showErrorIcon)?_c('AlertOctagon',{attrs:{\"size\":20}}):_vm._e()],1)],1)]):_c('span',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.value || _vm.t('settings', 'No {property} set', { property: _vm.readable.toLocaleLowerCase() }))+\"\\n\\t\")]),_vm._v(\" \"),(_vm.helperText)?_c('p',{staticClass:\"property__helper-text-message property__helper-text-message--error\",attrs:{\"id\":`${_vm.name}-helper-text`}},[_c('AlertCircle',{staticClass:\"property__helper-text-message__icon\",attrs:{\"size\":18}}),_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.helperText)+\"\\n\\t\")],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<AccountPropertySection v-bind.sync=\"displayName\"\n\t\t:placeholder=\"t('settings', 'Your full name')\"\n\t\t:is-editable=\"displayNameChangeSupported\"\n\t\t:on-validate=\"onValidate\"\n\t\t:on-save=\"onSave\" />\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport { emit } from '@nextcloud/event-bus'\n\nimport AccountPropertySection from './shared/AccountPropertySection.vue'\n\nimport { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js'\n\nconst { displayName } = loadState('settings', 'personalInfoParameters', {})\nconst { displayNameChangeSupported } = loadState('settings', 'accountParameters', {})\n\nexport default {\n\tname: 'DisplayNameSection',\n\n\tcomponents: {\n\t\tAccountPropertySection,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tdisplayName: { ...displayName, readable: NAME_READABLE_ENUM[displayName.name] },\n\t\t\tdisplayNameChangeSupported,\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonValidate(value) {\n\t\t\treturn value !== ''\n\t\t},\n\n\t\tonSave(value) {\n\t\t\tif (oc_userconfig.avatar.generated) {\n\t\t\t\t// Update the avatar version so that avatar update handlers refresh correctly\n\t\t\t\toc_userconfig.avatar.version = Date.now()\n\t\t\t}\n\t\t\temit('settings:display-name:updated', value)\n\t\t},\n\t}\n}\n</script>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DisplayNameSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DisplayNameSection.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DisplayNameSection.vue?vue&type=template&id=8950c424&\"\nimport script from \"./DisplayNameSection.vue?vue&type=script&lang=js&\"\nexport * from \"./DisplayNameSection.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',[_c('HeaderBar',{attrs:{\"input-id\":_vm.inputId,\"readable\":_vm.primaryEmail.readable,\"handle-scope-change\":_vm.savePrimaryEmailScope,\"is-editable\":true,\"is-multi-value-supported\":true,\"is-valid-section\":_vm.isValidSection,\"scope\":_vm.primaryEmail.scope},on:{\"update:scope\":function($event){return _vm.$set(_vm.primaryEmail, \"scope\", $event)},\"add-additional\":_vm.onAddAdditionalEmail}}),_vm._v(\" \"),(_vm.displayNameChangeSupported)?[_c('Email',{attrs:{\"primary\":true,\"scope\":_vm.primaryEmail.scope,\"email\":_vm.primaryEmail.value,\"active-notification-email\":_vm.notificationEmail},on:{\"update:scope\":function($event){return _vm.$set(_vm.primaryEmail, \"scope\", $event)},\"update:email\":[function($event){return _vm.$set(_vm.primaryEmail, \"value\", $event)},_vm.onUpdateEmail],\"update:activeNotificationEmail\":function($event){_vm.notificationEmail=$event},\"update:active-notification-email\":function($event){_vm.notificationEmail=$event},\"update:notification-email\":_vm.onUpdateNotificationEmail}})]:_c('span',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.primaryEmail.value || _vm.t('settings', 'No email address set'))+\"\\n\\t\")]),_vm._v(\" \"),(_vm.additionalEmails.length)?[_c('em',{staticClass:\"additional-emails-label\"},[_vm._v(_vm._s(_vm.t('settings', 'Additional emails')))]),_vm._v(\" \"),_vm._l((_vm.additionalEmails),function(additionalEmail,index){return _c('Email',{key:additionalEmail.key,attrs:{\"index\":index,\"scope\":additionalEmail.scope,\"email\":additionalEmail.value,\"local-verification-state\":parseInt(additionalEmail.locallyVerified, 10),\"active-notification-email\":_vm.notificationEmail},on:{\"update:scope\":function($event){return _vm.$set(additionalEmail, \"scope\", $event)},\"update:email\":[function($event){return _vm.$set(additionalEmail, \"value\", $event)},_vm.onUpdateEmail],\"update:activeNotificationEmail\":function($event){_vm.notificationEmail=$event},\"update:active-notification-email\":function($event){_vm.notificationEmail=$event},\"update:notification-email\":_vm.onUpdateNotificationEmail,\"delete-additional-email\":function($event){return _vm.onDeleteAdditionalEmail(index)}}})})]:_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { confirmPassword } from '@nextcloud/password-confirmation'\nimport '@nextcloud/password-confirmation/dist/style.css'\n\nimport { ACCOUNT_PROPERTY_ENUM, SCOPE_SUFFIX } from '../../constants/AccountPropertyConstants.js'\n\n/**\n * Save the primary email of the user\n *\n * @param {string} email the primary email\n * @return {object}\n */\nexport const savePrimaryEmail = async (email) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: ACCOUNT_PROPERTY_ENUM.EMAIL,\n\t\tvalue: email,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save an additional email of the user\n *\n * Will be appended to the user's additional emails*\n *\n * @param {string} email the additional email\n * @return {object}\n */\nexport const saveAdditionalEmail = async (email) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION,\n\t\tvalue: email,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save the notification email of the user\n *\n * @param {string} email the notification email\n * @return {object}\n */\nexport const saveNotificationEmail = async (email) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: ACCOUNT_PROPERTY_ENUM.NOTIFICATION_EMAIL,\n\t\tvalue: email,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Remove an additional email of the user\n *\n * @param {string} email the additional email\n * @return {object}\n */\nexport const removeAdditionalEmail = async (email) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}/{collection}', { userId, collection: ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: email,\n\t\tvalue: '',\n\t})\n\n\treturn res.data\n}\n\n/**\n * Update an additional email of the user\n *\n * @param {string} prevEmail the additional email to be updated\n * @param {string} newEmail the new additional email\n * @return {object}\n */\nexport const updateAdditionalEmail = async (prevEmail, newEmail) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}/{collection}', { userId, collection: ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: prevEmail,\n\t\tvalue: newEmail,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save the federation scope for the primary email of the user\n *\n * @param {string} scope the federation scope\n * @return {object}\n */\nexport const savePrimaryEmailScope = async (scope) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: `${ACCOUNT_PROPERTY_ENUM.EMAIL}${SCOPE_SUFFIX}`,\n\t\tvalue: scope,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save the federation scope for the additional email of the user\n *\n * @param {string} email the additional email\n * @param {string} scope the federation scope\n * @return {object}\n */\nexport const saveAdditionalEmailScope = async (email, scope) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('cloud/users/{userId}/{collectionScope}', { userId, collectionScope: `${ACCOUNT_PROPERTY_ENUM.EMAIL_COLLECTION}${SCOPE_SUFFIX}` })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tkey: email,\n\t\tvalue: scope,\n\t})\n\n\treturn res.data\n}\n","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/*\n * Frontend validators, less strict than backend validators\n *\n * TODO add nice validation errors for Profile page settings modal\n */\n\nimport { VALIDATE_EMAIL_REGEX } from '../constants/AccountPropertyConstants.js'\n\n/**\n * Validate the email input\n *\n * Compliant with PHP core FILTER_VALIDATE_EMAIL validator*\n *\n * Reference implementation https://github.com/mpyw/FILTER_VALIDATE_EMAIL.js/blob/71e62ca48841d2246a1b531e7e84f5a01f15e615/src/index.ts*\n *\n * @param {string} input the input\n * @return {boolean}\n */\nexport function validateEmail(input) {\n\treturn typeof input === 'string'\n\t\t&& VALIDATE_EMAIL_REGEX.test(input)\n\t\t&& input.slice(-1) !== '\\n'\n\t\t&& input.length <= 320\n\t\t&& encodeURIComponent(input).replace(/%../g, 'x').length <= 320\n}\n\n/**\n * Validate the URL input\n *\n * @param {string} input the input\n * @return {boolean}\n */\nexport function validateUrl(input) {\n\ttry {\n\t\t// eslint-disable-next-line no-new\n\t\tnew URL(input)\n\t\treturn true\n\t} catch (e) {\n\t\treturn false\n\t}\n}\n\n/**\n * Validate the language input\n *\n * @param {object} input the input\n * @return {boolean}\n */\nexport function validateLanguage(input) {\n\treturn input.code !== ''\n\t\t&& input.name !== ''\n\t\t&& input.name !== undefined\n}\n\n/**\n * Validate the locale input\n *\n * @param {object} input the input\n * @return {boolean}\n */\nexport function validateLocale(input) {\n\treturn input.code !== ''\n\t\t&& input.name !== ''\n\t\t&& input.name !== undefined\n}\n\n/**\n * Validate boolean input\n *\n * @param {boolean} input the input\n * @return {boolean}\n */\nexport function validateBoolean(input) {\n\treturn typeof input === 'boolean'\n}\n","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div>\n\t\t<div class=\"email\">\n\t\t\t<input :id=\"inputId\"\n\t\t\t\tref=\"email\"\n\t\t\t\ttype=\"email\"\n\t\t\t\t:placeholder=\"inputPlaceholder\"\n\t\t\t\t:value=\"email\"\n\t\t\t\t:aria-describedby=\"helperText ? `${inputId}-helper-text` : ''\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\tautocomplete=\"on\"\n\t\t\t\tautocorrect=\"off\"\n\t\t\t\t@input=\"onEmailChange\">\n\n\t\t\t<div class=\"email__actions-container\">\n\t\t\t\t<transition name=\"fade\">\n\t\t\t\t\t<Check v-if=\"showCheckmarkIcon\" :size=\"20\" />\n\t\t\t\t\t<AlertOctagon v-else-if=\"showErrorIcon\" :size=\"20\" />\n\t\t\t\t</transition>\n\n\t\t\t\t<template v-if=\"!primary\">\n\t\t\t\t\t<FederationControl :readable=\"propertyReadable\"\n\t\t\t\t\t\t:additional=\"true\"\n\t\t\t\t\t\t:additional-value=\"email\"\n\t\t\t\t\t\t:disabled=\"federationDisabled\"\n\t\t\t\t\t\t:handle-additional-scope-change=\"saveAdditionalEmailScope\"\n\t\t\t\t\t\t:scope.sync=\"localScope\"\n\t\t\t\t\t\t@update:scope=\"onScopeChange\" />\n\t\t\t\t</template>\n\n\t\t\t\t<NcActions class=\"email__actions\"\n\t\t\t\t\t:aria-label=\"t('settings', 'Email options')\"\n\t\t\t\t\t:force-menu=\"true\">\n\t\t\t\t\t<NcActionButton :aria-label=\"deleteEmailLabel\"\n\t\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t\t:disabled=\"deleteDisabled\"\n\t\t\t\t\t\ticon=\"icon-delete\"\n\t\t\t\t\t\t@click.stop.prevent=\"deleteEmail\">\n\t\t\t\t\t\t{{ deleteEmailLabel }}\n\t\t\t\t\t</NcActionButton>\n\t\t\t\t\t<NcActionButton v-if=\"!primary || !isNotificationEmail\"\n\t\t\t\t\t\t:aria-label=\"setNotificationMailLabel\"\n\t\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t\t:disabled=\"setNotificationMailDisabled\"\n\t\t\t\t\t\ticon=\"icon-favorite\"\n\t\t\t\t\t\t@click.stop.prevent=\"setNotificationMail\">\n\t\t\t\t\t\t{{ setNotificationMailLabel }}\n\t\t\t\t\t</NcActionButton>\n\t\t\t\t</NcActions>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<p v-if=\"helperText\"\n\t\t\t:id=\"`${inputId}-helper-text`\"\n\t\t\tclass=\"email__helper-text-message email__helper-text-message--error\">\n\t\t\t<AlertCircle class=\"email__helper-text-message__icon\" :size=\"18\" />\n\t\t\t{{ helperText }}\n\t\t</p>\n\n\t\t<em v-if=\"isNotificationEmail\">\n\t\t\t{{ t('settings', 'Primary email for password reset and notifications') }}\n\t\t</em>\n\t</div>\n</template>\n\n<script>\nimport { NcActions, NcActionButton } from '@nextcloud/vue'\nimport AlertCircle from 'vue-material-design-icons/AlertCircleOutline.vue'\nimport AlertOctagon from 'vue-material-design-icons/AlertOctagon.vue'\nimport Check from 'vue-material-design-icons/Check.vue'\nimport debounce from 'debounce'\n\nimport FederationControl from '../shared/FederationControl.vue'\nimport { handleError } from '../../../utils/handlers.js'\n\nimport { ACCOUNT_PROPERTY_READABLE_ENUM, VERIFICATION_ENUM } from '../../../constants/AccountPropertyConstants.js'\nimport {\n\tremoveAdditionalEmail,\n\tsaveAdditionalEmail,\n\tsaveAdditionalEmailScope,\n\tsaveNotificationEmail,\n\tsavePrimaryEmail,\n\tupdateAdditionalEmail,\n} from '../../../service/PersonalInfo/EmailService.js'\nimport { validateEmail } from '../../../utils/validate.js'\n\nexport default {\n\tname: 'Email',\n\n\tcomponents: {\n\t\tNcActions,\n\t\tNcActionButton,\n\t\tAlertCircle,\n\t\tAlertOctagon,\n\t\tCheck,\n\t\tFederationControl,\n\t},\n\n\tprops: {\n\t\temail: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tindex: {\n\t\t\ttype: Number,\n\t\t\tdefault: 0,\n\t\t},\n\t\tprimary: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tscope: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tactiveNotificationEmail: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tlocalVerificationState: {\n\t\t\ttype: Number,\n\t\t\tdefault: VERIFICATION_ENUM.NOT_VERIFIED,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tpropertyReadable: ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL,\n\t\t\tinitialEmail: this.email,\n\t\t\tlocalScope: this.scope,\n\t\t\tsaveAdditionalEmailScope,\n\t\t\thelperText: null,\n\t\t\tshowCheckmarkIcon: false,\n\t\t\tshowErrorIcon: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tdeleteDisabled() {\n\t\t\tif (this.primary) {\n\t\t\t\t// Disable for empty primary email as there is nothing to delete\n\t\t\t\t// OR when initialEmail (reflects server state) and email (current input) are not the same\n\t\t\t\treturn this.email === '' || this.initialEmail !== this.email\n\t\t\t} else if (this.initialEmail !== '') {\n\t\t\t\treturn this.initialEmail !== this.email\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\n\t\tdeleteEmailLabel() {\n\t\t\tif (this.primary) {\n\t\t\t\treturn t('settings', 'Remove primary email')\n\t\t\t}\n\t\t\treturn t('settings', 'Delete email')\n\t\t},\n\n\t setNotificationMailDisabled() {\n\t\t\treturn !this.primary && this.localVerificationState !== VERIFICATION_ENUM.VERIFIED\n\t\t},\n\n\t setNotificationMailLabel() {\n\t\t\tif (this.isNotificationEmail) {\n\t\t\t\treturn t('settings', 'Unset as primary email')\n\t\t\t} else if (!this.primary && this.localVerificationState !== VERIFICATION_ENUM.VERIFIED) {\n\t\t\t\treturn t('settings', 'This address is not confirmed')\n\t\t\t}\n\t\t\treturn t('settings', 'Set as primary email')\n\t\t},\n\n\t\tfederationDisabled() {\n\t\t\treturn !this.initialEmail\n\t\t},\n\n\t\tinputId() {\n\t\t\tif (this.primary) {\n\t\t\t\treturn 'email'\n\t\t\t}\n\t\t\treturn `email-${this.index}`\n\t\t},\n\n\t\tinputPlaceholder() {\n\t\t\tif (this.primary) {\n\t\t\t\treturn t('settings', 'Your email address')\n\t\t\t}\n\t\t\treturn t('settings', 'Additional email address {index}', { index: this.index + 1 })\n\t\t},\n\n\t\tisNotificationEmail() {\n\t\t\treturn (this.email && this.email === this.activeNotificationEmail)\n\t\t\t\t|| (this.primary && this.activeNotificationEmail === '')\n\t\t},\n\t},\n\n\tmounted() {\n\t\tif (!this.primary && this.initialEmail === '') {\n\t\t\t// $nextTick is needed here, otherwise it may not always work https://stackoverflow.com/questions/51922767/autofocus-input-on-mount-vue-ios/63485725#63485725\n\t\t\tthis.$nextTick(() => this.$refs.email?.focus())\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonEmailChange(e) {\n\t\t\tthis.$emit('update:email', e.target.value)\n\t\t\tthis.debounceEmailChange(e.target.value.trim())\n\t\t},\n\n\t\tdebounceEmailChange: debounce(async function(email) {\n\t\t\tthis.helperText = null\n\t\t\tif (this.$refs.email?.validationMessage) {\n\t\t\t\tthis.helperText = this.$refs.email.validationMessage\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (validateEmail(email) || email === '') {\n\t\t\t\tif (this.primary) {\n\t\t\t\t\tawait this.updatePrimaryEmail(email)\n\t\t\t\t} else {\n\t\t\t\t\tif (email) {\n\t\t\t\t\t\tif (this.initialEmail === '') {\n\t\t\t\t\t\t\tawait this.addAdditionalEmail(email)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tawait this.updateAdditionalEmail(email)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}, 500),\n\n\t\tasync deleteEmail() {\n\t\t\tif (this.primary) {\n\t\t\t\tthis.$emit('update:email', '')\n\t\t\t\tawait this.updatePrimaryEmail('')\n\t\t\t} else {\n\t\t\t\tawait this.deleteAdditionalEmail()\n\t\t\t}\n\t\t},\n\n\t\tasync updatePrimaryEmail(email) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryEmail(email)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\temail,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tif (email === '') {\n\t\t\t\t\tthis.handleResponse({\n\t\t\t\t\t\terrorMessage: t('settings', 'Unable to delete primary email address'),\n\t\t\t\t\t\terror: e,\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\tthis.handleResponse({\n\t\t\t\t\t\terrorMessage: t('settings', 'Unable to update primary email address'),\n\t\t\t\t\t\terror: e,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tasync addAdditionalEmail(email) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await saveAdditionalEmail(email)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\temail,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to add additional email address'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\tasync setNotificationMail() {\n\t\t try {\n\t\t\t const newNotificationMailValue = (this.primary || this.isNotificationEmail) ? '' : this.initialEmail\n\t\t\t const responseData = await saveNotificationEmail(newNotificationMailValue)\n\t\t\t this.handleResponse({\n\t\t\t\t notificationEmail: newNotificationMailValue,\n\t\t\t\t status: responseData.ocs?.meta?.status,\n\t\t\t })\n\t\t } catch (e) {\n\t\t\t this.handleResponse({\n\t\t\t\t errorMessage: 'Unable to choose this email for notifications',\n\t\t\t\t error: e,\n\t\t\t })\n\t\t }\n\t\t},\n\n\t\tasync updateAdditionalEmail(email) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await updateAdditionalEmail(this.initialEmail, email)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\temail,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update additional email address'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\tasync deleteAdditionalEmail() {\n\t\t\ttry {\n\t\t\t\tconst responseData = await removeAdditionalEmail(this.initialEmail)\n\t\t\t\tthis.handleDeleteAdditionalEmail(responseData.ocs?.meta?.status)\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to delete additional email address'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleDeleteAdditionalEmail(status) {\n\t\t\tif (status === 'ok') {\n\t\t\t\tthis.$emit('delete-additional-email')\n\t\t\t} else {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to delete additional email address'),\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ email, notificationEmail, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\t// Ensure that local state reflects server state\n\t\t\t\tif (email) {\n\t\t\t\t\tthis.initialEmail = email\n\t\t\t\t} else if (notificationEmail !== undefined) {\n\t\t\t\t\tthis.$emit('update:notification-email', notificationEmail)\n\t\t\t\t}\n\t\t\t\tthis.showCheckmarkIcon = true\n\t\t\t\tsetTimeout(() => { this.showCheckmarkIcon = false }, 2000)\n\t\t\t} else {\n\t\t\t\thandleError(error, errorMessage)\n\t\t\t\tthis.showErrorIcon = true\n\t\t\t\tsetTimeout(() => { this.showErrorIcon = false }, 2000)\n\t\t\t}\n\t\t},\n\n\t\tonScopeChange(scope) {\n\t\t\tthis.$emit('update:scope', scope)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.email {\n\tdisplay: grid;\n\talign-items: center;\n\n\tinput {\n\t\tgrid-area: 1 / 1;\n\t\twidth: 100%;\n\t}\n\n\t.email__actions-container {\n\t\tgrid-area: 1 / 1;\n\t\tjustify-self: flex-end;\n\t\theight: 30px;\n\n\t\tdisplay: flex;\n\t\tgap: 0 2px;\n\t\tmargin-right: 5px;\n\n\t\t.email__actions {\n\t\t\topacity: 0.4 !important;\n\n\t\t\t&:hover,\n\t\t\t&:focus,\n\t\t\t&:active {\n\t\t\t\topacity: 0.8 !important;\n\t\t\t}\n\n\t\t\t&::v-deep button {\n\t\t\t\theight: 30px !important;\n\t\t\t\tmin-height: 30px !important;\n\t\t\t\twidth: 30px !important;\n\t\t\t\tmin-width: 30px !important;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__helper-text-message {\n\t\tpadding: 4px 0;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\n\t\t&__icon {\n\t\t\tmargin-right: 8px;\n\t\t\talign-self: start;\n\t\t\tmargin-top: 4px;\n\t\t}\n\n\t\t&--error {\n\t\t\tcolor: var(--color-error);\n\t\t}\n\t}\n}\n\n.fade-enter,\n.fade-leave-to {\n\topacity: 0;\n}\n\n.fade-enter-active {\n\ttransition: opacity 200ms ease-out;\n}\n\n.fade-leave-active {\n\ttransition: opacity 300ms ease-out;\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Email.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Email.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Email.vue?vue&type=style&index=0&id=5ff85d38&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Email.vue?vue&type=style&index=0&id=5ff85d38&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Email.vue?vue&type=template&id=5ff85d38&scoped=true&\"\nimport script from \"./Email.vue?vue&type=script&lang=js&\"\nexport * from \"./Email.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Email.vue?vue&type=style&index=0&id=5ff85d38&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 \"5ff85d38\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{staticClass:\"email\"},[_c('input',{ref:\"email\",attrs:{\"id\":_vm.inputId,\"type\":\"email\",\"placeholder\":_vm.inputPlaceholder,\"aria-describedby\":_vm.helperText ? `${_vm.inputId}-helper-text` : '',\"autocapitalize\":\"none\",\"autocomplete\":\"on\",\"autocorrect\":\"off\"},domProps:{\"value\":_vm.email},on:{\"input\":_vm.onEmailChange}}),_vm._v(\" \"),_c('div',{staticClass:\"email__actions-container\"},[_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.showCheckmarkIcon)?_c('Check',{attrs:{\"size\":20}}):(_vm.showErrorIcon)?_c('AlertOctagon',{attrs:{\"size\":20}}):_vm._e()],1),_vm._v(\" \"),(!_vm.primary)?[_c('FederationControl',{attrs:{\"readable\":_vm.propertyReadable,\"additional\":true,\"additional-value\":_vm.email,\"disabled\":_vm.federationDisabled,\"handle-additional-scope-change\":_vm.saveAdditionalEmailScope,\"scope\":_vm.localScope},on:{\"update:scope\":[function($event){_vm.localScope=$event},_vm.onScopeChange]}})]:_vm._e(),_vm._v(\" \"),_c('NcActions',{staticClass:\"email__actions\",attrs:{\"aria-label\":_vm.t('settings', 'Email options'),\"force-menu\":true}},[_c('NcActionButton',{attrs:{\"aria-label\":_vm.deleteEmailLabel,\"close-after-click\":true,\"disabled\":_vm.deleteDisabled,\"icon\":\"icon-delete\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.deleteEmail.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.deleteEmailLabel)+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(!_vm.primary || !_vm.isNotificationEmail)?_c('NcActionButton',{attrs:{\"aria-label\":_vm.setNotificationMailLabel,\"close-after-click\":true,\"disabled\":_vm.setNotificationMailDisabled,\"icon\":\"icon-favorite\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.setNotificationMail.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.setNotificationMailLabel)+\"\\n\\t\\t\\t\\t\")]):_vm._e()],1)],2)]),_vm._v(\" \"),(_vm.helperText)?_c('p',{staticClass:\"email__helper-text-message email__helper-text-message--error\",attrs:{\"id\":`${_vm.inputId}-helper-text`}},[_c('AlertCircle',{staticClass:\"email__helper-text-message__icon\",attrs:{\"size\":18}}),_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.helperText)+\"\\n\\t\")],1):_vm._e(),_vm._v(\" \"),(_vm.isNotificationEmail)?_c('em',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Primary email for password reset and notifications'))+\"\\n\\t\")]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :input-id=\"inputId\"\n\t\t\t:readable=\"primaryEmail.readable\"\n\t\t\t:handle-scope-change=\"savePrimaryEmailScope\"\n\t\t\t:is-editable=\"true\"\n\t\t\t:is-multi-value-supported=\"true\"\n\t\t\t:is-valid-section=\"isValidSection\"\n\t\t\t:scope.sync=\"primaryEmail.scope\"\n\t\t\t@add-additional=\"onAddAdditionalEmail\" />\n\n\t\t<template v-if=\"displayNameChangeSupported\">\n\t\t\t<Email :primary=\"true\"\n\t\t\t\t:scope.sync=\"primaryEmail.scope\"\n\t\t\t\t:email.sync=\"primaryEmail.value\"\n\t\t\t\t:active-notification-email.sync=\"notificationEmail\"\n\t\t\t\t@update:email=\"onUpdateEmail\"\n\t\t\t\t@update:notification-email=\"onUpdateNotificationEmail\" />\n\t\t</template>\n\n\t\t<span v-else>\n\t\t\t{{ primaryEmail.value || t('settings', 'No email address set') }}\n\t\t</span>\n\n\t\t<template v-if=\"additionalEmails.length\">\n\t\t\t<em class=\"additional-emails-label\">{{ t('settings', 'Additional emails') }}</em>\n\t\t\t<!-- TODO use unique key for additional email when uniqueness can be guaranteed, see https://github.com/nextcloud/server/issues/26866 -->\n\t\t\t<Email v-for=\"(additionalEmail, index) in additionalEmails\"\n\t\t\t\t:key=\"additionalEmail.key\"\n\t\t\t\t:index=\"index\"\n\t\t\t\t:scope.sync=\"additionalEmail.scope\"\n\t\t\t\t:email.sync=\"additionalEmail.value\"\n\t\t\t\t:local-verification-state=\"parseInt(additionalEmail.locallyVerified, 10)\"\n\t\t\t\t:active-notification-email.sync=\"notificationEmail\"\n\t\t\t\t@update:email=\"onUpdateEmail\"\n\t\t\t\t@update:notification-email=\"onUpdateNotificationEmail\"\n\t\t\t\t@delete-additional-email=\"onDeleteAdditionalEmail(index)\" />\n\t\t</template>\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport Email from './Email.vue'\nimport HeaderBar from '../shared/HeaderBar.vue'\n\nimport { ACCOUNT_PROPERTY_READABLE_ENUM, DEFAULT_ADDITIONAL_EMAIL_SCOPE, NAME_READABLE_ENUM } from '../../../constants/AccountPropertyConstants.js'\nimport { savePrimaryEmail, savePrimaryEmailScope, removeAdditionalEmail } from '../../../service/PersonalInfo/EmailService.js'\nimport { validateEmail } from '../../../utils/validate.js'\nimport { handleError } from '../../../utils/handlers.js'\n\nconst { emailMap: { additionalEmails, primaryEmail, notificationEmail } } = loadState('settings', 'personalInfoParameters', {})\nconst { displayNameChangeSupported } = loadState('settings', 'accountParameters', {})\n\nexport default {\n\tname: 'EmailSection',\n\n\tcomponents: {\n\t\tHeaderBar,\n\t\tEmail,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\taccountProperty: ACCOUNT_PROPERTY_READABLE_ENUM.EMAIL,\n\t\t\tadditionalEmails: additionalEmails.map(properties => ({ ...properties, key: this.generateUniqueKey() })),\n\t\t\tdisplayNameChangeSupported,\n\t\t\tprimaryEmail: { ...primaryEmail, readable: NAME_READABLE_ENUM[primaryEmail.name] },\n\t\t\tsavePrimaryEmailScope,\n\t\t\tnotificationEmail,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tfirstAdditionalEmail() {\n\t\t\tif (this.additionalEmails.length) {\n\t\t\t\treturn this.additionalEmails[0].value\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\tinputId() {\n\t\t\treturn `account-property-${this.primaryEmail.name}`\n\t\t},\n\n\t\tisValidSection() {\n\t\t\treturn validateEmail(this.primaryEmail.value)\n\t\t\t\t&& this.additionalEmails.map(({ value }) => value).every(validateEmail)\n\t\t},\n\n\t\tprimaryEmailValue: {\n\t\t\tget() {\n\t\t\t\treturn this.primaryEmail.value\n\t\t\t},\n\t\t\tset(value) {\n\t\t\t\tthis.primaryEmail.value = value\n\t\t\t},\n\t\t},\n\t},\n\n\tmethods: {\n\t\tonAddAdditionalEmail() {\n\t\t\tif (this.isValidSection) {\n\t\t\t\tthis.additionalEmails.push({ value: '', scope: DEFAULT_ADDITIONAL_EMAIL_SCOPE, key: this.generateUniqueKey() })\n\t\t\t}\n\t\t},\n\n\t\tonDeleteAdditionalEmail(index) {\n\t\t\tthis.$delete(this.additionalEmails, index)\n\t\t},\n\n\t\tasync onUpdateEmail() {\n\t\t\tif (this.primaryEmailValue === '' && this.firstAdditionalEmail) {\n\t\t\t\tconst deletedEmail = this.firstAdditionalEmail\n\t\t\t\tawait this.deleteFirstAdditionalEmail()\n\t\t\t\tthis.primaryEmailValue = deletedEmail\n\t\t\t\tawait this.updatePrimaryEmail()\n\t\t\t}\n\t\t},\n\n\t\tasync onUpdateNotificationEmail(email) {\n\t\t\tthis.notificationEmail = email\n\t\t},\n\n\t\tasync updatePrimaryEmail() {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryEmail(this.primaryEmailValue)\n\t\t\t\tthis.handleResponse(responseData.ocs?.meta?.status)\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse(\n\t\t\t\t\t'error',\n\t\t\t\t\tt('settings', 'Unable to update primary email address'),\n\t\t\t\t\te\n\t\t\t\t)\n\t\t\t}\n\t\t},\n\n\t\tasync deleteFirstAdditionalEmail() {\n\t\t\ttry {\n\t\t\t\tconst responseData = await removeAdditionalEmail(this.firstAdditionalEmail)\n\t\t\t\tthis.handleDeleteFirstAdditionalEmail(responseData.ocs?.meta?.status)\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse(\n\t\t\t\t\t'error',\n\t\t\t\t\tt('settings', 'Unable to delete additional email address'),\n\t\t\t\t\te\n\t\t\t\t)\n\t\t\t}\n\t\t},\n\n\t\thandleDeleteFirstAdditionalEmail(status) {\n\t\t\tif (status === 'ok') {\n\t\t\t\tthis.$delete(this.additionalEmails, 0)\n\t\t\t} else {\n\t\t\t\tthis.handleResponse(\n\t\t\t\t\t'error',\n\t\t\t\t\tt('settings', 'Unable to delete additional email address'),\n\t\t\t\t\t{}\n\t\t\t\t)\n\t\t\t}\n\t\t},\n\n\t\thandleResponse(status, errorMessage, error) {\n\t\t\tif (status !== 'ok') {\n\t\t\t\thandleError(error, errorMessage)\n\t\t\t}\n\t\t},\n\n\t\tgenerateUniqueKey() {\n\t\t\treturn Math.random().toString(36).substring(2)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n\n\t.additional-emails-label {\n\t\tdisplay: block;\n\t\tmargin-top: 16px;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmailSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmailSection.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmailSection.vue?vue&type=style&index=0&id=46c7eb7e&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmailSection.vue?vue&type=style&index=0&id=46c7eb7e&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./EmailSection.vue?vue&type=template&id=46c7eb7e&scoped=true&\"\nimport script from \"./EmailSection.vue?vue&type=script&lang=js&\"\nexport * from \"./EmailSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./EmailSection.vue?vue&type=style&index=0&id=46c7eb7e&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"46c7eb7e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('AccountPropertySection',_vm._b({attrs:{\"placeholder\":_vm.t('settings', 'Your phone number'),\"type\":\"tel\",\"on-validate\":_vm.onValidate}},'AccountPropertySection',_vm.phone,false,true))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<AccountPropertySection v-bind.sync=\"phone\"\n\t\t:placeholder=\"t('settings', 'Your phone number')\"\n\t\ttype=\"tel\"\n\t\t:on-validate=\"onValidate\" />\n</template>\n\n<script>\nimport { isValidPhoneNumber } from 'libphonenumber-js'\nimport { loadState } from '@nextcloud/initial-state'\n\nimport AccountPropertySection from './shared/AccountPropertySection.vue'\n\nimport { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js'\n\nconst {\n\tdefaultPhoneRegion,\n\tphone,\n} = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'PhoneSection',\n\n\tcomponents: {\n\t\tAccountPropertySection,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tphone: { ...phone, readable: NAME_READABLE_ENUM[phone.name] },\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonValidate(value) {\n\t\t\tif (defaultPhoneRegion) {\n\t\t\t\treturn isValidPhoneNumber(value, defaultPhoneRegion)\n\t\t\t}\n\t\t\treturn isValidPhoneNumber(value)\n\t\t},\n\t},\n}\n</script>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PhoneSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PhoneSection.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PhoneSection.vue?vue&type=template&id=4a6cc7c9&\"\nimport script from \"./PhoneSection.vue?vue&type=script&lang=js&\"\nexport * from \"./PhoneSection.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<AccountPropertySection v-bind.sync=\"location\"\n\t\t:placeholder=\"t('settings', 'Your location')\" />\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport AccountPropertySection from './shared/AccountPropertySection.vue'\n\nimport { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js'\n\nconst { location } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'LocationSection',\n\n\tcomponents: {\n\t\tAccountPropertySection,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tlocation: { ...location, readable: NAME_READABLE_ENUM[location.name] },\n\t\t}\n\t},\n}\n</script>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocationSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocationSection.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LocationSection.vue?vue&type=template&id=3b6d0ee7&\"\nimport script from \"./LocationSection.vue?vue&type=script&lang=js&\"\nexport * from \"./LocationSection.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('AccountPropertySection',_vm._b({attrs:{\"placeholder\":_vm.t('settings', 'Your location')}},'AccountPropertySection',_vm.location,false,true))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<AccountPropertySection v-bind.sync=\"website\"\n\t\t:placeholder=\"t('settings', 'Your website')\"\n\t\ttype=\"url\"\n\t\t:on-validate=\"onValidate\" />\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport AccountPropertySection from './shared/AccountPropertySection.vue'\n\nimport { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js'\nimport { validateUrl } from '../../utils/validate.js'\n\nconst { website } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'WebsiteSection',\n\n\tcomponents: {\n\t\tAccountPropertySection,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\twebsite: { ...website, readable: NAME_READABLE_ENUM[website.name] },\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonValidate(value) {\n\t\t\treturn validateUrl(value)\n\t\t},\n\t},\n}\n</script>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebsiteSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebsiteSection.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./WebsiteSection.vue?vue&type=template&id=b18d14ae&\"\nimport script from \"./WebsiteSection.vue?vue&type=script&lang=js&\"\nexport * from \"./WebsiteSection.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('AccountPropertySection',_vm._b({attrs:{\"placeholder\":_vm.t('settings', 'Your website'),\"type\":\"url\",\"on-validate\":_vm.onValidate}},'AccountPropertySection',_vm.website,false,true))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<AccountPropertySection v-bind.sync=\"twitter\"\n\t\t:placeholder=\"t('settings', 'Your Twitter handle')\" />\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport AccountPropertySection from './shared/AccountPropertySection.vue'\n\nimport { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js'\n\nconst { twitter } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'TwitterSection',\n\n\tcomponents: {\n\t\tAccountPropertySection,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\ttwitter: { ...twitter, readable: NAME_READABLE_ENUM[twitter.name] },\n\t\t}\n\t},\n}\n</script>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TwitterSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TwitterSection.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TwitterSection.vue?vue&type=template&id=203feaef&\"\nimport script from \"./TwitterSection.vue?vue&type=script&lang=js&\"\nexport * from \"./TwitterSection.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('AccountPropertySection',_vm._b({attrs:{\"placeholder\":_vm.t('settings', 'Your Twitter handle')}},'AccountPropertySection',_vm.twitter,false,true))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<AccountPropertySection v-bind.sync=\"fediverse\"\n\t\t:placeholder=\"t('settings', 'Your handle')\" />\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport AccountPropertySection from './shared/AccountPropertySection.vue'\n\nimport { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js'\n\nconst { fediverse } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'FediverseSection',\n\n\tcomponents: {\n\t\tAccountPropertySection,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tfediverse: { ...fediverse, readable: NAME_READABLE_ENUM[fediverse.name] },\n\t\t}\n\t},\n}\n</script>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FediverseSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FediverseSection.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./FediverseSection.vue?vue&type=template&id=78433a38&\"\nimport script from \"./FediverseSection.vue?vue&type=script&lang=js&\"\nexport * from \"./FediverseSection.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('AccountPropertySection',_vm._b({attrs:{\"placeholder\":_vm.t('settings', 'Your handle')}},'AccountPropertySection',_vm.fediverse,false,true))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Language.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Language.vue?vue&type=script&lang=js&\"","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div class=\"language\">\n\t\t<select :id=\"inputId\"\n\t\t\t:placeholder=\"t('settings', 'Language')\"\n\t\t\t@change=\"onLanguageChange\">\n\t\t\t<option v-for=\"commonLanguage in commonLanguages\"\n\t\t\t\t:key=\"commonLanguage.code\"\n\t\t\t\t:selected=\"language.code === commonLanguage.code\"\n\t\t\t\t:value=\"commonLanguage.code\">\n\t\t\t\t{{ commonLanguage.name }}\n\t\t\t</option>\n\t\t\t<option disabled>\n\t\t\t\t──────────\n\t\t\t</option>\n\t\t\t<option v-for=\"otherLanguage in otherLanguages\"\n\t\t\t\t:key=\"otherLanguage.code\"\n\t\t\t\t:selected=\"language.code === otherLanguage.code\"\n\t\t\t\t:value=\"otherLanguage.code\">\n\t\t\t\t{{ otherLanguage.name }}\n\t\t\t</option>\n\t\t</select>\n\n\t\t<a href=\"https://www.transifex.com/nextcloud/nextcloud/\"\n\t\t\ttarget=\"_blank\"\n\t\t\trel=\"noreferrer noopener\">\n\t\t\t<em>{{ t('settings', 'Help translate') }}</em>\n\t\t</a>\n\t</div>\n</template>\n\n<script>\nimport { ACCOUNT_SETTING_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants.js'\nimport { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService.js'\nimport { validateLanguage } from '../../../utils/validate.js'\nimport { handleError } from '../../../utils/handlers.js'\n\nexport default {\n\tname: 'Language',\n\n\tprops: {\n\t\tinputId: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\tcommonLanguages: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\totherLanguages: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\tlanguage: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialLanguage: this.language,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tallLanguages() {\n\t\t\treturn Object.freeze(\n\t\t\t\t[...this.commonLanguages, ...this.otherLanguages]\n\t\t\t\t\t.reduce((acc, { code, name }) => ({ ...acc, [code]: name }), {})\n\t\t\t)\n\t\t},\n\t},\n\n\tmethods: {\n\t\tasync onLanguageChange(e) {\n\t\t\tconst language = this.constructLanguage(e.target.value)\n\t\t\tthis.$emit('update:language', language)\n\n\t\t\tif (validateLanguage(language)) {\n\t\t\t\tawait this.updateLanguage(language)\n\t\t\t}\n\t\t},\n\n\t\tasync updateLanguage(language) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountProperty(ACCOUNT_SETTING_PROPERTY_ENUM.LANGUAGE, language.code)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tlanguage,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t\tthis.reloadPage()\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update language'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\tconstructLanguage(languageCode) {\n\t\t\treturn {\n\t\t\t\tcode: languageCode,\n\t\t\t\tname: this.allLanguages[languageCode],\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ language, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\t// Ensure that local state reflects server state\n\t\t\t\tthis.initialLanguage = language\n\t\t\t} else {\n\t\t\t\thandleError(error, errorMessage)\n\t\t\t}\n\t\t},\n\n\t\treloadPage() {\n\t\t\tlocation.reload()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.language {\n\tdisplay: grid;\n\n\tselect {\n\t\twidth: 100%;\n\t}\n\n\ta {\n\t\tcolor: var(--color-main-text);\n\t\ttext-decoration: none;\n\t\twidth: max-content;\n\t}\n}\n</style>\n","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Language.vue?vue&type=style&index=0&id=5c847b3a&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Language.vue?vue&type=style&index=0&id=5c847b3a&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Language.vue?vue&type=template&id=5c847b3a&scoped=true&\"\nimport script from \"./Language.vue?vue&type=script&lang=js&\"\nexport * from \"./Language.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Language.vue?vue&type=style&index=0&id=5c847b3a&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5c847b3a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"language\"},[_c('select',{attrs:{\"id\":_vm.inputId,\"placeholder\":_vm.t('settings', 'Language')},on:{\"change\":_vm.onLanguageChange}},[_vm._l((_vm.commonLanguages),function(commonLanguage){return _c('option',{key:commonLanguage.code,domProps:{\"selected\":_vm.language.code === commonLanguage.code,\"value\":commonLanguage.code}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(commonLanguage.name)+\"\\n\\t\\t\")])}),_vm._v(\" \"),_c('option',{attrs:{\"disabled\":\"\"}},[_vm._v(\"\\n\\t\\t\\t──────────\\n\\t\\t\")]),_vm._v(\" \"),_vm._l((_vm.otherLanguages),function(otherLanguage){return _c('option',{key:otherLanguage.code,domProps:{\"selected\":_vm.language.code === otherLanguage.code,\"value\":otherLanguage.code}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(otherLanguage.name)+\"\\n\\t\\t\")])})],2),_vm._v(\" \"),_c('a',{attrs:{\"href\":\"https://www.transifex.com/nextcloud/nextcloud/\",\"target\":\"_blank\",\"rel\":\"noreferrer noopener\"}},[_c('em',[_vm._v(_vm._s(_vm.t('settings', 'Help translate')))])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :input-id=\"inputId\"\n\t\t\t:readable=\"propertyReadable\" />\n\n\t\t<template v-if=\"isEditable\">\n\t\t\t<Language :input-id=\"inputId\"\n\t\t\t\t:common-languages=\"commonLanguages\"\n\t\t\t\t:other-languages=\"otherLanguages\"\n\t\t\t\t:language.sync=\"language\" />\n\t\t</template>\n\n\t\t<span v-else>\n\t\t\t{{ t('settings', 'No language set') }}\n\t\t</span>\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport Language from './Language.vue'\nimport HeaderBar from '../shared/HeaderBar.vue'\n\nimport { ACCOUNT_SETTING_PROPERTY_ENUM, ACCOUNT_SETTING_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants.js'\n\nconst { languageMap: { activeLanguage, commonLanguages, otherLanguages } } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'LanguageSection',\n\n\tcomponents: {\n\t\tLanguage,\n\t\tHeaderBar,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tpropertyReadable: ACCOUNT_SETTING_PROPERTY_READABLE_ENUM.LANGUAGE,\n\t\t\tcommonLanguages,\n\t\t\totherLanguages,\n\t\t\tlanguage: activeLanguage,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tinputId() {\n\t\t\treturn `account-setting-${ACCOUNT_SETTING_PROPERTY_ENUM.LANGUAGE}`\n\t\t},\n\n\t\tisEditable() {\n\t\t\treturn Boolean(this.language)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LanguageSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LanguageSection.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LanguageSection.vue?vue&type=style&index=0&id=92685b76&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LanguageSection.vue?vue&type=style&index=0&id=92685b76&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./LanguageSection.vue?vue&type=template&id=92685b76&scoped=true&\"\nimport script from \"./LanguageSection.vue?vue&type=script&lang=js&\"\nexport * from \"./LanguageSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LanguageSection.vue?vue&type=style&index=0&id=92685b76&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"92685b76\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',[_c('HeaderBar',{attrs:{\"input-id\":_vm.inputId,\"readable\":_vm.propertyReadable}}),_vm._v(\" \"),(_vm.isEditable)?[_c('Language',{attrs:{\"input-id\":_vm.inputId,\"common-languages\":_vm.commonLanguages,\"other-languages\":_vm.otherLanguages,\"language\":_vm.language},on:{\"update:language\":function($event){_vm.language=$event}}})]:_c('span',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'No language set'))+\"\\n\\t\")])],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',[_c('HeaderBar',{attrs:{\"input-id\":_vm.inputId,\"readable\":_vm.propertyReadable}}),_vm._v(\" \"),(_vm.isEditable)?[_c('Locale',{attrs:{\"input-id\":_vm.inputId,\"locales-for-language\":_vm.localesForLanguage,\"other-locales\":_vm.otherLocales,\"locale\":_vm.locale},on:{\"update:locale\":function($event){_vm.locale=$event}}})]:_c('span',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'No locale set'))+\"\\n\\t\")])],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div class=\"locale\">\n\t\t<select :id=\"inputId\"\n\t\t\t:placeholder=\"t('settings', 'Locale')\"\n\t\t\t@change=\"onLocaleChange\">\n\t\t\t<option v-for=\"currentLocale in localesForLanguage\"\n\t\t\t\t:key=\"currentLocale.code\"\n\t\t\t\t:selected=\"locale.code === currentLocale.code\"\n\t\t\t\t:value=\"currentLocale.code\">\n\t\t\t\t{{ currentLocale.name }}\n\t\t\t</option>\n\t\t\t<option disabled>\n\t\t\t\t──────────\n\t\t\t</option>\n\t\t\t<option v-for=\"currentLocale in otherLocales\"\n\t\t\t\t:key=\"currentLocale.code\"\n\t\t\t\t:selected=\"locale.code === currentLocale.code\"\n\t\t\t\t:value=\"currentLocale.code\">\n\t\t\t\t{{ currentLocale.name }}\n\t\t\t</option>\n\t\t</select>\n\n\t\t<div class=\"example\">\n\t\t\t<Web :size=\"20\" />\n\t\t\t<div class=\"example__text\">\n\t\t\t\t<p>\n\t\t\t\t\t<span>{{ example.date }}</span>\n\t\t\t\t\t<span>{{ example.time }}</span>\n\t\t\t\t</p>\n\t\t\t\t<p>\n\t\t\t\t\t{{ t('settings', 'Week starts on {firstDayOfWeek}', { firstDayOfWeek: this.example.firstDayOfWeek }) }}\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport moment from '@nextcloud/moment'\nimport Web from 'vue-material-design-icons/Web.vue'\n\nimport { ACCOUNT_SETTING_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants.js'\nimport { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService.js'\nimport { validateLocale } from '../../../utils/validate.js'\nimport { handleError } from '../../../utils/handlers.js'\n\nexport default {\n\tname: 'Locale',\n\n\tcomponents: {\n\t\tWeb,\n\t},\n\n\tprops: {\n\t\tinputId: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\tlocale: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tlocalesForLanguage: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t\totherLocales: {\n\t\t\ttype: Array,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialLocale: this.locale,\n\t\t\texample: {\n\t\t\t\tdate: moment().format('L'),\n\t\t\t\ttime: moment().format('LTS'),\n\t\t\t\tfirstDayOfWeek: window.dayNames[window.firstDay],\n\t\t\t},\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tallLocales() {\n\t\t\treturn Object.freeze(\n\t\t\t\t[...this.localesForLanguage, ...this.otherLocales]\n\t\t\t\t\t.reduce((acc, { code, name }) => ({ ...acc, [code]: name }), {})\n\t\t\t)\n\t\t},\n\t},\n\n\tcreated() {\n\t\tsetInterval(this.refreshExample, 1000)\n\t},\n\n\tmethods: {\n\t\tasync onLocaleChange(e) {\n\t\t\tconst locale = this.constructLocale(e.target.value)\n\t\t\tthis.$emit('update:locale', locale)\n\n\t\t\tif (validateLocale(locale)) {\n\t\t\t\tawait this.updateLocale(locale)\n\t\t\t}\n\t\t},\n\n\t\tasync updateLocale(locale) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountProperty(ACCOUNT_SETTING_PROPERTY_ENUM.LOCALE, locale.code)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tlocale,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t\tthis.reloadPage()\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update locale'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\tconstructLocale(localeCode) {\n\t\t\treturn {\n\t\t\t\tcode: localeCode,\n\t\t\t\tname: this.allLocales[localeCode],\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ locale, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\tthis.initialLocale = locale\n\t\t\t} else {\n\t\t\t\tthis.$emit('update:locale', this.initialLocale)\n\t\t\t\thandleError(error, errorMessage)\n\t\t\t}\n\t\t},\n\n\t\trefreshExample() {\n\t\t\tthis.example = {\n\t\t\t\tdate: moment().format('L'),\n\t\t\t\ttime: moment().format('LTS'),\n\t\t\t\tfirstDayOfWeek: window.dayNames[window.firstDay],\n\t\t\t}\n\t\t},\n\n\t\treloadPage() {\n\t\t\tlocation.reload()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.locale {\n\tdisplay: grid;\n\n\tselect {\n\t\twidth: 100%;\n\t}\n}\n\n.example {\n\tmargin: 10px 0;\n\tdisplay: flex;\n\tgap: 0 10px;\n\tcolor: var(--color-text-lighter);\n\n\t&::v-deep .material-design-icon {\n\t\talign-self: flex-start;\n\t\tmargin-top: 2px;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Locale.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Locale.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Locale.vue?vue&type=style&index=0&id=1ac456dc&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Locale.vue?vue&type=style&index=0&id=1ac456dc&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Locale.vue?vue&type=template&id=1ac456dc&scoped=true&\"\nimport script from \"./Locale.vue?vue&type=script&lang=js&\"\nexport * from \"./Locale.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Locale.vue?vue&type=style&index=0&id=1ac456dc&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1ac456dc\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"locale\"},[_c('select',{attrs:{\"id\":_vm.inputId,\"placeholder\":_vm.t('settings', 'Locale')},on:{\"change\":_vm.onLocaleChange}},[_vm._l((_vm.localesForLanguage),function(currentLocale){return _c('option',{key:currentLocale.code,domProps:{\"selected\":_vm.locale.code === currentLocale.code,\"value\":currentLocale.code}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(currentLocale.name)+\"\\n\\t\\t\")])}),_vm._v(\" \"),_c('option',{attrs:{\"disabled\":\"\"}},[_vm._v(\"\\n\\t\\t\\t──────────\\n\\t\\t\")]),_vm._v(\" \"),_vm._l((_vm.otherLocales),function(currentLocale){return _c('option',{key:currentLocale.code,domProps:{\"selected\":_vm.locale.code === currentLocale.code,\"value\":currentLocale.code}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(currentLocale.name)+\"\\n\\t\\t\")])})],2),_vm._v(\" \"),_c('div',{staticClass:\"example\"},[_c('Web',{attrs:{\"size\":20}}),_vm._v(\" \"),_c('div',{staticClass:\"example__text\"},[_c('p',[_c('span',[_vm._v(_vm._s(_vm.example.date))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.example.time))])]),_vm._v(\" \"),_c('p',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'Week starts on {firstDayOfWeek}', { firstDayOfWeek: this.example.firstDayOfWeek }))+\"\\n\\t\\t\\t\")])])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :input-id=\"inputId\"\n\t\t\t:readable=\"propertyReadable\" />\n\n\t\t<template v-if=\"isEditable\">\n\t\t\t<Locale :input-id=\"inputId\"\n\t\t\t\t:locales-for-language=\"localesForLanguage\"\n\t\t\t\t:other-locales=\"otherLocales\"\n\t\t\t\t:locale.sync=\"locale\" />\n\t\t</template>\n\n\t\t<span v-else>\n\t\t\t{{ t('settings', 'No locale set') }}\n\t\t</span>\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport Locale from './Locale.vue'\nimport HeaderBar from '../shared/HeaderBar.vue'\n\nimport { ACCOUNT_SETTING_PROPERTY_ENUM, ACCOUNT_SETTING_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants.js'\n\nconst { localeMap: { activeLocale, localesForLanguage, otherLocales } } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'LocaleSection',\n\n\tcomponents: {\n\t\tLocale,\n\t\tHeaderBar,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tpropertyReadable: ACCOUNT_SETTING_PROPERTY_READABLE_ENUM.LOCALE,\n\t\t\tlocalesForLanguage,\n\t\t\totherLocales,\n\t\t\tlocale: activeLocale,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tinputId() {\n\t\t\treturn `account-setting-${ACCOUNT_SETTING_PROPERTY_ENUM.LOCALE}`\n\t\t},\n\n\t\tisEditable() {\n\t\t\treturn Boolean(this.locale)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocaleSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocaleSection.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocaleSection.vue?vue&type=style&index=0&id=84fca724&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LocaleSection.vue?vue&type=style&index=0&id=84fca724&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./LocaleSection.vue?vue&type=template&id=84fca724&scoped=true&\"\nimport script from \"./LocaleSection.vue?vue&type=script&lang=js&\"\nexport * from \"./LocaleSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LocaleSection.vue?vue&type=style&index=0&id=84fca724&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"84fca724\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditProfileAnchorLink.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditProfileAnchorLink.vue?vue&type=script&lang=js&\"","<!--\n\t- @copyright 2021 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<a :class=\"{ disabled }\"\n\t\thref=\"#profile-visibility\"\n\t\tv-on=\"$listeners\">\n\t\t<ChevronDownIcon class=\"anchor-icon\"\n\t\t\t:size=\"22\" />\n\t\t{{ t('settings', 'Edit your Profile visibility') }}\n\t</a>\n</template>\n\n<script>\nimport ChevronDownIcon from 'vue-material-design-icons/ChevronDown.vue'\n\nexport default {\n\tname: 'EditProfileAnchorLink',\n\n\tcomponents: {\n\t\tChevronDownIcon,\n\t},\n\n\tprops: {\n\t\tprofileEnabled: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tdisabled() {\n\t\t\treturn !this.profileEnabled\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\nhtml {\n\tscroll-behavior: smooth;\n\n\t@media screen and (prefers-reduced-motion: reduce) {\n\t\tscroll-behavior: auto;\n\t}\n}\n</style>\n\n<style lang=\"scss\" scoped>\na {\n\tdisplay: block;\n\theight: 44px;\n\twidth: 290px;\n\tline-height: 44px;\n\tpadding: 0 16px;\n\tmargin: 14px auto;\n\tborder-radius: var(--border-radius-pill);\n\topacity: 0.4;\n\tbackground-color: transparent;\n\n\t.anchor-icon {\n\t\tdisplay: inline-block;\n\t\tvertical-align: middle;\n\t\tmargin-top: 6px;\n\t\tmargin-right: 8px;\n\t}\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\topacity: 0.8;\n\t\tbackground-color: rgba(127, 127, 127, .25);\n\t}\n\n\t&.disabled {\n\t\tpointer-events: none;\n\t}\n}\n</style>\n","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditProfileAnchorLink.vue?vue&type=style&index=0&id=1caba458&prod&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditProfileAnchorLink.vue?vue&type=style&index=0&id=1caba458&prod&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditProfileAnchorLink.vue?vue&type=style&index=1&id=1caba458&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditProfileAnchorLink.vue?vue&type=style&index=1&id=1caba458&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./EditProfileAnchorLink.vue?vue&type=template&id=1caba458&scoped=true&\"\nimport script from \"./EditProfileAnchorLink.vue?vue&type=script&lang=js&\"\nexport * from \"./EditProfileAnchorLink.vue?vue&type=script&lang=js&\"\nimport style0 from \"./EditProfileAnchorLink.vue?vue&type=style&index=0&id=1caba458&prod&lang=scss&\"\nimport style1 from \"./EditProfileAnchorLink.vue?vue&type=style&index=1&id=1caba458&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 \"1caba458\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('a',_vm._g({class:{ disabled: _vm.disabled },attrs:{\"href\":\"#profile-visibility\"}},_vm.$listeners),[_c('ChevronDownIcon',{staticClass:\"anchor-icon\",attrs:{\"size\":22}}),_vm._v(\"\\n\\t\"+_vm._s(_vm.t('settings', 'Edit your Profile visibility'))+\"\\n\")],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"checkbox-container\"},[_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"switch\",\"checked\":_vm.isProfileEnabled,\"loading\":_vm.loading},on:{\"update:checked\":[function($event){_vm.isProfileEnabled=$event},_vm.saveEnableProfile]}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'Enable Profile'))+\"\\n\\t\")])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div class=\"checkbox-container\">\n\t\t<NcCheckboxRadioSwitch type=\"switch\"\n\t\t\t:checked.sync=\"isProfileEnabled\"\n\t\t\t:loading=\"loading\"\n\t\t\t@update:checked=\"saveEnableProfile\">\n\t\t\t{{ t('settings', 'Enable Profile') }}\n\t\t</NcCheckboxRadioSwitch>\n\t</div>\n</template>\n\n<script>\nimport { emit } from '@nextcloud/event-bus'\n\nimport { savePrimaryAccountProperty } from '../../../service/PersonalInfo/PersonalInfoService.js'\nimport { ACCOUNT_PROPERTY_ENUM } from '../../../constants/AccountPropertyConstants.js'\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js'\nimport { handleError } from '../../../utils/handlers.js'\n\nexport default {\n\tname: 'ProfileCheckbox',\n\n\tcomponents: {\n\t\tNcCheckboxRadioSwitch,\n\t},\n\n\tprops: {\n\t\tprofileEnabled: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tisProfileEnabled: this.profileEnabled,\n\t\t\tloading: false,\n\t\t}\n\t},\n\n\tmethods: {\n\t\tasync saveEnableProfile() {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tconst responseData = await savePrimaryAccountProperty(ACCOUNT_PROPERTY_ENUM.PROFILE_ENABLED, this.isProfileEnabled)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tisProfileEnabled: this.isProfileEnabled,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update profile enabled state'),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ isProfileEnabled, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\temit('settings:profile-enabled:updated', isProfileEnabled)\n\t\t\t} else {\n\t\t\t\thandleError(error, errorMessage)\n\t\t\t}\n\t\t\tthis.loading = false\n\t\t},\n\t},\n}\n</script>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileCheckbox.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileCheckbox.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ProfileCheckbox.vue?vue&type=template&id=061ac04c&\"\nimport script from \"./ProfileCheckbox.vue?vue&type=script&lang=js&\"\nexport * from \"./ProfileCheckbox.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfilePreviewCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfilePreviewCard.vue?vue&type=script&lang=js&\"","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<a class=\"preview-card\"\n\t\t:class=\"{ disabled }\"\n\t\t:href=\"profilePageLink\">\n\t\t<NcAvatar class=\"preview-card__avatar\"\n\t\t\t:user=\"userId\"\n\t\t\t:size=\"48\"\n\t\t\t:show-user-status=\"true\"\n\t\t\t:show-user-status-compact=\"false\"\n\t\t\t:disable-menu=\"true\"\n\t\t\t:disable-tooltip=\"true\" />\n\t\t<div class=\"preview-card__header\">\n\t\t\t<span>{{ displayName }}</span>\n\t\t</div>\n\t\t<div class=\"preview-card__footer\">\n\t\t\t<span>{{ organisation }}</span>\n\t\t</div>\n\t</a>\n</template>\n\n<script>\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateUrl } from '@nextcloud/router'\n\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar.js'\n\nexport default {\n\tname: 'ProfilePreviewCard',\n\n\tcomponents: {\n\t\tNcAvatar,\n\t},\n\n\tprops: {\n\t\tdisplayName: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\torganisation: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tprofileEnabled: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tuserId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tdisabled() {\n\t\t\treturn !this.profileEnabled\n\t\t},\n\n\t\tprofilePageLink() {\n\t\t\tif (this.profileEnabled) {\n\t\t\t\treturn generateUrl('/u/{userId}', { userId: getCurrentUser().uid })\n\t\t\t}\n\t\t\t// Since an anchor element is used rather than a button for better UX,\n\t\t\t// this hack removes href if the profile is disabled so that disabling pointer-events is not needed to prevent a click from opening a page\n\t\t\t// and to allow the hover event (which disabling pointer-events wouldn't allow) for styling\n\t\t\treturn null\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.preview-card {\n\tdisplay: flex;\n\tflex-direction: column;\n\tposition: relative;\n\twidth: 290px;\n\theight: 116px;\n\tmargin: 14px auto;\n\tborder-radius: var(--border-radius-large);\n\tbackground-color: var(--color-main-background);\n\tfont-weight: bold;\n\tbox-shadow: 0 2px 9px var(--color-box-shadow);\n\n\t&:hover,\n\t&:focus,\n\t&:active {\n\t\tbox-shadow: 0 2px 12px var(--color-box-shadow);\n\t}\n\n\t&:focus-visible {\n\t\toutline: var(--color-main-text) solid 1px;\n\t\toutline-offset: 3px;\n\t}\n\n\t&.disabled {\n\t\tfilter: grayscale(1);\n\t\topacity: 0.5;\n\t\tcursor: default;\n\t\tbox-shadow: 0 0 3px var(--color-box-shadow);\n\n\t\t& *,\n\t\t&::v-deep * {\n\t\t\tcursor: default;\n\t\t}\n\t}\n\n\t&__avatar {\n\t\t// Override Avatar component position to fix positioning on rerender\n\t\tposition: absolute !important;\n\t\ttop: 40px;\n\t\tleft: 18px;\n\t\tz-index: 1;\n\n\t\t&:not(.avatardiv--unknown) {\n\t\t\tbox-shadow: 0 0 0 3px var(--color-main-background) !important;\n\t\t}\n\t}\n\n\t&__header,\n\t&__footer {\n\t\tposition: relative;\n\t\twidth: auto;\n\n\t\tspan {\n\t\t\tposition: absolute;\n\t\t\tleft: 78px;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\toverflow-wrap: anywhere;\n\n\t\t\t@supports (-webkit-line-clamp: 2) {\n\t\t\t\tdisplay: -webkit-box;\n\t\t\t\t-webkit-line-clamp: 2;\n\t\t\t\t-webkit-box-orient: vertical;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__header {\n\t\theight: 70px;\n\t\tborder-radius: var(--border-radius-large) var(--border-radius-large) 0 0;\n\t\tbackground-color: var(--color-primary);\n\t\tbackground-image: var(--gradient-primary-background);\n\n\t\tspan {\n\t\t\tbottom: 0;\n\t\t\tcolor: var(--color-primary-text);\n\t\t\tfont-size: 18px;\n\t\t\tfont-weight: bold;\n\t\t\tmargin: 0 4px 8px 0;\n\t\t}\n\t}\n\n\t&__footer {\n\t\theight: 46px;\n\n\t\tspan {\n\t\t\ttop: 0;\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\tfont-size: 14px;\n\t\t\tfont-weight: normal;\n\t\t\tmargin: 4px 4px 0 0;\n\t\t\tline-height: 1.3;\n\t\t}\n\t}\n}\n</style>\n","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfilePreviewCard.vue?vue&type=style&index=0&id=61586aa5&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfilePreviewCard.vue?vue&type=style&index=0&id=61586aa5&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ProfilePreviewCard.vue?vue&type=template&id=61586aa5&scoped=true&\"\nimport script from \"./ProfilePreviewCard.vue?vue&type=script&lang=js&\"\nexport * from \"./ProfilePreviewCard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ProfilePreviewCard.vue?vue&type=style&index=0&id=61586aa5&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"61586aa5\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('a',{staticClass:\"preview-card\",class:{ disabled: _vm.disabled },attrs:{\"href\":_vm.profilePageLink}},[_c('NcAvatar',{staticClass:\"preview-card__avatar\",attrs:{\"user\":_vm.userId,\"size\":48,\"show-user-status\":true,\"show-user-status-compact\":false,\"disable-menu\":true,\"disable-tooltip\":true}}),_vm._v(\" \"),_c('div',{staticClass:\"preview-card__header\"},[_c('span',[_vm._v(_vm._s(_vm.displayName))])]),_vm._v(\" \"),_c('div',{staticClass:\"preview-card__footer\"},[_c('span',[_vm._v(_vm._s(_vm.organisation))])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021, Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<section>\n\t\t<HeaderBar :readable=\"propertyReadable\" />\n\n\t\t<ProfileCheckbox :profile-enabled.sync=\"profileEnabled\" />\n\n\t\t<ProfilePreviewCard :organisation=\"organisation\"\n\t\t\t:display-name=\"displayName\"\n\t\t\t:profile-enabled=\"profileEnabled\"\n\t\t\t:user-id=\"userId\" />\n\n\t\t<EditProfileAnchorLink :profile-enabled=\"profileEnabled\" />\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\n\nimport EditProfileAnchorLink from './EditProfileAnchorLink.vue'\nimport HeaderBar from '../shared/HeaderBar.vue'\nimport ProfileCheckbox from './ProfileCheckbox.vue'\nimport ProfilePreviewCard from './ProfilePreviewCard.vue'\n\nimport { ACCOUNT_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants.js'\n\nconst {\n\torganisation: { value: organisation },\n\tdisplayName: { value: displayName },\n\tprofileEnabled,\n\tuserId,\n} = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'ProfileSection',\n\n\tcomponents: {\n\t\tEditProfileAnchorLink,\n\t\tHeaderBar,\n\t\tProfileCheckbox,\n\t\tProfilePreviewCard,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tpropertyReadable: ACCOUNT_PROPERTY_READABLE_ENUM.PROFILE_ENABLED,\n\t\t\torganisation,\n\t\t\tdisplayName,\n\t\t\tprofileEnabled,\n\t\t\tuserId,\n\t\t}\n\t},\n\n\tmounted() {\n\t\tsubscribe('settings:display-name:updated', this.handleDisplayNameUpdate)\n\t\tsubscribe('settings:organisation:updated', this.handleOrganisationUpdate)\n\t},\n\n\tbeforeDestroy() {\n\t\tunsubscribe('settings:display-name:updated', this.handleDisplayNameUpdate)\n\t\tunsubscribe('settings:organisation:updated', this.handleOrganisationUpdate)\n\t},\n\n\tmethods: {\n\t\thandleDisplayNameUpdate(displayName) {\n\t\t\tthis.displayName = displayName\n\t\t},\n\n\t\thandleOrganisationUpdate(organisation) {\n\t\t\tthis.organisation = organisation\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 10px 10px;\n\n\t&::v-deep button:disabled {\n\t\tcursor: default;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileSection.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileSection.vue?vue&type=style&index=0&id=cf64d964&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileSection.vue?vue&type=style&index=0&id=cf64d964&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ProfileSection.vue?vue&type=template&id=cf64d964&scoped=true&\"\nimport script from \"./ProfileSection.vue?vue&type=script&lang=js&\"\nexport * from \"./ProfileSection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ProfileSection.vue?vue&type=style&index=0&id=cf64d964&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"cf64d964\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',[_c('HeaderBar',{attrs:{\"readable\":_vm.propertyReadable}}),_vm._v(\" \"),_c('ProfileCheckbox',{attrs:{\"profile-enabled\":_vm.profileEnabled},on:{\"update:profileEnabled\":function($event){_vm.profileEnabled=$event},\"update:profile-enabled\":function($event){_vm.profileEnabled=$event}}}),_vm._v(\" \"),_c('ProfilePreviewCard',{attrs:{\"organisation\":_vm.organisation,\"display-name\":_vm.displayName,\"profile-enabled\":_vm.profileEnabled,\"user-id\":_vm.userId}}),_vm._v(\" \"),_c('EditProfileAnchorLink',{attrs:{\"profile-enabled\":_vm.profileEnabled}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<AccountPropertySection v-bind.sync=\"organisation\"\n\t\t:placeholder=\"t('settings', 'Your organisation')\" />\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport AccountPropertySection from './shared/AccountPropertySection.vue'\n\nimport { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js'\n\nconst { organisation } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'OrganisationSection',\n\n\tcomponents: {\n\t\tAccountPropertySection,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\torganisation: { ...organisation, readable: NAME_READABLE_ENUM[organisation.name] },\n\t\t}\n\t},\n}\n</script>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OrganisationSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OrganisationSection.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./OrganisationSection.vue?vue&type=template&id=50ddf4bd&\"\nimport script from \"./OrganisationSection.vue?vue&type=script&lang=js&\"\nexport * from \"./OrganisationSection.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('AccountPropertySection',_vm._b({attrs:{\"placeholder\":_vm.t('settings', 'Your organisation')}},'AccountPropertySection',_vm.organisation,false,true))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<AccountPropertySection v-bind.sync=\"role\"\n\t\t:placeholder=\"t('settings', 'Your role')\" />\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport AccountPropertySection from './shared/AccountPropertySection.vue'\n\nimport { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js'\n\nconst { role } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'RoleSection',\n\n\tcomponents: {\n\t\tAccountPropertySection,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\trole: { ...role, readable: NAME_READABLE_ENUM[role.name] },\n\t\t}\n\t},\n}\n</script>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RoleSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RoleSection.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RoleSection.vue?vue&type=template&id=3dbe0705&\"\nimport script from \"./RoleSection.vue?vue&type=script&lang=js&\"\nexport * from \"./RoleSection.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('AccountPropertySection',_vm._b({attrs:{\"placeholder\":_vm.t('settings', 'Your role')}},'AccountPropertySection',_vm.role,false,true))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<AccountPropertySection v-bind.sync=\"headline\"\n\t\t:placeholder=\"t('settings', 'Your headline')\" />\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport AccountPropertySection from './shared/AccountPropertySection.vue'\n\nimport { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js'\n\nconst { headline } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'HeadlineSection',\n\n\tcomponents: {\n\t\tAccountPropertySection,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\theadline: { ...headline, readable: NAME_READABLE_ENUM[headline.name] },\n\t\t}\n\t},\n}\n</script>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeadlineSection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeadlineSection.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./HeadlineSection.vue?vue&type=template&id=0f3859ee&\"\nimport script from \"./HeadlineSection.vue?vue&type=script&lang=js&\"\nexport * from \"./HeadlineSection.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('AccountPropertySection',_vm._b({attrs:{\"placeholder\":_vm.t('settings', 'Your headline')}},'AccountPropertySection',_vm.headline,false,true))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2022 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license AGPL-3.0-or-later\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<AccountPropertySection v-bind.sync=\"biography\"\n\t\t:placeholder=\"t('settings', 'Your biography')\"\n\t\t:multi-line=\"true\" />\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\n\nimport AccountPropertySection from './shared/AccountPropertySection.vue'\n\nimport { NAME_READABLE_ENUM } from '../../constants/AccountPropertyConstants.js'\n\nconst { biography } = loadState('settings', 'personalInfoParameters', {})\n\nexport default {\n\tname: 'BiographySection',\n\n\tcomponents: {\n\t\tAccountPropertySection,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tbiography: { ...biography, readable: NAME_READABLE_ENUM[biography.name] },\n\t\t}\n\t},\n}\n</script>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BiographySection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BiographySection.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./BiographySection.vue?vue&type=template&id=a916ca60&\"\nimport script from \"./BiographySection.vue?vue&type=script&lang=js&\"\nexport * from \"./BiographySection.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('AccountPropertySection',_vm._b({attrs:{\"placeholder\":_vm.t('settings', 'Your biography'),\"multi-line\":true}},'AccountPropertySection',_vm.biography,false,true))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',{style:({ marginLeft: _vm.marginLeft }),attrs:{\"id\":\"profile-visibility\"}},[_c('HeaderBar',{attrs:{\"is-heading\":true,\"readable\":_vm.heading}}),_vm._v(\" \"),_c('em',{class:{ disabled: _vm.disabled }},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('settings', 'The more restrictive setting of either visibility or scope is respected on your Profile. For example, if visibility is set to \"Show to everyone\" and scope is set to \"Private\", \"Private\" is respected.'))+\"\\n\\t\")]),_vm._v(\" \"),_c('div',{staticClass:\"visibility-dropdowns\",style:({\n\t\t\tgridTemplateRows: `repeat(${_vm.rows}, 44px)`,\n\t\t})},_vm._l((_vm.visibilityParams),function(param){return _c('VisibilityDropdown',{key:param.id,attrs:{\"param-id\":param.id,\"display-id\":param.displayId,\"visibility\":param.visibility},on:{\"update:visibility\":function($event){return _vm.$set(param, \"visibility\", $event)}}})}),1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2021 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { confirmPassword } from '@nextcloud/password-confirmation'\nimport '@nextcloud/password-confirmation/dist/style.css'\n\n/**\n * Save the visibility of the profile parameter\n *\n * @param {string} paramId the profile parameter ID\n * @param {string} visibility the visibility\n * @return {object}\n */\nexport const saveProfileParameterVisibility = async (paramId, visibility) => {\n\tconst userId = getCurrentUser().uid\n\tconst url = generateOcsUrl('/profile/{userId}', { userId })\n\n\tawait confirmPassword()\n\n\tconst res = await axios.put(url, {\n\t\tparamId,\n\t\tvisibility,\n\t})\n\n\treturn res.data\n}\n\n/**\n * Save profile default\n *\n * @param {boolean} isEnabled the default\n * @return {object}\n */\nexport const saveProfileDefault = async (isEnabled) => {\n\t// Convert to string for compatibility\n\tisEnabled = isEnabled ? '1' : '0'\n\n\tconst url = generateOcsUrl('/apps/provisioning_api/api/v1/config/apps/{appId}/{key}', {\n\t\tappId: 'settings',\n\t\tkey: 'profile_enabled_by_default',\n\t})\n\n\tawait confirmPassword()\n\n\tconst res = await axios.post(url, {\n\t\tvalue: isEnabled,\n\t})\n\n\treturn res.data\n}\n","/**\n * @copyright 2021 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/*\n * SYNC to be kept in sync with `core/Db/ProfileConfig.php`\n */\n\n/** Enum of profile visibility constants */\nexport const VISIBILITY_ENUM = Object.freeze({\n\tSHOW: 'show',\n\tSHOW_USERS_ONLY: 'show_users_only',\n\tHIDE: 'hide',\n})\n\n/**\n * Enum of profile visibility constants to properties\n */\nexport const VISIBILITY_PROPERTY_ENUM = Object.freeze({\n\t[VISIBILITY_ENUM.SHOW]: {\n\t\tname: VISIBILITY_ENUM.SHOW,\n\t\tlabel: t('settings', 'Show to everyone'),\n\t},\n\t[VISIBILITY_ENUM.SHOW_USERS_ONLY]: {\n\t\tname: VISIBILITY_ENUM.SHOW_USERS_ONLY,\n\t\tlabel: t('settings', 'Show to logged in users only'),\n\t},\n\t[VISIBILITY_ENUM.HIDE]: {\n\t\tname: VISIBILITY_ENUM.HIDE,\n\t\tlabel: t('settings', 'Hide'),\n\t},\n})\n","<!--\n\t- @copyright 2021 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<div class=\"visibility-container\"\n\t\t:class=\"{ disabled }\">\n\t\t<label :for=\"inputId\">\n\t\t\t{{ displayId }}\n\t\t</label>\n\t\t<NcSelect :input-id=\"inputId\"\n\t\t\tclass=\"visibility-container__select\"\n\t\t\t:clearable=\"false\"\n\t\t\t:options=\"visibilityOptions\"\n\t\t\t:value=\"visibilityObject\"\n\t\t\t@option:selected=\"onVisibilityChange\" />\n\t</div>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\n\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\n\nimport { saveProfileParameterVisibility } from '../../../service/ProfileService.js'\nimport { VISIBILITY_PROPERTY_ENUM } from '../../../constants/ProfileConstants.js'\nimport { handleError } from '../../../utils/handlers.js'\n\nconst { profileEnabled } = loadState('settings', 'personalInfoParameters', false)\n\nexport default {\n\tname: 'VisibilityDropdown',\n\n\tcomponents: {\n\t\tNcSelect,\n\t},\n\n\tprops: {\n\t\tparamId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tdisplayId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tvisibility: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tinitialVisibility: this.visibility,\n\t\t\tprofileEnabled,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tdisabled() {\n\t\t\treturn !this.profileEnabled\n\t\t},\n\n\t\tinputId() {\n\t\t\treturn `profile-visibility-${this.paramId}`\n\t\t},\n\n\t\tvisibilityObject() {\n\t\t\treturn VISIBILITY_PROPERTY_ENUM[this.visibility]\n\t\t},\n\n\t\tvisibilityOptions() {\n\t\t\treturn Object.values(VISIBILITY_PROPERTY_ENUM)\n\t\t},\n\t},\n\n\tmounted() {\n\t\tsubscribe('settings:profile-enabled:updated', this.handleProfileEnabledUpdate)\n\t},\n\n\tbeforeDestroy() {\n\t\tunsubscribe('settings:profile-enabled:updated', this.handleProfileEnabledUpdate)\n\t},\n\n\tmethods: {\n\t\tasync onVisibilityChange(visibilityObject) {\n\t\t\t// This check is needed as the argument is null when selecting the same option\n\t\t\tif (visibilityObject !== null) {\n\t\t\t\tconst { name: visibility } = visibilityObject\n\t\t\t\tthis.$emit('update:visibility', visibility)\n\n\t\t\t\tif (visibility !== '') {\n\t\t\t\t\tawait this.updateVisibility(visibility)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tasync updateVisibility(visibility) {\n\t\t\ttry {\n\t\t\t\tconst responseData = await saveProfileParameterVisibility(this.paramId, visibility)\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\tvisibility,\n\t\t\t\t\tstatus: responseData.ocs?.meta?.status,\n\t\t\t\t})\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleResponse({\n\t\t\t\t\terrorMessage: t('settings', 'Unable to update visibility of {displayId}', { displayId: this.displayId }),\n\t\t\t\t\terror: e,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\thandleResponse({ visibility, status, errorMessage, error }) {\n\t\t\tif (status === 'ok') {\n\t\t\t\t// Ensure that local state reflects server state\n\t\t\t\tthis.initialVisibility = visibility\n\t\t\t} else {\n\t\t\t\thandleError(error, errorMessage)\n\t\t\t}\n\t\t},\n\n\t\thandleProfileEnabledUpdate(profileEnabled) {\n\t\t\tthis.profileEnabled = profileEnabled\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.visibility-container {\n\tdisplay: flex;\n\twidth: max-content;\n\n\t&.disabled {\n\t\tfilter: grayscale(1);\n\t\topacity: 0.5;\n\t\tcursor: default;\n\t\tpointer-events: none;\n\n\t\t& *,\n\t\t&::v-deep * {\n\t\t\tcursor: default;\n\t\t\tpointer-events: none;\n\t\t}\n\t}\n\n\tlabel {\n\t\tcolor: var(--color-text-lighter);\n\t\twidth: 150px;\n\t\tline-height: 50px;\n\t}\n\n\t&__select {\n\t\twidth: 270px;\n\t\tmax-width: 40vw;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VisibilityDropdown.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VisibilityDropdown.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VisibilityDropdown.vue?vue&type=style&index=0&id=b13d20da&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VisibilityDropdown.vue?vue&type=style&index=0&id=b13d20da&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./VisibilityDropdown.vue?vue&type=template&id=b13d20da&scoped=true&\"\nimport script from \"./VisibilityDropdown.vue?vue&type=script&lang=js&\"\nexport * from \"./VisibilityDropdown.vue?vue&type=script&lang=js&\"\nimport style0 from \"./VisibilityDropdown.vue?vue&type=style&index=0&id=b13d20da&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b13d20da\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"visibility-container\",class:{ disabled: _vm.disabled }},[_c('label',{attrs:{\"for\":_vm.inputId}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.displayId)+\"\\n\\t\")]),_vm._v(\" \"),_c('NcSelect',{staticClass:\"visibility-container__select\",attrs:{\"input-id\":_vm.inputId,\"clearable\":false,\"options\":_vm.visibilityOptions,\"value\":_vm.visibilityObject},on:{\"option:selected\":_vm.onVisibilityChange}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n\t- @copyright 2021 Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @author Christopher Ng <chrng8@gmail.com>\n\t-\n\t- @license GNU AGPL version 3 or any later version\n\t-\n\t- This program is free software: you can redistribute it and/or modify\n\t- it under the terms of the GNU Affero General Public License as\n\t- published by the Free Software Foundation, either version 3 of the\n\t- License, or (at your option) any later version.\n\t-\n\t- This program is distributed in the hope that it will be useful,\n\t- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\t- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\t- GNU Affero General Public License for more details.\n\t-\n\t- You should have received a copy of the GNU Affero General Public License\n\t- along with this program. If not, see <http://www.gnu.org/licenses/>.\n\t-\n-->\n\n<template>\n\t<!-- TODO remove this inline margin placeholder once the settings layout is updated -->\n\t<section id=\"profile-visibility\"\n\t\t:style=\"{ marginLeft }\">\n\t\t<HeaderBar :is-heading=\"true\" :readable=\"heading\" />\n\n\t\t<em :class=\"{ disabled }\">\n\t\t\t{{ t('settings', 'The more restrictive setting of either visibility or scope is respected on your Profile. For example, if visibility is set to \"Show to everyone\" and scope is set to \"Private\", \"Private\" is respected.') }}\n\t\t</em>\n\n\t\t<div class=\"visibility-dropdowns\"\n\t\t\t:style=\"{\n\t\t\t\tgridTemplateRows: `repeat(${rows}, 44px)`,\n\t\t\t}\">\n\t\t\t<VisibilityDropdown v-for=\"param in visibilityParams\"\n\t\t\t\t:key=\"param.id\"\n\t\t\t\t:param-id=\"param.id\"\n\t\t\t\t:display-id=\"param.displayId\"\n\t\t\t\t:visibility.sync=\"param.visibility\" />\n\t\t</div>\n\t</section>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\n\nimport HeaderBar from '../shared/HeaderBar.vue'\nimport VisibilityDropdown from './VisibilityDropdown.vue'\nimport { PROFILE_READABLE_ENUM } from '../../../constants/AccountPropertyConstants.js'\n\nconst { profileConfig } = loadState('settings', 'profileParameters', {})\nconst { profileEnabled } = loadState('settings', 'personalInfoParameters', false)\n\nconst compareParams = (a, b) => {\n\tif (a.appId === b.appId || (a.appId !== 'core' && b.appId !== 'core')) {\n\t\treturn a.displayId.localeCompare(b.displayId)\n\t} else if (a.appId === 'core') {\n\t\treturn 1\n\t} else {\n\t\treturn -1\n\t}\n}\n\nexport default {\n\tname: 'ProfileVisibilitySection',\n\n\tcomponents: {\n\t\tHeaderBar,\n\t\tVisibilityDropdown,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\theading: PROFILE_READABLE_ENUM.PROFILE_VISIBILITY,\n\t\t\tprofileEnabled,\n\t\t\tvisibilityParams: Object.entries(profileConfig)\n\t\t\t\t.map(([paramId, { appId, displayId, visibility }]) => ({ id: paramId, appId, displayId, visibility }))\n\t\t\t\t.sort(compareParams),\n\t\t\t// TODO remove this when not used once the settings layout is updated\n\t\t\tmarginLeft: window.matchMedia('(min-width: 1600px)').matches\n\t\t\t\t? window.getComputedStyle(document.getElementById('vue-avatar-section')).getPropertyValue('width').trim()\n\t\t\t\t: '0px',\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tdisabled() {\n\t\t\treturn !this.profileEnabled\n\t\t},\n\n\t\trows() {\n\t\t\treturn Math.ceil(this.visibilityParams.length / 2)\n\t\t},\n\t},\n\n\tmounted() {\n\t\tsubscribe('settings:profile-enabled:updated', this.handleProfileEnabledUpdate)\n\t\t// TODO remove this when not used once the settings layout is updated\n\t\twindow.onresize = () => {\n\t\t\tthis.marginLeft = window.matchMedia('(min-width: 1600px)').matches\n\t\t\t\t? window.getComputedStyle(document.getElementById('vue-avatar-section')).getPropertyValue('width').trim()\n\t\t\t\t: '0px'\n\t\t}\n\t},\n\n\tbeforeDestroy() {\n\t\tunsubscribe('settings:profile-enabled:updated', this.handleProfileEnabledUpdate)\n\t},\n\n\tmethods: {\n\t\thandleProfileEnabledUpdate(profileEnabled) {\n\t\t\tthis.profileEnabled = profileEnabled\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nsection {\n\tpadding: 30px;\n\tmax-width: 900px;\n\twidth: 100%;\n\n\tem {\n\t\tdisplay: block;\n\t\tmargin: 16px 0;\n\n\t\t&.disabled {\n\t\t\tfilter: grayscale(1);\n\t\t\topacity: 0.5;\n\t\t\tcursor: default;\n\t\t\tpointer-events: none;\n\n\t\t\t& *,\n\t\t\t&::v-deep * {\n\t\t\t\tcursor: default;\n\t\t\t\tpointer-events: none;\n\t\t\t}\n\t\t}\n\t}\n\n\t.visibility-dropdowns {\n\t\tdisplay: grid;\n\t\tgap: 10px 40px;\n\t}\n\n\t@media (min-width: 1200px) {\n\t\twidth: 940px;\n\n\t\t.visibility-dropdowns {\n\t\t\tgrid-auto-flow: column;\n\t\t}\n\t}\n\n\t@media (max-width: 1200px) {\n\t\twidth: 470px;\n\t}\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileVisibilitySection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileVisibilitySection.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileVisibilitySection.vue?vue&type=style&index=0&id=a07dbf96&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProfileVisibilitySection.vue?vue&type=style&index=0&id=a07dbf96&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ProfileVisibilitySection.vue?vue&type=template&id=a07dbf96&scoped=true&\"\nimport script from \"./ProfileVisibilitySection.vue?vue&type=script&lang=js&\"\nexport * from \"./ProfileVisibilitySection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ProfileVisibilitySection.vue?vue&type=style&index=0&id=a07dbf96&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a07dbf96\",\n null\n \n)\n\nexport default component.exports","/**\n * @copyright 2021, Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport { getRequestToken } from '@nextcloud/auth'\nimport { loadState } from '@nextcloud/initial-state'\nimport { translate as t } from '@nextcloud/l10n'\nimport '@nextcloud/dialogs/dist/index.css'\n\nimport AvatarSection from './components/PersonalInfo/AvatarSection.vue'\nimport DetailsSection from './components/PersonalInfo/DetailsSection.vue'\nimport DisplayNameSection from './components/PersonalInfo/DisplayNameSection.vue'\nimport EmailSection from './components/PersonalInfo/EmailSection/EmailSection.vue'\nimport PhoneSection from './components/PersonalInfo/PhoneSection.vue'\nimport LocationSection from './components/PersonalInfo/LocationSection.vue'\nimport WebsiteSection from './components/PersonalInfo/WebsiteSection.vue'\nimport TwitterSection from './components/PersonalInfo/TwitterSection.vue'\nimport FediverseSection from './components/PersonalInfo/FediverseSection.vue'\nimport LanguageSection from './components/PersonalInfo/LanguageSection/LanguageSection.vue'\nimport LocaleSection from './components/PersonalInfo/LocaleSection/LocaleSection.vue'\nimport ProfileSection from './components/PersonalInfo/ProfileSection/ProfileSection.vue'\nimport OrganisationSection from './components/PersonalInfo/OrganisationSection.vue'\nimport RoleSection from './components/PersonalInfo/RoleSection.vue'\nimport HeadlineSection from './components/PersonalInfo/HeadlineSection.vue'\nimport BiographySection from './components/PersonalInfo/BiographySection.vue'\nimport ProfileVisibilitySection from './components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue'\n\n__webpack_nonce__ = btoa(getRequestToken())\n\nconst profileEnabledGlobally = loadState('settings', 'profileEnabledGlobally', true)\n\nVue.mixin({\n\tmethods: {\n\t\tt,\n\t},\n})\n\nconst AvatarView = Vue.extend(AvatarSection)\nconst DetailsView = Vue.extend(DetailsSection)\nconst DisplayNameView = Vue.extend(DisplayNameSection)\nconst EmailView = Vue.extend(EmailSection)\nconst PhoneView = Vue.extend(PhoneSection)\nconst LocationView = Vue.extend(LocationSection)\nconst WebsiteView = Vue.extend(WebsiteSection)\nconst TwitterView = Vue.extend(TwitterSection)\nconst FediverseView = Vue.extend(FediverseSection)\nconst LanguageView = Vue.extend(LanguageSection)\nconst LocaleView = Vue.extend(LocaleSection)\n\nnew AvatarView().$mount('#vue-avatar-section')\nnew DetailsView().$mount('#vue-details-section')\nnew DisplayNameView().$mount('#vue-displayname-section')\nnew EmailView().$mount('#vue-email-section')\nnew PhoneView().$mount('#vue-phone-section')\nnew LocationView().$mount('#vue-location-section')\nnew WebsiteView().$mount('#vue-website-section')\nnew TwitterView().$mount('#vue-twitter-section')\nnew FediverseView().$mount('#vue-fediverse-section')\nnew LanguageView().$mount('#vue-language-section')\nnew LocaleView().$mount('#vue-locale-section')\n\nif (profileEnabledGlobally) {\n\tconst ProfileView = Vue.extend(ProfileSection)\n\tconst OrganisationView = Vue.extend(OrganisationSection)\n\tconst RoleView = Vue.extend(RoleSection)\n\tconst HeadlineView = Vue.extend(HeadlineSection)\n\tconst BiographyView = Vue.extend(BiographySection)\n\tconst ProfileVisibilityView = Vue.extend(ProfileVisibilitySection)\n\n\tnew ProfileView().$mount('#vue-profile-section')\n\tnew OrganisationView().$mount('#vue-organisation-section')\n\tnew RoleView().$mount('#vue-role-section')\n\tnew HeadlineView().$mount('#vue-headline-section')\n\tnew BiographyView().$mount('#vue-biography-section')\n\tnew ProfileVisibilityView().$mount('#vue-profile-visibility-section')\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"section[data-v-022fd5d4]{grid-row:1/3}.avatar__container[data-v-022fd5d4]{margin:0 auto;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:16px 0;width:300px}.avatar__container span[data-v-022fd5d4]{color:var(--color-text-lighter)}.avatar__preview[data-v-022fd5d4]{display:flex;justify-content:center;align-items:center;width:180px;height:180px}.avatar__buttons[data-v-022fd5d4]{display:flex;gap:0 10px}.avatar__cropper[data-v-022fd5d4]{width:300px;height:300px;overflow:hidden}.avatar__cropper-buttons[data-v-022fd5d4]{width:100%;display:flex;justify-content:space-between}.avatar__cropper[data-v-022fd5d4] .cropper-view-box{border-radius:50%}input[type=file][data-v-022fd5d4]{display:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/AvatarSection.vue\"],\"names\":[],\"mappings\":\"AACA,yBACC,YAAA,CAGA,oCACC,aAAA,CACA,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,kBAAA,CACA,UAAA,CACA,WAAA,CAEA,yCACC,+BAAA,CAIF,kCACC,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,WAAA,CACA,YAAA,CAGD,kCACC,YAAA,CACA,UAAA,CAGD,kCACC,WAAA,CACA,YAAA,CACA,eAAA,CAEA,0CACC,UAAA,CACA,YAAA,CACA,6BAAA,CAGD,oDACC,iBAAA,CAKH,kCACC,YAAA\",\"sourcesContent\":[\"\\nsection {\\n\\tgrid-row: 1/3;\\n}\\n.avatar {\\n\\t&__container {\\n\\t\\tmargin: 0 auto;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: center;\\n\\t\\talign-items: center;\\n\\t\\tgap: 16px 0;\\n\\t\\twidth: 300px;\\n\\n\\t\\tspan {\\n\\t\\t\\tcolor: var(--color-text-lighter);\\n\\t\\t}\\n\\t}\\n\\n\\t&__preview {\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: center;\\n\\t\\talign-items: center;\\n\\t\\twidth: 180px;\\n\\t\\theight: 180px;\\n\\t}\\n\\n\\t&__buttons {\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 10px;\\n\\t}\\n\\n\\t&__cropper {\\n\\t\\twidth: 300px;\\n\\t\\theight: 300px;\\n\\t\\toverflow: hidden;\\n\\n\\t\\t&-buttons {\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tjustify-content: space-between;\\n\\t\\t}\\n\\n\\t\\t&::v-deep .cropper-view-box {\\n\\t\\t\\tborder-radius: 50%;\\n\\t\\t}\\n\\t}\\n}\\n\\ninput[type=\\\"file\\\"] {\\n\\tdisplay: none;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".details[data-v-1ab46e68]{display:flex;flex-direction:column;margin:10px 32px 10px 0;gap:16px 0;color:var(--color-text-lighter)}.details__groups[data-v-1ab46e68],.details__quota[data-v-1ab46e68]{display:flex;gap:0 10px}.details__groups-info[data-v-1ab46e68],.details__quota-info[data-v-1ab46e68]{display:flex;flex-direction:column;width:100%;gap:4px 0}.details__groups-list[data-v-1ab46e68],.details__quota-list[data-v-1ab46e68]{font-weight:bold}.details__groups[data-v-1ab46e68] .material-design-icon,.details__quota[data-v-1ab46e68] .material-design-icon{align-self:flex-start;margin-top:2px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/DetailsSection.vue\"],\"names\":[],\"mappings\":\"AACA,0BACC,YAAA,CACA,qBAAA,CACA,uBAAA,CACA,UAAA,CACA,+BAAA,CAEA,mEAEC,YAAA,CACA,UAAA,CAEA,6EACC,YAAA,CACA,qBAAA,CACA,UAAA,CACA,SAAA,CAGD,6EACC,gBAAA,CAGD,+GACC,qBAAA,CACA,cAAA\",\"sourcesContent\":[\"\\n.details {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tmargin: 10px 32px 10px 0;\\n\\tgap: 16px 0;\\n\\tcolor: var(--color-text-lighter);\\n\\n\\t&__groups,\\n\\t&__quota {\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 10px;\\n\\n\\t\\t&-info {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tgap: 4px 0;\\n\\t\\t}\\n\\n\\t\\t&-list {\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t}\\n\\n\\t\\t&::v-deep .material-design-icon {\\n\\t\\t\\talign-self: flex-start;\\n\\t\\t\\tmargin-top: 2px;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".email[data-v-5ff85d38]{display:grid;align-items:center}.email input[data-v-5ff85d38]{grid-area:1/1;width:100%}.email .email__actions-container[data-v-5ff85d38]{grid-area:1/1;justify-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px}.email .email__actions-container .email__actions[data-v-5ff85d38]{opacity:.4 !important}.email .email__actions-container .email__actions[data-v-5ff85d38]:hover,.email .email__actions-container .email__actions[data-v-5ff85d38]:focus,.email .email__actions-container .email__actions[data-v-5ff85d38]:active{opacity:.8 !important}.email .email__actions-container .email__actions[data-v-5ff85d38] button{height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important}.email__helper-text-message[data-v-5ff85d38]{padding:4px 0;display:flex;align-items:center}.email__helper-text-message__icon[data-v-5ff85d38]{margin-right:8px;align-self:start;margin-top:4px}.email__helper-text-message--error[data-v-5ff85d38]{color:var(--color-error)}.fade-enter[data-v-5ff85d38],.fade-leave-to[data-v-5ff85d38]{opacity:0}.fade-enter-active[data-v-5ff85d38]{transition:opacity 200ms ease-out}.fade-leave-active[data-v-5ff85d38]{transition:opacity 300ms ease-out}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/EmailSection/Email.vue\"],\"names\":[],\"mappings\":\"AACA,wBACC,YAAA,CACA,kBAAA,CAEA,8BACC,aAAA,CACA,UAAA,CAGD,kDACC,aAAA,CACA,qBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CAEA,kEACC,qBAAA,CAEA,yNAGC,qBAAA,CAGD,yEACC,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA,CAKH,6CACC,aAAA,CACA,YAAA,CACA,kBAAA,CAEA,mDACC,gBAAA,CACA,gBAAA,CACA,cAAA,CAGD,oDACC,wBAAA,CAKH,6DAEC,SAAA,CAGD,oCACC,iCAAA,CAGD,oCACC,iCAAA\",\"sourcesContent\":[\"\\n.email {\\n\\tdisplay: grid;\\n\\talign-items: center;\\n\\n\\tinput {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t.email__actions-container {\\n\\t\\tgrid-area: 1 / 1;\\n\\t\\tjustify-self: flex-end;\\n\\t\\theight: 30px;\\n\\n\\t\\tdisplay: flex;\\n\\t\\tgap: 0 2px;\\n\\t\\tmargin-right: 5px;\\n\\n\\t\\t.email__actions {\\n\\t\\t\\topacity: 0.4 !important;\\n\\n\\t\\t\\t&:hover,\\n\\t\\t\\t&:focus,\\n\\t\\t\\t&:active {\\n\\t\\t\\t\\topacity: 0.8 !important;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&::v-deep button {\\n\\t\\t\\t\\theight: 30px !important;\\n\\t\\t\\t\\tmin-height: 30px !important;\\n\\t\\t\\t\\twidth: 30px !important;\\n\\t\\t\\t\\tmin-width: 30px !important;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__helper-text-message {\\n\\t\\tpadding: 4px 0;\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\n\\t\\t&__icon {\\n\\t\\t\\tmargin-right: 8px;\\n\\t\\t\\talign-self: start;\\n\\t\\t\\tmargin-top: 4px;\\n\\t\\t}\\n\\n\\t\\t&--error {\\n\\t\\t\\tcolor: var(--color-error);\\n\\t\\t}\\n\\t}\\n}\\n\\n.fade-enter,\\n.fade-leave-to {\\n\\topacity: 0;\\n}\\n\\n.fade-enter-active {\\n\\ttransition: opacity 200ms ease-out;\\n}\\n\\n.fade-leave-active {\\n\\ttransition: opacity 300ms ease-out;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"section[data-v-46c7eb7e]{padding:10px 10px}section[data-v-46c7eb7e] button:disabled{cursor:default}section .additional-emails-label[data-v-46c7eb7e]{display:block;margin-top:16px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue\"],\"names\":[],\"mappings\":\"AACA,yBACC,iBAAA,CAEA,yCACC,cAAA,CAGD,kDACC,aAAA,CACA,eAAA\",\"sourcesContent\":[\"\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\n\\t}\\n\\n\\t.additional-emails-label {\\n\\t\\tdisplay: block;\\n\\t\\tmargin-top: 16px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".language[data-v-5c847b3a]{display:grid}.language select[data-v-5c847b3a]{width:100%}.language a[data-v-5c847b3a]{color:var(--color-main-text);text-decoration:none;width:max-content}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/LanguageSection/Language.vue\"],\"names\":[],\"mappings\":\"AACA,2BACC,YAAA,CAEA,kCACC,UAAA,CAGD,6BACC,4BAAA,CACA,oBAAA,CACA,iBAAA\",\"sourcesContent\":[\"\\n.language {\\n\\tdisplay: grid;\\n\\n\\tselect {\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\ta {\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\ttext-decoration: none;\\n\\t\\twidth: max-content;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"section[data-v-92685b76]{padding:10px 10px}section[data-v-92685b76] button:disabled{cursor:default}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue\"],\"names\":[],\"mappings\":\"AACA,yBACC,iBAAA,CAEA,yCACC,cAAA\",\"sourcesContent\":[\"\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".locale[data-v-1ac456dc]{display:grid}.locale select[data-v-1ac456dc]{width:100%}.example[data-v-1ac456dc]{margin:10px 0;display:flex;gap:0 10px;color:var(--color-text-lighter)}.example[data-v-1ac456dc] .material-design-icon{align-self:flex-start;margin-top:2px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/LocaleSection/Locale.vue\"],\"names\":[],\"mappings\":\"AACA,yBACC,YAAA,CAEA,gCACC,UAAA,CAIF,0BACC,aAAA,CACA,YAAA,CACA,UAAA,CACA,+BAAA,CAEA,gDACC,qBAAA,CACA,cAAA\",\"sourcesContent\":[\"\\n.locale {\\n\\tdisplay: grid;\\n\\n\\tselect {\\n\\t\\twidth: 100%;\\n\\t}\\n}\\n\\n.example {\\n\\tmargin: 10px 0;\\n\\tdisplay: flex;\\n\\tgap: 0 10px;\\n\\tcolor: var(--color-text-lighter);\\n\\n\\t&::v-deep .material-design-icon {\\n\\t\\talign-self: flex-start;\\n\\t\\tmargin-top: 2px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"section[data-v-84fca724]{padding:10px 10px}section[data-v-84fca724] button:disabled{cursor:default}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/LocaleSection/LocaleSection.vue\"],\"names\":[],\"mappings\":\"AACA,yBACC,iBAAA,CAEA,yCACC,cAAA\",\"sourcesContent\":[\"\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"html{scroll-behavior:smooth}@media screen and (prefers-reduced-motion: reduce){html{scroll-behavior:auto}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue\"],\"names\":[],\"mappings\":\"AACA,KACC,sBAAA,CAEA,mDAHD,KAIE,oBAAA,CAAA\",\"sourcesContent\":[\"\\nhtml {\\n\\tscroll-behavior: smooth;\\n\\n\\t@media screen and (prefers-reduced-motion: reduce) {\\n\\t\\tscroll-behavior: auto;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"a[data-v-1caba458]{display:block;height:44px;width:290px;line-height:44px;padding:0 16px;margin:14px auto;border-radius:var(--border-radius-pill);opacity:.4;background-color:rgba(0,0,0,0)}a .anchor-icon[data-v-1caba458]{display:inline-block;vertical-align:middle;margin-top:6px;margin-right:8px}a[data-v-1caba458]:hover,a[data-v-1caba458]:focus,a[data-v-1caba458]:active{opacity:.8;background-color:rgba(127,127,127,.25)}a.disabled[data-v-1caba458]{pointer-events:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/EditProfileAnchorLink.vue\"],\"names\":[],\"mappings\":\"AACA,mBACC,aAAA,CACA,WAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,gBAAA,CACA,uCAAA,CACA,UAAA,CACA,8BAAA,CAEA,gCACC,oBAAA,CACA,qBAAA,CACA,cAAA,CACA,gBAAA,CAGD,4EAGC,UAAA,CACA,sCAAA,CAGD,4BACC,mBAAA\",\"sourcesContent\":[\"\\na {\\n\\tdisplay: block;\\n\\theight: 44px;\\n\\twidth: 290px;\\n\\tline-height: 44px;\\n\\tpadding: 0 16px;\\n\\tmargin: 14px auto;\\n\\tborder-radius: var(--border-radius-pill);\\n\\topacity: 0.4;\\n\\tbackground-color: transparent;\\n\\n\\t.anchor-icon {\\n\\t\\tdisplay: inline-block;\\n\\t\\tvertical-align: middle;\\n\\t\\tmargin-top: 6px;\\n\\t\\tmargin-right: 8px;\\n\\t}\\n\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\topacity: 0.8;\\n\\t\\tbackground-color: rgba(127, 127, 127, .25);\\n\\t}\\n\\n\\t&.disabled {\\n\\t\\tpointer-events: none;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".preview-card[data-v-61586aa5]{display:flex;flex-direction:column;position:relative;width:290px;height:116px;margin:14px auto;border-radius:var(--border-radius-large);background-color:var(--color-main-background);font-weight:bold;box-shadow:0 2px 9px var(--color-box-shadow)}.preview-card[data-v-61586aa5]:hover,.preview-card[data-v-61586aa5]:focus,.preview-card[data-v-61586aa5]:active{box-shadow:0 2px 12px var(--color-box-shadow)}.preview-card[data-v-61586aa5]:focus-visible{outline:var(--color-main-text) solid 1px;outline-offset:3px}.preview-card.disabled[data-v-61586aa5]{filter:grayscale(1);opacity:.5;cursor:default;box-shadow:0 0 3px var(--color-box-shadow)}.preview-card.disabled *[data-v-61586aa5],.preview-card.disabled[data-v-61586aa5] *{cursor:default}.preview-card__avatar[data-v-61586aa5]{position:absolute !important;top:40px;left:18px;z-index:1}.preview-card__avatar[data-v-61586aa5]:not(.avatardiv--unknown){box-shadow:0 0 0 3px var(--color-main-background) !important}.preview-card__header[data-v-61586aa5],.preview-card__footer[data-v-61586aa5]{position:relative;width:auto}.preview-card__header span[data-v-61586aa5],.preview-card__footer span[data-v-61586aa5]{position:absolute;left:78px;overflow:hidden;text-overflow:ellipsis;overflow-wrap:anywhere}@supports(-webkit-line-clamp: 2){.preview-card__header span[data-v-61586aa5],.preview-card__footer span[data-v-61586aa5]{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}}.preview-card__header[data-v-61586aa5]{height:70px;border-radius:var(--border-radius-large) var(--border-radius-large) 0 0;background-color:var(--color-primary);background-image:var(--gradient-primary-background)}.preview-card__header span[data-v-61586aa5]{bottom:0;color:var(--color-primary-text);font-size:18px;font-weight:bold;margin:0 4px 8px 0}.preview-card__footer[data-v-61586aa5]{height:46px}.preview-card__footer span[data-v-61586aa5]{top:0;color:var(--color-text-maxcontrast);font-size:14px;font-weight:normal;margin:4px 4px 0 0;line-height:1.3}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/ProfilePreviewCard.vue\"],\"names\":[],\"mappings\":\"AACA,+BACC,YAAA,CACA,qBAAA,CACA,iBAAA,CACA,WAAA,CACA,YAAA,CACA,gBAAA,CACA,wCAAA,CACA,6CAAA,CACA,gBAAA,CACA,4CAAA,CAEA,gHAGC,6CAAA,CAGD,6CACC,wCAAA,CACA,kBAAA,CAGD,wCACC,mBAAA,CACA,UAAA,CACA,cAAA,CACA,0CAAA,CAEA,oFAEC,cAAA,CAIF,uCAEC,4BAAA,CACA,QAAA,CACA,SAAA,CACA,SAAA,CAEA,gEACC,4DAAA,CAIF,8EAEC,iBAAA,CACA,UAAA,CAEA,wFACC,iBAAA,CACA,SAAA,CACA,eAAA,CACA,sBAAA,CACA,sBAAA,CAEA,iCAPD,wFAQE,mBAAA,CACA,oBAAA,CACA,2BAAA,CAAA,CAKH,uCACC,WAAA,CACA,uEAAA,CACA,qCAAA,CACA,mDAAA,CAEA,4CACC,QAAA,CACA,+BAAA,CACA,cAAA,CACA,gBAAA,CACA,kBAAA,CAIF,uCACC,WAAA,CAEA,4CACC,KAAA,CACA,mCAAA,CACA,cAAA,CACA,kBAAA,CACA,kBAAA,CACA,eAAA\",\"sourcesContent\":[\"\\n.preview-card {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tposition: relative;\\n\\twidth: 290px;\\n\\theight: 116px;\\n\\tmargin: 14px auto;\\n\\tborder-radius: var(--border-radius-large);\\n\\tbackground-color: var(--color-main-background);\\n\\tfont-weight: bold;\\n\\tbox-shadow: 0 2px 9px var(--color-box-shadow);\\n\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\tbox-shadow: 0 2px 12px var(--color-box-shadow);\\n\\t}\\n\\n\\t&:focus-visible {\\n\\t\\toutline: var(--color-main-text) solid 1px;\\n\\t\\toutline-offset: 3px;\\n\\t}\\n\\n\\t&.disabled {\\n\\t\\tfilter: grayscale(1);\\n\\t\\topacity: 0.5;\\n\\t\\tcursor: default;\\n\\t\\tbox-shadow: 0 0 3px var(--color-box-shadow);\\n\\n\\t\\t& *,\\n\\t\\t&::v-deep * {\\n\\t\\t\\tcursor: default;\\n\\t\\t}\\n\\t}\\n\\n\\t&__avatar {\\n\\t\\t// Override Avatar component position to fix positioning on rerender\\n\\t\\tposition: absolute !important;\\n\\t\\ttop: 40px;\\n\\t\\tleft: 18px;\\n\\t\\tz-index: 1;\\n\\n\\t\\t&:not(.avatardiv--unknown) {\\n\\t\\t\\tbox-shadow: 0 0 0 3px var(--color-main-background) !important;\\n\\t\\t}\\n\\t}\\n\\n\\t&__header,\\n\\t&__footer {\\n\\t\\tposition: relative;\\n\\t\\twidth: auto;\\n\\n\\t\\tspan {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tleft: 78px;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\toverflow-wrap: anywhere;\\n\\n\\t\\t\\t@supports (-webkit-line-clamp: 2) {\\n\\t\\t\\t\\tdisplay: -webkit-box;\\n\\t\\t\\t\\t-webkit-line-clamp: 2;\\n\\t\\t\\t\\t-webkit-box-orient: vertical;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__header {\\n\\t\\theight: 70px;\\n\\t\\tborder-radius: var(--border-radius-large) var(--border-radius-large) 0 0;\\n\\t\\tbackground-color: var(--color-primary);\\n\\t\\tbackground-image: var(--gradient-primary-background);\\n\\n\\t\\tspan {\\n\\t\\t\\tbottom: 0;\\n\\t\\t\\tcolor: var(--color-primary-text);\\n\\t\\t\\tfont-size: 18px;\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tmargin: 0 4px 8px 0;\\n\\t\\t}\\n\\t}\\n\\n\\t&__footer {\\n\\t\\theight: 46px;\\n\\n\\t\\tspan {\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\tfont-size: 14px;\\n\\t\\t\\tfont-weight: normal;\\n\\t\\t\\tmargin: 4px 4px 0 0;\\n\\t\\t\\tline-height: 1.3;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"section[data-v-cf64d964]{padding:10px 10px}section[data-v-cf64d964] button:disabled{cursor:default}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/ProfileSection/ProfileSection.vue\"],\"names\":[],\"mappings\":\"AACA,yBACC,iBAAA,CAEA,yCACC,cAAA\",\"sourcesContent\":[\"\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"section[data-v-a07dbf96]{padding:30px;max-width:900px;width:100%}section em[data-v-a07dbf96]{display:block;margin:16px 0}section em.disabled[data-v-a07dbf96]{filter:grayscale(1);opacity:.5;cursor:default;pointer-events:none}section em.disabled *[data-v-a07dbf96],section em.disabled[data-v-a07dbf96] *{cursor:default;pointer-events:none}section .visibility-dropdowns[data-v-a07dbf96]{display:grid;gap:10px 40px}@media(min-width: 1200px){section[data-v-a07dbf96]{width:940px}section .visibility-dropdowns[data-v-a07dbf96]{grid-auto-flow:column}}@media(max-width: 1200px){section[data-v-a07dbf96]{width:470px}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/ProfileVisibilitySection.vue\"],\"names\":[],\"mappings\":\"AACA,yBACC,YAAA,CACA,eAAA,CACA,UAAA,CAEA,4BACC,aAAA,CACA,aAAA,CAEA,qCACC,mBAAA,CACA,UAAA,CACA,cAAA,CACA,mBAAA,CAEA,8EAEC,cAAA,CACA,mBAAA,CAKH,+CACC,YAAA,CACA,aAAA,CAGD,0BA5BD,yBA6BE,WAAA,CAEA,+CACC,qBAAA,CAAA,CAIF,0BApCD,yBAqCE,WAAA,CAAA\",\"sourcesContent\":[\"\\nsection {\\n\\tpadding: 30px;\\n\\tmax-width: 900px;\\n\\twidth: 100%;\\n\\n\\tem {\\n\\t\\tdisplay: block;\\n\\t\\tmargin: 16px 0;\\n\\n\\t\\t&.disabled {\\n\\t\\t\\tfilter: grayscale(1);\\n\\t\\t\\topacity: 0.5;\\n\\t\\t\\tcursor: default;\\n\\t\\t\\tpointer-events: none;\\n\\n\\t\\t\\t& *,\\n\\t\\t\\t&::v-deep * {\\n\\t\\t\\t\\tcursor: default;\\n\\t\\t\\t\\tpointer-events: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t.visibility-dropdowns {\\n\\t\\tdisplay: grid;\\n\\t\\tgap: 10px 40px;\\n\\t}\\n\\n\\t@media (min-width: 1200px) {\\n\\t\\twidth: 940px;\\n\\n\\t\\t.visibility-dropdowns {\\n\\t\\t\\tgrid-auto-flow: column;\\n\\t\\t}\\n\\t}\\n\\n\\t@media (max-width: 1200px) {\\n\\t\\twidth: 470px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".visibility-container[data-v-b13d20da]{display:flex;width:max-content}.visibility-container.disabled[data-v-b13d20da]{filter:grayscale(1);opacity:.5;cursor:default;pointer-events:none}.visibility-container.disabled *[data-v-b13d20da],.visibility-container.disabled[data-v-b13d20da] *{cursor:default;pointer-events:none}.visibility-container label[data-v-b13d20da]{color:var(--color-text-lighter);width:150px;line-height:50px}.visibility-container__select[data-v-b13d20da]{width:270px;max-width:40vw}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/ProfileVisibilitySection/VisibilityDropdown.vue\"],\"names\":[],\"mappings\":\"AACA,uCACC,YAAA,CACA,iBAAA,CAEA,gDACC,mBAAA,CACA,UAAA,CACA,cAAA,CACA,mBAAA,CAEA,oGAEC,cAAA,CACA,mBAAA,CAIF,6CACC,+BAAA,CACA,WAAA,CACA,gBAAA,CAGD,+CACC,WAAA,CACA,cAAA\",\"sourcesContent\":[\"\\n.visibility-container {\\n\\tdisplay: flex;\\n\\twidth: max-content;\\n\\n\\t&.disabled {\\n\\t\\tfilter: grayscale(1);\\n\\t\\topacity: 0.5;\\n\\t\\tcursor: default;\\n\\t\\tpointer-events: none;\\n\\n\\t\\t& *,\\n\\t\\t&::v-deep * {\\n\\t\\t\\tcursor: default;\\n\\t\\t\\tpointer-events: none;\\n\\t\\t}\\n\\t}\\n\\n\\tlabel {\\n\\t\\tcolor: var(--color-text-lighter);\\n\\t\\twidth: 150px;\\n\\t\\tline-height: 50px;\\n\\t}\\n\\n\\t&__select {\\n\\t\\twidth: 270px;\\n\\t\\tmax-width: 40vw;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"section[data-v-6eb7d8e0]{padding:10px 10px}section[data-v-6eb7d8e0] button:disabled{cursor:default}section .property[data-v-6eb7d8e0]{display:grid;align-items:center}section .property textarea[data-v-6eb7d8e0]{resize:vertical;grid-area:1/1;width:100%}section .property input[data-v-6eb7d8e0]{grid-area:1/1;width:100%}section .property .property__actions-container[data-v-6eb7d8e0]{grid-area:1/1;justify-self:flex-end;align-self:flex-end;height:30px;display:flex;gap:0 2px;margin-right:5px;margin-bottom:5px}section .property__helper-text-message[data-v-6eb7d8e0]{padding:4px 0;display:flex;align-items:center}section .property__helper-text-message__icon[data-v-6eb7d8e0]{margin-right:8px;align-self:start;margin-top:4px}section .property__helper-text-message--error[data-v-6eb7d8e0]{color:var(--color-error)}section .fade-enter[data-v-6eb7d8e0],section .fade-leave-to[data-v-6eb7d8e0]{opacity:0}section .fade-enter-active[data-v-6eb7d8e0]{transition:opacity 200ms ease-out}section .fade-leave-active[data-v-6eb7d8e0]{transition:opacity 300ms ease-out}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/shared/AccountPropertySection.vue\"],\"names\":[],\"mappings\":\"AACA,yBACC,iBAAA,CAEA,yCACC,cAAA,CAGD,mCACC,YAAA,CACA,kBAAA,CAEA,4CACC,eAAA,CACA,aAAA,CACA,UAAA,CAGD,yCACC,aAAA,CACA,UAAA,CAGD,gEACC,aAAA,CACA,qBAAA,CACA,mBAAA,CACA,WAAA,CAEA,YAAA,CACA,SAAA,CACA,gBAAA,CACA,iBAAA,CAIF,wDACC,aAAA,CACA,YAAA,CACA,kBAAA,CAEA,8DACC,gBAAA,CACA,gBAAA,CACA,cAAA,CAGD,+DACC,wBAAA,CAIF,6EAEC,SAAA,CAGD,4CACC,iCAAA,CAGD,4CACC,iCAAA\",\"sourcesContent\":[\"\\nsection {\\n\\tpadding: 10px 10px;\\n\\n\\t&::v-deep button:disabled {\\n\\t\\tcursor: default;\\n\\t}\\n\\n\\t.property {\\n\\t\\tdisplay: grid;\\n\\t\\talign-items: center;\\n\\n\\t\\ttextarea {\\n\\t\\t\\tresize: vertical;\\n\\t\\t\\tgrid-area: 1 / 1;\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\n\\t\\tinput {\\n\\t\\t\\tgrid-area: 1 / 1;\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\n\\t\\t.property__actions-container {\\n\\t\\t\\tgrid-area: 1 / 1;\\n\\t\\t\\tjustify-self: flex-end;\\n\\t\\t\\talign-self: flex-end;\\n\\t\\t\\theight: 30px;\\n\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tgap: 0 2px;\\n\\t\\t\\tmargin-right: 5px;\\n\\t\\t\\tmargin-bottom: 5px;\\n\\t\\t}\\n\\t}\\n\\n\\t.property__helper-text-message {\\n\\t\\tpadding: 4px 0;\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\n\\t\\t&__icon {\\n\\t\\t\\tmargin-right: 8px;\\n\\t\\t\\talign-self: start;\\n\\t\\t\\tmargin-top: 4px;\\n\\t\\t}\\n\\n\\t\\t&--error {\\n\\t\\t\\tcolor: var(--color-error);\\n\\t\\t}\\n\\t}\\n\\n\\t.fade-enter,\\n\\t.fade-leave-to {\\n\\t\\topacity: 0;\\n\\t}\\n\\n\\t.fade-enter-active {\\n\\t\\ttransition: opacity 200ms ease-out;\\n\\t}\\n\\n\\t.fade-leave-active {\\n\\t\\ttransition: opacity 300ms ease-out;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".federation-actions[data-v-4ea07669],.federation-actions--additional[data-v-4ea07669]{opacity:.4 !important}.federation-actions[data-v-4ea07669]:hover,.federation-actions[data-v-4ea07669]:focus,.federation-actions[data-v-4ea07669]:active,.federation-actions--additional[data-v-4ea07669]:hover,.federation-actions--additional[data-v-4ea07669]:focus,.federation-actions--additional[data-v-4ea07669]:active{opacity:.8 !important}.federation-actions--additional[data-v-4ea07669] button{padding-bottom:7px;height:30px !important;min-height:30px !important;width:30px !important;min-width:30px !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/shared/FederationControl.vue\"],\"names\":[],\"mappings\":\"AACA,sFAEC,qBAAA,CAEA,wSAGC,qBAAA,CAKD,wDAEC,kBAAA,CACA,sBAAA,CACA,0BAAA,CACA,qBAAA,CACA,yBAAA\",\"sourcesContent\":[\"\\n.federation-actions,\\n.federation-actions--additional {\\n\\topacity: 0.4 !important;\\n\\n\\t&:hover,\\n\\t&:focus,\\n\\t&:active {\\n\\t\\topacity: 0.8 !important;\\n\\t}\\n}\\n\\n.federation-actions--additional {\\n\\t&::v-deep button {\\n\\t\\t// TODO remove this hack\\n\\t\\tpadding-bottom: 7px;\\n\\t\\theight: 30px !important;\\n\\t\\tmin-height: 30px !important;\\n\\t\\twidth: 30px !important;\\n\\t\\tmin-width: 30px !important;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".federation-actions__btn[data-v-404f7a30] p{width:150px !important;padding:8px 0 !important;color:var(--color-main-text) !important;font-size:12.8px !important;line-height:1.5em !important}.federation-actions__btn--active[data-v-404f7a30]{background-color:var(--color-primary-light) !important;box-shadow:inset 2px 0 var(--color-primary) !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/shared/FederationControlAction.vue\"],\"names\":[],\"mappings\":\"AAEC,4CACC,sBAAA,CACA,wBAAA,CACA,uCAAA,CACA,2BAAA,CACA,4BAAA,CAIF,kDACC,sDAAA,CACA,sDAAA\",\"sourcesContent\":[\"\\n.federation-actions__btn {\\n\\t&::v-deep p {\\n\\t\\twidth: 150px !important;\\n\\t\\tpadding: 8px 0 !important;\\n\\t\\tcolor: var(--color-main-text) !important;\\n\\t\\tfont-size: 12.8px !important;\\n\\t\\tline-height: 1.5em !important;\\n\\t}\\n}\\n\\n.federation-actions__btn--active {\\n\\tbackground-color: var(--color-primary-light) !important;\\n\\tbox-shadow: inset 2px 0 var(--color-primary) !important;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".headerbar-label[data-v-b43fcc0c]{font-weight:normal;display:inline-flex;width:100%;margin:12px 0 0 0;gap:8px;align-items:center;font-size:16px;color:var(--color-text-light)}.headerbar-label.profile-property[data-v-b43fcc0c]{height:38px}.headerbar-label.setting-property[data-v-b43fcc0c]{height:44px}.headerbar-label label[data-v-b43fcc0c]{cursor:pointer}.federation-control[data-v-b43fcc0c]{margin:0}.button-vue[data-v-b43fcc0c]{margin:0 0 0 auto !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/PersonalInfo/shared/HeaderBar.vue\"],\"names\":[],\"mappings\":\"AACA,kCACC,kBAAA,CACA,mBAAA,CACA,UAAA,CACA,iBAAA,CACA,OAAA,CACA,kBAAA,CACA,cAAA,CACA,6BAAA,CAEA,mDACC,WAAA,CAGD,mDACC,WAAA,CAGD,wCACC,cAAA,CAIF,qCACC,QAAA,CAGD,6BACC,4BAAA\",\"sourcesContent\":[\"\\n.headerbar-label {\\n\\tfont-weight: normal;\\n\\tdisplay: inline-flex;\\n\\twidth: 100%;\\n\\tmargin: 12px 0 0 0;\\n\\tgap: 8px;\\n\\talign-items: center;\\n\\tfont-size: 16px;\\n\\tcolor: var(--color-text-light);\\n\\n\\t&.profile-property {\\n\\t\\theight: 38px;\\n\\t}\\n\\n\\t&.setting-property {\\n\\t\\theight: 44px;\\n\\t}\\n\\n\\tlabel {\\n\\t\\tcursor: pointer;\\n\\t}\\n}\\n\\n.federation-control {\\n\\tmargin: 0;\\n}\\n\\n.button-vue {\\n\\tmargin: 0 0 0 auto !important;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 30094,\n\t\"./hi.js\": 30094,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 4418;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t4418: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], () => (__webpack_require__(71945)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","name","components","NcActionButton","props","activeScope","type","String","required","displayName","handleScopeChange","Function","default","iconClass","isSupportedScope","Boolean","tooltipDisabled","tooltip","methods","updateScope","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_c","_self","staticClass","class","attrs","on","$event","stopPropagation","preventDefault","apply","arguments","_v","_s","ACCOUNT_PROPERTY_ENUM","Object","freeze","ADDRESS","AVATAR","BIOGRAPHY","DISPLAYNAME","EMAIL_COLLECTION","EMAIL","HEADLINE","NOTIFICATION_EMAIL","FEDIVERSE","ORGANISATION","PHONE","PROFILE_ENABLED","ROLE","TWITTER","WEBSITE","ACCOUNT_PROPERTY_READABLE_ENUM","t","NAME_READABLE_ENUM","PROFILE_READABLE_ENUM","PROFILE_VISIBILITY","PROPERTY_READABLE_KEYS_ENUM","ACCOUNT_SETTING_PROPERTY_ENUM","LANGUAGE","LOCALE","ACCOUNT_SETTING_PROPERTY_READABLE_ENUM","SCOPE_ENUM","PRIVATE","LOCAL","FEDERATED","PUBLISHED","PROPERTY_READABLE_SUPPORTED_SCOPES_ENUM","UNPUBLISHED_READABLE_PROPERTIES","SCOPE_SUFFIX","SCOPE_PROPERTY_ENUM","DEFAULT_ADDITIONAL_EMAIL_SCOPE","VERIFICATION_ENUM","NOT_VERIFIED","VERIFICATION_IN_PROGRESS","VERIFIED","VALIDATE_EMAIL_REGEX","savePrimaryAccountProperty","async","accountProperty","value","userId","getCurrentUser","uid","url","generateOcsUrl","confirmPassword","axios","key","data","getLoggerBuilder","setApp","detectUser","build","handleError","error","message","_error$response","fullMessage","response","status","showError","logger","federationEnabled","lookupServerUploadEnabled","loadState","NcActions","FederationControlAction","readable","validator","values","includes","additional","additionalValue","disabled","handleAdditionalScopeChange","scope","readableLowerCase","toLocaleLowerCase","initialScope","computed","ariaLabel","property","scopeDisplayNameLowerCase","scopeIcon","federationScopes","supportedScopes","scopes","push","$emit","updateAdditionalScope","updatePrimaryScope","_responseData$ocs","_responseData$ocs$met","responseData","concat","savePrimaryAccountPropertyScope","handleResponse","ocs","meta","e","errorMessage","_responseData$ocs2","_responseData$ocs2$me","_ref","_l","federationScope","changeScope","FederationControl","NcButton","Plus","inputId","isEditable","isMultiValueSupported","isValidSection","isHeading","localScope","isProfileProperty","isSettingProperty","onAddAdditional","onScopeChange","tag","_e","scopedSlots","_u","fn","proxy","avatar","avatarChangeSupported","VALID_MIME_TYPES","picker","getFilePickerBuilder","setMultiSelect","setMimeTypeFilter","setModal","setType","allowDirectories","Delete","Folder","HeaderBar","NcAvatar","Upload","VueCropper","showCropper","loading","version","oc_userconfig","isGenerated","generated","validMimeTypes","cropperOptions","aspectRatio","viewMode","guides","center","highlight","autoCropArea","minContainerWidth","minContainerHeight","created","subscribe","handleDisplayNameUpdate","beforeDestroy","unsubscribe","activateLocalFilePicker","$refs","input","click","onChange","file","target","files","cancel","reader","FileReader","onload","cropper","replace","result","readAsDataURL","path","pick","generateUrl","handleAvatarUpdate","tempAvatar","encodeURIComponent","OC","requestToken","Math","floor","random","saveAvatar","canvasData","getCroppedCanvas","scaleFactor","width","scale","toBlob","blob","formData","FormData","append","Date","now","emit","$set","openFilePicker","removeAvatar","ref","join","directives","rawName","expression","_b","groups","quota","totalSpace","usage","usageRelative","Account","CircleSlice","NcProgressBar","quotaText","domProps","AlertCircle","AlertOctagon","Check","placeholder","multiLine","onValidate","onSave","initialValue","helperText","showCheckmarkIcon","showErrorIcon","onPropertyChange","debouncePropertyChange","trim","debounce","validationMessage","updateProperty","setTimeout","displayNameChangeSupported","AccountPropertySection","savePrimaryEmail","email","removeAdditionalEmail","collection","savePrimaryEmailScope","saveAdditionalEmailScope","collectionScope","validateEmail","test","slice","length","index","Number","primary","activeNotificationEmail","localVerificationState","propertyReadable","initialEmail","deleteDisabled","deleteEmailLabel","setNotificationMailDisabled","setNotificationMailLabel","isNotificationEmail","federationDisabled","inputPlaceholder","mounted","$nextTick","_this$$refs$email","focus","onEmailChange","debounceEmailChange","_this$$refs$email2","updatePrimaryEmail","addAdditionalEmail","updateAdditionalEmail","deleteAdditionalEmail","saveAdditionalEmail","_responseData$ocs3","_responseData$ocs3$me","newNotificationMailValue","saveNotificationEmail","notificationEmail","_responseData$ocs4","_responseData$ocs4$me","prevEmail","newEmail","_responseData$ocs5","_responseData$ocs5$me","handleDeleteAdditionalEmail","undefined","deleteEmail","setNotificationMail","emailMap","additionalEmails","primaryEmail","Email","map","properties","generateUniqueKey","firstAdditionalEmail","every","primaryEmailValue","get","set","onAddAdditionalEmail","onDeleteAdditionalEmail","$delete","deletedEmail","deleteFirstAdditionalEmail","handleDeleteFirstAdditionalEmail","toString","substring","onUpdateEmail","onUpdateNotificationEmail","additionalEmail","parseInt","locallyVerified","defaultPhoneRegion","phone","isValidPhoneNumber","location","website","URL","validateUrl","twitter","fediverse","commonLanguages","Array","otherLanguages","language","initialLanguage","allLanguages","reduce","acc","code","constructLanguage","updateLanguage","reloadPage","languageCode","_ref2","reload","onLanguageChange","commonLanguage","otherLanguage","languageMap","activeLanguage","Language","Web","locale","localesForLanguage","otherLocales","initialLocale","example","date","moment","format","time","firstDayOfWeek","window","dayNames","firstDay","allLocales","setInterval","refreshExample","constructLocale","updateLocale","localeCode","onLocaleChange","currentLocale","localeMap","activeLocale","Locale","ChevronDownIcon","profileEnabled","_g","$listeners","NcCheckboxRadioSwitch","isProfileEnabled","saveEnableProfile","organisation","profilePageLink","EditProfileAnchorLink","ProfileCheckbox","ProfilePreviewCard","handleOrganisationUpdate","role","headline","biography","VISIBILITY_ENUM","SHOW","SHOW_USERS_ONLY","HIDE","VISIBILITY_PROPERTY_ENUM","label","NcSelect","paramId","displayId","visibility","initialVisibility","visibilityObject","visibilityOptions","handleProfileEnabledUpdate","updateVisibility","saveProfileParameterVisibility","onVisibilityChange","profileConfig","compareParams","a","b","appId","localeCompare","VisibilityDropdown","heading","visibilityParams","entries","id","sort","marginLeft","matchMedia","matches","getComputedStyle","document","getElementById","getPropertyValue","rows","ceil","onresize","style","gridTemplateRows","param","__webpack_nonce__","btoa","getRequestToken","profileEnabledGlobally","Vue","AvatarView","AvatarSection","DetailsView","DetailsSection","DisplayNameView","DisplayNameSection","EmailView","EmailSection","PhoneView","PhoneSection","LocationView","LocationSection","WebsiteView","WebsiteSection","TwitterView","TwitterSection","FediverseView","FediverseSection","LanguageView","LanguageSection","LocaleView","LocaleSection","$mount","ProfileView","ProfileSection","OrganisationView","OrganisationSection","RoleView","RoleSection","HeadlineView","HeadlineSection","BiographyView","BiographySection","ProfileVisibilityView","ProfileVisibilitySection","___CSS_LOADER_EXPORT___","module","webpackContext","req","webpackContextResolve","__webpack_require__","o","Error","keys","resolve","exports","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","call","m","O","chunkIds","priority","notFulfilled","Infinity","i","fulfilled","j","splice","r","n","getter","__esModule","d","definition","defineProperty","enumerable","g","globalThis","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","baseURI","self","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/lib/l10n/cs.js b/lib/l10n/cs.js
index 7c08e08c896..d950f6b1969 100644
--- a/lib/l10n/cs.js
+++ b/lib/l10n/cs.js
@@ -114,6 +114,7 @@ OC.L10N.register(
"Address" : "Adresa",
"Profile picture" : "Profilový obrázek",
"About" : "O uživateli",
+ "Display name" : "Zobrazované jméno",
"Headline" : "Nadpis",
"Organisation" : "Organizace",
"Role" : "Role",
diff --git a/lib/l10n/cs.json b/lib/l10n/cs.json
index 7cbddca4bc2..13a6b4fdef8 100644
--- a/lib/l10n/cs.json
+++ b/lib/l10n/cs.json
@@ -112,6 +112,7 @@
"Address" : "Adresa",
"Profile picture" : "Profilový obrázek",
"About" : "O uživateli",
+ "Display name" : "Zobrazované jméno",
"Headline" : "Nadpis",
"Organisation" : "Organizace",
"Role" : "Role",
diff --git a/lib/l10n/de.js b/lib/l10n/de.js
index 991e483e0db..283af683d7b 100644
--- a/lib/l10n/de.js
+++ b/lib/l10n/de.js
@@ -114,6 +114,7 @@ OC.L10N.register(
"Address" : "Adresse",
"Profile picture" : "Profilbild",
"About" : "Über",
+ "Display name" : "Anzeigename",
"Headline" : "Überschrift",
"Organisation" : "Organisation",
"Role" : "Funktion",
diff --git a/lib/l10n/de.json b/lib/l10n/de.json
index e2b785b0288..74a7799fec6 100644
--- a/lib/l10n/de.json
+++ b/lib/l10n/de.json
@@ -112,6 +112,7 @@
"Address" : "Adresse",
"Profile picture" : "Profilbild",
"About" : "Über",
+ "Display name" : "Anzeigename",
"Headline" : "Überschrift",
"Organisation" : "Organisation",
"Role" : "Funktion",
diff --git a/lib/private/Console/Application.php b/lib/private/Console/Application.php
index 0ed436fb0e6..94956364390 100644
--- a/lib/private/Console/Application.php
+++ b/lib/private/Console/Application.php
@@ -178,17 +178,13 @@ class Application {
* for writing outputs.
* @return void
*/
- private function writeMaintenanceModeInfo(
- InputInterface $input, ConsoleOutputInterface $output
- ) {
+ private function writeMaintenanceModeInfo(InputInterface $input, ConsoleOutputInterface $output): void {
if ($input->getArgument('command') !== '_completion'
&& $input->getArgument('command') !== 'maintenance:mode'
&& $input->getArgument('command') !== 'status') {
$errOutput = $output->getErrorOutput();
- $errOutput->writeln(
- '<comment>Nextcloud is in maintenance mode, hence the database isn\'t accessible.' . PHP_EOL .
- 'Cannot perform any command except \'maintenance:mode --off\'</comment>' . PHP_EOL
- );
+ $errOutput->writeln('<comment>Nextcloud is in maintenance mode, no apps are loaded.</comment>');
+ $errOutput->writeln('<comment>Commands provided by apps are unavailable.</comment>');
}
}
diff --git a/lib/public/Log/ILogFactory.php b/lib/public/Log/ILogFactory.php
index 6bbcf93bca8..e0128d6b11c 100644
--- a/lib/public/Log/ILogFactory.php
+++ b/lib/public/Log/ILogFactory.php
@@ -44,7 +44,7 @@ interface ILogFactory {
* @param string $path
* @return ILogger
* @since 14.0.0
- * @deprecated use \OCP\Log\ILogFactory::getCustomPsrLogger
+ * @deprecated 22.0.0 Use \OCP\Log\ILogFactory::getCustomPsrLogger
* @see \OCP\Log\ILogFactory::getCustomPsrLogger
*/
public function getCustomLogger(string $path): ILogger;