summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/dav/l10n/mk.js10
-rw-r--r--apps/dav/l10n/mk.json10
-rw-r--r--apps/dav/lib/CalDAV/CalDavBackend.php13
-rw-r--r--apps/dav/tests/unit/CalDAV/CalDavBackendTest.php69
-rw-r--r--apps/files/l10n/ar.js17
-rw-r--r--apps/files/l10n/ar.json17
-rw-r--r--apps/files/l10n/ca.js17
-rw-r--r--apps/files/l10n/ca.json17
-rw-r--r--apps/files/l10n/cs.js2
-rw-r--r--apps/files/l10n/cs.json2
-rw-r--r--apps/files/l10n/de_DE.js17
-rw-r--r--apps/files/l10n/de_DE.json17
-rw-r--r--apps/files/l10n/el.js2
-rw-r--r--apps/files/l10n/el.json2
-rw-r--r--apps/files/l10n/en_GB.js17
-rw-r--r--apps/files/l10n/en_GB.json17
-rw-r--r--apps/files/l10n/es.js5
-rw-r--r--apps/files/l10n/es.json5
-rw-r--r--apps/files/l10n/eu.js2
-rw-r--r--apps/files/l10n/eu.json2
-rw-r--r--apps/files/l10n/fi.js12
-rw-r--r--apps/files/l10n/fi.json12
-rw-r--r--apps/files/l10n/fr.js2
-rw-r--r--apps/files/l10n/fr.json2
-rw-r--r--apps/files/l10n/gl.js2
-rw-r--r--apps/files/l10n/gl.json2
-rw-r--r--apps/files/l10n/hu.js2
-rw-r--r--apps/files/l10n/hu.json2
-rw-r--r--apps/files/l10n/it.js20
-rw-r--r--apps/files/l10n/it.json20
-rw-r--r--apps/files/l10n/ja.js33
-rw-r--r--apps/files/l10n/ja.json33
-rw-r--r--apps/files/l10n/ko.js2
-rw-r--r--apps/files/l10n/ko.json2
-rw-r--r--apps/files/l10n/mk.js7
-rw-r--r--apps/files/l10n/mk.json7
-rw-r--r--apps/files/l10n/pl.js2
-rw-r--r--apps/files/l10n/pl.json2
-rw-r--r--apps/files/l10n/pt_BR.js2
-rw-r--r--apps/files/l10n/pt_BR.json2
-rw-r--r--apps/files/l10n/ru.js2
-rw-r--r--apps/files/l10n/ru.json2
-rw-r--r--apps/files/l10n/sr.js17
-rw-r--r--apps/files/l10n/sr.json17
-rw-r--r--apps/files/l10n/sv.js17
-rw-r--r--apps/files/l10n/sv.json17
-rw-r--r--apps/files/l10n/tr.js17
-rw-r--r--apps/files/l10n/tr.json17
-rw-r--r--apps/files/l10n/uk.js2
-rw-r--r--apps/files/l10n/uk.json2
-rw-r--r--apps/files/l10n/zh_CN.js2
-rw-r--r--apps/files/l10n/zh_CN.json2
-rw-r--r--apps/files/l10n/zh_HK.js17
-rw-r--r--apps/files/l10n/zh_HK.json17
-rw-r--r--apps/files/l10n/zh_TW.js17
-rw-r--r--apps/files/l10n/zh_TW.json17
-rw-r--r--apps/files_sharing/l10n/es.js1
-rw-r--r--apps/files_sharing/l10n/es.json1
-rw-r--r--apps/files_sharing/l10n/it.js1
-rw-r--r--apps/files_sharing/l10n/it.json1
-rw-r--r--apps/files_sharing/l10n/ja.js34
-rw-r--r--apps/files_sharing/l10n/ja.json34
-rw-r--r--apps/files_trashbin/src/actions/restoreAction.ts3
-rw-r--r--apps/files_trashbin/src/services/trashbin.ts3
-rw-r--r--apps/files_versions/l10n/es.js1
-rw-r--r--apps/files_versions/l10n/es.json1
-rw-r--r--apps/files_versions/l10n/it.js1
-rw-r--r--apps/files_versions/l10n/it.json1
-rw-r--r--apps/files_versions/l10n/mk.js1
-rw-r--r--apps/files_versions/l10n/mk.json1
-rw-r--r--apps/files_versions/src/components/Version.vue6
-rw-r--r--apps/settings/l10n/fr.js6
-rw-r--r--apps/settings/l10n/fr.json6
-rw-r--r--apps/systemtags/l10n/es.js4
-rw-r--r--apps/systemtags/l10n/es.json4
-rw-r--r--apps/systemtags/l10n/it.js4
-rw-r--r--apps/systemtags/l10n/it.json4
-rw-r--r--apps/theming/l10n/mk.js1
-rw-r--r--apps/theming/l10n/mk.json1
-rw-r--r--core/l10n/ca.js2
-rw-r--r--core/l10n/ca.json2
-rw-r--r--core/l10n/fi.js2
-rw-r--r--core/l10n/fi.json2
-rw-r--r--dist/files_trashbin-main.js4
-rw-r--r--dist/files_trashbin-main.js.map2
-rw-r--r--dist/files_versions-files_versions.js4
-rw-r--r--dist/files_versions-files_versions.js.map2
-rw-r--r--lib/l10n/fr.js2
-rw-r--r--lib/l10n/fr.json2
-rw-r--r--lib/l10n/mk.js1
-rw-r--r--lib/l10n/mk.json1
91 files changed, 728 insertions, 28 deletions
diff --git a/apps/dav/l10n/mk.js b/apps/dav/l10n/mk.js
index b7fface7767..16ff72fc3e7 100644
--- a/apps/dav/l10n/mk.js
+++ b/apps/dav/l10n/mk.js
@@ -73,8 +73,15 @@ OC.L10N.register(
"Where: %s" : "Каде: %s",
"%1$s via %2$s" : "%1$s преку %2$s",
"Cancelled: %1$s" : "Откажано: %1$s",
+ "\"%1$s\" has been canceled" : "\"%1$s\" е отакажана",
"Re: %1$s" : "Одг: %1$s",
+ "%1$s has accepted your invitation" : "%1$s ја прифати вашата покана",
+ "%1$s has declined your invitation" : "%1$s ја одби вашата покана",
+ "%1$s has responded to your invitation" : "%1$s одговори на вашата покана",
+ "Invitation updated: %1$s" : "Поканата е ажурирана: %1$s",
+ "%1$s updated the event \"%2$s\"" : "%1$s го ажурираше настанот \"%2$s\"",
"Invitation: %1$s" : "Покана: %1$s",
+ "%1$s would like to invite you to \"%2$s\"" : "%1$s сака да те покани во \"%2$s\"",
"Organizer:" : "Организатор:",
"Attendees:" : "Присутни:",
"Title:" : "Наслов:",
@@ -155,6 +162,7 @@ OC.L10N.register(
"Please contact the organizer directly." : "Контактирајте го организаторот директно.",
"Are you accepting the invitation?" : "Дали ја прифаќате поканата?",
"Tentative" : "Прелиминарно",
- "Your attendance was updated successfully." : "Вашето присуство е успешно ажурирано."
+ "Your attendance was updated successfully." : "Вашето присуство е успешно ажурирано.",
+ "%1$s has responded your invitation" : "%1$s одговори на вашата покана"
},
"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;");
diff --git a/apps/dav/l10n/mk.json b/apps/dav/l10n/mk.json
index 1c6b5e041ed..f93dd65b0e7 100644
--- a/apps/dav/l10n/mk.json
+++ b/apps/dav/l10n/mk.json
@@ -71,8 +71,15 @@
"Where: %s" : "Каде: %s",
"%1$s via %2$s" : "%1$s преку %2$s",
"Cancelled: %1$s" : "Откажано: %1$s",
+ "\"%1$s\" has been canceled" : "\"%1$s\" е отакажана",
"Re: %1$s" : "Одг: %1$s",
+ "%1$s has accepted your invitation" : "%1$s ја прифати вашата покана",
+ "%1$s has declined your invitation" : "%1$s ја одби вашата покана",
+ "%1$s has responded to your invitation" : "%1$s одговори на вашата покана",
+ "Invitation updated: %1$s" : "Поканата е ажурирана: %1$s",
+ "%1$s updated the event \"%2$s\"" : "%1$s го ажурираше настанот \"%2$s\"",
"Invitation: %1$s" : "Покана: %1$s",
+ "%1$s would like to invite you to \"%2$s\"" : "%1$s сака да те покани во \"%2$s\"",
"Organizer:" : "Организатор:",
"Attendees:" : "Присутни:",
"Title:" : "Наслов:",
@@ -153,6 +160,7 @@
"Please contact the organizer directly." : "Контактирајте го организаторот директно.",
"Are you accepting the invitation?" : "Дали ја прифаќате поканата?",
"Tentative" : "Прелиминарно",
- "Your attendance was updated successfully." : "Вашето присуство е успешно ажурирано."
+ "Your attendance was updated successfully." : "Вашето присуство е успешно ажурирано.",
+ "%1$s has responded your invitation" : "%1$s одговори на вашата покана"
},"pluralForm" :"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;"
} \ No newline at end of file
diff --git a/apps/dav/lib/CalDAV/CalDavBackend.php b/apps/dav/lib/CalDAV/CalDavBackend.php
index 4c1acfbfbfe..672543460c3 100644
--- a/apps/dav/lib/CalDAV/CalDavBackend.php
+++ b/apps/dav/lib/CalDAV/CalDavBackend.php
@@ -20,6 +20,7 @@
* @author Thomas Citharel <nextcloud@tcit.fr>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Vinicius Cubas Brand <vinicius@eita.org.br>
+ * @author Richard Steinmetz <richard@steinmetz.cloud>
*
* @license AGPL-3.0
*
@@ -1959,8 +1960,18 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
});
$result->closeCursor();
- return array_map(function ($o) {
+ return array_map(function ($o) use ($options) {
$calendarData = Reader::read($o['calendardata']);
+
+ // Expand recurrences if an explicit time range is requested
+ if ($calendarData instanceof VCalendar
+ && isset($options['timerange']['start'], $options['timerange']['end'])) {
+ $calendarData = $calendarData->expand(
+ $options['timerange']['start'],
+ $options['timerange']['end'],
+ );
+ }
+
$comps = $calendarData->getComponents();
$objects = [];
$timezones = [];
diff --git a/apps/dav/tests/unit/CalDAV/CalDavBackendTest.php b/apps/dav/tests/unit/CalDAV/CalDavBackendTest.php
index 1be42c22ed7..868205301dd 100644
--- a/apps/dav/tests/unit/CalDAV/CalDavBackendTest.php
+++ b/apps/dav/tests/unit/CalDAV/CalDavBackendTest.php
@@ -32,7 +32,9 @@
namespace OCA\DAV\Tests\unit\CalDAV;
+use DateInterval;
use DateTime;
+use DateTimeImmutable;
use DateTimeZone;
use OCA\DAV\CalDAV\CalDavBackend;
use OCA\DAV\CalDAV\Calendar;
@@ -1420,4 +1422,71 @@ EOD;
// Check that no crash occurs when prune is called without current changes
$deleted = $this->backend->pruneOutdatedSyncTokens(1);
}
+
+ public function testSearchAndExpandRecurrences() {
+ $calendarId = $this->createTestCalendar();
+ $calendarInfo = [
+ 'id' => $calendarId,
+ 'principaluri' => 'user1',
+ '{http://owncloud.org/ns}owner-principal' => 'user1',
+ ];
+
+ $calData = <<<'EOD'
+BEGIN:VCALENDAR
+PRODID:-//IDN nextcloud.com//Calendar app 4.5.0-alpha.2//EN
+CALSCALE:GREGORIAN
+VERSION:2.0
+BEGIN:VEVENT
+CREATED:20230921T133401Z
+DTSTAMP:20230921T133448Z
+LAST-MODIFIED:20230921T133448Z
+SEQUENCE:2
+UID:7b7d5d12-683c-48ce-973a-b3e1cb0bae2a
+DTSTART;VALUE=DATE:20230912
+DTEND;VALUE=DATE:20230913
+STATUS:CONFIRMED
+SUMMARY:Daily Event
+RRULE:FREQ=DAILY
+END:VEVENT
+END:VCALENDAR
+EOD;
+ $uri = static::getUniqueID('calobj');
+ $this->backend->createCalendarObject($calendarId, $uri, $calData);
+
+ $start = new DateTimeImmutable('2023-09-20T00:00:00Z');
+ $end = $start->add(new DateInterval('P14D'));
+
+ $results = $this->backend->search(
+ $calendarInfo,
+ '',
+ [],
+ [
+ 'timerange' => [
+ 'start' => $start,
+ 'end' => $end,
+ ]
+ ],
+ null,
+ null,
+ );
+
+ $this->assertCount(1, $results);
+ $this->assertCount(14, $results[0]['objects']);
+ foreach ($results as $result) {
+ foreach ($result['objects'] as $object) {
+ $this->assertEquals($object['UID'][0], '7b7d5d12-683c-48ce-973a-b3e1cb0bae2a');
+ $this->assertEquals($object['SUMMARY'][0], 'Daily Event');
+ $this->assertGreaterThanOrEqual(
+ $start->getTimestamp(),
+ $object['DTSTART'][0]->getTimestamp(),
+ 'Recurrence starting before requested start',
+ );
+ $this->assertLessThanOrEqual(
+ $end->getTimestamp(),
+ $object['DTSTART'][0]->getTimestamp(),
+ 'Recurrence starting after requested end',
+ );
+ }
+ }
+ }
}
diff --git a/apps/files/l10n/ar.js b/apps/files/l10n/ar.js
index 37b02d071b1..fcb3b50f4f2 100644
--- a/apps/files/l10n/ar.js
+++ b/apps/files/l10n/ar.js
@@ -188,6 +188,8 @@ OC.L10N.register(
"Could not rename \"{oldName}\", it does not exist any more" : "تعذر إعادة تسمية \"{oldName}\"، لم يعد موجودًا",
"The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name." : "الاسم \"{newName}\" مُستعمَلٌ سلفاً في المجلّد\"{dir}\". إختَر اسماً آخر رجاءً.",
"Could not rename \"{oldName}\"" : "تعذرت إعادة تسمية \"{oldName}\"",
+ "Could not copy {file}. {message}" : "تعذّر نسخ {file}. {message}",
+ "Could not move {file}. {message}" : "تعذّر نقل {file}. {message}",
"Total rows summary" : "ملخص مجموع الأسطر",
"\"{displayName}\" failed on some elements " : "\"{displayName}\" فشل في بعض العناصر",
"\"{displayName}\" batch action executed successfully" : "\"{displayName}\" حزمة الأوامر نُفّذت بنجاح",
@@ -249,6 +251,16 @@ OC.L10N.register(
"Blank" : "فارغ",
"Unable to create new file from template" : "تعذر إنشاء الملف الجديد من القالب",
"Delete permanently" : "حذف بشكل دائم",
+ "Destination is not a folder" : "المَقصَد ليس مُجلّداً",
+ "This file/folder is already in that directory" : "هذا الملف/المجلد موجود سلفاً في ذلك المجلد",
+ "You cannot move a file/folder onto itself or into a subfolder of itself" : "لا يمكنك نقل ملف/مجلد إلى نفسه أو إلى مجلد فرعي منه",
+ "A file or folder with that name already exists in this folder" : "ملف أو مجلد بنفس ذاك الاسم موجود سلفاً في هذا المجلد",
+ "The files is locked" : "الملفات مقفله",
+ "The file does not exist anymore" : "الملف لم يعد موجوداً",
+ "Chose destination" : "إختَر المَقصَد",
+ "Copy to {target}" : "أُنسُخ إلى {target}",
+ "Move to {target}" : "أُنقُل إلى {target}",
+ "Cancelled move or copy operation" : ".عملية النسخ أو النقل تمّ إلغاؤها",
"Open folder {displayName}" : "إفتح المجلد {displayName}",
"Open in Files" : "إفتَح في \"الملفات\"",
"Open details" : "افتح التفاصيل",
@@ -257,6 +269,11 @@ OC.L10N.register(
"Templates" : "القوالب",
"Create new templates folder" : "إنشيْ مجلد جديد للقوالب",
"Unable to initialize the templates directory" : "تعذر تهيئة دليل القوالب",
+ "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} مجلد","{folderCount} مجلد","{folderCount} مجلدان","{folderCount} مجلد","{folderCount} مجلدات","{folderCount} مجلدات"],
+ "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} ملف","{fileCount} ملف","{fileCount} ملفان","{fileCount} ملف","{fileCount} ملفات","{fileCount} ملفات"],
+ "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["ملف واحد 1 و {folderCount} مجلد","ملف واحد 1 و {folderCount} مجلد","ملف واحد 1 و {folderCount} مجلدان","ملف واحد 1 و {folderCount} مجلد","ملف واحد 1 و {folderCount} مجلدات","ملف واحد 1 و {folderCount} مجلدات"],
+ "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} ملف و مجلد واحد 1","{fileCount} ملف و مجلد واحد 1","{fileCount} ملفان و مجلد واحد 1","{fileCount} ملف و مجلد واحد 1","{fileCount} ملفات و مجلد واحد 1","{fileCount} ملفات و مجلد واحد 1"],
+ "{fileCount} files and {folderCount} folders" : "{fileCount} ملف و {folderCount} مجلد",
"List of favorites files and folders." : "قائمة الملفات والمجلدات المفضلة.",
"No favorites yet" : "ليست عندك مفضلات بعد",
"Files and folders you mark as favorite will show up here" : "الملفات والمجلدات التي حددتها كامفضلة سوف تظهر هنا ",
diff --git a/apps/files/l10n/ar.json b/apps/files/l10n/ar.json
index c9244da08e6..13607fa9914 100644
--- a/apps/files/l10n/ar.json
+++ b/apps/files/l10n/ar.json
@@ -186,6 +186,8 @@
"Could not rename \"{oldName}\", it does not exist any more" : "تعذر إعادة تسمية \"{oldName}\"، لم يعد موجودًا",
"The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name." : "الاسم \"{newName}\" مُستعمَلٌ سلفاً في المجلّد\"{dir}\". إختَر اسماً آخر رجاءً.",
"Could not rename \"{oldName}\"" : "تعذرت إعادة تسمية \"{oldName}\"",
+ "Could not copy {file}. {message}" : "تعذّر نسخ {file}. {message}",
+ "Could not move {file}. {message}" : "تعذّر نقل {file}. {message}",
"Total rows summary" : "ملخص مجموع الأسطر",
"\"{displayName}\" failed on some elements " : "\"{displayName}\" فشل في بعض العناصر",
"\"{displayName}\" batch action executed successfully" : "\"{displayName}\" حزمة الأوامر نُفّذت بنجاح",
@@ -247,6 +249,16 @@
"Blank" : "فارغ",
"Unable to create new file from template" : "تعذر إنشاء الملف الجديد من القالب",
"Delete permanently" : "حذف بشكل دائم",
+ "Destination is not a folder" : "المَقصَد ليس مُجلّداً",
+ "This file/folder is already in that directory" : "هذا الملف/المجلد موجود سلفاً في ذلك المجلد",
+ "You cannot move a file/folder onto itself or into a subfolder of itself" : "لا يمكنك نقل ملف/مجلد إلى نفسه أو إلى مجلد فرعي منه",
+ "A file or folder with that name already exists in this folder" : "ملف أو مجلد بنفس ذاك الاسم موجود سلفاً في هذا المجلد",
+ "The files is locked" : "الملفات مقفله",
+ "The file does not exist anymore" : "الملف لم يعد موجوداً",
+ "Chose destination" : "إختَر المَقصَد",
+ "Copy to {target}" : "أُنسُخ إلى {target}",
+ "Move to {target}" : "أُنقُل إلى {target}",
+ "Cancelled move or copy operation" : ".عملية النسخ أو النقل تمّ إلغاؤها",
"Open folder {displayName}" : "إفتح المجلد {displayName}",
"Open in Files" : "إفتَح في \"الملفات\"",
"Open details" : "افتح التفاصيل",
@@ -255,6 +267,11 @@
"Templates" : "القوالب",
"Create new templates folder" : "إنشيْ مجلد جديد للقوالب",
"Unable to initialize the templates directory" : "تعذر تهيئة دليل القوالب",
+ "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} مجلد","{folderCount} مجلد","{folderCount} مجلدان","{folderCount} مجلد","{folderCount} مجلدات","{folderCount} مجلدات"],
+ "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} ملف","{fileCount} ملف","{fileCount} ملفان","{fileCount} ملف","{fileCount} ملفات","{fileCount} ملفات"],
+ "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["ملف واحد 1 و {folderCount} مجلد","ملف واحد 1 و {folderCount} مجلد","ملف واحد 1 و {folderCount} مجلدان","ملف واحد 1 و {folderCount} مجلد","ملف واحد 1 و {folderCount} مجلدات","ملف واحد 1 و {folderCount} مجلدات"],
+ "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} ملف و مجلد واحد 1","{fileCount} ملف و مجلد واحد 1","{fileCount} ملفان و مجلد واحد 1","{fileCount} ملف و مجلد واحد 1","{fileCount} ملفات و مجلد واحد 1","{fileCount} ملفات و مجلد واحد 1"],
+ "{fileCount} files and {folderCount} folders" : "{fileCount} ملف و {folderCount} مجلد",
"List of favorites files and folders." : "قائمة الملفات والمجلدات المفضلة.",
"No favorites yet" : "ليست عندك مفضلات بعد",
"Files and folders you mark as favorite will show up here" : "الملفات والمجلدات التي حددتها كامفضلة سوف تظهر هنا ",
diff --git a/apps/files/l10n/ca.js b/apps/files/l10n/ca.js
index 8cf06a6bd07..d50726fb8fe 100644
--- a/apps/files/l10n/ca.js
+++ b/apps/files/l10n/ca.js
@@ -188,6 +188,8 @@ OC.L10N.register(
"Could not rename \"{oldName}\", it does not exist any more" : "No s'ha pogut canviar el nom de «{oldName}», ja no existeix",
"The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name." : "El nom «{newName}» ja està en ús en la carpeta «{dir}». Trieu un nom diferent.",
"Could not rename \"{oldName}\"" : "No s'ha pogut canviar el nom de «{oldName}»",
+ "Could not copy {file}. {message}" : "No s'ha pogut copiar {file}. {message}",
+ "Could not move {file}. {message}" : "No s'ha pogut moure {file}. {message}",
"Total rows summary" : "Resum de totes les files",
"\"{displayName}\" failed on some elements " : "S'ha produït un error en l'acció «{displayName}» per a alguns elements",
"\"{displayName}\" batch action executed successfully" : "L'acció per lots «{displayName}» s'ha executat correctament",
@@ -249,6 +251,16 @@ OC.L10N.register(
"Blank" : "En blanc",
"Unable to create new file from template" : "No s'ha pogut crear el fitxer a partir de la plantilla",
"Delete permanently" : "Suprimeix permanentment",
+ "Destination is not a folder" : "La destinació no és una carpeta",
+ "This file/folder is already in that directory" : "Aquest fitxer o carpeta ja existeix en aquesta carpeta",
+ "You cannot move a file/folder onto itself or into a subfolder of itself" : "No podeu moure un fitxer o carpeta a la mateixa carpeta o a una subcarpeta de la mateixa carpeta",
+ "A file or folder with that name already exists in this folder" : "Ja existeix un fitxer o carpeta amb aquest nom en aquesta carpeta",
+ "The files is locked" : "El fitxer està blocat",
+ "The file does not exist anymore" : "El fitxer ja no existeix",
+ "Chose destination" : "Tria una destinació",
+ "Copy to {target}" : "Copia a {target}",
+ "Move to {target}" : "Mou a {target}",
+ "Cancelled move or copy operation" : "S'ha cancel·lat l'operació de desplaçament o còpia",
"Open folder {displayName}" : "Obre la carpeta {displayName}",
"Open in Files" : "Obre a Fitxers",
"Open details" : "Obre els detalls",
@@ -257,6 +269,11 @@ OC.L10N.register(
"Templates" : "Plantilles",
"Create new templates folder" : "Crea la carpeta de plantilles",
"Unable to initialize the templates directory" : "No s'ha pogut inicialitzar la carpeta de plantilles",
+ "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} carpeta","{folderCount} carpetes"],
+ "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} fitxer","{fileCount} fitxers"],
+ "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 fitxer i {folderCount} carpeta","1 fitxer i {folderCount} carpetes"],
+ "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} fitxer i 1 carpeta","{fileCount} fitxers i 1 carpeta"],
+ "{fileCount} files and {folderCount} folders" : "{fileCount} fitxers i {folderCount} carpetes",
"List of favorites files and folders." : "Llista de fitxers i carpetes preferits.",
"No favorites yet" : "Encara no teniu preferits",
"Files and folders you mark as favorite will show up here" : "Els fitxers i les carpetes que marqueu com a preferits es mostraran aquí",
diff --git a/apps/files/l10n/ca.json b/apps/files/l10n/ca.json
index 9f91a697f0c..500efbe575a 100644
--- a/apps/files/l10n/ca.json
+++ b/apps/files/l10n/ca.json
@@ -186,6 +186,8 @@
"Could not rename \"{oldName}\", it does not exist any more" : "No s'ha pogut canviar el nom de «{oldName}», ja no existeix",
"The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name." : "El nom «{newName}» ja està en ús en la carpeta «{dir}». Trieu un nom diferent.",
"Could not rename \"{oldName}\"" : "No s'ha pogut canviar el nom de «{oldName}»",
+ "Could not copy {file}. {message}" : "No s'ha pogut copiar {file}. {message}",
+ "Could not move {file}. {message}" : "No s'ha pogut moure {file}. {message}",
"Total rows summary" : "Resum de totes les files",
"\"{displayName}\" failed on some elements " : "S'ha produït un error en l'acció «{displayName}» per a alguns elements",
"\"{displayName}\" batch action executed successfully" : "L'acció per lots «{displayName}» s'ha executat correctament",
@@ -247,6 +249,16 @@
"Blank" : "En blanc",
"Unable to create new file from template" : "No s'ha pogut crear el fitxer a partir de la plantilla",
"Delete permanently" : "Suprimeix permanentment",
+ "Destination is not a folder" : "La destinació no és una carpeta",
+ "This file/folder is already in that directory" : "Aquest fitxer o carpeta ja existeix en aquesta carpeta",
+ "You cannot move a file/folder onto itself or into a subfolder of itself" : "No podeu moure un fitxer o carpeta a la mateixa carpeta o a una subcarpeta de la mateixa carpeta",
+ "A file or folder with that name already exists in this folder" : "Ja existeix un fitxer o carpeta amb aquest nom en aquesta carpeta",
+ "The files is locked" : "El fitxer està blocat",
+ "The file does not exist anymore" : "El fitxer ja no existeix",
+ "Chose destination" : "Tria una destinació",
+ "Copy to {target}" : "Copia a {target}",
+ "Move to {target}" : "Mou a {target}",
+ "Cancelled move or copy operation" : "S'ha cancel·lat l'operació de desplaçament o còpia",
"Open folder {displayName}" : "Obre la carpeta {displayName}",
"Open in Files" : "Obre a Fitxers",
"Open details" : "Obre els detalls",
@@ -255,6 +267,11 @@
"Templates" : "Plantilles",
"Create new templates folder" : "Crea la carpeta de plantilles",
"Unable to initialize the templates directory" : "No s'ha pogut inicialitzar la carpeta de plantilles",
+ "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} carpeta","{folderCount} carpetes"],
+ "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} fitxer","{fileCount} fitxers"],
+ "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 fitxer i {folderCount} carpeta","1 fitxer i {folderCount} carpetes"],
+ "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} fitxer i 1 carpeta","{fileCount} fitxers i 1 carpeta"],
+ "{fileCount} files and {folderCount} folders" : "{fileCount} fitxers i {folderCount} carpetes",
"List of favorites files and folders." : "Llista de fitxers i carpetes preferits.",
"No favorites yet" : "Encara no teniu preferits",
"Files and folders you mark as favorite will show up here" : "Els fitxers i les carpetes que marqueu com a preferits es mostraran aquí",
diff --git a/apps/files/l10n/cs.js b/apps/files/l10n/cs.js
index 6e679ed3727..d85e1d81d3d 100644
--- a/apps/files/l10n/cs.js
+++ b/apps/files/l10n/cs.js
@@ -246,6 +246,8 @@ OC.L10N.register(
"Blank" : "Prázdný",
"Unable to create new file from template" : "Nedaří se vytvořit soubor ze šablony",
"Delete permanently" : "Nevratně smazat",
+ "Copy to {target}" : "Zkopírovat do {target}",
+ "Move to {target}" : "Přesunout do {target}",
"Open folder {displayName}" : "Otevřít složku {displayName}",
"Open in Files" : "Otevřít v Souborech",
"Open details" : "Otevřít podorobnosti",
diff --git a/apps/files/l10n/cs.json b/apps/files/l10n/cs.json
index bfdc1f640d1..fd78306ed08 100644
--- a/apps/files/l10n/cs.json
+++ b/apps/files/l10n/cs.json
@@ -244,6 +244,8 @@
"Blank" : "Prázdný",
"Unable to create new file from template" : "Nedaří se vytvořit soubor ze šablony",
"Delete permanently" : "Nevratně smazat",
+ "Copy to {target}" : "Zkopírovat do {target}",
+ "Move to {target}" : "Přesunout do {target}",
"Open folder {displayName}" : "Otevřít složku {displayName}",
"Open in Files" : "Otevřít v Souborech",
"Open details" : "Otevřít podorobnosti",
diff --git a/apps/files/l10n/de_DE.js b/apps/files/l10n/de_DE.js
index 26dacf8e9fe..f4a01e2854b 100644
--- a/apps/files/l10n/de_DE.js
+++ b/apps/files/l10n/de_DE.js
@@ -188,6 +188,8 @@ OC.L10N.register(
"Could not rename \"{oldName}\", it does not exist any more" : "\"{oldName}\" konnte nicht umbenannt werden, da es nicht mehr existiert",
"The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Der Name \"{newName}“ wird bereits im Ordner \"{dir}“ verwendet. Bitte wählen Sie einen anderen Namen.",
"Could not rename \"{oldName}\"" : "\"{oldName}\" konnte nicht umbenannt werden",
+ "Could not copy {file}. {message}" : "{file} konnte nicht kopiert werden. {message}",
+ "Could not move {file}. {message}" : "{file} konnte nicht verschoben werden. {message}",
"Total rows summary" : "Zusammenfassung aller Zeilen",
"\"{displayName}\" failed on some elements " : "\"{displayName}\" ist bei einigen Elementen fehlgeschlagen",
"\"{displayName}\" batch action executed successfully" : "Stapelaktion \"{displayName}\" erfolgreich ausgeführt",
@@ -249,6 +251,16 @@ OC.L10N.register(
"Blank" : "Leer",
"Unable to create new file from template" : "Neue Datei kann nicht aus Vorlage erstellt werden",
"Delete permanently" : "Endgültig löschen",
+ "Destination is not a folder" : "Ziel ist kein Ordner",
+ "This file/folder is already in that directory" : "Diese Datei oder Ordner ist bereits in diesem Verzeichnis vorhanden",
+ "You cannot move a file/folder onto itself or into a subfolder of itself" : "Eine Datei oder ein Ordner kann nicht auf sich selbst oder in einen Unterordner von sich selbst verschoben werden",
+ "A file or folder with that name already exists in this folder" : "In diesem Ordner ist bereits eine Datei oder ein Ordner mit diesem Namen vorhanden",
+ "The files is locked" : "Die Datei ist gesperrt",
+ "The file does not exist anymore" : "Diese Datei existiert nicht mehr",
+ "Chose destination" : "Ziel wählen",
+ "Copy to {target}" : "Nach {target} kopieren",
+ "Move to {target}" : "Nach {target} verschieben",
+ "Cancelled move or copy operation" : "Verschieben oder kopieren abgebrochen",
"Open folder {displayName}" : "Ordner {displayName} öffnen",
"Open in Files" : "In Dateien öffnen",
"Open details" : "Details öffnen",
@@ -257,6 +269,11 @@ OC.L10N.register(
"Templates" : "Vorlagen",
"Create new templates folder" : "Neuen Vorlagenordner erstellen",
"Unable to initialize the templates directory" : "Der Vorlagenordner kann nicht initialisiert werden",
+ "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} Ordner","{folderCount} Ordner"],
+ "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} Datei","{fileCount} Dateien"],
+ "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 Datei und {folderCount} Ordner","1 Datei und {folderCount} Ordner"],
+ "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} Datei und 1 Ordner","{fileCount} Dateien und 1 Ordner"],
+ "{fileCount} files and {folderCount} folders" : "{fileCount} Dateien und {folderCount} Ordner",
"List of favorites files and folders." : "Liste der favorisierten Ordner und Dateien.",
"No favorites yet" : "Noch keine Favoriten vorhanden",
"Files and folders you mark as favorite will show up here" : "Dateien und Ordner, die Sie als Favoriten kennzeichnen, werden hier erscheinen",
diff --git a/apps/files/l10n/de_DE.json b/apps/files/l10n/de_DE.json
index a7f549fe565..f3cfa66bcd1 100644
--- a/apps/files/l10n/de_DE.json
+++ b/apps/files/l10n/de_DE.json
@@ -186,6 +186,8 @@
"Could not rename \"{oldName}\", it does not exist any more" : "\"{oldName}\" konnte nicht umbenannt werden, da es nicht mehr existiert",
"The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Der Name \"{newName}“ wird bereits im Ordner \"{dir}“ verwendet. Bitte wählen Sie einen anderen Namen.",
"Could not rename \"{oldName}\"" : "\"{oldName}\" konnte nicht umbenannt werden",
+ "Could not copy {file}. {message}" : "{file} konnte nicht kopiert werden. {message}",
+ "Could not move {file}. {message}" : "{file} konnte nicht verschoben werden. {message}",
"Total rows summary" : "Zusammenfassung aller Zeilen",
"\"{displayName}\" failed on some elements " : "\"{displayName}\" ist bei einigen Elementen fehlgeschlagen",
"\"{displayName}\" batch action executed successfully" : "Stapelaktion \"{displayName}\" erfolgreich ausgeführt",
@@ -247,6 +249,16 @@
"Blank" : "Leer",
"Unable to create new file from template" : "Neue Datei kann nicht aus Vorlage erstellt werden",
"Delete permanently" : "Endgültig löschen",
+ "Destination is not a folder" : "Ziel ist kein Ordner",
+ "This file/folder is already in that directory" : "Diese Datei oder Ordner ist bereits in diesem Verzeichnis vorhanden",
+ "You cannot move a file/folder onto itself or into a subfolder of itself" : "Eine Datei oder ein Ordner kann nicht auf sich selbst oder in einen Unterordner von sich selbst verschoben werden",
+ "A file or folder with that name already exists in this folder" : "In diesem Ordner ist bereits eine Datei oder ein Ordner mit diesem Namen vorhanden",
+ "The files is locked" : "Die Datei ist gesperrt",
+ "The file does not exist anymore" : "Diese Datei existiert nicht mehr",
+ "Chose destination" : "Ziel wählen",
+ "Copy to {target}" : "Nach {target} kopieren",
+ "Move to {target}" : "Nach {target} verschieben",
+ "Cancelled move or copy operation" : "Verschieben oder kopieren abgebrochen",
"Open folder {displayName}" : "Ordner {displayName} öffnen",
"Open in Files" : "In Dateien öffnen",
"Open details" : "Details öffnen",
@@ -255,6 +267,11 @@
"Templates" : "Vorlagen",
"Create new templates folder" : "Neuen Vorlagenordner erstellen",
"Unable to initialize the templates directory" : "Der Vorlagenordner kann nicht initialisiert werden",
+ "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} Ordner","{folderCount} Ordner"],
+ "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} Datei","{fileCount} Dateien"],
+ "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 Datei und {folderCount} Ordner","1 Datei und {folderCount} Ordner"],
+ "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} Datei und 1 Ordner","{fileCount} Dateien und 1 Ordner"],
+ "{fileCount} files and {folderCount} folders" : "{fileCount} Dateien und {folderCount} Ordner",
"List of favorites files and folders." : "Liste der favorisierten Ordner und Dateien.",
"No favorites yet" : "Noch keine Favoriten vorhanden",
"Files and folders you mark as favorite will show up here" : "Dateien und Ordner, die Sie als Favoriten kennzeichnen, werden hier erscheinen",
diff --git a/apps/files/l10n/el.js b/apps/files/l10n/el.js
index cef3543a2cf..602f626c273 100644
--- a/apps/files/l10n/el.js
+++ b/apps/files/l10n/el.js
@@ -219,6 +219,8 @@ OC.L10N.register(
"Blank" : "Κενό",
"Unable to create new file from template" : "Δεν είναι δυνατή η δημιουργία νέου αρχείου από το πρότυπο",
"Delete permanently" : "Διαγραφή οριστικά",
+ "Copy to {target}" : "Αντιγραφή σε {target}",
+ "Move to {target}" : "Μετακίνηση σε {target}",
"Open folder {displayName}" : "Άνοιγμα φακέλου {displayName}",
"Open details" : "Άνοιγμα λεπτομερειών",
"Set up templates folder" : "Ρύθμιση φακέλου προτύπων",
diff --git a/apps/files/l10n/el.json b/apps/files/l10n/el.json
index 7db68345e55..efb93324a8c 100644
--- a/apps/files/l10n/el.json
+++ b/apps/files/l10n/el.json
@@ -217,6 +217,8 @@
"Blank" : "Κενό",
"Unable to create new file from template" : "Δεν είναι δυνατή η δημιουργία νέου αρχείου από το πρότυπο",
"Delete permanently" : "Διαγραφή οριστικά",
+ "Copy to {target}" : "Αντιγραφή σε {target}",
+ "Move to {target}" : "Μετακίνηση σε {target}",
"Open folder {displayName}" : "Άνοιγμα φακέλου {displayName}",
"Open details" : "Άνοιγμα λεπτομερειών",
"Set up templates folder" : "Ρύθμιση φακέλου προτύπων",
diff --git a/apps/files/l10n/en_GB.js b/apps/files/l10n/en_GB.js
index 35444fd3b89..fed80011588 100644
--- a/apps/files/l10n/en_GB.js
+++ b/apps/files/l10n/en_GB.js
@@ -188,6 +188,8 @@ OC.L10N.register(
"Could not rename \"{oldName}\", it does not exist any more" : "Could not rename \"{oldName}\", it does not exist any more",
"The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name." : "The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name.",
"Could not rename \"{oldName}\"" : "Could not rename \"{oldName}\"",
+ "Could not copy {file}. {message}" : "Could not copy {file}. {message}",
+ "Could not move {file}. {message}" : "Could not move {file}. {message}",
"Total rows summary" : "Total rows summary",
"\"{displayName}\" failed on some elements " : "\"{displayName}\" failed on some elements ",
"\"{displayName}\" batch action executed successfully" : "\"{displayName}\" batch action executed successfully",
@@ -249,6 +251,16 @@ OC.L10N.register(
"Blank" : "Blank",
"Unable to create new file from template" : "Unable to create new file from template",
"Delete permanently" : "Delete permanently",
+ "Destination is not a folder" : "Destination is not a folder",
+ "This file/folder is already in that directory" : "This file/folder is already in that directory",
+ "You cannot move a file/folder onto itself or into a subfolder of itself" : "You cannot move a file/folder onto itself or into a subfolder of itself",
+ "A file or folder with that name already exists in this folder" : "A file or folder with that name already exists in this folder",
+ "The files is locked" : "The files is locked",
+ "The file does not exist anymore" : "The file does not exist anymore",
+ "Chose destination" : "Choose destination",
+ "Copy to {target}" : "Copy to {target}",
+ "Move to {target}" : "Move to {target}",
+ "Cancelled move or copy operation" : "Cancelled move or copy operation",
"Open folder {displayName}" : "Open folder {displayName}",
"Open in Files" : "Open in Files",
"Open details" : "Open details",
@@ -257,6 +269,11 @@ OC.L10N.register(
"Templates" : "Templates",
"Create new templates folder" : "Create new templates folder",
"Unable to initialize the templates directory" : "Unable to initialize the templates directory",
+ "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} folder","{folderCount} folders"],
+ "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} file","{fileCount} files"],
+ "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 file and {folderCount} folder","1 file and {folderCount} folders"],
+ "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} file and 1 folder","{fileCount} files and 1 folder"],
+ "{fileCount} files and {folderCount} folders" : "{fileCount} files and {folderCount} folders",
"List of favorites files and folders." : "List of favourites files and folders.",
"No favorites yet" : "No favourites yet",
"Files and folders you mark as favorite will show up here" : "Files and folders you mark as favourite will show up here",
diff --git a/apps/files/l10n/en_GB.json b/apps/files/l10n/en_GB.json
index e2f16512658..97127e5f23b 100644
--- a/apps/files/l10n/en_GB.json
+++ b/apps/files/l10n/en_GB.json
@@ -186,6 +186,8 @@
"Could not rename \"{oldName}\", it does not exist any more" : "Could not rename \"{oldName}\", it does not exist any more",
"The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name." : "The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name.",
"Could not rename \"{oldName}\"" : "Could not rename \"{oldName}\"",
+ "Could not copy {file}. {message}" : "Could not copy {file}. {message}",
+ "Could not move {file}. {message}" : "Could not move {file}. {message}",
"Total rows summary" : "Total rows summary",
"\"{displayName}\" failed on some elements " : "\"{displayName}\" failed on some elements ",
"\"{displayName}\" batch action executed successfully" : "\"{displayName}\" batch action executed successfully",
@@ -247,6 +249,16 @@
"Blank" : "Blank",
"Unable to create new file from template" : "Unable to create new file from template",
"Delete permanently" : "Delete permanently",
+ "Destination is not a folder" : "Destination is not a folder",
+ "This file/folder is already in that directory" : "This file/folder is already in that directory",
+ "You cannot move a file/folder onto itself or into a subfolder of itself" : "You cannot move a file/folder onto itself or into a subfolder of itself",
+ "A file or folder with that name already exists in this folder" : "A file or folder with that name already exists in this folder",
+ "The files is locked" : "The files is locked",
+ "The file does not exist anymore" : "The file does not exist anymore",
+ "Chose destination" : "Choose destination",
+ "Copy to {target}" : "Copy to {target}",
+ "Move to {target}" : "Move to {target}",
+ "Cancelled move or copy operation" : "Cancelled move or copy operation",
"Open folder {displayName}" : "Open folder {displayName}",
"Open in Files" : "Open in Files",
"Open details" : "Open details",
@@ -255,6 +267,11 @@
"Templates" : "Templates",
"Create new templates folder" : "Create new templates folder",
"Unable to initialize the templates directory" : "Unable to initialize the templates directory",
+ "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} folder","{folderCount} folders"],
+ "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} file","{fileCount} files"],
+ "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 file and {folderCount} folder","1 file and {folderCount} folders"],
+ "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} file and 1 folder","{fileCount} files and 1 folder"],
+ "{fileCount} files and {folderCount} folders" : "{fileCount} files and {folderCount} folders",
"List of favorites files and folders." : "List of favourites files and folders.",
"No favorites yet" : "No favourites yet",
"Files and folders you mark as favorite will show up here" : "Files and folders you mark as favourite will show up here",
diff --git a/apps/files/l10n/es.js b/apps/files/l10n/es.js
index 623c4cf267f..d0fa90f01cc 100644
--- a/apps/files/l10n/es.js
+++ b/apps/files/l10n/es.js
@@ -198,7 +198,10 @@ OC.L10N.register(
"Unselect all" : "Desmarrcar todos",
"List of files and folders." : "Lista de archivos y carpetas.",
"This list is not fully rendered for performance reasons. The files will be rendered as you navigate through the list." : "Esta lista no se muestra completamente por motivos de rendimiento. Los archivos se mostrarán a medida que navega por la lista.",
+ "{summaryFile} and {summaryFolder}" : "{summaryFile} y {summaryFolder}",
"File not found" : "No se ha encontrado el archivo",
+ "_{count} file_::_{count} files_" : ["{count} archivo","{count} archivos","{count} archivos"],
+ "_{count} folder_::_{count} folders_" : ["{count} carpeta","{count} carpetas","{count} carpetas"],
"Storage informations" : "Informaciones de almacenamiento",
"{usedQuotaByte} used" : "{usedQuotaByte} utilizados",
"{relative}% used" : "{relative}% utilizado",
@@ -246,6 +249,8 @@ OC.L10N.register(
"Blank" : "Vacío",
"Unable to create new file from template" : "No se ha podido crear un nuevo archivo desde la plantilla",
"Delete permanently" : "Eliminar de forma definitiva",
+ "Copy to {target}" : "Copiar a {target}",
+ "Move to {target}" : "Mover a {target}",
"Open folder {displayName}" : "Abrir carpeta {displayName}",
"Open in Files" : "Abrir en Archivos",
"Open details" : "Abrir detalles",
diff --git a/apps/files/l10n/es.json b/apps/files/l10n/es.json
index 8a99c4d21d0..96c2d2c959e 100644
--- a/apps/files/l10n/es.json
+++ b/apps/files/l10n/es.json
@@ -196,7 +196,10 @@
"Unselect all" : "Desmarrcar todos",
"List of files and folders." : "Lista de archivos y carpetas.",
"This list is not fully rendered for performance reasons. The files will be rendered as you navigate through the list." : "Esta lista no se muestra completamente por motivos de rendimiento. Los archivos se mostrarán a medida que navega por la lista.",
+ "{summaryFile} and {summaryFolder}" : "{summaryFile} y {summaryFolder}",
"File not found" : "No se ha encontrado el archivo",
+ "_{count} file_::_{count} files_" : ["{count} archivo","{count} archivos","{count} archivos"],
+ "_{count} folder_::_{count} folders_" : ["{count} carpeta","{count} carpetas","{count} carpetas"],
"Storage informations" : "Informaciones de almacenamiento",
"{usedQuotaByte} used" : "{usedQuotaByte} utilizados",
"{relative}% used" : "{relative}% utilizado",
@@ -244,6 +247,8 @@
"Blank" : "Vacío",
"Unable to create new file from template" : "No se ha podido crear un nuevo archivo desde la plantilla",
"Delete permanently" : "Eliminar de forma definitiva",
+ "Copy to {target}" : "Copiar a {target}",
+ "Move to {target}" : "Mover a {target}",
"Open folder {displayName}" : "Abrir carpeta {displayName}",
"Open in Files" : "Abrir en Archivos",
"Open details" : "Abrir detalles",
diff --git a/apps/files/l10n/eu.js b/apps/files/l10n/eu.js
index 94f9311c7df..10aa8f6aa79 100644
--- a/apps/files/l10n/eu.js
+++ b/apps/files/l10n/eu.js
@@ -245,6 +245,8 @@ OC.L10N.register(
"Blank" : "Hutsik",
"Unable to create new file from template" : "Ezin da fitxategi berria sortu txantiloitik",
"Delete permanently" : "Ezabatu betirako",
+ "Copy to {target}" : "Kopiatu hona: {target}",
+ "Move to {target}" : "Mugitu hona: {target}",
"Open folder {displayName}" : "Ireki {displayName} karpeta",
"Open in Files" : "Ireki Fitxategiak aplikazioan",
"Open details" : "Ireki xehetasunak",
diff --git a/apps/files/l10n/eu.json b/apps/files/l10n/eu.json
index 826469fa047..91e2803415b 100644
--- a/apps/files/l10n/eu.json
+++ b/apps/files/l10n/eu.json
@@ -243,6 +243,8 @@
"Blank" : "Hutsik",
"Unable to create new file from template" : "Ezin da fitxategi berria sortu txantiloitik",
"Delete permanently" : "Ezabatu betirako",
+ "Copy to {target}" : "Kopiatu hona: {target}",
+ "Move to {target}" : "Mugitu hona: {target}",
"Open folder {displayName}" : "Ireki {displayName} karpeta",
"Open in Files" : "Ireki Fitxategiak aplikazioan",
"Open details" : "Ireki xehetasunak",
diff --git a/apps/files/l10n/fi.js b/apps/files/l10n/fi.js
index ab51c038ece..e426fd34eac 100644
--- a/apps/files/l10n/fi.js
+++ b/apps/files/l10n/fi.js
@@ -22,6 +22,7 @@ OC.L10N.register(
"An unknown error has occurred" : "Tapahtui tuntematon virhe",
"File could not be uploaded" : "Tiedostoa ei voi lähettää",
"Uploading …" : "Lähetetään…",
+ "{remainingTime} ({currentNumber}/{total})" : "{remainingTime} ({currentNumber}/{total})",
"Uploading … ({currentNumber}/{total})" : "Lähetetään… ({currentNumber}/{total})",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize}/{totalSize} ({bitrate})",
"Uploading that item is not supported" : "Kyseisen kohteen lähettäminen ei ole tuettu",
@@ -241,6 +242,12 @@ OC.L10N.register(
"Blank" : "Tyhjä",
"Unable to create new file from template" : "Uutta tiedostoa mallipohjasta ei voi luoda",
"Delete permanently" : "Poista pysyvästi",
+ "Destination is not a folder" : "Kohde ei ole kansio",
+ "A file or folder with that name already exists in this folder" : "Tiedosto tai kansio tällä nimellä on jo olemassa tässä kansiossa",
+ "The file does not exist anymore" : "Tiedostoa ei ole enää olemassa",
+ "Chose destination" : "Valitse kohde",
+ "Copy to {target}" : "Kopioi kohteeseen {target}",
+ "Move to {target}" : "Siirrä kohteeseen {target}",
"Open folder {displayName}" : "Avaa kansio {displayName}",
"Open in Files" : "Avaa tiedostosovelluksessa",
"Open details" : "Avaa yksityiskohdat",
@@ -249,6 +256,11 @@ OC.L10N.register(
"Templates" : "Mallipohjat",
"Create new templates folder" : "Luo uusi mallipohjien kansio",
"Unable to initialize the templates directory" : "Mallipohjien kansiota ei voitu alustaa",
+ "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} kansio","{folderCount} kansiota"],
+ "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} tiedosto","{fileCount} tiedostoa"],
+ "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 tiedosto ja {folderCount} kansio","1 tiedosto ja {folderCount} kansiota"],
+ "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} tiedosto ja 1 kansio","{fileCount} tiedostoa ja 1 kansio"],
+ "{fileCount} files and {folderCount} folders" : "{fileCount} tiedostoa ja {folderCount} kansiota",
"List of favorites files and folders." : "Luettelo suosikkitiedostoista ja -kansioista.",
"No favorites yet" : "Ei vielä suosikkeja",
"Files and folders you mark as favorite will show up here" : "Suosikeiksi merkitsemäsi tiedostot ja kansiot näkyvät täällä",
diff --git a/apps/files/l10n/fi.json b/apps/files/l10n/fi.json
index e73adc315e4..e24d3179630 100644
--- a/apps/files/l10n/fi.json
+++ b/apps/files/l10n/fi.json
@@ -20,6 +20,7 @@
"An unknown error has occurred" : "Tapahtui tuntematon virhe",
"File could not be uploaded" : "Tiedostoa ei voi lähettää",
"Uploading …" : "Lähetetään…",
+ "{remainingTime} ({currentNumber}/{total})" : "{remainingTime} ({currentNumber}/{total})",
"Uploading … ({currentNumber}/{total})" : "Lähetetään… ({currentNumber}/{total})",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize}/{totalSize} ({bitrate})",
"Uploading that item is not supported" : "Kyseisen kohteen lähettäminen ei ole tuettu",
@@ -239,6 +240,12 @@
"Blank" : "Tyhjä",
"Unable to create new file from template" : "Uutta tiedostoa mallipohjasta ei voi luoda",
"Delete permanently" : "Poista pysyvästi",
+ "Destination is not a folder" : "Kohde ei ole kansio",
+ "A file or folder with that name already exists in this folder" : "Tiedosto tai kansio tällä nimellä on jo olemassa tässä kansiossa",
+ "The file does not exist anymore" : "Tiedostoa ei ole enää olemassa",
+ "Chose destination" : "Valitse kohde",
+ "Copy to {target}" : "Kopioi kohteeseen {target}",
+ "Move to {target}" : "Siirrä kohteeseen {target}",
"Open folder {displayName}" : "Avaa kansio {displayName}",
"Open in Files" : "Avaa tiedostosovelluksessa",
"Open details" : "Avaa yksityiskohdat",
@@ -247,6 +254,11 @@
"Templates" : "Mallipohjat",
"Create new templates folder" : "Luo uusi mallipohjien kansio",
"Unable to initialize the templates directory" : "Mallipohjien kansiota ei voitu alustaa",
+ "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} kansio","{folderCount} kansiota"],
+ "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} tiedosto","{fileCount} tiedostoa"],
+ "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 tiedosto ja {folderCount} kansio","1 tiedosto ja {folderCount} kansiota"],
+ "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} tiedosto ja 1 kansio","{fileCount} tiedostoa ja 1 kansio"],
+ "{fileCount} files and {folderCount} folders" : "{fileCount} tiedostoa ja {folderCount} kansiota",
"List of favorites files and folders." : "Luettelo suosikkitiedostoista ja -kansioista.",
"No favorites yet" : "Ei vielä suosikkeja",
"Files and folders you mark as favorite will show up here" : "Suosikeiksi merkitsemäsi tiedostot ja kansiot näkyvät täällä",
diff --git a/apps/files/l10n/fr.js b/apps/files/l10n/fr.js
index e7b3460f3c8..9282a091451 100644
--- a/apps/files/l10n/fr.js
+++ b/apps/files/l10n/fr.js
@@ -249,6 +249,8 @@ OC.L10N.register(
"Blank" : "Vide",
"Unable to create new file from template" : "Impossible de créer un nouveau fichier à partir du modèle",
"Delete permanently" : "Supprimer définitivement",
+ "Copy to {target}" : "Copier vers {target}",
+ "Move to {target}" : "Déplacer vers {target}",
"Open folder {displayName}" : "Ouvrir le dossier {displayName}",
"Open in Files" : "Ouvrir dans Fichiers",
"Open details" : "Ouvrir les détails",
diff --git a/apps/files/l10n/fr.json b/apps/files/l10n/fr.json
index 7dfd410bcdb..0a195d7b303 100644
--- a/apps/files/l10n/fr.json
+++ b/apps/files/l10n/fr.json
@@ -247,6 +247,8 @@
"Blank" : "Vide",
"Unable to create new file from template" : "Impossible de créer un nouveau fichier à partir du modèle",
"Delete permanently" : "Supprimer définitivement",
+ "Copy to {target}" : "Copier vers {target}",
+ "Move to {target}" : "Déplacer vers {target}",
"Open folder {displayName}" : "Ouvrir le dossier {displayName}",
"Open in Files" : "Ouvrir dans Fichiers",
"Open details" : "Ouvrir les détails",
diff --git a/apps/files/l10n/gl.js b/apps/files/l10n/gl.js
index 49e203dc50e..534345f30c1 100644
--- a/apps/files/l10n/gl.js
+++ b/apps/files/l10n/gl.js
@@ -249,6 +249,8 @@ OC.L10N.register(
"Blank" : "Baleiro",
"Unable to create new file from template" : "Non é posíbel crear un novo ficheiro a partir do modelo",
"Delete permanently" : "Eliminar definitivamente",
+ "Copy to {target}" : "Copiar en {target}",
+ "Move to {target}" : "Mover a {target}",
"Open folder {displayName}" : "Abrir o cartafol {displayName}",
"Open in Files" : "Abrir en Ficheiros",
"Open details" : "Abrir detalles",
diff --git a/apps/files/l10n/gl.json b/apps/files/l10n/gl.json
index 44b9ff3beab..46c240571bf 100644
--- a/apps/files/l10n/gl.json
+++ b/apps/files/l10n/gl.json
@@ -247,6 +247,8 @@
"Blank" : "Baleiro",
"Unable to create new file from template" : "Non é posíbel crear un novo ficheiro a partir do modelo",
"Delete permanently" : "Eliminar definitivamente",
+ "Copy to {target}" : "Copiar en {target}",
+ "Move to {target}" : "Mover a {target}",
"Open folder {displayName}" : "Abrir o cartafol {displayName}",
"Open in Files" : "Abrir en Ficheiros",
"Open details" : "Abrir detalles",
diff --git a/apps/files/l10n/hu.js b/apps/files/l10n/hu.js
index f99621d2b5a..0cf75d023bb 100644
--- a/apps/files/l10n/hu.js
+++ b/apps/files/l10n/hu.js
@@ -230,6 +230,8 @@ OC.L10N.register(
"Blank" : "Üres",
"Unable to create new file from template" : "Nem lehet új fájlt létrehozni a sablonból",
"Delete permanently" : "Végleges törlés",
+ "Copy to {target}" : "Másolás ide: {target}",
+ "Move to {target}" : "Áthelyezés ide: {target}",
"Open folder {displayName}" : "A(z) {displayName} mappa megnyitása",
"Open details" : "Részletek megnyitása",
"Set up templates folder" : "Személyes sablonmappa beállítása",
diff --git a/apps/files/l10n/hu.json b/apps/files/l10n/hu.json
index 64689b58c8f..4d2f2af803c 100644
--- a/apps/files/l10n/hu.json
+++ b/apps/files/l10n/hu.json
@@ -228,6 +228,8 @@
"Blank" : "Üres",
"Unable to create new file from template" : "Nem lehet új fájlt létrehozni a sablonból",
"Delete permanently" : "Végleges törlés",
+ "Copy to {target}" : "Másolás ide: {target}",
+ "Move to {target}" : "Áthelyezés ide: {target}",
"Open folder {displayName}" : "A(z) {displayName} mappa megnyitása",
"Open details" : "Részletek megnyitása",
"Set up templates folder" : "Személyes sablonmappa beállítása",
diff --git a/apps/files/l10n/it.js b/apps/files/l10n/it.js
index 10022c2482b..b171c8d93fe 100644
--- a/apps/files/l10n/it.js
+++ b/apps/files/l10n/it.js
@@ -188,6 +188,8 @@ OC.L10N.register(
"Could not rename \"{oldName}\", it does not exist any more" : "Impossibile rinominare \"{oldName}\", non esiste più",
"The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Il nome \"{newName}\" è attualmente in uso nella cartella \"{dir}\". Scegli un nome diverso.",
"Could not rename \"{oldName}\"" : "Impossibile rinominare \"{oldName}\"",
+ "Could not copy {file}. {message}" : "Impossibile copiare {file}. {message}",
+ "Could not move {file}. {message}" : "Impossibile spostare {file}. {message}",
"Total rows summary" : "Riepilogo totale delle righe",
"\"{displayName}\" failed on some elements " : "\"{displayName}\" è fallita su alcuni elementi",
"\"{displayName}\" batch action executed successfully" : "L'azione batch \"{displayName}\" è stata eseguita con successo",
@@ -198,7 +200,10 @@ OC.L10N.register(
"Unselect all" : "Deseleziona tutto",
"List of files and folders." : "Lista di file e cartelle.",
"This list is not fully rendered for performance reasons. The files will be rendered as you navigate through the list." : "Questa lista non è stata mostrata completamente per ragioni di prestazioni. I file verranno mostrati durante la navigazione della lista.",
+ "{summaryFile} and {summaryFolder}" : "{summaryFile} e {summaryFolder}",
"File not found" : "File non trovato",
+ "_{count} file_::_{count} files_" : ["{count} file","{count} file","{count} file"],
+ "_{count} folder_::_{count} folders_" : ["{count} cartella","{count} cartelle","{count} cartelle"],
"Storage informations" : "Informazioni di archiviazione",
"{usedQuotaByte} used" : "{usedQuotaByte} usato",
"{relative}% used" : "{relative}% usato",
@@ -246,6 +251,16 @@ OC.L10N.register(
"Blank" : "Vuoto",
"Unable to create new file from template" : "Impossibile creare un nuovo file dal modello",
"Delete permanently" : "Elimina permanentemente",
+ "Destination is not a folder" : "La destinazione non è una cartella",
+ "This file/folder is already in that directory" : "Questo file/cartella è già in quella cartella",
+ "You cannot move a file/folder onto itself or into a subfolder of itself" : "Non puoi spostare un file/cartella in se stesso o in una sottocartella di se stesso",
+ "A file or folder with that name already exists in this folder" : "Esiste già un file o una cartella con quel nome in questa cartella",
+ "The files is locked" : "Il file è bloccato",
+ "The file does not exist anymore" : "Il file non esiste più",
+ "Chose destination" : "Scegli destinazione",
+ "Copy to {target}" : "Copia in {target}",
+ "Move to {target}" : "Sposta in {target}",
+ "Cancelled move or copy operation" : "Operazione di spostamento o copia annullata",
"Open folder {displayName}" : "Apri la cartella {displayName}",
"Open in Files" : "Apri in File",
"Open details" : "Apri i dettagli",
@@ -254,6 +269,11 @@ OC.L10N.register(
"Templates" : "Modelli",
"Create new templates folder" : "Crea una nuova cartella dei templates",
"Unable to initialize the templates directory" : "Impossibile inizializzare la cartella dei modelli",
+ "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} cartella","{folderCount} cartelle","{folderCount} cartelle"],
+ "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} file","{fileCount} file","{fileCount} file"],
+ "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 file e {folderCount} cartella","1 file e {folderCount} cartelle","1 file e {folderCount} cartelle"],
+ "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} file e 1 cartella","{fileCount} file e 1 cartella","{fileCount} file e 1 cartella"],
+ "{fileCount} files and {folderCount} folders" : "{fileCount} file e {folderCount} cartelle",
"List of favorites files and folders." : "Lista di file e cartelle preferiti.",
"No favorites yet" : "Nessun preferito ancora",
"Files and folders you mark as favorite will show up here" : "I file e le cartelle che marchi come preferiti saranno mostrati qui",
diff --git a/apps/files/l10n/it.json b/apps/files/l10n/it.json
index f988e9632de..4427132ca57 100644
--- a/apps/files/l10n/it.json
+++ b/apps/files/l10n/it.json
@@ -186,6 +186,8 @@
"Could not rename \"{oldName}\", it does not exist any more" : "Impossibile rinominare \"{oldName}\", non esiste più",
"The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Il nome \"{newName}\" è attualmente in uso nella cartella \"{dir}\". Scegli un nome diverso.",
"Could not rename \"{oldName}\"" : "Impossibile rinominare \"{oldName}\"",
+ "Could not copy {file}. {message}" : "Impossibile copiare {file}. {message}",
+ "Could not move {file}. {message}" : "Impossibile spostare {file}. {message}",
"Total rows summary" : "Riepilogo totale delle righe",
"\"{displayName}\" failed on some elements " : "\"{displayName}\" è fallita su alcuni elementi",
"\"{displayName}\" batch action executed successfully" : "L'azione batch \"{displayName}\" è stata eseguita con successo",
@@ -196,7 +198,10 @@
"Unselect all" : "Deseleziona tutto",
"List of files and folders." : "Lista di file e cartelle.",
"This list is not fully rendered for performance reasons. The files will be rendered as you navigate through the list." : "Questa lista non è stata mostrata completamente per ragioni di prestazioni. I file verranno mostrati durante la navigazione della lista.",
+ "{summaryFile} and {summaryFolder}" : "{summaryFile} e {summaryFolder}",
"File not found" : "File non trovato",
+ "_{count} file_::_{count} files_" : ["{count} file","{count} file","{count} file"],
+ "_{count} folder_::_{count} folders_" : ["{count} cartella","{count} cartelle","{count} cartelle"],
"Storage informations" : "Informazioni di archiviazione",
"{usedQuotaByte} used" : "{usedQuotaByte} usato",
"{relative}% used" : "{relative}% usato",
@@ -244,6 +249,16 @@
"Blank" : "Vuoto",
"Unable to create new file from template" : "Impossibile creare un nuovo file dal modello",
"Delete permanently" : "Elimina permanentemente",
+ "Destination is not a folder" : "La destinazione non è una cartella",
+ "This file/folder is already in that directory" : "Questo file/cartella è già in quella cartella",
+ "You cannot move a file/folder onto itself or into a subfolder of itself" : "Non puoi spostare un file/cartella in se stesso o in una sottocartella di se stesso",
+ "A file or folder with that name already exists in this folder" : "Esiste già un file o una cartella con quel nome in questa cartella",
+ "The files is locked" : "Il file è bloccato",
+ "The file does not exist anymore" : "Il file non esiste più",
+ "Chose destination" : "Scegli destinazione",
+ "Copy to {target}" : "Copia in {target}",
+ "Move to {target}" : "Sposta in {target}",
+ "Cancelled move or copy operation" : "Operazione di spostamento o copia annullata",
"Open folder {displayName}" : "Apri la cartella {displayName}",
"Open in Files" : "Apri in File",
"Open details" : "Apri i dettagli",
@@ -252,6 +267,11 @@
"Templates" : "Modelli",
"Create new templates folder" : "Crea una nuova cartella dei templates",
"Unable to initialize the templates directory" : "Impossibile inizializzare la cartella dei modelli",
+ "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} cartella","{folderCount} cartelle","{folderCount} cartelle"],
+ "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} file","{fileCount} file","{fileCount} file"],
+ "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 file e {folderCount} cartella","1 file e {folderCount} cartelle","1 file e {folderCount} cartelle"],
+ "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} file e 1 cartella","{fileCount} file e 1 cartella","{fileCount} file e 1 cartella"],
+ "{fileCount} files and {folderCount} folders" : "{fileCount} file e {folderCount} cartelle",
"List of favorites files and folders." : "Lista di file e cartelle preferiti.",
"No favorites yet" : "Nessun preferito ancora",
"Files and folders you mark as favorite will show up here" : "I file e le cartelle che marchi come preferiti saranno mostrati qui",
diff --git a/apps/files/l10n/ja.js b/apps/files/l10n/ja.js
index 4f49c70fee0..641b882de18 100644
--- a/apps/files/l10n/ja.js
+++ b/apps/files/l10n/ja.js
@@ -22,6 +22,8 @@ OC.L10N.register(
"An unknown error has occurred" : "不明なエラーが発生しました",
"File could not be uploaded" : "ファイルをアップロードできませんでした",
"Uploading …" : "アップロード中...",
+ "{remainingTime} ({currentNumber}/{total})" : "{remainingTime} ({currentNumber}/{total})",
+ "Uploading … ({currentNumber}/{total})" : "アップロード中… ({currentNumber}/{total})",
"{loadedSize} of {totalSize} ({bitrate})" : "{totalSize} 中 {loadedSize} ({bitrate})",
"Uploading that item is not supported" : "そのアイテムのアップロードに対応していません",
"Target folder does not exist any more" : "対象フォルダーがもう存在しません",
@@ -168,15 +170,38 @@ OC.L10N.register(
"in %s" : "%s で",
"File Management" : "ファイル管理",
"Reload current directory" : "カレントディレクトリの再読み込み",
+ "Go to the \"{dir}\" directory" : "\"{dir}\" ディレクトリに移動する",
+ "Select the row for {displayName}" : "{displayName} の行を選択する",
"Rename file" : "ファイル名の変更",
+ "A long time ago" : "ずっと以前に",
"This node is unavailable" : "このノードは利用できません",
"Download file {name}" : "ファイル {name} をダウンロード",
"File name" : "ファイル名",
"Folder name" : "フォルダー名",
+ "\"{displayName}\" action executed successfully" : "\"{displayName}\" アクションは正常に実行された",
+ "\"{displayName}\" action failed" : "\"{displayName}\" アクションは失敗しました",
+ "\"{name}\" is not an allowed filetype." : "\"{name}\" は許可されたファイルタイプではありません。",
+ "{newName} already exists." : "{newName} すでに存在しています。",
"Name cannot be empty" : "名前は空にできません",
+ "Another entry with the same name already exists" : "同じ名前の別のエントリがすでに存在しています",
+ "Renamed \"{oldName}\" to \"{newName}\"" : "\"{oldName}\" から \"{newName}\" に名前を変更済み",
+ "Could not rename \"{oldName}\", it does not exist any more" : "\"{oldName}\" の名前を変更できませんでした、それは既に存在しません。",
+ "The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name." : "\"{newName}\" という名前は \"{dir}\" フォルダですでに使用されています。別の名前を選択してください。",
+ "Could not rename \"{oldName}\"" : "\"{oldName}\" の名前を変更できませんでした。",
"Total rows summary" : "総行数のサマリー",
+ "\"{displayName}\" failed on some elements " : "いくつかの要素で \"{displayName}\" が失敗しました。",
+ "\"{displayName}\" batch action executed successfully" : "\"{displayName}\" バッチアクションが正常に実行されました。",
+ "ascending" : "昇順",
+ "descending" : "降順",
+ "Sort list by {column} ({direction})" : "{column} ({direction}) でリストを並べ替える",
"Select all" : "すべて選択",
+ "Unselect all" : "すべて選択解除",
+ "List of files and folders." : "ファイルとフォルダの一覧。",
+ "This list is not fully rendered for performance reasons. The files will be rendered as you navigate through the list." : "このリストはパフォーマンスの都合上、すべてレンダリングされているわけではありません。リスト内を移動すると、ファイルが次々と表示されていきます。",
+ "{summaryFile} and {summaryFolder}" : "{summaryFile} と {summaryFolder}",
"File not found" : "ファイルが見つかりません",
+ "_{count} file_::_{count} files_" : ["{count} ファイル"],
+ "_{count} folder_::_{count} folders_" : ["{count} フォルダ"],
"Storage informations" : "ストレージ情報",
"{usedQuotaByte} used" : "{usedQuotaByte} 使用されています",
"{relative}% used" : "{relative}% 使用されています",
@@ -193,8 +218,10 @@ OC.L10N.register(
"Ownership transfer request sent" : "所有権転送のリクエストを送信しました",
"Cannot transfer ownership of a file or folder you do not own" : "所有していないファイルまたはフォルダーの所有権を譲渡することはできません",
"Select file or folder to link to" : "リンク先のファイルまたはフォルダを選択",
+ "Loading current folder" : "現在のフォルダの読み込み中",
"No files in here" : "ファイルがありません",
"Upload some content or sync with your devices!" : "何かコンテンツをアップロードするか、デバイスからファイルを同期してください。",
+ "Go to the previous folder" : "前のフォルダへ移動",
"Go back" : "戻る",
"Share" : "共有",
"Shared by link" : "URLリンクで共有中",
@@ -203,12 +230,14 @@ OC.L10N.register(
"Files settings" : "ファイルの設定",
"File cannot be accessed" : "ファイルにアクセスできません",
"You might not have have permissions to view it, ask the sender to share it" : "閲覧権限がない可能性があるため、送信者に共有を依頼してください",
+ "Sort favorites first" : "お気に入りを最初に並べる",
"Show hidden files" : "隠しファイルを表示",
"Crop image previews" : "プレビュー画像を切り抜く",
"Additional settings" : "追加設定",
"WebDAV" : "WebDAV",
"Copy to clipboard" : "クリップボードにコピー",
"Use this address to access your Files via WebDAV" : "このアドレスを使用すれば、WebDAV経由でファイルにアクセスできます",
+ "If you have enabled 2FA, you must create and use a new app password by clicking here." : "2FAを有効にしている場合は、ここをクリックして新しいアプリのパスワードを作成し、使用する必要があります。",
"Clipboard is not available" : "クリップボードは利用できません",
"WebDAV URL copied to clipboard" : "WebDAVのURLがクリップボードにコピーされました",
"Unable to change the favourite state of the file" : "ファイルのお気に入りの状態を変更できません",
@@ -220,7 +249,10 @@ OC.L10N.register(
"Blank" : "ブランク",
"Unable to create new file from template" : "テンプレートから新しいファイルを作成できません",
"Delete permanently" : "永久に削除",
+ "Open folder {displayName}" : "フォルダ {displayName} を開く",
+ "Open in Files" : "ファイルアプリで開く",
"Open details" : "詳細を開く",
+ "Created new folder \"{name}\"" : "新規フォルダ \"{name}\" を作成した",
"Set up templates folder" : "テンプレートフォルダーを設定",
"Templates" : "テンプレート",
"Create new templates folder" : "新しいテンプレートフォルダーを作成",
@@ -257,6 +289,7 @@ OC.L10N.register(
"This file has the tag {tag}" : "このファイルには {tag} タグがあります。",
"This file has the tags {firstTags} and {lastTag}" : "このファイルには {firstTags} と {lastTag} というタグがあります",
"Open folder {name}" : "フォルダ {name} を開く",
+ "This list is not fully rendered for performances reasons. The files will be rendered as you navigate through the list." : "このリストはパフォーマンスの都合上、すべてレンダリングされているわけではありません。リスト内を移動すると、ファイルが次々と表示されていきます。",
"Search for an account" : "アカウントを検索",
"Choose" : "選択",
"No files or folders have been deleted yet" : "まだ削除されたファイルやフォルダはありません"
diff --git a/apps/files/l10n/ja.json b/apps/files/l10n/ja.json
index 9ea7665edc1..9e25e7f90fb 100644
--- a/apps/files/l10n/ja.json
+++ b/apps/files/l10n/ja.json
@@ -20,6 +20,8 @@
"An unknown error has occurred" : "不明なエラーが発生しました",
"File could not be uploaded" : "ファイルをアップロードできませんでした",
"Uploading …" : "アップロード中...",
+ "{remainingTime} ({currentNumber}/{total})" : "{remainingTime} ({currentNumber}/{total})",
+ "Uploading … ({currentNumber}/{total})" : "アップロード中… ({currentNumber}/{total})",
"{loadedSize} of {totalSize} ({bitrate})" : "{totalSize} 中 {loadedSize} ({bitrate})",
"Uploading that item is not supported" : "そのアイテムのアップロードに対応していません",
"Target folder does not exist any more" : "対象フォルダーがもう存在しません",
@@ -166,15 +168,38 @@
"in %s" : "%s で",
"File Management" : "ファイル管理",
"Reload current directory" : "カレントディレクトリの再読み込み",
+ "Go to the \"{dir}\" directory" : "\"{dir}\" ディレクトリに移動する",
+ "Select the row for {displayName}" : "{displayName} の行を選択する",
"Rename file" : "ファイル名の変更",
+ "A long time ago" : "ずっと以前に",
"This node is unavailable" : "このノードは利用できません",
"Download file {name}" : "ファイル {name} をダウンロード",
"File name" : "ファイル名",
"Folder name" : "フォルダー名",
+ "\"{displayName}\" action executed successfully" : "\"{displayName}\" アクションは正常に実行された",
+ "\"{displayName}\" action failed" : "\"{displayName}\" アクションは失敗しました",
+ "\"{name}\" is not an allowed filetype." : "\"{name}\" は許可されたファイルタイプではありません。",
+ "{newName} already exists." : "{newName} すでに存在しています。",
"Name cannot be empty" : "名前は空にできません",
+ "Another entry with the same name already exists" : "同じ名前の別のエントリがすでに存在しています",
+ "Renamed \"{oldName}\" to \"{newName}\"" : "\"{oldName}\" から \"{newName}\" に名前を変更済み",
+ "Could not rename \"{oldName}\", it does not exist any more" : "\"{oldName}\" の名前を変更できませんでした、それは既に存在しません。",
+ "The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name." : "\"{newName}\" という名前は \"{dir}\" フォルダですでに使用されています。別の名前を選択してください。",
+ "Could not rename \"{oldName}\"" : "\"{oldName}\" の名前を変更できませんでした。",
"Total rows summary" : "総行数のサマリー",
+ "\"{displayName}\" failed on some elements " : "いくつかの要素で \"{displayName}\" が失敗しました。",
+ "\"{displayName}\" batch action executed successfully" : "\"{displayName}\" バッチアクションが正常に実行されました。",
+ "ascending" : "昇順",
+ "descending" : "降順",
+ "Sort list by {column} ({direction})" : "{column} ({direction}) でリストを並べ替える",
"Select all" : "すべて選択",
+ "Unselect all" : "すべて選択解除",
+ "List of files and folders." : "ファイルとフォルダの一覧。",
+ "This list is not fully rendered for performance reasons. The files will be rendered as you navigate through the list." : "このリストはパフォーマンスの都合上、すべてレンダリングされているわけではありません。リスト内を移動すると、ファイルが次々と表示されていきます。",
+ "{summaryFile} and {summaryFolder}" : "{summaryFile} と {summaryFolder}",
"File not found" : "ファイルが見つかりません",
+ "_{count} file_::_{count} files_" : ["{count} ファイル"],
+ "_{count} folder_::_{count} folders_" : ["{count} フォルダ"],
"Storage informations" : "ストレージ情報",
"{usedQuotaByte} used" : "{usedQuotaByte} 使用されています",
"{relative}% used" : "{relative}% 使用されています",
@@ -191,8 +216,10 @@
"Ownership transfer request sent" : "所有権転送のリクエストを送信しました",
"Cannot transfer ownership of a file or folder you do not own" : "所有していないファイルまたはフォルダーの所有権を譲渡することはできません",
"Select file or folder to link to" : "リンク先のファイルまたはフォルダを選択",
+ "Loading current folder" : "現在のフォルダの読み込み中",
"No files in here" : "ファイルがありません",
"Upload some content or sync with your devices!" : "何かコンテンツをアップロードするか、デバイスからファイルを同期してください。",
+ "Go to the previous folder" : "前のフォルダへ移動",
"Go back" : "戻る",
"Share" : "共有",
"Shared by link" : "URLリンクで共有中",
@@ -201,12 +228,14 @@
"Files settings" : "ファイルの設定",
"File cannot be accessed" : "ファイルにアクセスできません",
"You might not have have permissions to view it, ask the sender to share it" : "閲覧権限がない可能性があるため、送信者に共有を依頼してください",
+ "Sort favorites first" : "お気に入りを最初に並べる",
"Show hidden files" : "隠しファイルを表示",
"Crop image previews" : "プレビュー画像を切り抜く",
"Additional settings" : "追加設定",
"WebDAV" : "WebDAV",
"Copy to clipboard" : "クリップボードにコピー",
"Use this address to access your Files via WebDAV" : "このアドレスを使用すれば、WebDAV経由でファイルにアクセスできます",
+ "If you have enabled 2FA, you must create and use a new app password by clicking here." : "2FAを有効にしている場合は、ここをクリックして新しいアプリのパスワードを作成し、使用する必要があります。",
"Clipboard is not available" : "クリップボードは利用できません",
"WebDAV URL copied to clipboard" : "WebDAVのURLがクリップボードにコピーされました",
"Unable to change the favourite state of the file" : "ファイルのお気に入りの状態を変更できません",
@@ -218,7 +247,10 @@
"Blank" : "ブランク",
"Unable to create new file from template" : "テンプレートから新しいファイルを作成できません",
"Delete permanently" : "永久に削除",
+ "Open folder {displayName}" : "フォルダ {displayName} を開く",
+ "Open in Files" : "ファイルアプリで開く",
"Open details" : "詳細を開く",
+ "Created new folder \"{name}\"" : "新規フォルダ \"{name}\" を作成した",
"Set up templates folder" : "テンプレートフォルダーを設定",
"Templates" : "テンプレート",
"Create new templates folder" : "新しいテンプレートフォルダーを作成",
@@ -255,6 +287,7 @@
"This file has the tag {tag}" : "このファイルには {tag} タグがあります。",
"This file has the tags {firstTags} and {lastTag}" : "このファイルには {firstTags} と {lastTag} というタグがあります",
"Open folder {name}" : "フォルダ {name} を開く",
+ "This list is not fully rendered for performances reasons. The files will be rendered as you navigate through the list." : "このリストはパフォーマンスの都合上、すべてレンダリングされているわけではありません。リスト内を移動すると、ファイルが次々と表示されていきます。",
"Search for an account" : "アカウントを検索",
"Choose" : "選択",
"No files or folders have been deleted yet" : "まだ削除されたファイルやフォルダはありません"
diff --git a/apps/files/l10n/ko.js b/apps/files/l10n/ko.js
index 1a37c6a54ea..bd90d5565c0 100644
--- a/apps/files/l10n/ko.js
+++ b/apps/files/l10n/ko.js
@@ -235,6 +235,8 @@ OC.L10N.register(
"Blank" : "여백",
"Unable to create new file from template" : "템플릿으로 새 파일을 만들 수 없음",
"Delete permanently" : "영구히 삭제",
+ "Copy to {target}" : "{target}에 복사",
+ "Move to {target}" : "{target}에 이동",
"Open folder {displayName}" : "{displayName} 폴더 열기",
"Open in Files" : "파일에서 열기",
"Open details" : "자세한 정보 열기",
diff --git a/apps/files/l10n/ko.json b/apps/files/l10n/ko.json
index b87d90c5791..c58b6b0a0ba 100644
--- a/apps/files/l10n/ko.json
+++ b/apps/files/l10n/ko.json
@@ -233,6 +233,8 @@
"Blank" : "여백",
"Unable to create new file from template" : "템플릿으로 새 파일을 만들 수 없음",
"Delete permanently" : "영구히 삭제",
+ "Copy to {target}" : "{target}에 복사",
+ "Move to {target}" : "{target}에 이동",
"Open folder {displayName}" : "{displayName} 폴더 열기",
"Open in Files" : "파일에서 열기",
"Open details" : "자세한 정보 열기",
diff --git a/apps/files/l10n/mk.js b/apps/files/l10n/mk.js
index 4429e464c50..cc02eb29174 100644
--- a/apps/files/l10n/mk.js
+++ b/apps/files/l10n/mk.js
@@ -186,6 +186,7 @@ OC.L10N.register(
"Another entry with the same name already exists" : "Друг запис со исто име веќе постои",
"Renamed \"{oldName}\" to \"{newName}\"" : "Преименувано \"{oldName}\" во \"{newName}\"",
"Could not rename \"{oldName}\", it does not exist any more" : "Неможе да се преименува \"{oldName}\", не постои повеќе",
+ "The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Името \"{newName}\" веќе се користи во папката \"{dir}\". Ве молиме изберете друго име.",
"Could not rename \"{oldName}\"" : "Неможе да се преименува \"{oldName}\"",
"Total rows summary" : "Резиме на вкупно редови",
"\"{displayName}\" failed on some elements " : "\"{displayName}\" не успеа на некои елементи",
@@ -197,7 +198,10 @@ OC.L10N.register(
"Unselect all" : "Од-означи се",
"List of files and folders." : "Листа на датотеки и папки.",
"This list is not fully rendered for performance reasons. The files will be rendered as you navigate through the list." : "Оваа листа не е целосно прикажана поради заштеда на перформанси. Датотеките ќе се прикажуваат додека се движите низ листата.",
+ "{summaryFile} and {summaryFolder}" : "{summaryFile} и {summaryFolder}",
"File not found" : "Датотеката не е пронајдена",
+ "_{count} file_::_{count} files_" : ["{count} датотека","{count} датотеки"],
+ "_{count} folder_::_{count} folders_" : ["{count} папка","{count} папки"],
"Storage informations" : "Информации за складиштето",
"{usedQuotaByte} used" : "искористено {usedQuotaByte}",
"{relative}% used" : "искористено {relative}% ",
@@ -245,9 +249,12 @@ OC.L10N.register(
"Blank" : "Празно",
"Unable to create new file from template" : "Неможе да се креира датотека од шаблон",
"Delete permanently" : "Избриши",
+ "Copy to {target}" : "Копирај во {target}",
+ "Move to {target}" : "Премести во {target}",
"Open folder {displayName}" : "Отвори папка {displayName}",
"Open in Files" : "Отвори во датотеките",
"Open details" : "Отвори детали",
+ "Created new folder \"{name}\"" : "Креирана нова папка \"{name}\"",
"Set up templates folder" : "Поставете папка за шаблони",
"Templates" : "Шаблони",
"Create new templates folder" : "Креирај нова папка за шаблони",
diff --git a/apps/files/l10n/mk.json b/apps/files/l10n/mk.json
index 8c2d1560c75..7370a63d5ac 100644
--- a/apps/files/l10n/mk.json
+++ b/apps/files/l10n/mk.json
@@ -184,6 +184,7 @@
"Another entry with the same name already exists" : "Друг запис со исто име веќе постои",
"Renamed \"{oldName}\" to \"{newName}\"" : "Преименувано \"{oldName}\" во \"{newName}\"",
"Could not rename \"{oldName}\", it does not exist any more" : "Неможе да се преименува \"{oldName}\", не постои повеќе",
+ "The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Името \"{newName}\" веќе се користи во папката \"{dir}\". Ве молиме изберете друго име.",
"Could not rename \"{oldName}\"" : "Неможе да се преименува \"{oldName}\"",
"Total rows summary" : "Резиме на вкупно редови",
"\"{displayName}\" failed on some elements " : "\"{displayName}\" не успеа на некои елементи",
@@ -195,7 +196,10 @@
"Unselect all" : "Од-означи се",
"List of files and folders." : "Листа на датотеки и папки.",
"This list is not fully rendered for performance reasons. The files will be rendered as you navigate through the list." : "Оваа листа не е целосно прикажана поради заштеда на перформанси. Датотеките ќе се прикажуваат додека се движите низ листата.",
+ "{summaryFile} and {summaryFolder}" : "{summaryFile} и {summaryFolder}",
"File not found" : "Датотеката не е пронајдена",
+ "_{count} file_::_{count} files_" : ["{count} датотека","{count} датотеки"],
+ "_{count} folder_::_{count} folders_" : ["{count} папка","{count} папки"],
"Storage informations" : "Информации за складиштето",
"{usedQuotaByte} used" : "искористено {usedQuotaByte}",
"{relative}% used" : "искористено {relative}% ",
@@ -243,9 +247,12 @@
"Blank" : "Празно",
"Unable to create new file from template" : "Неможе да се креира датотека од шаблон",
"Delete permanently" : "Избриши",
+ "Copy to {target}" : "Копирај во {target}",
+ "Move to {target}" : "Премести во {target}",
"Open folder {displayName}" : "Отвори папка {displayName}",
"Open in Files" : "Отвори во датотеките",
"Open details" : "Отвори детали",
+ "Created new folder \"{name}\"" : "Креирана нова папка \"{name}\"",
"Set up templates folder" : "Поставете папка за шаблони",
"Templates" : "Шаблони",
"Create new templates folder" : "Креирај нова папка за шаблони",
diff --git a/apps/files/l10n/pl.js b/apps/files/l10n/pl.js
index 64e3e64eb95..5ecb3a27b71 100644
--- a/apps/files/l10n/pl.js
+++ b/apps/files/l10n/pl.js
@@ -249,6 +249,8 @@ OC.L10N.register(
"Blank" : "Pusty",
"Unable to create new file from template" : "Nie można utworzyć nowego pliku z szablonu",
"Delete permanently" : "Usuń bezpowrotnie",
+ "Copy to {target}" : "Skopiuj do {target}",
+ "Move to {target}" : "Przenieś do {target}",
"Open folder {displayName}" : "Otwórz katalog {displayName}",
"Open in Files" : "Otwórz w Plikach",
"Open details" : "Otwórz szczegóły",
diff --git a/apps/files/l10n/pl.json b/apps/files/l10n/pl.json
index 8eb36fdf07f..20a29e793a1 100644
--- a/apps/files/l10n/pl.json
+++ b/apps/files/l10n/pl.json
@@ -247,6 +247,8 @@
"Blank" : "Pusty",
"Unable to create new file from template" : "Nie można utworzyć nowego pliku z szablonu",
"Delete permanently" : "Usuń bezpowrotnie",
+ "Copy to {target}" : "Skopiuj do {target}",
+ "Move to {target}" : "Przenieś do {target}",
"Open folder {displayName}" : "Otwórz katalog {displayName}",
"Open in Files" : "Otwórz w Plikach",
"Open details" : "Otwórz szczegóły",
diff --git a/apps/files/l10n/pt_BR.js b/apps/files/l10n/pt_BR.js
index d3c1d03012d..a3ebdb2eee9 100644
--- a/apps/files/l10n/pt_BR.js
+++ b/apps/files/l10n/pt_BR.js
@@ -249,6 +249,8 @@ OC.L10N.register(
"Blank" : "Em branco",
"Unable to create new file from template" : "Incapaz de criar novo arquivo a partir do modelo",
"Delete permanently" : "Remover permanentemente",
+ "Copy to {target}" : "Copiar para {target}",
+ "Move to {target}" : "Mover para {target}",
"Open folder {displayName}" : "Abra a pasta {displayName}",
"Open in Files" : "Abrir em arquivos",
"Open details" : "Abrir detalhes",
diff --git a/apps/files/l10n/pt_BR.json b/apps/files/l10n/pt_BR.json
index c2491f66c74..cc31c07668c 100644
--- a/apps/files/l10n/pt_BR.json
+++ b/apps/files/l10n/pt_BR.json
@@ -247,6 +247,8 @@
"Blank" : "Em branco",
"Unable to create new file from template" : "Incapaz de criar novo arquivo a partir do modelo",
"Delete permanently" : "Remover permanentemente",
+ "Copy to {target}" : "Copiar para {target}",
+ "Move to {target}" : "Mover para {target}",
"Open folder {displayName}" : "Abra a pasta {displayName}",
"Open in Files" : "Abrir em arquivos",
"Open details" : "Abrir detalhes",
diff --git a/apps/files/l10n/ru.js b/apps/files/l10n/ru.js
index 1bbe4921b6f..50a8496a1ef 100644
--- a/apps/files/l10n/ru.js
+++ b/apps/files/l10n/ru.js
@@ -249,6 +249,8 @@ OC.L10N.register(
"Blank" : "Пустой",
"Unable to create new file from template" : "Не удалось создать файл на основе шаблона",
"Delete permanently" : "Удалить навсегда",
+ "Copy to {target}" : "Скопировать в {target}",
+ "Move to {target}" : "Переместить в {target}",
"Open folder {displayName}" : "Открыть каталог {displayName}",
"Open in Files" : "Открыть в Файлах",
"Open details" : "Открыть подробности",
diff --git a/apps/files/l10n/ru.json b/apps/files/l10n/ru.json
index a1f85ea9efe..d7c797fe026 100644
--- a/apps/files/l10n/ru.json
+++ b/apps/files/l10n/ru.json
@@ -247,6 +247,8 @@
"Blank" : "Пустой",
"Unable to create new file from template" : "Не удалось создать файл на основе шаблона",
"Delete permanently" : "Удалить навсегда",
+ "Copy to {target}" : "Скопировать в {target}",
+ "Move to {target}" : "Переместить в {target}",
"Open folder {displayName}" : "Открыть каталог {displayName}",
"Open in Files" : "Открыть в Файлах",
"Open details" : "Открыть подробности",
diff --git a/apps/files/l10n/sr.js b/apps/files/l10n/sr.js
index 9bc366e9d61..98e4314c692 100644
--- a/apps/files/l10n/sr.js
+++ b/apps/files/l10n/sr.js
@@ -188,6 +188,8 @@ OC.L10N.register(
"Could not rename \"{oldName}\", it does not exist any more" : "Не може да се промени име фајла „{fileName}” јер фајл више не постоји",
"The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Назив „{targetName}” се већ користи у директоријуму „{dir}”. Молимо вас да изаберете неко друго име.",
"Could not rename \"{oldName}\"" : "Не може да се промени име фајла „{fileName}”",
+ "Could not copy {file}. {message}" : "{file} не може да се копира. {message}",
+ "Could not move {file}. {message}" : "{file} не може да се премести. {message}",
"Total rows summary" : "Резиме укупног броја редова",
"\"{displayName}\" failed on some elements " : "„{displayName}” није успело на неким елементима",
"\"{displayName}\" batch action executed successfully" : "Пакетна акција „{displayName}” се успешно извршила",
@@ -249,6 +251,16 @@ OC.L10N.register(
"Blank" : "Празно",
"Unable to create new file from template" : "Из шаблона није могао да се креира нови фајл",
"Delete permanently" : "Обриши заувек",
+ "Destination is not a folder" : "Одредиште није фолдер",
+ "This file/folder is already in that directory" : "Овај фајл/фолдер се већ налази у том директоријуму",
+ "You cannot move a file/folder onto itself or into a subfolder of itself" : "Фајл/фолдер не можете да преместите у самог себе или у његов подфолдер",
+ "A file or folder with that name already exists in this folder" : "У овом фолдеру већ постоји фајл или фолдер са тим именом",
+ "The files is locked" : "Фајл је закључан",
+ "The file does not exist anymore" : "Фајл више не постоји",
+ "Chose destination" : "Изаберите одредиште",
+ "Copy to {target}" : "Копирај у {target}",
+ "Move to {target}" : "Премести у {target}",
+ "Cancelled move or copy operation" : "Операција премештања или копирања је отказана",
"Open folder {displayName}" : "Отвори фолдер {displayName}",
"Open in Files" : "Отвори у Фајловима",
"Open details" : "Отвори детаље",
@@ -257,6 +269,11 @@ OC.L10N.register(
"Templates" : "Шаблони",
"Create new templates folder" : "Креирај нови фолдер шаблона",
"Unable to initialize the templates directory" : "Фолдер са шаблонима није могао да се иницијализује",
+ "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} фолдер","{folderCount} фолдера","{folderCount} фолдера"],
+ "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} фајл","{fileCount} фајла","{fileCount} фајлова"],
+ "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 фајл и {folderCount} фолдер","1 фајл и {folderCount} фолдера","1 фајл и {folderCount} фолдера"],
+ "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} фајл и 1 фолдер","{fileCount} фајла и 1 фолдер","{fileCount} фајлова и 1 фолдер"],
+ "{fileCount} files and {folderCount} folders" : "{fileCount} фајлова и {folderCount} фолдера",
"List of favorites files and folders." : "Листа омиљених фајлова и директоријума.",
"No favorites yet" : "Још нема омиљених",
"Files and folders you mark as favorite will show up here" : "Фајлови и фасцикле које обележите као омиљене појавиће се овде",
diff --git a/apps/files/l10n/sr.json b/apps/files/l10n/sr.json
index d59a6926d59..b8e47535e61 100644
--- a/apps/files/l10n/sr.json
+++ b/apps/files/l10n/sr.json
@@ -186,6 +186,8 @@
"Could not rename \"{oldName}\", it does not exist any more" : "Не може да се промени име фајла „{fileName}” јер фајл више не постоји",
"The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Назив „{targetName}” се већ користи у директоријуму „{dir}”. Молимо вас да изаберете неко друго име.",
"Could not rename \"{oldName}\"" : "Не може да се промени име фајла „{fileName}”",
+ "Could not copy {file}. {message}" : "{file} не може да се копира. {message}",
+ "Could not move {file}. {message}" : "{file} не може да се премести. {message}",
"Total rows summary" : "Резиме укупног броја редова",
"\"{displayName}\" failed on some elements " : "„{displayName}” није успело на неким елементима",
"\"{displayName}\" batch action executed successfully" : "Пакетна акција „{displayName}” се успешно извршила",
@@ -247,6 +249,16 @@
"Blank" : "Празно",
"Unable to create new file from template" : "Из шаблона није могао да се креира нови фајл",
"Delete permanently" : "Обриши заувек",
+ "Destination is not a folder" : "Одредиште није фолдер",
+ "This file/folder is already in that directory" : "Овај фајл/фолдер се већ налази у том директоријуму",
+ "You cannot move a file/folder onto itself or into a subfolder of itself" : "Фајл/фолдер не можете да преместите у самог себе или у његов подфолдер",
+ "A file or folder with that name already exists in this folder" : "У овом фолдеру већ постоји фајл или фолдер са тим именом",
+ "The files is locked" : "Фајл је закључан",
+ "The file does not exist anymore" : "Фајл више не постоји",
+ "Chose destination" : "Изаберите одредиште",
+ "Copy to {target}" : "Копирај у {target}",
+ "Move to {target}" : "Премести у {target}",
+ "Cancelled move or copy operation" : "Операција премештања или копирања је отказана",
"Open folder {displayName}" : "Отвори фолдер {displayName}",
"Open in Files" : "Отвори у Фајловима",
"Open details" : "Отвори детаље",
@@ -255,6 +267,11 @@
"Templates" : "Шаблони",
"Create new templates folder" : "Креирај нови фолдер шаблона",
"Unable to initialize the templates directory" : "Фолдер са шаблонима није могао да се иницијализује",
+ "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} фолдер","{folderCount} фолдера","{folderCount} фолдера"],
+ "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} фајл","{fileCount} фајла","{fileCount} фајлова"],
+ "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 фајл и {folderCount} фолдер","1 фајл и {folderCount} фолдера","1 фајл и {folderCount} фолдера"],
+ "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} фајл и 1 фолдер","{fileCount} фајла и 1 фолдер","{fileCount} фајлова и 1 фолдер"],
+ "{fileCount} files and {folderCount} folders" : "{fileCount} фајлова и {folderCount} фолдера",
"List of favorites files and folders." : "Листа омиљених фајлова и директоријума.",
"No favorites yet" : "Још нема омиљених",
"Files and folders you mark as favorite will show up here" : "Фајлови и фасцикле које обележите као омиљене појавиће се овде",
diff --git a/apps/files/l10n/sv.js b/apps/files/l10n/sv.js
index 71ef446682a..d9d825ac5dd 100644
--- a/apps/files/l10n/sv.js
+++ b/apps/files/l10n/sv.js
@@ -188,6 +188,8 @@ OC.L10N.register(
"Could not rename \"{oldName}\", it does not exist any more" : "Kunde inte byta namn på \"{oldName}\", den finns inte längre",
"The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Namnet \"{newName}\" används redan i mappen \"{dir}\". Välj ett annat namn.",
"Could not rename \"{oldName}\"" : "Kunde inte byta namn på \"{oldName}\"",
+ "Could not copy {file}. {message}" : "Kunde inte kopiera {file}. {message}",
+ "Could not move {file}. {message}" : "Kunde inte flytta {file}. {message}",
"Total rows summary" : "Sammanfattning antal rader",
"\"{displayName}\" failed on some elements " : "\"{displayName}\" misslyckades med vissa element",
"\"{displayName}\" batch action executed successfully" : "Batchåtgärden \"{displayName}\" har utförts",
@@ -249,6 +251,16 @@ OC.L10N.register(
"Blank" : "Tom",
"Unable to create new file from template" : "Kunde inte skapa fil från mall",
"Delete permanently" : "Ta bort permanent",
+ "Destination is not a folder" : "Destinationen är inte en mapp",
+ "This file/folder is already in that directory" : "Den här filen/mappen finns redan i den katalogen",
+ "You cannot move a file/folder onto itself or into a subfolder of itself" : "Du kan inte flytta en fil/mapp till sig själv eller till en undermapp till sig själv",
+ "A file or folder with that name already exists in this folder" : "En fil eller mapp med det namnet finns redan i den här mappen",
+ "The files is locked" : "Filerna är låsta",
+ "The file does not exist anymore" : "Filen finns inte längre",
+ "Chose destination" : "Välj destination",
+ "Copy to {target}" : "Kopiera till {target}",
+ "Move to {target}" : "Flytta till {target}",
+ "Cancelled move or copy operation" : "Flytta eller kopiera avbröts",
"Open folder {displayName}" : "Öppna mappen {displayName}",
"Open in Files" : "Öppna i Filer",
"Open details" : "Öppna detaljer",
@@ -257,6 +269,11 @@ OC.L10N.register(
"Templates" : "Mallar",
"Create new templates folder" : "Skapa ny mallmapp",
"Unable to initialize the templates directory" : "Kunde inte initialisera mall-mappen",
+ "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} mapp","{folderCount} mappar"],
+ "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} fil","{fileCount} filer"],
+ "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 fil och {folderCount} mapp","1 fil och {folderCount} mappar"],
+ "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} fil och 1 mapp","{fileCount} filer och 1 mapp"],
+ "{fileCount} files and {folderCount} folders" : "{fileCount} filer och {folderCount} mappar",
"List of favorites files and folders." : "Lista över favoritfiler och mappar.",
"No favorites yet" : "Inga favoriter ännu",
"Files and folders you mark as favorite will show up here" : "Filer och mappar markerade som favoriter kommer att visas här",
diff --git a/apps/files/l10n/sv.json b/apps/files/l10n/sv.json
index 6eeaf224917..f95b103b00d 100644
--- a/apps/files/l10n/sv.json
+++ b/apps/files/l10n/sv.json
@@ -186,6 +186,8 @@
"Could not rename \"{oldName}\", it does not exist any more" : "Kunde inte byta namn på \"{oldName}\", den finns inte längre",
"The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Namnet \"{newName}\" används redan i mappen \"{dir}\". Välj ett annat namn.",
"Could not rename \"{oldName}\"" : "Kunde inte byta namn på \"{oldName}\"",
+ "Could not copy {file}. {message}" : "Kunde inte kopiera {file}. {message}",
+ "Could not move {file}. {message}" : "Kunde inte flytta {file}. {message}",
"Total rows summary" : "Sammanfattning antal rader",
"\"{displayName}\" failed on some elements " : "\"{displayName}\" misslyckades med vissa element",
"\"{displayName}\" batch action executed successfully" : "Batchåtgärden \"{displayName}\" har utförts",
@@ -247,6 +249,16 @@
"Blank" : "Tom",
"Unable to create new file from template" : "Kunde inte skapa fil från mall",
"Delete permanently" : "Ta bort permanent",
+ "Destination is not a folder" : "Destinationen är inte en mapp",
+ "This file/folder is already in that directory" : "Den här filen/mappen finns redan i den katalogen",
+ "You cannot move a file/folder onto itself or into a subfolder of itself" : "Du kan inte flytta en fil/mapp till sig själv eller till en undermapp till sig själv",
+ "A file or folder with that name already exists in this folder" : "En fil eller mapp med det namnet finns redan i den här mappen",
+ "The files is locked" : "Filerna är låsta",
+ "The file does not exist anymore" : "Filen finns inte längre",
+ "Chose destination" : "Välj destination",
+ "Copy to {target}" : "Kopiera till {target}",
+ "Move to {target}" : "Flytta till {target}",
+ "Cancelled move or copy operation" : "Flytta eller kopiera avbröts",
"Open folder {displayName}" : "Öppna mappen {displayName}",
"Open in Files" : "Öppna i Filer",
"Open details" : "Öppna detaljer",
@@ -255,6 +267,11 @@
"Templates" : "Mallar",
"Create new templates folder" : "Skapa ny mallmapp",
"Unable to initialize the templates directory" : "Kunde inte initialisera mall-mappen",
+ "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} mapp","{folderCount} mappar"],
+ "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} fil","{fileCount} filer"],
+ "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 fil och {folderCount} mapp","1 fil och {folderCount} mappar"],
+ "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} fil och 1 mapp","{fileCount} filer och 1 mapp"],
+ "{fileCount} files and {folderCount} folders" : "{fileCount} filer och {folderCount} mappar",
"List of favorites files and folders." : "Lista över favoritfiler och mappar.",
"No favorites yet" : "Inga favoriter ännu",
"Files and folders you mark as favorite will show up here" : "Filer och mappar markerade som favoriter kommer att visas här",
diff --git a/apps/files/l10n/tr.js b/apps/files/l10n/tr.js
index 7dd5cf81d7a..f724592feec 100644
--- a/apps/files/l10n/tr.js
+++ b/apps/files/l10n/tr.js
@@ -188,6 +188,8 @@ OC.L10N.register(
"Could not rename \"{oldName}\", it does not exist any more" : "\"{oldName}\" adı artık olmadığından değiştirilemedi. ",
"The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name." : "\"{newName}\" adı \"{dir}\" klasöründe zaten kullanılmış. Lütfen başka bir ad seçin.",
"Could not rename \"{oldName}\"" : "\"{oldName}\" adı değiştirilemedi",
+ "Could not copy {file}. {message}" : "{file} dosyası kopyalanamadı. {message}",
+ "Could not move {file}. {message}" : "{file} dosyası taşınamadı. {message}",
"Total rows summary" : "Toplam satır özeti",
"\"{displayName}\" failed on some elements " : "\"{displayName}\" toplu işlemi bazı bileşenlerde tamamlanamadı",
"\"{displayName}\" batch action executed successfully" : "\"{displayName}\" toplu işlemi tamamlandı",
@@ -249,6 +251,16 @@ OC.L10N.register(
"Blank" : "Boş",
"Unable to create new file from template" : "Kalıptan yeni dosya eklenemedi",
"Delete permanently" : "Kalıcı olarak sil",
+ "Destination is not a folder" : "Hedef bir klasör değil",
+ "This file/folder is already in that directory" : "Dosya ya da klasör bu klasörde zaten var",
+ "You cannot move a file/folder onto itself or into a subfolder of itself" : "Bir dosyayı ya da klasörü kendi üzerine veya kendisinin alt klasörüne taşıyamazsınız",
+ "A file or folder with that name already exists in this folder" : "Bu klasörde aynı adlı bir dosya ya da klasör zaten var",
+ "The files is locked" : "Dosyalar kilitli",
+ "The file does not exist anymore" : "Dosya artık yok",
+ "Chose destination" : "Hedefi seçin",
+ "Copy to {target}" : "{target} içine kopyala",
+ "Move to {target}" : "{target} içine taşı",
+ "Cancelled move or copy operation" : "Taşıma ya da kopyalama işlemi iptal edildi",
"Open folder {displayName}" : "{displayName} klasörünü aç",
"Open in Files" : "Dosyalar uygulamasında aç",
"Open details" : "Ayrıntıları aç",
@@ -257,6 +269,11 @@ OC.L10N.register(
"Templates" : "Kalıplar",
"Create new templates folder" : "Yeni kalıp klasörü oluştur",
"Unable to initialize the templates directory" : "Kalıp klasörü hazırlanamadı",
+ "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} klasör","{folderCount} klasör"],
+ "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} dosya","{fileCount} dosya"],
+ "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 dosya ve {folderCount} klasör","1 dosya ve {folderCount} klasör"],
+ "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} dosya ve 1 klasör","{fileCount} dosya ve 1 klasör"],
+ "{fileCount} files and {folderCount} folders" : "{fileCount} dosya ve {folderCount} klasör",
"List of favorites files and folders." : "Sık kullanılan dosya ve klasör listesi.",
"No favorites yet" : "Henüz sık kullanılan bir öge yok",
"Files and folders you mark as favorite will show up here" : "Sık kullanılanlara eklediğiniz dosya ve klasörler burada görüntülenir",
diff --git a/apps/files/l10n/tr.json b/apps/files/l10n/tr.json
index 78da48a52b1..6b9ce6d7d56 100644
--- a/apps/files/l10n/tr.json
+++ b/apps/files/l10n/tr.json
@@ -186,6 +186,8 @@
"Could not rename \"{oldName}\", it does not exist any more" : "\"{oldName}\" adı artık olmadığından değiştirilemedi. ",
"The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name." : "\"{newName}\" adı \"{dir}\" klasöründe zaten kullanılmış. Lütfen başka bir ad seçin.",
"Could not rename \"{oldName}\"" : "\"{oldName}\" adı değiştirilemedi",
+ "Could not copy {file}. {message}" : "{file} dosyası kopyalanamadı. {message}",
+ "Could not move {file}. {message}" : "{file} dosyası taşınamadı. {message}",
"Total rows summary" : "Toplam satır özeti",
"\"{displayName}\" failed on some elements " : "\"{displayName}\" toplu işlemi bazı bileşenlerde tamamlanamadı",
"\"{displayName}\" batch action executed successfully" : "\"{displayName}\" toplu işlemi tamamlandı",
@@ -247,6 +249,16 @@
"Blank" : "Boş",
"Unable to create new file from template" : "Kalıptan yeni dosya eklenemedi",
"Delete permanently" : "Kalıcı olarak sil",
+ "Destination is not a folder" : "Hedef bir klasör değil",
+ "This file/folder is already in that directory" : "Dosya ya da klasör bu klasörde zaten var",
+ "You cannot move a file/folder onto itself or into a subfolder of itself" : "Bir dosyayı ya da klasörü kendi üzerine veya kendisinin alt klasörüne taşıyamazsınız",
+ "A file or folder with that name already exists in this folder" : "Bu klasörde aynı adlı bir dosya ya da klasör zaten var",
+ "The files is locked" : "Dosyalar kilitli",
+ "The file does not exist anymore" : "Dosya artık yok",
+ "Chose destination" : "Hedefi seçin",
+ "Copy to {target}" : "{target} içine kopyala",
+ "Move to {target}" : "{target} içine taşı",
+ "Cancelled move or copy operation" : "Taşıma ya da kopyalama işlemi iptal edildi",
"Open folder {displayName}" : "{displayName} klasörünü aç",
"Open in Files" : "Dosyalar uygulamasında aç",
"Open details" : "Ayrıntıları aç",
@@ -255,6 +267,11 @@
"Templates" : "Kalıplar",
"Create new templates folder" : "Yeni kalıp klasörü oluştur",
"Unable to initialize the templates directory" : "Kalıp klasörü hazırlanamadı",
+ "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} klasör","{folderCount} klasör"],
+ "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} dosya","{fileCount} dosya"],
+ "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 dosya ve {folderCount} klasör","1 dosya ve {folderCount} klasör"],
+ "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} dosya ve 1 klasör","{fileCount} dosya ve 1 klasör"],
+ "{fileCount} files and {folderCount} folders" : "{fileCount} dosya ve {folderCount} klasör",
"List of favorites files and folders." : "Sık kullanılan dosya ve klasör listesi.",
"No favorites yet" : "Henüz sık kullanılan bir öge yok",
"Files and folders you mark as favorite will show up here" : "Sık kullanılanlara eklediğiniz dosya ve klasörler burada görüntülenir",
diff --git a/apps/files/l10n/uk.js b/apps/files/l10n/uk.js
index cd62102d4b1..847f91ee5fc 100644
--- a/apps/files/l10n/uk.js
+++ b/apps/files/l10n/uk.js
@@ -249,6 +249,8 @@ OC.L10N.register(
"Blank" : "Порожньо",
"Unable to create new file from template" : "Неможливо створити новий файл з шаблону",
"Delete permanently" : "Вилучити назавжди",
+ "Copy to {target}" : "Копіювати до {target}",
+ "Move to {target}" : "Перемістити до {target}",
"Open folder {displayName}" : "Відкрити каталог {displayName}",
"Open in Files" : "Відкрити у Файлах",
"Open details" : "Показати деталі",
diff --git a/apps/files/l10n/uk.json b/apps/files/l10n/uk.json
index 3e7a8bb1d55..7761699fba4 100644
--- a/apps/files/l10n/uk.json
+++ b/apps/files/l10n/uk.json
@@ -247,6 +247,8 @@
"Blank" : "Порожньо",
"Unable to create new file from template" : "Неможливо створити новий файл з шаблону",
"Delete permanently" : "Вилучити назавжди",
+ "Copy to {target}" : "Копіювати до {target}",
+ "Move to {target}" : "Перемістити до {target}",
"Open folder {displayName}" : "Відкрити каталог {displayName}",
"Open in Files" : "Відкрити у Файлах",
"Open details" : "Показати деталі",
diff --git a/apps/files/l10n/zh_CN.js b/apps/files/l10n/zh_CN.js
index 28546b9b39e..e04c25fa8c6 100644
--- a/apps/files/l10n/zh_CN.js
+++ b/apps/files/l10n/zh_CN.js
@@ -246,6 +246,8 @@ OC.L10N.register(
"Blank" : "空白",
"Unable to create new file from template" : "无法从模板创建新文件",
"Delete permanently" : "彻底删除",
+ "Copy to {target}" : "复制到 {target}",
+ "Move to {target}" : "移动到 {target}",
"Open folder {displayName}" : "打开文件夹{displayName}",
"Open in Files" : "在文件中打开",
"Open details" : "打开详情",
diff --git a/apps/files/l10n/zh_CN.json b/apps/files/l10n/zh_CN.json
index 62d3a03617c..80cbdd26884 100644
--- a/apps/files/l10n/zh_CN.json
+++ b/apps/files/l10n/zh_CN.json
@@ -244,6 +244,8 @@
"Blank" : "空白",
"Unable to create new file from template" : "无法从模板创建新文件",
"Delete permanently" : "彻底删除",
+ "Copy to {target}" : "复制到 {target}",
+ "Move to {target}" : "移动到 {target}",
"Open folder {displayName}" : "打开文件夹{displayName}",
"Open in Files" : "在文件中打开",
"Open details" : "打开详情",
diff --git a/apps/files/l10n/zh_HK.js b/apps/files/l10n/zh_HK.js
index 0d8b2beebdf..89e79484898 100644
--- a/apps/files/l10n/zh_HK.js
+++ b/apps/files/l10n/zh_HK.js
@@ -188,6 +188,8 @@ OC.L10N.register(
"Could not rename \"{oldName}\", it does not exist any more" : "無法命名檔案「{oldName}」,因為此檔案已經不存在",
"The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name." : "此名稱「{newName}」在這資料夾「{dir}」已經被使用。請選擇其他名稱。",
"Could not rename \"{oldName}\"" : "無法重新命名「{oldName}」",
+ "Could not copy {file}. {message}" : "無法複製 {file}。{message}",
+ "Could not move {file}. {message}" : "無法移動 {file}。{message}",
"Total rows summary" : "總列摘要",
"\"{displayName}\" failed on some elements " : "“{displayName}” 在某些元素上失敗",
"\"{displayName}\" batch action executed successfully" : "成功執行 “{displayName}” 批處理操作",
@@ -249,6 +251,16 @@ OC.L10N.register(
"Blank" : "空白",
"Unable to create new file from template" : "無法從模板創建新檔案",
"Delete permanently" : "永久刪除",
+ "Destination is not a folder" : "目標地不是資料夾",
+ "This file/folder is already in that directory" : "此檔案/資料夾已在該目錄中",
+ "You cannot move a file/folder onto itself or into a subfolder of itself" : "您無法將檔案/資料夾移動到其自身或子資料夾中",
+ "A file or folder with that name already exists in this folder" : "此資料夾中已存在同名的檔案或資料夾",
+ "The files is locked" : "檔案已被上鎖",
+ "The file does not exist anymore" : "檔案已不存在",
+ "Chose destination" : "選擇目標地",
+ "Copy to {target}" : "複製到 {target}",
+ "Move to {target}" : "移動到 {target}",
+ "Cancelled move or copy operation" : "已取消移動或複製操作",
"Open folder {displayName}" : "打開資料夾 {displayName}",
"Open in Files" : "在「檔案」應用程式中打開",
"Open details" : "開啟細節",
@@ -257,6 +269,11 @@ OC.L10N.register(
"Templates" : "模板",
"Create new templates folder" : "創建新範本資料夾",
"Unable to initialize the templates directory" : "無法初始化模板目錄",
+ "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} 個資料夾"],
+ "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} 個檔案"],
+ "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 個檔案與 {folderCount} 個資料夾"],
+ "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} 個檔案與 1 個資料夾"],
+ "{fileCount} files and {folderCount} folders" : "{fileCount} 個檔案與 {folderCount} 個資料夾",
"List of favorites files and folders." : "最愛檔案與資料夾的清單。",
"No favorites yet" : "尚無最愛",
"Files and folders you mark as favorite will show up here" : "您標記為最愛的檔案與資料夾將會顯示在這裡",
diff --git a/apps/files/l10n/zh_HK.json b/apps/files/l10n/zh_HK.json
index b8b0699162f..ee2f9172c1a 100644
--- a/apps/files/l10n/zh_HK.json
+++ b/apps/files/l10n/zh_HK.json
@@ -186,6 +186,8 @@
"Could not rename \"{oldName}\", it does not exist any more" : "無法命名檔案「{oldName}」,因為此檔案已經不存在",
"The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name." : "此名稱「{newName}」在這資料夾「{dir}」已經被使用。請選擇其他名稱。",
"Could not rename \"{oldName}\"" : "無法重新命名「{oldName}」",
+ "Could not copy {file}. {message}" : "無法複製 {file}。{message}",
+ "Could not move {file}. {message}" : "無法移動 {file}。{message}",
"Total rows summary" : "總列摘要",
"\"{displayName}\" failed on some elements " : "“{displayName}” 在某些元素上失敗",
"\"{displayName}\" batch action executed successfully" : "成功執行 “{displayName}” 批處理操作",
@@ -247,6 +249,16 @@
"Blank" : "空白",
"Unable to create new file from template" : "無法從模板創建新檔案",
"Delete permanently" : "永久刪除",
+ "Destination is not a folder" : "目標地不是資料夾",
+ "This file/folder is already in that directory" : "此檔案/資料夾已在該目錄中",
+ "You cannot move a file/folder onto itself or into a subfolder of itself" : "您無法將檔案/資料夾移動到其自身或子資料夾中",
+ "A file or folder with that name already exists in this folder" : "此資料夾中已存在同名的檔案或資料夾",
+ "The files is locked" : "檔案已被上鎖",
+ "The file does not exist anymore" : "檔案已不存在",
+ "Chose destination" : "選擇目標地",
+ "Copy to {target}" : "複製到 {target}",
+ "Move to {target}" : "移動到 {target}",
+ "Cancelled move or copy operation" : "已取消移動或複製操作",
"Open folder {displayName}" : "打開資料夾 {displayName}",
"Open in Files" : "在「檔案」應用程式中打開",
"Open details" : "開啟細節",
@@ -255,6 +267,11 @@
"Templates" : "模板",
"Create new templates folder" : "創建新範本資料夾",
"Unable to initialize the templates directory" : "無法初始化模板目錄",
+ "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} 個資料夾"],
+ "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} 個檔案"],
+ "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 個檔案與 {folderCount} 個資料夾"],
+ "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} 個檔案與 1 個資料夾"],
+ "{fileCount} files and {folderCount} folders" : "{fileCount} 個檔案與 {folderCount} 個資料夾",
"List of favorites files and folders." : "最愛檔案與資料夾的清單。",
"No favorites yet" : "尚無最愛",
"Files and folders you mark as favorite will show up here" : "您標記為最愛的檔案與資料夾將會顯示在這裡",
diff --git a/apps/files/l10n/zh_TW.js b/apps/files/l10n/zh_TW.js
index 8b0e8e6fb06..861c848fd0f 100644
--- a/apps/files/l10n/zh_TW.js
+++ b/apps/files/l10n/zh_TW.js
@@ -188,6 +188,8 @@ OC.L10N.register(
"Could not rename \"{oldName}\", it does not exist any more" : "無法命名檔案「{oldName}」,因為此檔案已經不存在",
"The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name." : "此名稱「{newName}」在資料夾「{dir}」中已被使用。請選擇其他名稱。",
"Could not rename \"{oldName}\"" : "無法重新命名「{oldName}」",
+ "Could not copy {file}. {message}" : "無法複製 {file}。{message}",
+ "Could not move {file}. {message}" : "無法移動 {file}。{message}",
"Total rows summary" : "總列摘要",
"\"{displayName}\" failed on some elements " : "「{displayName}」在某些元素上失敗",
"\"{displayName}\" batch action executed successfully" : "「{displayName}」批次動作執行成功",
@@ -249,6 +251,16 @@ OC.L10N.register(
"Blank" : "空白",
"Unable to create new file from template" : "無法從範本建立新檔案",
"Delete permanently" : "永久刪除",
+ "Destination is not a folder" : "目的地不是資料夾",
+ "This file/folder is already in that directory" : "此檔案/資料夾已在該目錄中",
+ "You cannot move a file/folder onto itself or into a subfolder of itself" : "您無法將檔案/資料夾移動到其自身或子資料夾中",
+ "A file or folder with that name already exists in this folder" : "此資料夾中已存在同名的檔案或資料夾",
+ "The files is locked" : "檔案已鎖定",
+ "The file does not exist anymore" : "檔案已不存在",
+ "Chose destination" : "選擇目的地",
+ "Copy to {target}" : "複製到 {target}",
+ "Move to {target}" : "移動至 {target}",
+ "Cancelled move or copy operation" : "已取消移動或複製操作",
"Open folder {displayName}" : "開啟資料夾 {displayName}",
"Open in Files" : "在「檔案」應用程式中開啟",
"Open details" : "開啟細節",
@@ -257,6 +269,11 @@ OC.L10N.register(
"Templates" : "範本",
"Create new templates folder" : "建立新的範本資料夾",
"Unable to initialize the templates directory" : "無法初始化範本目錄",
+ "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} 個資料夾"],
+ "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} 個檔案"],
+ "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 個檔案與 {folderCount} 個資料夾"],
+ "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} 個檔案與 1 個資料夾"],
+ "{fileCount} files and {folderCount} folders" : "{fileCount} 個檔案與 {folderCount} 個資料夾",
"List of favorites files and folders." : "最愛檔案與資料夾的清單。",
"No favorites yet" : "尚無最愛",
"Files and folders you mark as favorite will show up here" : "您標記為最愛的檔案與資料夾將會顯示在這裡",
diff --git a/apps/files/l10n/zh_TW.json b/apps/files/l10n/zh_TW.json
index 396833a9644..f9bc4841d49 100644
--- a/apps/files/l10n/zh_TW.json
+++ b/apps/files/l10n/zh_TW.json
@@ -186,6 +186,8 @@
"Could not rename \"{oldName}\", it does not exist any more" : "無法命名檔案「{oldName}」,因為此檔案已經不存在",
"The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name." : "此名稱「{newName}」在資料夾「{dir}」中已被使用。請選擇其他名稱。",
"Could not rename \"{oldName}\"" : "無法重新命名「{oldName}」",
+ "Could not copy {file}. {message}" : "無法複製 {file}。{message}",
+ "Could not move {file}. {message}" : "無法移動 {file}。{message}",
"Total rows summary" : "總列摘要",
"\"{displayName}\" failed on some elements " : "「{displayName}」在某些元素上失敗",
"\"{displayName}\" batch action executed successfully" : "「{displayName}」批次動作執行成功",
@@ -247,6 +249,16 @@
"Blank" : "空白",
"Unable to create new file from template" : "無法從範本建立新檔案",
"Delete permanently" : "永久刪除",
+ "Destination is not a folder" : "目的地不是資料夾",
+ "This file/folder is already in that directory" : "此檔案/資料夾已在該目錄中",
+ "You cannot move a file/folder onto itself or into a subfolder of itself" : "您無法將檔案/資料夾移動到其自身或子資料夾中",
+ "A file or folder with that name already exists in this folder" : "此資料夾中已存在同名的檔案或資料夾",
+ "The files is locked" : "檔案已鎖定",
+ "The file does not exist anymore" : "檔案已不存在",
+ "Chose destination" : "選擇目的地",
+ "Copy to {target}" : "複製到 {target}",
+ "Move to {target}" : "移動至 {target}",
+ "Cancelled move or copy operation" : "已取消移動或複製操作",
"Open folder {displayName}" : "開啟資料夾 {displayName}",
"Open in Files" : "在「檔案」應用程式中開啟",
"Open details" : "開啟細節",
@@ -255,6 +267,11 @@
"Templates" : "範本",
"Create new templates folder" : "建立新的範本資料夾",
"Unable to initialize the templates directory" : "無法初始化範本目錄",
+ "_{folderCount} folder_::_{folderCount} folders_" : ["{folderCount} 個資料夾"],
+ "_{fileCount} file_::_{fileCount} files_" : ["{fileCount} 個檔案"],
+ "_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 個檔案與 {folderCount} 個資料夾"],
+ "_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} 個檔案與 1 個資料夾"],
+ "{fileCount} files and {folderCount} folders" : "{fileCount} 個檔案與 {folderCount} 個資料夾",
"List of favorites files and folders." : "最愛檔案與資料夾的清單。",
"No favorites yet" : "尚無最愛",
"Files and folders you mark as favorite will show up here" : "您標記為最愛的檔案與資料夾將會顯示在這裡",
diff --git a/apps/files_sharing/l10n/es.js b/apps/files_sharing/l10n/es.js
index f205f6d8b7d..cab2bdabff4 100644
--- a/apps/files_sharing/l10n/es.js
+++ b/apps/files_sharing/l10n/es.js
@@ -225,6 +225,7 @@ OC.L10N.register(
"_Reject share_::_Reject shares_" : ["Rechazar recurso compartido","Rechazar recursos compartidos","Rechazar recursos compartidos"],
"_Restore share_::_Restore shares_" : ["Restaurar recurso compartido","Restaurar recursos compartidos","Restaurar recursos compartidos"],
"Shared" : "Compartido",
+ "Shared by {ownerDisplayName}" : "Compartido por {ownerDisplayName}",
"Link to a file" : "Enlace al archivo",
"Error creating the share: {errorMessage}" : "Error al crear el recurso compartido: {errorMessage}",
"Error creating the share" : "Error quitando el recurso compartido",
diff --git a/apps/files_sharing/l10n/es.json b/apps/files_sharing/l10n/es.json
index 3fe60882c4f..6062d6cb69a 100644
--- a/apps/files_sharing/l10n/es.json
+++ b/apps/files_sharing/l10n/es.json
@@ -223,6 +223,7 @@
"_Reject share_::_Reject shares_" : ["Rechazar recurso compartido","Rechazar recursos compartidos","Rechazar recursos compartidos"],
"_Restore share_::_Restore shares_" : ["Restaurar recurso compartido","Restaurar recursos compartidos","Restaurar recursos compartidos"],
"Shared" : "Compartido",
+ "Shared by {ownerDisplayName}" : "Compartido por {ownerDisplayName}",
"Link to a file" : "Enlace al archivo",
"Error creating the share: {errorMessage}" : "Error al crear el recurso compartido: {errorMessage}",
"Error creating the share" : "Error quitando el recurso compartido",
diff --git a/apps/files_sharing/l10n/it.js b/apps/files_sharing/l10n/it.js
index 6db2b3a4d0b..e9d93f7ecb4 100644
--- a/apps/files_sharing/l10n/it.js
+++ b/apps/files_sharing/l10n/it.js
@@ -225,6 +225,7 @@ OC.L10N.register(
"_Reject share_::_Reject shares_" : ["Rifiuta condivisione","Rifiuta condivisioni","Rifiuta condivisioni"],
"_Restore share_::_Restore shares_" : ["Ripristina condivisione","Ripristina condivisioni","Ripristina condivisioni"],
"Shared" : "Condiviso",
+ "Shared by {ownerDisplayName}" : "Condiviso da {ownerDisplayName}",
"Link to a file" : "Collega a un file",
"Error creating the share: {errorMessage}" : "Errore durante la creazione della condivisione: {errorMessage}",
"Error creating the share" : "Errore durante la creazione della condivisione",
diff --git a/apps/files_sharing/l10n/it.json b/apps/files_sharing/l10n/it.json
index 3f470f0bda6..d2ddc1f4874 100644
--- a/apps/files_sharing/l10n/it.json
+++ b/apps/files_sharing/l10n/it.json
@@ -223,6 +223,7 @@
"_Reject share_::_Reject shares_" : ["Rifiuta condivisione","Rifiuta condivisioni","Rifiuta condivisioni"],
"_Restore share_::_Restore shares_" : ["Ripristina condivisione","Ripristina condivisioni","Ripristina condivisioni"],
"Shared" : "Condiviso",
+ "Shared by {ownerDisplayName}" : "Condiviso da {ownerDisplayName}",
"Link to a file" : "Collega a un file",
"Error creating the share: {errorMessage}" : "Errore durante la creazione della condivisione: {errorMessage}",
"Error creating the share" : "Errore durante la creazione della condivisione",
diff --git a/apps/files_sharing/l10n/ja.js b/apps/files_sharing/l10n/ja.js
index e5e22419281..1267e56eef4 100644
--- a/apps/files_sharing/l10n/ja.js
+++ b/apps/files_sharing/l10n/ja.js
@@ -93,6 +93,7 @@ OC.L10N.register(
"You cannot share to a Circle if the app is not enabled" : "アプリが無効の場合は、サークルには共有できません",
"Please specify a valid circle" : "正しいサークルを指定してください",
"Sharing %s failed because the back end does not support room shares" : "バックエンドがルーム共有をサポートしていないため、%s を共有できませんでした",
+ "Sharing %s failed because the back end does not support ScienceMesh shares" : "バックエンドが ScienceMesh 共有をサポートしていないため %s の共有に失敗しました。",
"Unknown share type" : "不明な共有タイプ",
"Not a directory" : "ディレクトリではありません",
"Could not lock node" : "ノードをロックできませんでした",
@@ -132,6 +133,7 @@ OC.L10N.register(
"Upload" : "アップロード",
"Edit" : "編集",
"Bundled permissions" : "バンドルされているパーミッション",
+ "Open Sharing Details" : "共有の詳細を開く",
"group" : "グループ",
"conversation" : "会話",
"remote" : "リモート",
@@ -157,6 +159,7 @@ OC.L10N.register(
"Enter a date" : "日付を入力してください",
"Create share" : "共有を作成",
"Cancel" : "キャンセル",
+ "Customize link" : "共有のカスタマイズ",
"Add another link" : "別のリンクを追加",
"Create a new share link" : "新しい共有リンクを作成する",
"{shareWith} by {initiator}" : "{initiator} により {shareWith}",
@@ -187,7 +190,9 @@ OC.L10N.register(
"Circle" : "サークル",
"Talk conversation" : "会話",
"Deck board" : "Deckボード",
+ "ScienceMesh" : "ScienceMesh",
"on {server}" : "{server} に",
+ "Upload only" : "アップロードのみ",
"Advanced settings" : "詳細設定",
"Share label" : "共有ラベル",
"Set password" : "パスワード設定",
@@ -202,6 +207,10 @@ OC.L10N.register(
"Create" : "作成",
"Update" : "更新",
"Share" : "共有",
+ "Delete share" : "共有を解除",
+ "Share with " : "共有先",
+ "Save share" : "共有を保存",
+ "Update share" : "共有設定の更新",
"Others with access" : "アクセス権を持つ他のユーザー",
"No other users with access found" : "アクセス権を持つ他のユーザーは見つかりませんでした",
"Toggle list of others with access to this directory" : "このフォルダーへのアクセス権を持つ他のユーザーリストを切り替えます",
@@ -211,7 +220,12 @@ OC.L10N.register(
"Expires {relativetime}" : "有効期限 {relativetime}",
"this share just expired." : "この共有は期限切れになりました。",
"Shared with you by {owner}" : "{owner} と共有中",
+ "_Accept share_::_Accept shares_" : ["共有を受け入れる"],
+ "Open in Files" : "ファイルアプリで開く",
+ "_Reject share_::_Reject shares_" : ["共有の受け入れを拒否する"],
+ "_Restore share_::_Restore shares_" : ["共有を復元する"],
"Shared" : "共有中",
+ "Shared by {ownerDisplayName}" : "{ownerDisplayName} が共有済み",
"Link to a file" : "ファイルへリンク",
"Error creating the share: {errorMessage}" : "共有の作成中にエラーが発生しました: {errorMessage}",
"Error creating the share" : "共有の作成中にエラーが発生しました",
@@ -229,17 +243,29 @@ OC.L10N.register(
"Shared with you and the conversation {conversation} by {owner}" : "{owner}のスレッド{conversation}であなたと共有しました",
"Shared with you in a conversation by {owner}" : "{owner}のスレッドであなたと共有しました",
"Shares" : "共有",
+ "Overview of shared files." : "共有済みファイルの概要",
"No shares" : "共有なし",
+ "Files and folders you shared or have been shared with you will show up here" : "共有済みまたは、共有されたファイルやフォルダはここに表示されます",
"Shared with you" : "他ユーザーがあなたと共有中",
+ "List of files that are shared with you." : "あなたと共有しているファイルの一覧。",
"Nothing shared with you yet" : "あなたと共有しているファイルはありません。",
+ "Files and folders others shared with you will show up here" : "他の人から共有されたファイルやフォルダは、ここに表示されます。",
"Shared with others" : "他ユーザーと共有中",
+ "List of files that you shared with others." : "他ユーザと共有したファイルの一覧。",
"Nothing shared yet" : "まだ何も共有されていません",
+ "Files and folders you shared will show up here" : "共有したファイルやフォルダは、ここに表示されます。",
"Shared by link" : "URLリンクで共有中",
+ "List of files that are shared by link." : "URL共有済みファイルの一覧。",
"No shared links" : "共有リンクはありません",
- "Deleted shares" : "共有を解除しました",
- "No deleted shares" : "削除された共有はありません",
+ "Files and folders you shared by link will show up here" : "リンクで共有したファイルやフォルダは、ここに表示されます。",
+ "Deleted shares" : "削除した共有",
+ "List of shares you left." : "離脱した共有の一覧",
+ "No deleted shares" : "削除(離脱)した共有はありません",
+ "Shares you have left will show up here" : "登録を解除(離脱)した共有がここに表示されます",
"Pending shares" : "保留中の共有",
+ "List of unapproved shares." : "未承認の共有の一覧",
"No pending shares" : "保留中の共有はありません",
+ "Shares you have received but not approved will show up here" : "あなたが受け取ったが承認されていない共有は、ここに表示されます",
"No entries found in this folder" : "このフォルダーにはエントリーがありません",
"Name" : "名前",
"Share time" : "共有した時刻",
@@ -260,7 +286,7 @@ OC.L10N.register(
"Files and folders others share with you will show up here" : "他の人から共有されたファイルやフォルダーは、ここに表示されます。",
"Files and folders you share will show up here" : "共有したファイルやフォルダーは、ここに表示されます。",
"Files and folders you share by link will show up here" : "リンクで共有したファイルやフォルダーは、ここに表示されます。",
- "Shares you deleted will show up here" : "削除した共有がここに表示されます",
+ "Shares you deleted will show up here" : "登録を解除(離脱)した共有がここに表示されます",
"Shares you have received but not confirmed will show up here" : "受け取り確認をしていない共有がここに表示されます",
"Shares will show up here" : "共有がここに表示されます",
"Restore" : "復元",
@@ -268,6 +294,7 @@ OC.L10N.register(
"Something happened. Unable to accept the share." : "何かしらの問題があり、共有を受け入れることができません。",
"Something happened. Unable to reject the share." : "何かしらの問題があり、共有を拒否できません。",
"No expiration date set" : "有効期限が未設定",
+ "Sharing %s failed because the back end does not support sciencemesh shares" : "バックエンドが sciencemesh 共有をサポートしていないため %s 共有に失敗しました。",
"One or more of your shares will expire tomorrow" : "1つ以上の共有が明日期限切れになります",
"Allow creating" : "作成許可",
"Allow deleting" : "削除許可",
@@ -276,6 +303,7 @@ OC.L10N.register(
"Allow download" : "ダウンロードを許可",
"Password protect" : "パスワード保護",
"Enter a note for the share recipient" : "共有受信者へのメモを入力してください",
+ "Science Mesh" : "Science Mesh",
"Error generating password from password_policy" : "password_policy からのパスワード生成エラー"
},
"nplurals=1; plural=0;");
diff --git a/apps/files_sharing/l10n/ja.json b/apps/files_sharing/l10n/ja.json
index 3ce721858ae..24a37ab644e 100644
--- a/apps/files_sharing/l10n/ja.json
+++ b/apps/files_sharing/l10n/ja.json
@@ -91,6 +91,7 @@
"You cannot share to a Circle if the app is not enabled" : "アプリが無効の場合は、サークルには共有できません",
"Please specify a valid circle" : "正しいサークルを指定してください",
"Sharing %s failed because the back end does not support room shares" : "バックエンドがルーム共有をサポートしていないため、%s を共有できませんでした",
+ "Sharing %s failed because the back end does not support ScienceMesh shares" : "バックエンドが ScienceMesh 共有をサポートしていないため %s の共有に失敗しました。",
"Unknown share type" : "不明な共有タイプ",
"Not a directory" : "ディレクトリではありません",
"Could not lock node" : "ノードをロックできませんでした",
@@ -130,6 +131,7 @@
"Upload" : "アップロード",
"Edit" : "編集",
"Bundled permissions" : "バンドルされているパーミッション",
+ "Open Sharing Details" : "共有の詳細を開く",
"group" : "グループ",
"conversation" : "会話",
"remote" : "リモート",
@@ -155,6 +157,7 @@
"Enter a date" : "日付を入力してください",
"Create share" : "共有を作成",
"Cancel" : "キャンセル",
+ "Customize link" : "共有のカスタマイズ",
"Add another link" : "別のリンクを追加",
"Create a new share link" : "新しい共有リンクを作成する",
"{shareWith} by {initiator}" : "{initiator} により {shareWith}",
@@ -185,7 +188,9 @@
"Circle" : "サークル",
"Talk conversation" : "会話",
"Deck board" : "Deckボード",
+ "ScienceMesh" : "ScienceMesh",
"on {server}" : "{server} に",
+ "Upload only" : "アップロードのみ",
"Advanced settings" : "詳細設定",
"Share label" : "共有ラベル",
"Set password" : "パスワード設定",
@@ -200,6 +205,10 @@
"Create" : "作成",
"Update" : "更新",
"Share" : "共有",
+ "Delete share" : "共有を解除",
+ "Share with " : "共有先",
+ "Save share" : "共有を保存",
+ "Update share" : "共有設定の更新",
"Others with access" : "アクセス権を持つ他のユーザー",
"No other users with access found" : "アクセス権を持つ他のユーザーは見つかりませんでした",
"Toggle list of others with access to this directory" : "このフォルダーへのアクセス権を持つ他のユーザーリストを切り替えます",
@@ -209,7 +218,12 @@
"Expires {relativetime}" : "有効期限 {relativetime}",
"this share just expired." : "この共有は期限切れになりました。",
"Shared with you by {owner}" : "{owner} と共有中",
+ "_Accept share_::_Accept shares_" : ["共有を受け入れる"],
+ "Open in Files" : "ファイルアプリで開く",
+ "_Reject share_::_Reject shares_" : ["共有の受け入れを拒否する"],
+ "_Restore share_::_Restore shares_" : ["共有を復元する"],
"Shared" : "共有中",
+ "Shared by {ownerDisplayName}" : "{ownerDisplayName} が共有済み",
"Link to a file" : "ファイルへリンク",
"Error creating the share: {errorMessage}" : "共有の作成中にエラーが発生しました: {errorMessage}",
"Error creating the share" : "共有の作成中にエラーが発生しました",
@@ -227,17 +241,29 @@
"Shared with you and the conversation {conversation} by {owner}" : "{owner}のスレッド{conversation}であなたと共有しました",
"Shared with you in a conversation by {owner}" : "{owner}のスレッドであなたと共有しました",
"Shares" : "共有",
+ "Overview of shared files." : "共有済みファイルの概要",
"No shares" : "共有なし",
+ "Files and folders you shared or have been shared with you will show up here" : "共有済みまたは、共有されたファイルやフォルダはここに表示されます",
"Shared with you" : "他ユーザーがあなたと共有中",
+ "List of files that are shared with you." : "あなたと共有しているファイルの一覧。",
"Nothing shared with you yet" : "あなたと共有しているファイルはありません。",
+ "Files and folders others shared with you will show up here" : "他の人から共有されたファイルやフォルダは、ここに表示されます。",
"Shared with others" : "他ユーザーと共有中",
+ "List of files that you shared with others." : "他ユーザと共有したファイルの一覧。",
"Nothing shared yet" : "まだ何も共有されていません",
+ "Files and folders you shared will show up here" : "共有したファイルやフォルダは、ここに表示されます。",
"Shared by link" : "URLリンクで共有中",
+ "List of files that are shared by link." : "URL共有済みファイルの一覧。",
"No shared links" : "共有リンクはありません",
- "Deleted shares" : "共有を解除しました",
- "No deleted shares" : "削除された共有はありません",
+ "Files and folders you shared by link will show up here" : "リンクで共有したファイルやフォルダは、ここに表示されます。",
+ "Deleted shares" : "削除した共有",
+ "List of shares you left." : "離脱した共有の一覧",
+ "No deleted shares" : "削除(離脱)した共有はありません",
+ "Shares you have left will show up here" : "登録を解除(離脱)した共有がここに表示されます",
"Pending shares" : "保留中の共有",
+ "List of unapproved shares." : "未承認の共有の一覧",
"No pending shares" : "保留中の共有はありません",
+ "Shares you have received but not approved will show up here" : "あなたが受け取ったが承認されていない共有は、ここに表示されます",
"No entries found in this folder" : "このフォルダーにはエントリーがありません",
"Name" : "名前",
"Share time" : "共有した時刻",
@@ -258,7 +284,7 @@
"Files and folders others share with you will show up here" : "他の人から共有されたファイルやフォルダーは、ここに表示されます。",
"Files and folders you share will show up here" : "共有したファイルやフォルダーは、ここに表示されます。",
"Files and folders you share by link will show up here" : "リンクで共有したファイルやフォルダーは、ここに表示されます。",
- "Shares you deleted will show up here" : "削除した共有がここに表示されます",
+ "Shares you deleted will show up here" : "登録を解除(離脱)した共有がここに表示されます",
"Shares you have received but not confirmed will show up here" : "受け取り確認をしていない共有がここに表示されます",
"Shares will show up here" : "共有がここに表示されます",
"Restore" : "復元",
@@ -266,6 +292,7 @@
"Something happened. Unable to accept the share." : "何かしらの問題があり、共有を受け入れることができません。",
"Something happened. Unable to reject the share." : "何かしらの問題があり、共有を拒否できません。",
"No expiration date set" : "有効期限が未設定",
+ "Sharing %s failed because the back end does not support sciencemesh shares" : "バックエンドが sciencemesh 共有をサポートしていないため %s 共有に失敗しました。",
"One or more of your shares will expire tomorrow" : "1つ以上の共有が明日期限切れになります",
"Allow creating" : "作成許可",
"Allow deleting" : "削除許可",
@@ -274,6 +301,7 @@
"Allow download" : "ダウンロードを許可",
"Password protect" : "パスワード保護",
"Enter a note for the share recipient" : "共有受信者へのメモを入力してください",
+ "Science Mesh" : "Science Mesh",
"Error generating password from password_policy" : "password_policy からのパスワード生成エラー"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/files_trashbin/src/actions/restoreAction.ts b/apps/files_trashbin/src/actions/restoreAction.ts
index a29aef3ba83..d3e3f66a1df 100644
--- a/apps/files_trashbin/src/actions/restoreAction.ts
+++ b/apps/files_trashbin/src/actions/restoreAction.ts
@@ -29,6 +29,7 @@ import History from '@mdi/svg/svg/history.svg?raw'
import { registerFileAction, FileAction } from '../../../files/src/services/FileAction.ts'
import logger from '../../../files/src/logger.js'
+import { encodePath } from '@nextcloud/paths'
registerFileAction(new FileAction({
id: 'restore',
@@ -51,7 +52,7 @@ registerFileAction(new FileAction({
async exec(node: Node) {
try {
- const destination = generateRemoteUrl(encodeURI(`dav/trashbin/${getCurrentUser()?.uid}/restore/${node.basename}`))
+ const destination = generateRemoteUrl(encodePath(`dav/trashbin/${getCurrentUser()?.uid}/restore/${node.basename}`))
await axios({
method: 'MOVE',
url: node.source,
diff --git a/apps/files_trashbin/src/services/trashbin.ts b/apps/files_trashbin/src/services/trashbin.ts
index 9982750ba5c..6027765dc4d 100644
--- a/apps/files_trashbin/src/services/trashbin.ts
+++ b/apps/files_trashbin/src/services/trashbin.ts
@@ -28,6 +28,7 @@ import type { FileStat, ResponseDataDetailed } from 'webdav'
import type { ContentsWithRoot } from '../../../files/src/services/Navigation.ts'
import client, { rootPath } from './client'
+import { encodePath } from '@nextcloud/paths'
const data = `<?xml version="1.0"?>
<d:propfind xmlns:d="DAV:"
@@ -57,7 +58,7 @@ const resultToNode = function(node: FileStat): File | Folder {
const nodeData = {
id: node.props?.fileid as number || 0,
- source: generateRemoteUrl('dav' + rootPath + node.filename),
+ source: generateRemoteUrl(encodePath('dav' + rootPath + node.filename)),
mtime: new Date(node.lastmod),
mime: node.mime as string,
size: node.props?.size as number || 0,
diff --git a/apps/files_versions/l10n/es.js b/apps/files_versions/l10n/es.js
index 71dfaddf36f..087891faca0 100644
--- a/apps/files_versions/l10n/es.js
+++ b/apps/files_versions/l10n/es.js
@@ -15,6 +15,7 @@ OC.L10N.register(
"Remove version name" : "Nombre de versión remota",
"Save version name" : "Guardar nombre de versión",
"Current version" : "Versión actual",
+ "Initial version" : "Versión inicial",
"Initial version restored" : "Versión inicial restaurada",
"Version restored" : "Versión restaurada",
"Could not restore version" : "No se ha podido restaurar la versión",
diff --git a/apps/files_versions/l10n/es.json b/apps/files_versions/l10n/es.json
index f8aead7dc60..247d67ba9fa 100644
--- a/apps/files_versions/l10n/es.json
+++ b/apps/files_versions/l10n/es.json
@@ -13,6 +13,7 @@
"Remove version name" : "Nombre de versión remota",
"Save version name" : "Guardar nombre de versión",
"Current version" : "Versión actual",
+ "Initial version" : "Versión inicial",
"Initial version restored" : "Versión inicial restaurada",
"Version restored" : "Versión restaurada",
"Could not restore version" : "No se ha podido restaurar la versión",
diff --git a/apps/files_versions/l10n/it.js b/apps/files_versions/l10n/it.js
index 6da0967bf93..5a450f9183b 100644
--- a/apps/files_versions/l10n/it.js
+++ b/apps/files_versions/l10n/it.js
@@ -15,6 +15,7 @@ OC.L10N.register(
"Remove version name" : "Rimuovi nome versione",
"Save version name" : "Salva nome versione",
"Current version" : "Versione corrente",
+ "Initial version" : "Versione iniziale",
"Initial version restored" : "Versione iniziale ripristinata",
"Version restored" : "Versione ripristinata",
"Could not restore version" : "Impossibile ripristinare la versione",
diff --git a/apps/files_versions/l10n/it.json b/apps/files_versions/l10n/it.json
index 105bd53cebe..26357123d39 100644
--- a/apps/files_versions/l10n/it.json
+++ b/apps/files_versions/l10n/it.json
@@ -13,6 +13,7 @@
"Remove version name" : "Rimuovi nome versione",
"Save version name" : "Salva nome versione",
"Current version" : "Versione corrente",
+ "Initial version" : "Versione iniziale",
"Initial version restored" : "Versione iniziale ripristinata",
"Version restored" : "Versione ripristinata",
"Could not restore version" : "Impossibile ripristinare la versione",
diff --git a/apps/files_versions/l10n/mk.js b/apps/files_versions/l10n/mk.js
index db7cc09186b..059eb3b34da 100644
--- a/apps/files_versions/l10n/mk.js
+++ b/apps/files_versions/l10n/mk.js
@@ -15,6 +15,7 @@ OC.L10N.register(
"Remove version name" : "Избриши име на верзијата",
"Save version name" : "Зачувај име на верзија",
"Current version" : "Моментална верзија",
+ "Initial version" : "Првична верзија",
"Initial version restored" : "Почетната верзијата е вратена",
"Version restored" : "Верзијата е вратена",
"Could not restore version" : "Неможе да се врати верзијата",
diff --git a/apps/files_versions/l10n/mk.json b/apps/files_versions/l10n/mk.json
index 0ce5d85c17c..e3cdd07a41a 100644
--- a/apps/files_versions/l10n/mk.json
+++ b/apps/files_versions/l10n/mk.json
@@ -13,6 +13,7 @@
"Remove version name" : "Избриши име на верзијата",
"Save version name" : "Зачувај име на верзија",
"Current version" : "Моментална верзија",
+ "Initial version" : "Првична верзија",
"Initial version restored" : "Почетната верзијата е вратена",
"Version restored" : "Верзијата е вратена",
"Could not restore version" : "Неможе да се врати верзијата",
diff --git a/apps/files_versions/src/components/Version.vue b/apps/files_versions/src/components/Version.vue
index 79c2db501ba..6273b59d1f5 100644
--- a/apps/files_versions/src/components/Version.vue
+++ b/apps/files_versions/src/components/Version.vue
@@ -94,15 +94,15 @@
<form class="version-label-modal"
@submit.prevent="setVersionLabel(formVersionLabelValue)">
<label>
- <div class="version-label-modal__title">{{ t('photos', 'Version name') }}</div>
+ <div class="version-label-modal__title">{{ t('files_versions', 'Version name') }}</div>
<NcTextField ref="labelInput"
:value.sync="formVersionLabelValue"
- :placeholder="t('photos', 'Version name')"
+ :placeholder="t('files_versions', 'Version name')"
:label-outside="true" />
</label>
<div class="version-label-modal__info">
- {{ t('photos', 'Named versions are persisted, and excluded from automatic cleanups when your storage quota is full.') }}
+ {{ t('files_versions', 'Named versions are persisted, and excluded from automatic cleanups when your storage quota is full.') }}
</div>
<div class="version-label-modal__actions">
diff --git a/apps/settings/l10n/fr.js b/apps/settings/l10n/fr.js
index 29aa2f93878..d92dfd9ac3f 100644
--- a/apps/settings/l10n/fr.js
+++ b/apps/settings/l10n/fr.js
@@ -177,7 +177,7 @@ OC.L10N.register(
"Limit app usage to groups" : "Limiter l'utilisation de l'application aux groupes",
"No results" : "Aucun résultat",
"Update to {version}" : "Mettre à jour vers {version}",
- "Remove" : "Supprimer",
+ "Remove" : "Retirer",
"Disable" : "Désactiver",
"This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Cette application n'a pas de version minimum Nextcloud exigée. Ce sera considéré comme une erreur à l'avenir.",
"This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Cette application n'a pas de version maximum Nextcloud exigée. Ce sera considéré comme une erreur à l'avenir.",
@@ -279,8 +279,8 @@ OC.L10N.register(
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run {command}" : "Vous devez migrer vos clés de chiffrement de l'ancienne version de chiffrement (ownCloud <= 8.0) vers la nouvelle. Veuillez activer l'application \\\"Default Encryption Module\\\" et exécuter {command}",
"Unable to update server side encryption config" : "Impossible de mettre à jour la configuration du chiffrement côté serveur",
"Rename group" : "Renommer le groupe",
- "Remove group" : "Supprimer le groupe",
- "You are about to remove the group {group}. The users will NOT be deleted." : "Vous êtes sur le point de supprimer le groupe {group}. Les utilisateurs ne seront PAS supprimés.",
+ "Remove group" : "Retirer le groupe",
+ "You are about to remove the group {group}. The users will NOT be deleted." : "Vous êtes sur le point de retirer le groupe {group}. Les utilisateurs ne seront PAS supprimés.",
"Please confirm the group removal " : "Veuillez confirmer la suppression du groupe",
"Current password" : "Mot de passe actuel",
"New password" : "Nouveau mot de passe",
diff --git a/apps/settings/l10n/fr.json b/apps/settings/l10n/fr.json
index 60a01f72182..3985a9a7c84 100644
--- a/apps/settings/l10n/fr.json
+++ b/apps/settings/l10n/fr.json
@@ -175,7 +175,7 @@
"Limit app usage to groups" : "Limiter l'utilisation de l'application aux groupes",
"No results" : "Aucun résultat",
"Update to {version}" : "Mettre à jour vers {version}",
- "Remove" : "Supprimer",
+ "Remove" : "Retirer",
"Disable" : "Désactiver",
"This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Cette application n'a pas de version minimum Nextcloud exigée. Ce sera considéré comme une erreur à l'avenir.",
"This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Cette application n'a pas de version maximum Nextcloud exigée. Ce sera considéré comme une erreur à l'avenir.",
@@ -277,8 +277,8 @@
"You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run {command}" : "Vous devez migrer vos clés de chiffrement de l'ancienne version de chiffrement (ownCloud <= 8.0) vers la nouvelle. Veuillez activer l'application \\\"Default Encryption Module\\\" et exécuter {command}",
"Unable to update server side encryption config" : "Impossible de mettre à jour la configuration du chiffrement côté serveur",
"Rename group" : "Renommer le groupe",
- "Remove group" : "Supprimer le groupe",
- "You are about to remove the group {group}. The users will NOT be deleted." : "Vous êtes sur le point de supprimer le groupe {group}. Les utilisateurs ne seront PAS supprimés.",
+ "Remove group" : "Retirer le groupe",
+ "You are about to remove the group {group}. The users will NOT be deleted." : "Vous êtes sur le point de retirer le groupe {group}. Les utilisateurs ne seront PAS supprimés.",
"Please confirm the group removal " : "Veuillez confirmer la suppression du groupe",
"Current password" : "Mot de passe actuel",
"New password" : "Nouveau mot de passe",
diff --git a/apps/systemtags/l10n/es.js b/apps/systemtags/l10n/es.js
index 309069a2a3f..84efe17041c 100644
--- a/apps/systemtags/l10n/es.js
+++ b/apps/systemtags/l10n/es.js
@@ -59,12 +59,16 @@ OC.L10N.register(
"Failed to delete tag" : "Fallo al borrar etiqueta",
"This file has the tag {tag}" : "Este archivo tiene la etiqueta {tag}",
"This file has the tags {firstTags} and {lastTag}" : "Este archivo tiene las etiquetas {firstTags} y {lastTag}",
+ "List of tags and their associated files and folders." : "Lista de etiquetas y sus carpetas y archivos asociados.",
"No tags found" : "No se encontraron etiquetas",
+ "Tags you have created will show up here." : "Las etiquetas que haya creado aparecerán aquí.",
"Failed to load last used tags" : "Fallo al cargar las etiquetas recientemente utilizadas",
"Missing \"Content-Location\" header" : "No existe la cabecera \"Content-Location\"",
"Collaborative tags are available for all users. Restricted tags are visible to users but cannot be assigned by them. Invisible tags are for internal use, since users cannot see or assign them." : "Las etiquetas colaborativas están disponibles para todos los usuarios. Las etiquetas restringidas son visibles para los usuarios, pero no pueden ser asignadas por ellos. Las etiquetas invisibles son para uso interno, pues los usuarios no pueden verlas ni asignarlas.",
"Create a new tag" : "Crear una etiqueta nueva",
+ "Tag name" : "Nombre de la etiqueta",
"Name" : "Nombre",
+ "Tag level" : "Nivel de la etiqueta",
"Public" : "Público",
"Restricted" : "Restringido",
"Invisible" : "Invisible",
diff --git a/apps/systemtags/l10n/es.json b/apps/systemtags/l10n/es.json
index f67a83f6f4e..6dba7e18221 100644
--- a/apps/systemtags/l10n/es.json
+++ b/apps/systemtags/l10n/es.json
@@ -57,12 +57,16 @@
"Failed to delete tag" : "Fallo al borrar etiqueta",
"This file has the tag {tag}" : "Este archivo tiene la etiqueta {tag}",
"This file has the tags {firstTags} and {lastTag}" : "Este archivo tiene las etiquetas {firstTags} y {lastTag}",
+ "List of tags and their associated files and folders." : "Lista de etiquetas y sus carpetas y archivos asociados.",
"No tags found" : "No se encontraron etiquetas",
+ "Tags you have created will show up here." : "Las etiquetas que haya creado aparecerán aquí.",
"Failed to load last used tags" : "Fallo al cargar las etiquetas recientemente utilizadas",
"Missing \"Content-Location\" header" : "No existe la cabecera \"Content-Location\"",
"Collaborative tags are available for all users. Restricted tags are visible to users but cannot be assigned by them. Invisible tags are for internal use, since users cannot see or assign them." : "Las etiquetas colaborativas están disponibles para todos los usuarios. Las etiquetas restringidas son visibles para los usuarios, pero no pueden ser asignadas por ellos. Las etiquetas invisibles son para uso interno, pues los usuarios no pueden verlas ni asignarlas.",
"Create a new tag" : "Crear una etiqueta nueva",
+ "Tag name" : "Nombre de la etiqueta",
"Name" : "Nombre",
+ "Tag level" : "Nivel de la etiqueta",
"Public" : "Público",
"Restricted" : "Restringido",
"Invisible" : "Invisible",
diff --git a/apps/systemtags/l10n/it.js b/apps/systemtags/l10n/it.js
index ac1f4a923a8..c5a39ced1c4 100644
--- a/apps/systemtags/l10n/it.js
+++ b/apps/systemtags/l10n/it.js
@@ -59,12 +59,16 @@ OC.L10N.register(
"Failed to delete tag" : "Eliminazione etichetta fallita",
"This file has the tag {tag}" : "Questo file ha il tag {tag}",
"This file has the tags {firstTags} and {lastTag}" : "Il file ha i tag {firstTags} e {lastTag}",
+ "List of tags and their associated files and folders." : "Lista di etichette e dei loro file e cartelle associati.",
"No tags found" : "Nessuna etichetta trovata",
+ "Tags you have created will show up here." : "Le etichette che hai creato saranno mostrate qui.",
"Failed to load last used tags" : "Caricamento ultime etichette usate fallito",
"Missing \"Content-Location\" header" : "Intestazione \"Content-Location\" mancante",
"Collaborative tags are available for all users. Restricted tags are visible to users but cannot be assigned by them. Invisible tags are for internal use, since users cannot see or assign them." : "Le etichette collaborative sono disponibili per tutti gli utenti. Le etichette limitate sono visibili agli utenti, ma non possono essere assegnate da essi. Le etichette invisibili sono per uso interno, poiché gli utenti non possono vederle o assegnarle.",
"Create a new tag" : "Crea una nuova etichetta",
+ "Tag name" : "Nome etichetta",
"Name" : "Nome",
+ "Tag level" : "Livello etichetta",
"Public" : "Pubblico",
"Restricted" : "Limitato",
"Invisible" : "invisibile",
diff --git a/apps/systemtags/l10n/it.json b/apps/systemtags/l10n/it.json
index b03444e4f4b..11cc0c1d2e3 100644
--- a/apps/systemtags/l10n/it.json
+++ b/apps/systemtags/l10n/it.json
@@ -57,12 +57,16 @@
"Failed to delete tag" : "Eliminazione etichetta fallita",
"This file has the tag {tag}" : "Questo file ha il tag {tag}",
"This file has the tags {firstTags} and {lastTag}" : "Il file ha i tag {firstTags} e {lastTag}",
+ "List of tags and their associated files and folders." : "Lista di etichette e dei loro file e cartelle associati.",
"No tags found" : "Nessuna etichetta trovata",
+ "Tags you have created will show up here." : "Le etichette che hai creato saranno mostrate qui.",
"Failed to load last used tags" : "Caricamento ultime etichette usate fallito",
"Missing \"Content-Location\" header" : "Intestazione \"Content-Location\" mancante",
"Collaborative tags are available for all users. Restricted tags are visible to users but cannot be assigned by them. Invisible tags are for internal use, since users cannot see or assign them." : "Le etichette collaborative sono disponibili per tutti gli utenti. Le etichette limitate sono visibili agli utenti, ma non possono essere assegnate da essi. Le etichette invisibili sono per uso interno, poiché gli utenti non possono vederle o assegnarle.",
"Create a new tag" : "Crea una nuova etichetta",
+ "Tag name" : "Nome etichetta",
"Name" : "Nome",
+ "Tag level" : "Livello etichetta",
"Public" : "Pubblico",
"Restricted" : "Limitato",
"Invisible" : "invisibile",
diff --git a/apps/theming/l10n/mk.js b/apps/theming/l10n/mk.js
index f65424344d3..37d8b09fd5c 100644
--- a/apps/theming/l10n/mk.js
+++ b/apps/theming/l10n/mk.js
@@ -79,6 +79,7 @@ OC.L10N.register(
"No background" : "Без позадина",
"Select a background from your files" : "Избери позадина од датотеките",
"Select background" : "Избери позадина",
+ "No background has been selected" : "Нема избрано позадина",
"Theme selection is enforced" : "Наметнат е избор на тема",
"Select a custom color" : "Избери боја",
"Reset to default" : "Ресетирај на стандардно",
diff --git a/apps/theming/l10n/mk.json b/apps/theming/l10n/mk.json
index 31cb613af44..2663b2a7d45 100644
--- a/apps/theming/l10n/mk.json
+++ b/apps/theming/l10n/mk.json
@@ -77,6 +77,7 @@
"No background" : "Без позадина",
"Select a background from your files" : "Избери позадина од датотеките",
"Select background" : "Избери позадина",
+ "No background has been selected" : "Нема избрано позадина",
"Theme selection is enforced" : "Наметнат е избор на тема",
"Select a custom color" : "Избери боја",
"Reset to default" : "Ресетирај на стандардно",
diff --git a/core/l10n/ca.js b/core/l10n/ca.js
index a7e759fbda2..539d2e0e5d8 100644
--- a/core/l10n/ca.js
+++ b/core/l10n/ca.js
@@ -235,7 +235,9 @@ OC.L10N.register(
"No" : "No",
"Yes" : "Sí",
"Choose" : "Tria",
+ "Copy to {target}" : "Copia a {target}",
"Copy" : "Copia",
+ "Move to {target}" : "Mou a {target}",
"Move" : "Mou",
"OK" : "D'acord",
"Error loading message template: {error}" : "S'ha produït un error en carregar la plantilla del missatge: {error}",
diff --git a/core/l10n/ca.json b/core/l10n/ca.json
index 3f24b1fddb1..51fb4a02981 100644
--- a/core/l10n/ca.json
+++ b/core/l10n/ca.json
@@ -233,7 +233,9 @@
"No" : "No",
"Yes" : "Sí",
"Choose" : "Tria",
+ "Copy to {target}" : "Copia a {target}",
"Copy" : "Copia",
+ "Move to {target}" : "Mou a {target}",
"Move" : "Mou",
"OK" : "D'acord",
"Error loading message template: {error}" : "S'ha produït un error en carregar la plantilla del missatge: {error}",
diff --git a/core/l10n/fi.js b/core/l10n/fi.js
index b37fef3f49f..3235f938a57 100644
--- a/core/l10n/fi.js
+++ b/core/l10n/fi.js
@@ -193,7 +193,9 @@ OC.L10N.register(
"No" : "Ei",
"Yes" : "Kyllä",
"Choose" : "Valitse",
+ "Copy to {target}" : "Kopioi kohteeseen {target}",
"Copy" : "Kopioi",
+ "Move to {target}" : "Siirrä kohteeseen {target}",
"Move" : "Siirrä",
"OK" : "OK",
"Error loading message template: {error}" : "Virhe ladatessa viestipohjaa: {error}",
diff --git a/core/l10n/fi.json b/core/l10n/fi.json
index 8dbe8e122f0..ea8a5d439f6 100644
--- a/core/l10n/fi.json
+++ b/core/l10n/fi.json
@@ -191,7 +191,9 @@
"No" : "Ei",
"Yes" : "Kyllä",
"Choose" : "Valitse",
+ "Copy to {target}" : "Kopioi kohteeseen {target}",
"Copy" : "Kopioi",
+ "Move to {target}" : "Siirrä kohteeseen {target}",
"Move" : "Siirrä",
"OK" : "OK",
"Error loading message template: {error}" : "Virhe ladatessa viestipohjaa: {error}",
diff --git a/dist/files_trashbin-main.js b/dist/files_trashbin-main.js
index 075d57a1eb7..dc63d0905f2 100644
--- a/dist/files_trashbin-main.js
+++ b/dist/files_trashbin-main.js
@@ -1,3 +1,3 @@
/*! For license information please see files_trashbin-main.js.LICENSE.txt */
-(()=>{var e,t={1345:(e,t,n)=>{"use strict";var i,s=n(31352),r=n(61137),o=n(80351),a=n.n(o),l=n(77958),d=n(91770),c=n(79753),u=n(14596);const j="/trashbin/".concat(null===(i=(0,l.ts)())||void 0===i?void 0:i.uid,"/trash"),f=(0,c.generateRemoteUrl)("dav"+j),h=(0,u.eI)(f,{headers:{requesttoken:(0,l.IH)()}}),m='<?xml version="1.0"?>\n<d:propfind xmlns:d="DAV:"\n\txmlns:oc="http://owncloud.org/ns"\n\txmlns:nc="http://nextcloud.org/ns">\n\t<d:prop>\n\t\t<nc:trashbin-filename />\n\t\t<nc:trashbin-deletion-time />\n\t\t<nc:trashbin-original-location />\n\t\t<nc:trashbin-title />\n\t\t<d:getlastmodified />\n\t\t<d:getetag />\n\t\t<d:getcontenttype />\n\t\t<d:resourcetype />\n\t\t<oc:fileid />\n\t\t<oc:permissions />\n\t\t<oc:size />\n\t\t<d:getcontentlength />\n\t</d:prop>\n</d:propfind>',v=function(e){var t,n,i,s,r;const o=(0,d.wE)(null===(t=e.props)||void 0===t?void 0:t.permissions),a=null===(n=(0,l.ts)())||void 0===n?void 0:n.uid,u=(0,c.generateUrl)("/apps/files_trashbin/preview?fileId={fileid}&x=32&y=32",e.props),f={id:(null===(i=e.props)||void 0===i?void 0:i.fileid)||0,source:(0,c.generateRemoteUrl)("dav"+j+e.filename),mtime:new Date(e.lastmod),mime:e.mime,size:(null===(s=e.props)||void 0===s?void 0:s.size)||0,permissions:o,owner:a,root:j,attributes:{...e,...e.props,displayName:null===(r=e.props)||void 0===r?void 0:r["trashbin-filename"],previewUrl:u}};return"file"===e.type?new d.$B(f):new d.gt(f)};var p=n(69183),b=n(4820),g=n(64009);const y=(0,n(17499).IY)().setApp("files").detectUser().build();var w;w=new class{constructor(e){var t,n,i;t=this,i=void 0,(n=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(n="_action"))in t?Object.defineProperty(t,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[n]=i,this.validateAction(e),this._action=e}get id(){return this._action.id}get displayName(){return this._action.displayName}get iconSvgInline(){return this._action.iconSvgInline}get enabled(){return this._action.enabled}get exec(){return this._action.exec}get execBatch(){return this._action.execBatch}get order(){return this._action.order}get default(){return this._action.default}get inline(){return this._action.inline}get renderInline(){return this._action.renderInline}validateAction(e){if(!e.id||"string"!=typeof e.id)throw new Error("Invalid id");if(!e.displayName||"function"!=typeof e.displayName)throw new Error("Invalid displayName function");if(!e.iconSvgInline||"function"!=typeof e.iconSvgInline)throw new Error("Invalid iconSvgInline function");if(!e.exec||"function"!=typeof e.exec)throw new Error("Invalid exec function");if("enabled"in e&&"function"!=typeof e.enabled)throw new Error("Invalid enabled function");if("execBatch"in e&&"function"!=typeof e.execBatch)throw new Error("Invalid execBatch function");if("order"in e&&"number"!=typeof e.order)throw new Error("Invalid order");if("default"in e&&"boolean"!=typeof e.default)throw new Error("Invalid default");if("inline"in e&&"function"!=typeof e.inline)throw new Error("Invalid inline function");if("renderInline"in e&&"function"!=typeof e.renderInline)throw new Error("Invalid renderInline function")}}({id:"restore",displayName:()=>(0,s.Iu)("files_trashbin","Restore"),iconSvgInline:()=>g,enabled:(e,t)=>"trashbin"===t.id&&e.length>0&&e.map((e=>e.permissions)).every((e=>0!=(e&d.y3.READ))),async exec(e){try{var t;const n=(0,c.generateRemoteUrl)(encodeURI("dav/trashbin/".concat(null===(t=(0,l.ts)())||void 0===t?void 0:t.uid,"/restore/").concat(e.basename)));return await(0,b.default)({method:"MOVE",url:e.source,headers:{destination:n}}),(0,p.j8)("files:node:deleted",e),!0}catch(e){return y.error(e),!1}},async execBatch(e,t){return Promise.all(e.map((e=>this.exec(e,t))))},order:1,inline:()=>!0}),void 0===window._nc_fileactions&&(window._nc_fileactions=[],y.debug("FileActions initialized")),window._nc_fileactions.find((e=>e.id===w.id))?y.error("FileAction ".concat(w.id," already registered"),{action:w}):window._nc_fileactions.push(w),window.OCP.Files.Navigation.register({id:"trashbin",name:(0,s.Iu)("files_trashbin","Deleted files"),caption:(0,s.Iu)("files_trashbin","List of files that have been deleted."),icon:r,order:50,sticky:!0,defaultSortKey:"deleted",columns:[{id:"deleted",title:(0,s.Iu)("files_trashbin","Deleted"),render(e){var t;const n=null===(t=e.attributes)||void 0===t?void 0:t["trashbin-deletion-time"],i=document.createElement("span");return n?(i.title=a().unix(n).format("LLL"),i.textContent=a().unix(n).fromNow(),i):(i.textContent=(0,s.Iu)("files_trashbin","A long time ago"),i)},sort(e,t){var n,i;const s=(null===(n=e.attributes)||void 0===n?void 0:n["trashbin-deletion-time"])||(null==e?void 0:e.mtime)||0;return((null===(i=t.attributes)||void 0===i?void 0:i["trashbin-deletion-time"])||(null==t?void 0:t.mtime)||0)-s}}],getContents:async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"/";const t=await h.stat(e,{details:!0,data:m}),n=await h.getDirectoryContents(e,{details:!0,data:m});return{folder:v(t.data),contents:n.data.map(v)}}})},46700:(e,t,n)=>{var i={"./af":42786,"./af.js":42786,"./ar":30867,"./ar-dz":14130,"./ar-dz.js":14130,"./ar-kw":96135,"./ar-kw.js":96135,"./ar-ly":56440,"./ar-ly.js":56440,"./ar-ma":47702,"./ar-ma.js":47702,"./ar-sa":16040,"./ar-sa.js":16040,"./ar-tn":37100,"./ar-tn.js":37100,"./ar.js":30867,"./az":31083,"./az.js":31083,"./be":9808,"./be.js":9808,"./bg":68338,"./bg.js":68338,"./bm":67438,"./bm.js":67438,"./bn":8905,"./bn-bd":76225,"./bn-bd.js":76225,"./bn.js":8905,"./bo":11560,"./bo.js":11560,"./br":1278,"./br.js":1278,"./bs":80622,"./bs.js":80622,"./ca":2468,"./ca.js":2468,"./cs":5822,"./cs.js":5822,"./cv":50877,"./cv.js":50877,"./cy":47373,"./cy.js":47373,"./da":24780,"./da.js":24780,"./de":59740,"./de-at":60217,"./de-at.js":60217,"./de-ch":60894,"./de-ch.js":60894,"./de.js":59740,"./dv":5300,"./dv.js":5300,"./el":50837,"./el.js":50837,"./en-au":78348,"./en-au.js":78348,"./en-ca":77925,"./en-ca.js":77925,"./en-gb":22243,"./en-gb.js":22243,"./en-ie":46436,"./en-ie.js":46436,"./en-il":47207,"./en-il.js":47207,"./en-in":44175,"./en-in.js":44175,"./en-nz":76319,"./en-nz.js":76319,"./en-sg":31662,"./en-sg.js":31662,"./eo":92915,"./eo.js":92915,"./es":55655,"./es-do":55251,"./es-do.js":55251,"./es-mx":96112,"./es-mx.js":96112,"./es-us":71146,"./es-us.js":71146,"./es.js":55655,"./et":5603,"./et.js":5603,"./eu":77763,"./eu.js":77763,"./fa":76959,"./fa.js":76959,"./fi":11897,"./fi.js":11897,"./fil":42549,"./fil.js":42549,"./fo":94694,"./fo.js":94694,"./fr":94470,"./fr-ca":63049,"./fr-ca.js":63049,"./fr-ch":52330,"./fr-ch.js":52330,"./fr.js":94470,"./fy":5044,"./fy.js":5044,"./ga":29295,"./ga.js":29295,"./gd":2101,"./gd.js":2101,"./gl":38794,"./gl.js":38794,"./gom-deva":27884,"./gom-deva.js":27884,"./gom-latn":23168,"./gom-latn.js":23168,"./gu":95349,"./gu.js":95349,"./he":24206,"./he.js":24206,"./hi":30094,"./hi.js":30094,"./hr":30316,"./hr.js":30316,"./hu":22138,"./hu.js":22138,"./hy-am":11423,"./hy-am.js":11423,"./id":29218,"./id.js":29218,"./is":90135,"./is.js":90135,"./it":90626,"./it-ch":10150,"./it-ch.js":10150,"./it.js":90626,"./ja":39183,"./ja.js":39183,"./jv":24286,"./jv.js":24286,"./ka":12105,"./ka.js":12105,"./kk":47772,"./kk.js":47772,"./km":18758,"./km.js":18758,"./kn":79282,"./kn.js":79282,"./ko":33730,"./ko.js":33730,"./ku":1408,"./ku.js":1408,"./ky":33291,"./ky.js":33291,"./lb":36841,"./lb.js":36841,"./lo":55466,"./lo.js":55466,"./lt":57010,"./lt.js":57010,"./lv":37595,"./lv.js":37595,"./me":39861,"./me.js":39861,"./mi":35493,"./mi.js":35493,"./mk":95966,"./mk.js":95966,"./ml":87341,"./ml.js":87341,"./mn":5115,"./mn.js":5115,"./mr":10370,"./mr.js":10370,"./ms":9847,"./ms-my":41237,"./ms-my.js":41237,"./ms.js":9847,"./mt":72126,"./mt.js":72126,"./my":56165,"./my.js":56165,"./nb":64924,"./nb.js":64924,"./ne":16744,"./ne.js":16744,"./nl":93901,"./nl-be":59814,"./nl-be.js":59814,"./nl.js":93901,"./nn":83877,"./nn.js":83877,"./oc-lnc":92135,"./oc-lnc.js":92135,"./pa-in":15858,"./pa-in.js":15858,"./pl":64495,"./pl.js":64495,"./pt":89520,"./pt-br":57971,"./pt-br.js":57971,"./pt.js":89520,"./ro":96459,"./ro.js":96459,"./ru":21793,"./ru.js":21793,"./sd":40950,"./sd.js":40950,"./se":10490,"./se.js":10490,"./si":90124,"./si.js":90124,"./sk":64249,"./sk.js":64249,"./sl":14985,"./sl.js":14985,"./sq":51104,"./sq.js":51104,"./sr":49131,"./sr-cyrl":79915,"./sr-cyrl.js":79915,"./sr.js":49131,"./ss":85893,"./ss.js":85893,"./sv":98760,"./sv.js":98760,"./sw":91172,"./sw.js":91172,"./ta":27333,"./ta.js":27333,"./te":23110,"./te.js":23110,"./tet":52095,"./tet.js":52095,"./tg":27321,"./tg.js":27321,"./th":9041,"./th.js":9041,"./tk":19005,"./tk.js":19005,"./tl-ph":75768,"./tl-ph.js":75768,"./tlh":89444,"./tlh.js":89444,"./tr":72397,"./tr.js":72397,"./tzl":28254,"./tzl.js":28254,"./tzm":51106,"./tzm-latn":30699,"./tzm-latn.js":30699,"./tzm.js":51106,"./ug-cn":9288,"./ug-cn.js":9288,"./uk":67691,"./uk.js":67691,"./ur":13795,"./ur.js":13795,"./uz":6791,"./uz-latn":60588,"./uz-latn.js":60588,"./uz.js":6791,"./vi":65666,"./vi.js":65666,"./x-pseudo":14378,"./x-pseudo.js":14378,"./yo":75805,"./yo.js":75805,"./zh-cn":83839,"./zh-cn.js":83839,"./zh-hk":55726,"./zh-hk.js":55726,"./zh-mo":99807,"./zh-mo.js":99807,"./zh-tw":74152,"./zh-tw.js":74152};function s(e){var t=r(e);return n(t)}function r(e){if(!n.o(i,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return i[e]}s.keys=function(){return Object.keys(i)},s.resolve=r,e.exports=s,s.id=46700}},n={};function i(e){var s=n[e];if(void 0!==s)return s.exports;var r=n[e]={id:e,loaded:!1,exports:{}};return t[e].call(r.exports,r,r.exports,i),r.loaded=!0,r.exports}i.m=t,e=[],i.O=(t,n,s,r)=>{if(!n){var o=1/0;for(c=0;c<e.length;c++){n=e[c][0],s=e[c][1],r=e[c][2];for(var a=!0,l=0;l<n.length;l++)(!1&r||o>=r)&&Object.keys(i.O).every((e=>i.O[e](n[l])))?n.splice(l--,1):(a=!1,r<o&&(o=r));if(a){e.splice(c--,1);var d=s();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]=[n,s,r]},i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.e=()=>Promise.resolve(),i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),i.j=5992,(()=>{i.b=document.baseURI||self.location.href;var e={5992:0};i.O.j=t=>0===e[t];var t=(t,n)=>{var s,r,o=n[0],a=n[1],l=n[2],d=0;if(o.some((t=>0!==e[t]))){for(s in a)i.o(a,s)&&(i.m[s]=a[s]);if(l)var c=l(i)}for(t&&t(n);d<o.length;d++)r=o[d],i.o(e,r)&&e[r]&&e[r][0](),e[r]=0;return i.O(c)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))})(),i.nc=void 0;var s=i.O(void 0,[7874],(()=>i(1345)));s=i.O(s)})();
-//# sourceMappingURL=files_trashbin-main.js.map?v=84332c1efd35257ae964 \ No newline at end of file
+(()=>{var e,t={1345:(e,t,n)=>{"use strict";var i,s=n(31352),r=n(61137),o=n(80351),a=n.n(o),l=n(77958),d=n(91770),c=n(79753),u=n(14596);const j="/trashbin/".concat(null===(i=(0,l.ts)())||void 0===i?void 0:i.uid,"/trash"),f=(0,c.generateRemoteUrl)("dav"+j),h=(0,u.eI)(f,{headers:{requesttoken:(0,l.IH)()}});var m=n(65358);const v='<?xml version="1.0"?>\n<d:propfind xmlns:d="DAV:"\n\txmlns:oc="http://owncloud.org/ns"\n\txmlns:nc="http://nextcloud.org/ns">\n\t<d:prop>\n\t\t<nc:trashbin-filename />\n\t\t<nc:trashbin-deletion-time />\n\t\t<nc:trashbin-original-location />\n\t\t<nc:trashbin-title />\n\t\t<d:getlastmodified />\n\t\t<d:getetag />\n\t\t<d:getcontenttype />\n\t\t<d:resourcetype />\n\t\t<oc:fileid />\n\t\t<oc:permissions />\n\t\t<oc:size />\n\t\t<d:getcontentlength />\n\t</d:prop>\n</d:propfind>',p=function(e){var t,n,i,s,r;const o=(0,d.wE)(null===(t=e.props)||void 0===t?void 0:t.permissions),a=null===(n=(0,l.ts)())||void 0===n?void 0:n.uid,u=(0,c.generateUrl)("/apps/files_trashbin/preview?fileId={fileid}&x=32&y=32",e.props),f={id:(null===(i=e.props)||void 0===i?void 0:i.fileid)||0,source:(0,c.generateRemoteUrl)((0,m.Ec)("dav"+j+e.filename)),mtime:new Date(e.lastmod),mime:e.mime,size:(null===(s=e.props)||void 0===s?void 0:s.size)||0,permissions:o,owner:a,root:j,attributes:{...e,...e.props,displayName:null===(r=e.props)||void 0===r?void 0:r["trashbin-filename"],previewUrl:u}};return"file"===e.type?new d.$B(f):new d.gt(f)};var b=n(69183),g=n(4820),y=n(64009);const w=(0,n(17499).IY)().setApp("files").detectUser().build();var k;k=new class{constructor(e){var t,n,i;t=this,i=void 0,(n=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,"string");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(n="_action"))in t?Object.defineProperty(t,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[n]=i,this.validateAction(e),this._action=e}get id(){return this._action.id}get displayName(){return this._action.displayName}get iconSvgInline(){return this._action.iconSvgInline}get enabled(){return this._action.enabled}get exec(){return this._action.exec}get execBatch(){return this._action.execBatch}get order(){return this._action.order}get default(){return this._action.default}get inline(){return this._action.inline}get renderInline(){return this._action.renderInline}validateAction(e){if(!e.id||"string"!=typeof e.id)throw new Error("Invalid id");if(!e.displayName||"function"!=typeof e.displayName)throw new Error("Invalid displayName function");if(!e.iconSvgInline||"function"!=typeof e.iconSvgInline)throw new Error("Invalid iconSvgInline function");if(!e.exec||"function"!=typeof e.exec)throw new Error("Invalid exec function");if("enabled"in e&&"function"!=typeof e.enabled)throw new Error("Invalid enabled function");if("execBatch"in e&&"function"!=typeof e.execBatch)throw new Error("Invalid execBatch function");if("order"in e&&"number"!=typeof e.order)throw new Error("Invalid order");if("default"in e&&"boolean"!=typeof e.default)throw new Error("Invalid default");if("inline"in e&&"function"!=typeof e.inline)throw new Error("Invalid inline function");if("renderInline"in e&&"function"!=typeof e.renderInline)throw new Error("Invalid renderInline function")}}({id:"restore",displayName:()=>(0,s.Iu)("files_trashbin","Restore"),iconSvgInline:()=>y,enabled:(e,t)=>"trashbin"===t.id&&e.length>0&&e.map((e=>e.permissions)).every((e=>0!=(e&d.y3.READ))),async exec(e){try{var t;const n=(0,c.generateRemoteUrl)((0,m.Ec)("dav/trashbin/".concat(null===(t=(0,l.ts)())||void 0===t?void 0:t.uid,"/restore/").concat(e.basename)));return await(0,g.default)({method:"MOVE",url:e.source,headers:{destination:n}}),(0,b.j8)("files:node:deleted",e),!0}catch(e){return w.error(e),!1}},async execBatch(e,t){return Promise.all(e.map((e=>this.exec(e,t))))},order:1,inline:()=>!0}),void 0===window._nc_fileactions&&(window._nc_fileactions=[],w.debug("FileActions initialized")),window._nc_fileactions.find((e=>e.id===k.id))?w.error("FileAction ".concat(k.id," already registered"),{action:k}):window._nc_fileactions.push(k),window.OCP.Files.Navigation.register({id:"trashbin",name:(0,s.Iu)("files_trashbin","Deleted files"),caption:(0,s.Iu)("files_trashbin","List of files that have been deleted."),icon:r,order:50,sticky:!0,defaultSortKey:"deleted",columns:[{id:"deleted",title:(0,s.Iu)("files_trashbin","Deleted"),render(e){var t;const n=null===(t=e.attributes)||void 0===t?void 0:t["trashbin-deletion-time"],i=document.createElement("span");return n?(i.title=a().unix(n).format("LLL"),i.textContent=a().unix(n).fromNow(),i):(i.textContent=(0,s.Iu)("files_trashbin","A long time ago"),i)},sort(e,t){var n,i;const s=(null===(n=e.attributes)||void 0===n?void 0:n["trashbin-deletion-time"])||(null==e?void 0:e.mtime)||0;return((null===(i=t.attributes)||void 0===i?void 0:i["trashbin-deletion-time"])||(null==t?void 0:t.mtime)||0)-s}}],getContents:async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"/";const t=await h.stat(e,{details:!0,data:v}),n=await h.getDirectoryContents(e,{details:!0,data:v});return{folder:p(t.data),contents:n.data.map(p)}}})},46700:(e,t,n)=>{var i={"./af":42786,"./af.js":42786,"./ar":30867,"./ar-dz":14130,"./ar-dz.js":14130,"./ar-kw":96135,"./ar-kw.js":96135,"./ar-ly":56440,"./ar-ly.js":56440,"./ar-ma":47702,"./ar-ma.js":47702,"./ar-sa":16040,"./ar-sa.js":16040,"./ar-tn":37100,"./ar-tn.js":37100,"./ar.js":30867,"./az":31083,"./az.js":31083,"./be":9808,"./be.js":9808,"./bg":68338,"./bg.js":68338,"./bm":67438,"./bm.js":67438,"./bn":8905,"./bn-bd":76225,"./bn-bd.js":76225,"./bn.js":8905,"./bo":11560,"./bo.js":11560,"./br":1278,"./br.js":1278,"./bs":80622,"./bs.js":80622,"./ca":2468,"./ca.js":2468,"./cs":5822,"./cs.js":5822,"./cv":50877,"./cv.js":50877,"./cy":47373,"./cy.js":47373,"./da":24780,"./da.js":24780,"./de":59740,"./de-at":60217,"./de-at.js":60217,"./de-ch":60894,"./de-ch.js":60894,"./de.js":59740,"./dv":5300,"./dv.js":5300,"./el":50837,"./el.js":50837,"./en-au":78348,"./en-au.js":78348,"./en-ca":77925,"./en-ca.js":77925,"./en-gb":22243,"./en-gb.js":22243,"./en-ie":46436,"./en-ie.js":46436,"./en-il":47207,"./en-il.js":47207,"./en-in":44175,"./en-in.js":44175,"./en-nz":76319,"./en-nz.js":76319,"./en-sg":31662,"./en-sg.js":31662,"./eo":92915,"./eo.js":92915,"./es":55655,"./es-do":55251,"./es-do.js":55251,"./es-mx":96112,"./es-mx.js":96112,"./es-us":71146,"./es-us.js":71146,"./es.js":55655,"./et":5603,"./et.js":5603,"./eu":77763,"./eu.js":77763,"./fa":76959,"./fa.js":76959,"./fi":11897,"./fi.js":11897,"./fil":42549,"./fil.js":42549,"./fo":94694,"./fo.js":94694,"./fr":94470,"./fr-ca":63049,"./fr-ca.js":63049,"./fr-ch":52330,"./fr-ch.js":52330,"./fr.js":94470,"./fy":5044,"./fy.js":5044,"./ga":29295,"./ga.js":29295,"./gd":2101,"./gd.js":2101,"./gl":38794,"./gl.js":38794,"./gom-deva":27884,"./gom-deva.js":27884,"./gom-latn":23168,"./gom-latn.js":23168,"./gu":95349,"./gu.js":95349,"./he":24206,"./he.js":24206,"./hi":30094,"./hi.js":30094,"./hr":30316,"./hr.js":30316,"./hu":22138,"./hu.js":22138,"./hy-am":11423,"./hy-am.js":11423,"./id":29218,"./id.js":29218,"./is":90135,"./is.js":90135,"./it":90626,"./it-ch":10150,"./it-ch.js":10150,"./it.js":90626,"./ja":39183,"./ja.js":39183,"./jv":24286,"./jv.js":24286,"./ka":12105,"./ka.js":12105,"./kk":47772,"./kk.js":47772,"./km":18758,"./km.js":18758,"./kn":79282,"./kn.js":79282,"./ko":33730,"./ko.js":33730,"./ku":1408,"./ku.js":1408,"./ky":33291,"./ky.js":33291,"./lb":36841,"./lb.js":36841,"./lo":55466,"./lo.js":55466,"./lt":57010,"./lt.js":57010,"./lv":37595,"./lv.js":37595,"./me":39861,"./me.js":39861,"./mi":35493,"./mi.js":35493,"./mk":95966,"./mk.js":95966,"./ml":87341,"./ml.js":87341,"./mn":5115,"./mn.js":5115,"./mr":10370,"./mr.js":10370,"./ms":9847,"./ms-my":41237,"./ms-my.js":41237,"./ms.js":9847,"./mt":72126,"./mt.js":72126,"./my":56165,"./my.js":56165,"./nb":64924,"./nb.js":64924,"./ne":16744,"./ne.js":16744,"./nl":93901,"./nl-be":59814,"./nl-be.js":59814,"./nl.js":93901,"./nn":83877,"./nn.js":83877,"./oc-lnc":92135,"./oc-lnc.js":92135,"./pa-in":15858,"./pa-in.js":15858,"./pl":64495,"./pl.js":64495,"./pt":89520,"./pt-br":57971,"./pt-br.js":57971,"./pt.js":89520,"./ro":96459,"./ro.js":96459,"./ru":21793,"./ru.js":21793,"./sd":40950,"./sd.js":40950,"./se":10490,"./se.js":10490,"./si":90124,"./si.js":90124,"./sk":64249,"./sk.js":64249,"./sl":14985,"./sl.js":14985,"./sq":51104,"./sq.js":51104,"./sr":49131,"./sr-cyrl":79915,"./sr-cyrl.js":79915,"./sr.js":49131,"./ss":85893,"./ss.js":85893,"./sv":98760,"./sv.js":98760,"./sw":91172,"./sw.js":91172,"./ta":27333,"./ta.js":27333,"./te":23110,"./te.js":23110,"./tet":52095,"./tet.js":52095,"./tg":27321,"./tg.js":27321,"./th":9041,"./th.js":9041,"./tk":19005,"./tk.js":19005,"./tl-ph":75768,"./tl-ph.js":75768,"./tlh":89444,"./tlh.js":89444,"./tr":72397,"./tr.js":72397,"./tzl":28254,"./tzl.js":28254,"./tzm":51106,"./tzm-latn":30699,"./tzm-latn.js":30699,"./tzm.js":51106,"./ug-cn":9288,"./ug-cn.js":9288,"./uk":67691,"./uk.js":67691,"./ur":13795,"./ur.js":13795,"./uz":6791,"./uz-latn":60588,"./uz-latn.js":60588,"./uz.js":6791,"./vi":65666,"./vi.js":65666,"./x-pseudo":14378,"./x-pseudo.js":14378,"./yo":75805,"./yo.js":75805,"./zh-cn":83839,"./zh-cn.js":83839,"./zh-hk":55726,"./zh-hk.js":55726,"./zh-mo":99807,"./zh-mo.js":99807,"./zh-tw":74152,"./zh-tw.js":74152};function s(e){var t=r(e);return n(t)}function r(e){if(!n.o(i,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return i[e]}s.keys=function(){return Object.keys(i)},s.resolve=r,e.exports=s,s.id=46700}},n={};function i(e){var s=n[e];if(void 0!==s)return s.exports;var r=n[e]={id:e,loaded:!1,exports:{}};return t[e].call(r.exports,r,r.exports,i),r.loaded=!0,r.exports}i.m=t,e=[],i.O=(t,n,s,r)=>{if(!n){var o=1/0;for(c=0;c<e.length;c++){n=e[c][0],s=e[c][1],r=e[c][2];for(var a=!0,l=0;l<n.length;l++)(!1&r||o>=r)&&Object.keys(i.O).every((e=>i.O[e](n[l])))?n.splice(l--,1):(a=!1,r<o&&(o=r));if(a){e.splice(c--,1);var d=s();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]=[n,s,r]},i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.e=()=>Promise.resolve(),i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),i.j=5992,(()=>{i.b=document.baseURI||self.location.href;var e={5992:0};i.O.j=t=>0===e[t];var t=(t,n)=>{var s,r,o=n[0],a=n[1],l=n[2],d=0;if(o.some((t=>0!==e[t]))){for(s in a)i.o(a,s)&&(i.m[s]=a[s]);if(l)var c=l(i)}for(t&&t(n);d<o.length;d++)r=o[d],i.o(e,r)&&e[r]&&e[r][0](),e[r]=0;return i.O(c)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))})(),i.nc=void 0;var s=i.O(void 0,[7874],(()=>i(1345)));s=i.O(s)})();
+//# sourceMappingURL=files_trashbin-main.js.map?v=8fcc90348d69aa1f2f82 \ No newline at end of file
diff --git a/dist/files_trashbin-main.js.map b/dist/files_trashbin-main.js.map
index 005b3347531..710201e58ce 100644
--- a/dist/files_trashbin-main.js.map
+++ b/dist/files_trashbin-main.js.map
@@ -1 +1 @@
-{"version":3,"file":"files_trashbin-main.js?v=84332c1efd35257ae964","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/files_trashbin/src/services/client.ts","webpack:///nextcloud/apps/files_trashbin/src/services/trashbin.ts","webpack:///nextcloud/apps/files/src/logger.js","webpack:///nextcloud/apps/files/src/services/FileAction.ts","webpack:///nextcloud/apps/files_trashbin/src/actions/restoreAction.ts","webpack:///nextcloud/apps/files_trashbin/src/main.ts","webpack:///nextcloud/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/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) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport { createClient } from 'webdav';\nimport { generateRemoteUrl } from '@nextcloud/router';\nimport { getCurrentUser, getRequestToken } from '@nextcloud/auth';\nexport const rootPath = `/trashbin/${getCurrentUser()?.uid}/trash`;\nexport const rootUrl = generateRemoteUrl('dav' + rootPath);\nconst client = createClient(rootUrl, {\n headers: {\n requesttoken: getRequestToken(),\n },\n});\nexport default client;\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n/* eslint-disable */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport { File, Folder, parseWebdavPermissions } from '@nextcloud/files';\nimport { generateRemoteUrl, generateUrl } from '@nextcloud/router';\nimport client, { rootPath } from './client';\nconst data = `<?xml version=\"1.0\"?>\n<d:propfind xmlns:d=\"DAV:\"\n\txmlns:oc=\"http://owncloud.org/ns\"\n\txmlns:nc=\"http://nextcloud.org/ns\">\n\t<d:prop>\n\t\t<nc:trashbin-filename />\n\t\t<nc:trashbin-deletion-time />\n\t\t<nc:trashbin-original-location />\n\t\t<nc:trashbin-title />\n\t\t<d:getlastmodified />\n\t\t<d:getetag />\n\t\t<d:getcontenttype />\n\t\t<d:resourcetype />\n\t\t<oc:fileid />\n\t\t<oc:permissions />\n\t\t<oc:size />\n\t\t<d:getcontentlength />\n\t</d:prop>\n</d:propfind>`;\nconst resultToNode = function (node) {\n const permissions = parseWebdavPermissions(node.props?.permissions);\n const owner = getCurrentUser()?.uid;\n const previewUrl = generateUrl('/apps/files_trashbin/preview?fileId={fileid}&x=32&y=32', node.props);\n const nodeData = {\n id: node.props?.fileid || 0,\n source: generateRemoteUrl('dav' + rootPath + node.filename),\n mtime: new Date(node.lastmod),\n mime: node.mime,\n size: node.props?.size || 0,\n permissions,\n owner,\n root: rootPath,\n attributes: {\n ...node,\n ...node.props,\n // Override displayed name on the list\n displayName: node.props?.['trashbin-filename'],\n previewUrl,\n },\n };\n return node.type === 'file'\n ? new File(nodeData)\n : new Folder(nodeData);\n};\nexport const getContents = async (path = '/') => {\n // TODO: use only one request when webdav-client supports it\n // @see https://github.com/perry-mitchell/webdav-client/pull/334\n const rootResponse = await client.stat(path, {\n details: true,\n data,\n });\n const contentsResponse = await client.getDirectoryContents(path, {\n details: true,\n data,\n });\n return {\n folder: resultToNode(rootResponse.data),\n contents: contentsResponse.data.map(resultToNode),\n };\n};\n","/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('files')\n\t.detectUser()\n\t.build()\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport logger from '../logger';\nexport class FileAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n get execBatch() {\n return this._action.execBatch;\n }\n get order() {\n return this._action.order;\n }\n get default() {\n return this._action.default;\n }\n get inline() {\n return this._action.inline;\n }\n get renderInline() {\n return this._action.renderInline;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== 'string') {\n throw new Error('Invalid id');\n }\n if (!action.displayName || typeof action.displayName !== 'function') {\n throw new Error('Invalid displayName function');\n }\n if (!action.iconSvgInline || typeof action.iconSvgInline !== 'function') {\n throw new Error('Invalid iconSvgInline function');\n }\n if (!action.exec || typeof action.exec !== 'function') {\n throw new Error('Invalid exec function');\n }\n // Optional properties --------------------------------------------\n if ('enabled' in action && typeof action.enabled !== 'function') {\n throw new Error('Invalid enabled function');\n }\n if ('execBatch' in action && typeof action.execBatch !== 'function') {\n throw new Error('Invalid execBatch function');\n }\n if ('order' in action && typeof action.order !== 'number') {\n throw new Error('Invalid order');\n }\n if ('default' in action && typeof action.default !== 'boolean') {\n throw new Error('Invalid default');\n }\n if ('inline' in action && typeof action.inline !== 'function') {\n throw new Error('Invalid inline function');\n }\n if ('renderInline' in action && typeof action.renderInline !== 'function') {\n throw new Error('Invalid renderInline function');\n }\n }\n}\nexport const registerFileAction = function (action) {\n if (typeof window._nc_fileactions === 'undefined') {\n window._nc_fileactions = [];\n logger.debug('FileActions initialized');\n }\n // Check duplicates\n if (window._nc_fileactions.find(search => search.id === action.id)) {\n logger.error(`FileAction ${action.id} already registered`, { action });\n return;\n }\n window._nc_fileactions.push(action);\n};\nexport const getFileActions = function () {\n return window._nc_fileactions || [];\n};\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport { emit } from '@nextcloud/event-bus';\nimport { generateRemoteUrl } from '@nextcloud/router';\nimport { getCurrentUser } from '@nextcloud/auth';\nimport { Permission, Node } from '@nextcloud/files';\nimport { translate as t } from '@nextcloud/l10n';\nimport axios from '@nextcloud/axios';\nimport History from '@mdi/svg/svg/history.svg?raw';\nimport { registerFileAction, FileAction } from '../../../files/src/services/FileAction.ts';\nimport logger from '../../../files/src/logger.js';\nregisterFileAction(new FileAction({\n id: 'restore',\n displayName() {\n return t('files_trashbin', 'Restore');\n },\n iconSvgInline: () => History,\n enabled(nodes, view) {\n // Only available in the trashbin view\n if (view.id !== 'trashbin') {\n return false;\n }\n // Only available if all nodes have read permission\n return nodes.length > 0 && nodes\n .map(node => node.permissions)\n .every(permission => (permission & Permission.READ) !== 0);\n },\n async exec(node) {\n try {\n const destination = generateRemoteUrl(encodeURI(`dav/trashbin/${getCurrentUser()?.uid}/restore/${node.basename}`));\n await axios({\n method: 'MOVE',\n url: node.source,\n headers: {\n destination,\n },\n });\n // Let's pretend the file is deleted since\n // we don't know the restored location\n emit('files:node:deleted', node);\n return true;\n }\n catch (error) {\n logger.error(error);\n return false;\n }\n },\n async execBatch(nodes, view) {\n return Promise.all(nodes.map(node => this.exec(node, view)));\n },\n order: 1,\n inline: () => true,\n}));\n","import { translate as t, translate } from '@nextcloud/l10n';\nimport DeleteSvg from '@mdi/svg/svg/delete.svg?raw';\nimport moment from '@nextcloud/moment';\nimport { getContents } from './services/trashbin';\n// Register restore action\nimport './actions/restoreAction';\nconst Navigation = window.OCP.Files.Navigation;\nNavigation.register({\n id: 'trashbin',\n name: t('files_trashbin', 'Deleted files'),\n caption: t('files_trashbin', 'List of files that have been deleted.'),\n icon: DeleteSvg,\n order: 50,\n sticky: true,\n defaultSortKey: 'deleted',\n columns: [\n {\n id: 'deleted',\n title: t('files_trashbin', 'Deleted'),\n render(node) {\n const deletionTime = node.attributes?.['trashbin-deletion-time'];\n const span = document.createElement('span');\n if (deletionTime) {\n span.title = moment.unix(deletionTime).format('LLL');\n span.textContent = moment.unix(deletionTime).fromNow();\n return span;\n }\n // Unknown deletion time\n span.textContent = translate('files_trashbin', 'A long time ago');\n return span;\n },\n sort(nodeA, nodeB) {\n const deletionTimeA = nodeA.attributes?.['trashbin-deletion-time'] || nodeA?.mtime || 0;\n const deletionTimeB = nodeB.attributes?.['trashbin-deletion-time'] || nodeB?.mtime || 0;\n return deletionTimeB - deletionTimeA;\n },\n },\n ],\n getContents,\n});\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};","// The chunk loading function for additional chunks\n// Since all referenced chunks are already included\n// in this file, this function is empty here.\n__webpack_require__.e = () => (Promise.resolve());","__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 = 5992;","__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\t5992: 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__(1345)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","rootPath","concat","_getCurrentUser","getCurrentUser","uid","rootUrl","generateRemoteUrl","createClient","headers","requesttoken","getRequestToken","data","resultToNode","node","_node$props","_node$props2","_node$props3","_node$props4","permissions","parseWebdavPermissions","props","owner","previewUrl","generateUrl","nodeData","id","fileid","source","filename","mtime","Date","lastmod","mime","size","root","attributes","displayName","type","File","Folder","getLoggerBuilder","setApp","detectUser","build","action","constructor","this","validateAction","_action","iconSvgInline","enabled","exec","execBatch","order","default","inline","renderInline","Error","t","History","nodes","view","length","map","every","permission","Permission","async","destination","encodeURI","basename","axios","method","url","emit","error","logger","Promise","all","window","_nc_fileactions","debug","find","search","push","OCP","Files","Navigation","register","name","caption","icon","DeleteSvg","sticky","defaultSortKey","columns","title","render","_node$attributes","deletionTime","span","document","createElement","moment","format","textContent","fromNow","translate","sort","nodeA","nodeB","_nodeA$attributes","_nodeB$attributes","deletionTimeA","getContents","path","arguments","undefined","rootResponse","client","details","contentsResponse","folder","contents","webpackContext","req","webpackContextResolve","__webpack_require__","o","e","code","keys","Object","resolve","module","exports","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","call","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","key","splice","r","n","getter","__esModule","d","a","definition","defineProperty","enumerable","get","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","value","nmd","paths","children","b","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"files_trashbin-main.js?v=8fcc90348d69aa1f2f82","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/files_trashbin/src/services/client.ts","webpack:///nextcloud/apps/files_trashbin/src/services/trashbin.ts","webpack:///nextcloud/apps/files/src/logger.js","webpack:///nextcloud/apps/files/src/services/FileAction.ts","webpack:///nextcloud/apps/files_trashbin/src/actions/restoreAction.ts","webpack:///nextcloud/apps/files_trashbin/src/main.ts","webpack:///nextcloud/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/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) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport { createClient } from 'webdav';\nimport { generateRemoteUrl } from '@nextcloud/router';\nimport { getCurrentUser, getRequestToken } from '@nextcloud/auth';\nexport const rootPath = `/trashbin/${getCurrentUser()?.uid}/trash`;\nexport const rootUrl = generateRemoteUrl('dav' + rootPath);\nconst client = createClient(rootUrl, {\n headers: {\n requesttoken: getRequestToken(),\n },\n});\nexport default client;\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n/* eslint-disable */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport { File, Folder, parseWebdavPermissions } from '@nextcloud/files';\nimport { generateRemoteUrl, generateUrl } from '@nextcloud/router';\nimport client, { rootPath } from './client';\nimport { encodePath } from '@nextcloud/paths';\nconst data = `<?xml version=\"1.0\"?>\n<d:propfind xmlns:d=\"DAV:\"\n\txmlns:oc=\"http://owncloud.org/ns\"\n\txmlns:nc=\"http://nextcloud.org/ns\">\n\t<d:prop>\n\t\t<nc:trashbin-filename />\n\t\t<nc:trashbin-deletion-time />\n\t\t<nc:trashbin-original-location />\n\t\t<nc:trashbin-title />\n\t\t<d:getlastmodified />\n\t\t<d:getetag />\n\t\t<d:getcontenttype />\n\t\t<d:resourcetype />\n\t\t<oc:fileid />\n\t\t<oc:permissions />\n\t\t<oc:size />\n\t\t<d:getcontentlength />\n\t</d:prop>\n</d:propfind>`;\nconst resultToNode = function (node) {\n const permissions = parseWebdavPermissions(node.props?.permissions);\n const owner = getCurrentUser()?.uid;\n const previewUrl = generateUrl('/apps/files_trashbin/preview?fileId={fileid}&x=32&y=32', node.props);\n const nodeData = {\n id: node.props?.fileid || 0,\n source: generateRemoteUrl(encodePath('dav' + rootPath + node.filename)),\n mtime: new Date(node.lastmod),\n mime: node.mime,\n size: node.props?.size || 0,\n permissions,\n owner,\n root: rootPath,\n attributes: {\n ...node,\n ...node.props,\n // Override displayed name on the list\n displayName: node.props?.['trashbin-filename'],\n previewUrl,\n },\n };\n return node.type === 'file'\n ? new File(nodeData)\n : new Folder(nodeData);\n};\nexport const getContents = async (path = '/') => {\n // TODO: use only one request when webdav-client supports it\n // @see https://github.com/perry-mitchell/webdav-client/pull/334\n const rootResponse = await client.stat(path, {\n details: true,\n data,\n });\n const contentsResponse = await client.getDirectoryContents(path, {\n details: true,\n data,\n });\n return {\n folder: resultToNode(rootResponse.data),\n contents: contentsResponse.data.map(resultToNode),\n };\n};\n","/**\n * @copyright Copyright (c) 2022 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('files')\n\t.detectUser()\n\t.build()\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport logger from '../logger';\nexport class FileAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n get execBatch() {\n return this._action.execBatch;\n }\n get order() {\n return this._action.order;\n }\n get default() {\n return this._action.default;\n }\n get inline() {\n return this._action.inline;\n }\n get renderInline() {\n return this._action.renderInline;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== 'string') {\n throw new Error('Invalid id');\n }\n if (!action.displayName || typeof action.displayName !== 'function') {\n throw new Error('Invalid displayName function');\n }\n if (!action.iconSvgInline || typeof action.iconSvgInline !== 'function') {\n throw new Error('Invalid iconSvgInline function');\n }\n if (!action.exec || typeof action.exec !== 'function') {\n throw new Error('Invalid exec function');\n }\n // Optional properties --------------------------------------------\n if ('enabled' in action && typeof action.enabled !== 'function') {\n throw new Error('Invalid enabled function');\n }\n if ('execBatch' in action && typeof action.execBatch !== 'function') {\n throw new Error('Invalid execBatch function');\n }\n if ('order' in action && typeof action.order !== 'number') {\n throw new Error('Invalid order');\n }\n if ('default' in action && typeof action.default !== 'boolean') {\n throw new Error('Invalid default');\n }\n if ('inline' in action && typeof action.inline !== 'function') {\n throw new Error('Invalid inline function');\n }\n if ('renderInline' in action && typeof action.renderInline !== 'function') {\n throw new Error('Invalid renderInline function');\n }\n }\n}\nexport const registerFileAction = function (action) {\n if (typeof window._nc_fileactions === 'undefined') {\n window._nc_fileactions = [];\n logger.debug('FileActions initialized');\n }\n // Check duplicates\n if (window._nc_fileactions.find(search => search.id === action.id)) {\n logger.error(`FileAction ${action.id} already registered`, { action });\n return;\n }\n window._nc_fileactions.push(action);\n};\nexport const getFileActions = function () {\n return window._nc_fileactions || [];\n};\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport { emit } from '@nextcloud/event-bus';\nimport { generateRemoteUrl } from '@nextcloud/router';\nimport { getCurrentUser } from '@nextcloud/auth';\nimport { Permission, Node } from '@nextcloud/files';\nimport { translate as t } from '@nextcloud/l10n';\nimport axios from '@nextcloud/axios';\nimport History from '@mdi/svg/svg/history.svg?raw';\nimport { registerFileAction, FileAction } from '../../../files/src/services/FileAction.ts';\nimport logger from '../../../files/src/logger.js';\nimport { encodePath } from '@nextcloud/paths';\nregisterFileAction(new FileAction({\n id: 'restore',\n displayName() {\n return t('files_trashbin', 'Restore');\n },\n iconSvgInline: () => History,\n enabled(nodes, view) {\n // Only available in the trashbin view\n if (view.id !== 'trashbin') {\n return false;\n }\n // Only available if all nodes have read permission\n return nodes.length > 0 && nodes\n .map(node => node.permissions)\n .every(permission => (permission & Permission.READ) !== 0);\n },\n async exec(node) {\n try {\n const destination = generateRemoteUrl(encodePath(`dav/trashbin/${getCurrentUser()?.uid}/restore/${node.basename}`));\n await axios({\n method: 'MOVE',\n url: node.source,\n headers: {\n destination,\n },\n });\n // Let's pretend the file is deleted since\n // we don't know the restored location\n emit('files:node:deleted', node);\n return true;\n }\n catch (error) {\n logger.error(error);\n return false;\n }\n },\n async execBatch(nodes, view) {\n return Promise.all(nodes.map(node => this.exec(node, view)));\n },\n order: 1,\n inline: () => true,\n}));\n","import { translate as t, translate } from '@nextcloud/l10n';\nimport DeleteSvg from '@mdi/svg/svg/delete.svg?raw';\nimport moment from '@nextcloud/moment';\nimport { getContents } from './services/trashbin';\n// Register restore action\nimport './actions/restoreAction';\nconst Navigation = window.OCP.Files.Navigation;\nNavigation.register({\n id: 'trashbin',\n name: t('files_trashbin', 'Deleted files'),\n caption: t('files_trashbin', 'List of files that have been deleted.'),\n icon: DeleteSvg,\n order: 50,\n sticky: true,\n defaultSortKey: 'deleted',\n columns: [\n {\n id: 'deleted',\n title: t('files_trashbin', 'Deleted'),\n render(node) {\n const deletionTime = node.attributes?.['trashbin-deletion-time'];\n const span = document.createElement('span');\n if (deletionTime) {\n span.title = moment.unix(deletionTime).format('LLL');\n span.textContent = moment.unix(deletionTime).fromNow();\n return span;\n }\n // Unknown deletion time\n span.textContent = translate('files_trashbin', 'A long time ago');\n return span;\n },\n sort(nodeA, nodeB) {\n const deletionTimeA = nodeA.attributes?.['trashbin-deletion-time'] || nodeA?.mtime || 0;\n const deletionTimeB = nodeB.attributes?.['trashbin-deletion-time'] || nodeB?.mtime || 0;\n return deletionTimeB - deletionTimeA;\n },\n },\n ],\n getContents,\n});\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};","// The chunk loading function for additional chunks\n// Since all referenced chunks are already included\n// in this file, this function is empty here.\n__webpack_require__.e = () => (Promise.resolve());","__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 = 5992;","__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\t5992: 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__(1345)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","rootPath","concat","_getCurrentUser","getCurrentUser","uid","rootUrl","generateRemoteUrl","createClient","headers","requesttoken","getRequestToken","data","resultToNode","node","_node$props","_node$props2","_node$props3","_node$props4","permissions","parseWebdavPermissions","props","owner","previewUrl","generateUrl","nodeData","id","fileid","source","encodePath","filename","mtime","Date","lastmod","mime","size","root","attributes","displayName","type","File","Folder","getLoggerBuilder","setApp","detectUser","build","action","constructor","this","validateAction","_action","iconSvgInline","enabled","exec","execBatch","order","default","inline","renderInline","Error","t","History","nodes","view","length","map","every","permission","Permission","async","destination","basename","axios","method","url","emit","error","logger","Promise","all","window","_nc_fileactions","debug","find","search","push","OCP","Files","Navigation","register","name","caption","icon","DeleteSvg","sticky","defaultSortKey","columns","title","render","_node$attributes","deletionTime","span","document","createElement","moment","format","textContent","fromNow","translate","sort","nodeA","nodeB","_nodeA$attributes","_nodeB$attributes","deletionTimeA","getContents","path","arguments","undefined","rootResponse","client","details","contentsResponse","folder","contents","webpackContext","req","webpackContextResolve","__webpack_require__","o","e","code","keys","Object","resolve","module","exports","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","call","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","key","splice","r","n","getter","__esModule","d","a","definition","defineProperty","enumerable","get","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","value","nmd","paths","children","b","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/files_versions-files_versions.js b/dist/files_versions-files_versions.js
index 1e9a40398d2..94e1898f7b8 100644
--- a/dist/files_versions-files_versions.js
+++ b/dist/files_versions-files_versions.js
@@ -1,3 +1,3 @@
/*! For license information please see files_versions-files_versions.js.LICENSE.txt */
-(()=>{var e,s,n,i={79290:(e,s,n)=>{"use strict";var i=n(20144),o=n(31352),r=n(62520),a=n.n(r),l=n(64024),c=n(3344),d=n.n(c),f=n(69183),u=n(77958),v=n(65358),m=n(79753),p=n(80351),h=n.n(p);const b=function(e){const t=(e.startsWith("/")?e:"/".concat(e)).split("/");let s="";return t.forEach((e=>{""!==e&&(s+="/"+encodeURIComponent(e))})),s};var A,j=n(14596);const _=(0,m.generateRemoteUrl)("dav"),g=(0,j.eI)(_,{headers:{"X-Requested-With":"XMLHttpRequest",requesttoken:null!==(A=(0,u.IH)())&&void 0!==A?A:""}}),y=(0,n(17499).IY)().setApp("files_version").detectUser().build();var C=n(88722),w=n(41293),x=n(15743),k=n(73229),V=n(80419),I=n(57612),L=n(24860),z=n(15961),O=n(79954);const N={name:"Version",components:{NcActionLink:z.ih,NcActionButton:z.Js,NcListItem:z.hx,NcModal:z.Jc,NcButton:z.P2,NcTextField:z.h3,BackupRestore:C.Z,Download:w.Z,FileCompare:x.Z,Pencil:k.default,Check:V.default,Delete:I.Z,ImageOffOutline:L.Z},directives:{tooltip:z.u},filters:{humanReadableSize:e=>OC.Util.humanFileSize(e),humanDateFromNow:e=>h()(e).fromNow()},props:{version:{type:Object,required:!0},fileInfo:{type:Object,required:!0},isCurrent:{type:Boolean,default:!1},isFirstVersion:{type:Boolean,default:!1},loadPreview:{type:Boolean,default:!1},canView:{type:Boolean,default:!1},canCompare:{type:Boolean,default:!1}},data(){return{previewLoaded:!1,showVersionLabelForm:!1,formVersionLabelValue:this.version.label,capabilities:(0,O.j)("core","capabilities",{files:{version_labeling:!1,version_deletion:!1}})}},computed:{versionLabel(){var e;const t=null!==(e=this.version.label)&&void 0!==e?e:"";return this.isCurrent?""===t?(0,o.Iu)("files_versions","Current version"):"".concat(t," (").concat((0,o.Iu)("files_versions","Current version"),")"):this.isFirstVersion&&""===t?(0,o.Iu)("files_versions","Initial version"):t},downloadURL(){return this.isCurrent?(0,m.getRootUrl)()+(0,v.RQ)("/remote.php/webdav",this.fileInfo.path,this.fileInfo.name):(0,m.getRootUrl)()+this.version.url},formattedDate(){return h()(this.version.mtime).format("LLL")},enableLabeling(){return!0===this.capabilities.files.version_labeling},enableDeletion(){return!0===this.capabilities.files.version_deletion}},methods:{openVersionLabelModal(){this.showVersionLabelForm=!0,this.$nextTick((()=>{this.$refs.labelInput.$el.getElementsByTagName("input")[0].focus()}))},restoreVersion(){this.$emit("restore",this.version)},setVersionLabel(e){this.formVersionLabelValue=e,this.showVersionLabelForm=!1,this.$emit("label-update",this.version,e)},deleteVersion(){this.$emit("delete",this.version)},click(){this.canView?this.$emit("click",{version:this.version}):window.location=this.downloadURL},compareVersion(){if(!this.canView)throw new Error("Cannot compare version of this file");this.$emit("compare",{version:this.version})}}};var B=n(93379),R=n.n(B),S=n(7795),D=n.n(S),F=n(90569),U=n.n(F),E=n(3565),P=n.n(E),T=n(19216),$=n.n(T),M=n(44589),q=n.n(M),Z=n(28176),Y={};Y.styleTagTransform=q(),Y.setAttributes=P(),Y.insert=U().bind(null,"head"),Y.domAPI=D(),Y.insertStyleElement=$(),R()(Z.Z,Y),Z.Z&&Z.Z.locals&&Z.Z.locals;var W=n(51900);const G={name:"VersionTab",components:{Version:(0,W.Z)(N,(function(){var e=this,t=e._self._c;return t("div",[t("NcListItem",{staticClass:"version",attrs:{title:e.versionLabel,"force-display-actions":!0,"data-files-versions-version":""},on:{click:e.click},scopedSlots:e._u([{key:"icon",fn:function(){return[e.loadPreview||e.previewLoaded?e.isCurrent||e.version.hasPreview?t("img",{staticClass:"version__image",attrs:{src:e.version.previewUrl,alt:"",decoding:"async",fetchpriority:"low",loading:"lazy"},on:{load:function(t){e.previewLoaded=!0}}}):t("div",{staticClass:"version__image"},[t("ImageOffOutline",{attrs:{size:20}})],1):t("div",{staticClass:"version__image"})]},proxy:!0},{key:"subtitle",fn:function(){return[t("div",{staticClass:"version__info"},[t("span",{attrs:{title:e.formattedDate}},[e._v(e._s(e._f("humanDateFromNow")(e.version.mtime)))]),e._v(" "),t("span",{staticClass:"version__info__size"},[e._v("•")]),e._v(" "),t("span",{staticClass:"version__info__size"},[e._v(e._s(e._f("humanReadableSize")(e.version.size)))])])]},proxy:!0},{key:"actions",fn:function(){return[e.enableLabeling?t("NcActionButton",{attrs:{"close-after-click":!0},on:{click:e.openVersionLabelModal},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Pencil",{attrs:{size:22}})]},proxy:!0}],null,!1,3072546167)},[e._v("\n\t\t\t\t"+e._s(""===e.version.label?e.t("files_versions","Name this version"):e.t("files_versions","Edit version name"))+"\n\t\t\t")]):e._e(),e._v(" "),!e.isCurrent&&e.canView&&e.canCompare?t("NcActionButton",{attrs:{"close-after-click":!0},on:{click:e.compareVersion},scopedSlots:e._u([{key:"icon",fn:function(){return[t("FileCompare",{attrs:{size:22}})]},proxy:!0}],null,!1,1958207595)},[e._v("\n\t\t\t\t"+e._s(e.t("files_versions","Compare to current version"))+"\n\t\t\t")]):e._e(),e._v(" "),e.isCurrent?e._e():t("NcActionButton",{attrs:{"close-after-click":!0},on:{click:e.restoreVersion},scopedSlots:e._u([{key:"icon",fn:function(){return[t("BackupRestore",{attrs:{size:22}})]},proxy:!0}],null,!1,2239038444)},[e._v("\n\t\t\t\t"+e._s(e.t("files_versions","Restore version"))+"\n\t\t\t")]),e._v(" "),t("NcActionLink",{attrs:{href:e.downloadURL,"close-after-click":!0,download:e.downloadURL},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Download",{attrs:{size:22}})]},proxy:!0}])},[e._v("\n\t\t\t\t"+e._s(e.t("files_versions","Download version"))+"\n\t\t\t")]),e._v(" "),!e.isCurrent&&e.enableDeletion?t("NcActionButton",{attrs:{"close-after-click":!0},on:{click:e.deleteVersion},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Delete",{attrs:{size:22}})]},proxy:!0}],null,!1,2429175571)},[e._v("\n\t\t\t\t"+e._s(e.t("files_versions","Delete version"))+"\n\t\t\t")]):e._e()]},proxy:!0}])}),e._v(" "),e.showVersionLabelForm?t("NcModal",{attrs:{title:e.t("files_versions","Name this version")},on:{close:function(t){e.showVersionLabelForm=!1}}},[t("form",{staticClass:"version-label-modal",on:{submit:function(t){return t.preventDefault(),e.setVersionLabel(e.formVersionLabelValue)}}},[t("label",[t("div",{staticClass:"version-label-modal__title"},[e._v(e._s(e.t("photos","Version name")))]),e._v(" "),t("NcTextField",{ref:"labelInput",attrs:{value:e.formVersionLabelValue,placeholder:e.t("photos","Version name"),"label-outside":!0},on:{"update:value":function(t){e.formVersionLabelValue=t}}})],1),e._v(" "),t("div",{staticClass:"version-label-modal__info"},[e._v("\n\t\t\t\t"+e._s(e.t("photos","Named versions are persisted, and excluded from automatic cleanups when your storage quota is full."))+"\n\t\t\t")]),e._v(" "),t("div",{staticClass:"version-label-modal__actions"},[t("NcButton",{attrs:{disabled:0===e.formVersionLabelValue.trim().length},on:{click:function(t){return e.setVersionLabel("")}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_versions","Remove version name"))+"\n\t\t\t\t")]),e._v(" "),t("NcButton",{attrs:{type:"primary","native-type":"submit"},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Check")]},proxy:!0}],null,!1,2308323205)},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_versions","Save version name"))+"\n\t\t\t\t")])],1)])]):e._e()],1)}),[],!1,null,"b584f27c",null).exports},mixins:[d()],data:()=>({fileInfo:null,isActive:!1,versions:[],loading:!1}),computed:{orderedVersions(){return[...this.versions].sort(((e,t)=>e.mtime===this.fileInfo.mtime?-1:t.mtime===this.fileInfo.mtime?1:t.mtime-e.mtime))},initialVersionMtime(){return this.versions.map((e=>e.mtime)).reduce(((e,t)=>Math.min(e,t)))},viewerFileInfo(){let e="";return 1&this.fileInfo.permissions&&(e+="R"),2&this.fileInfo.permissions&&(e+="W"),8&this.fileInfo.permissions&&(e+="D"),{...this.fileInfo,mime:this.fileInfo.mimetype,basename:this.fileInfo.name,filename:this.fileInfo.path+"/"+this.fileInfo.name,permissions:e,fileid:this.fileInfo.id}},canView(){var e,t;return null===(e=window.OCA.Viewer)||void 0===e||null===(t=e.mimetypesCompare)||void 0===t?void 0:t.includes(this.fileInfo.mimetype)},canCompare(){return!this.isMobile}},mounted(){(0,f.Ld)("files_versions:restore:restored",this.fetchVersions)},beforeUnmount(){(0,f.r1)("files_versions:restore:restored",this.fetchVersions)},methods:{async update(e){this.fileInfo=e,this.resetState(),this.fetchVersions()},async setIsActive(e){this.isActive=e},async fetchVersions(){try{this.loading=!0,this.versions=await async function(e){var t;const s="/versions/".concat(null===(t=(0,u.ts)())||void 0===t?void 0:t.uid,"/versions/").concat(e.id);try{return(await g.getDirectoryContents(s,{data:'<?xml version="1.0"?>\n<d:propfind xmlns:d="DAV:"\n\txmlns:oc="http://owncloud.org/ns"\n\txmlns:nc="http://nextcloud.org/ns"\n\txmlns:ocs="http://open-collaboration-services.org/ns">\n\t<d:prop>\n\t\t<d:getcontentlength />\n\t\t<d:getcontenttype />\n\t\t<d:getlastmodified />\n\t\t<d:getetag />\n\t\t<nc:version-label />\n\t\t<nc:has-preview />\n\t</d:prop>\n</d:propfind>',details:!0})).data.filter((e=>{let{mime:t}=e;return""!==t})).map((t=>function(e,t){const s=1e3*h()(e.lastmod).unix();let n="";return n=s===t.mtime?(0,m.generateUrl)("/core/preview?fileId={fileId}&c={fileEtag}&x=250&y=250&forceIcon=0&a=0",{fileId:t.id,fileEtag:t.etag}):(0,m.generateUrl)("/apps/files_versions/preview?file={file}&version={fileVersion}",{file:(0,v.RQ)(t.path,t.name),fileVersion:e.basename}),{fileId:t.id,label:e.props["version-label"],filename:e.filename,basename:h()(s).format("LLL"),mime:e.mime,etag:"".concat(e.props.getetag),size:e.size,type:e.type,mtime:s,permissions:"R",hasPreview:1===e.props["has-preview"],previewUrl:n,url:(0,v.RQ)("/remote.php/dav",e.filename),source:(0,m.generateRemoteUrl)("dav")+b(e.filename),fileVersion:e.basename}}(t,e)))}catch(e){throw y.error("Could not fetch version",{exception:e}),e}}(this.fileInfo)}finally{this.loading=!1}},async handleRestore(e){const s=this.fileInfo;this.fileInfo={...this.fileInfo,size:e.size,mtime:e.mtime};const n={preventDefault:!1,fileInfo:this.fileInfo,version:e};if((0,f.j8)("files_versions:restore:requested",n),!n.preventDefault)try{await async function(e){try{var t,s;y.debug("Restoring version",{url:e.url}),await g.moveFile("/versions/".concat(null===(t=(0,u.ts)())||void 0===t?void 0:t.uid,"/versions/").concat(e.fileId,"/").concat(e.fileVersion),"/versions/".concat(null===(s=(0,u.ts)())||void 0===s?void 0:s.uid,"/restore/target"))}catch(e){throw y.error("Could not restore version",{exception:e}),e}}(e),""!==e.label?(0,l.s$)(t("files_versions","".concat(e.label," restored"))):e.mtime===this.initialVersionMtime?(0,l.s$)(t("files_versions","Initial version restored")):(0,l.s$)(t("files_versions","Version restored")),(0,f.j8)("files_versions:restore:restored",e)}catch(n){this.fileInfo=s,(0,l.x2)(t("files_versions","Could not restore version")),(0,f.j8)("files_versions:restore:failed",e)}},async handleLabelUpdate(e,s){const n=e.label;e.label=s;try{await async function(e,t){return await g.customRequest(e.filename,{method:"PROPPATCH",data:'<?xml version="1.0"?>\n\t\t\t\t\t<d:propertyupdate xmlns:d="DAV:"\n\t\t\t\t\t\txmlns:oc="http://owncloud.org/ns"\n\t\t\t\t\t\txmlns:nc="http://nextcloud.org/ns"\n\t\t\t\t\t\txmlns:ocs="http://open-collaboration-services.org/ns">\n\t\t\t\t\t<d:set>\n\t\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t\t<nc:version-label>'.concat(t,"</nc:version-label>\n\t\t\t\t\t\t</d:prop>\n\t\t\t\t\t</d:set>\n\t\t\t\t\t</d:propertyupdate>")})}(e,s)}catch(s){e.label=n,(0,l.x2)(t("files_versions","Could not set version name"))}},async handleDelete(e){const s=this.versions.indexOf(e);this.versions.splice(s,1);try{await async function(e){await g.deleteFile(e.filename)}(e)}catch(s){this.versions.push(e),(0,l.x2)(t("files_versions","Could not delete version"))}},resetState(){this.$set(this,"versions",[])},openVersion(e){let{version:t}=e;if(t.mtime===this.fileInfo.mtime)return void OCA.Viewer.open({fileInfo:this.viewerFileInfo});const s=this.versions.map((e=>{var t,s;return{...e,filename:e.mtime===this.fileInfo.mtime?a().join("files",null!==(t=null===(s=(0,u.ts)())||void 0===s?void 0:s.uid)&&void 0!==t?t:"",this.fileInfo.path,this.fileInfo.name):e.filename,hasPreview:!1,previewUrl:void 0}}));OCA.Viewer.open({fileInfo:s.find((e=>e.source===t.source)),enableSidebar:!1})},compareVersion(e){let{version:t}=e;const s=this.versions.map((e=>({...e,hasPreview:!1,previewUrl:void 0})));OCA.Viewer.compare(this.viewerFileInfo,s.find((e=>e.source===t.source)))}}},H=(0,W.Z)(G,(function(){var e=this,t=e._self._c;return t("ul",{attrs:{"data-files-versions-versions-list":""}},e._l(e.orderedVersions,(function(s){return t("Version",{key:s.mtime,attrs:{"can-view":e.canView,"can-compare":e.canCompare,"load-preview":e.isActive,version:s,"file-info":e.fileInfo,"is-current":s.mtime===e.fileInfo.mtime,"is-first-version":s.mtime===e.initialVersionMtime},on:{click:e.openVersion,compare:e.compareVersion,restore:e.handleRestore,"label-update":e.handleLabelUpdate,delete:e.handleDelete}})})),1)}),[],!1,null,null,null).exports;var Q=n(2324),J=n(27608);i.default.prototype.t=o.Iu,i.default.prototype.n=o.uN,i.default.use(Q.default);const X=i.default.extend(H);let K=null;window.addEventListener("DOMContentLoaded",(function(){var e;void 0!==(null===(e=OCA.Files)||void 0===e?void 0:e.Sidebar)&&OCA.Files.Sidebar.registerTab(new OCA.Files.Sidebar.Tab({id:"version_vue",name:(0,o.Iu)("files_versions","Versions"),iconSvg:J,async mount(e,t,s){K&&K.$destroy(),K=new X({parent:s}),await K.update(t),K.$mount(e)},update(e){K.update(e)},setIsActive(e){K.setIsActive(e)},destroy(){K.$destroy(),K=null},enabled(e){var t;return!(null===(t=null==e?void 0:e.isDirectory())||void 0===t||t)}}))}))},28176:(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});var n=s(87537),i=s.n(n),o=s(23645),r=s.n(o)()(i());r.push([e.id,".version[data-v-b584f27c]{display:flex;flex-direction:row}.version__info[data-v-b584f27c]{display:flex;flex-direction:row;align-items:center;gap:.5rem}.version__info__size[data-v-b584f27c]{color:var(--color-text-lighter)}.version__image[data-v-b584f27c]{width:3rem;height:3rem;border:1px solid var(--color-border);border-radius:var(--border-radius-large);display:flex;justify-content:center;color:var(--color-text-light)}.version-label-modal[data-v-b584f27c]{display:flex;justify-content:space-between;flex-direction:column;height:250px;padding:16px}.version-label-modal__title[data-v-b584f27c]{margin-bottom:12px;font-weight:600}.version-label-modal__info[data-v-b584f27c]{margin-top:12px;color:var(--color-text-maxcontrast)}.version-label-modal__actions[data-v-b584f27c]{display:flex;justify-content:space-between;margin-top:64px}","",{version:3,sources:["webpack://./apps/files_versions/src/components/Version.vue"],names:[],mappings:"AACA,0BACC,YAAA,CACA,kBAAA,CAEA,gCACC,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,SAAA,CAEA,sCACC,+BAAA,CAIF,iCACC,UAAA,CACA,WAAA,CACA,oCAAA,CACA,wCAAA,CAGA,YAAA,CACA,sBAAA,CACA,6BAAA,CAIF,sCACC,YAAA,CACA,6BAAA,CACA,qBAAA,CACA,YAAA,CACA,YAAA,CAEA,6CACC,kBAAA,CACA,eAAA,CAGD,4CACC,eAAA,CACA,mCAAA,CAGD,+CACC,YAAA,CACA,6BAAA,CACA,eAAA",sourcesContent:["\n.version {\n\tdisplay: flex;\n\tflex-direction: row;\n\n\t&__info {\n\t\tdisplay: flex;\n\t\tflex-direction: row;\n\t\talign-items: center;\n\t\tgap: 0.5rem;\n\n\t\t&__size {\n\t\t\tcolor: var(--color-text-lighter);\n\t\t}\n\t}\n\n\t&__image {\n\t\twidth: 3rem;\n\t\theight: 3rem;\n\t\tborder: 1px solid var(--color-border);\n\t\tborder-radius: var(--border-radius-large);\n\n\t\t// Useful to display no preview icon.\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tcolor: var(--color-text-light);\n\t}\n}\n\n.version-label-modal {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\tflex-direction: column;\n\theight: 250px;\n\tpadding: 16px;\n\n\t&__title {\n\t\tmargin-bottom: 12px;\n\t\tfont-weight: 600;\n\t}\n\n\t&__info {\n\t\tmargin-top: 12px;\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t&__actions {\n\t\tdisplay: flex;\n\t\tjustify-content: space-between;\n\t\tmargin-top: 64px;\n\t}\n}\n"],sourceRoot:""}]);const a=r},46700:(e,t,s)=>{var n={"./af":42786,"./af.js":42786,"./ar":30867,"./ar-dz":14130,"./ar-dz.js":14130,"./ar-kw":96135,"./ar-kw.js":96135,"./ar-ly":56440,"./ar-ly.js":56440,"./ar-ma":47702,"./ar-ma.js":47702,"./ar-sa":16040,"./ar-sa.js":16040,"./ar-tn":37100,"./ar-tn.js":37100,"./ar.js":30867,"./az":31083,"./az.js":31083,"./be":9808,"./be.js":9808,"./bg":68338,"./bg.js":68338,"./bm":67438,"./bm.js":67438,"./bn":8905,"./bn-bd":76225,"./bn-bd.js":76225,"./bn.js":8905,"./bo":11560,"./bo.js":11560,"./br":1278,"./br.js":1278,"./bs":80622,"./bs.js":80622,"./ca":2468,"./ca.js":2468,"./cs":5822,"./cs.js":5822,"./cv":50877,"./cv.js":50877,"./cy":47373,"./cy.js":47373,"./da":24780,"./da.js":24780,"./de":59740,"./de-at":60217,"./de-at.js":60217,"./de-ch":60894,"./de-ch.js":60894,"./de.js":59740,"./dv":5300,"./dv.js":5300,"./el":50837,"./el.js":50837,"./en-au":78348,"./en-au.js":78348,"./en-ca":77925,"./en-ca.js":77925,"./en-gb":22243,"./en-gb.js":22243,"./en-ie":46436,"./en-ie.js":46436,"./en-il":47207,"./en-il.js":47207,"./en-in":44175,"./en-in.js":44175,"./en-nz":76319,"./en-nz.js":76319,"./en-sg":31662,"./en-sg.js":31662,"./eo":92915,"./eo.js":92915,"./es":55655,"./es-do":55251,"./es-do.js":55251,"./es-mx":96112,"./es-mx.js":96112,"./es-us":71146,"./es-us.js":71146,"./es.js":55655,"./et":5603,"./et.js":5603,"./eu":77763,"./eu.js":77763,"./fa":76959,"./fa.js":76959,"./fi":11897,"./fi.js":11897,"./fil":42549,"./fil.js":42549,"./fo":94694,"./fo.js":94694,"./fr":94470,"./fr-ca":63049,"./fr-ca.js":63049,"./fr-ch":52330,"./fr-ch.js":52330,"./fr.js":94470,"./fy":5044,"./fy.js":5044,"./ga":29295,"./ga.js":29295,"./gd":2101,"./gd.js":2101,"./gl":38794,"./gl.js":38794,"./gom-deva":27884,"./gom-deva.js":27884,"./gom-latn":23168,"./gom-latn.js":23168,"./gu":95349,"./gu.js":95349,"./he":24206,"./he.js":24206,"./hi":30094,"./hi.js":30094,"./hr":30316,"./hr.js":30316,"./hu":22138,"./hu.js":22138,"./hy-am":11423,"./hy-am.js":11423,"./id":29218,"./id.js":29218,"./is":90135,"./is.js":90135,"./it":90626,"./it-ch":10150,"./it-ch.js":10150,"./it.js":90626,"./ja":39183,"./ja.js":39183,"./jv":24286,"./jv.js":24286,"./ka":12105,"./ka.js":12105,"./kk":47772,"./kk.js":47772,"./km":18758,"./km.js":18758,"./kn":79282,"./kn.js":79282,"./ko":33730,"./ko.js":33730,"./ku":1408,"./ku.js":1408,"./ky":33291,"./ky.js":33291,"./lb":36841,"./lb.js":36841,"./lo":55466,"./lo.js":55466,"./lt":57010,"./lt.js":57010,"./lv":37595,"./lv.js":37595,"./me":39861,"./me.js":39861,"./mi":35493,"./mi.js":35493,"./mk":95966,"./mk.js":95966,"./ml":87341,"./ml.js":87341,"./mn":5115,"./mn.js":5115,"./mr":10370,"./mr.js":10370,"./ms":9847,"./ms-my":41237,"./ms-my.js":41237,"./ms.js":9847,"./mt":72126,"./mt.js":72126,"./my":56165,"./my.js":56165,"./nb":64924,"./nb.js":64924,"./ne":16744,"./ne.js":16744,"./nl":93901,"./nl-be":59814,"./nl-be.js":59814,"./nl.js":93901,"./nn":83877,"./nn.js":83877,"./oc-lnc":92135,"./oc-lnc.js":92135,"./pa-in":15858,"./pa-in.js":15858,"./pl":64495,"./pl.js":64495,"./pt":89520,"./pt-br":57971,"./pt-br.js":57971,"./pt.js":89520,"./ro":96459,"./ro.js":96459,"./ru":21793,"./ru.js":21793,"./sd":40950,"./sd.js":40950,"./se":10490,"./se.js":10490,"./si":90124,"./si.js":90124,"./sk":64249,"./sk.js":64249,"./sl":14985,"./sl.js":14985,"./sq":51104,"./sq.js":51104,"./sr":49131,"./sr-cyrl":79915,"./sr-cyrl.js":79915,"./sr.js":49131,"./ss":85893,"./ss.js":85893,"./sv":98760,"./sv.js":98760,"./sw":91172,"./sw.js":91172,"./ta":27333,"./ta.js":27333,"./te":23110,"./te.js":23110,"./tet":52095,"./tet.js":52095,"./tg":27321,"./tg.js":27321,"./th":9041,"./th.js":9041,"./tk":19005,"./tk.js":19005,"./tl-ph":75768,"./tl-ph.js":75768,"./tlh":89444,"./tlh.js":89444,"./tr":72397,"./tr.js":72397,"./tzl":28254,"./tzl.js":28254,"./tzm":51106,"./tzm-latn":30699,"./tzm-latn.js":30699,"./tzm.js":51106,"./ug-cn":9288,"./ug-cn.js":9288,"./uk":67691,"./uk.js":67691,"./ur":13795,"./ur.js":13795,"./uz":6791,"./uz-latn":60588,"./uz-latn.js":60588,"./uz.js":6791,"./vi":65666,"./vi.js":65666,"./x-pseudo":14378,"./x-pseudo.js":14378,"./yo":75805,"./yo.js":75805,"./zh-cn":83839,"./zh-cn.js":83839,"./zh-hk":55726,"./zh-hk.js":55726,"./zh-mo":99807,"./zh-mo.js":99807,"./zh-tw":74152,"./zh-tw.js":74152};function i(e){var t=o(e);return s(t)}function o(e){if(!s.o(n,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return n[e]}i.keys=function(){return Object.keys(n)},i.resolve=o,e.exports=i,i.id=46700}},o={};function r(e){var t=o[e];if(void 0!==t)return t.exports;var s=o[e]={id:e,loaded:!1,exports:{}};return i[e].call(s.exports,s,s.exports,r),s.loaded=!0,s.exports}r.m=i,e=[],r.O=(t,s,n,i)=>{if(!s){var o=1/0;for(d=0;d<e.length;d++){s=e[d][0],n=e[d][1],i=e[d][2];for(var a=!0,l=0;l<s.length;l++)(!1&i||o>=i)&&Object.keys(r.O).every((e=>r.O[e](s[l])))?s.splice(l--,1):(a=!1,i<o&&(o=i));if(a){e.splice(d--,1);var c=n();void 0!==c&&(t=c)}}return t}i=i||0;for(var d=e.length;d>0&&e[d-1][2]>i;d--)e[d]=e[d-1];e[d]=[s,n,i]},r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var s in t)r.o(t,s)&&!r.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((t,s)=>(r.f[s](e,t),t)),[])),r.u=e=>e+"-"+e+".js?v=00434e4baa0d8e7b79f1",r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),s={},n="nextcloud:",r.l=(e,t,i,o)=>{if(s[e])s[e].push(t);else{var a,l;if(void 0!==i)for(var c=document.getElementsByTagName("script"),d=0;d<c.length;d++){var f=c[d];if(f.getAttribute("src")==e||f.getAttribute("data-webpack")==n+i){a=f;break}}a||(l=!0,(a=document.createElement("script")).charset="utf-8",a.timeout=120,r.nc&&a.setAttribute("nonce",r.nc),a.setAttribute("data-webpack",n+i),a.src=e),s[e]=[t];var u=(t,n)=>{a.onerror=a.onload=null,clearTimeout(v);var i=s[e];if(delete s[e],a.parentNode&&a.parentNode.removeChild(a),i&&i.forEach((e=>e(n))),t)return t(n)},v=setTimeout(u.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=u.bind(null,a.onerror),a.onload=u.bind(null,a.onload),l&&document.head.appendChild(a)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),r.j=1358,(()=>{var e;r.g.importScripts&&(e=r.g.location+"");var t=r.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var s=t.getElementsByTagName("script");s.length&&(e=s[s.length-1].src)}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),r.p=e})(),(()=>{r.b=document.baseURI||self.location.href;var e={1358:0};r.f.j=(t,s)=>{var n=r.o(e,t)?e[t]:void 0;if(0!==n)if(n)s.push(n[2]);else{var i=new Promise(((s,i)=>n=e[t]=[s,i]));s.push(n[2]=i);var o=r.p+r.u(t),a=new Error;r.l(o,(s=>{if(r.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var i=s&&("load"===s.type?"missing":s.type),o=s&&s.target&&s.target.src;a.message="Loading chunk "+t+" failed.\n("+i+": "+o+")",a.name="ChunkLoadError",a.type=i,a.request=o,n[1](a)}}),"chunk-"+t,t)}},r.O.j=t=>0===e[t];var t=(t,s)=>{var n,i,o=s[0],a=s[1],l=s[2],c=0;if(o.some((t=>0!==e[t]))){for(n in a)r.o(a,n)&&(r.m[n]=a[n]);if(l)var d=l(r)}for(t&&t(s);c<o.length;c++)i=o[c],r.o(e,i)&&e[i]&&e[i][0](),e[i]=0;return r.O(d)},s=self.webpackChunknextcloud=self.webpackChunknextcloud||[];s.forEach(t.bind(null,0)),s.push=t.bind(null,s.push.bind(s))})(),r.nc=void 0;var a=r.O(void 0,[7874],(()=>r(79290)));a=r.O(a)})();
-//# sourceMappingURL=files_versions-files_versions.js.map?v=d89ccb19c0219bbc7492 \ No newline at end of file
+(()=>{var e,s,n,i={56875:(e,s,n)=>{"use strict";var i=n(20144),o=n(31352),r=n(62520),a=n.n(r),l=n(64024),c=n(3344),d=n.n(c),f=n(69183),u=n(77958),v=n(65358),m=n(79753),p=n(80351),h=n.n(p);const b=function(e){const t=(e.startsWith("/")?e:"/".concat(e)).split("/");let s="";return t.forEach((e=>{""!==e&&(s+="/"+encodeURIComponent(e))})),s};var A,j=n(14596);const _=(0,m.generateRemoteUrl)("dav"),g=(0,j.eI)(_,{headers:{"X-Requested-With":"XMLHttpRequest",requesttoken:null!==(A=(0,u.IH)())&&void 0!==A?A:""}}),y=(0,n(17499).IY)().setApp("files_version").detectUser().build();var C=n(88722),w=n(41293),x=n(15743),k=n(73229),V=n(80419),I=n(57612),L=n(24860),z=n(15961),O=n(79954);const N={name:"Version",components:{NcActionLink:z.ih,NcActionButton:z.Js,NcListItem:z.hx,NcModal:z.Jc,NcButton:z.P2,NcTextField:z.h3,BackupRestore:C.Z,Download:w.Z,FileCompare:x.Z,Pencil:k.default,Check:V.default,Delete:I.Z,ImageOffOutline:L.Z},directives:{tooltip:z.u},filters:{humanReadableSize:e=>OC.Util.humanFileSize(e),humanDateFromNow:e=>h()(e).fromNow()},props:{version:{type:Object,required:!0},fileInfo:{type:Object,required:!0},isCurrent:{type:Boolean,default:!1},isFirstVersion:{type:Boolean,default:!1},loadPreview:{type:Boolean,default:!1},canView:{type:Boolean,default:!1},canCompare:{type:Boolean,default:!1}},data(){return{previewLoaded:!1,showVersionLabelForm:!1,formVersionLabelValue:this.version.label,capabilities:(0,O.j)("core","capabilities",{files:{version_labeling:!1,version_deletion:!1}})}},computed:{versionLabel(){var e;const t=null!==(e=this.version.label)&&void 0!==e?e:"";return this.isCurrent?""===t?(0,o.Iu)("files_versions","Current version"):"".concat(t," (").concat((0,o.Iu)("files_versions","Current version"),")"):this.isFirstVersion&&""===t?(0,o.Iu)("files_versions","Initial version"):t},downloadURL(){return this.isCurrent?(0,m.getRootUrl)()+(0,v.RQ)("/remote.php/webdav",this.fileInfo.path,this.fileInfo.name):(0,m.getRootUrl)()+this.version.url},formattedDate(){return h()(this.version.mtime).format("LLL")},enableLabeling(){return!0===this.capabilities.files.version_labeling},enableDeletion(){return!0===this.capabilities.files.version_deletion}},methods:{openVersionLabelModal(){this.showVersionLabelForm=!0,this.$nextTick((()=>{this.$refs.labelInput.$el.getElementsByTagName("input")[0].focus()}))},restoreVersion(){this.$emit("restore",this.version)},setVersionLabel(e){this.formVersionLabelValue=e,this.showVersionLabelForm=!1,this.$emit("label-update",this.version,e)},deleteVersion(){this.$emit("delete",this.version)},click(){this.canView?this.$emit("click",{version:this.version}):window.location=this.downloadURL},compareVersion(){if(!this.canView)throw new Error("Cannot compare version of this file");this.$emit("compare",{version:this.version})}}};var B=n(93379),R=n.n(B),S=n(7795),D=n.n(S),F=n(90569),U=n.n(F),E=n(3565),P=n.n(E),T=n(19216),$=n.n(T),M=n(44589),q=n.n(M),Z=n(90725),Y={};Y.styleTagTransform=q(),Y.setAttributes=P(),Y.insert=U().bind(null,"head"),Y.domAPI=D(),Y.insertStyleElement=$(),R()(Z.Z,Y),Z.Z&&Z.Z.locals&&Z.Z.locals;var W=n(51900);const G={name:"VersionTab",components:{Version:(0,W.Z)(N,(function(){var e=this,t=e._self._c;return t("div",[t("NcListItem",{staticClass:"version",attrs:{title:e.versionLabel,"force-display-actions":!0,"data-files-versions-version":""},on:{click:e.click},scopedSlots:e._u([{key:"icon",fn:function(){return[e.loadPreview||e.previewLoaded?e.isCurrent||e.version.hasPreview?t("img",{staticClass:"version__image",attrs:{src:e.version.previewUrl,alt:"",decoding:"async",fetchpriority:"low",loading:"lazy"},on:{load:function(t){e.previewLoaded=!0}}}):t("div",{staticClass:"version__image"},[t("ImageOffOutline",{attrs:{size:20}})],1):t("div",{staticClass:"version__image"})]},proxy:!0},{key:"subtitle",fn:function(){return[t("div",{staticClass:"version__info"},[t("span",{attrs:{title:e.formattedDate}},[e._v(e._s(e._f("humanDateFromNow")(e.version.mtime)))]),e._v(" "),t("span",{staticClass:"version__info__size"},[e._v("•")]),e._v(" "),t("span",{staticClass:"version__info__size"},[e._v(e._s(e._f("humanReadableSize")(e.version.size)))])])]},proxy:!0},{key:"actions",fn:function(){return[e.enableLabeling?t("NcActionButton",{attrs:{"close-after-click":!0},on:{click:e.openVersionLabelModal},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Pencil",{attrs:{size:22}})]},proxy:!0}],null,!1,3072546167)},[e._v("\n\t\t\t\t"+e._s(""===e.version.label?e.t("files_versions","Name this version"):e.t("files_versions","Edit version name"))+"\n\t\t\t")]):e._e(),e._v(" "),!e.isCurrent&&e.canView&&e.canCompare?t("NcActionButton",{attrs:{"close-after-click":!0},on:{click:e.compareVersion},scopedSlots:e._u([{key:"icon",fn:function(){return[t("FileCompare",{attrs:{size:22}})]},proxy:!0}],null,!1,1958207595)},[e._v("\n\t\t\t\t"+e._s(e.t("files_versions","Compare to current version"))+"\n\t\t\t")]):e._e(),e._v(" "),e.isCurrent?e._e():t("NcActionButton",{attrs:{"close-after-click":!0},on:{click:e.restoreVersion},scopedSlots:e._u([{key:"icon",fn:function(){return[t("BackupRestore",{attrs:{size:22}})]},proxy:!0}],null,!1,2239038444)},[e._v("\n\t\t\t\t"+e._s(e.t("files_versions","Restore version"))+"\n\t\t\t")]),e._v(" "),t("NcActionLink",{attrs:{href:e.downloadURL,"close-after-click":!0,download:e.downloadURL},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Download",{attrs:{size:22}})]},proxy:!0}])},[e._v("\n\t\t\t\t"+e._s(e.t("files_versions","Download version"))+"\n\t\t\t")]),e._v(" "),!e.isCurrent&&e.enableDeletion?t("NcActionButton",{attrs:{"close-after-click":!0},on:{click:e.deleteVersion},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Delete",{attrs:{size:22}})]},proxy:!0}],null,!1,2429175571)},[e._v("\n\t\t\t\t"+e._s(e.t("files_versions","Delete version"))+"\n\t\t\t")]):e._e()]},proxy:!0}])}),e._v(" "),e.showVersionLabelForm?t("NcModal",{attrs:{title:e.t("files_versions","Name this version")},on:{close:function(t){e.showVersionLabelForm=!1}}},[t("form",{staticClass:"version-label-modal",on:{submit:function(t){return t.preventDefault(),e.setVersionLabel(e.formVersionLabelValue)}}},[t("label",[t("div",{staticClass:"version-label-modal__title"},[e._v(e._s(e.t("files_versions","Version name")))]),e._v(" "),t("NcTextField",{ref:"labelInput",attrs:{value:e.formVersionLabelValue,placeholder:e.t("files_versions","Version name"),"label-outside":!0},on:{"update:value":function(t){e.formVersionLabelValue=t}}})],1),e._v(" "),t("div",{staticClass:"version-label-modal__info"},[e._v("\n\t\t\t\t"+e._s(e.t("files_versions","Named versions are persisted, and excluded from automatic cleanups when your storage quota is full."))+"\n\t\t\t")]),e._v(" "),t("div",{staticClass:"version-label-modal__actions"},[t("NcButton",{attrs:{disabled:0===e.formVersionLabelValue.trim().length},on:{click:function(t){return e.setVersionLabel("")}}},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_versions","Remove version name"))+"\n\t\t\t\t")]),e._v(" "),t("NcButton",{attrs:{type:"primary","native-type":"submit"},scopedSlots:e._u([{key:"icon",fn:function(){return[t("Check")]},proxy:!0}],null,!1,2308323205)},[e._v("\n\t\t\t\t\t"+e._s(e.t("files_versions","Save version name"))+"\n\t\t\t\t")])],1)])]):e._e()],1)}),[],!1,null,"b2ebd230",null).exports},mixins:[d()],data:()=>({fileInfo:null,isActive:!1,versions:[],loading:!1}),computed:{orderedVersions(){return[...this.versions].sort(((e,t)=>e.mtime===this.fileInfo.mtime?-1:t.mtime===this.fileInfo.mtime?1:t.mtime-e.mtime))},initialVersionMtime(){return this.versions.map((e=>e.mtime)).reduce(((e,t)=>Math.min(e,t)))},viewerFileInfo(){let e="";return 1&this.fileInfo.permissions&&(e+="R"),2&this.fileInfo.permissions&&(e+="W"),8&this.fileInfo.permissions&&(e+="D"),{...this.fileInfo,mime:this.fileInfo.mimetype,basename:this.fileInfo.name,filename:this.fileInfo.path+"/"+this.fileInfo.name,permissions:e,fileid:this.fileInfo.id}},canView(){var e,t;return null===(e=window.OCA.Viewer)||void 0===e||null===(t=e.mimetypesCompare)||void 0===t?void 0:t.includes(this.fileInfo.mimetype)},canCompare(){return!this.isMobile}},mounted(){(0,f.Ld)("files_versions:restore:restored",this.fetchVersions)},beforeUnmount(){(0,f.r1)("files_versions:restore:restored",this.fetchVersions)},methods:{async update(e){this.fileInfo=e,this.resetState(),this.fetchVersions()},async setIsActive(e){this.isActive=e},async fetchVersions(){try{this.loading=!0,this.versions=await async function(e){var t;const s="/versions/".concat(null===(t=(0,u.ts)())||void 0===t?void 0:t.uid,"/versions/").concat(e.id);try{return(await g.getDirectoryContents(s,{data:'<?xml version="1.0"?>\n<d:propfind xmlns:d="DAV:"\n\txmlns:oc="http://owncloud.org/ns"\n\txmlns:nc="http://nextcloud.org/ns"\n\txmlns:ocs="http://open-collaboration-services.org/ns">\n\t<d:prop>\n\t\t<d:getcontentlength />\n\t\t<d:getcontenttype />\n\t\t<d:getlastmodified />\n\t\t<d:getetag />\n\t\t<nc:version-label />\n\t\t<nc:has-preview />\n\t</d:prop>\n</d:propfind>',details:!0})).data.filter((e=>{let{mime:t}=e;return""!==t})).map((t=>function(e,t){const s=1e3*h()(e.lastmod).unix();let n="";return n=s===t.mtime?(0,m.generateUrl)("/core/preview?fileId={fileId}&c={fileEtag}&x=250&y=250&forceIcon=0&a=0",{fileId:t.id,fileEtag:t.etag}):(0,m.generateUrl)("/apps/files_versions/preview?file={file}&version={fileVersion}",{file:(0,v.RQ)(t.path,t.name),fileVersion:e.basename}),{fileId:t.id,label:e.props["version-label"],filename:e.filename,basename:h()(s).format("LLL"),mime:e.mime,etag:"".concat(e.props.getetag),size:e.size,type:e.type,mtime:s,permissions:"R",hasPreview:1===e.props["has-preview"],previewUrl:n,url:(0,v.RQ)("/remote.php/dav",e.filename),source:(0,m.generateRemoteUrl)("dav")+b(e.filename),fileVersion:e.basename}}(t,e)))}catch(e){throw y.error("Could not fetch version",{exception:e}),e}}(this.fileInfo)}finally{this.loading=!1}},async handleRestore(e){const s=this.fileInfo;this.fileInfo={...this.fileInfo,size:e.size,mtime:e.mtime};const n={preventDefault:!1,fileInfo:this.fileInfo,version:e};if((0,f.j8)("files_versions:restore:requested",n),!n.preventDefault)try{await async function(e){try{var t,s;y.debug("Restoring version",{url:e.url}),await g.moveFile("/versions/".concat(null===(t=(0,u.ts)())||void 0===t?void 0:t.uid,"/versions/").concat(e.fileId,"/").concat(e.fileVersion),"/versions/".concat(null===(s=(0,u.ts)())||void 0===s?void 0:s.uid,"/restore/target"))}catch(e){throw y.error("Could not restore version",{exception:e}),e}}(e),""!==e.label?(0,l.s$)(t("files_versions","".concat(e.label," restored"))):e.mtime===this.initialVersionMtime?(0,l.s$)(t("files_versions","Initial version restored")):(0,l.s$)(t("files_versions","Version restored")),(0,f.j8)("files_versions:restore:restored",e)}catch(n){this.fileInfo=s,(0,l.x2)(t("files_versions","Could not restore version")),(0,f.j8)("files_versions:restore:failed",e)}},async handleLabelUpdate(e,s){const n=e.label;e.label=s;try{await async function(e,t){return await g.customRequest(e.filename,{method:"PROPPATCH",data:'<?xml version="1.0"?>\n\t\t\t\t\t<d:propertyupdate xmlns:d="DAV:"\n\t\t\t\t\t\txmlns:oc="http://owncloud.org/ns"\n\t\t\t\t\t\txmlns:nc="http://nextcloud.org/ns"\n\t\t\t\t\t\txmlns:ocs="http://open-collaboration-services.org/ns">\n\t\t\t\t\t<d:set>\n\t\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t\t<nc:version-label>'.concat(t,"</nc:version-label>\n\t\t\t\t\t\t</d:prop>\n\t\t\t\t\t</d:set>\n\t\t\t\t\t</d:propertyupdate>")})}(e,s)}catch(s){e.label=n,(0,l.x2)(t("files_versions","Could not set version name"))}},async handleDelete(e){const s=this.versions.indexOf(e);this.versions.splice(s,1);try{await async function(e){await g.deleteFile(e.filename)}(e)}catch(s){this.versions.push(e),(0,l.x2)(t("files_versions","Could not delete version"))}},resetState(){this.$set(this,"versions",[])},openVersion(e){let{version:t}=e;if(t.mtime===this.fileInfo.mtime)return void OCA.Viewer.open({fileInfo:this.viewerFileInfo});const s=this.versions.map((e=>{var t,s;return{...e,filename:e.mtime===this.fileInfo.mtime?a().join("files",null!==(t=null===(s=(0,u.ts)())||void 0===s?void 0:s.uid)&&void 0!==t?t:"",this.fileInfo.path,this.fileInfo.name):e.filename,hasPreview:!1,previewUrl:void 0}}));OCA.Viewer.open({fileInfo:s.find((e=>e.source===t.source)),enableSidebar:!1})},compareVersion(e){let{version:t}=e;const s=this.versions.map((e=>({...e,hasPreview:!1,previewUrl:void 0})));OCA.Viewer.compare(this.viewerFileInfo,s.find((e=>e.source===t.source)))}}},H=(0,W.Z)(G,(function(){var e=this,t=e._self._c;return t("ul",{attrs:{"data-files-versions-versions-list":""}},e._l(e.orderedVersions,(function(s){return t("Version",{key:s.mtime,attrs:{"can-view":e.canView,"can-compare":e.canCompare,"load-preview":e.isActive,version:s,"file-info":e.fileInfo,"is-current":s.mtime===e.fileInfo.mtime,"is-first-version":s.mtime===e.initialVersionMtime},on:{click:e.openVersion,compare:e.compareVersion,restore:e.handleRestore,"label-update":e.handleLabelUpdate,delete:e.handleDelete}})})),1)}),[],!1,null,null,null).exports;var Q=n(2324),J=n(27608);i.default.prototype.t=o.Iu,i.default.prototype.n=o.uN,i.default.use(Q.default);const X=i.default.extend(H);let K=null;window.addEventListener("DOMContentLoaded",(function(){var e;void 0!==(null===(e=OCA.Files)||void 0===e?void 0:e.Sidebar)&&OCA.Files.Sidebar.registerTab(new OCA.Files.Sidebar.Tab({id:"version_vue",name:(0,o.Iu)("files_versions","Versions"),iconSvg:J,async mount(e,t,s){K&&K.$destroy(),K=new X({parent:s}),await K.update(t),K.$mount(e)},update(e){K.update(e)},setIsActive(e){K.setIsActive(e)},destroy(){K.$destroy(),K=null},enabled(e){var t;return!(null===(t=null==e?void 0:e.isDirectory())||void 0===t||t)}}))}))},90725:(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});var n=s(87537),i=s.n(n),o=s(23645),r=s.n(o)()(i());r.push([e.id,".version[data-v-b2ebd230]{display:flex;flex-direction:row}.version__info[data-v-b2ebd230]{display:flex;flex-direction:row;align-items:center;gap:.5rem}.version__info__size[data-v-b2ebd230]{color:var(--color-text-lighter)}.version__image[data-v-b2ebd230]{width:3rem;height:3rem;border:1px solid var(--color-border);border-radius:var(--border-radius-large);display:flex;justify-content:center;color:var(--color-text-light)}.version-label-modal[data-v-b2ebd230]{display:flex;justify-content:space-between;flex-direction:column;height:250px;padding:16px}.version-label-modal__title[data-v-b2ebd230]{margin-bottom:12px;font-weight:600}.version-label-modal__info[data-v-b2ebd230]{margin-top:12px;color:var(--color-text-maxcontrast)}.version-label-modal__actions[data-v-b2ebd230]{display:flex;justify-content:space-between;margin-top:64px}","",{version:3,sources:["webpack://./apps/files_versions/src/components/Version.vue"],names:[],mappings:"AACA,0BACC,YAAA,CACA,kBAAA,CAEA,gCACC,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,SAAA,CAEA,sCACC,+BAAA,CAIF,iCACC,UAAA,CACA,WAAA,CACA,oCAAA,CACA,wCAAA,CAGA,YAAA,CACA,sBAAA,CACA,6BAAA,CAIF,sCACC,YAAA,CACA,6BAAA,CACA,qBAAA,CACA,YAAA,CACA,YAAA,CAEA,6CACC,kBAAA,CACA,eAAA,CAGD,4CACC,eAAA,CACA,mCAAA,CAGD,+CACC,YAAA,CACA,6BAAA,CACA,eAAA",sourcesContent:["\n.version {\n\tdisplay: flex;\n\tflex-direction: row;\n\n\t&__info {\n\t\tdisplay: flex;\n\t\tflex-direction: row;\n\t\talign-items: center;\n\t\tgap: 0.5rem;\n\n\t\t&__size {\n\t\t\tcolor: var(--color-text-lighter);\n\t\t}\n\t}\n\n\t&__image {\n\t\twidth: 3rem;\n\t\theight: 3rem;\n\t\tborder: 1px solid var(--color-border);\n\t\tborder-radius: var(--border-radius-large);\n\n\t\t// Useful to display no preview icon.\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tcolor: var(--color-text-light);\n\t}\n}\n\n.version-label-modal {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\tflex-direction: column;\n\theight: 250px;\n\tpadding: 16px;\n\n\t&__title {\n\t\tmargin-bottom: 12px;\n\t\tfont-weight: 600;\n\t}\n\n\t&__info {\n\t\tmargin-top: 12px;\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t&__actions {\n\t\tdisplay: flex;\n\t\tjustify-content: space-between;\n\t\tmargin-top: 64px;\n\t}\n}\n"],sourceRoot:""}]);const a=r},46700:(e,t,s)=>{var n={"./af":42786,"./af.js":42786,"./ar":30867,"./ar-dz":14130,"./ar-dz.js":14130,"./ar-kw":96135,"./ar-kw.js":96135,"./ar-ly":56440,"./ar-ly.js":56440,"./ar-ma":47702,"./ar-ma.js":47702,"./ar-sa":16040,"./ar-sa.js":16040,"./ar-tn":37100,"./ar-tn.js":37100,"./ar.js":30867,"./az":31083,"./az.js":31083,"./be":9808,"./be.js":9808,"./bg":68338,"./bg.js":68338,"./bm":67438,"./bm.js":67438,"./bn":8905,"./bn-bd":76225,"./bn-bd.js":76225,"./bn.js":8905,"./bo":11560,"./bo.js":11560,"./br":1278,"./br.js":1278,"./bs":80622,"./bs.js":80622,"./ca":2468,"./ca.js":2468,"./cs":5822,"./cs.js":5822,"./cv":50877,"./cv.js":50877,"./cy":47373,"./cy.js":47373,"./da":24780,"./da.js":24780,"./de":59740,"./de-at":60217,"./de-at.js":60217,"./de-ch":60894,"./de-ch.js":60894,"./de.js":59740,"./dv":5300,"./dv.js":5300,"./el":50837,"./el.js":50837,"./en-au":78348,"./en-au.js":78348,"./en-ca":77925,"./en-ca.js":77925,"./en-gb":22243,"./en-gb.js":22243,"./en-ie":46436,"./en-ie.js":46436,"./en-il":47207,"./en-il.js":47207,"./en-in":44175,"./en-in.js":44175,"./en-nz":76319,"./en-nz.js":76319,"./en-sg":31662,"./en-sg.js":31662,"./eo":92915,"./eo.js":92915,"./es":55655,"./es-do":55251,"./es-do.js":55251,"./es-mx":96112,"./es-mx.js":96112,"./es-us":71146,"./es-us.js":71146,"./es.js":55655,"./et":5603,"./et.js":5603,"./eu":77763,"./eu.js":77763,"./fa":76959,"./fa.js":76959,"./fi":11897,"./fi.js":11897,"./fil":42549,"./fil.js":42549,"./fo":94694,"./fo.js":94694,"./fr":94470,"./fr-ca":63049,"./fr-ca.js":63049,"./fr-ch":52330,"./fr-ch.js":52330,"./fr.js":94470,"./fy":5044,"./fy.js":5044,"./ga":29295,"./ga.js":29295,"./gd":2101,"./gd.js":2101,"./gl":38794,"./gl.js":38794,"./gom-deva":27884,"./gom-deva.js":27884,"./gom-latn":23168,"./gom-latn.js":23168,"./gu":95349,"./gu.js":95349,"./he":24206,"./he.js":24206,"./hi":30094,"./hi.js":30094,"./hr":30316,"./hr.js":30316,"./hu":22138,"./hu.js":22138,"./hy-am":11423,"./hy-am.js":11423,"./id":29218,"./id.js":29218,"./is":90135,"./is.js":90135,"./it":90626,"./it-ch":10150,"./it-ch.js":10150,"./it.js":90626,"./ja":39183,"./ja.js":39183,"./jv":24286,"./jv.js":24286,"./ka":12105,"./ka.js":12105,"./kk":47772,"./kk.js":47772,"./km":18758,"./km.js":18758,"./kn":79282,"./kn.js":79282,"./ko":33730,"./ko.js":33730,"./ku":1408,"./ku.js":1408,"./ky":33291,"./ky.js":33291,"./lb":36841,"./lb.js":36841,"./lo":55466,"./lo.js":55466,"./lt":57010,"./lt.js":57010,"./lv":37595,"./lv.js":37595,"./me":39861,"./me.js":39861,"./mi":35493,"./mi.js":35493,"./mk":95966,"./mk.js":95966,"./ml":87341,"./ml.js":87341,"./mn":5115,"./mn.js":5115,"./mr":10370,"./mr.js":10370,"./ms":9847,"./ms-my":41237,"./ms-my.js":41237,"./ms.js":9847,"./mt":72126,"./mt.js":72126,"./my":56165,"./my.js":56165,"./nb":64924,"./nb.js":64924,"./ne":16744,"./ne.js":16744,"./nl":93901,"./nl-be":59814,"./nl-be.js":59814,"./nl.js":93901,"./nn":83877,"./nn.js":83877,"./oc-lnc":92135,"./oc-lnc.js":92135,"./pa-in":15858,"./pa-in.js":15858,"./pl":64495,"./pl.js":64495,"./pt":89520,"./pt-br":57971,"./pt-br.js":57971,"./pt.js":89520,"./ro":96459,"./ro.js":96459,"./ru":21793,"./ru.js":21793,"./sd":40950,"./sd.js":40950,"./se":10490,"./se.js":10490,"./si":90124,"./si.js":90124,"./sk":64249,"./sk.js":64249,"./sl":14985,"./sl.js":14985,"./sq":51104,"./sq.js":51104,"./sr":49131,"./sr-cyrl":79915,"./sr-cyrl.js":79915,"./sr.js":49131,"./ss":85893,"./ss.js":85893,"./sv":98760,"./sv.js":98760,"./sw":91172,"./sw.js":91172,"./ta":27333,"./ta.js":27333,"./te":23110,"./te.js":23110,"./tet":52095,"./tet.js":52095,"./tg":27321,"./tg.js":27321,"./th":9041,"./th.js":9041,"./tk":19005,"./tk.js":19005,"./tl-ph":75768,"./tl-ph.js":75768,"./tlh":89444,"./tlh.js":89444,"./tr":72397,"./tr.js":72397,"./tzl":28254,"./tzl.js":28254,"./tzm":51106,"./tzm-latn":30699,"./tzm-latn.js":30699,"./tzm.js":51106,"./ug-cn":9288,"./ug-cn.js":9288,"./uk":67691,"./uk.js":67691,"./ur":13795,"./ur.js":13795,"./uz":6791,"./uz-latn":60588,"./uz-latn.js":60588,"./uz.js":6791,"./vi":65666,"./vi.js":65666,"./x-pseudo":14378,"./x-pseudo.js":14378,"./yo":75805,"./yo.js":75805,"./zh-cn":83839,"./zh-cn.js":83839,"./zh-hk":55726,"./zh-hk.js":55726,"./zh-mo":99807,"./zh-mo.js":99807,"./zh-tw":74152,"./zh-tw.js":74152};function i(e){var t=o(e);return s(t)}function o(e){if(!s.o(n,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return n[e]}i.keys=function(){return Object.keys(n)},i.resolve=o,e.exports=i,i.id=46700}},o={};function r(e){var t=o[e];if(void 0!==t)return t.exports;var s=o[e]={id:e,loaded:!1,exports:{}};return i[e].call(s.exports,s,s.exports,r),s.loaded=!0,s.exports}r.m=i,e=[],r.O=(t,s,n,i)=>{if(!s){var o=1/0;for(d=0;d<e.length;d++){s=e[d][0],n=e[d][1],i=e[d][2];for(var a=!0,l=0;l<s.length;l++)(!1&i||o>=i)&&Object.keys(r.O).every((e=>r.O[e](s[l])))?s.splice(l--,1):(a=!1,i<o&&(o=i));if(a){e.splice(d--,1);var c=n();void 0!==c&&(t=c)}}return t}i=i||0;for(var d=e.length;d>0&&e[d-1][2]>i;d--)e[d]=e[d-1];e[d]=[s,n,i]},r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var s in t)r.o(t,s)&&!r.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((t,s)=>(r.f[s](e,t),t)),[])),r.u=e=>e+"-"+e+".js?v=00434e4baa0d8e7b79f1",r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),s={},n="nextcloud:",r.l=(e,t,i,o)=>{if(s[e])s[e].push(t);else{var a,l;if(void 0!==i)for(var c=document.getElementsByTagName("script"),d=0;d<c.length;d++){var f=c[d];if(f.getAttribute("src")==e||f.getAttribute("data-webpack")==n+i){a=f;break}}a||(l=!0,(a=document.createElement("script")).charset="utf-8",a.timeout=120,r.nc&&a.setAttribute("nonce",r.nc),a.setAttribute("data-webpack",n+i),a.src=e),s[e]=[t];var u=(t,n)=>{a.onerror=a.onload=null,clearTimeout(v);var i=s[e];if(delete s[e],a.parentNode&&a.parentNode.removeChild(a),i&&i.forEach((e=>e(n))),t)return t(n)},v=setTimeout(u.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=u.bind(null,a.onerror),a.onload=u.bind(null,a.onload),l&&document.head.appendChild(a)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),r.j=1358,(()=>{var e;r.g.importScripts&&(e=r.g.location+"");var t=r.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var s=t.getElementsByTagName("script");s.length&&(e=s[s.length-1].src)}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),r.p=e})(),(()=>{r.b=document.baseURI||self.location.href;var e={1358:0};r.f.j=(t,s)=>{var n=r.o(e,t)?e[t]:void 0;if(0!==n)if(n)s.push(n[2]);else{var i=new Promise(((s,i)=>n=e[t]=[s,i]));s.push(n[2]=i);var o=r.p+r.u(t),a=new Error;r.l(o,(s=>{if(r.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var i=s&&("load"===s.type?"missing":s.type),o=s&&s.target&&s.target.src;a.message="Loading chunk "+t+" failed.\n("+i+": "+o+")",a.name="ChunkLoadError",a.type=i,a.request=o,n[1](a)}}),"chunk-"+t,t)}},r.O.j=t=>0===e[t];var t=(t,s)=>{var n,i,o=s[0],a=s[1],l=s[2],c=0;if(o.some((t=>0!==e[t]))){for(n in a)r.o(a,n)&&(r.m[n]=a[n]);if(l)var d=l(r)}for(t&&t(s);c<o.length;c++)i=o[c],r.o(e,i)&&e[i]&&e[i][0](),e[i]=0;return r.O(d)},s=self.webpackChunknextcloud=self.webpackChunknextcloud||[];s.forEach(t.bind(null,0)),s.push=t.bind(null,s.push.bind(s))})(),r.nc=void 0;var a=r.O(void 0,[7874],(()=>r(56875)));a=r.O(a)})();
+//# sourceMappingURL=files_versions-files_versions.js.map?v=ef7dd36e4c63b73717d1 \ No newline at end of file
diff --git a/dist/files_versions-files_versions.js.map b/dist/files_versions-files_versions.js.map
index 436384bb0ce..77fc57b5a80 100644
--- a/dist/files_versions-files_versions.js.map
+++ b/dist/files_versions-files_versions.js.map
@@ -1 +1 @@
-{"version":3,"file":"files_versions-files_versions.js?v=d89ccb19c0219bbc7492","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/files/src/utils/fileUtils.js","webpack:///nextcloud/apps/files_versions/src/utils/davClient.js","webpack:///nextcloud/apps/files_versions/src/utils/logger.js","webpack://nextcloud/./apps/files_versions/src/components/Version.vue?f787","webpack:///nextcloud/apps/files_versions/src/components/Version.vue","webpack:///nextcloud/apps/files_versions/src/components/Version.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_versions/src/components/Version.vue?7df9","webpack://nextcloud/./apps/files_versions/src/components/Version.vue?0a31","webpack:///nextcloud/apps/files_versions/src/views/VersionTab.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_versions/src/views/VersionTab.vue","webpack:///nextcloud/apps/files_versions/src/utils/versions.js","webpack:///nextcloud/apps/files_versions/src/utils/davRequest.js","webpack://nextcloud/./apps/files_versions/src/views/VersionTab.vue?d7ee","webpack://nextcloud/./apps/files_versions/src/views/VersionTab.vue?4309","webpack:///nextcloud/apps/files_versions/src/files_versions_tab.js","webpack:///nextcloud/apps/files_versions/src/components/Version.vue?vue&type=style&index=0&id=b584f27c&prod&scoped=true&lang=scss&","webpack:///nextcloud/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/**\n * @copyright Copyright (c) 2021 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst encodeFilePath = function(path) {\n\tconst pathSections = (path.startsWith('/') ? path : `/${path}`).split('/')\n\tlet relativePath = ''\n\tpathSections.forEach((section) => {\n\t\tif (section !== '') {\n\t\t\trelativePath += '/' + encodeURIComponent(section)\n\t\t}\n\t})\n\treturn relativePath\n}\n\n/**\n * Extract dir and name from file path\n *\n * @param {string} path the full path\n * @return {string[]} [dirPath, fileName]\n */\nconst extractFilePaths = function(path) {\n\tconst pathSections = path.split('/')\n\tconst fileName = pathSections[pathSections.length - 1]\n\tconst dirPath = pathSections.slice(0, pathSections.length - 1).join('/')\n\treturn [dirPath, fileName]\n}\n\nexport { encodeFilePath, extractFilePaths }\n","/**\n * @copyright 2022 Louis Chemineau <mlouis@chmn.me>\n *\n * @author Louis Chemineau <mlouis@chmn.me>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { createClient } from 'webdav'\nimport { generateRemoteUrl } from '@nextcloud/router'\nimport { getRequestToken } from '@nextcloud/auth'\n\nconst rootPath = 'dav'\n\n// init webdav client on default dav endpoint\nconst remote = generateRemoteUrl(rootPath)\nexport default createClient(remote, {\n\theaders: {\n\t\t// Add this so the server knows it is an request from the browser\n\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\t// Inject user auth\n\t\trequesttoken: getRequestToken() ?? '',\n\t},\n})\n","/**\n * @copyright 2022 Louis Chemineau <mlouis@chmn.me>\n *\n * @author Louis Chemineau <mlouis@chmn.me>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('files_version')\n\t.detectUser()\n\t.build()\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('NcListItem',{staticClass:\"version\",attrs:{\"title\":_vm.versionLabel,\"force-display-actions\":true,\"data-files-versions-version\":\"\"},on:{\"click\":_vm.click},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(!(_vm.loadPreview || _vm.previewLoaded))?_c('div',{staticClass:\"version__image\"}):(_vm.isCurrent || _vm.version.hasPreview)?_c('img',{staticClass:\"version__image\",attrs:{\"src\":_vm.version.previewUrl,\"alt\":\"\",\"decoding\":\"async\",\"fetchpriority\":\"low\",\"loading\":\"lazy\"},on:{\"load\":function($event){_vm.previewLoaded = true}}}):_c('div',{staticClass:\"version__image\"},[_c('ImageOffOutline',{attrs:{\"size\":20}})],1)]},proxy:true},{key:\"subtitle\",fn:function(){return [_c('div',{staticClass:\"version__info\"},[_c('span',{attrs:{\"title\":_vm.formattedDate}},[_vm._v(_vm._s(_vm._f(\"humanDateFromNow\")(_vm.version.mtime)))]),_vm._v(\" \"),_c('span',{staticClass:\"version__info__size\"},[_vm._v(\"•\")]),_vm._v(\" \"),_c('span',{staticClass:\"version__info__size\"},[_vm._v(_vm._s(_vm._f(\"humanReadableSize\")(_vm.version.size)))])])]},proxy:true},{key:\"actions\",fn:function(){return [(_vm.enableLabeling)?_c('NcActionButton',{attrs:{\"close-after-click\":true},on:{\"click\":_vm.openVersionLabelModal},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Pencil',{attrs:{\"size\":22}})]},proxy:true}],null,false,3072546167)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.version.label === '' ? _vm.t('files_versions', 'Name this version') : _vm.t('files_versions', 'Edit version name'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(!_vm.isCurrent && _vm.canView && _vm.canCompare)?_c('NcActionButton',{attrs:{\"close-after-click\":true},on:{\"click\":_vm.compareVersion},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('FileCompare',{attrs:{\"size\":22}})]},proxy:true}],null,false,1958207595)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_versions', 'Compare to current version'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(!_vm.isCurrent)?_c('NcActionButton',{attrs:{\"close-after-click\":true},on:{\"click\":_vm.restoreVersion},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('BackupRestore',{attrs:{\"size\":22}})]},proxy:true}],null,false,2239038444)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_versions', 'Restore version'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcActionLink',{attrs:{\"href\":_vm.downloadURL,\"close-after-click\":true,\"download\":_vm.downloadURL},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Download',{attrs:{\"size\":22}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_versions', 'Download version'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),(!_vm.isCurrent && _vm.enableDeletion)?_c('NcActionButton',{attrs:{\"close-after-click\":true},on:{\"click\":_vm.deleteVersion},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Delete',{attrs:{\"size\":22}})]},proxy:true}],null,false,2429175571)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_versions', 'Delete version'))+\"\\n\\t\\t\\t\")]):_vm._e()]},proxy:true}])}),_vm._v(\" \"),(_vm.showVersionLabelForm)?_c('NcModal',{attrs:{\"title\":_vm.t('files_versions', 'Name this version')},on:{\"close\":function($event){_vm.showVersionLabelForm = false}}},[_c('form',{staticClass:\"version-label-modal\",on:{\"submit\":function($event){$event.preventDefault();return _vm.setVersionLabel(_vm.formVersionLabelValue)}}},[_c('label',[_c('div',{staticClass:\"version-label-modal__title\"},[_vm._v(_vm._s(_vm.t('photos', 'Version name')))]),_vm._v(\" \"),_c('NcTextField',{ref:\"labelInput\",attrs:{\"value\":_vm.formVersionLabelValue,\"placeholder\":_vm.t('photos', 'Version name'),\"label-outside\":true},on:{\"update:value\":function($event){_vm.formVersionLabelValue=$event}}})],1),_vm._v(\" \"),_c('div',{staticClass:\"version-label-modal__info\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Named versions are persisted, and excluded from automatic cleanups when your storage quota is full.'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('div',{staticClass:\"version-label-modal__actions\"},[_c('NcButton',{attrs:{\"disabled\":_vm.formVersionLabelValue.trim().length === 0},on:{\"click\":function($event){return _vm.setVersionLabel('')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_versions', 'Remove version name'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcButton',{attrs:{\"type\":\"primary\",\"native-type\":\"submit\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Check')]},proxy:true}],null,false,2308323205)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_versions', 'Save version name'))+\"\\n\\t\\t\\t\\t\")])],1)])]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright 2022 Carl Schwan <carl@carlschwan.eu>\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -->\n<template>\n\t<div>\n\t\t<NcListItem class=\"version\"\n\t\t\t:title=\"versionLabel\"\n\t\t\t:force-display-actions=\"true\"\n\t\t\tdata-files-versions-version\n\t\t\t@click=\"click\">\n\t\t\t<template #icon>\n\t\t\t\t<div v-if=\"!(loadPreview || previewLoaded)\" class=\"version__image\" />\n\t\t\t\t<img v-else-if=\"isCurrent || version.hasPreview\"\n\t\t\t\t\t:src=\"version.previewUrl\"\n\t\t\t\t\talt=\"\"\n\t\t\t\t\tdecoding=\"async\"\n\t\t\t\t\tfetchpriority=\"low\"\n\t\t\t\t\tloading=\"lazy\"\n\t\t\t\t\tclass=\"version__image\"\n\t\t\t\t\t@load=\"previewLoaded = true\">\n\t\t\t\t<div v-else\n\t\t\t\t\tclass=\"version__image\">\n\t\t\t\t\t<ImageOffOutline :size=\"20\" />\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t\t<template #subtitle>\n\t\t\t\t<div class=\"version__info\">\n\t\t\t\t\t<span :title=\"formattedDate\">{{ version.mtime | humanDateFromNow }}</span>\n\t\t\t\t\t<!-- Separate dot to improve alignement -->\n\t\t\t\t\t<span class=\"version__info__size\">•</span>\n\t\t\t\t\t<span class=\"version__info__size\">{{ version.size | humanReadableSize }}</span>\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t\t<template #actions>\n\t\t\t\t<NcActionButton v-if=\"enableLabeling\"\n\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t@click=\"openVersionLabelModal\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<Pencil :size=\"22\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ version.label === '' ? t('files_versions', 'Name this version') : t('files_versions', 'Edit version name') }}\n\t\t\t\t</NcActionButton>\n\t\t\t\t<NcActionButton v-if=\"!isCurrent && canView && canCompare\"\n\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t@click=\"compareVersion\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<FileCompare :size=\"22\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ t('files_versions', 'Compare to current version') }}\n\t\t\t\t</NcActionButton>\n\t\t\t\t<NcActionButton v-if=\"!isCurrent\"\n\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t@click=\"restoreVersion\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<BackupRestore :size=\"22\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ t('files_versions', 'Restore version') }}\n\t\t\t\t</NcActionButton>\n\t\t\t\t<NcActionLink :href=\"downloadURL\"\n\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t:download=\"downloadURL\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<Download :size=\"22\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ t('files_versions', 'Download version') }}\n\t\t\t\t</NcActionLink>\n\t\t\t\t<NcActionButton v-if=\"!isCurrent && enableDeletion\"\n\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t@click=\"deleteVersion\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<Delete :size=\"22\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ t('files_versions', 'Delete version') }}\n\t\t\t\t</NcActionButton>\n\t\t\t</template>\n\t\t</NcListItem>\n\t\t<NcModal v-if=\"showVersionLabelForm\"\n\t\t\t:title=\"t('files_versions', 'Name this version')\"\n\t\t\t@close=\"showVersionLabelForm = false\">\n\t\t\t<form class=\"version-label-modal\"\n\t\t\t\t@submit.prevent=\"setVersionLabel(formVersionLabelValue)\">\n\t\t\t\t<label>\n\t\t\t\t\t<div class=\"version-label-modal__title\">{{ t('photos', 'Version name') }}</div>\n\t\t\t\t\t<NcTextField ref=\"labelInput\"\n\t\t\t\t\t\t:value.sync=\"formVersionLabelValue\"\n\t\t\t\t\t\t:placeholder=\"t('photos', 'Version name')\"\n\t\t\t\t\t\t:label-outside=\"true\" />\n\t\t\t\t</label>\n\n\t\t\t\t<div class=\"version-label-modal__info\">\n\t\t\t\t\t{{ t('photos', 'Named versions are persisted, and excluded from automatic cleanups when your storage quota is full.') }}\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"version-label-modal__actions\">\n\t\t\t\t\t<NcButton :disabled=\"formVersionLabelValue.trim().length === 0\" @click=\"setVersionLabel('')\">\n\t\t\t\t\t\t{{ t('files_versions', 'Remove version name') }}\n\t\t\t\t\t</NcButton>\n\t\t\t\t\t<NcButton type=\"primary\" native-type=\"submit\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<Check />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t{{ t('files_versions', 'Save version name') }}\n\t\t\t\t\t</NcButton>\n\t\t\t\t</div>\n\t\t\t</form>\n\t\t</NcModal>\n\t</div>\n</template>\n\n<script>\nimport BackupRestore from 'vue-material-design-icons/BackupRestore.vue'\nimport Download from 'vue-material-design-icons/Download.vue'\nimport FileCompare from 'vue-material-design-icons/FileCompare.vue'\nimport Pencil from 'vue-material-design-icons/Pencil.vue'\nimport Check from 'vue-material-design-icons/Check.vue'\nimport Delete from 'vue-material-design-icons/Delete.vue'\nimport ImageOffOutline from 'vue-material-design-icons/ImageOffOutline.vue'\nimport { NcActionButton, NcActionLink, NcListItem, NcModal, NcButton, NcTextField, Tooltip } from '@nextcloud/vue'\nimport moment from '@nextcloud/moment'\nimport { translate } from '@nextcloud/l10n'\nimport { joinPaths } from '@nextcloud/paths'\nimport { getRootUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\n\nexport default {\n\tname: 'Version',\n\tcomponents: {\n\t\tNcActionLink,\n\t\tNcActionButton,\n\t\tNcListItem,\n\t\tNcModal,\n\t\tNcButton,\n\t\tNcTextField,\n\t\tBackupRestore,\n\t\tDownload,\n\t\tFileCompare,\n\t\tPencil,\n\t\tCheck,\n\t\tDelete,\n\t\tImageOffOutline,\n\t},\n\tdirectives: {\n\t\ttooltip: Tooltip,\n\t},\n\tfilters: {\n\t\t/**\n\t\t * @param {number} bytes\n\t\t * @return {string}\n\t\t */\n\t\thumanReadableSize(bytes) {\n\t\t\treturn OC.Util.humanFileSize(bytes)\n\t\t},\n\t\t/**\n\t\t * @param {number} timestamp\n\t\t * @return {string}\n\t\t */\n\t\thumanDateFromNow(timestamp) {\n\t\t\treturn moment(timestamp).fromNow()\n\t\t},\n\t},\n\tprops: {\n\t\t/** @type {Vue.PropOptions<import('../utils/versions.js').Version>} */\n\t\tversion: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tisCurrent: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tisFirstVersion: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tloadPreview: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tcanView: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tcanCompare: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tpreviewLoaded: false,\n\t\t\tshowVersionLabelForm: false,\n\t\t\tformVersionLabelValue: this.version.label,\n\t\t\tcapabilities: loadState('core', 'capabilities', { files: { version_labeling: false, version_deletion: false } }),\n\t\t}\n\t},\n\tcomputed: {\n\t\t/**\n\t\t * @return {string}\n\t\t */\n\t\tversionLabel() {\n\t\t\tconst label = this.version.label ?? ''\n\n\t\t\tif (this.isCurrent) {\n\t\t\t\tif (label === '') {\n\t\t\t\t\treturn translate('files_versions', 'Current version')\n\t\t\t\t} else {\n\t\t\t\t\treturn `${label} (${translate('files_versions', 'Current version')})`\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.isFirstVersion && label === '') {\n\t\t\t\treturn translate('files_versions', 'Initial version')\n\t\t\t}\n\n\t\t\treturn label\n\t\t},\n\n\t\t/**\n\t\t * @return {string}\n\t\t */\n\t\tdownloadURL() {\n\t\t\tif (this.isCurrent) {\n\t\t\t\treturn getRootUrl() + joinPaths('/remote.php/webdav', this.fileInfo.path, this.fileInfo.name)\n\t\t\t} else {\n\t\t\t\treturn getRootUrl() + this.version.url\n\t\t\t}\n\t\t},\n\n\t\t/** @return {string} */\n\t\tformattedDate() {\n\t\t\treturn moment(this.version.mtime).format('LLL')\n\t\t},\n\n\t\t/** @return {boolean} */\n\t\tenableLabeling() {\n\t\t\treturn this.capabilities.files.version_labeling === true\n\t\t},\n\n\t\t/** @return {boolean} */\n\t\tenableDeletion() {\n\t\t\treturn this.capabilities.files.version_deletion === true\n\t\t},\n\t},\n\tmethods: {\n\t\topenVersionLabelModal() {\n\t\t\tthis.showVersionLabelForm = true\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tthis.$refs.labelInput.$el.getElementsByTagName('input')[0].focus()\n\t\t\t})\n\t\t},\n\n\t\trestoreVersion() {\n\t\t\tthis.$emit('restore', this.version)\n\t\t},\n\n\t\tsetVersionLabel(label) {\n\t\t\tthis.formVersionLabelValue = label\n\t\t\tthis.showVersionLabelForm = false\n\t\t\tthis.$emit('label-update', this.version, label)\n\t\t},\n\n\t\tdeleteVersion() {\n\t\t\tthis.$emit('delete', this.version)\n\t\t},\n\n\t\tclick() {\n\t\t\tif (!this.canView) {\n\t\t\t\twindow.location = this.downloadURL\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.$emit('click', { version: this.version })\n\t\t},\n\n\t\tcompareVersion() {\n\t\t\tif (!this.canView) {\n\t\t\t\tthrow new Error('Cannot compare version of this file')\n\t\t\t}\n\t\t\tthis.$emit('compare', { version: this.version })\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.version {\n\tdisplay: flex;\n\tflex-direction: row;\n\n\t&__info {\n\t\tdisplay: flex;\n\t\tflex-direction: row;\n\t\talign-items: center;\n\t\tgap: 0.5rem;\n\n\t\t&__size {\n\t\t\tcolor: var(--color-text-lighter);\n\t\t}\n\t}\n\n\t&__image {\n\t\twidth: 3rem;\n\t\theight: 3rem;\n\t\tborder: 1px solid var(--color-border);\n\t\tborder-radius: var(--border-radius-large);\n\n\t\t// Useful to display no preview icon.\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tcolor: var(--color-text-light);\n\t}\n}\n\n.version-label-modal {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\tflex-direction: column;\n\theight: 250px;\n\tpadding: 16px;\n\n\t&__title {\n\t\tmargin-bottom: 12px;\n\t\tfont-weight: 600;\n\t}\n\n\t&__info {\n\t\tmargin-top: 12px;\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t&__actions {\n\t\tdisplay: flex;\n\t\tjustify-content: space-between;\n\t\tmargin-top: 64px;\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!./Version.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!./Version.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!./Version.vue?vue&type=style&index=0&id=b584f27c&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!./Version.vue?vue&type=style&index=0&id=b584f27c&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Version.vue?vue&type=template&id=b584f27c&scoped=true&\"\nimport script from \"./Version.vue?vue&type=script&lang=js&\"\nexport * from \"./Version.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Version.vue?vue&type=style&index=0&id=b584f27c&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 \"b584f27c\",\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!./VersionTab.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!./VersionTab.vue?vue&type=script&lang=js&\"","<!--\n - @copyright 2022 Carl Schwan <carl@carlschwan.eu>\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -->\n<template>\n\t<ul data-files-versions-versions-list>\n\t\t<Version v-for=\"version in orderedVersions\"\n\t\t\t:key=\"version.mtime\"\n\t\t\t:can-view=\"canView\"\n\t\t\t:can-compare=\"canCompare\"\n\t\t\t:load-preview=\"isActive\"\n\t\t\t:version=\"version\"\n\t\t\t:file-info=\"fileInfo\"\n\t\t\t:is-current=\"version.mtime === fileInfo.mtime\"\n\t\t\t:is-first-version=\"version.mtime === initialVersionMtime\"\n\t\t\t@click=\"openVersion\"\n\t\t\t@compare=\"compareVersion\"\n\t\t\t@restore=\"handleRestore\"\n\t\t\t@label-update=\"handleLabelUpdate\"\n\t\t\t@delete=\"handleDelete\" />\n\t</ul>\n</template>\n\n<script>\nimport path from 'path'\n\nimport { showError, showSuccess } from '@nextcloud/dialogs'\nimport isMobile from '@nextcloud/vue/dist/Mixins/isMobile.js'\nimport { emit, subscribe, unsubscribe } from '@nextcloud/event-bus'\nimport { getCurrentUser } from '@nextcloud/auth'\n\nimport { fetchVersions, deleteVersion, restoreVersion, setVersionLabel } from '../utils/versions.js'\nimport Version from '../components/Version.vue'\n\nexport default {\n\tname: 'VersionTab',\n\tcomponents: {\n\t\tVersion,\n\t},\n\tmixins: [\n\t\tisMobile,\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tfileInfo: null,\n\t\t\tisActive: false,\n\t\t\t/** @type {import('../utils/versions.js').Version[]} */\n\t\t\tversions: [],\n\t\t\tloading: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\t/**\n\t\t * Order versions by mtime.\n\t\t * Put the current version at the top.\n\t\t *\n\t\t * @return {import('../utils/versions.js').Version[]}\n\t\t */\n\t\torderedVersions() {\n\t\t\treturn [...this.versions].sort((a, b) => {\n\t\t\t\tif (a.mtime === this.fileInfo.mtime) {\n\t\t\t\t\treturn -1\n\t\t\t\t} else if (b.mtime === this.fileInfo.mtime) {\n\t\t\t\t\treturn 1\n\t\t\t\t} else {\n\t\t\t\t\treturn b.mtime - a.mtime\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Return the mtime of the first version to display \"Initial version\" label\n\t\t *\n\t\t * @return {number}\n\t\t */\n\t\tinitialVersionMtime() {\n\t\t\treturn this.versions\n\t\t\t\t.map(version => version.mtime)\n\t\t\t\t.reduce((a, b) => Math.min(a, b))\n\t\t},\n\n\t\tviewerFileInfo() {\n\t\t\t// We need to remap bitmask to dav permissions as the file info we have is converted through client.js\n\t\t\tlet davPermissions = ''\n\t\t\tif (this.fileInfo.permissions & 1) {\n\t\t\t\tdavPermissions += 'R'\n\t\t\t}\n\t\t\tif (this.fileInfo.permissions & 2) {\n\t\t\t\tdavPermissions += 'W'\n\t\t\t}\n\t\t\tif (this.fileInfo.permissions & 8) {\n\t\t\t\tdavPermissions += 'D'\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...this.fileInfo,\n\t\t\t\tmime: this.fileInfo.mimetype,\n\t\t\t\tbasename: this.fileInfo.name,\n\t\t\t\tfilename: this.fileInfo.path + '/' + this.fileInfo.name,\n\t\t\t\tpermissions: davPermissions,\n\t\t\t\tfileid: this.fileInfo.id,\n\t\t\t}\n\t\t},\n\n\t\t/** @return {boolean} */\n\t\tcanView() {\n\t\t\treturn window.OCA.Viewer?.mimetypesCompare?.includes(this.fileInfo.mimetype)\n\t\t},\n\n\t\tcanCompare() {\n\t\t\treturn !this.isMobile\n\t\t},\n\t},\n\tmounted() {\n\t\tsubscribe('files_versions:restore:restored', this.fetchVersions)\n\t},\n\tbeforeUnmount() {\n\t\tunsubscribe('files_versions:restore:restored', this.fetchVersions)\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Update current fileInfo and fetch new data\n\t\t *\n\t\t * @param {object} fileInfo the current file FileInfo\n\t\t */\n\t\tasync update(fileInfo) {\n\t\t\tthis.fileInfo = fileInfo\n\t\t\tthis.resetState()\n\t\t\tthis.fetchVersions()\n\t\t},\n\n\t\t/**\n\t\t * @param {boolean} isActive whether the tab is active\n\t\t */\n\t\tasync setIsActive(isActive) {\n\t\t\tthis.isActive = isActive\n\t\t},\n\n\t\t/**\n\t\t * Get the existing versions infos\n\t\t */\n\t\tasync fetchVersions() {\n\t\t\ttry {\n\t\t\t\tthis.loading = true\n\t\t\t\tthis.versions = await fetchVersions(this.fileInfo)\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Handle restored event from Version.vue\n\t\t *\n\t\t * @param {import('../utils/versions.js').Version} version\n\t\t */\n\t\tasync handleRestore(version) {\n\t\t\t// Update local copy of fileInfo as rendering depends on it.\n\t\t\tconst oldFileInfo = this.fileInfo\n\t\t\tthis.fileInfo = {\n\t\t\t\t...this.fileInfo,\n\t\t\t\tsize: version.size,\n\t\t\t\tmtime: version.mtime,\n\t\t\t}\n\n\t\t\tconst restoreStartedEventState = {\n\t\t\t\tpreventDefault: false,\n\t\t\t\tfileInfo: this.fileInfo,\n\t\t\t\tversion,\n\t\t\t}\n\t\t\temit('files_versions:restore:requested', restoreStartedEventState)\n\t\t\tif (restoreStartedEventState.preventDefault) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tawait restoreVersion(version)\n\t\t\t\tif (version.label !== '') {\n\t\t\t\t\tshowSuccess(t('files_versions', `${version.label} restored`))\n\t\t\t\t} else if (version.mtime === this.initialVersionMtime) {\n\t\t\t\t\tshowSuccess(t('files_versions', 'Initial version restored'))\n\t\t\t\t} else {\n\t\t\t\t\tshowSuccess(t('files_versions', 'Version restored'))\n\t\t\t\t}\n\t\t\t\temit('files_versions:restore:restored', version)\n\t\t\t} catch (exception) {\n\t\t\t\tthis.fileInfo = oldFileInfo\n\t\t\t\tshowError(t('files_versions', 'Could not restore version'))\n\t\t\t\temit('files_versions:restore:failed', version)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Handle label-updated event from Version.vue\n\t\t *\n\t\t * @param {import('../utils/versions.js').Version} version\n\t\t * @param {string} newName\n\t\t */\n\t\tasync handleLabelUpdate(version, newName) {\n\t\t\tconst oldLabel = version.label\n\t\t\tversion.label = newName\n\n\t\t\ttry {\n\t\t\t\tawait setVersionLabel(version, newName)\n\t\t\t} catch (exception) {\n\t\t\t\tversion.label = oldLabel\n\t\t\t\tshowError(t('files_versions', 'Could not set version name'))\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Handle deleted event from Version.vue\n\t\t *\n\t\t * @param {import('../utils/versions.js').Version} version\n\t\t * @param {string} newName\n\t\t */\n\t\tasync handleDelete(version) {\n\t\t\tconst index = this.versions.indexOf(version)\n\t\t\tthis.versions.splice(index, 1)\n\n\t\t\ttry {\n\t\t\t\tawait deleteVersion(version)\n\t\t\t} catch (exception) {\n\t\t\t\tthis.versions.push(version)\n\t\t\t\tshowError(t('files_versions', 'Could not delete version'))\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Reset the current view to its default state\n\t\t */\n\t\tresetState() {\n\t\t\tthis.$set(this, 'versions', [])\n\t\t},\n\n\t\topenVersion({ version }) {\n\t\t\t// Open current file view instead of read only\n\t\t\tif (version.mtime === this.fileInfo.mtime) {\n\t\t\t\tOCA.Viewer.open({ fileInfo: this.viewerFileInfo })\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Versions previews are too small for our use case, so we override hasPreview and previewUrl\n\t\t\t// which makes the viewer render the original file.\n\t\t\t// We also point to the original filename if the version is the current one.\n\t\t\tconst versions = this.versions.map(version => ({\n\t\t\t\t...version,\n\t\t\t\tfilename: version.mtime === this.fileInfo.mtime ? path.join('files', getCurrentUser()?.uid ?? '', this.fileInfo.path, this.fileInfo.name) : version.filename,\n\t\t\t\thasPreview: false,\n\t\t\t\tpreviewUrl: undefined,\n\t\t\t}))\n\n\t\t\tOCA.Viewer.open({\n\t\t\t\tfileInfo: versions.find(v => v.source === version.source),\n\t\t\t\tenableSidebar: false,\n\t\t\t})\n\t\t},\n\n\t\tcompareVersion({ version }) {\n\t\t\tconst versions = this.versions.map(version => ({ ...version, hasPreview: false, previewUrl: undefined }))\n\n\t\t\tOCA.Viewer.compare(this.viewerFileInfo, versions.find(v => v.source === version.source))\n\t\t},\n\t},\n}\n</script>\n","/**\n * @copyright 2022 Louis Chemineau <mlouis@chmn.me>\n *\n * @author Louis Chemineau <mlouis@chmn.me>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { joinPaths } from '@nextcloud/paths'\nimport { generateRemoteUrl, generateUrl } from '@nextcloud/router'\nimport moment from '@nextcloud/moment'\n\nimport { encodeFilePath } from '../../../files/src/utils/fileUtils.js'\n\nimport client from '../utils/davClient.js'\nimport davRequest from '../utils/davRequest.js'\nimport logger from '../utils/logger.js'\n\n/**\n * @typedef {object} Version\n * @property {string} fileId - The id of the file associated to the version.\n * @property {string} label - 'Current version' or ''\n * @property {string} filename - File name relative to the version DAV endpoint\n * @property {string} basename - A base name generated from the mtime\n * @property {string} mime - Empty for the current version, else the actual mime type of the version\n * @property {string} etag - Empty for the current version, else the actual mime type of the version\n * @property {string} size - Human readable size\n * @property {string} type - 'file'\n * @property {number} mtime - Version creation date as a timestamp\n * @property {string} permissions - Only readable: 'R'\n * @property {boolean} hasPreview - Whether the version has a preview\n * @property {string} previewUrl - Preview URL of the version\n * @property {string} url - Download URL of the version\n * @property {string} source - The WebDAV endpoint of the ressource\n * @property {string|null} fileVersion - The version id, null for the current version\n */\n\n/**\n * @param fileInfo\n * @return {Promise<Version[]>}\n */\nexport async function fetchVersions(fileInfo) {\n\tconst path = `/versions/${getCurrentUser()?.uid}/versions/${fileInfo.id}`\n\n\ttry {\n\t\t/** @type {import('webdav').ResponseDataDetailed<import('webdav').FileStat[]>} */\n\t\tconst response = await client.getDirectoryContents(path, {\n\t\t\tdata: davRequest,\n\t\t\tdetails: true,\n\t\t})\n\t\treturn response.data\n\t\t\t// Filter out root\n\t\t\t.filter(({ mime }) => mime !== '')\n\t\t\t.map(version => formatVersion(version, fileInfo))\n\t} catch (exception) {\n\t\tlogger.error('Could not fetch version', { exception })\n\t\tthrow exception\n\t}\n}\n\n/**\n * Restore the given version\n *\n * @param {Version} version\n */\nexport async function restoreVersion(version) {\n\ttry {\n\t\tlogger.debug('Restoring version', { url: version.url })\n\t\tawait client.moveFile(\n\t\t\t`/versions/${getCurrentUser()?.uid}/versions/${version.fileId}/${version.fileVersion}`,\n\t\t\t`/versions/${getCurrentUser()?.uid}/restore/target`,\n\t\t)\n\t} catch (exception) {\n\t\tlogger.error('Could not restore version', { exception })\n\t\tthrow exception\n\t}\n}\n\n/**\n * Format version\n *\n * @param {object} version - raw version received from the versions DAV endpoint\n * @param {object} fileInfo - file properties received from the files DAV endpoint\n * @return {Version}\n */\nfunction formatVersion(version, fileInfo) {\n\tconst mtime = moment(version.lastmod).unix() * 1000\n\tlet previewUrl = ''\n\n\tif (mtime === fileInfo.mtime) { // Version is the current one\n\t\tpreviewUrl = generateUrl('/core/preview?fileId={fileId}&c={fileEtag}&x=250&y=250&forceIcon=0&a=0', {\n\t\t\tfileId: fileInfo.id,\n\t\t\tfileEtag: fileInfo.etag,\n\t\t})\n\t} else {\n\t\tpreviewUrl = generateUrl('/apps/files_versions/preview?file={file}&version={fileVersion}', {\n\t\t\tfile: joinPaths(fileInfo.path, fileInfo.name),\n\t\t\tfileVersion: version.basename,\n\t\t})\n\t}\n\n\treturn {\n\t\tfileId: fileInfo.id,\n\t\tlabel: version.props['version-label'],\n\t\tfilename: version.filename,\n\t\tbasename: moment(mtime).format('LLL'),\n\t\tmime: version.mime,\n\t\tetag: `${version.props.getetag}`,\n\t\tsize: version.size,\n\t\ttype: version.type,\n\t\tmtime,\n\t\tpermissions: 'R',\n\t\thasPreview: version.props['has-preview'] === 1,\n\t\tpreviewUrl,\n\t\turl: joinPaths('/remote.php/dav', version.filename),\n\t\tsource: generateRemoteUrl('dav') + encodeFilePath(version.filename),\n\t\tfileVersion: version.basename,\n\t}\n}\n\n/**\n * @param {Version} version\n * @param {string} newLabel\n */\nexport async function setVersionLabel(version, newLabel) {\n\treturn await client.customRequest(\n\t\tversion.filename,\n\t\t{\n\t\t\tmethod: 'PROPPATCH',\n\t\t\tdata: `<?xml version=\"1.0\"?>\n\t\t\t\t\t<d:propertyupdate xmlns:d=\"DAV:\"\n\t\t\t\t\t\txmlns:oc=\"http://owncloud.org/ns\"\n\t\t\t\t\t\txmlns:nc=\"http://nextcloud.org/ns\"\n\t\t\t\t\t\txmlns:ocs=\"http://open-collaboration-services.org/ns\">\n\t\t\t\t\t<d:set>\n\t\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t\t<nc:version-label>${newLabel}</nc:version-label>\n\t\t\t\t\t\t</d:prop>\n\t\t\t\t\t</d:set>\n\t\t\t\t\t</d:propertyupdate>`,\n\t\t},\n\t)\n}\n\n/**\n * @param {Version} version\n */\nexport async function deleteVersion(version) {\n\tawait client.deleteFile(version.filename)\n}\n","/**\n * @copyright Copyright (c) 2019 Louis Chmn <louis@chmn.me>\n *\n * @author Louis Chmn <louis@chmn.me>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default `<?xml version=\"1.0\"?>\n<d:propfind xmlns:d=\"DAV:\"\n\txmlns:oc=\"http://owncloud.org/ns\"\n\txmlns:nc=\"http://nextcloud.org/ns\"\n\txmlns:ocs=\"http://open-collaboration-services.org/ns\">\n\t<d:prop>\n\t\t<d:getcontentlength />\n\t\t<d:getcontenttype />\n\t\t<d:getlastmodified />\n\t\t<d:getetag />\n\t\t<nc:version-label />\n\t\t<nc:has-preview />\n\t</d:prop>\n</d:propfind>`\n","import { render, staticRenderFns } from \"./VersionTab.vue?vue&type=template&id=61ad6e74&\"\nimport script from \"./VersionTab.vue?vue&type=script&lang=js&\"\nexport * from \"./VersionTab.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('ul',{attrs:{\"data-files-versions-versions-list\":\"\"}},_vm._l((_vm.orderedVersions),function(version){return _c('Version',{key:version.mtime,attrs:{\"can-view\":_vm.canView,\"can-compare\":_vm.canCompare,\"load-preview\":_vm.isActive,\"version\":version,\"file-info\":_vm.fileInfo,\"is-current\":version.mtime === _vm.fileInfo.mtime,\"is-first-version\":version.mtime === _vm.initialVersionMtime},on:{\"click\":_vm.openVersion,\"compare\":_vm.compareVersion,\"restore\":_vm.handleRestore,\"label-update\":_vm.handleLabelUpdate,\"delete\":_vm.handleDelete}})}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2022 Carl Schwan <carl@carlschwan.eu>\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n'\n\nimport VersionTab from './views/VersionTab.vue'\nimport VTooltip from 'v-tooltip'\n// eslint-disable-next-line n/no-missing-import, import/no-unresolved\nimport BackupRestore from '@mdi/svg/svg/backup-restore.svg?raw'\n\nVue.prototype.t = t\nVue.prototype.n = n\n\nVue.use(VTooltip)\n\n// Init Sharing tab component\nconst View = Vue.extend(VersionTab)\nlet TabInstance = null\n\nwindow.addEventListener('DOMContentLoaded', function() {\n\tif (OCA.Files?.Sidebar === undefined) {\n\t\treturn\n\t}\n\n\tOCA.Files.Sidebar.registerTab(new OCA.Files.Sidebar.Tab({\n\t\tid: 'version_vue',\n\t\tname: t('files_versions', 'Versions'),\n\t\ticonSvg: BackupRestore,\n\n\t\tasync mount(el, fileInfo, context) {\n\t\t\tif (TabInstance) {\n\t\t\t\tTabInstance.$destroy()\n\t\t\t}\n\t\t\tTabInstance = new View({\n\t\t\t\t// Better integration with vue parent component\n\t\t\t\tparent: context,\n\t\t\t})\n\t\t\t// Only mount after we have all the info we need\n\t\t\tawait TabInstance.update(fileInfo)\n\t\t\tTabInstance.$mount(el)\n\t\t},\n\t\tupdate(fileInfo) {\n\t\t\tTabInstance.update(fileInfo)\n\t\t},\n\t\tsetIsActive(isActive) {\n\t\t\tTabInstance.setIsActive(isActive)\n\t\t},\n\t\tdestroy() {\n\t\t\tTabInstance.$destroy()\n\t\t\tTabInstance = null\n\t\t},\n\t\tenabled(fileInfo) {\n\t\t\treturn !(fileInfo?.isDirectory() ?? true)\n\t\t},\n\t}))\n})\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".version[data-v-b584f27c]{display:flex;flex-direction:row}.version__info[data-v-b584f27c]{display:flex;flex-direction:row;align-items:center;gap:.5rem}.version__info__size[data-v-b584f27c]{color:var(--color-text-lighter)}.version__image[data-v-b584f27c]{width:3rem;height:3rem;border:1px solid var(--color-border);border-radius:var(--border-radius-large);display:flex;justify-content:center;color:var(--color-text-light)}.version-label-modal[data-v-b584f27c]{display:flex;justify-content:space-between;flex-direction:column;height:250px;padding:16px}.version-label-modal__title[data-v-b584f27c]{margin-bottom:12px;font-weight:600}.version-label-modal__info[data-v-b584f27c]{margin-top:12px;color:var(--color-text-maxcontrast)}.version-label-modal__actions[data-v-b584f27c]{display:flex;justify-content:space-between;margin-top:64px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_versions/src/components/Version.vue\"],\"names\":[],\"mappings\":\"AACA,0BACC,YAAA,CACA,kBAAA,CAEA,gCACC,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,SAAA,CAEA,sCACC,+BAAA,CAIF,iCACC,UAAA,CACA,WAAA,CACA,oCAAA,CACA,wCAAA,CAGA,YAAA,CACA,sBAAA,CACA,6BAAA,CAIF,sCACC,YAAA,CACA,6BAAA,CACA,qBAAA,CACA,YAAA,CACA,YAAA,CAEA,6CACC,kBAAA,CACA,eAAA,CAGD,4CACC,eAAA,CACA,mCAAA,CAGD,+CACC,YAAA,CACA,6BAAA,CACA,eAAA\",\"sourcesContent\":[\"\\n.version {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\n\\t&__info {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: row;\\n\\t\\talign-items: center;\\n\\t\\tgap: 0.5rem;\\n\\n\\t\\t&__size {\\n\\t\\t\\tcolor: var(--color-text-lighter);\\n\\t\\t}\\n\\t}\\n\\n\\t&__image {\\n\\t\\twidth: 3rem;\\n\\t\\theight: 3rem;\\n\\t\\tborder: 1px solid var(--color-border);\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\n\\t\\t// Useful to display no preview icon.\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: center;\\n\\t\\tcolor: var(--color-text-light);\\n\\t}\\n}\\n\\n.version-label-modal {\\n\\tdisplay: flex;\\n\\tjustify-content: space-between;\\n\\tflex-direction: column;\\n\\theight: 250px;\\n\\tpadding: 16px;\\n\\n\\t&__title {\\n\\t\\tmargin-bottom: 12px;\\n\\t\\tfont-weight: 600;\\n\\t}\\n\\n\\t&__info {\\n\\t\\tmargin-top: 12px;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n\\n\\t&__actions {\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: space-between;\\n\\t\\tmargin-top: 64px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 30094,\n\t\"./hi.js\": 30094,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + \"00434e4baa0d8e7b79f1\" + \"\";\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 = 1358;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) scriptUrl = scripts[scripts.length - 1].src\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t1358: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], () => (__webpack_require__(79290)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","encodeFilePath","path","pathSections","startsWith","concat","split","relativePath","forEach","section","encodeURIComponent","remote","generateRemoteUrl","createClient","headers","requesttoken","_getRequestToken","getRequestToken","getLoggerBuilder","setApp","detectUser","build","name","components","NcActionLink","NcActionButton","NcListItem","NcModal","NcButton","NcTextField","BackupRestore","Download","FileCompare","Pencil","Check","Delete","ImageOffOutline","directives","tooltip","Tooltip","filters","humanReadableSize","bytes","OC","Util","humanFileSize","humanDateFromNow","timestamp","moment","fromNow","props","version","type","Object","required","fileInfo","isCurrent","Boolean","default","isFirstVersion","loadPreview","canView","canCompare","data","previewLoaded","showVersionLabelForm","formVersionLabelValue","label","capabilities","loadState","files","version_labeling","version_deletion","computed","versionLabel","_this$version$label","translate","downloadURL","getRootUrl","joinPaths","url","formattedDate","mtime","format","enableLabeling","enableDeletion","methods","openVersionLabelModal","$nextTick","$refs","labelInput","$el","getElementsByTagName","focus","restoreVersion","$emit","setVersionLabel","deleteVersion","click","window","location","compareVersion","Error","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","Version","_vm","this","_c","_self","staticClass","attrs","on","scopedSlots","_u","key","fn","hasPreview","previewUrl","$event","proxy","_v","_s","_f","size","t","_e","preventDefault","ref","trim","length","mixins","isMobile","isActive","versions","loading","orderedVersions","sort","a","b","initialVersionMtime","map","reduce","Math","min","viewerFileInfo","davPermissions","permissions","mime","mimetype","basename","filename","fileid","id","_window$OCA$Viewer","_window$OCA$Viewer$mi","OCA","Viewer","mimetypesCompare","includes","mounted","subscribe","fetchVersions","beforeUnmount","unsubscribe","resetState","async","_getCurrentUser","getCurrentUser","uid","client","details","filter","_ref","lastmod","unix","generateUrl","fileId","fileEtag","etag","file","fileVersion","getetag","source","formatVersion","exception","logger","error","oldFileInfo","restoreStartedEventState","emit","_getCurrentUser2","_getCurrentUser3","debug","showSuccess","showError","newName","oldLabel","newLabel","method","index","indexOf","splice","push","$set","openVersion","open","_getCurrentUser$uid","undefined","find","v","enableSidebar","_ref2","compare","_l","handleRestore","handleLabelUpdate","handleDelete","Vue","n","VTooltip","View","VersionTab","TabInstance","addEventListener","_OCA$Files","Files","Sidebar","registerTab","Tab","iconSvg","el","context","$destroy","parent","update","$mount","setIsActive","destroy","enabled","_fileInfo$isDirectory","isDirectory","___CSS_LOADER_EXPORT___","module","webpackContext","req","webpackContextResolve","__webpack_require__","o","e","code","keys","resolve","exports","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","call","m","O","result","chunkIds","priority","notFulfilled","Infinity","i","fulfilled","j","every","r","getter","__esModule","d","definition","defineProperty","enumerable","get","f","chunkId","Promise","all","promises","u","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","l","done","script","needAttach","scripts","document","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","setTimeout","bind","target","head","appendChild","Symbol","toStringTag","value","nmd","paths","children","scriptUrl","importScripts","currentScript","replace","p","baseURI","self","href","installedChunks","installedChunkData","promise","reject","errorType","realSrc","message","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"files_versions-files_versions.js?v=ef7dd36e4c63b73717d1","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/files/src/utils/fileUtils.js","webpack:///nextcloud/apps/files_versions/src/utils/davClient.js","webpack:///nextcloud/apps/files_versions/src/utils/logger.js","webpack://nextcloud/./apps/files_versions/src/components/Version.vue?f787","webpack:///nextcloud/apps/files_versions/src/components/Version.vue","webpack:///nextcloud/apps/files_versions/src/components/Version.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_versions/src/components/Version.vue?a42a","webpack://nextcloud/./apps/files_versions/src/components/Version.vue?0a31","webpack:///nextcloud/apps/files_versions/src/views/VersionTab.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_versions/src/views/VersionTab.vue","webpack:///nextcloud/apps/files_versions/src/utils/versions.js","webpack:///nextcloud/apps/files_versions/src/utils/davRequest.js","webpack://nextcloud/./apps/files_versions/src/views/VersionTab.vue?d7ee","webpack://nextcloud/./apps/files_versions/src/views/VersionTab.vue?4309","webpack:///nextcloud/apps/files_versions/src/files_versions_tab.js","webpack:///nextcloud/apps/files_versions/src/components/Version.vue?vue&type=style&index=0&id=b2ebd230&prod&scoped=true&lang=scss&","webpack:///nextcloud/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/**\n * @copyright Copyright (c) 2021 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst encodeFilePath = function(path) {\n\tconst pathSections = (path.startsWith('/') ? path : `/${path}`).split('/')\n\tlet relativePath = ''\n\tpathSections.forEach((section) => {\n\t\tif (section !== '') {\n\t\t\trelativePath += '/' + encodeURIComponent(section)\n\t\t}\n\t})\n\treturn relativePath\n}\n\n/**\n * Extract dir and name from file path\n *\n * @param {string} path the full path\n * @return {string[]} [dirPath, fileName]\n */\nconst extractFilePaths = function(path) {\n\tconst pathSections = path.split('/')\n\tconst fileName = pathSections[pathSections.length - 1]\n\tconst dirPath = pathSections.slice(0, pathSections.length - 1).join('/')\n\treturn [dirPath, fileName]\n}\n\nexport { encodeFilePath, extractFilePaths }\n","/**\n * @copyright 2022 Louis Chemineau <mlouis@chmn.me>\n *\n * @author Louis Chemineau <mlouis@chmn.me>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { createClient } from 'webdav'\nimport { generateRemoteUrl } from '@nextcloud/router'\nimport { getRequestToken } from '@nextcloud/auth'\n\nconst rootPath = 'dav'\n\n// init webdav client on default dav endpoint\nconst remote = generateRemoteUrl(rootPath)\nexport default createClient(remote, {\n\theaders: {\n\t\t// Add this so the server knows it is an request from the browser\n\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\t// Inject user auth\n\t\trequesttoken: getRequestToken() ?? '',\n\t},\n})\n","/**\n * @copyright 2022 Louis Chemineau <mlouis@chmn.me>\n *\n * @author Louis Chemineau <mlouis@chmn.me>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('files_version')\n\t.detectUser()\n\t.build()\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('NcListItem',{staticClass:\"version\",attrs:{\"title\":_vm.versionLabel,\"force-display-actions\":true,\"data-files-versions-version\":\"\"},on:{\"click\":_vm.click},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(!(_vm.loadPreview || _vm.previewLoaded))?_c('div',{staticClass:\"version__image\"}):(_vm.isCurrent || _vm.version.hasPreview)?_c('img',{staticClass:\"version__image\",attrs:{\"src\":_vm.version.previewUrl,\"alt\":\"\",\"decoding\":\"async\",\"fetchpriority\":\"low\",\"loading\":\"lazy\"},on:{\"load\":function($event){_vm.previewLoaded = true}}}):_c('div',{staticClass:\"version__image\"},[_c('ImageOffOutline',{attrs:{\"size\":20}})],1)]},proxy:true},{key:\"subtitle\",fn:function(){return [_c('div',{staticClass:\"version__info\"},[_c('span',{attrs:{\"title\":_vm.formattedDate}},[_vm._v(_vm._s(_vm._f(\"humanDateFromNow\")(_vm.version.mtime)))]),_vm._v(\" \"),_c('span',{staticClass:\"version__info__size\"},[_vm._v(\"•\")]),_vm._v(\" \"),_c('span',{staticClass:\"version__info__size\"},[_vm._v(_vm._s(_vm._f(\"humanReadableSize\")(_vm.version.size)))])])]},proxy:true},{key:\"actions\",fn:function(){return [(_vm.enableLabeling)?_c('NcActionButton',{attrs:{\"close-after-click\":true},on:{\"click\":_vm.openVersionLabelModal},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Pencil',{attrs:{\"size\":22}})]},proxy:true}],null,false,3072546167)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.version.label === '' ? _vm.t('files_versions', 'Name this version') : _vm.t('files_versions', 'Edit version name'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(!_vm.isCurrent && _vm.canView && _vm.canCompare)?_c('NcActionButton',{attrs:{\"close-after-click\":true},on:{\"click\":_vm.compareVersion},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('FileCompare',{attrs:{\"size\":22}})]},proxy:true}],null,false,1958207595)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_versions', 'Compare to current version'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(!_vm.isCurrent)?_c('NcActionButton',{attrs:{\"close-after-click\":true},on:{\"click\":_vm.restoreVersion},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('BackupRestore',{attrs:{\"size\":22}})]},proxy:true}],null,false,2239038444)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_versions', 'Restore version'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcActionLink',{attrs:{\"href\":_vm.downloadURL,\"close-after-click\":true,\"download\":_vm.downloadURL},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Download',{attrs:{\"size\":22}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_versions', 'Download version'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),(!_vm.isCurrent && _vm.enableDeletion)?_c('NcActionButton',{attrs:{\"close-after-click\":true},on:{\"click\":_vm.deleteVersion},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Delete',{attrs:{\"size\":22}})]},proxy:true}],null,false,2429175571)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_versions', 'Delete version'))+\"\\n\\t\\t\\t\")]):_vm._e()]},proxy:true}])}),_vm._v(\" \"),(_vm.showVersionLabelForm)?_c('NcModal',{attrs:{\"title\":_vm.t('files_versions', 'Name this version')},on:{\"close\":function($event){_vm.showVersionLabelForm = false}}},[_c('form',{staticClass:\"version-label-modal\",on:{\"submit\":function($event){$event.preventDefault();return _vm.setVersionLabel(_vm.formVersionLabelValue)}}},[_c('label',[_c('div',{staticClass:\"version-label-modal__title\"},[_vm._v(_vm._s(_vm.t('files_versions', 'Version name')))]),_vm._v(\" \"),_c('NcTextField',{ref:\"labelInput\",attrs:{\"value\":_vm.formVersionLabelValue,\"placeholder\":_vm.t('files_versions', 'Version name'),\"label-outside\":true},on:{\"update:value\":function($event){_vm.formVersionLabelValue=$event}}})],1),_vm._v(\" \"),_c('div',{staticClass:\"version-label-modal__info\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_versions', 'Named versions are persisted, and excluded from automatic cleanups when your storage quota is full.'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('div',{staticClass:\"version-label-modal__actions\"},[_c('NcButton',{attrs:{\"disabled\":_vm.formVersionLabelValue.trim().length === 0},on:{\"click\":function($event){return _vm.setVersionLabel('')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_versions', 'Remove version name'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcButton',{attrs:{\"type\":\"primary\",\"native-type\":\"submit\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Check')]},proxy:true}],null,false,2308323205)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_versions', 'Save version name'))+\"\\n\\t\\t\\t\\t\")])],1)])]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright 2022 Carl Schwan <carl@carlschwan.eu>\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -->\n<template>\n\t<div>\n\t\t<NcListItem class=\"version\"\n\t\t\t:title=\"versionLabel\"\n\t\t\t:force-display-actions=\"true\"\n\t\t\tdata-files-versions-version\n\t\t\t@click=\"click\">\n\t\t\t<template #icon>\n\t\t\t\t<div v-if=\"!(loadPreview || previewLoaded)\" class=\"version__image\" />\n\t\t\t\t<img v-else-if=\"isCurrent || version.hasPreview\"\n\t\t\t\t\t:src=\"version.previewUrl\"\n\t\t\t\t\talt=\"\"\n\t\t\t\t\tdecoding=\"async\"\n\t\t\t\t\tfetchpriority=\"low\"\n\t\t\t\t\tloading=\"lazy\"\n\t\t\t\t\tclass=\"version__image\"\n\t\t\t\t\t@load=\"previewLoaded = true\">\n\t\t\t\t<div v-else\n\t\t\t\t\tclass=\"version__image\">\n\t\t\t\t\t<ImageOffOutline :size=\"20\" />\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t\t<template #subtitle>\n\t\t\t\t<div class=\"version__info\">\n\t\t\t\t\t<span :title=\"formattedDate\">{{ version.mtime | humanDateFromNow }}</span>\n\t\t\t\t\t<!-- Separate dot to improve alignement -->\n\t\t\t\t\t<span class=\"version__info__size\">•</span>\n\t\t\t\t\t<span class=\"version__info__size\">{{ version.size | humanReadableSize }}</span>\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t\t<template #actions>\n\t\t\t\t<NcActionButton v-if=\"enableLabeling\"\n\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t@click=\"openVersionLabelModal\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<Pencil :size=\"22\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ version.label === '' ? t('files_versions', 'Name this version') : t('files_versions', 'Edit version name') }}\n\t\t\t\t</NcActionButton>\n\t\t\t\t<NcActionButton v-if=\"!isCurrent && canView && canCompare\"\n\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t@click=\"compareVersion\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<FileCompare :size=\"22\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ t('files_versions', 'Compare to current version') }}\n\t\t\t\t</NcActionButton>\n\t\t\t\t<NcActionButton v-if=\"!isCurrent\"\n\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t@click=\"restoreVersion\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<BackupRestore :size=\"22\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ t('files_versions', 'Restore version') }}\n\t\t\t\t</NcActionButton>\n\t\t\t\t<NcActionLink :href=\"downloadURL\"\n\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t:download=\"downloadURL\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<Download :size=\"22\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ t('files_versions', 'Download version') }}\n\t\t\t\t</NcActionLink>\n\t\t\t\t<NcActionButton v-if=\"!isCurrent && enableDeletion\"\n\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t@click=\"deleteVersion\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<Delete :size=\"22\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ t('files_versions', 'Delete version') }}\n\t\t\t\t</NcActionButton>\n\t\t\t</template>\n\t\t</NcListItem>\n\t\t<NcModal v-if=\"showVersionLabelForm\"\n\t\t\t:title=\"t('files_versions', 'Name this version')\"\n\t\t\t@close=\"showVersionLabelForm = false\">\n\t\t\t<form class=\"version-label-modal\"\n\t\t\t\t@submit.prevent=\"setVersionLabel(formVersionLabelValue)\">\n\t\t\t\t<label>\n\t\t\t\t\t<div class=\"version-label-modal__title\">{{ t('files_versions', 'Version name') }}</div>\n\t\t\t\t\t<NcTextField ref=\"labelInput\"\n\t\t\t\t\t\t:value.sync=\"formVersionLabelValue\"\n\t\t\t\t\t\t:placeholder=\"t('files_versions', 'Version name')\"\n\t\t\t\t\t\t:label-outside=\"true\" />\n\t\t\t\t</label>\n\n\t\t\t\t<div class=\"version-label-modal__info\">\n\t\t\t\t\t{{ t('files_versions', 'Named versions are persisted, and excluded from automatic cleanups when your storage quota is full.') }}\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"version-label-modal__actions\">\n\t\t\t\t\t<NcButton :disabled=\"formVersionLabelValue.trim().length === 0\" @click=\"setVersionLabel('')\">\n\t\t\t\t\t\t{{ t('files_versions', 'Remove version name') }}\n\t\t\t\t\t</NcButton>\n\t\t\t\t\t<NcButton type=\"primary\" native-type=\"submit\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<Check />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t{{ t('files_versions', 'Save version name') }}\n\t\t\t\t\t</NcButton>\n\t\t\t\t</div>\n\t\t\t</form>\n\t\t</NcModal>\n\t</div>\n</template>\n\n<script>\nimport BackupRestore from 'vue-material-design-icons/BackupRestore.vue'\nimport Download from 'vue-material-design-icons/Download.vue'\nimport FileCompare from 'vue-material-design-icons/FileCompare.vue'\nimport Pencil from 'vue-material-design-icons/Pencil.vue'\nimport Check from 'vue-material-design-icons/Check.vue'\nimport Delete from 'vue-material-design-icons/Delete.vue'\nimport ImageOffOutline from 'vue-material-design-icons/ImageOffOutline.vue'\nimport { NcActionButton, NcActionLink, NcListItem, NcModal, NcButton, NcTextField, Tooltip } from '@nextcloud/vue'\nimport moment from '@nextcloud/moment'\nimport { translate } from '@nextcloud/l10n'\nimport { joinPaths } from '@nextcloud/paths'\nimport { getRootUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\n\nexport default {\n\tname: 'Version',\n\tcomponents: {\n\t\tNcActionLink,\n\t\tNcActionButton,\n\t\tNcListItem,\n\t\tNcModal,\n\t\tNcButton,\n\t\tNcTextField,\n\t\tBackupRestore,\n\t\tDownload,\n\t\tFileCompare,\n\t\tPencil,\n\t\tCheck,\n\t\tDelete,\n\t\tImageOffOutline,\n\t},\n\tdirectives: {\n\t\ttooltip: Tooltip,\n\t},\n\tfilters: {\n\t\t/**\n\t\t * @param {number} bytes\n\t\t * @return {string}\n\t\t */\n\t\thumanReadableSize(bytes) {\n\t\t\treturn OC.Util.humanFileSize(bytes)\n\t\t},\n\t\t/**\n\t\t * @param {number} timestamp\n\t\t * @return {string}\n\t\t */\n\t\thumanDateFromNow(timestamp) {\n\t\t\treturn moment(timestamp).fromNow()\n\t\t},\n\t},\n\tprops: {\n\t\t/** @type {Vue.PropOptions<import('../utils/versions.js').Version>} */\n\t\tversion: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tisCurrent: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tisFirstVersion: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tloadPreview: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tcanView: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tcanCompare: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tpreviewLoaded: false,\n\t\t\tshowVersionLabelForm: false,\n\t\t\tformVersionLabelValue: this.version.label,\n\t\t\tcapabilities: loadState('core', 'capabilities', { files: { version_labeling: false, version_deletion: false } }),\n\t\t}\n\t},\n\tcomputed: {\n\t\t/**\n\t\t * @return {string}\n\t\t */\n\t\tversionLabel() {\n\t\t\tconst label = this.version.label ?? ''\n\n\t\t\tif (this.isCurrent) {\n\t\t\t\tif (label === '') {\n\t\t\t\t\treturn translate('files_versions', 'Current version')\n\t\t\t\t} else {\n\t\t\t\t\treturn `${label} (${translate('files_versions', 'Current version')})`\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.isFirstVersion && label === '') {\n\t\t\t\treturn translate('files_versions', 'Initial version')\n\t\t\t}\n\n\t\t\treturn label\n\t\t},\n\n\t\t/**\n\t\t * @return {string}\n\t\t */\n\t\tdownloadURL() {\n\t\t\tif (this.isCurrent) {\n\t\t\t\treturn getRootUrl() + joinPaths('/remote.php/webdav', this.fileInfo.path, this.fileInfo.name)\n\t\t\t} else {\n\t\t\t\treturn getRootUrl() + this.version.url\n\t\t\t}\n\t\t},\n\n\t\t/** @return {string} */\n\t\tformattedDate() {\n\t\t\treturn moment(this.version.mtime).format('LLL')\n\t\t},\n\n\t\t/** @return {boolean} */\n\t\tenableLabeling() {\n\t\t\treturn this.capabilities.files.version_labeling === true\n\t\t},\n\n\t\t/** @return {boolean} */\n\t\tenableDeletion() {\n\t\t\treturn this.capabilities.files.version_deletion === true\n\t\t},\n\t},\n\tmethods: {\n\t\topenVersionLabelModal() {\n\t\t\tthis.showVersionLabelForm = true\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tthis.$refs.labelInput.$el.getElementsByTagName('input')[0].focus()\n\t\t\t})\n\t\t},\n\n\t\trestoreVersion() {\n\t\t\tthis.$emit('restore', this.version)\n\t\t},\n\n\t\tsetVersionLabel(label) {\n\t\t\tthis.formVersionLabelValue = label\n\t\t\tthis.showVersionLabelForm = false\n\t\t\tthis.$emit('label-update', this.version, label)\n\t\t},\n\n\t\tdeleteVersion() {\n\t\t\tthis.$emit('delete', this.version)\n\t\t},\n\n\t\tclick() {\n\t\t\tif (!this.canView) {\n\t\t\t\twindow.location = this.downloadURL\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.$emit('click', { version: this.version })\n\t\t},\n\n\t\tcompareVersion() {\n\t\t\tif (!this.canView) {\n\t\t\t\tthrow new Error('Cannot compare version of this file')\n\t\t\t}\n\t\t\tthis.$emit('compare', { version: this.version })\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.version {\n\tdisplay: flex;\n\tflex-direction: row;\n\n\t&__info {\n\t\tdisplay: flex;\n\t\tflex-direction: row;\n\t\talign-items: center;\n\t\tgap: 0.5rem;\n\n\t\t&__size {\n\t\t\tcolor: var(--color-text-lighter);\n\t\t}\n\t}\n\n\t&__image {\n\t\twidth: 3rem;\n\t\theight: 3rem;\n\t\tborder: 1px solid var(--color-border);\n\t\tborder-radius: var(--border-radius-large);\n\n\t\t// Useful to display no preview icon.\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tcolor: var(--color-text-light);\n\t}\n}\n\n.version-label-modal {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\tflex-direction: column;\n\theight: 250px;\n\tpadding: 16px;\n\n\t&__title {\n\t\tmargin-bottom: 12px;\n\t\tfont-weight: 600;\n\t}\n\n\t&__info {\n\t\tmargin-top: 12px;\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t&__actions {\n\t\tdisplay: flex;\n\t\tjustify-content: space-between;\n\t\tmargin-top: 64px;\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!./Version.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!./Version.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!./Version.vue?vue&type=style&index=0&id=b2ebd230&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!./Version.vue?vue&type=style&index=0&id=b2ebd230&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Version.vue?vue&type=template&id=b2ebd230&scoped=true&\"\nimport script from \"./Version.vue?vue&type=script&lang=js&\"\nexport * from \"./Version.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Version.vue?vue&type=style&index=0&id=b2ebd230&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 \"b2ebd230\",\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!./VersionTab.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!./VersionTab.vue?vue&type=script&lang=js&\"","<!--\n - @copyright 2022 Carl Schwan <carl@carlschwan.eu>\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -->\n<template>\n\t<ul data-files-versions-versions-list>\n\t\t<Version v-for=\"version in orderedVersions\"\n\t\t\t:key=\"version.mtime\"\n\t\t\t:can-view=\"canView\"\n\t\t\t:can-compare=\"canCompare\"\n\t\t\t:load-preview=\"isActive\"\n\t\t\t:version=\"version\"\n\t\t\t:file-info=\"fileInfo\"\n\t\t\t:is-current=\"version.mtime === fileInfo.mtime\"\n\t\t\t:is-first-version=\"version.mtime === initialVersionMtime\"\n\t\t\t@click=\"openVersion\"\n\t\t\t@compare=\"compareVersion\"\n\t\t\t@restore=\"handleRestore\"\n\t\t\t@label-update=\"handleLabelUpdate\"\n\t\t\t@delete=\"handleDelete\" />\n\t</ul>\n</template>\n\n<script>\nimport path from 'path'\n\nimport { showError, showSuccess } from '@nextcloud/dialogs'\nimport isMobile from '@nextcloud/vue/dist/Mixins/isMobile.js'\nimport { emit, subscribe, unsubscribe } from '@nextcloud/event-bus'\nimport { getCurrentUser } from '@nextcloud/auth'\n\nimport { fetchVersions, deleteVersion, restoreVersion, setVersionLabel } from '../utils/versions.js'\nimport Version from '../components/Version.vue'\n\nexport default {\n\tname: 'VersionTab',\n\tcomponents: {\n\t\tVersion,\n\t},\n\tmixins: [\n\t\tisMobile,\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tfileInfo: null,\n\t\t\tisActive: false,\n\t\t\t/** @type {import('../utils/versions.js').Version[]} */\n\t\t\tversions: [],\n\t\t\tloading: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\t/**\n\t\t * Order versions by mtime.\n\t\t * Put the current version at the top.\n\t\t *\n\t\t * @return {import('../utils/versions.js').Version[]}\n\t\t */\n\t\torderedVersions() {\n\t\t\treturn [...this.versions].sort((a, b) => {\n\t\t\t\tif (a.mtime === this.fileInfo.mtime) {\n\t\t\t\t\treturn -1\n\t\t\t\t} else if (b.mtime === this.fileInfo.mtime) {\n\t\t\t\t\treturn 1\n\t\t\t\t} else {\n\t\t\t\t\treturn b.mtime - a.mtime\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Return the mtime of the first version to display \"Initial version\" label\n\t\t *\n\t\t * @return {number}\n\t\t */\n\t\tinitialVersionMtime() {\n\t\t\treturn this.versions\n\t\t\t\t.map(version => version.mtime)\n\t\t\t\t.reduce((a, b) => Math.min(a, b))\n\t\t},\n\n\t\tviewerFileInfo() {\n\t\t\t// We need to remap bitmask to dav permissions as the file info we have is converted through client.js\n\t\t\tlet davPermissions = ''\n\t\t\tif (this.fileInfo.permissions & 1) {\n\t\t\t\tdavPermissions += 'R'\n\t\t\t}\n\t\t\tif (this.fileInfo.permissions & 2) {\n\t\t\t\tdavPermissions += 'W'\n\t\t\t}\n\t\t\tif (this.fileInfo.permissions & 8) {\n\t\t\t\tdavPermissions += 'D'\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...this.fileInfo,\n\t\t\t\tmime: this.fileInfo.mimetype,\n\t\t\t\tbasename: this.fileInfo.name,\n\t\t\t\tfilename: this.fileInfo.path + '/' + this.fileInfo.name,\n\t\t\t\tpermissions: davPermissions,\n\t\t\t\tfileid: this.fileInfo.id,\n\t\t\t}\n\t\t},\n\n\t\t/** @return {boolean} */\n\t\tcanView() {\n\t\t\treturn window.OCA.Viewer?.mimetypesCompare?.includes(this.fileInfo.mimetype)\n\t\t},\n\n\t\tcanCompare() {\n\t\t\treturn !this.isMobile\n\t\t},\n\t},\n\tmounted() {\n\t\tsubscribe('files_versions:restore:restored', this.fetchVersions)\n\t},\n\tbeforeUnmount() {\n\t\tunsubscribe('files_versions:restore:restored', this.fetchVersions)\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Update current fileInfo and fetch new data\n\t\t *\n\t\t * @param {object} fileInfo the current file FileInfo\n\t\t */\n\t\tasync update(fileInfo) {\n\t\t\tthis.fileInfo = fileInfo\n\t\t\tthis.resetState()\n\t\t\tthis.fetchVersions()\n\t\t},\n\n\t\t/**\n\t\t * @param {boolean} isActive whether the tab is active\n\t\t */\n\t\tasync setIsActive(isActive) {\n\t\t\tthis.isActive = isActive\n\t\t},\n\n\t\t/**\n\t\t * Get the existing versions infos\n\t\t */\n\t\tasync fetchVersions() {\n\t\t\ttry {\n\t\t\t\tthis.loading = true\n\t\t\t\tthis.versions = await fetchVersions(this.fileInfo)\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Handle restored event from Version.vue\n\t\t *\n\t\t * @param {import('../utils/versions.js').Version} version\n\t\t */\n\t\tasync handleRestore(version) {\n\t\t\t// Update local copy of fileInfo as rendering depends on it.\n\t\t\tconst oldFileInfo = this.fileInfo\n\t\t\tthis.fileInfo = {\n\t\t\t\t...this.fileInfo,\n\t\t\t\tsize: version.size,\n\t\t\t\tmtime: version.mtime,\n\t\t\t}\n\n\t\t\tconst restoreStartedEventState = {\n\t\t\t\tpreventDefault: false,\n\t\t\t\tfileInfo: this.fileInfo,\n\t\t\t\tversion,\n\t\t\t}\n\t\t\temit('files_versions:restore:requested', restoreStartedEventState)\n\t\t\tif (restoreStartedEventState.preventDefault) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tawait restoreVersion(version)\n\t\t\t\tif (version.label !== '') {\n\t\t\t\t\tshowSuccess(t('files_versions', `${version.label} restored`))\n\t\t\t\t} else if (version.mtime === this.initialVersionMtime) {\n\t\t\t\t\tshowSuccess(t('files_versions', 'Initial version restored'))\n\t\t\t\t} else {\n\t\t\t\t\tshowSuccess(t('files_versions', 'Version restored'))\n\t\t\t\t}\n\t\t\t\temit('files_versions:restore:restored', version)\n\t\t\t} catch (exception) {\n\t\t\t\tthis.fileInfo = oldFileInfo\n\t\t\t\tshowError(t('files_versions', 'Could not restore version'))\n\t\t\t\temit('files_versions:restore:failed', version)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Handle label-updated event from Version.vue\n\t\t *\n\t\t * @param {import('../utils/versions.js').Version} version\n\t\t * @param {string} newName\n\t\t */\n\t\tasync handleLabelUpdate(version, newName) {\n\t\t\tconst oldLabel = version.label\n\t\t\tversion.label = newName\n\n\t\t\ttry {\n\t\t\t\tawait setVersionLabel(version, newName)\n\t\t\t} catch (exception) {\n\t\t\t\tversion.label = oldLabel\n\t\t\t\tshowError(t('files_versions', 'Could not set version name'))\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Handle deleted event from Version.vue\n\t\t *\n\t\t * @param {import('../utils/versions.js').Version} version\n\t\t * @param {string} newName\n\t\t */\n\t\tasync handleDelete(version) {\n\t\t\tconst index = this.versions.indexOf(version)\n\t\t\tthis.versions.splice(index, 1)\n\n\t\t\ttry {\n\t\t\t\tawait deleteVersion(version)\n\t\t\t} catch (exception) {\n\t\t\t\tthis.versions.push(version)\n\t\t\t\tshowError(t('files_versions', 'Could not delete version'))\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Reset the current view to its default state\n\t\t */\n\t\tresetState() {\n\t\t\tthis.$set(this, 'versions', [])\n\t\t},\n\n\t\topenVersion({ version }) {\n\t\t\t// Open current file view instead of read only\n\t\t\tif (version.mtime === this.fileInfo.mtime) {\n\t\t\t\tOCA.Viewer.open({ fileInfo: this.viewerFileInfo })\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Versions previews are too small for our use case, so we override hasPreview and previewUrl\n\t\t\t// which makes the viewer render the original file.\n\t\t\t// We also point to the original filename if the version is the current one.\n\t\t\tconst versions = this.versions.map(version => ({\n\t\t\t\t...version,\n\t\t\t\tfilename: version.mtime === this.fileInfo.mtime ? path.join('files', getCurrentUser()?.uid ?? '', this.fileInfo.path, this.fileInfo.name) : version.filename,\n\t\t\t\thasPreview: false,\n\t\t\t\tpreviewUrl: undefined,\n\t\t\t}))\n\n\t\t\tOCA.Viewer.open({\n\t\t\t\tfileInfo: versions.find(v => v.source === version.source),\n\t\t\t\tenableSidebar: false,\n\t\t\t})\n\t\t},\n\n\t\tcompareVersion({ version }) {\n\t\t\tconst versions = this.versions.map(version => ({ ...version, hasPreview: false, previewUrl: undefined }))\n\n\t\t\tOCA.Viewer.compare(this.viewerFileInfo, versions.find(v => v.source === version.source))\n\t\t},\n\t},\n}\n</script>\n","/**\n * @copyright 2022 Louis Chemineau <mlouis@chmn.me>\n *\n * @author Louis Chemineau <mlouis@chmn.me>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { joinPaths } from '@nextcloud/paths'\nimport { generateRemoteUrl, generateUrl } from '@nextcloud/router'\nimport moment from '@nextcloud/moment'\n\nimport { encodeFilePath } from '../../../files/src/utils/fileUtils.js'\n\nimport client from '../utils/davClient.js'\nimport davRequest from '../utils/davRequest.js'\nimport logger from '../utils/logger.js'\n\n/**\n * @typedef {object} Version\n * @property {string} fileId - The id of the file associated to the version.\n * @property {string} label - 'Current version' or ''\n * @property {string} filename - File name relative to the version DAV endpoint\n * @property {string} basename - A base name generated from the mtime\n * @property {string} mime - Empty for the current version, else the actual mime type of the version\n * @property {string} etag - Empty for the current version, else the actual mime type of the version\n * @property {string} size - Human readable size\n * @property {string} type - 'file'\n * @property {number} mtime - Version creation date as a timestamp\n * @property {string} permissions - Only readable: 'R'\n * @property {boolean} hasPreview - Whether the version has a preview\n * @property {string} previewUrl - Preview URL of the version\n * @property {string} url - Download URL of the version\n * @property {string} source - The WebDAV endpoint of the ressource\n * @property {string|null} fileVersion - The version id, null for the current version\n */\n\n/**\n * @param fileInfo\n * @return {Promise<Version[]>}\n */\nexport async function fetchVersions(fileInfo) {\n\tconst path = `/versions/${getCurrentUser()?.uid}/versions/${fileInfo.id}`\n\n\ttry {\n\t\t/** @type {import('webdav').ResponseDataDetailed<import('webdav').FileStat[]>} */\n\t\tconst response = await client.getDirectoryContents(path, {\n\t\t\tdata: davRequest,\n\t\t\tdetails: true,\n\t\t})\n\t\treturn response.data\n\t\t\t// Filter out root\n\t\t\t.filter(({ mime }) => mime !== '')\n\t\t\t.map(version => formatVersion(version, fileInfo))\n\t} catch (exception) {\n\t\tlogger.error('Could not fetch version', { exception })\n\t\tthrow exception\n\t}\n}\n\n/**\n * Restore the given version\n *\n * @param {Version} version\n */\nexport async function restoreVersion(version) {\n\ttry {\n\t\tlogger.debug('Restoring version', { url: version.url })\n\t\tawait client.moveFile(\n\t\t\t`/versions/${getCurrentUser()?.uid}/versions/${version.fileId}/${version.fileVersion}`,\n\t\t\t`/versions/${getCurrentUser()?.uid}/restore/target`,\n\t\t)\n\t} catch (exception) {\n\t\tlogger.error('Could not restore version', { exception })\n\t\tthrow exception\n\t}\n}\n\n/**\n * Format version\n *\n * @param {object} version - raw version received from the versions DAV endpoint\n * @param {object} fileInfo - file properties received from the files DAV endpoint\n * @return {Version}\n */\nfunction formatVersion(version, fileInfo) {\n\tconst mtime = moment(version.lastmod).unix() * 1000\n\tlet previewUrl = ''\n\n\tif (mtime === fileInfo.mtime) { // Version is the current one\n\t\tpreviewUrl = generateUrl('/core/preview?fileId={fileId}&c={fileEtag}&x=250&y=250&forceIcon=0&a=0', {\n\t\t\tfileId: fileInfo.id,\n\t\t\tfileEtag: fileInfo.etag,\n\t\t})\n\t} else {\n\t\tpreviewUrl = generateUrl('/apps/files_versions/preview?file={file}&version={fileVersion}', {\n\t\t\tfile: joinPaths(fileInfo.path, fileInfo.name),\n\t\t\tfileVersion: version.basename,\n\t\t})\n\t}\n\n\treturn {\n\t\tfileId: fileInfo.id,\n\t\tlabel: version.props['version-label'],\n\t\tfilename: version.filename,\n\t\tbasename: moment(mtime).format('LLL'),\n\t\tmime: version.mime,\n\t\tetag: `${version.props.getetag}`,\n\t\tsize: version.size,\n\t\ttype: version.type,\n\t\tmtime,\n\t\tpermissions: 'R',\n\t\thasPreview: version.props['has-preview'] === 1,\n\t\tpreviewUrl,\n\t\turl: joinPaths('/remote.php/dav', version.filename),\n\t\tsource: generateRemoteUrl('dav') + encodeFilePath(version.filename),\n\t\tfileVersion: version.basename,\n\t}\n}\n\n/**\n * @param {Version} version\n * @param {string} newLabel\n */\nexport async function setVersionLabel(version, newLabel) {\n\treturn await client.customRequest(\n\t\tversion.filename,\n\t\t{\n\t\t\tmethod: 'PROPPATCH',\n\t\t\tdata: `<?xml version=\"1.0\"?>\n\t\t\t\t\t<d:propertyupdate xmlns:d=\"DAV:\"\n\t\t\t\t\t\txmlns:oc=\"http://owncloud.org/ns\"\n\t\t\t\t\t\txmlns:nc=\"http://nextcloud.org/ns\"\n\t\t\t\t\t\txmlns:ocs=\"http://open-collaboration-services.org/ns\">\n\t\t\t\t\t<d:set>\n\t\t\t\t\t\t<d:prop>\n\t\t\t\t\t\t\t<nc:version-label>${newLabel}</nc:version-label>\n\t\t\t\t\t\t</d:prop>\n\t\t\t\t\t</d:set>\n\t\t\t\t\t</d:propertyupdate>`,\n\t\t},\n\t)\n}\n\n/**\n * @param {Version} version\n */\nexport async function deleteVersion(version) {\n\tawait client.deleteFile(version.filename)\n}\n","/**\n * @copyright Copyright (c) 2019 Louis Chmn <louis@chmn.me>\n *\n * @author Louis Chmn <louis@chmn.me>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default `<?xml version=\"1.0\"?>\n<d:propfind xmlns:d=\"DAV:\"\n\txmlns:oc=\"http://owncloud.org/ns\"\n\txmlns:nc=\"http://nextcloud.org/ns\"\n\txmlns:ocs=\"http://open-collaboration-services.org/ns\">\n\t<d:prop>\n\t\t<d:getcontentlength />\n\t\t<d:getcontenttype />\n\t\t<d:getlastmodified />\n\t\t<d:getetag />\n\t\t<nc:version-label />\n\t\t<nc:has-preview />\n\t</d:prop>\n</d:propfind>`\n","import { render, staticRenderFns } from \"./VersionTab.vue?vue&type=template&id=61ad6e74&\"\nimport script from \"./VersionTab.vue?vue&type=script&lang=js&\"\nexport * from \"./VersionTab.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('ul',{attrs:{\"data-files-versions-versions-list\":\"\"}},_vm._l((_vm.orderedVersions),function(version){return _c('Version',{key:version.mtime,attrs:{\"can-view\":_vm.canView,\"can-compare\":_vm.canCompare,\"load-preview\":_vm.isActive,\"version\":version,\"file-info\":_vm.fileInfo,\"is-current\":version.mtime === _vm.fileInfo.mtime,\"is-first-version\":version.mtime === _vm.initialVersionMtime},on:{\"click\":_vm.openVersion,\"compare\":_vm.compareVersion,\"restore\":_vm.handleRestore,\"label-update\":_vm.handleLabelUpdate,\"delete\":_vm.handleDelete}})}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2022 Carl Schwan <carl@carlschwan.eu>\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n'\n\nimport VersionTab from './views/VersionTab.vue'\nimport VTooltip from 'v-tooltip'\n// eslint-disable-next-line n/no-missing-import, import/no-unresolved\nimport BackupRestore from '@mdi/svg/svg/backup-restore.svg?raw'\n\nVue.prototype.t = t\nVue.prototype.n = n\n\nVue.use(VTooltip)\n\n// Init Sharing tab component\nconst View = Vue.extend(VersionTab)\nlet TabInstance = null\n\nwindow.addEventListener('DOMContentLoaded', function() {\n\tif (OCA.Files?.Sidebar === undefined) {\n\t\treturn\n\t}\n\n\tOCA.Files.Sidebar.registerTab(new OCA.Files.Sidebar.Tab({\n\t\tid: 'version_vue',\n\t\tname: t('files_versions', 'Versions'),\n\t\ticonSvg: BackupRestore,\n\n\t\tasync mount(el, fileInfo, context) {\n\t\t\tif (TabInstance) {\n\t\t\t\tTabInstance.$destroy()\n\t\t\t}\n\t\t\tTabInstance = new View({\n\t\t\t\t// Better integration with vue parent component\n\t\t\t\tparent: context,\n\t\t\t})\n\t\t\t// Only mount after we have all the info we need\n\t\t\tawait TabInstance.update(fileInfo)\n\t\t\tTabInstance.$mount(el)\n\t\t},\n\t\tupdate(fileInfo) {\n\t\t\tTabInstance.update(fileInfo)\n\t\t},\n\t\tsetIsActive(isActive) {\n\t\t\tTabInstance.setIsActive(isActive)\n\t\t},\n\t\tdestroy() {\n\t\t\tTabInstance.$destroy()\n\t\t\tTabInstance = null\n\t\t},\n\t\tenabled(fileInfo) {\n\t\t\treturn !(fileInfo?.isDirectory() ?? true)\n\t\t},\n\t}))\n})\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".version[data-v-b2ebd230]{display:flex;flex-direction:row}.version__info[data-v-b2ebd230]{display:flex;flex-direction:row;align-items:center;gap:.5rem}.version__info__size[data-v-b2ebd230]{color:var(--color-text-lighter)}.version__image[data-v-b2ebd230]{width:3rem;height:3rem;border:1px solid var(--color-border);border-radius:var(--border-radius-large);display:flex;justify-content:center;color:var(--color-text-light)}.version-label-modal[data-v-b2ebd230]{display:flex;justify-content:space-between;flex-direction:column;height:250px;padding:16px}.version-label-modal__title[data-v-b2ebd230]{margin-bottom:12px;font-weight:600}.version-label-modal__info[data-v-b2ebd230]{margin-top:12px;color:var(--color-text-maxcontrast)}.version-label-modal__actions[data-v-b2ebd230]{display:flex;justify-content:space-between;margin-top:64px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_versions/src/components/Version.vue\"],\"names\":[],\"mappings\":\"AACA,0BACC,YAAA,CACA,kBAAA,CAEA,gCACC,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,SAAA,CAEA,sCACC,+BAAA,CAIF,iCACC,UAAA,CACA,WAAA,CACA,oCAAA,CACA,wCAAA,CAGA,YAAA,CACA,sBAAA,CACA,6BAAA,CAIF,sCACC,YAAA,CACA,6BAAA,CACA,qBAAA,CACA,YAAA,CACA,YAAA,CAEA,6CACC,kBAAA,CACA,eAAA,CAGD,4CACC,eAAA,CACA,mCAAA,CAGD,+CACC,YAAA,CACA,6BAAA,CACA,eAAA\",\"sourcesContent\":[\"\\n.version {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\n\\t&__info {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: row;\\n\\t\\talign-items: center;\\n\\t\\tgap: 0.5rem;\\n\\n\\t\\t&__size {\\n\\t\\t\\tcolor: var(--color-text-lighter);\\n\\t\\t}\\n\\t}\\n\\n\\t&__image {\\n\\t\\twidth: 3rem;\\n\\t\\theight: 3rem;\\n\\t\\tborder: 1px solid var(--color-border);\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\n\\t\\t// Useful to display no preview icon.\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: center;\\n\\t\\tcolor: var(--color-text-light);\\n\\t}\\n}\\n\\n.version-label-modal {\\n\\tdisplay: flex;\\n\\tjustify-content: space-between;\\n\\tflex-direction: column;\\n\\theight: 250px;\\n\\tpadding: 16px;\\n\\n\\t&__title {\\n\\t\\tmargin-bottom: 12px;\\n\\t\\tfont-weight: 600;\\n\\t}\\n\\n\\t&__info {\\n\\t\\tmargin-top: 12px;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n\\n\\t&__actions {\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: space-between;\\n\\t\\tmargin-top: 64px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 30094,\n\t\"./hi.js\": 30094,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + \"00434e4baa0d8e7b79f1\" + \"\";\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 = 1358;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) scriptUrl = scripts[scripts.length - 1].src\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t1358: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], () => (__webpack_require__(56875)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","encodeFilePath","path","pathSections","startsWith","concat","split","relativePath","forEach","section","encodeURIComponent","remote","generateRemoteUrl","createClient","headers","requesttoken","_getRequestToken","getRequestToken","getLoggerBuilder","setApp","detectUser","build","name","components","NcActionLink","NcActionButton","NcListItem","NcModal","NcButton","NcTextField","BackupRestore","Download","FileCompare","Pencil","Check","Delete","ImageOffOutline","directives","tooltip","Tooltip","filters","humanReadableSize","bytes","OC","Util","humanFileSize","humanDateFromNow","timestamp","moment","fromNow","props","version","type","Object","required","fileInfo","isCurrent","Boolean","default","isFirstVersion","loadPreview","canView","canCompare","data","previewLoaded","showVersionLabelForm","formVersionLabelValue","label","capabilities","loadState","files","version_labeling","version_deletion","computed","versionLabel","_this$version$label","translate","downloadURL","getRootUrl","joinPaths","url","formattedDate","mtime","format","enableLabeling","enableDeletion","methods","openVersionLabelModal","$nextTick","$refs","labelInput","$el","getElementsByTagName","focus","restoreVersion","$emit","setVersionLabel","deleteVersion","click","window","location","compareVersion","Error","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","Version","_vm","this","_c","_self","staticClass","attrs","on","scopedSlots","_u","key","fn","hasPreview","previewUrl","$event","proxy","_v","_s","_f","size","t","_e","preventDefault","ref","trim","length","mixins","isMobile","isActive","versions","loading","orderedVersions","sort","a","b","initialVersionMtime","map","reduce","Math","min","viewerFileInfo","davPermissions","permissions","mime","mimetype","basename","filename","fileid","id","_window$OCA$Viewer","_window$OCA$Viewer$mi","OCA","Viewer","mimetypesCompare","includes","mounted","subscribe","fetchVersions","beforeUnmount","unsubscribe","resetState","async","_getCurrentUser","getCurrentUser","uid","client","details","filter","_ref","lastmod","unix","generateUrl","fileId","fileEtag","etag","file","fileVersion","getetag","source","formatVersion","exception","logger","error","oldFileInfo","restoreStartedEventState","emit","_getCurrentUser2","_getCurrentUser3","debug","showSuccess","showError","newName","oldLabel","newLabel","method","index","indexOf","splice","push","$set","openVersion","open","_getCurrentUser$uid","undefined","find","v","enableSidebar","_ref2","compare","_l","handleRestore","handleLabelUpdate","handleDelete","Vue","n","VTooltip","View","VersionTab","TabInstance","addEventListener","_OCA$Files","Files","Sidebar","registerTab","Tab","iconSvg","el","context","$destroy","parent","update","$mount","setIsActive","destroy","enabled","_fileInfo$isDirectory","isDirectory","___CSS_LOADER_EXPORT___","module","webpackContext","req","webpackContextResolve","__webpack_require__","o","e","code","keys","resolve","exports","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","call","m","O","result","chunkIds","priority","notFulfilled","Infinity","i","fulfilled","j","every","r","getter","__esModule","d","definition","defineProperty","enumerable","get","f","chunkId","Promise","all","promises","u","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","l","done","script","needAttach","scripts","document","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","setTimeout","bind","target","head","appendChild","Symbol","toStringTag","value","nmd","paths","children","scriptUrl","importScripts","currentScript","replace","p","baseURI","self","href","installedChunks","installedChunkData","promise","reject","errorType","realSrc","message","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/lib/l10n/fr.js b/lib/l10n/fr.js
index c914e305c2d..558c2d320f2 100644
--- a/lib/l10n/fr.js
+++ b/lib/l10n/fr.js
@@ -132,7 +132,7 @@ OC.L10N.register(
"Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X n'est pas pris en charge et %s ne fonctionnera pas correctement sur cette plate-forme. Son utilisation est à vos risques et périls !",
"For the best results, please consider using a GNU/Linux server instead." : "Pour obtenir les meilleurs résultats, vous devriez utiliser un serveur GNU/Linux.",
"It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Il semble que cette instance %s fonctionne sur un environnement PHP 32-bit et open_basedir a été configuré dans php.ini. Cela engendre des problèmes avec les fichiers de taille supérieure à 4 Go et est donc fortement déconseillé.",
- "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Veuillez supprimer la configuration open_basedir de votre php.ini ou utiliser une version PHP 64-bit.",
+ "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Veuillez retirer la configuration open_basedir de votre php.ini ou utiliser une version PHP 64-bit.",
"Set an admin username." : "Spécifiez un nom d'utilisateur pour l'administrateur.",
"Set an admin password." : "Spécifiez un mot de passe pour l'administrateur.",
"Cannot create or write into the data directory %s" : "Impossible de créer ou d'écrire dans le répertoire des données %s",
diff --git a/lib/l10n/fr.json b/lib/l10n/fr.json
index b4b6844f846..a78037653a6 100644
--- a/lib/l10n/fr.json
+++ b/lib/l10n/fr.json
@@ -130,7 +130,7 @@
"Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X n'est pas pris en charge et %s ne fonctionnera pas correctement sur cette plate-forme. Son utilisation est à vos risques et périls !",
"For the best results, please consider using a GNU/Linux server instead." : "Pour obtenir les meilleurs résultats, vous devriez utiliser un serveur GNU/Linux.",
"It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Il semble que cette instance %s fonctionne sur un environnement PHP 32-bit et open_basedir a été configuré dans php.ini. Cela engendre des problèmes avec les fichiers de taille supérieure à 4 Go et est donc fortement déconseillé.",
- "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Veuillez supprimer la configuration open_basedir de votre php.ini ou utiliser une version PHP 64-bit.",
+ "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Veuillez retirer la configuration open_basedir de votre php.ini ou utiliser une version PHP 64-bit.",
"Set an admin username." : "Spécifiez un nom d'utilisateur pour l'administrateur.",
"Set an admin password." : "Spécifiez un mot de passe pour l'administrateur.",
"Cannot create or write into the data directory %s" : "Impossible de créer ou d'écrire dans le répertoire des données %s",
diff --git a/lib/l10n/mk.js b/lib/l10n/mk.js
index bda43400d66..ed86eaa14f8 100644
--- a/lib/l10n/mk.js
+++ b/lib/l10n/mk.js
@@ -260,6 +260,7 @@ OC.L10N.register(
"Storage connection error. %s" : "Грешка во конекција до складиштето. %s",
"Storage is temporarily not available" : "Складиштето моментално не е достапно",
"Storage connection timeout. %s" : "Поврзувањето со складиштето не успеа. %s",
+ "Generate headline" : "Генерирај заглавие",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "Датотеките од аоликацијата %1$s не се преклопени коректно. Проверете дали верзијата е компатибилна со серверот.",
"Full name" : "Цело име",
"The user limit has been reached and the user was not created. Check your notifications to learn more." : "Максималниот број на корисници е достигнат. Проверете ги вашите известувања за да дознаете повеќе.",
diff --git a/lib/l10n/mk.json b/lib/l10n/mk.json
index 3177350622d..e75fcec8743 100644
--- a/lib/l10n/mk.json
+++ b/lib/l10n/mk.json
@@ -258,6 +258,7 @@
"Storage connection error. %s" : "Грешка во конекција до складиштето. %s",
"Storage is temporarily not available" : "Складиштето моментално не е достапно",
"Storage connection timeout. %s" : "Поврзувањето со складиштето не успеа. %s",
+ "Generate headline" : "Генерирај заглавие",
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "Датотеките од аоликацијата %1$s не се преклопени коректно. Проверете дали верзијата е компатибилна со серверот.",
"Full name" : "Цело име",
"The user limit has been reached and the user was not created. Check your notifications to learn more." : "Максималниот број на корисници е достигнат. Проверете ги вашите известувања за да дознаете повеќе.",