Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent Petry <vincent@nextcloud.com>2022-07-22 17:11:01 +0300
committerVincent Petry <vincent@nextcloud.com>2022-07-26 11:19:19 +0300
commitbb2557c38974bea38dcc48185723b33781412cbd (patch)
treec44ba38e9283120d290bb242f9ddf46231d8464d
parenta9c23e1afbda3de62c3436b667bbb1053f426af5 (diff)
Replace files app ids to classes
Replaced ids to classes for the following: - #filestable -> .files-filestable - #fileList -> .files-fileList - #controls -> .files-controls - #emptycontent -> .emptyfilelist.emptycontent Signed-off-by: Vincent Petry <vincent@nextcloud.com>
-rw-r--r--apps/comments/tests/js/filespluginSpec.js4
-rw-r--r--apps/files/css/files.css300
-rw-r--r--apps/files/css/files.scss152
-rw-r--r--apps/files/css/merged.css316
-rw-r--r--apps/files/css/mobile.css10
-rw-r--r--apps/files/css/mobile.scss10
-rw-r--r--apps/files/css/upload.css6
-rw-r--r--apps/files/css/upload.scss6
-rw-r--r--apps/files/js/favoritesfilelist.js6
-rw-r--r--apps/files/js/file-upload.js4
-rw-r--r--apps/files/js/filelist.js59
-rw-r--r--apps/files/js/keyboardshortcuts.js20
-rw-r--r--apps/files/js/recentfilelist.js6
-rw-r--r--apps/files/templates/list.php28
-rw-r--r--apps/files/templates/recentlist.php14
-rw-r--r--apps/files/templates/simplelist.php14
-rw-r--r--apps/files/tests/js/breadcrumbSpec.js62
-rw-r--r--apps/files/tests/js/favoritesfilelistspec.js10
-rw-r--r--apps/files/tests/js/favoritespluginspec.js2
-rw-r--r--apps/files/tests/js/fileUploadSpec.js6
-rw-r--r--apps/files/tests/js/fileactionsSpec.js6
-rw-r--r--apps/files/tests/js/fileactionsmenuSpec.js2
-rw-r--r--apps/files/tests/js/filelistSpec.js178
-rw-r--r--apps/files/tests/js/tagspluginspec.js4
-rw-r--r--apps/files_external/css/external.css2
-rw-r--r--apps/files_external/js/mountsfilelist.js6
-rw-r--r--apps/files_external/js/settings.js2
-rw-r--r--apps/files_external/js/statusmanager.js12
-rw-r--r--apps/files_external/templates/list.php14
-rw-r--r--apps/files_external/templates/settings.php2
-rw-r--r--apps/files_external/tests/appSpec.js2
-rw-r--r--apps/files_external/tests/js/mountsfilelistSpec.js12
-rw-r--r--apps/files_sharing/css/mobile.css10
-rw-r--r--apps/files_sharing/css/mobile.scss10
-rw-r--r--apps/files_sharing/css/public.css18
-rw-r--r--apps/files_sharing/css/public.scss18
-rw-r--r--apps/files_sharing/css/publicView.css28
-rw-r--r--apps/files_sharing/js/app.js12
-rw-r--r--apps/files_sharing/js/files_drop.js2
-rw-r--r--apps/files_sharing/js/public.js4
-rw-r--r--apps/files_sharing/js/sharedfilelist.js6
-rw-r--r--apps/files_sharing/src/services/ConfigService.js4
-rw-r--r--apps/files_sharing/templates/list.php14
-rw-r--r--apps/files_sharing/templates/public.php2
-rw-r--r--apps/files_sharing/tests/js/appSpec.js2
-rw-r--r--apps/files_sharing/tests/js/publicAppSpec.js10
-rw-r--r--apps/files_sharing/tests/js/shareSpec.js4
-rw-r--r--apps/files_trashbin/src/filelist.js6
-rw-r--r--apps/files_trashbin/src/trash.scss2
-rw-r--r--apps/files_trashbin/templates/index.php20
-rw-r--r--apps/files_trashbin/tests/js/filelistSpec.js12
-rw-r--r--apps/systemtags/src/systemtagsfilelist.js12
-rw-r--r--apps/systemtags/templates/list.php16
-rw-r--r--apps/systemtags/tests/js/systemtagsfilelistSpec.js14
-rw-r--r--core/css/mobile.css10
-rw-r--r--core/css/mobile.scss10
-rw-r--r--core/css/server.css18
-rw-r--r--core/css/styles.css8
-rw-r--r--core/css/styles.scss6
-rw-r--r--core/templates/filepicker.html8
-rw-r--r--dist/files_sharing-files_sharing.js4
-rw-r--r--dist/files_sharing-files_sharing.js.map2
-rw-r--r--dist/files_sharing-files_sharing_tab.js4
-rw-r--r--dist/files_sharing-files_sharing_tab.js.map2
-rw-r--r--dist/files_trashbin-files_trashbin.js4
-rw-r--r--dist/files_trashbin-files_trashbin.js.map2
-rw-r--r--dist/systemtags-systemtags.js4
-rw-r--r--dist/systemtags-systemtags.js.map2
-rw-r--r--tests/acceptance/features/bootstrap/FileListContext.php6
69 files changed, 798 insertions, 795 deletions
diff --git a/apps/comments/tests/js/filespluginSpec.js b/apps/comments/tests/js/filespluginSpec.js
index a2f9750f9fc..0cfe584218e 100644
--- a/apps/comments/tests/js/filespluginSpec.js
+++ b/apps/comments/tests/js/filespluginSpec.js
@@ -31,9 +31,9 @@ describe('OCA.Comments.FilesPlugin tests', function() {
// dummy file list
var $div = $(
'<div>' +
- '<table id="filestable">' +
+ '<table class="files-filestable">' +
'<thead></thead>' +
- '<tbody id="fileList"></tbody>' +
+ '<tbody class="files-fileList"></tbody>' +
'</table>' +
'</div>');
$('#content').append($div);
diff --git a/apps/files/css/files.css b/apps/files/css/files.css
index 83ad47713f4..ec7733ac6a4 100644
--- a/apps/files/css/files.css
+++ b/apps/files/css/files.css
@@ -111,13 +111,13 @@
.newFileMenu .error,
.newFileMenu .error + .icon-confirm,
-#fileList .error {
+.files-fileList .error {
color: var(--color-error);
border-color: var(--color-error);
}
/* FILE TABLE */
-#filestable {
+.files-filestable {
position: relative;
width: 100%;
min-width: 250px;
@@ -127,10 +127,10 @@
* This is a dirty hack as the sticky header requires us to use a different display type on the table element
*/
}
-#emptycontent:not(.hidden) ~ #filestable {
+.emptycontent:not(.hidden) ~ .files-filestable {
display: none;
}
-#filestable thead {
+.files-filestable thead {
position: -webkit-sticky;
position: sticky;
top: 50px;
@@ -138,20 +138,20 @@
display: block;
background-color: var(--color-main-background-translucent);
}
-#filestable tbody {
+.files-filestable tbody {
display: table;
width: 100%;
}
-#filestable tbody tr[data-permissions="0"],
-#filestable tbody tr[data-permissions="16"] {
+.files-filestable tbody tr[data-permissions="0"],
+.files-filestable tbody tr[data-permissions="16"] {
background-color: var(--color-background-dark);
}
-#filestable tbody tr[data-permissions="0"] td.filename .nametext .innernametext,
-#filestable tbody tr[data-permissions="16"] td.filename .nametext .innernametext {
+.files-filestable tbody tr[data-permissions="0"] td.filename .nametext .innernametext,
+.files-filestable tbody tr[data-permissions="16"] td.filename .nametext .innernametext {
color: var(--color-text-maxcontrast);
}
-#filestable.hidden {
+.files-filestable.hidden {
display: none;
}
@@ -165,7 +165,7 @@
width: calc(100% - 300px);
}
-.file-drag, .file-drag #filestable tbody tr, .file-drag #filestable tbody tr:hover {
+.file-drag, .file-drag .files-filestable tbody tr, .file-drag .files-filestable tbody tr:hover {
background-color: var(--color-primary-light) !important;
}
@@ -173,11 +173,11 @@
background-color: var(--color-main-background) !important;
}
-.file-drag #filestable tbody tr, .file-drag #filestable tbody tr:hover {
+.file-drag .files-filestable tbody tr, .file-drag .files-filestable tbody tr:hover {
background-color: transparent !important;
}
-.app-files #app-content.dir-drop #filestable tbody tr.dropping-to-dir {
+.app-files #app-content.dir-drop .files-filestable tbody tr.dropping-to-dir {
background-color: var(--color-primary-light) !important;
}
@@ -256,23 +256,23 @@
opacity: 0.3;
}
-#filestable tbody tr {
+.files-filestable tbody tr {
height: 51px;
}
-#filestable tbody tr:hover,
-#filestable tbody tr:focus,
-#filestable tbody .name:focus,
-#filestable tbody tr:hover .filename form,
+.files-filestable tbody tr:hover,
+.files-filestable tbody tr:focus,
+.files-filestable tbody .name:focus,
+.files-filestable tbody tr:hover .filename form,
table tr.mouseOver td {
background-color: var(--color-background-hover);
}
-#filestable tbody tr:active,
-#filestable tbody tr.highlighted,
-#filestable tbody tr.highlighted .name:focus,
-#filestable tbody tr.selected,
-#filestable tbody tr.searchresult {
+.files-filestable tbody tr:active,
+.files-filestable tbody tr.highlighted,
+.files-filestable tbody tr.highlighted .name:focus,
+.files-filestable tbody tr.selected,
+.files-filestable tbody tr.searchresult {
background-color: var(--color-primary-light);
}
@@ -373,27 +373,27 @@ table td {
background-repeat: no-repeat;
}
-table th#headerName {
+table th.column-name {
position: relative;
width: 9999px;
/* not really sure why this works better than 100% … table styling */
padding: 0;
}
-#headerName-container {
+.column-name-container {
position: relative;
height: 50px;
}
-table th#headerSelection {
+table th.column-selection {
padding-top: 2px;
}
-table th#headerSize, table td.filesize {
+table th.column-size, table td.filesize {
text-align: right;
}
-table th#headerDate, table td.date,
+table th.column-mtime, table td.date,
table th.column-last, table td.column-last {
-moz-box-sizing: border-box;
box-sizing: border-box;
@@ -428,13 +428,13 @@ table.multiselect thead th {
margin-right: 27%;
}
-table.multiselect #headerName {
+table.multiselect .column-name {
position: relative;
width: 9999px;
/* when we use 100%, the styling breaks on mobile … table styling */
}
-table.multiselect #modified {
+table.multiselect .column-mtime > a {
display: none;
}
@@ -537,19 +537,19 @@ table td.filename .nametext {
padding: 0 20px 0 0;
}
-.hide-hidden-files #filestable #fileList tr.hidden-file,
-.hide-hidden-files #filestable #fileList tr.hidden-file.dragging {
+.hide-hidden-files .files-filestable .files-fileList tr.hidden-file,
+.hide-hidden-files .files-filestable .files-fileList tr.hidden-file.dragging {
display: none;
}
-#fileList tr.animate-opacity {
+.files-fileList tr.animate-opacity {
-webkit-transition: opacity 250ms;
-moz-transition: opacity 250ms;
-o-transition: opacity 250ms;
transition: opacity 250ms;
}
-#fileList tr.dragging {
+.files-fileList tr.dragging {
opacity: 0.2;
}
@@ -582,30 +582,30 @@ table td.selection {
}
/* File checkboxes */
-#fileList tr td.selection > .selectCheckBox + label:before {
+.files-fileList tr td.selection > .selectCheckBox + label:before {
opacity: 0.3;
margin-right: 0;
}
/* Show checkbox with full opacity when hovering, checked, or selected */
-#fileList tr:hover td.selection > .selectCheckBox + label:before,
-#fileList tr:focus td.selection > .selectCheckBox + label:before,
-#fileList tr td.selection > .selectCheckBox:checked + label:before,
-#fileList tr.selected td.selection > .selectCheckBox + label:before {
+.files-fileList tr:hover td.selection > .selectCheckBox + label:before,
+.files-fileList tr:focus td.selection > .selectCheckBox + label:before,
+.files-fileList tr td.selection > .selectCheckBox:checked + label:before,
+.files-fileList tr.selected td.selection > .selectCheckBox + label:before {
opacity: 1;
}
/* Show checkbox with half opacity when selecting range */
-#fileList tr.halfselected td.selection > .selectCheckBox + label:before {
+.files-fileList tr.halfselected td.selection > .selectCheckBox + label:before {
opacity: 0.5;
}
/* Use label to have bigger clickable size for checkbox */
-#fileList tr td.selection > .selectCheckBox + label,
+.files-fileList tr td.selection > .selectCheckBox + label,
.select-all + label {
padding: 16px;
}
-#fileList tr td.selection > .selectCheckBox:focus + label,
+.files-fileList tr td.selection > .selectCheckBox:focus + label,
.select-all:focus + label {
background-color: var(--color-background-hover);
border-radius: var(--border-radius-pill);
@@ -614,12 +614,12 @@ table td.selection {
padding: 14px;
}
-#fileList tr td.selection > .selectCheckBox:focus-visible + label,
+.files-fileList tr td.selection > .selectCheckBox:focus-visible + label,
.select-all:focus-visible + label {
outline-offset: 0px;
}
-#fileList tr td.filename {
+.files-fileList tr td.filename {
position: relative;
width: 100%;
padding-left: 0;
@@ -630,19 +630,19 @@ table td.selection {
transition: background-image 500ms;
}
-#fileList tr td.filename a.name label,
-#fileList tr td.filename p.name label {
+.files-fileList tr td.filename a.name label,
+.files-fileList tr td.filename p.name label {
position: absolute;
width: 80%;
height: 50px;
}
-#fileList tr td.filename .favorite {
+.files-fileList tr td.filename .favorite {
display: inline-block;
float: left;
}
-#fileList tr td.filename .favorite-mark {
+.files-fileList tr td.filename .favorite-mark {
position: absolute;
display: block;
top: -6px;
@@ -672,25 +672,25 @@ table td.selection {
}
/* force show the loading icon, not only on hover */
-#fileList .icon-loading-small {
+.files-fileList .icon-loading-small {
opacity: 1 !important;
display: inline !important;
}
-#fileList .action.action-share-notification span, #fileList a.name {
+.files-fileList .action.action-share-notification span, .files-fileList a.name {
cursor: default !important;
}
/*
* Make the disabled link look not like a link in file list rows
*/
-#fileList a.name.disabled * {
+.files-fileList a.name.disabled * {
cursor: default;
}
-#fileList a.name.disabled a, #fileList a.name.disabled a * {
+.files-fileList a.name.disabled a, .files-fileList a.name.disabled a * {
cursor: pointer;
}
-#fileList a.name.disabled:focus {
+.files-fileList a.name.disabled:focus {
background: none;
}
@@ -731,16 +731,16 @@ a.action > img {
margin-top: -3px;
}
-#fileList td a a.action {
+.files-fileList td a a.action {
display: inline;
padding: 17px 8px;
line-height: 50px;
opacity: 0.3;
}
-#fileList td a a.action.action-share {
+.files-fileList td a a.action.action-share {
padding: 17px 14px;
}
-#fileList td a a.action.action-share.permanent:not(.shared-style) .icon-shared + span {
+.files-fileList td a a.action.action-share.permanent:not(.shared-style) .icon-shared + span {
/* hide text of the share action */
/* .hidden-visually for accessbility */
position: absolute;
@@ -750,44 +750,44 @@ a.action > img {
height: 1px;
overflow: hidden;
}
-#fileList td a a.action.action-share .avatar {
+.files-fileList td a a.action.action-share .avatar {
display: inline-block;
vertical-align: middle;
}
-#fileList td a a.action.action-menu {
+.files-fileList td a a.action.action-menu {
padding-top: 17px;
padding-bottom: 17px;
padding-left: 14px;
padding-right: 14px;
}
-#fileList td a a.action.no-permission:hover, #fileList td a a.action.no-permission:focus {
+.files-fileList td a a.action.no-permission:hover, .files-fileList td a a.action.no-permission:focus {
opacity: 0.3;
}
-#fileList td a a.action.disabled:hover, #fileList td a a.action.disabled:focus,
-#fileList td a a.action.disabled img {
+.files-fileList td a a.action.disabled:hover, .files-fileList td a a.action.disabled:focus,
+.files-fileList td a a.action.disabled img {
opacity: 0.3;
}
-#fileList td a a.action.disabled.action-download {
+.files-fileList td a a.action.disabled.action-download {
opacity: 0.7;
}
-#fileList td a a.action.disabled.action-download:hover, #fileList td a a.action.disabled.action-download:focus {
+.files-fileList td a a.action.disabled.action-download:hover, .files-fileList td a a.action.disabled.action-download:focus {
opacity: 0.7;
}
-#fileList td a a.action:hover, #fileList td a a.action:focus {
+.files-fileList td a a.action:hover, .files-fileList td a a.action:focus {
opacity: 1;
}
-#fileList td a a.action:focus {
+.files-fileList td a a.action:focus {
background-color: var(--color-background-hover);
border-radius: var(--border-radius-pill);
}
-#fileList td a .fileActionsMenu a.action, #fileList td a a.action.action-share.shared-style {
+.files-fileList td a .fileActionsMenu a.action, .files-fileList td a a.action.action-share.shared-style {
opacity: 0.7;
}
-#fileList td a .fileActionsMenu .action.permanent {
+.files-fileList td a .fileActionsMenu .action.permanent {
opacity: 1;
}
-#fileList .action.action-share.permanent.shared-style span:not(.icon) {
+.files-fileList .action.action-share.permanent.shared-style span:not(.icon) {
display: inline-block;
max-width: 70px;
overflow: hidden;
@@ -796,31 +796,31 @@ a.action > img {
margin-left: 6px;
}
-#fileList .remoteAddress .userDomain {
+.files-fileList .remoteAddress .userDomain {
margin-left: 0 !important;
}
-#fileList .favorite-mark.permanent {
+.files-fileList .favorite-mark.permanent {
opacity: 1;
}
-#fileList .fileActionsMenu a.action:hover,
-#fileList .fileActionsMenu a.action:focus,
-#fileList a.action.action-share.shared-style:hover,
-#fileList a.action.action-share.shared-style:focus {
+.files-fileList .fileActionsMenu a.action:hover,
+.files-fileList .fileActionsMenu a.action:focus,
+.files-fileList a.action.action-share.shared-style:hover,
+.files-fileList a.action.action-share.shared-style:focus {
opacity: 1;
}
-#fileList tr a.action.disabled {
+.files-fileList tr a.action.disabled {
background: none;
}
-#selectedActionsList a.download.disabled,
-#fileList tr a.action.action-download.disabled {
+.selectedActions a.download.disabled,
+.files-fileList tr a.action.action-download.disabled {
color: #000000;
}
-#fileList tr:hover a.action.disabled:hover * {
+.files-fileList tr:hover a.action.disabled:hover * {
cursor: default;
}
@@ -830,7 +830,7 @@ a.action > img {
height: 330px;
}
-#filestable .filesummary {
+.files-filestable .summary .filesummary {
width: 100%;
/* Width of checkbox and file preview */
padding-left: 101px;
@@ -916,32 +916,32 @@ table.dragshadow td.size {
left: 57px !important;
}
-#filestable .filename .action .icon,
-#filestable .selectedActions a .icon,
-#filestable .filename .favorite-mark .icon,
-#controls .actions .button .icon {
+.files-filestable .filename .action .icon,
+.files-filestable .selectedActions a .icon,
+.files-filestable .filename .favorite-mark .icon,
+.files-controls .actions .button .icon {
display: inline-block;
vertical-align: middle;
background-size: 16px 16px;
}
-#filestable .filename .favorite-mark .icon-star {
+.files-filestable .filename .favorite-mark .icon-star {
background-image: none;
}
-#filestable .filename .favorite-mark .icon-starred {
+.files-filestable .filename .favorite-mark .icon-starred {
/* $dir is the app name, so we add this to the icon var to avoid conflicts between apps */
background-image: var(--icon-star-dark-yellow);
}
-#filestable .filename .action .icon.hidden,
-#filestable .selectedActions a .icon.hidden,
-#controls .actions .button .icon.hidden {
+.files-filestable .filename .action .icon.hidden,
+.files-filestable .selectedActions a .icon.hidden,
+.files-controls .actions .button .icon.hidden {
display: none;
}
-#filestable .filename .action .icon.loading,
-#filestable .selectedActions a .icon.loading,
-#controls .actions .button .icon.loading {
+.files-filestable .filename .action .icon.loading,
+.files-filestable .selectedActions a .icon.loading,
+.files-controls .actions .button .icon.loading {
width: 15px;
height: 15px;
}
@@ -955,7 +955,7 @@ table.dragshadow td.size {
}
.breadcrumb .canDrop > a,
-#filestable tbody tr.canDrop {
+.files-filestable tbody tr.canDrop {
background-color: rgba(0, 130, 201, 0.3);
}
@@ -1006,62 +1006,62 @@ table.dragshadow td.size {
}
/* GRID */
-#filestable.view-grid:not(.hidden) {
+.files-filestable.view-grid:not(.hidden) {
/* HEADER and MULTISELECT */
/* MAIN FILE LIST */
/* Center align the footer file number & size summary */
}
-#filestable.view-grid:not(.hidden) thead tr {
+.files-filestable.view-grid:not(.hidden) thead tr {
display: block;
border-bottom: 1px solid var(--color-border);
background-color: var(--color-main-background-translucent);
}
-#filestable.view-grid:not(.hidden) thead tr th {
+.files-filestable.view-grid:not(.hidden) thead tr th {
width: auto;
border: none;
}
-#filestable.view-grid:not(.hidden) tbody {
+.files-filestable.view-grid:not(.hidden) tbody {
display: grid;
grid-template-columns: repeat(auto-fill, 160px);
justify-content: space-around;
row-gap: 15px;
margin: 15px 0;
}
-#filestable.view-grid:not(.hidden) tbody tr:not(.hidden) {
+.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) {
display: block;
position: relative;
height: 190px;
border-radius: var(--border-radius);
}
-#filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover, #filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus, #filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active, #filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected, #filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult,
-#filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus, #filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted {
+.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover, .files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus, .files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active, .files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected, .files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult,
+.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus, .files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted {
background-color: transparent;
}
-#filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .thumbnail-wrapper,
-#filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .nametext,
-#filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .fileactions, #filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .thumbnail-wrapper,
-#filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .nametext,
-#filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .fileactions, #filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .thumbnail-wrapper,
-#filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .nametext,
-#filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .fileactions, #filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .thumbnail-wrapper,
-#filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .nametext,
-#filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .fileactions, #filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .thumbnail-wrapper,
-#filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .nametext,
-#filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .fileactions,
-#filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .thumbnail-wrapper,
-#filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .nametext,
-#filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .fileactions, #filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .thumbnail-wrapper,
-#filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .nametext,
-#filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .fileactions {
+.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .thumbnail-wrapper,
+.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .nametext,
+.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .fileactions, .files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .thumbnail-wrapper,
+.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .nametext,
+.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .fileactions, .files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .thumbnail-wrapper,
+.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .nametext,
+.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .fileactions, .files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .thumbnail-wrapper,
+.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .nametext,
+.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .fileactions, .files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .thumbnail-wrapper,
+.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .nametext,
+.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .fileactions,
+.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .thumbnail-wrapper,
+.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .nametext,
+.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .fileactions, .files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .thumbnail-wrapper,
+.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .nametext,
+.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .fileactions {
background-color: var(--color-background-hover);
}
-#filestable.view-grid:not(.hidden) tbody td {
+.files-filestable.view-grid:not(.hidden) tbody td {
display: inline;
border-bottom: none;
/* No space for filesize and date in grid view */
/* Position actions menu below file */
}
-#filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper {
+.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper {
min-width: 0;
max-width: none;
position: absolute;
@@ -1072,7 +1072,7 @@ table.dragshadow td.size {
left: 0;
z-index: -1;
}
-#filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail {
+.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail {
width: calc(100% - 2 * 14px);
height: calc(100% - 2 * 14px);
background-size: contain;
@@ -1084,13 +1084,13 @@ table.dragshadow td.size {
* Position is inherited from the selection while in grid view
*/
}
-#filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail .favorite-mark {
+.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail .favorite-mark {
padding: 14px;
left: auto;
top: -22px;
right: -22px;
}
-#filestable.view-grid:not(.hidden) tbody td.filename .uploadtext {
+.files-filestable.view-grid:not(.hidden) tbody td.filename .uploadtext {
width: 100%;
margin: 0;
top: 0;
@@ -1099,13 +1099,13 @@ table.dragshadow td.size {
padding-top: 4px;
padding-left: 28px;
}
-#filestable.view-grid:not(.hidden) tbody td.filename .name {
+.files-filestable.view-grid:not(.hidden) tbody td.filename .name {
height: 100%;
border-radius: var(--border-radius);
overflow: hidden;
cursor: pointer !important;
}
-#filestable.view-grid:not(.hidden) tbody td.filename .name .nametext {
+.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext {
display: flex;
height: 44px;
margin-top: 146px;
@@ -1114,27 +1114,27 @@ table.dragshadow td.size {
padding: 0;
/* No space for extension in grid view */
}
-#filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext {
+.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext {
display: inline-block;
text-align: center;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
-#filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:before {
+.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:before {
content: "";
flex: 1;
min-width: 14px;
}
-#filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:after {
+.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:after {
content: "";
flex: 1;
min-width: 44px;
}
-#filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .extension {
+.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .extension {
display: none;
}
-#filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions {
+.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions {
height: initial;
margin-top: 146px;
display: flex;
@@ -1142,7 +1142,7 @@ table.dragshadow td.size {
position: absolute;
right: 0;
}
-#filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action {
+.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action {
padding: 14px;
width: 44px;
height: 44px;
@@ -1150,34 +1150,34 @@ table.dragshadow td.size {
align-items: center;
justify-content: center;
}
-#filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action:not(.action-menu) {
+.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action:not(.action-menu) {
display: none;
}
-#filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden {
+.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden {
display: block !important;
}
-#filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden .action-share img {
+.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden .action-share img {
padding: 6px;
border-radius: 50%;
}
-#filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-restore-container.hidden {
+.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-restore-container.hidden {
display: block !important;
}
-#filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-comment-container.hidden {
+.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-comment-container.hidden {
display: block !important;
}
-#filestable.view-grid:not(.hidden) tbody td.filename form {
+.files-filestable.view-grid:not(.hidden) tbody td.filename form {
padding: 3px 14px;
border-radius: var(--border-radius);
}
-#filestable.view-grid:not(.hidden) tbody td.filename form input.filename {
+.files-filestable.view-grid:not(.hidden) tbody td.filename form input.filename {
width: 100%;
margin-left: 0;
}
-#filestable.view-grid:not(.hidden) tbody td.filesize, #filestable.view-grid:not(.hidden) tbody td.date {
+.files-filestable.view-grid:not(.hidden) tbody td.filesize, .files-filestable.view-grid:not(.hidden) tbody td.date {
display: none;
}
-#filestable.view-grid:not(.hidden) tbody td.selection, #filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark {
+.files-filestable.view-grid:not(.hidden) tbody td.selection, .files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark {
position: absolute;
top: -8px;
left: -8px;
@@ -1187,45 +1187,45 @@ table.dragshadow td.size {
z-index: 10;
background: transparent;
}
-#filestable.view-grid:not(.hidden) tbody td.selection label, #filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label {
+.files-filestable.view-grid:not(.hidden) tbody td.selection label, .files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label {
width: 44px;
height: 44px;
display: inline-flex;
padding: 14px;
}
-#filestable.view-grid:not(.hidden) tbody td.selection label::before, #filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label::before {
+.files-filestable.view-grid:not(.hidden) tbody td.selection label::before, .files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label::before {
margin: 0;
width: 14px;
height: 14px;
}
-#filestable.view-grid:not(.hidden) tbody td .popovermenu {
+.files-filestable.view-grid:not(.hidden) tbody td .popovermenu {
left: 0;
width: 150px;
margin: 0 5px;
/* Ellipsize long entries, normally menu width is adjusted but for grid we use fixed width. */
}
-#filestable.view-grid:not(.hidden) tbody td .popovermenu .menuitem span:not(.icon) {
+.files-filestable.view-grid:not(.hidden) tbody td .popovermenu .menuitem span:not(.icon) {
overflow: hidden;
text-overflow: ellipsis;
}
-#filestable.view-grid:not(.hidden) tr.hidden-file td.filename .name .nametext .extension {
+.files-filestable.view-grid:not(.hidden) tr.hidden-file td.filename .name .nametext .extension {
display: block;
}
-#filestable.view-grid:not(.hidden) tfoot {
+.files-filestable.view-grid:not(.hidden) tfoot {
display: grid;
}
-#filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) {
+.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) {
display: inline-block;
margin: 0 auto;
height: 418px;
}
-#filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td {
+.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td {
padding-top: 50px;
}
-#filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td:first-child, #filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td.date {
+.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td:first-child, .files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td.date {
display: none;
}
-#filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td .info {
+.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td .info {
margin-left: 0;
}
@@ -1261,14 +1261,14 @@ table.dragshadow td.size {
#body-public {
/* Right-align view toggle on link share page */
}
-#body-public #filestable.view-grid:not(.hidden) tbody td {
+#body-public .files-filestable.view-grid:not(.hidden) tbody td {
/* More space for filename since there is no share icon */
/* Position actions menu correctly below 3-dot-menu */
}
-#body-public #filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext {
+#body-public .files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext {
max-width: 124px;
}
-#body-public #filestable.view-grid:not(.hidden) tbody td .popovermenu {
+#body-public .files-filestable.view-grid:not(.hidden) tbody td .popovermenu {
left: -80px;
}
#body-public #view-toggle {
diff --git a/apps/files/css/files.scss b/apps/files/css/files.scss
index 6242eb4a5c0..99d3bf90f01 100644
--- a/apps/files/css/files.scss
+++ b/apps/files/css/files.scss
@@ -48,20 +48,20 @@
.newFileMenu .error,
.newFileMenu .error + .icon-confirm,
-#fileList .error {
+.files-fileList .error {
color: var(--color-error);
border-color: var(--color-error);
}
/* FILE TABLE */
-#filestable {
+.files-filestable {
position: relative;
width: 100%;
min-width: 250px;
display: block;
flex-direction: column;
// hide table if emptycontent is not hidden
- #emptycontent:not(.hidden) ~ & {
+ .emptycontent:not(.hidden) ~ & {
display: none;
}
// floating header
@@ -94,7 +94,7 @@
}
}
-#filestable.hidden {
+.files-filestable.hidden {
display: none;
}
@@ -110,7 +110,7 @@
width: calc(100% - 300px);
}
-.file-drag, .file-drag #filestable tbody tr, .file-drag #filestable tbody tr:hover {
+.file-drag, .file-drag .files-filestable tbody tr, .file-drag .files-filestable tbody tr:hover {
background-color: var(--color-primary-light) !important;
}
@@ -118,11 +118,11 @@
background-color: var(--color-main-background) !important;
}
-.file-drag #filestable tbody tr, .file-drag #filestable tbody tr:hover{
+.file-drag .files-filestable tbody tr, .file-drag .files-filestable tbody tr:hover{
background-color: transparent !important;
}
-.app-files #app-content.dir-drop #filestable tbody tr.dropping-to-dir{
+.app-files #app-content.dir-drop .files-filestable tbody tr.dropping-to-dir{
background-color: var(--color-primary-light) !important;
}
@@ -181,21 +181,21 @@
opacity: 0.3;
}
-#filestable tbody tr {
+.files-filestable tbody tr {
height: 51px;
}
-#filestable tbody tr:hover,
-#filestable tbody tr:focus,
-#filestable tbody .name:focus,
-#filestable tbody tr:hover .filename form,
+.files-filestable tbody tr:hover,
+.files-filestable tbody tr:focus,
+.files-filestable tbody .name:focus,
+.files-filestable tbody tr:hover .filename form,
table tr.mouseOver td {
background-color: var(--color-background-hover);
}
-#filestable tbody tr:active,
-#filestable tbody tr.highlighted,
-#filestable tbody tr.highlighted .name:focus,
-#filestable tbody tr.selected,
-#filestable tbody tr.searchresult {
+.files-filestable tbody tr:active,
+.files-filestable tbody tr.highlighted,
+.files-filestable tbody tr.highlighted .name:focus,
+.files-filestable tbody tr.selected,
+.files-filestable tbody tr.searchresult {
background-color: var(--color-primary-light);
}
@@ -283,24 +283,24 @@ table td {
background-position: 8px center;
background-repeat: no-repeat;
}
-table th#headerName {
+table th.column-name {
position: relative;
width: 9999px; /* not really sure why this works better than 100% … table styling */
padding: 0;
}
-#headerName-container {
+.column-name-container {
position: relative;
height: 50px;
}
-table th#headerSelection {
+table th.column-selection {
padding-top: 2px;
}
-table th#headerSize, table td.filesize {
+table th.column-size, table td.filesize {
text-align: right;
}
-table th#headerDate, table td.date,
+table th.column-mtime, table td.date,
table th.column-last, table td.column-last {
-moz-box-sizing: border-box;
box-sizing: border-box;
@@ -315,9 +315,9 @@ table th.column-last, table td.column-last {
top: 94px;
}
-#app-content-recent,
-#app-content-favorites,
-#app-content-shareoverview,
+#app-content-recent,
+#app-content-favorites,
+#app-content-shareoverview,
#app-content-sharingout,
#app-content-sharingin,
#app-content-sharinglinks,
@@ -335,11 +335,11 @@ table.multiselect thead th {
margin-right: 27%;
}
-table.multiselect #headerName {
+table.multiselect .column-name {
position: relative;
width: 9999px; /* when we use 100%, the styling breaks on mobile … table styling */
}
-table.multiselect #modified {
+table.multiselect .column-mtime>a {
display: none;
}
@@ -434,18 +434,18 @@ table {
}
}
-.hide-hidden-files #filestable #fileList tr.hidden-file,
-.hide-hidden-files #filestable #fileList tr.hidden-file.dragging {
+.hide-hidden-files .files-filestable .files-fileList tr.hidden-file,
+.hide-hidden-files .files-filestable .files-fileList tr.hidden-file.dragging {
display: none;
}
-#fileList tr.animate-opacity {
+.files-fileList tr.animate-opacity {
-webkit-transition:opacity 250ms;
-moz-transition:opacity 250ms;
-o-transition:opacity 250ms;
transition:opacity 250ms;
}
-#fileList tr.dragging {
+.files-fileList tr.dragging {
opacity: 0.2;
}
@@ -482,26 +482,26 @@ table td.selection {
}
/* File checkboxes */
-#fileList tr td.selection>.selectCheckBox + label:before {
+.files-fileList tr td.selection>.selectCheckBox + label:before {
opacity: 0.3;
margin-right: 0;
}
/* Show checkbox with full opacity when hovering, checked, or selected */
-#fileList tr:hover td.selection>.selectCheckBox + label:before,
-#fileList tr:focus td.selection>.selectCheckBox + label:before,
-#fileList tr td.selection>.selectCheckBox:checked + label:before,
-#fileList tr.selected td.selection>.selectCheckBox + label:before {
+.files-fileList tr:hover td.selection>.selectCheckBox + label:before,
+.files-fileList tr:focus td.selection>.selectCheckBox + label:before,
+.files-fileList tr td.selection>.selectCheckBox:checked + label:before,
+.files-fileList tr.selected td.selection>.selectCheckBox + label:before {
opacity: 1;
}
/* Show checkbox with half opacity when selecting range */
-#fileList tr.halfselected td.selection>.selectCheckBox + label:before {
+.files-fileList tr.halfselected td.selection>.selectCheckBox + label:before {
opacity: 0.5;
}
/* Use label to have bigger clickable size for checkbox */
-#fileList tr td.selection>.selectCheckBox,
+.files-fileList tr td.selection>.selectCheckBox,
.select-all {
& + label {
padding: 16px;
@@ -516,12 +516,12 @@ table td.selection {
}
}
-#fileList tr td.selection>.selectCheckBox:focus-visible + label,
+.files-fileList tr td.selection>.selectCheckBox:focus-visible + label,
.select-all:focus-visible + label {
outline-offset: 0px;
}
-#fileList tr td.filename {
+.files-fileList tr td.filename {
position: relative;
width: 100%;
padding-left: 0;
@@ -529,18 +529,18 @@ table td.selection {
-webkit-transition:background-image 500ms; -moz-transition:background-image 500ms; -o-transition:background-image 500ms; transition:background-image 500ms;
}
-#fileList tr td.filename a.name label,
-#fileList tr td.filename p.name label {
+.files-fileList tr td.filename a.name label,
+.files-fileList tr td.filename p.name label {
position: absolute;
width: 80%;
height: 50px;
}
-#fileList tr td.filename .favorite {
+.files-fileList tr td.filename .favorite {
display: inline-block;
float: left;
}
-#fileList tr td.filename .favorite-mark {
+.files-fileList tr td.filename .favorite-mark {
position: absolute;
display: block;
top: -6px;
@@ -568,19 +568,19 @@ table td.selection {
}
/* force show the loading icon, not only on hover */
-#fileList .icon-loading-small {
+.files-fileList .icon-loading-small {
opacity: 1 !important;
display: inline !important;
}
-#fileList .action.action-share-notification span, #fileList a.name {
+.files-fileList .action.action-share-notification span, .files-fileList a.name {
cursor: default !important;
}
/*
* Make the disabled link look not like a link in file list rows
*/
-#fileList a.name.disabled {
+.files-fileList a.name.disabled {
* {
cursor: default;
}
@@ -628,7 +628,7 @@ a.action > img {
margin-top: -3px;
}
-#fileList td a {
+.files-fileList td a {
a.action {
display: inline;
padding: 17px 8px;
@@ -691,7 +691,7 @@ a.action > img {
}
// Ellipsize long sharer names
-#fileList .action.action-share.permanent.shared-style span:not(.icon) {
+.files-fileList .action.action-share.permanent.shared-style span:not(.icon) {
display: inline-block;
max-width: 70px;
overflow: hidden;
@@ -700,42 +700,42 @@ a.action > img {
margin-left: 6px;
}
-#fileList .remoteAddress .userDomain {
+.files-fileList .remoteAddress .userDomain {
margin-left: 0 !important;
}
-#fileList .favorite-mark.permanent {
+.files-fileList .favorite-mark.permanent {
opacity: 1;
}
-#fileList .fileActionsMenu a.action:hover,
-#fileList .fileActionsMenu a.action:focus,
+.files-fileList .fileActionsMenu a.action:hover,
+.files-fileList .fileActionsMenu a.action:focus,
/* show share action of shared items darker to distinguish from non-shared */
-#fileList a.action.action-share.shared-style:hover,
-#fileList a.action.action-share.shared-style:focus {
+.files-fileList a.action.action-share.shared-style:hover,
+.files-fileList a.action.action-share.shared-style:focus {
opacity: 1;
}
-#fileList tr a.action.disabled {
+.files-fileList tr a.action.disabled {
background: none;
}
-#selectedActionsList a.download.disabled,
-#fileList tr a.action.action-download.disabled {
+.selectedActions a.download.disabled,
+.files-fileList tr a.action.action-download.disabled {
color: #000000;
}
-#fileList tr:hover a.action.disabled:hover * {
+.files-fileList tr:hover a.action.disabled:hover * {
cursor: default;
}
.summary {
color: var(--color-text-maxcontrast);
/* add whitespace to bottom of files list to correctly show dropdowns */
- $action-menu-items-count: 7; // list view has currently max 7 items in its action menu
+ $action-menu-items-count: 7; // list view has currently max 7 items in its action menu
height: 44px * ($action-menu-items-count + 0.5); // 0.5 is added to show some whitespace below
}
-#filestable .filesummary {
+.files-filestable .summary .filesummary {
width: 100%;
/* Width of checkbox and file preview */
padding-left: 101px;
@@ -814,16 +814,16 @@ table.dragshadow td.size {
}
}
-#filestable .filename .action .icon,
-#filestable .selectedActions a .icon,
-#filestable .filename .favorite-mark .icon,
-#controls .actions .button .icon {
+.files-filestable .filename .action .icon,
+.files-filestable .selectedActions a .icon,
+.files-filestable .filename .favorite-mark .icon,
+.files-controls .actions .button .icon {
display: inline-block;
vertical-align: middle;
background-size: 16px 16px;
}
-#filestable .filename .favorite-mark {
+.files-filestable .filename .favorite-mark {
// Override default icons to always hide the star icon and always show the
// starred icon even when hovered or focused.
& .icon-star {
@@ -834,15 +834,15 @@ table.dragshadow td.size {
}
}
-#filestable .filename .action .icon.hidden,
-#filestable .selectedActions a .icon.hidden,
-#controls .actions .button .icon.hidden {
+.files-filestable .filename .action .icon.hidden,
+.files-filestable .selectedActions a .icon.hidden,
+.files-controls .actions .button .icon.hidden {
display: none;
}
-#filestable .filename .action .icon.loading,
-#filestable .selectedActions a .icon.loading,
-#controls .actions .button .icon.loading {
+.files-filestable .filename .action .icon.loading,
+.files-filestable .selectedActions a .icon.loading,
+.files-controls .actions .button .icon.loading {
width: 15px;
height: 15px;
}
@@ -856,7 +856,7 @@ table.dragshadow td.size {
}
.breadcrumb .canDrop > a,
-#filestable tbody tr.canDrop {
+.files-filestable tbody tr.canDrop {
background-color: rgba( variables.$color-primary, .3 );
}
.dropzone-background {
@@ -874,7 +874,7 @@ table.dragshadow td.size {
overflow: auto;
min-width: 160px;
height: 54px;
-
+
&:not(.hidden) {
display: flex;
}
@@ -914,7 +914,7 @@ table.dragshadow td.size {
}
/* GRID */
-#filestable.view-grid:not(.hidden) {
+.files-filestable.view-grid:not(.hidden) {
$grid-size: 160px;
$grid-pad: 14px;
@@ -1220,7 +1220,7 @@ table.dragshadow td.size {
/* Adjustments for link share page */
#body-public {
- #filestable.view-grid:not(.hidden) tbody td {
+ .files-filestable.view-grid:not(.hidden) tbody td {
/* More space for filename since there is no share icon */
&.filename .name .nametext .innernametext {
max-width: 124px;
diff --git a/apps/files/css/merged.css b/apps/files/css/merged.css
index 7696875d849..14a0d72097d 100644
--- a/apps/files/css/merged.css
+++ b/apps/files/css/merged.css
@@ -111,13 +111,13 @@
.newFileMenu .error,
.newFileMenu .error + .icon-confirm,
-#fileList .error {
+.files-fileList .error {
color: var(--color-error);
border-color: var(--color-error);
}
/* FILE TABLE */
-#filestable {
+.files-filestable {
position: relative;
width: 100%;
min-width: 250px;
@@ -127,10 +127,10 @@
* This is a dirty hack as the sticky header requires us to use a different display type on the table element
*/
}
-#emptycontent:not(.hidden) ~ #filestable {
+.emptycontent:not(.hidden) ~ .files-filestable {
display: none;
}
-#filestable thead {
+.files-filestable thead {
position: -webkit-sticky;
position: sticky;
top: 50px;
@@ -138,20 +138,20 @@
display: block;
background-color: var(--color-main-background-translucent);
}
-#filestable tbody {
+.files-filestable tbody {
display: table;
width: 100%;
}
-#filestable tbody tr[data-permissions="0"],
-#filestable tbody tr[data-permissions="16"] {
+.files-filestable tbody tr[data-permissions="0"],
+.files-filestable tbody tr[data-permissions="16"] {
background-color: var(--color-background-dark);
}
-#filestable tbody tr[data-permissions="0"] td.filename .nametext .innernametext,
-#filestable tbody tr[data-permissions="16"] td.filename .nametext .innernametext {
+.files-filestable tbody tr[data-permissions="0"] td.filename .nametext .innernametext,
+.files-filestable tbody tr[data-permissions="16"] td.filename .nametext .innernametext {
color: var(--color-text-maxcontrast);
}
-#filestable.hidden {
+.files-filestable.hidden {
display: none;
}
@@ -165,7 +165,7 @@
width: calc(100% - 300px);
}
-.file-drag, .file-drag #filestable tbody tr, .file-drag #filestable tbody tr:hover {
+.file-drag, .file-drag .files-filestable tbody tr, .file-drag .files-filestable tbody tr:hover {
background-color: var(--color-primary-light) !important;
}
@@ -173,11 +173,11 @@
background-color: var(--color-main-background) !important;
}
-.file-drag #filestable tbody tr, .file-drag #filestable tbody tr:hover {
+.file-drag .files-filestable tbody tr, .file-drag .files-filestable tbody tr:hover {
background-color: transparent !important;
}
-.app-files #app-content.dir-drop #filestable tbody tr.dropping-to-dir {
+.app-files #app-content.dir-drop .files-filestable tbody tr.dropping-to-dir {
background-color: var(--color-primary-light) !important;
}
@@ -256,23 +256,23 @@
opacity: 0.3;
}
-#filestable tbody tr {
+.files-filestable tbody tr {
height: 51px;
}
-#filestable tbody tr:hover,
-#filestable tbody tr:focus,
-#filestable tbody .name:focus,
-#filestable tbody tr:hover .filename form,
+.files-filestable tbody tr:hover,
+.files-filestable tbody tr:focus,
+.files-filestable tbody .name:focus,
+.files-filestable tbody tr:hover .filename form,
table tr.mouseOver td {
background-color: var(--color-background-hover);
}
-#filestable tbody tr:active,
-#filestable tbody tr.highlighted,
-#filestable tbody tr.highlighted .name:focus,
-#filestable tbody tr.selected,
-#filestable tbody tr.searchresult {
+.files-filestable tbody tr:active,
+.files-filestable tbody tr.highlighted,
+.files-filestable tbody tr.highlighted .name:focus,
+.files-filestable tbody tr.selected,
+.files-filestable tbody tr.searchresult {
background-color: var(--color-primary-light);
}
@@ -373,27 +373,27 @@ table td {
background-repeat: no-repeat;
}
-table th#headerName {
+table th.column-name {
position: relative;
width: 9999px;
/* not really sure why this works better than 100% … table styling */
padding: 0;
}
-#headerName-container {
+.column-name-container {
position: relative;
height: 50px;
}
-table th#headerSelection {
+table th.column-selection {
padding-top: 2px;
}
-table th#headerSize, table td.filesize {
+table th.column-size, table td.filesize {
text-align: right;
}
-table th#headerDate, table td.date,
+table th.column-mtime, table td.date,
table th.column-last, table td.column-last {
-moz-box-sizing: border-box;
box-sizing: border-box;
@@ -428,13 +428,13 @@ table.multiselect thead th {
margin-right: 27%;
}
-table.multiselect #headerName {
+table.multiselect .column-name {
position: relative;
width: 9999px;
/* when we use 100%, the styling breaks on mobile … table styling */
}
-table.multiselect #modified {
+table.multiselect .column-mtime > a {
display: none;
}
@@ -537,19 +537,19 @@ table td.filename .nametext {
padding: 0 20px 0 0;
}
-.hide-hidden-files #filestable #fileList tr.hidden-file,
-.hide-hidden-files #filestable #fileList tr.hidden-file.dragging {
+.hide-hidden-files .files-filestable .files-fileList tr.hidden-file,
+.hide-hidden-files .files-filestable .files-fileList tr.hidden-file.dragging {
display: none;
}
-#fileList tr.animate-opacity {
+.files-fileList tr.animate-opacity {
-webkit-transition: opacity 250ms;
-moz-transition: opacity 250ms;
-o-transition: opacity 250ms;
transition: opacity 250ms;
}
-#fileList tr.dragging {
+.files-fileList tr.dragging {
opacity: 0.2;
}
@@ -582,30 +582,30 @@ table td.selection {
}
/* File checkboxes */
-#fileList tr td.selection > .selectCheckBox + label:before {
+.files-fileList tr td.selection > .selectCheckBox + label:before {
opacity: 0.3;
margin-right: 0;
}
/* Show checkbox with full opacity when hovering, checked, or selected */
-#fileList tr:hover td.selection > .selectCheckBox + label:before,
-#fileList tr:focus td.selection > .selectCheckBox + label:before,
-#fileList tr td.selection > .selectCheckBox:checked + label:before,
-#fileList tr.selected td.selection > .selectCheckBox + label:before {
+.files-fileList tr:hover td.selection > .selectCheckBox + label:before,
+.files-fileList tr:focus td.selection > .selectCheckBox + label:before,
+.files-fileList tr td.selection > .selectCheckBox:checked + label:before,
+.files-fileList tr.selected td.selection > .selectCheckBox + label:before {
opacity: 1;
}
/* Show checkbox with half opacity when selecting range */
-#fileList tr.halfselected td.selection > .selectCheckBox + label:before {
+.files-fileList tr.halfselected td.selection > .selectCheckBox + label:before {
opacity: 0.5;
}
/* Use label to have bigger clickable size for checkbox */
-#fileList tr td.selection > .selectCheckBox + label,
+.files-fileList tr td.selection > .selectCheckBox + label,
.select-all + label {
padding: 16px;
}
-#fileList tr td.selection > .selectCheckBox:focus + label,
+.files-fileList tr td.selection > .selectCheckBox:focus + label,
.select-all:focus + label {
background-color: var(--color-background-hover);
border-radius: var(--border-radius-pill);
@@ -614,12 +614,12 @@ table td.selection {
padding: 14px;
}
-#fileList tr td.selection > .selectCheckBox:focus-visible + label,
+.files-fileList tr td.selection > .selectCheckBox:focus-visible + label,
.select-all:focus-visible + label {
outline-offset: 0px;
}
-#fileList tr td.filename {
+.files-fileList tr td.filename {
position: relative;
width: 100%;
padding-left: 0;
@@ -630,19 +630,19 @@ table td.selection {
transition: background-image 500ms;
}
-#fileList tr td.filename a.name label,
-#fileList tr td.filename p.name label {
+.files-fileList tr td.filename a.name label,
+.files-fileList tr td.filename p.name label {
position: absolute;
width: 80%;
height: 50px;
}
-#fileList tr td.filename .favorite {
+.files-fileList tr td.filename .favorite {
display: inline-block;
float: left;
}
-#fileList tr td.filename .favorite-mark {
+.files-fileList tr td.filename .favorite-mark {
position: absolute;
display: block;
top: -6px;
@@ -672,25 +672,25 @@ table td.selection {
}
/* force show the loading icon, not only on hover */
-#fileList .icon-loading-small {
+.files-fileList .icon-loading-small {
opacity: 1 !important;
display: inline !important;
}
-#fileList .action.action-share-notification span, #fileList a.name {
+.files-fileList .action.action-share-notification span, .files-fileList a.name {
cursor: default !important;
}
/*
* Make the disabled link look not like a link in file list rows
*/
-#fileList a.name.disabled * {
+.files-fileList a.name.disabled * {
cursor: default;
}
-#fileList a.name.disabled a, #fileList a.name.disabled a * {
+.files-fileList a.name.disabled a, .files-fileList a.name.disabled a * {
cursor: pointer;
}
-#fileList a.name.disabled:focus {
+.files-fileList a.name.disabled:focus {
background: none;
}
@@ -731,16 +731,16 @@ a.action > img {
margin-top: -3px;
}
-#fileList td a a.action {
+.files-fileList td a a.action {
display: inline;
padding: 17px 8px;
line-height: 50px;
opacity: 0.3;
}
-#fileList td a a.action.action-share {
+.files-fileList td a a.action.action-share {
padding: 17px 14px;
}
-#fileList td a a.action.action-share.permanent:not(.shared-style) .icon-shared + span {
+.files-fileList td a a.action.action-share.permanent:not(.shared-style) .icon-shared + span {
/* hide text of the share action */
/* .hidden-visually for accessbility */
position: absolute;
@@ -750,44 +750,44 @@ a.action > img {
height: 1px;
overflow: hidden;
}
-#fileList td a a.action.action-share .avatar {
+.files-fileList td a a.action.action-share .avatar {
display: inline-block;
vertical-align: middle;
}
-#fileList td a a.action.action-menu {
+.files-fileList td a a.action.action-menu {
padding-top: 17px;
padding-bottom: 17px;
padding-left: 14px;
padding-right: 14px;
}
-#fileList td a a.action.no-permission:hover, #fileList td a a.action.no-permission:focus {
+.files-fileList td a a.action.no-permission:hover, .files-fileList td a a.action.no-permission:focus {
opacity: 0.3;
}
-#fileList td a a.action.disabled:hover, #fileList td a a.action.disabled:focus,
-#fileList td a a.action.disabled img {
+.files-fileList td a a.action.disabled:hover, .files-fileList td a a.action.disabled:focus,
+.files-fileList td a a.action.disabled img {
opacity: 0.3;
}
-#fileList td a a.action.disabled.action-download {
+.files-fileList td a a.action.disabled.action-download {
opacity: 0.7;
}
-#fileList td a a.action.disabled.action-download:hover, #fileList td a a.action.disabled.action-download:focus {
+.files-fileList td a a.action.disabled.action-download:hover, .files-fileList td a a.action.disabled.action-download:focus {
opacity: 0.7;
}
-#fileList td a a.action:hover, #fileList td a a.action:focus {
+.files-fileList td a a.action:hover, .files-fileList td a a.action:focus {
opacity: 1;
}
-#fileList td a a.action:focus {
+.files-fileList td a a.action:focus {
background-color: var(--color-background-hover);
border-radius: var(--border-radius-pill);
}
-#fileList td a .fileActionsMenu a.action, #fileList td a a.action.action-share.shared-style {
+.files-fileList td a .fileActionsMenu a.action, .files-fileList td a a.action.action-share.shared-style {
opacity: 0.7;
}
-#fileList td a .fileActionsMenu .action.permanent {
+.files-fileList td a .fileActionsMenu .action.permanent {
opacity: 1;
}
-#fileList .action.action-share.permanent.shared-style span:not(.icon) {
+.files-fileList .action.action-share.permanent.shared-style span:not(.icon) {
display: inline-block;
max-width: 70px;
overflow: hidden;
@@ -796,31 +796,31 @@ a.action > img {
margin-left: 6px;
}
-#fileList .remoteAddress .userDomain {
+.files-fileList .remoteAddress .userDomain {
margin-left: 0 !important;
}
-#fileList .favorite-mark.permanent {
+.files-fileList .favorite-mark.permanent {
opacity: 1;
}
-#fileList .fileActionsMenu a.action:hover,
-#fileList .fileActionsMenu a.action:focus,
-#fileList a.action.action-share.shared-style:hover,
-#fileList a.action.action-share.shared-style:focus {
+.files-fileList .fileActionsMenu a.action:hover,
+.files-fileList .fileActionsMenu a.action:focus,
+.files-fileList a.action.action-share.shared-style:hover,
+.files-fileList a.action.action-share.shared-style:focus {
opacity: 1;
}
-#fileList tr a.action.disabled {
+.files-fileList tr a.action.disabled {
background: none;
}
-#selectedActionsList a.download.disabled,
-#fileList tr a.action.action-download.disabled {
+.selectedActions a.download.disabled,
+.files-fileList tr a.action.action-download.disabled {
color: #000000;
}
-#fileList tr:hover a.action.disabled:hover * {
+.files-fileList tr:hover a.action.disabled:hover * {
cursor: default;
}
@@ -830,7 +830,7 @@ a.action > img {
height: 330px;
}
-#filestable .filesummary {
+.files-filestable .summary .filesummary {
width: 100%;
/* Width of checkbox and file preview */
padding-left: 101px;
@@ -916,32 +916,32 @@ table.dragshadow td.size {
left: 57px !important;
}
-#filestable .filename .action .icon,
-#filestable .selectedActions a .icon,
-#filestable .filename .favorite-mark .icon,
-#controls .actions .button .icon {
+.files-filestable .filename .action .icon,
+.files-filestable .selectedActions a .icon,
+.files-filestable .filename .favorite-mark .icon,
+.files-controls .actions .button .icon {
display: inline-block;
vertical-align: middle;
background-size: 16px 16px;
}
-#filestable .filename .favorite-mark .icon-star {
+.files-filestable .filename .favorite-mark .icon-star {
background-image: none;
}
-#filestable .filename .favorite-mark .icon-starred {
+.files-filestable .filename .favorite-mark .icon-starred {
/* $dir is the app name, so we add this to the icon var to avoid conflicts between apps */
background-image: var(--icon-star-dark-yellow);
}
-#filestable .filename .action .icon.hidden,
-#filestable .selectedActions a .icon.hidden,
-#controls .actions .button .icon.hidden {
+.files-filestable .filename .action .icon.hidden,
+.files-filestable .selectedActions a .icon.hidden,
+.files-controls .actions .button .icon.hidden {
display: none;
}
-#filestable .filename .action .icon.loading,
-#filestable .selectedActions a .icon.loading,
-#controls .actions .button .icon.loading {
+.files-filestable .filename .action .icon.loading,
+.files-filestable .selectedActions a .icon.loading,
+.files-controls .actions .button .icon.loading {
width: 15px;
height: 15px;
}
@@ -955,7 +955,7 @@ table.dragshadow td.size {
}
.breadcrumb .canDrop > a,
-#filestable tbody tr.canDrop {
+.files-filestable tbody tr.canDrop {
background-color: rgba(0, 130, 201, 0.3);
}
@@ -1006,62 +1006,62 @@ table.dragshadow td.size {
}
/* GRID */
-#filestable.view-grid:not(.hidden) {
+.files-filestable.view-grid:not(.hidden) {
/* HEADER and MULTISELECT */
/* MAIN FILE LIST */
/* Center align the footer file number & size summary */
}
-#filestable.view-grid:not(.hidden) thead tr {
+.files-filestable.view-grid:not(.hidden) thead tr {
display: block;
border-bottom: 1px solid var(--color-border);
background-color: var(--color-main-background-translucent);
}
-#filestable.view-grid:not(.hidden) thead tr th {
+.files-filestable.view-grid:not(.hidden) thead tr th {
width: auto;
border: none;
}
-#filestable.view-grid:not(.hidden) tbody {
+.files-filestable.view-grid:not(.hidden) tbody {
display: grid;
grid-template-columns: repeat(auto-fill, 160px);
justify-content: space-around;
row-gap: 15px;
margin: 15px 0;
}
-#filestable.view-grid:not(.hidden) tbody tr:not(.hidden) {
+.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) {
display: block;
position: relative;
height: 190px;
border-radius: var(--border-radius);
}
-#filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover, #filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus, #filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active, #filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected, #filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult,
-#filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus, #filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted {
+.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover, .files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus, .files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active, .files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected, .files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult,
+.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus, .files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted {
background-color: transparent;
}
-#filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .thumbnail-wrapper,
-#filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .nametext,
-#filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .fileactions, #filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .thumbnail-wrapper,
-#filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .nametext,
-#filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .fileactions, #filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .thumbnail-wrapper,
-#filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .nametext,
-#filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .fileactions, #filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .thumbnail-wrapper,
-#filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .nametext,
-#filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .fileactions, #filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .thumbnail-wrapper,
-#filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .nametext,
-#filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .fileactions,
-#filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .thumbnail-wrapper,
-#filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .nametext,
-#filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .fileactions, #filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .thumbnail-wrapper,
-#filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .nametext,
-#filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .fileactions {
+.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .thumbnail-wrapper,
+.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .nametext,
+.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .fileactions, .files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .thumbnail-wrapper,
+.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .nametext,
+.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .fileactions, .files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .thumbnail-wrapper,
+.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .nametext,
+.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .fileactions, .files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .thumbnail-wrapper,
+.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .nametext,
+.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .fileactions, .files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .thumbnail-wrapper,
+.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .nametext,
+.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .fileactions,
+.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .thumbnail-wrapper,
+.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .nametext,
+.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .fileactions, .files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .thumbnail-wrapper,
+.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .nametext,
+.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .fileactions {
background-color: var(--color-background-hover);
}
-#filestable.view-grid:not(.hidden) tbody td {
+.files-filestable.view-grid:not(.hidden) tbody td {
display: inline;
border-bottom: none;
/* No space for filesize and date in grid view */
/* Position actions menu below file */
}
-#filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper {
+.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper {
min-width: 0;
max-width: none;
position: absolute;
@@ -1072,7 +1072,7 @@ table.dragshadow td.size {
left: 0;
z-index: -1;
}
-#filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail {
+.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail {
width: calc(100% - 2 * 14px);
height: calc(100% - 2 * 14px);
background-size: contain;
@@ -1084,13 +1084,13 @@ table.dragshadow td.size {
* Position is inherited from the selection while in grid view
*/
}
-#filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail .favorite-mark {
+.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail .favorite-mark {
padding: 14px;
left: auto;
top: -22px;
right: -22px;
}
-#filestable.view-grid:not(.hidden) tbody td.filename .uploadtext {
+.files-filestable.view-grid:not(.hidden) tbody td.filename .uploadtext {
width: 100%;
margin: 0;
top: 0;
@@ -1099,13 +1099,13 @@ table.dragshadow td.size {
padding-top: 4px;
padding-left: 28px;
}
-#filestable.view-grid:not(.hidden) tbody td.filename .name {
+.files-filestable.view-grid:not(.hidden) tbody td.filename .name {
height: 100%;
border-radius: var(--border-radius);
overflow: hidden;
cursor: pointer !important;
}
-#filestable.view-grid:not(.hidden) tbody td.filename .name .nametext {
+.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext {
display: flex;
height: 44px;
margin-top: 146px;
@@ -1114,27 +1114,27 @@ table.dragshadow td.size {
padding: 0;
/* No space for extension in grid view */
}
-#filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext {
+.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext {
display: inline-block;
text-align: center;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
-#filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:before {
+.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:before {
content: "";
flex: 1;
min-width: 14px;
}
-#filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:after {
+.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:after {
content: "";
flex: 1;
min-width: 44px;
}
-#filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .extension {
+.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .extension {
display: none;
}
-#filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions {
+.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions {
height: initial;
margin-top: 146px;
display: flex;
@@ -1142,7 +1142,7 @@ table.dragshadow td.size {
position: absolute;
right: 0;
}
-#filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action {
+.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action {
padding: 14px;
width: 44px;
height: 44px;
@@ -1150,34 +1150,34 @@ table.dragshadow td.size {
align-items: center;
justify-content: center;
}
-#filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action:not(.action-menu) {
+.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action:not(.action-menu) {
display: none;
}
-#filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden {
+.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden {
display: block !important;
}
-#filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden .action-share img {
+.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden .action-share img {
padding: 6px;
border-radius: 50%;
}
-#filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-restore-container.hidden {
+.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-restore-container.hidden {
display: block !important;
}
-#filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-comment-container.hidden {
+.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-comment-container.hidden {
display: block !important;
}
-#filestable.view-grid:not(.hidden) tbody td.filename form {
+.files-filestable.view-grid:not(.hidden) tbody td.filename form {
padding: 3px 14px;
border-radius: var(--border-radius);
}
-#filestable.view-grid:not(.hidden) tbody td.filename form input.filename {
+.files-filestable.view-grid:not(.hidden) tbody td.filename form input.filename {
width: 100%;
margin-left: 0;
}
-#filestable.view-grid:not(.hidden) tbody td.filesize, #filestable.view-grid:not(.hidden) tbody td.date {
+.files-filestable.view-grid:not(.hidden) tbody td.filesize, .files-filestable.view-grid:not(.hidden) tbody td.date {
display: none;
}
-#filestable.view-grid:not(.hidden) tbody td.selection, #filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark {
+.files-filestable.view-grid:not(.hidden) tbody td.selection, .files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark {
position: absolute;
top: -8px;
left: -8px;
@@ -1187,45 +1187,45 @@ table.dragshadow td.size {
z-index: 10;
background: transparent;
}
-#filestable.view-grid:not(.hidden) tbody td.selection label, #filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label {
+.files-filestable.view-grid:not(.hidden) tbody td.selection label, .files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label {
width: 44px;
height: 44px;
display: inline-flex;
padding: 14px;
}
-#filestable.view-grid:not(.hidden) tbody td.selection label::before, #filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label::before {
+.files-filestable.view-grid:not(.hidden) tbody td.selection label::before, .files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label::before {
margin: 0;
width: 14px;
height: 14px;
}
-#filestable.view-grid:not(.hidden) tbody td .popovermenu {
+.files-filestable.view-grid:not(.hidden) tbody td .popovermenu {
left: 0;
width: 150px;
margin: 0 5px;
/* Ellipsize long entries, normally menu width is adjusted but for grid we use fixed width. */
}
-#filestable.view-grid:not(.hidden) tbody td .popovermenu .menuitem span:not(.icon) {
+.files-filestable.view-grid:not(.hidden) tbody td .popovermenu .menuitem span:not(.icon) {
overflow: hidden;
text-overflow: ellipsis;
}
-#filestable.view-grid:not(.hidden) tr.hidden-file td.filename .name .nametext .extension {
+.files-filestable.view-grid:not(.hidden) tr.hidden-file td.filename .name .nametext .extension {
display: block;
}
-#filestable.view-grid:not(.hidden) tfoot {
+.files-filestable.view-grid:not(.hidden) tfoot {
display: grid;
}
-#filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) {
+.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) {
display: inline-block;
margin: 0 auto;
height: 418px;
}
-#filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td {
+.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td {
padding-top: 50px;
}
-#filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td:first-child, #filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td.date {
+.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td:first-child, .files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td.date {
display: none;
}
-#filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td .info {
+.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td .info {
margin-left: 0;
}
@@ -1261,14 +1261,14 @@ table.dragshadow td.size {
#body-public {
/* Right-align view toggle on link share page */
}
-#body-public #filestable.view-grid:not(.hidden) tbody td {
+#body-public .files-filestable.view-grid:not(.hidden) tbody td {
/* More space for filename since there is no share icon */
/* Position actions menu correctly below 3-dot-menu */
}
-#body-public #filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext {
+#body-public .files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext {
max-width: 124px;
}
-#body-public #filestable.view-grid:not(.hidden) tbody td .popovermenu {
+#body-public .files-filestable.view-grid:not(.hidden) tbody td .popovermenu {
left: -80px;
}
#body-public #view-toggle {
@@ -1338,18 +1338,18 @@ table.dragshadow td.size {
overflow: visible;
}
-#uploadprogresswrapper, #uploadprogresswrapper * {
+.uploadprogresswrapper, .uploadprogresswrapper * {
box-sizing: border-box;
}
-#uploadprogresswrapper {
+.uploadprogresswrapper {
display: inline-block;
vertical-align: top;
height: 36px;
margin-left: 3px;
}
-#uploadprogresswrapper > input[type=button] {
+.uploadprogresswrapper > input[type=button] {
height: 36px;
margin-left: 3px;
}
@@ -1591,9 +1591,9 @@ table.dragshadow td.size {
background-color: rgb(255, 255, 255) !important;
}
- table th#headerSize,
+ table th.column-size,
table td.filesize,
-table th#headerDate,
+table th.column-mtime,
table td.date {
display: none;
}
@@ -1608,17 +1608,17 @@ table td.date {
padding-left: 0;
}
- #fileList a.action.action-menu img {
+ .fileList a.action.action-menu img {
padding-left: 0;
}
- #fileList .fileActionsMenu {
+ .fileList .fileActionsMenu {
margin-right: 6px;
}
/* hide text of the share action on mobile */
/* .hidden-visually for accessbility */
- #fileList a.action-share span:not(.icon):not(.avatar) {
+ .fileList a.action-share span:not(.icon):not(.avatar) {
position: absolute;
left: -10000px;
top: auto;
diff --git a/apps/files/css/mobile.css b/apps/files/css/mobile.css
index 9cdbad85156..a6f5457f7d8 100644
--- a/apps/files/css/mobile.css
+++ b/apps/files/css/mobile.css
@@ -28,9 +28,9 @@
background-color: rgb(255, 255, 255) !important;
}
- table th#headerSize,
+ table th.column-size,
table td.filesize,
-table th#headerDate,
+table th.column-mtime,
table td.date {
display: none;
}
@@ -45,17 +45,17 @@ table td.date {
padding-left: 0;
}
- #fileList a.action.action-menu img {
+ .fileList a.action.action-menu img {
padding-left: 0;
}
- #fileList .fileActionsMenu {
+ .fileList .fileActionsMenu {
margin-right: 6px;
}
/* hide text of the share action on mobile */
/* .hidden-visually for accessbility */
- #fileList a.action-share span:not(.icon):not(.avatar) {
+ .fileList a.action-share span:not(.icon):not(.avatar) {
position: absolute;
left: -10000px;
top: auto;
diff --git a/apps/files/css/mobile.scss b/apps/files/css/mobile.scss
index 7c5fc8fe4a2..e47bbe44a63 100644
--- a/apps/files/css/mobile.scss
+++ b/apps/files/css/mobile.scss
@@ -10,9 +10,9 @@ $min-table-width: 688px;
background-color: rgba(255, 255, 255, 1)!important;
}
-table th#headerSize,
+table th.column-size,
table td.filesize,
-table th#headerDate,
+table th.column-mtime,
table td.date {
display: none;
}
@@ -27,16 +27,16 @@ table.multiselect thead {
padding-left: 0;
}
-#fileList a.action.action-menu img {
+.fileList a.action.action-menu img {
padding-left: 0;
}
-#fileList .fileActionsMenu {
+.fileList .fileActionsMenu {
margin-right: 6px;
}
/* hide text of the share action on mobile */
/* .hidden-visually for accessbility */
-#fileList a.action-share span:not(.icon):not(.avatar) {
+.fileList a.action-share span:not(.icon):not(.avatar) {
position: absolute;
left:-10000px;
top: auto;
diff --git a/apps/files/css/upload.css b/apps/files/css/upload.css
index dc90f5a793e..b5e3624052b 100644
--- a/apps/files/css/upload.css
+++ b/apps/files/css/upload.css
@@ -36,18 +36,18 @@
overflow: visible;
}
-#uploadprogresswrapper, #uploadprogresswrapper * {
+.uploadprogresswrapper, .uploadprogresswrapper * {
box-sizing: border-box;
}
-#uploadprogresswrapper {
+.uploadprogresswrapper {
display: inline-block;
vertical-align: top;
height: 36px;
margin-left: 3px;
}
-#uploadprogresswrapper > input[type=button] {
+.uploadprogresswrapper > input[type=button] {
height: 36px;
margin-left: 3px;
}
diff --git a/apps/files/css/upload.scss b/apps/files/css/upload.scss
index e7c1e9442e2..35fc763100e 100644
--- a/apps/files/css/upload.scss
+++ b/apps/files/css/upload.scss
@@ -23,17 +23,17 @@
.file_upload_target { display:none; }
.file_upload_form { display:inline; float:left; margin:0; padding:0; cursor:pointer; overflow:visible; }
-#uploadprogresswrapper, #uploadprogresswrapper * {
+.uploadprogresswrapper, .uploadprogresswrapper * {
box-sizing: border-box;
}
-#uploadprogresswrapper {
+.uploadprogresswrapper {
display: inline-block;
vertical-align: top;
height: 36px;
margin-left: 3px;
}
-#uploadprogresswrapper > input[type='button'] {
+.uploadprogresswrapper > input[type='button'] {
height: 36px;
margin-left: 3px;
}
diff --git a/apps/files/js/favoritesfilelist.js b/apps/files/js/favoritesfilelist.js
index 737f2fd6e96..7ea41da8143 100644
--- a/apps/files/js/favoritesfilelist.js
+++ b/apps/files/js/favoritesfilelist.js
@@ -18,7 +18,7 @@ window.addEventListener('DOMContentLoaded', function() {
* @classdesc Favorites file list.
* Displays the list of files marked as favorites
*
- * @param $el container element with existing markup for the #controls
+ * @param $el container element with existing markup for the .files-controls
* and a table
* @param [options] map of options, see other parameters
*/
@@ -48,8 +48,8 @@ window.addEventListener('DOMContentLoaded', function() {
var dir = this.getCurrentDirectory();
if (dir === '/') {
// root has special permissions
- this.$el.find('#emptycontent').toggleClass('hidden', !this.isEmpty);
- this.$el.find('#filestable thead th').toggleClass('hidden', this.isEmpty);
+ this.$el.find('.emptyfilelist.emptycontent').toggleClass('hidden', !this.isEmpty);
+ this.$el.find('.files-filestable thead th').toggleClass('hidden', this.isEmpty);
}
else {
OCA.Files.FileList.prototype.updateEmptyContent.apply(this, arguments);
diff --git a/apps/files/js/file-upload.js b/apps/files/js/file-upload.js
index 648a5a0307b..dc38f731108 100644
--- a/apps/files/js/file-upload.js
+++ b/apps/files/js/file-upload.js
@@ -1030,7 +1030,7 @@ OC.Uploader.prototype = _.extend({
// check free space
if (!self.fileList || upload.getTargetFolder() === self.fileList.getCurrentDirectory()) {
// Use global free space if there is no file list to check or the current directory is the target
- freeSpace = $('#free_space').val()
+ freeSpace = $('input[name=free_space]').val()
} else if (upload.getTargetFolder().indexOf(self.fileList.getCurrentDirectory()) === 0) {
// Check subdirectory free space if file is uploaded there
// Retrieve the folder destination name
@@ -1266,7 +1266,7 @@ OC.Uploader.prototype = _.extend({
});
fileupload.on('fileuploaddragover', function(e){
$('#app-content').addClass('file-drag');
- $('#emptycontent .icon-folder').addClass('icon-filetype-folder-drag-accept');
+ $('.emptyfilelist.emptycontent .icon-folder').addClass('icon-filetype-folder-drag-accept');
var filerow = $(e.delegatedEvent.target).closest('tr');
diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js
index 42afe792142..ac590fe2d74 100644
--- a/apps/files/js/filelist.js
+++ b/apps/files/js/filelist.js
@@ -18,7 +18,7 @@
* A file list view consists of a controls bar and
* a file list table.
*
- * @param $el container element with existing markup for the #controls
+ * @param $el container element with existing markup for the .files-controls
* and a table
* @param {Object} [options] map of options, see other parameters
* @param {Object} [options.scrollContainer] scrollable container, defaults to $(window)
@@ -224,7 +224,7 @@
/**
* Initialize the file list and its components
*
- * @param $el container element with existing markup for the #controls
+ * @param $el container element with existing markup for the .files-controls
* and a table
* @param options map of options, see other parameters
* @param options.scrollContainer scrollable container, defaults to $(window)
@@ -276,9 +276,9 @@
}
this.$container = options.scrollContainer || $(window);
this.$table = $el.find('table:first');
- this.$fileList = $el.find('#fileList');
- this.$header = $el.find('#filelist-header');
- this.$footer = $el.find('#filelist-footer');
+ this.$fileList = $el.find('.files-fileList');
+ this.$header = $el.find('.filelist-header');
+ this.$footer = $el.find('.filelist-footer');
if (!_.isUndefined(this._filesConfig)) {
this._filesConfig.on('change:showhidden', function() {
@@ -357,7 +357,7 @@
}
this.breadcrumb = new OCA.Files.BreadCrumb(breadcrumbOptions);
- var $controls = this.$el.find('#controls');
+ var $controls = this.$el.find('.files-controls');
if ($controls.length > 0) {
$controls.prepend(this.breadcrumb.$el);
this.$table.addClass('has-controls');
@@ -735,7 +735,7 @@
_onResize: function() {
var containerWidth = this.$el.width();
var actionsWidth = 0;
- $.each(this.$el.find('#controls .actions'), function(index, action) {
+ $.each(this.$el.find('.files-controls .actions'), function(index, action) {
actionsWidth += $(action).outerWidth();
});
@@ -763,7 +763,7 @@
isGridView ? t('files', 'Show list view') : t('files', 'Show grid view'),
)
- $('.list-container').toggleClass('view-grid', isGridView);
+ this.$table.toggleClass('view-grid', isGridView);
if (isGridView) {
// If switching into grid view from list view, too few files might be displayed
// Try rendering the next page
@@ -1898,6 +1898,7 @@
* @return new tr element (not appended to the table)
*/
add: function(fileData, options) {
+ var self = this;
var index;
var $tr;
var $rows;
@@ -1940,7 +1941,7 @@
$tr.addClass('appear transparent');
window.setTimeout(function() {
$tr.removeClass('transparent');
- $("#fileList tr").removeClass('mouseOver');
+ self.$fileList.find('tr').removeClass('mouseOver');
$tr.addClass('mouseOver');
});
}
@@ -2480,7 +2481,7 @@
this.$el.find('.creatable').toggleClass('hidden', !isCreatable);
this.$el.find('.notCreatable').toggleClass('hidden', isCreatable);
// remove old style breadcrumbs (some apps might create them)
- this.$el.find('#controls .crumb').remove();
+ this.$el.find('.files-controls .crumb').remove();
// refresh breadcrumbs in case it was replaced by an app
this.breadcrumb.render();
}
@@ -2496,7 +2497,7 @@
*/
setViewerMode: function(show){
this.showActions(!show);
- this.$el.find('#filestable').toggleClass('hidden', show);
+ this.$el.find('.files-filestable').toggleClass('hidden', show);
this.$el.trigger(new $.Event('changeViewerMode', {viewerModeEnabled: show}));
},
/**
@@ -3304,11 +3305,11 @@
updateEmptyContent: function() {
var permissions = this.getDirectoryPermissions();
var isCreatable = (permissions & OC.PERMISSION_CREATE) !== 0;
- this.$el.find('#emptycontent').toggleClass('hidden', !this.isEmpty);
- this.$el.find('#emptycontent').toggleClass('hidden', !this.isEmpty);
- this.$el.find('#emptycontent .uploadmessage').toggleClass('hidden', !isCreatable || !this.isEmpty);
- this.$el.find('#filestable').toggleClass('hidden', this.isEmpty);
- this.$el.find('#filestable thead th').toggleClass('hidden', this.isEmpty);
+ this.$el.find('.emptyfilelist.emptycontent').toggleClass('hidden', !this.isEmpty);
+ this.$el.find('.emptyfilelist.emptycontent').toggleClass('hidden', !this.isEmpty);
+ this.$el.find('.emptyfilelist.emptycontent .uploadmessage').toggleClass('hidden', !isCreatable || !this.isEmpty);
+ this.$el.find('.files-filestable').toggleClass('hidden', this.isEmpty);
+ this.$el.find('.files-filestable thead th').toggleClass('hidden', this.isEmpty);
},
/**
* Shows the loading mask.
@@ -3323,7 +3324,7 @@
}
this.$table.addClass('hidden');
- this.$el.find('#emptycontent').addClass('hidden');
+ this.$el.find('.emptyfilelist.emptycontent').addClass('hidden');
$mask = $('<div class="mask transparent icon-loading"></div>');
@@ -3408,8 +3409,8 @@
},
hideIrrelevantUIWhenNoFilesMatch:function() {
if (this._filter && this.fileSummary.summary.totalDirs + this.fileSummary.summary.totalFiles === 0) {
- this.$el.find('#filestable thead th').addClass('hidden');
- this.$el.find('#emptycontent').addClass('hidden');
+ this.$el.find('.files-filestable thead th').addClass('hidden');
+ this.$el.find('.emptyfilelist.emptycontent').addClass('hidden');
$('#searchresults').addClass('filter-empty');
$('#searchresults .emptycontent').addClass('emptycontent-search');
if ( $('#searchresults').length === 0 || $('#searchresults').hasClass('hidden') ) {
@@ -3425,9 +3426,9 @@
} else {
$('#searchresults').removeClass('filter-empty');
$('#searchresults .emptycontent').removeClass('emptycontent-search');
- this.$el.find('#filestable thead th').toggleClass('hidden', this.isEmpty);
+ this.$el.find('.files-filestable thead th').toggleClass('hidden', this.isEmpty);
if (!this.$el.find('.mask').exists()) {
- this.$el.find('#emptycontent').toggleClass('hidden', !this.isEmpty);
+ this.$el.find('.emptyfilelist.emptycontent').toggleClass('hidden', !this.isEmpty);
}
this.$el.find('.nofilterresults').addClass('hidden');
}
@@ -3449,15 +3450,15 @@
var showHidden = !!this._filesConfig.get('showhidden');
if (summary.totalFiles === 0 && summary.totalDirs === 0) {
- this.$el.find('#headerName a.name>span:first').text(t('files','Name'));
- this.$el.find('#headerSize a>span:first').text(t('files','Size'));
- this.$el.find('#modified a>span:first').text(t('files','Modified'));
+ this.$el.find('.column-name a.name>span:first').text(t('files','Name'));
+ this.$el.find('.column-size a>span:first').text(t('files','Size'));
+ this.$el.find('.column-mtime a>span:first').text(t('files','Modified'));
this.$el.find('table').removeClass('multiselect');
this.$el.find('.selectedActions').addClass('hidden');
}
else {
this.$el.find('.selectedActions').removeClass('hidden');
- this.$el.find('#headerSize a>span:first').text(OC.Util.humanFileSize(summary.totalSize));
+ this.$el.find('.column-size a>span:first').text(OC.Util.humanFileSize(summary.totalSize));
var directoryInfo = n('files', '%n folder', '%n folders', summary.totalDirs);
var fileInfo = n('files', '%n file', '%n files', summary.totalFiles);
@@ -3479,8 +3480,8 @@
selection += ' (' + hiddenInfo + ')';
}
- this.$el.find('#headerName a.name>span:first').text(selection);
- this.$el.find('#modified a>span:first').text('');
+ this.$el.find('.column-name a.name>span:first').text(selection);
+ this.$el.find('.column-mtime a>span:first').text('');
this.$el.find('table').addClass('multiselect');
if (this.fileMultiSelectMenu) {
@@ -3792,7 +3793,7 @@
}
var currentOffset = this.$container.scrollTop();
- var additionalOffset = this.$el.find("#controls").height()+this.$el.find("#controls").offset().top;
+ var additionalOffset = this.$el.find(".files-controls").height()+this.$el.find(".files-controls").offset().top;
// Animation
var _this = this;
@@ -3835,7 +3836,7 @@
_renderNewButton: function() {
// if an upload button (legacy) already exists or no actions container exist, skip
- var $actionsContainer = this.$el.find('#controls .actions');
+ var $actionsContainer = this.$el.find('.files-controls .actions');
if (!$actionsContainer.length || this.$el.find('.button.upload').length) {
return;
}
diff --git a/apps/files/js/keyboardshortcuts.js b/apps/files/js/keyboardshortcuts.js
index b2f2cd0e582..0e716fc6d37 100644
--- a/apps/files/js/keyboardshortcuts.js
+++ b/apps/files/js/keyboardshortcuts.js
@@ -57,21 +57,21 @@
}
function esc() {
- $("#controls").trigger('click');
+ $(".files-controls").trigger('click');
}
function down() {
var select = -1;
- $("#fileList tr").each(function(index) {
+ $(".files-fileList tr").each(function(index) {
if ($(this).hasClass("mouseOver")) {
select = index + 1;
$(this).removeClass("mouseOver");
}
});
if (select === -1) {
- $("#fileList tr:first").addClass("mouseOver");
+ $(".files-fileList tr:first").addClass("mouseOver");
} else {
- $("#fileList tr").each(function(index) {
+ $(".files-fileList tr").each(function(index) {
if (index === select) {
$(this).addClass("mouseOver");
}
@@ -81,16 +81,16 @@
function up() {
var select = -1;
- $("#fileList tr").each(function(index) {
+ $(".files-fileList tr").each(function(index) {
if ($(this).hasClass("mouseOver")) {
select = index - 1;
$(this).removeClass("mouseOver");
}
});
if (select === -1) {
- $("#fileList tr:last").addClass("mouseOver");
+ $(".files-fileList tr:last").addClass("mouseOver");
} else {
- $("#fileList tr").each(function(index) {
+ $(".files-fileList tr").each(function(index) {
if (index === select) {
$(this).addClass("mouseOver");
}
@@ -99,7 +99,7 @@
}
function enter() {
- $("#fileList tr").each(function(index) {
+ $(".files-fileList tr").each(function(index) {
if ($(this).hasClass("mouseOver")) {
$(this).removeClass("mouseOver");
$(this).find("span.nametext").trigger('click');
@@ -108,7 +108,7 @@
}
function del() {
- $("#fileList tr").each(function(index) {
+ $(".files-fileList tr").each(function(index) {
if ($(this).hasClass("mouseOver")) {
$(this).removeClass("mouseOver");
$(this).find("a.action.delete").trigger('click');
@@ -117,7 +117,7 @@
}
function rename() {
- $("#fileList tr").each(function(index) {
+ $(".files-fileList tr").each(function(index) {
if ($(this).hasClass("mouseOver")) {
$(this).removeClass("mouseOver");
$(this).find("a[data-action='Rename']").trigger('click');
diff --git a/apps/files/js/recentfilelist.js b/apps/files/js/recentfilelist.js
index 78eaa0b6858..3b7cd035f2a 100644
--- a/apps/files/js/recentfilelist.js
+++ b/apps/files/js/recentfilelist.js
@@ -18,7 +18,7 @@ window.addEventListener('DOMContentLoaded', function () {
* @classdesc Recent file list.
* Displays the list of recently modified files
*
- * @param $el container element with existing markup for the #controls
+ * @param $el container element with existing markup for the .files-controls
* and a table
* @param [options] map of options, see other parameters
*/
@@ -53,8 +53,8 @@ window.addEventListener('DOMContentLoaded', function () {
var dir = this.getCurrentDirectory();
if (dir === '/') {
// root has special permissions
- this.$el.find('#emptycontent').toggleClass('hidden', !this.isEmpty);
- this.$el.find('#filestable thead th').toggleClass('hidden', this.isEmpty);
+ this.$el.find('.emptyfilelist.emptycontent').toggleClass('hidden', !this.isEmpty);
+ this.$el.find('.files-filestable thead th').toggleClass('hidden', this.isEmpty);
}
else {
OCA.Files.FileList.prototype.updateEmptyContent.apply(this, arguments);
diff --git a/apps/files/templates/list.php b/apps/files/templates/list.php
index 9087c86a4a2..19365c67722 100644
--- a/apps/files/templates/list.php
+++ b/apps/files/templates/list.php
@@ -1,4 +1,4 @@
-<div id="controls">
+<div class="files-controls">
<div class="actions creatable hidden">
<div id="uploadprogresswrapper">
</div>
@@ -11,7 +11,7 @@
<?php /* Note: the template attributes are here only for the public page. These are normally loaded
through ajax instead (updateStorageStatistics).
*/ ?>
- <input type="hidden" name="permissions" value="" id="permissions">
+ <input type="hidden" id="permissions" value="">
<input type="hidden" id="free_space" value="<?php isset($_['freeSpace']) ? p($_['freeSpace']) : '' ?>">
<?php if (isset($_['dirToken'])):?>
<input type="hidden" id="publicUploadRequestToken" name="requesttoken" value="<?php p($_['requesttoken']) ?>" />
@@ -20,9 +20,9 @@
<input type="hidden" class="max_human_file_size"
value="(max <?php isset($_['uploadMaxHumanFilesize']) ? p($_['uploadMaxHumanFilesize']) : ''; ?>)">
</div>
-<div id="filelist-header"></div>
+<div class="filelist-header"></div>
-<div id="emptycontent" class="hidden">
+<div class="emptyfilelist emptycontent hidden">
<div class="icon-folder"></div>
<h2><?php p($l->t('No files in here')); ?></h2>
<p class="uploadmessage hidden"><?php p($l->t('Upload some content or sync with your devices!')); ?></p>
@@ -33,23 +33,23 @@
<h2><?php p($l->t('No entries found in this folder')); ?></h2>
<p></p>
</div>
-<table id="filestable" class="list-container <?php p($_['showgridview'] ? 'view-grid' : '') ?>" data-allow-public-upload="<?php p($_['publicUploadEnabled'])?>" data-preview-x="250" data-preview-y="250">
+<table class="files-filestable list-container <?php p($_['showgridview'] ? 'view-grid' : '') ?>" data-allow-public-upload="<?php p($_['publicUploadEnabled'])?>" data-preview-x="250" data-preview-y="250">
<thead>
<tr>
- <th id="headerSelection" class="hidden column-selection">
+ <th class="hidden column-selection">
<input type="checkbox" id="select_all_files" class="select-all checkbox"/>
<label for="select_all_files">
<span class="hidden-visually"><?php p($l->t('Select all'))?></span>
</label>
</th>
- <th id='headerName' class="hidden column-name">
- <div id="headerName-container">
+ <th class="hidden column-name">
+ <div class="column-name-container">
<a class="name sort columntitle" onclick="event.preventDefault()" href="#" data-sort="name">
<span><?php p($l->t('Name')); ?></span>
<span class="sort-indicator"></span>
</a>
- <span id="selectedActionsList" class="selectedActions">
+ <span class="selectedActions">
<a href="#" onclick="event.preventDefault()" class="actions-selected">
<span class="icon icon-more"></span>
<span><?php p($l->t('Actions'))?></span>
@@ -57,20 +57,20 @@
</span>
</div>
</th>
- <th id="headerSize" class="hidden column-size">
+ <th class="hidden column-size">
<a class="size sort columntitle" href="#" onclick="event.preventDefault()" data-sort="size"><span><?php p($l->t('Size')); ?></span><span class="sort-indicator"></span></a>
</th>
- <th id="headerDate" class="hidden column-mtime">
- <a id="modified" class="columntitle" href="#" onclick="event.preventDefault()" data-sort="mtime"><span><?php p($l->t('Modified')); ?></span><span class="sort-indicator"></span></a>
+ <th class="hidden column-mtime">
+ <a class="columntitle" href="#" onclick="event.preventDefault()" data-sort="mtime"><span><?php p($l->t('Modified')); ?></span><span class="sort-indicator"></span></a>
</th>
</tr>
</thead>
- <tbody id="fileList">
+ <tbody class="files-fileList">
</tbody>
<tfoot>
</tfoot>
</table>
-<div id="filelist-footer"></div>
+<div class="filelist-footer"></div>
<input type="hidden" name="dir" id="dir" value="" />
<div class="hiddenuploadfield">
<input type="file" id="file_upload_start" class="hiddenuploadfield" name="files[]" />
diff --git a/apps/files/templates/recentlist.php b/apps/files/templates/recentlist.php
index 3a5049bc2de..9e91b1c442c 100644
--- a/apps/files/templates/recentlist.php
+++ b/apps/files/templates/recentlist.php
@@ -1,7 +1,7 @@
<?php /** @var \OCP\IL10N $l */ ?>
<div id='notification'></div>
-<div id="emptycontent" class="hidden"></div>
+<div class="emptyfilelist emptycontent hidden"></div>
<input type="hidden" name="dir" value="" id="dir">
@@ -11,20 +11,20 @@
<p></p>
</div>
-<table id="filestable" class="list-container <?php p($_['showgridview'] ? 'view-grid' : '') ?>">
+<table class="files-filestable list-container <?php p($_['showgridview'] ? 'view-grid' : '') ?>">
<thead>
<tr>
- <th id='headerName' class="hidden column-name">
- <div id="headerName-container">
+ <th class="hidden column-name">
+ <div class="column-name-container">
<a class="name sort columntitle" href="#" onclick="event.preventDefault()"
data-sort="name"><span><?php p($l->t('Name')); ?></span></a>
</div>
</th>
- <th id="headerSize" class="hidden column-size">
+ <th class="hidden column-size">
<a class="size sort columntitle" href="#" onclick="event.preventDefault()"
data-sort="size"><span><?php p($l->t('Size')); ?></span></a>
</th>
- <th id="headerDate" class="hidden column-mtime">
+ <th class="hidden column-mtime">
<a id="modified" class="columntitle" href="#" onclick="event.preventDefault()"
data-sort="mtime"><span><?php p($l->t('Modified')); ?></span><span
class="sort-indicator"></span></a>
@@ -37,7 +37,7 @@
</th>
</tr>
</thead>
- <tbody id="fileList">
+ <tbody class="files-fileList">
</tbody>
<tfoot>
</tfoot>
diff --git a/apps/files/templates/simplelist.php b/apps/files/templates/simplelist.php
index 917fc307ff8..45c6f812501 100644
--- a/apps/files/templates/simplelist.php
+++ b/apps/files/templates/simplelist.php
@@ -1,6 +1,6 @@
<div id='notification'></div>
-<div id="emptycontent" class="hidden">
+<div class="emptyfilelist emptycontent hidden">
<div class="icon-starred"></div>
<h2><?php p($l->t('No favorites yet')); ?></h2>
<p><?php p($l->t('Files and folders you mark as favorite will show up here')); ?></p>
@@ -13,18 +13,18 @@
<h2><?php p($l->t('No entries found in this folder')); ?></h2>
<p></p>
</div>
-<table id="filestable" class="list-container <?php p($_['showgridview'] ? 'view-grid' : '') ?>">
+<table class="files-filestable list-container <?php p($_['showgridview'] ? 'view-grid' : '') ?>">
<thead>
<tr>
- <th id='headerName' class="hidden column-name">
- <div id="headerName-container">
+ <th class="hidden column-name">
+ <div class="column-name-container">
<a class="name sort columntitle" onclick="event.preventDefault()" href="#" data-sort="name"><span><?php p($l->t('Name')); ?></span><span class="sort-indicator"></span></a>
</div>
</th>
- <th id="headerSize" class="hidden column-size">
+ <th class="hidden column-size">
<a class="size sort columntitle" onclick="event.preventDefault()" href="#" data-sort="size"><span><?php p($l->t('Size')); ?></span><span class="sort-indicator"></span></a>
</th>
- <th id="headerDate" class="hidden column-mtime">
+ <th class="hidden column-mtime">
<a id="modified" class="columntitle" onclick="event.preventDefault()" href="#" data-sort="mtime"><span><?php p($l->t('Modified')); ?></span><span class="sort-indicator"></span></a>
<span class="selectedActions">
<a onclick="event.preventDefault()" href="#" class="delete-selected">
@@ -36,7 +36,7 @@
</th>
</tr>
</thead>
- <tbody id="fileList">
+ <tbody class="files-fileList">
</tbody>
<tfoot>
</tfoot>
diff --git a/apps/files/tests/js/breadcrumbSpec.js b/apps/files/tests/js/breadcrumbSpec.js
index 820b0f70569..52c9f51835e 100644
--- a/apps/files/tests/js/breadcrumbSpec.js
+++ b/apps/files/tests/js/breadcrumbSpec.js
@@ -183,9 +183,9 @@ describe('OCA.Files.BreadCrumb tests', function() {
// append dummy navigation and controls
// as they are currently used for measurements
$('#testArea').append(
- '<div id="controls"></div>'
+ '<div class="files-controls"></div>'
);
- $('#controls').append(bc.$el);
+ $('.files-controls').append(bc.$el);
bc.setDirectory(dummyDir);
@@ -197,11 +197,11 @@ describe('OCA.Files.BreadCrumb tests', function() {
$('div.crumbhome').css('width', 51);
$('div.crumbmenu').css('width', 51);
- $('#controls').width(1000);
+ $('.files-controls').width(1000);
bc._resize();
// Shrink to show popovermenu
- $('#controls').width(300);
+ $('.files-controls').width(300);
bc._resize();
$crumbmenuLink = bc.$el.find('.crumbmenu > a');
@@ -232,9 +232,9 @@ describe('OCA.Files.BreadCrumb tests', function() {
// append dummy navigation and controls
// as they are currently used for measurements
$('#testArea').append(
- '<div id="controls"></div>'
+ '<div class="files-controls"></div>'
);
- $('#controls').append(bc.$el);
+ $('.files-controls').append(bc.$el);
// triggers resize implicitly
bc.setDirectory(dummyDir);
@@ -260,7 +260,7 @@ describe('OCA.Files.BreadCrumb tests', function() {
it('Hides breadcrumbs to fit available width', function() {
var $crumbs;
- $('#controls').width(500);
+ $('.files-controls').width(500);
bc._resize();
$crumbs = bc.$el.find('.crumb');
@@ -280,7 +280,7 @@ describe('OCA.Files.BreadCrumb tests', function() {
it('Hides breadcrumbs to fit available width', function() {
var $crumbs;
- $('#controls').width(700);
+ $('.files-controls').width(700);
bc._resize();
$crumbs = bc.$el.find('.crumb');
@@ -306,7 +306,7 @@ describe('OCA.Files.BreadCrumb tests', function() {
$(this).css('padding', paddings[index]);
});
- $('#controls').width(700);
+ $('.files-controls').width(700);
bc._resize();
$crumbs = bc.$el.find('.crumb');
@@ -333,7 +333,7 @@ describe('OCA.Files.BreadCrumb tests', function() {
$(this).css('margin', margins[index]);
});
- $('#controls').width(700);
+ $('.files-controls').width(700);
bc._resize();
$crumbs = bc.$el.find('.crumb');
@@ -353,7 +353,7 @@ describe('OCA.Files.BreadCrumb tests', function() {
it('Hides breadcrumbs to fit available width left by siblings', function() {
var $crumbs;
- $('#controls').width(700);
+ $('.files-controls').width(700);
bc._resize();
$crumbs = bc.$el.find('.crumb');
@@ -375,28 +375,28 @@ describe('OCA.Files.BreadCrumb tests', function() {
// handling in the browsers used to run the tests.
$previousSibling.css('width', '50px');
$previousSibling.css('min-width', '50px');
- $('#controls').prepend($previousSibling);
+ $('.files-controls').prepend($previousSibling);
var $creatableActions = $('<div class="actions creatable"></div>');
// Set both the width and the min-width to even differences in width
// handling in the browsers used to run the tests.
$creatableActions.css('width', '100px');
$creatableActions.css('min-width', '100px');
- $('#controls').append($creatableActions);
+ $('.files-controls').append($creatableActions);
var $nextHiddenSibling = $('<div class="otherSibling hidden"></div>');
// Set both the width and the min-width to even differences in width
// handling in the browsers used to run the tests.
$nextHiddenSibling.css('width', '200px');
$nextHiddenSibling.css('min-width', '200px');
- $('#controls').append($nextHiddenSibling);
+ $('.files-controls').append($nextHiddenSibling);
var $nextSibling = $('<div class="otherSibling"></div>');
// Set both the width and the min-width to even differences in width
// handling in the browsers used to run the tests.
$nextSibling.css('width', '50px');
$nextSibling.css('min-width', '50px');
- $('#controls').append($nextSibling);
+ $('.files-controls').append($nextSibling);
bc._resize();
@@ -415,7 +415,7 @@ describe('OCA.Files.BreadCrumb tests', function() {
it('Hides breadcrumbs to fit available width left by siblings with paddings and margins', function() {
var $crumbs;
- $('#controls').width(700);
+ $('.files-controls').width(700);
bc._resize();
$crumbs = bc.$el.find('.crumb');
@@ -438,7 +438,7 @@ describe('OCA.Files.BreadCrumb tests', function() {
$previousSibling.css('width', '10px');
$previousSibling.css('min-width', '10px');
$previousSibling.css('margin', '20px');
- $('#controls').prepend($previousSibling);
+ $('.files-controls').prepend($previousSibling);
var $creatableActions = $('<div class="actions creatable"></div>');
// Set both the width and the min-width to even differences in width
@@ -447,14 +447,14 @@ describe('OCA.Files.BreadCrumb tests', function() {
$creatableActions.css('min-width', '20px');
$creatableActions.css('margin-left', '40px');
$creatableActions.css('padding-right', '40px');
- $('#controls').append($creatableActions);
+ $('.files-controls').append($creatableActions);
var $nextHiddenSibling = $('<div class="otherSibling hidden"></div>');
// Set both the width and the min-width to even differences in width
// handling in the browsers used to run the tests.
$nextHiddenSibling.css('width', '200px');
$nextHiddenSibling.css('min-width', '200px');
- $('#controls').append($nextHiddenSibling);
+ $('.files-controls').append($nextHiddenSibling);
var $nextSibling = $('<div class="otherSibling"></div>');
// Set both the width and the min-width to even differences in width
@@ -462,7 +462,7 @@ describe('OCA.Files.BreadCrumb tests', function() {
$nextSibling.css('width', '10px');
$nextSibling.css('min-width', '10px');
$nextSibling.css('padding', '20px');
- $('#controls').append($nextSibling);
+ $('.files-controls').append($nextSibling);
bc._resize();
@@ -482,7 +482,7 @@ describe('OCA.Files.BreadCrumb tests', function() {
var $crumbs;
// enough space
- $('#controls').width(1800);
+ $('.files-controls').width(1800);
bc._resize();
$crumbs = bc.$el.find('.crumb');
@@ -491,7 +491,7 @@ describe('OCA.Files.BreadCrumb tests', function() {
expect($crumbs.eq(0).hasClass('hidden')).toEqual(true);
// simulate decrease
- $('#controls').width(950);
+ $('.files-controls').width(950);
bc._resize();
// Third crumb is hidden and everything else is visible
@@ -509,7 +509,7 @@ describe('OCA.Files.BreadCrumb tests', function() {
var $crumbs;
// enough space
- $('#controls').width(1800);
+ $('.files-controls').width(1800);
bc._resize();
$crumbs = bc.$el.find('.crumb');
@@ -529,7 +529,7 @@ describe('OCA.Files.BreadCrumb tests', function() {
// 650 is enough for all the crumbs except the third and fourth
// ones, but not enough for the menu and all the crumbs except the
// third and fourth ones; the second one has to be hidden too.
- $('#controls').width(650);
+ $('.files-controls').width(650);
bc._resize();
// Second, third and fourth crumb are hidden and everything else is
@@ -548,7 +548,7 @@ describe('OCA.Files.BreadCrumb tests', function() {
var $crumbs;
// limited space
- $('#controls').width(850);
+ $('.files-controls').width(850);
bc._resize();
$crumbs = bc.$el.find('.crumb');
@@ -565,7 +565,7 @@ describe('OCA.Files.BreadCrumb tests', function() {
expect($crumbs.eq(7).hasClass('hidden')).toEqual(false);
// simulate increase
- $('#controls').width(1000);
+ $('.files-controls').width(1000);
bc._resize();
// Third crumb is hidden and everything else is visible
@@ -583,7 +583,7 @@ describe('OCA.Files.BreadCrumb tests', function() {
var $crumbs;
// limited space
- $('#controls').width(850);
+ $('.files-controls').width(850);
bc._resize();
$crumbs = bc.$el.find('.crumb');
@@ -601,7 +601,7 @@ describe('OCA.Files.BreadCrumb tests', function() {
// simulate increase
// 1030 is enough for all the crumbs if the menu is hidden.
- $('#controls').width(1030);
+ $('.files-controls').width(1030);
bc._resize();
// Menu is hidden and everything else is visible
@@ -629,10 +629,10 @@ describe('OCA.Files.BreadCrumb tests', function() {
var $nextSiblingChild = $('<div class="siblingChild"></div>');
$nextSiblingChild.css('margin-left', 'auto');
$nextSibling.append($nextSiblingChild);
- $('#controls').append($nextSibling);
+ $('.files-controls').append($nextSibling);
// limited space
- $('#controls').width(850);
+ $('.files-controls').width(850);
bc._resize();
$crumbs = bc.$el.find('.crumb');
@@ -649,7 +649,7 @@ describe('OCA.Files.BreadCrumb tests', function() {
expect($crumbs.eq(7).hasClass('hidden')).toEqual(false);
// simulate increase
- $('#controls').width(1000);
+ $('.files-controls').width(1000);
bc._resize();
// Third crumb is hidden and everything else is visible
diff --git a/apps/files/tests/js/favoritesfilelistspec.js b/apps/files/tests/js/favoritesfilelistspec.js
index 8602288cdde..1049553c5bd 100644
--- a/apps/files/tests/js/favoritesfilelistspec.js
+++ b/apps/files/tests/js/favoritesfilelistspec.js
@@ -33,25 +33,25 @@ describe('OCA.Files.FavoritesFileList tests', function() {
'<input type="hidden" id="dir" value="/"></input>' +
'<input type="hidden" id="permissions" value="31"></input>' +
// dummy controls
- '<div id="controls">' +
+ '<div class="files-controls">' +
' <div class="actions creatable"></div>' +
' <div class="notCreatable"></div>' +
'</div>' +
// dummy table
// TODO: at some point this will be rendered by the fileList class itself!
- '<table id="filestable" class="list-container view-grid">' +
+ '<table class="files-filestable list-container view-grid">' +
'<thead><tr>' +
- '<th id="headerName" class="hidden column-name">' +
+ '<th class="hidden column-name">' +
'<a class="name columntitle" data-sort="name"><span>Name</span><span class="sort-indicator"></span></a>' +
'</th>' +
'<th class="hidden column-mtime">' +
'<a class="columntitle" data-sort="mtime"><span class="sort-indicator"></span></a>' +
'</th>' +
'</tr></thead>' +
- '<tbody id="fileList"></tbody>' +
+ '<tbody class="files-fileList"></tbody>' +
'<tfoot></tfoot>' +
'</table>' +
- '<div id="emptycontent">Empty content message</div>' +
+ '<div class="emptyfilelist emptycontent">Empty content message</div>' +
'</div>'
);
});
diff --git a/apps/files/tests/js/favoritespluginspec.js b/apps/files/tests/js/favoritespluginspec.js
index 94359e0e706..ca0cea8b29a 100644
--- a/apps/files/tests/js/favoritespluginspec.js
+++ b/apps/files/tests/js/favoritespluginspec.js
@@ -88,7 +88,7 @@ describe('OCA.Files.FavoritesPlugin tests', function() {
var setActiveViewStub = sinon.stub(OCA.Files.App, 'setActiveView');
// create dummy table so we can click the dom
- var $table = '<table><thead></thead><tbody id="fileList"></tbody></table>';
+ var $table = '<table><thead></thead><tbody class="files-fileList"></tbody></table>';
$('#app-content-favorites').append($table);
Plugin.favoritesFileList = null;
diff --git a/apps/files/tests/js/fileUploadSpec.js b/apps/files/tests/js/fileUploadSpec.js
index d8bca4a8ca4..c3c88d256bb 100644
--- a/apps/files/tests/js/fileUploadSpec.js
+++ b/apps/files/tests/js/fileUploadSpec.js
@@ -136,9 +136,9 @@ describe('OC.Upload tests', function() {
beforeEach(function() {
$('#testArea').append(
'<div id="tableContainer">' +
- '<table id="filestable" class="list-container view-grid">' +
+ '<table class="files-filestable list-container view-grid">' +
'<thead><tr>' +
- '<th id="headerName" class="hidden column-name">' +
+ '<th class="hidden column-name">' +
'<input type="checkbox" id="select_all_files" class="select-all">' +
'<a class="name columntitle" data-sort="name"><span>Name</span><span class="sort-indicator"></span></a>' +
'<span id="selectedActionsList" class="selectedActions hidden">' +
@@ -148,7 +148,7 @@ describe('OC.Upload tests', function() {
'<th class="hidden column-size"><a class="columntitle" data-sort="size"><span class="sort-indicator"></span></a></th>' +
'<th class="hidden column-mtime"><a class="columntitle" data-sort="mtime"><span class="sort-indicator"></span></a></th>' +
'</tr></thead>' +
- '<tbody id="fileList"></tbody>' +
+ '<tbody class="files-fileList"></tbody>' +
'<tfoot></tfoot>' +
'</table>' +
'</div>'
diff --git a/apps/files/tests/js/fileactionsSpec.js b/apps/files/tests/js/fileactionsSpec.js
index cc12bfc7642..536688d291d 100644
--- a/apps/files/tests/js/fileactionsSpec.js
+++ b/apps/files/tests/js/fileactionsSpec.js
@@ -35,7 +35,7 @@ describe('OCA.Files.FileActions tests', function() {
var $body = $('#testArea');
$body.append('<input type="hidden" id="dir" value="/subdir"></input>');
$body.append('<input type="hidden" id="permissions" value="31"></input>');
- $body.append('<table id="filestable" class="list-container view-grid"><tbody id="fileList"></tbody></table>');
+ $body.append('<table class="files-filestable list-container view-grid"><tbody class="files-fileList"></tbody></table>');
// dummy files table
fileActions = new OCA.Files.FileActions();
fileActions.registerAction({
@@ -72,7 +72,7 @@ describe('OCA.Files.FileActions tests', function() {
fileList.destroy();
fileList = undefined;
clock.restore();
- $('#dir, #permissions, #filestable').remove();
+ $('#dir, #permissions, .files-filestable').remove();
});
it('calling clear() clears file actions', function() {
fileActions.clear();
@@ -307,6 +307,8 @@ describe('OCA.Files.FileActions tests', function() {
});
it('passes context to action handler', function() {
var notifyUpdateListenersSpy = sinon.spy(fileList.fileActions, '_notifyUpdateListeners');
+ expect($tr.length).toEqual(1);
+ expect($tr.find('.action-test').length).toEqual(1);
$tr.find('.action-test').click();
expect(actionStub.calledOnce).toEqual(true);
expect(actionStub.getCall(0).args[0]).toEqual('testName.txt');
diff --git a/apps/files/tests/js/fileactionsmenuSpec.js b/apps/files/tests/js/fileactionsmenuSpec.js
index 7549bd9dc85..4ede99dc333 100644
--- a/apps/files/tests/js/fileactionsmenuSpec.js
+++ b/apps/files/tests/js/fileactionsmenuSpec.js
@@ -100,7 +100,7 @@ describe('OCA.Files.FileActionsMenu tests', function() {
fileList.destroy();
fileList = undefined;
menu.remove();
- $('#dir, #permissions, #filestable').remove();
+ $('#dir, #permissions, .files-filestable').remove();
});
describe('rendering', function() {
diff --git a/apps/files/tests/js/filelistSpec.js b/apps/files/tests/js/filelistSpec.js
index cd797626d2f..9b7c785ca44 100644
--- a/apps/files/tests/js/filelistSpec.js
+++ b/apps/files/tests/js/filelistSpec.js
@@ -107,7 +107,7 @@ describe('OCA.Files.FileList tests', function() {
'<input type="hidden" id="dir" value="/subdir"/>' +
'<input type="hidden" id="permissions" value="31"/>' +
// dummy controls
- '<div id="controls">' +
+ '<div class="files-controls">' +
' <div class="actions creatable"></div>' +
' <div class="notCreatable"></div>' +
'</div>' +
@@ -115,9 +115,9 @@ describe('OCA.Files.FileList tests', function() {
'<input type="file" id="file_upload_start" name="files[]" multiple="multiple">' +
// dummy table
// TODO: at some point this will be rendered by the fileList class itself!
- '<table id="filestable" class="list-container view-grid">' +
+ '<table class="files-filestable list-container view-grid">' +
'<thead><tr>' +
- '<th id="headerName" class="hidden column-name">' +
+ '<th class="hidden column-name">' +
'<input type="checkbox" id="select_all_files" class="select-all checkbox">' +
'<a class="name columntitle" href="#" onclick="event.preventDefault()" data-sort="name"><span>Name</span><span class="sort-indicator"></span></a>' +
'<span id="selectedActionsList" class="selectedActions hidden">' +
@@ -126,11 +126,11 @@ describe('OCA.Files.FileList tests', function() {
'<th class="hidden column-size"><a class="columntitle" href="#" onclick="event.preventDefault()" data-sort="size"><span class="sort-indicator"></span></a></th>' +
'<th class="hidden column-mtime"><a class="columntitle" href="#" onclick="event.preventDefault()" data-sort="mtime"><span class="sort-indicator"></span></a></th>' +
'</tr></thead>' +
- '<tbody id="fileList"></tbody>' +
+ '<tbody class="files-fileList"></tbody>' +
'<tfoot></tfoot>' +
'</table>' +
// TODO: move to handlebars template
- '<div id="emptycontent"><h2>Empty content message</h2><p class="uploadmessage">Upload message</p></div>' +
+ '<div class="emptyfilelist emptycontent"><h2>Empty content message</h2><p class="uploadmessage">Upload message</p></div>' +
'<div class="nofilterresults hidden"></div>' +
'</div>'
);
@@ -460,7 +460,7 @@ describe('OCA.Files.FileList tests', function() {
fileList.setFiles([]);
expect(fileList.isEmpty).toEqual(true);
fileList.add(fileData);
- $summary = $('#filestable .summary');
+ $summary = $('.files-filestable .summary');
expect($summary.hasClass('hidden')).toEqual(false);
// yes, ugly...
expect($summary.find('.fileinfo').text()).toEqual('1 file');
@@ -468,8 +468,8 @@ describe('OCA.Files.FileList tests', function() {
expect($summary.find('.connector').hasClass('hidden')).toEqual(true);
expect($summary.find('.fileinfo').hasClass('hidden')).toEqual(false);
expect($summary.find('.filesize').text()).toEqual('12 B');
- expect($('#filestable thead th').hasClass('hidden')).toEqual(false);
- expect($('#emptycontent').hasClass('hidden')).toEqual(true);
+ expect($('.files-filestable thead th').hasClass('hidden')).toEqual(false);
+ expect($('.emptyfilelist.emptycontent').hasClass('hidden')).toEqual(true);
expect(fileList.isEmpty).toEqual(false);
});
it('correctly adds the extension markup and show hidden files completely in gray', function() {
@@ -529,11 +529,11 @@ describe('OCA.Files.FileList tests', function() {
$removedEl = fileList.remove('One.txt');
expect($removedEl).toBeDefined();
expect($removedEl.attr('data-file')).toEqual('One.txt');
- expect($('#fileList tr').length).toEqual(3);
+ expect($('.files-fileList tr').length).toEqual(3);
expect(fileList.files.length).toEqual(3);
expect(fileList.findFileEl('One.txt').length).toEqual(0);
- $summary = $('#filestable .summary');
+ $summary = $('.files-filestable .summary');
expect($summary.hasClass('hidden')).toEqual(false);
expect($summary.find('.dirinfo').text()).toEqual('1 folder');
expect($summary.find('.fileinfo').text()).toEqual('2 files');
@@ -546,14 +546,14 @@ describe('OCA.Files.FileList tests', function() {
var $summary;
fileList.setFiles([testFiles[0]]);
fileList.remove('One.txt');
- expect($('#fileList tr').length).toEqual(0);
+ expect($('.files-fileList tr').length).toEqual(0);
expect(fileList.files.length).toEqual(0);
expect(fileList.findFileEl('One.txt').length).toEqual(0);
- $summary = $('#filestable .summary');
+ $summary = $('.files-filestable .summary');
expect($summary.hasClass('hidden')).toEqual(true);
- expect($('#filestable thead th').hasClass('hidden')).toEqual(true);
- expect($('#emptycontent').hasClass('hidden')).toEqual(false);
+ expect($('.files-filestable thead th').hasClass('hidden')).toEqual(true);
+ expect($('.emptycontent').hasClass('hidden')).toEqual(false);
expect(fileList.isEmpty).toEqual(true);
});
});
@@ -603,7 +603,7 @@ describe('OCA.Files.FileList tests', function() {
expect(fileList.findFileEl('Three.pdf').length).toEqual(1);
expect(fileList.$fileList.find('tr').length).toEqual(2);
- $summary = $('#filestable .summary');
+ $summary = $('.files-filestable .summary');
expect($summary.hasClass('hidden')).toEqual(false);
expect($summary.find('.dirinfo').text()).toEqual('1 folder');
expect($summary.find('.fileinfo').text()).toEqual('1 file');
@@ -611,8 +611,8 @@ describe('OCA.Files.FileList tests', function() {
expect($summary.find('.fileinfo').hasClass('hidden')).toEqual(false);
expect($summary.find('.filesize').text()).toEqual('57 KB');
expect(fileList.isEmpty).toEqual(false);
- expect($('#filestable thead th').hasClass('hidden')).toEqual(false);
- expect($('#emptycontent').hasClass('hidden')).toEqual(true);
+ expect($('.files-filestable thead th').hasClass('hidden')).toEqual(false);
+ expect($('.emptycontent').hasClass('hidden')).toEqual(true);
expect(notificationStub.notCalled).toEqual(true);
}).then(done, done);
@@ -677,12 +677,12 @@ describe('OCA.Files.FileList tests', function() {
return doDelete().then(function(){
expect(fileList.$fileList.find('tr').length).toEqual(0);
- $summary = $('#filestable .summary');
+ $summary = $('.files-filestable .summary');
expect($summary.hasClass('hidden')).toEqual(true);
expect(fileList.isEmpty).toEqual(true);
expect(fileList.files.length).toEqual(0);
- expect($('#filestable thead th').hasClass('hidden')).toEqual(true);
- expect($('#emptycontent').hasClass('hidden')).toEqual(false);
+ expect($('.files-filestable thead th').hasClass('hidden')).toEqual(true);
+ expect($('.emptycontent').hasClass('hidden')).toEqual(false);
}).then(done, done);
});
it('bring back deleted item when delete call failed', function(done) {
@@ -804,7 +804,7 @@ describe('OCA.Files.FileList tests', function() {
expect(fileList.$fileList.find('.test').length).toEqual(0);
});
it('Leaves the summary alone when reinserting renamed element', function() {
- var $summary = $('#filestable .summary');
+ var $summary = $('.files-filestable .summary');
doRename();
deferredRename.resolve(201);
@@ -813,7 +813,7 @@ describe('OCA.Files.FileList tests', function() {
expect($summary.find('.fileinfo').text()).toEqual('3 files');
});
it('Leaves the summary alone when cancel renaming', function() {
- var $summary = $('#filestable .summary');
+ var $summary = $('.files-filestable .summary');
doCancelRename();
expect($summary.find('.dirinfo').text()).toEqual('1 folder');
expect($summary.find('.fileinfo').text()).toEqual('3 files');
@@ -1105,7 +1105,7 @@ describe('OCA.Files.FileList tests', function() {
describe('Update file', function() {
it('does not change summary', function() {
- var $summary = $('#filestable .summary');
+ var $summary = $('.files-filestable .summary');
var fileData = new FileInfo({
type: 'file',
name: 'test file',
@@ -1127,14 +1127,14 @@ describe('OCA.Files.FileList tests', function() {
expect(fileList.files.length).toEqual(0);
expect(fileList.files).toEqual([]);
fileList.setFiles(testFiles);
- expect($('#fileList tr').length).toEqual(4);
+ expect($('.files-fileList tr').length).toEqual(4);
expect(fileList.files.length).toEqual(4);
expect(fileList.files).toEqual(testFiles);
});
it('updates summary using the file sizes', function() {
var $summary;
fileList.setFiles(testFiles);
- $summary = $('#filestable .summary');
+ $summary = $('.files-filestable .summary');
expect($summary.hasClass('hidden')).toEqual(false);
expect($summary.find('.dirinfo').text()).toEqual('1 folder');
expect($summary.find('.fileinfo').text()).toEqual('3 files');
@@ -1142,23 +1142,23 @@ describe('OCA.Files.FileList tests', function() {
});
it('shows headers, summary and hide empty content message after setting files', function(){
fileList.setFiles(testFiles);
- expect($('#filestable thead th').hasClass('hidden')).toEqual(false);
- expect($('#emptycontent').hasClass('hidden')).toEqual(true);
+ expect($('.files-filestable thead th').hasClass('hidden')).toEqual(false);
+ expect($('.emptycontent').hasClass('hidden')).toEqual(true);
expect(fileList.$el.find('.summary').hasClass('hidden')).toEqual(false);
});
it('hides headers, summary and show empty content message after setting empty file list', function(){
fileList.setFiles([]);
- expect($('#filestable thead th').hasClass('hidden')).toEqual(true);
- expect($('#emptycontent').hasClass('hidden')).toEqual(false);
- expect($('#emptycontent .uploadmessage').hasClass('hidden')).toEqual(false);
+ expect($('.files-filestable thead th').hasClass('hidden')).toEqual(true);
+ expect($('.emptycontent').hasClass('hidden')).toEqual(false);
+ expect($('.emptycontent .uploadmessage').hasClass('hidden')).toEqual(false);
expect(fileList.$el.find('.summary').hasClass('hidden')).toEqual(true);
});
it('hides headers, upload message, and summary when list is empty and user has no creation permission', function(){
$('#permissions').val(0);
fileList.setFiles([]);
- expect($('#filestable thead th').hasClass('hidden')).toEqual(true);
- expect($('#emptycontent').hasClass('hidden')).toEqual(false);
- expect($('#emptycontent .uploadmessage').hasClass('hidden')).toEqual(true);
+ expect($('.files-filestable thead th').hasClass('hidden')).toEqual(true);
+ expect($('.emptycontent').hasClass('hidden')).toEqual(false);
+ expect($('.emptycontent .uploadmessage').hasClass('hidden')).toEqual(true);
expect(fileList.$el.find('.summary').hasClass('hidden')).toEqual(true);
});
it('calling findFileEl() can find existing file element', function() {
@@ -1220,7 +1220,7 @@ describe('OCA.Files.FileList tests', function() {
var $summary;
// single file
fileList.setFiles([testFiles[0]]);
- $summary = $('#filestable .summary');
+ $summary = $('.files-filestable .summary');
expect($summary.hasClass('hidden')).toEqual(false);
expect($summary.find('.dirinfo').hasClass('hidden')).toEqual(true);
expect($summary.find('.fileinfo').text()).toEqual('1 file');
@@ -1235,18 +1235,18 @@ describe('OCA.Files.FileList tests', function() {
expect(fileList.files.length).toEqual(0);
expect(fileList.files).toEqual([]);
fileList.setFiles(testFiles);
- var $summary = $('#filestable .summary');
+ var $summary = $('.files-filestable .summary');
var $nofilterresults = fileList.$el.find(".nofilterresults");
expect($nofilterresults.length).toEqual(1);
expect($summary.hasClass('hidden')).toEqual(false);
- expect($('#fileList tr:not(.hidden)').length).toEqual(4);
+ expect($('.files-fileList tr:not(.hidden)').length).toEqual(4);
expect(fileList.files.length).toEqual(4);
expect($summary.hasClass('hidden')).toEqual(false);
expect($nofilterresults.hasClass('hidden')).toEqual(true);
fileList.setFilter('e');
- expect($('#fileList tr:not(.hidden)').length).toEqual(3);
+ expect($('.files-fileList tr:not(.hidden)').length).toEqual(3);
expect(fileList.files.length).toEqual(4);
expect($summary.hasClass('hidden')).toEqual(false);
expect($summary.find('.dirinfo').text()).toEqual('1 folder');
@@ -1255,7 +1255,7 @@ describe('OCA.Files.FileList tests', function() {
expect($nofilterresults.hasClass('hidden')).toEqual(true);
fileList.setFilter('ee');
- expect($('#fileList tr:not(.hidden)').length).toEqual(1);
+ expect($('.files-fileList tr:not(.hidden)').length).toEqual(1);
expect(fileList.files.length).toEqual(4);
expect($summary.hasClass('hidden')).toEqual(false);
expect($summary.find('.dirinfo').hasClass('hidden')).toEqual(true);
@@ -1264,13 +1264,13 @@ describe('OCA.Files.FileList tests', function() {
expect($nofilterresults.hasClass('hidden')).toEqual(true);
fileList.setFilter('eee');
- expect($('#fileList tr:not(.hidden)').length).toEqual(0);
+ expect($('.files-fileList tr:not(.hidden)').length).toEqual(0);
expect(fileList.files.length).toEqual(4);
expect($summary.hasClass('hidden')).toEqual(true);
expect($nofilterresults.hasClass('hidden')).toEqual(false);
fileList.setFilter('ee');
- expect($('#fileList tr:not(.hidden)').length).toEqual(1);
+ expect($('.files-fileList tr:not(.hidden)').length).toEqual(1);
expect(fileList.files.length).toEqual(4);
expect($summary.hasClass('hidden')).toEqual(false);
expect($summary.find('.dirinfo').hasClass('hidden')).toEqual(true);
@@ -1279,7 +1279,7 @@ describe('OCA.Files.FileList tests', function() {
expect($nofilterresults.hasClass('hidden')).toEqual(true);
fileList.setFilter('e');
- expect($('#fileList tr:not(.hidden)').length).toEqual(3);
+ expect($('.files-fileList tr:not(.hidden)').length).toEqual(3);
expect(fileList.files.length).toEqual(4);
expect($summary.hasClass('hidden')).toEqual(false);
expect($summary.find('.dirinfo').text()).toEqual('1 folder');
@@ -1288,7 +1288,7 @@ describe('OCA.Files.FileList tests', function() {
expect($nofilterresults.hasClass('hidden')).toEqual(true);
fileList.setFilter('');
- expect($('#fileList tr:not(.hidden)').length).toEqual(4);
+ expect($('.files-fileList tr:not(.hidden)').length).toEqual(4);
expect(fileList.files.length).toEqual(4);
expect($summary.hasClass('hidden')).toEqual(false);
expect($summary.find('.dirinfo').text()).toEqual('1 folder');
@@ -1296,12 +1296,12 @@ describe('OCA.Files.FileList tests', function() {
expect($nofilterresults.hasClass('hidden')).toEqual(true);
});
it('filters the list of non-rendered rows using filter()', function() {
- var $summary = $('#filestable .summary');
+ var $summary = $('.files-filestable .summary');
var $nofilterresults = fileList.$el.find(".nofilterresults");
fileList.setFiles(generateFiles(0, 64));
fileList.setFilter('63');
- expect($('#fileList tr:not(.hidden)').length).toEqual(1);
+ expect($('.files-fileList tr:not(.hidden)').length).toEqual(1);
expect($summary.hasClass('hidden')).toEqual(false);
expect($summary.find('.dirinfo').hasClass('hidden')).toEqual(true);
expect($summary.find('.fileinfo').text()).toEqual('1 file');
@@ -1312,27 +1312,27 @@ describe('OCA.Files.FileList tests', function() {
expect(fileList.files.length).toEqual(0);
expect(fileList.files).toEqual([]);
fileList.setFiles([]);
- var $summary = $('#filestable .summary');
- var $emptycontent = fileList.$el.find("#emptycontent");
+ var $summary = $('.files-filestable .summary');
+ var $emptycontent = fileList.$el.find(".emptycontent");
var $nofilterresults = fileList.$el.find(".nofilterresults");
expect($emptycontent.length).toEqual(1);
expect($nofilterresults.length).toEqual(1);
- expect($('#fileList tr:not(.hidden)').length).toEqual(0);
+ expect($('.files-fileList tr:not(.hidden)').length).toEqual(0);
expect(fileList.files.length).toEqual(0);
expect($summary.hasClass('hidden')).toEqual(true);
expect($emptycontent.hasClass('hidden')).toEqual(false);
expect($nofilterresults.hasClass('hidden')).toEqual(true);
fileList.setFilter('e');
- expect($('#fileList tr:not(.hidden)').length).toEqual(0);
+ expect($('.files-fileList tr:not(.hidden)').length).toEqual(0);
expect(fileList.files.length).toEqual(0);
expect($summary.hasClass('hidden')).toEqual(true);
expect($emptycontent.hasClass('hidden')).toEqual(true);
expect($nofilterresults.hasClass('hidden')).toEqual(false);
fileList.setFilter('');
- expect($('#fileList tr:not(.hidden)').length).toEqual(0);
+ expect($('.files-fileList tr:not(.hidden)').length).toEqual(0);
expect(fileList.files.length).toEqual(0);
expect($summary.hasClass('hidden')).toEqual(true);
expect($emptycontent.hasClass('hidden')).toEqual(false);
@@ -1343,7 +1343,7 @@ describe('OCA.Files.FileList tests', function() {
expect(fileList.files).toEqual([]);
fileList.showMask();
fileList.setFiles(testFiles);
- var $emptycontent = fileList.$el.find("#emptycontent");
+ var $emptycontent = fileList.$el.find(".emptycontent");
var $nofilterresults = fileList.$el.find(".nofilterresults");
expect($emptycontent.length).toEqual(1);
expect($nofilterresults.length).toEqual(1);
@@ -1368,7 +1368,7 @@ describe('OCA.Files.FileList tests', function() {
});
it('renders only the first page', function() {
expect(fileList.files.length).toEqual(65);
- expect($('#fileList tr').length).toEqual(20);
+ expect($('.files-fileList tr').length).toEqual(20);
});
it('renders the full first page despite hidden rows', function() {
filesConfig.set('showhidden', false);
@@ -1382,7 +1382,7 @@ describe('OCA.Files.FileList tests', function() {
fileList.setFiles(files);
expect(fileList.files.length).toEqual(25);
// render 24 hidden elements + the visible one
- expect($('#fileList tr').length).toEqual(25);
+ expect($('.files-fileList tr').length).toEqual(25);
});
it('renders the full first page despite hidden rows', function() {
filesConfig.set('showhidden', true);
@@ -1396,19 +1396,19 @@ describe('OCA.Files.FileList tests', function() {
fileList.setFiles(files);
expect(fileList.files.length).toEqual(25);
// render 20 first hidden elements as visible
- expect($('#fileList tr').length).toEqual(20);
+ expect($('.files-fileList tr').length).toEqual(20);
});
it('renders the second page when scrolling down (trigger nextPage)', function() {
// TODO: can't simulate scrolling here, so calling nextPage directly
fileList._nextPage(true);
- expect($('#fileList tr').length).toEqual(40);
+ expect($('.files-fileList tr').length).toEqual(40);
fileList._nextPage(true);
- expect($('#fileList tr').length).toEqual(60);
+ expect($('.files-fileList tr').length).toEqual(60);
fileList._nextPage(true);
- expect($('#fileList tr').length).toEqual(65);
+ expect($('.files-fileList tr').length).toEqual(65);
fileList._nextPage(true);
// stays at 65
- expect($('#fileList tr').length).toEqual(65);
+ expect($('.files-fileList tr').length).toEqual(65);
});
it('inserts into the DOM if insertion point is in the visible page ', function() {
fileList.add({
@@ -1416,7 +1416,7 @@ describe('OCA.Files.FileList tests', function() {
type: 'file',
name: 'File with index 15b.txt'
});
- expect($('#fileList tr').length).toEqual(21);
+ expect($('.files-fileList tr').length).toEqual(21);
expect(fileList.findFileEl('File with index 15b.txt').index()).toEqual(16);
});
it('does not inserts into the DOM if insertion point is not the visible page ', function() {
@@ -1425,10 +1425,10 @@ describe('OCA.Files.FileList tests', function() {
type: 'file',
name: 'File with index 28b.txt'
});
- expect($('#fileList tr').length).toEqual(20);
+ expect($('.files-fileList tr').length).toEqual(20);
expect(fileList.findFileEl('File with index 28b.txt').length).toEqual(0);
fileList._nextPage(true);
- expect($('#fileList tr').length).toEqual(40);
+ expect($('.files-fileList tr').length).toEqual(40);
expect(fileList.findFileEl('File with index 28b.txt').index()).toEqual(29);
});
it('appends into the DOM when inserting a file after the last visible element', function() {
@@ -1437,43 +1437,43 @@ describe('OCA.Files.FileList tests', function() {
type: 'file',
name: 'File with index 19b.txt'
});
- expect($('#fileList tr').length).toEqual(21);
+ expect($('.files-fileList tr').length).toEqual(21);
fileList._nextPage(true);
- expect($('#fileList tr').length).toEqual(41);
+ expect($('.files-fileList tr').length).toEqual(41);
});
it('appends into the DOM when inserting a file on the last page when visible', function() {
fileList._nextPage(true);
- expect($('#fileList tr').length).toEqual(40);
+ expect($('.files-fileList tr').length).toEqual(40);
fileList._nextPage(true);
- expect($('#fileList tr').length).toEqual(60);
+ expect($('.files-fileList tr').length).toEqual(60);
fileList._nextPage(true);
- expect($('#fileList tr').length).toEqual(65);
+ expect($('.files-fileList tr').length).toEqual(65);
fileList._nextPage(true);
fileList.add({
id: 2000,
type: 'file',
name: 'File with index 88.txt'
});
- expect($('#fileList tr').length).toEqual(66);
+ expect($('.files-fileList tr').length).toEqual(66);
fileList._nextPage(true);
- expect($('#fileList tr').length).toEqual(66);
+ expect($('.files-fileList tr').length).toEqual(66);
});
it('shows additional page when appending a page of files and scrolling down', function() {
var newFiles = generateFiles(66, 81);
for (var i = 0; i < newFiles.length; i++) {
fileList.add(newFiles[i]);
}
- expect($('#fileList tr').length).toEqual(20);
+ expect($('.files-fileList tr').length).toEqual(20);
fileList._nextPage(true);
- expect($('#fileList tr').length).toEqual(40);
+ expect($('.files-fileList tr').length).toEqual(40);
fileList._nextPage(true);
- expect($('#fileList tr').length).toEqual(60);
+ expect($('.files-fileList tr').length).toEqual(60);
fileList._nextPage(true);
- expect($('#fileList tr').length).toEqual(80);
+ expect($('.files-fileList tr').length).toEqual(80);
fileList._nextPage(true);
- expect($('#fileList tr').length).toEqual(81);
+ expect($('.files-fileList tr').length).toEqual(81);
fileList._nextPage(true);
- expect($('#fileList tr').length).toEqual(81);
+ expect($('.files-fileList tr').length).toEqual(81);
});
it('automatically renders next page when there are not enough elements visible', function() {
// delete the 15 first elements
@@ -1481,7 +1481,7 @@ describe('OCA.Files.FileList tests', function() {
fileList.remove(fileList.files[0].name);
}
// still makes sure that there are 20 elements visible, if any
- expect($('#fileList tr').length).toEqual(25);
+ expect($('.files-fileList tr').length).toEqual(25);
});
});
describe('file previews', function() {
@@ -1635,14 +1635,14 @@ describe('OCA.Files.FileList tests', function() {
describe('viewer mode', function() {
it('enabling viewer mode hides files table and action buttons', function() {
fileList.setViewerMode(true);
- expect($('#filestable').hasClass('hidden')).toEqual(true);
+ expect($('.files-filestable').hasClass('hidden')).toEqual(true);
expect($('.actions').hasClass('hidden')).toEqual(true);
expect($('.notCreatable').hasClass('hidden')).toEqual(true);
});
it('disabling viewer mode restores files table and action buttons', function() {
fileList.setViewerMode(true);
fileList.setViewerMode(false);
- expect($('#filestable').hasClass('hidden')).toEqual(false);
+ expect($('.files-filestable').hasClass('hidden')).toEqual(false);
expect($('.actions').hasClass('hidden')).toEqual(false);
expect($('.notCreatable').hasClass('hidden')).toEqual(true);
});
@@ -1650,7 +1650,7 @@ describe('OCA.Files.FileList tests', function() {
$('#permissions').val(0);
fileList.setViewerMode(true);
fileList.setViewerMode(false);
- expect($('#filestable').hasClass('hidden')).toEqual(false);
+ expect($('.files-filestable').hasClass('hidden')).toEqual(false);
expect($('.actions').hasClass('hidden')).toEqual(true);
expect($('.notCreatable').hasClass('hidden')).toEqual(false);
});
@@ -1684,7 +1684,7 @@ describe('OCA.Files.FileList tests', function() {
expect(getFolderContentsStub.calledWith('/subdir')).toEqual(true);
deferredList.resolve(200, [testRoot].concat(testFiles));
return reloading.then(function() {
- expect($('#fileList tr').length).toEqual(4);
+ expect($('.files-fileList tr').length).toEqual(4);
expect(fileList.findFileEl('One.txt').length).toEqual(1);
}).then(done, done);
});
@@ -2004,13 +2004,13 @@ describe('OCA.Files.FileList tests', function() {
});
it('Selecting all files will automatically check "select all" checkbox', function() {
expect($('.select-all').prop('checked')).toEqual(false);
- $('#fileList tr td.selection input:checkbox').click();
+ $('.files-fileList tr td.selection input:checkbox').click();
expect($('.select-all').prop('checked')).toEqual(true);
});
it('Selecting all files on the first visible page will not automatically check "select all" checkbox', function() {
fileList.setFiles(generateFiles(0, 41));
expect($('.select-all').prop('checked')).toEqual(false);
- $('#fileList tr td.selection input:checkbox').click();
+ $('.files-fileList tr td.selection input:checkbox').click();
expect($('.select-all').prop('checked')).toEqual(false);
});
it('Selecting all files also selects hidden files when invisible', function() {
@@ -2029,7 +2029,7 @@ describe('OCA.Files.FileList tests', function() {
fileList.setFiles(generateFiles(0, 41));
$('.select-all').click();
expect($('.select-all').prop('checked')).toEqual(true);
- $('#fileList tr input:checkbox').each(function() {
+ $('.files-fileList tr input:checkbox').each(function() {
expect($(this).prop('checked')).toEqual(true);
});
expect(_.pluck(fileList.getSelectedFiles(), 'name').length).toEqual(42);
@@ -2037,7 +2037,7 @@ describe('OCA.Files.FileList tests', function() {
$('.select-all').click();
expect($('.select-all').prop('checked')).toEqual(false);
- $('#fileList tr input:checkbox').each(function() {
+ $('.files-fileList tr input:checkbox').each(function() {
expect($(this).prop('checked')).toEqual(false);
});
expect(_.pluck(fileList.getSelectedFiles(), 'name').length).toEqual(0);
@@ -2090,7 +2090,7 @@ describe('OCA.Files.FileList tests', function() {
expect(_.pluck(fileList.getSelectedFiles(), 'name').length).toEqual(42);
});
it('Selecting files updates selection summary', function() {
- var $summary = $('#headerName a.name>span:first');
+ var $summary = $('.column-name a.name>span:first');
expect($summary.text()).toEqual('Name');
fileList.findFileEl('One.txt').find('input:checkbox').click();
fileList.findFileEl('Three.pdf').find('input:checkbox').click();
@@ -2098,7 +2098,7 @@ describe('OCA.Files.FileList tests', function() {
expect($summary.text()).toEqual('1 folder and 2 files');
});
it('Unselecting files hides selection summary', function() {
- var $summary = $('#headerName a.name>span:first');
+ var $summary = $('.column-name a.name>span:first');
fileList.findFileEl('One.txt').find('input:checkbox').click().click();
expect($summary.text()).toEqual('Name');
});
@@ -2111,7 +2111,7 @@ describe('OCA.Files.FileList tests', function() {
size: 150
}));
$('.select-all').click();
- var $summary = $('#headerName a.name>span:first');
+ var $summary = $('.column-name a.name>span:first');
expect($summary.text()).toEqual('2 folders and 3 files (including 1 hidden)');
});
it('Does not displays the number of hidden files in selection summary if hidden files are visible', function() {
@@ -2123,7 +2123,7 @@ describe('OCA.Files.FileList tests', function() {
size: 150
}));
$('.select-all').click();
- var $summary = $('#headerName a.name>span:first');
+ var $summary = $('.column-name a.name>span:first');
expect($summary.text()).toEqual('2 folders and 3 files');
});
it('Toggling hidden file visibility updates selection summary', function() {
@@ -2135,13 +2135,13 @@ describe('OCA.Files.FileList tests', function() {
size: 150
}));
$('.select-all').click();
- var $summary = $('#headerName a.name>span:first');
+ var $summary = $('.column-name a.name>span:first');
expect($summary.text()).toEqual('2 folders and 3 files (including 1 hidden)');
filesConfig.set('showhidden', true);
expect($summary.text()).toEqual('2 folders and 3 files');
});
it('Select/deselect files shows/hides file actions', function() {
- var $actions = $('#headerName .selectedActions');
+ var $actions = $('.column-name .selectedActions');
var $checkbox = fileList.findFileEl('One.txt').find('input:checkbox');
expect($actions.hasClass('hidden')).toEqual(true);
$checkbox.click();
@@ -3390,7 +3390,7 @@ describe('OCA.Files.FileList tests', function() {
});
it('does not render new button when no legacy upload button exists (public page)', function() {
fileList.destroy();
- $('#controls').append('<input type="button" class="button upload" />');
+ $('.files-controls').append('<input type="button" class="button upload" />');
fileList = new OCA.Files.FileList($('#app-content-files'));
expect(fileList.$el.find('.button.upload').length).toEqual(1);
expect(fileList.$el.find('.button.new').length).toEqual(0);
diff --git a/apps/files/tests/js/tagspluginspec.js b/apps/files/tests/js/tagspluginspec.js
index 2ac67e64cea..e59a9695592 100644
--- a/apps/files/tests/js/tagspluginspec.js
+++ b/apps/files/tests/js/tagspluginspec.js
@@ -32,9 +32,9 @@ describe('OCA.Files.TagsPlugin tests', function() {
// dummy file list
var $div = $(
'<div>' +
- '<table id="filestable">' +
+ '<table class="files-filestable">' +
'<thead></thead>' +
- '<tbody id="fileList"></tbody>' +
+ '<tbody class="files-fileList"></tbody>' +
'</table>' +
'</div>');
$('#content').append($div);
diff --git a/apps/files_external/css/external.css b/apps/files_external/css/external.css
index 122459c9624..489cd630fb9 100644
--- a/apps/files_external/css/external.css
+++ b/apps/files_external/css/external.css
@@ -1,3 +1,3 @@
-#filestable tbody tr.externalErroredRow {
+.files-filestable tbody tr.externalErroredRow {
background-color: #F2DEDE;
}
diff --git a/apps/files_external/js/mountsfilelist.js b/apps/files_external/js/mountsfilelist.js
index c5817a916f6..58cd356ccff 100644
--- a/apps/files_external/js/mountsfilelist.js
+++ b/apps/files_external/js/mountsfilelist.js
@@ -18,7 +18,7 @@
* Displays a list of mount points visible
* for the current user.
*
- * @param $el container element with existing markup for the #controls
+ * @param $el container element with existing markup for the .files-controls
* and a table
* @param [options] map of options, see other parameters
**/
@@ -65,8 +65,8 @@
var dir = this.getCurrentDirectory();
if (dir === '/') {
// root has special permissions
- this.$el.find('#emptycontent').toggleClass('hidden', !this.isEmpty);
- this.$el.find('#filestable thead th').toggleClass('hidden', this.isEmpty);
+ this.$el.find('.emptyfilelist.emptycontent').toggleClass('hidden', !this.isEmpty);
+ this.$el.find('.files-filestable thead th').toggleClass('hidden', this.isEmpty);
}
else {
OCA.Files.FileList.prototype.updateEmptyContent.apply(this, arguments);
diff --git a/apps/files_external/js/settings.js b/apps/files_external/js/settings.js
index 9bf7339a3bb..0a791001f63 100644
--- a/apps/files_external/js/settings.js
+++ b/apps/files_external/js/settings.js
@@ -972,7 +972,7 @@ MountConfigListView.prototype = _.extend({
if (result.length === 0 && mainForm.attr('data-can-create') === 'false') {
mainForm.hide();
$('a[href="#external-storage"]').parent().hide();
- $('#emptycontent').show();
+ $('.emptycontent').show();
}
onCompletion.resolve();
onLoaded1.resolve();
diff --git a/apps/files_external/js/statusmanager.js b/apps/files_external/js/statusmanager.js
index e80d764baa7..0ffaad9fe40 100644
--- a/apps/files_external/js/statusmanager.js
+++ b/apps/files_external/js/statusmanager.js
@@ -239,7 +239,7 @@ OCA.Files_External.StatusManager = {
processMountList: function (mountList) {
var elementList = null;
$.each(mountList, function (name, value) {
- var trElement = $('#fileList tr[data-file=\"' + OCA.Files_External.StatusManager.Utils.jqSelEscape(value.mount_point) + '\"]'); //FileList.findFileEl(OCA.Files_External.StatusManager.Utils.jqSelEscape(value.mount_point));
+ var trElement = $('.files-fileList tr[data-file=\"' + OCA.Files_External.StatusManager.Utils.jqSelEscape(value.mount_point) + '\"]'); //FileList.findFileEl(OCA.Files_External.StatusManager.Utils.jqSelEscape(value.mount_point));
trElement.attr('data-external-backend', value.backend);
if (elementList) {
elementList = elementList.add(trElement);
@@ -460,7 +460,7 @@ OCA.Files_External.StatusManager.Utils = {
showIconError: function (folder, clickAction, errorImageUrl) {
var imageUrl = "url(" + errorImageUrl + ")";
- var trFolder = $('#fileList tr[data-file=\"' + OCA.Files_External.StatusManager.Utils.jqSelEscape(folder) + '\"]'); //FileList.findFileEl(OCA.Files_External.StatusManager.Utils.jqSelEscape(folder));
+ var trFolder = $('.files-fileList tr[data-file=\"' + OCA.Files_External.StatusManager.Utils.jqSelEscape(folder) + '\"]'); //FileList.findFileEl(OCA.Files_External.StatusManager.Utils.jqSelEscape(folder));
this.changeFolderIcon(folder, imageUrl);
this.toggleLink(folder, false, clickAction);
trFolder.addClass('externalErroredRow');
@@ -474,7 +474,7 @@ OCA.Files_External.StatusManager.Utils = {
if (folder instanceof $) {
trFolder = folder;
} else {
- trFolder = $('#fileList tr[data-file=\"' + OCA.Files_External.StatusManager.Utils.jqSelEscape(folder) + '\"]'); //FileList.findFileEl(OCA.Files_External.StatusManager.Utils.jqSelEscape(folder)); //$('#fileList tr[data-file=\"' + OCA.Files_External.StatusManager.Utils.jqSelEscape(folder) + '\"]');
+ trFolder = $('.files-fileList tr[data-file=\"' + OCA.Files_External.StatusManager.Utils.jqSelEscape(folder) + '\"]'); //FileList.findFileEl(OCA.Files_External.StatusManager.Utils.jqSelEscape(folder)); //$('.files-fileList tr[data-file=\"' + OCA.Files_External.StatusManager.Utils.jqSelEscape(folder) + '\"]');
}
trFolder.each(function () {
var thisElement = $(this);
@@ -501,7 +501,7 @@ OCA.Files_External.StatusManager.Utils = {
trFolder = folder;
} else {
// can't use here FileList.findFileEl(OCA.Files_External.StatusManager.Utils.jqSelEscape(folder)); return incorrect instance of filelist
- trFolder = $('#fileList tr[data-file=\"' + OCA.Files_External.StatusManager.Utils.jqSelEscape(folder) + '\"]');
+ trFolder = $('.files-fileList tr[data-file=\"' + OCA.Files_External.StatusManager.Utils.jqSelEscape(folder) + '\"]');
}
var tdChilds = trFolder.find("td.filename div.thumbnail");
tdChilds.each(function () {
@@ -525,7 +525,7 @@ OCA.Files_External.StatusManager.Utils = {
$(this).find('td.filename div.thumbnail').css('background-image', "url(" + route + ")").css('display', 'none').css('display', 'inline');
});
} else {
- file = $("#fileList tr[data-file=\"" + this.jqSelEscape(filename) + "\"] > td.filename div.thumbnail");
+ file = $(".files-fileList tr[data-file=\"" + this.jqSelEscape(filename) + "\"] > td.filename div.thumbnail");
var parentTr = file.parents('tr:first');
route = OCA.Files_External.StatusManager.Utils.getIconRoute(parentTr);
parentTr.attr("data-icon", route);
@@ -563,7 +563,7 @@ OCA.Files_External.StatusManager.Utils = {
if (filename instanceof $) {
link = filename;
} else {
- link = $("#fileList tr[data-file=\"" + this.jqSelEscape(filename) + "\"] > td.filename a.name");
+ link = $(".files-fileList tr[data-file=\"" + this.jqSelEscape(filename) + "\"] > td.filename a.name");
}
if (active) {
link.off('click.connectivity');
diff --git a/apps/files_external/templates/list.php b/apps/files_external/templates/list.php
index 1d4f6993168..576dbdcf3f5 100644
--- a/apps/files_external/templates/list.php
+++ b/apps/files_external/templates/list.php
@@ -1,21 +1,21 @@
<?php /** @var \OCP\IL10N $l */ ?>
-<div id="controls">
- <div id="file_action_panel"></div>
+<div class="files-controls">
+ <div></div>
</div>
<div id='notification'></div>
-<div id="emptycontent" class="hidden">
+<div class="emptyfilelist emptycontent hidden">
<div class="icon-external"></div>
<h2><?php p($l->t('No external storage configured or you don\'t have the permission to configure them')); ?></h2>
</div>
<input type="hidden" name="dir" value="" id="dir">
-<table id="filestable" class="list-container <?php p($_['showgridview'] ? 'view-grid' : '') ?>">
+<table class="files-filestable list-container <?php p($_['showgridview'] ? 'view-grid' : '') ?>">
<thead>
<tr>
- <th id='headerName' class="hidden column-name">
- <div id="headerName-container">
+ <th class="hidden column-name">
+ <div class="column-name-container">
<a class="name sort columntitle" data-sort="name"><span><?php p($l->t('Name')); ?></span><span class="sort-indicator"></span></a>
</div>
</th>
@@ -27,7 +27,7 @@
</th>
</tr>
</thead>
- <tbody id="fileList">
+ <tbody class="files-fileList">
</tbody>
<tfoot>
</tfoot>
diff --git a/apps/files_external/templates/settings.php b/apps/files_external/templates/settings.php
index 2b5b1a1bcd2..48067529723 100644
--- a/apps/files_external/templates/settings.php
+++ b/apps/files_external/templates/settings.php
@@ -95,7 +95,7 @@ $canCreateMounts = $_['visibilityType'] === BackendService::VISIBILITY_ADMIN ||
}
?>
-<div id="emptycontent" class="hidden">
+<div class="emptyfilelist emptycontent hidden">
<div class="icon-external"></div>
<h2><?php p($l->t('No external storage configured or you don\'t have the permission to configure them')); ?></h2>
</div>
diff --git a/apps/files_external/tests/appSpec.js b/apps/files_external/tests/appSpec.js
index 42a8e08950b..8e5ab5b8d98 100644
--- a/apps/files_external/tests/appSpec.js
+++ b/apps/files_external/tests/appSpec.js
@@ -72,7 +72,7 @@ describe('OCA.Files_External.App tests', function() {
const setActiveViewStub = sinon.stub(OCA.Files.App, 'setActiveView')
// create dummy table so we can click the dom
- const $table = '<table><thead></thead><tbody id="fileList"></tbody></table>'
+ const $table = '<table><thead></thead><tbody class="files-fileList"></tbody></table>'
$('#app-content-extstoragemounts').append($table)
App._inFileList = null
diff --git a/apps/files_external/tests/js/mountsfilelistSpec.js b/apps/files_external/tests/js/mountsfilelistSpec.js
index 662a820f364..ec6ebe1bf11 100644
--- a/apps/files_external/tests/js/mountsfilelistSpec.js
+++ b/apps/files_external/tests/js/mountsfilelistSpec.js
@@ -36,16 +36,16 @@ describe('OCA.Files_External.FileList tests', function() {
'<input type="hidden" id="dir" value="/"></input>' +
'<input type="hidden" id="permissions" value="31"></input>' +
// dummy controls
- '<div id="controls">' +
+ '<div class="files-controls">' +
' <div class="actions creatable"></div>' +
' <div class="notCreatable"></div>' +
'</div>' +
// dummy table
// TODO: at some point this will be rendered by the fileList class itself!
- '<table id="filestable">' +
+ '<table class="files-filestable">' +
'<thead><tr>' +
- '<th id="headerName" class="hidden column-name">' +
- ' <div id="headerName-container">' +
+ '<th class="hidden column-name">' +
+ ' <div id="column-name-container">' +
' <a class="name sort columntitle" data-sort="name"><span>Name</span><span class="sort-indicator"></span></a>' +
' </div>' +
'</th>' +
@@ -56,10 +56,10 @@ describe('OCA.Files_External.FileList tests', function() {
' <a class="scope sort columntitle" data-sort="scope"><span>Scope</span><span class="sort-indicator"></span></a>' +
'</th>' +
'</tr></thead>' +
- '<tbody id="fileList"></tbody>' +
+ '<tbody class="files-fileList"></tbody>' +
'<tfoot></tfoot>' +
'</table>' +
- '<div id="emptycontent">Empty content message</div>' +
+ '<div class="emptyfilelist emptycontent">Empty content message</div>' +
'</div>'
);
});
diff --git a/apps/files_sharing/css/mobile.css b/apps/files_sharing/css/mobile.css
index 63acecb90c8..114949d8c48 100644
--- a/apps/files_sharing/css/mobile.css
+++ b/apps/files_sharing/css/mobile.css
@@ -27,9 +27,9 @@
}
/* hide size and date columns */
- table th#headerSize,
+ table th.column-size,
table td.filesize,
-table th#headerDate,
+table th.column-mtime,
table td.date {
display: none;
}
@@ -52,12 +52,12 @@ table td.date {
}
/* some padding for better clickability */
- #fileList a.action img {
+ .files-fileList a.action img {
padding: 0 6px 0 12px;
}
/* hide text of the actions on mobile */
- #fileList a.action:not(.menuitem) span {
+ .files-fileList a.action:not(.menuitem) span {
display: none;
}
@@ -78,7 +78,7 @@ table td.date {
padding: 0 20px;
}
- #emptycontent {
+ .emptycontent {
margin-top: 10vh;
}
}
diff --git a/apps/files_sharing/css/mobile.scss b/apps/files_sharing/css/mobile.scss
index 38a7a9cd711..d058ad2a30e 100644
--- a/apps/files_sharing/css/mobile.scss
+++ b/apps/files_sharing/css/mobile.scss
@@ -8,9 +8,9 @@
}
/* hide size and date columns */
-table th#headerSize,
+table th.column-size,
table td.filesize,
-table th#headerDate,
+table th.column-mtime,
table td.date {
display: none;
}
@@ -32,11 +32,11 @@ table td.filename .nametext {
}
/* some padding for better clickability */
-#fileList a.action img {
+.files-fileList a.action img {
padding: 0 6px 0 12px;
}
/* hide text of the actions on mobile */
-#fileList a.action:not(.menuitem) span {
+.files-fileList a.action:not(.menuitem) span {
display: none;
}
@@ -56,7 +56,7 @@ table td.filename .nametext {
padding: 0 20px;
}
-#emptycontent {
+.emptycontent {
margin-top: 10vh;
}
}
diff --git a/apps/files_sharing/css/public.css b/apps/files_sharing/css/public.css
index 21dd876905c..a07b00b7b3d 100644
--- a/apps/files_sharing/css/public.css
+++ b/apps/files_sharing/css/public.css
@@ -122,19 +122,19 @@ thead {
margin: 0 auto;
}
-#emptycontent.has-note {
+.emptycontent.has-note {
margin-top: 5vh;
}
-#public-upload #emptycontent h2 {
+#public-upload .emptycontent h2 {
margin: 10px 0 5px 0;
}
-#public-upload #emptycontent h2 + p {
+#public-upload .emptycontent h2 + p {
margin-bottom: 30px;
}
-#public-upload #emptycontent .icon-folder {
+#public-upload .emptycontent .icon-folder {
height: 16px;
width: 16px;
background-size: 16px;
@@ -145,13 +145,13 @@ thead {
opacity: 1;
}
-#public-upload #emptycontent #displayavatar .icon-folder {
+#public-upload .emptycontent #displayavatar .icon-folder {
height: 48px;
width: 48px;
background-size: 48px;
}
-#public-upload #emptycontent .button {
+#public-upload .emptycontent .button {
display: inline-block;
height: auto;
width: auto;
@@ -165,20 +165,20 @@ thead {
padding-left: 42px;
}
-#public-upload #emptycontent ul {
+#public-upload .emptycontent ul {
width: 230px;
margin: 5px auto 5vh;
text-align: left;
}
-#public-upload #emptycontent li {
+#public-upload .emptycontent li {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
padding: 7px 0;
}
-#public-upload #emptycontent li img {
+#public-upload .emptycontent li img {
margin-right: 5px;
position: relative;
top: 2px;
diff --git a/apps/files_sharing/css/public.scss b/apps/files_sharing/css/public.scss
index a3754b7be9f..4b3ea818be8 100644
--- a/apps/files_sharing/css/public.scss
+++ b/apps/files_sharing/css/public.scss
@@ -101,21 +101,21 @@ thead {
margin: 0 auto;
}
-#emptycontent {
+.emptycontent {
&.has-note {
margin-top: 5vh;
}
}
-#public-upload #emptycontent h2 {
+#public-upload .emptycontent h2 {
margin: 10px 0 5px 0;
}
-#public-upload #emptycontent h2+p {
+#public-upload .emptycontent h2+p {
margin-bottom: 30px;
}
-#public-upload #emptycontent .icon-folder {
+#public-upload .emptycontent .icon-folder {
height: 16px;
width: 16px;
background-size: 16px;
@@ -126,13 +126,13 @@ thead {
opacity: 1;
}
-#public-upload #emptycontent #displayavatar .icon-folder {
+#public-upload .emptycontent #displayavatar .icon-folder {
height: 48px;
width: 48px;
background-size: 48px;
}
-#public-upload #emptycontent .button {
+#public-upload .emptycontent .button {
display: inline-block;
height: auto;
width: auto;
@@ -146,20 +146,20 @@ thead {
padding-left: 42px;
}
-#public-upload #emptycontent ul {
+#public-upload .emptycontent ul {
width: 230px;
margin: 5px auto 5vh;
text-align: left;
}
-#public-upload #emptycontent li {
+#public-upload .emptycontent li {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
padding: 7px 0;
}
-#public-upload #emptycontent li img {
+#public-upload .emptycontent li img {
margin-right: 5px;
position: relative;
top: 2px;
diff --git a/apps/files_sharing/css/publicView.css b/apps/files_sharing/css/publicView.css
index c10620e59bf..91429ffbdab 100644
--- a/apps/files_sharing/css/publicView.css
+++ b/apps/files_sharing/css/publicView.css
@@ -122,19 +122,19 @@ thead {
margin: 0 auto;
}
-#emptycontent.has-note {
+.emptycontent.has-note {
margin-top: 5vh;
}
-#public-upload #emptycontent h2 {
+#public-upload .emptycontent h2 {
margin: 10px 0 5px 0;
}
-#public-upload #emptycontent h2 + p {
+#public-upload .emptycontent h2 + p {
margin-bottom: 30px;
}
-#public-upload #emptycontent .icon-folder {
+#public-upload .emptycontent .icon-folder {
height: 16px;
width: 16px;
background-size: 16px;
@@ -145,13 +145,13 @@ thead {
opacity: 1;
}
-#public-upload #emptycontent #displayavatar .icon-folder {
+#public-upload .emptycontent #displayavatar .icon-folder {
height: 48px;
width: 48px;
background-size: 48px;
}
-#public-upload #emptycontent .button {
+#public-upload .emptycontent .button {
display: inline-block;
height: auto;
width: auto;
@@ -165,20 +165,20 @@ thead {
padding-left: 42px;
}
-#public-upload #emptycontent ul {
+#public-upload .emptycontent ul {
width: 230px;
margin: 5px auto 5vh;
text-align: left;
}
-#public-upload #emptycontent li {
+#public-upload .emptycontent li {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
padding: 7px 0;
}
-#public-upload #emptycontent li img {
+#public-upload .emptycontent li img {
margin-right: 5px;
position: relative;
top: 2px;
@@ -261,9 +261,9 @@ thead {
}
/* hide size and date columns */
- table th#headerSize,
+ table th.column-size,
table td.filesize,
-table th#headerDate,
+table th.column-mtime,
table td.date {
display: none;
}
@@ -286,12 +286,12 @@ table td.date {
}
/* some padding for better clickability */
- #fileList a.action img {
+ .files-fileList a.action img {
padding: 0 6px 0 12px;
}
/* hide text of the actions on mobile */
- #fileList a.action:not(.menuitem) span {
+ .files-fileList a.action:not(.menuitem) span {
display: none;
}
@@ -312,7 +312,7 @@ table td.date {
padding: 0 20px;
}
- #emptycontent {
+ .emptycontent {
margin-top: 10vh;
}
}
diff --git a/apps/files_sharing/js/app.js b/apps/files_sharing/js/app.js
index 24416fd5a3f..b9a60c73dab 100644
--- a/apps/files_sharing/js/app.js
+++ b/apps/files_sharing/js/app.js
@@ -46,7 +46,7 @@ OCA.Sharing.App = {
this._extendFileList(this._inFileList)
this._inFileList.appName = t('files_sharing', 'Shared with you')
- this._inFileList.$el.find('#emptycontent').html('<div class="icon-shared"></div>'
+ this._inFileList.$el.find('.emptyfilelist.emptycontent').html('<div class="icon-shared"></div>'
+ '<h2>' + t('files_sharing', 'Nothing shared with you yet') + '</h2>'
+ '<p>' + t('files_sharing', 'Files and folders others share with you will show up here') + '</p>')
return this._inFileList
@@ -72,7 +72,7 @@ OCA.Sharing.App = {
this._extendFileList(this._outFileList)
this._outFileList.appName = t('files_sharing', 'Shared with others')
- this._outFileList.$el.find('#emptycontent').html('<div class="icon-shared"></div>'
+ this._outFileList.$el.find('.emptyfilelist.emptycontent').html('<div class="icon-shared"></div>'
+ '<h2>' + t('files_sharing', 'Nothing shared yet') + '</h2>'
+ '<p>' + t('files_sharing', 'Files and folders you share will show up here') + '</p>')
return this._outFileList
@@ -98,7 +98,7 @@ OCA.Sharing.App = {
this._extendFileList(this._linkFileList)
this._linkFileList.appName = t('files_sharing', 'Shared by link')
- this._linkFileList.$el.find('#emptycontent').html('<div class="icon-public"></div>'
+ this._linkFileList.$el.find('.emptyfilelist.emptycontent').html('<div class="icon-public"></div>'
+ '<h2>' + t('files_sharing', 'No shared links') + '</h2>'
+ '<p>' + t('files_sharing', 'Files and folders you share by link will show up here') + '</p>')
return this._linkFileList
@@ -126,7 +126,7 @@ OCA.Sharing.App = {
this._extendFileList(this._deletedFileList)
this._deletedFileList.appName = t('files_sharing', 'Deleted shares')
- this._deletedFileList.$el.find('#emptycontent').html('<div class="icon-share"></div>'
+ this._deletedFileList.$el.find('.emptyfilelist.emptycontent').html('<div class="icon-share"></div>'
+ '<h2>' + t('files_sharing', 'No deleted shares') + '</h2>'
+ '<p>' + t('files_sharing', 'Shares you deleted will show up here') + '</p>')
return this._deletedFileList
@@ -155,7 +155,7 @@ OCA.Sharing.App = {
this._extendFileList(this._pendingFileList)
this._pendingFileList.appName = t('files_sharing', 'Pending shares')
- this._pendingFileList.$el.find('#emptycontent').html('<div class="icon-share"></div>'
+ this._pendingFileList.$el.find('.emptyfilelist.emptycontent').html('<div class="icon-share"></div>'
+ '<h2>' + t('files_sharing', 'No pending shares') + '</h2>'
+ '<p>' + t('files_sharing', 'Shares you have received but not confirmed will show up here') + '</p>')
return this._pendingFileList
@@ -181,7 +181,7 @@ OCA.Sharing.App = {
this._extendFileList(this._overviewFileList)
this._overviewFileList.appName = t('files_sharing', 'Shares')
- this._overviewFileList.$el.find('#emptycontent').html('<div class="icon-share"></div>'
+ this._overviewFileList.$el.find('.emptyfilelist.emptycontent').html('<div class="icon-share"></div>'
+ '<h2>' + t('files_sharing', 'No shares') + '</h2>'
+ '<p>' + t('files_sharing', 'Shares will show up here') + '</p>')
return this._overviewFileList
diff --git a/apps/files_sharing/js/files_drop.js b/apps/files_sharing/js/files_drop.js
index e2830aeea9e..42151bca1cb 100644
--- a/apps/files_sharing/js/files_drop.js
+++ b/apps/files_sharing/js/files_drop.js
@@ -140,7 +140,7 @@
});
$('#public-upload .button.icon-upload').click(function(e) {
e.preventDefault();
- $('#public-upload #emptycontent input').focus().trigger('click');
+ $('#public-upload .emptycontent input').focus().trigger('click');
});
window.onbeforeunload = function() {
return self.confirmBeforeUnload();
diff --git a/apps/files_sharing/js/public.js b/apps/files_sharing/js/public.js
index bfb035fb817..c08d72d6e05 100644
--- a/apps/files_sharing/js/public.js
+++ b/apps/files_sharing/js/public.js
@@ -60,7 +60,7 @@ OCA.Sharing.PublicApp = {
}
// file list mode ?
- if ($el.find('#filestable').length) {
+ if ($el.find('.files-filestable').length) {
var filesClient = new OC.Files.Client({
host: OC.getHost(),
port: OC.getPort(),
@@ -277,7 +277,7 @@ OCA.Sharing.PublicApp = {
};
this.fileList.updateEmptyContent = function() {
- this.$el.find('#emptycontent .uploadmessage').text(
+ this.$el.find('.emptycontent .uploadmessage').text(
t('files_sharing', 'You can upload into this folder')
);
OCA.Files.FileList.prototype.updateEmptyContent.apply(this, arguments);
diff --git a/apps/files_sharing/js/sharedfilelist.js b/apps/files_sharing/js/sharedfilelist.js
index e8420113ad9..7d7e91dd965 100644
--- a/apps/files_sharing/js/sharedfilelist.js
+++ b/apps/files_sharing/js/sharedfilelist.js
@@ -17,7 +17,7 @@
* @classdesc Sharing file list.
* Contains both "shared with others" and "shared with you" modes.
*
- * @param $el container element with existing markup for the #controls
+ * @param $el container element with existing markup for the .files-controls
* and a table
* @param [options] map of options, see other parameters
* @param {boolean} [options.sharedWithUser] true to return files shared with
@@ -158,8 +158,8 @@
var dir = this.getCurrentDirectory()
if (dir === '/') {
// root has special permissions
- this.$el.find('#emptycontent').toggleClass('hidden', !this.isEmpty)
- this.$el.find('#filestable thead th').toggleClass('hidden', this.isEmpty)
+ this.$el.find('.emptyfilelist.emptycontent').toggleClass('hidden', !this.isEmpty)
+ this.$el.find('.files-filestable thead th').toggleClass('hidden', this.isEmpty)
// hide expiration date header for non link only shares
if (!this._linksOnly) {
diff --git a/apps/files_sharing/src/services/ConfigService.js b/apps/files_sharing/src/services/ConfigService.js
index cd9bed2a2a7..bfef48a8ade 100644
--- a/apps/files_sharing/src/services/ConfigService.js
+++ b/apps/files_sharing/src/services/ConfigService.js
@@ -32,8 +32,8 @@ export default class Config {
* @memberof Config
*/
get isPublicUploadEnabled() {
- return document.getElementById('filestable')
- && document.getElementById('filestable').dataset.allowPublicUpload === 'yes'
+ return document.getElementsByClassName('files-filestable')[0]
+ && document.getElementsByClassName('files-filestable')[0].dataset.allowPublicUpload === 'yes'
}
/**
diff --git a/apps/files_sharing/templates/list.php b/apps/files_sharing/templates/list.php
index 983e70d4433..6c91d701d1d 100644
--- a/apps/files_sharing/templates/list.php
+++ b/apps/files_sharing/templates/list.php
@@ -1,7 +1,7 @@
<?php /** @var \OCP\IL10N $l */ ?>
<div id='notification'></div>
-<div id="emptycontent" class="hidden"></div>
+<div class="emptyfilelist emptycontent hidden"></div>
<input type="hidden" name="dir" value="" id="dir">
@@ -10,23 +10,23 @@
<h2><?php p($l->t('No entries found in this folder')); ?></h2>
</div>
-<table id="filestable" class="list-container <?php p($_['showgridview'] ? 'view-grid' : '') ?>">
+<table class="files-filestable list-container <?php p($_['showgridview'] ? 'view-grid' : '') ?>">
<thead>
<tr>
- <th id='headerName' class="hidden column-name">
- <div id="headerName-container">
+ <th class="hidden column-name">
+ <div class="column-name-container">
<a class="name sort columntitle" data-sort="name"><span><?php p($l->t('Name')); ?></span><span class="sort-indicator"></span></a>
</div>
</th>
- <th id="headerDate" class="hidden column-mtime">
- <a id="modified" class="columntitle" data-sort="mtime"><span><?php p($l->t('Share time')); ?></span><span class="sort-indicator"></span></a>
+ <th class="hidden column-mtime">
+ <a class="columntitle" data-sort="mtime"><span><?php p($l->t('Share time')); ?></span><span class="sort-indicator"></span></a>
</th>
<th class="hidden column-expiration">
<a class="columntitle"><span><?php p($l->t('Expiration date')); ?></span></a>
</th>
</tr>
</thead>
- <tbody id="fileList">
+ <tbody class="files-fileList">
</tbody>
<tfoot>
</tfoot>
diff --git a/apps/files_sharing/templates/public.php b/apps/files_sharing/templates/public.php
index d49c7a01b63..0e8f59e9f2a 100644
--- a/apps/files_sharing/templates/public.php
+++ b/apps/files_sharing/templates/public.php
@@ -105,7 +105,7 @@ $maxUploadFilesize = min($upload_max_filesize, $post_max_size);
<div id="public-upload">
<div
id="emptycontent"
- class="<?php if (!empty($_['note'])) { ?>has-note<?php } ?>">
+ class="emptycontent <?php if (!empty($_['note'])) { ?>has-note<?php } ?>">
<?php if ($_['shareOwner']) { ?>
<div id="displayavatar"><div class="avatardiv"></div></div>
<h2><?php p($l->t('Upload files to %s', [$_['shareOwner']])) ?></h2>
diff --git a/apps/files_sharing/tests/js/appSpec.js b/apps/files_sharing/tests/js/appSpec.js
index e1249f5b4d7..4d2e5211d7c 100644
--- a/apps/files_sharing/tests/js/appSpec.js
+++ b/apps/files_sharing/tests/js/appSpec.js
@@ -95,7 +95,7 @@ describe('OCA.Sharing.App tests', function() {
var setActiveViewStub = sinon.stub(OCA.Files.App, 'setActiveView');
// create dummy table so we can click the dom
- var $table = '<table><thead></thead><tbody id="fileList"></tbody></table>';
+ var $table = '<table><thead></thead><tbody class="files-fileList"></tbody></table>';
$('#app-content-sharingin').append($table);
App._inFileList = null;
diff --git a/apps/files_sharing/tests/js/publicAppSpec.js b/apps/files_sharing/tests/js/publicAppSpec.js
index ed88913b1f6..b9d8cbe28e2 100644
--- a/apps/files_sharing/tests/js/publicAppSpec.js
+++ b/apps/files_sharing/tests/js/publicAppSpec.js
@@ -59,7 +59,7 @@ describe('OCA.Sharing.PublicApp tests', function() {
'<input type="hidden" id="dir" value="/subdir"/>' +
'<input type="hidden" id="permissions" value="31"/>' +
// dummy controls
- '<div id="controls">' +
+ '<div class="files-controls">' +
' <div class="actions creatable"></div>' +
' <div class="notCreatable"></div>' +
'</div>' +
@@ -67,9 +67,9 @@ describe('OCA.Sharing.PublicApp tests', function() {
'<input type="file" id="file_upload_start" name="files[]" multiple="multiple">' +
// dummy table
// TODO: at some point this will be rendered by the fileList class itself!
- '<table id="filestable" class="list-container view-grid">' +
+ '<table class="files-filestable list-container view-grid">' +
'<thead><tr>' +
- '<th id="headerName" class="hidden column-name">' +
+ '<th class="hidden column-name">' +
'<input type="checkbox" id="select_all_files" class="select-all">' +
'<a class="name columntitle" data-sort="name"><span>Name</span><span class="sort-indicator"></span></a>' +
'<span class="selectedActions hidden">' +
@@ -78,11 +78,11 @@ describe('OCA.Sharing.PublicApp tests', function() {
'<th class="hidden column-size"><a class="columntitle" data-sort="size"><span class="sort-indicator"></span></a></th>' +
'<th class="hidden column-mtime"><a class="columntitle" data-sort="mtime"><span class="sort-indicator"></span></a></th>' +
'</tr></thead>' +
- '<tbody id="fileList"></tbody>' +
+ '<tbody class="files-fileList"></tbody>' +
'<tfoot></tfoot>' +
'</table>' +
// TODO: move to handlebars template
- '<div id="emptycontent"><h2>Empty content message</h2><p class="uploadmessage">Upload message</p></div>' +
+ '<div class="emptyfilelist emptycontent"><h2>Empty content message</h2><p class="uploadmessage">Upload message</p></div>' +
'<div class="nofilterresults hidden"></div>' +
'</div>'
);
diff --git a/apps/files_sharing/tests/js/shareSpec.js b/apps/files_sharing/tests/js/shareSpec.js
index f99c838eda3..6b4dd35ec85 100644
--- a/apps/files_sharing/tests/js/shareSpec.js
+++ b/apps/files_sharing/tests/js/shareSpec.js
@@ -46,9 +46,9 @@ describe('OCA.Sharing.Util tests', function() {
// dummy file list
var $div = $(
'<div id="listContainer">' +
- '<table id="filestable" class="list-container view-grid">' +
+ '<table class="files-filestable list-container view-grid">' +
'<thead></thead>' +
- '<tbody id="fileList"></tbody>' +
+ '<tbody class="files-fileList"></tbody>' +
'</table>' +
'</div>');
$('#content').append($div);
diff --git a/apps/files_trashbin/src/filelist.js b/apps/files_trashbin/src/filelist.js
index c1bf1b280ca..7fb55d4b932 100644
--- a/apps/files_trashbin/src/filelist.js
+++ b/apps/files_trashbin/src/filelist.js
@@ -54,7 +54,7 @@
* @augments OCA.Files.FileList
* @classdesc List of deleted files
*
- * @param $el container element with existing markup for the #controls
+ * @param $el container element with existing markup for the .files-controls
* and a table
* @param [options] map of options
*/
@@ -160,8 +160,8 @@
updateEmptyContent: function() {
var exists = this.$fileList.find('tr:first').exists()
- this.$el.find('#emptycontent').toggleClass('hidden', exists)
- this.$el.find('#filestable th').toggleClass('hidden', !exists)
+ this.$el.find('.emptyfilelist.emptycontent').toggleClass('hidden', exists)
+ this.$el.find('.files-filestable th').toggleClass('hidden', !exists)
},
_removeCallback: function(files) {
diff --git a/apps/files_trashbin/src/trash.scss b/apps/files_trashbin/src/trash.scss
index 2ed57b51918..633107c9d6d 100644
--- a/apps/files_trashbin/src/trash.scss
+++ b/apps/files_trashbin/src/trash.scss
@@ -16,7 +16,7 @@
#app-content-trashbin .summary :last-child {
padding: 0;
}
-#app-content-trashbin #filestable .summary .filesize {
+#app-content-trashbin .files-filestable .summary .filesize {
display: none;
}
diff --git a/apps/files_trashbin/templates/index.php b/apps/files_trashbin/templates/index.php
index fcd5448db4b..c134d2c75c6 100644
--- a/apps/files_trashbin/templates/index.php
+++ b/apps/files_trashbin/templates/index.php
@@ -1,10 +1,10 @@
<?php /** @var \OCP\IL10N $l */ ?>
-<div id="controls">
- <div id="file_action_panel"></div>
+<div class="files-controls">
+ <div></div>
</div>
<div id='notification'></div>
-<div id="emptycontent" class="hidden">
+<div class="emptyfilelist emptycontent hidden">
<div class="icon-delete"></div>
<h2><?php p($l->t('No deleted files')); ?></h2>
<p><?php p($l->t('You will be able to recover deleted files from here')); ?></p>
@@ -18,19 +18,19 @@
<p></p>
</div>
-<table id="filestable" class="list-container <?php p($_['showgridview'] ? 'view-grid' : '') ?>">
+<table class="files-filestable list-container <?php p($_['showgridview'] ? 'view-grid' : '') ?>">
<thead>
<tr>
- <th id="headerSelection" class="hidden column-selection">
+ <th class="hidden column-selection">
<input type="checkbox" id="select_all_trash" class="select-all checkbox"/>
<label for="select_all_trash">
<span class="hidden-visually"><?php p($l->t('Select all'))?></span>
</label>
</th>
- <th id='headerName' class="hidden column-name">
- <div id="headerName-container">
+ <th class="hidden column-name">
+ <div class="column-name-container">
<a class="name sort columntitle" data-sort="name"><span><?php p($l->t('Name')); ?></span><span class="sort-indicator"></span></a>
- <span id="selectedActionsList" class='selectedActions'>
+ <span class='selectedActions'>
<a href="" class="actions-selected">
<span class="icon icon-more"></span>
<span><?php p($l->t('Actions'))?></span>
@@ -38,12 +38,12 @@
</span>
</div>
</th>
- <th id="headerDate" class="hidden column-mtime">
+ <th class="hidden column-mtime">
<a id="modified" class="columntitle" data-sort="mtime"><span><?php p($l->t('Deleted')); ?></span><span class="sort-indicator"></span></a>
</th>
</tr>
</thead>
- <tbody id="fileList">
+ <tbody class="files-fileList">
</tbody>
<tfoot>
</tfoot>
diff --git a/apps/files_trashbin/tests/js/filelistSpec.js b/apps/files_trashbin/tests/js/filelistSpec.js
index 0f4661ba09a..4b75e2a14fd 100644
--- a/apps/files_trashbin/tests/js/filelistSpec.js
+++ b/apps/files_trashbin/tests/js/filelistSpec.js
@@ -49,24 +49,24 @@ describe('OCA.Trashbin.FileList tests', function () {
// files app)
'<input type="hidden" id="permissions" value="31"></input>' +
// dummy controls
- '<div id="controls">' +
+ '<div class="files-controls">' +
' <div class="actions creatable"></div>' +
' <div class="notCreatable"></div>' +
'</div>' +
// dummy table
// TODO: at some point this will be rendered by the fileList class itself!
- '<table id="filestable" class="list-container view-grid">' +
- '<thead><tr><th id="headerName" class="hidden">' +
+ '<table class="files-filestable list-container view-grid">' +
+ '<thead><tr><th class="hidden column-name">' +
'<input type="checkbox" id="select_all_trash" class="select-all">' +
'<span class="name">Name</span>' +
'<span class="selectedActions hidden">' +
'<a href="" class="actions-selected"><span class="icon icon-more"></span><span>Actions</span>' +
'</span>' +
'</th></tr></thead>' +
- '<tbody id="fileList"></tbody>' +
+ '<tbody class="files-fileList"></tbody>' +
'<tfoot></tfoot>' +
'</table>' +
- '<div id="emptycontent">Empty content message</div>' +
+ '<div class="emptyfilelist emptycontent">Empty content message</div>' +
'</div>'
);
@@ -161,7 +161,7 @@ describe('OCA.Trashbin.FileList tests', function () {
it('links the breadcrumb to the trashbin view', function () {
fileList.changeDirectory('/subdir', false, true);
fakeServer.respond();
- var $crumbs = fileList.$el.find('#controls .crumb');
+ var $crumbs = fileList.$el.find('.files-controls .crumb');
expect($crumbs.length).toEqual(3);
expect($crumbs.eq(1).find('a').text()).toEqual('Home');
expect($crumbs.eq(1).find('a').attr('href'))
diff --git a/apps/systemtags/src/systemtagsfilelist.js b/apps/systemtags/src/systemtagsfilelist.js
index a87b5a96c3e..404c85ea3f8 100644
--- a/apps/systemtags/src/systemtagsfilelist.js
+++ b/apps/systemtags/src/systemtagsfilelist.js
@@ -30,7 +30,7 @@
* @classdesc SystemTags file list.
* Contains a list of files filtered by system tags.
*
- * @param {object} $el container element with existing markup for the #controls and a table
+ * @param {object} $el container element with existing markup for the .files-controls and a table
* @param {Array} [options] map of options, see other parameters
* @param {Array.<string>} [options.systemTagIds] array of system tag ids to
* filter by
@@ -75,7 +75,7 @@
OC.Plugins.attach('OCA.SystemTags.FileList', this)
- const $controls = this.$el.find('#controls').empty()
+ const $controls = this.$el.find('.files-controls').empty()
_.defer(_.bind(this._getLastUsedTags, this))
this._initFilterField($controls)
@@ -248,7 +248,7 @@
if (!this._systemTagIds.length) {
// no tags selected
this.$el
- .find('#emptycontent')
+ .find('.emptyfilelist.emptycontent')
.html(
'<div class="icon-systemtags"></div>'
+ '<h2>'
@@ -261,7 +261,7 @@
} else {
// tags selected but no results
this.$el
- .find('#emptycontent')
+ .find('.emptyfilelist.emptycontent')
.html(
'<div class="icon-systemtags"></div>'
+ '<h2>'
@@ -273,10 +273,10 @@
)
}
this.$el
- .find('#emptycontent')
+ .find('.emptyfilelist.emptycontent')
.toggleClass('hidden', !this.isEmpty)
this.$el
- .find('#filestable thead th')
+ .find('.files-filestable thead th')
.toggleClass('hidden', this.isEmpty)
} else {
OCA.Files.FileList.prototype.updateEmptyContent.apply(
diff --git a/apps/systemtags/templates/list.php b/apps/systemtags/templates/list.php
index f6a0735881a..cea67413327 100644
--- a/apps/systemtags/templates/list.php
+++ b/apps/systemtags/templates/list.php
@@ -1,7 +1,7 @@
-<div id="controls">
+<div class="files-controls">
</div>
-<div id="emptycontent" class="hidden">
+<div class="emptyfilelist emptycontent hidden">
<div class="icon-folder"></div>
<h2><?php p($l->t('No files in here')); ?></h2>
<p class="uploadmessage hidden"></p>
@@ -13,23 +13,23 @@
<p></p>
</div>
-<table id="filestable" data-preview-x="250" data-preview-y="250" class="list-container">
+<table data-preview-x="250" data-preview-y="250" class="files-filestable list-container">
<thead>
<tr>
- <th id='headerName' class="hidden column-name">
- <div id="headerName-container">
+ <th class="hidden column-name">
+ <div class="column-name-container">
<a class="name sort columntitle" data-sort="name"><span><?php p($l->t('Name')); ?></span><span class="sort-indicator"></span></a>
</div>
</th>
- <th id="headerSize" class="hidden column-size">
+ <th class="hidden column-size">
<a class="size sort columntitle" data-sort="size"><span><?php p($l->t('Size')); ?></span><span class="sort-indicator"></span></a>
</th>
- <th id="headerDate" class="hidden column-mtime">
+ <th class="hidden column-mtime">
<a id="modified" class="columntitle" data-sort="mtime"><span><?php p($l->t('Modified')); ?></span><span class="sort-indicator"></span></a>
</th>
</tr>
</thead>
- <tbody id="fileList">
+ <tbody class="files-fileList">
</tbody>
<tfoot>
</tfoot>
diff --git a/apps/systemtags/tests/js/systemtagsfilelistSpec.js b/apps/systemtags/tests/js/systemtagsfilelistSpec.js
index 2c775466de4..068eb0cbf5c 100644
--- a/apps/systemtags/tests/js/systemtagsfilelistSpec.js
+++ b/apps/systemtags/tests/js/systemtagsfilelistSpec.js
@@ -32,12 +32,12 @@ describe('OCA.SystemTags.FileList tests', function() {
// init horrible parameters
'<input type="hidden" id="dir" value="/"></input>' +
'<input type="hidden" id="permissions" value="31"></input>' +
- '<div id="controls"></div>' +
+ '<div class="files-controls"></div>' +
// dummy table
// TODO: at some point this will be rendered by the fileList class itself!
- '<table id="filestable">' +
+ '<table class="files-filestable">' +
'<thead><tr>' +
- '<th id="headerName" class="hidden column-name">' +
+ '<th class="hidden column-name">' +
'<input type="checkbox" id="select_all_files" class="select-all">' +
'<a class="name columntitle" data-sort="name"><span>Name</span><span class="sort-indicator"></span></a>' +
'<span class="selectedActions hidden">' +
@@ -46,10 +46,10 @@ describe('OCA.SystemTags.FileList tests', function() {
'<a class="columntitle" data-sort="mtime"><span class="sort-indicator"></span></a>' +
'</th>' +
'</tr></thead>' +
- '<tbody id="fileList"></tbody>' +
+ '<tbody class="files-fileList"></tbody>' +
'<tfoot></tfoot>' +
'</table>' +
- '<div id="emptycontent">Empty content message</div>' +
+ '<div class="emptyfilelist emptycontent">Empty content message</div>' +
'</div>'
);
});
@@ -175,7 +175,7 @@ describe('OCA.SystemTags.FileList tests', function() {
fileList.reload();
- expect(fileList.$el.find('#emptycontent').hasClass('hidden')).toEqual(false);
+ expect(fileList.$el.find('.emptyfilelist.emptycontent').hasClass('hidden')).toEqual(false);
expect(getFilteredFilesSpec.notCalled).toEqual(true);
});
@@ -233,7 +233,7 @@ describe('OCA.SystemTags.FileList tests', function() {
requestDeferred.resolve(207, testFiles);
return reloading.then(function() {
- expect(fileList.$el.find('#emptycontent').hasClass('hidden')).toEqual(true);
+ expect(fileList.$el.find('.emptyfilelist.emptycontent').hasClass('hidden')).toEqual(true);
expect(fileList.$el.find('tbody>tr').length).toEqual(4);
}).then(done, done);
});
diff --git a/core/css/mobile.css b/core/css/mobile.css
index 0cc41788b7a..6b4a64152cc 100644
--- a/core/css/mobile.css
+++ b/core/css/mobile.css
@@ -112,12 +112,12 @@
}
/* position controls for apps with app-navigation */
- #app-navigation + #app-content #controls {
+ #app-navigation + #app-content .files-controls {
padding-left: 44px;
}
/* .viewer-mode is when text editor, PDF viewer, etc is open */
- #body-user .app-files.viewer-mode #controls {
+ #body-user .app-files.viewer-mode .files-controls {
padding-left: 0 !important;
}
@@ -134,13 +134,13 @@
display: none;
}
- #body-settings #controls {
+ #body-settings .files-controls {
min-width: 1024px !important;
}
/* do not show dates in filepicker */
- #oc-dialog-filepicker-content .filelist #headerSize,
-#oc-dialog-filepicker-content .filelist #headerDate,
+ #oc-dialog-filepicker-content .filelist .column-size,
+#oc-dialog-filepicker-content .filelist .column-mtime,
#oc-dialog-filepicker-content .filelist .filesize,
#oc-dialog-filepicker-content .filelist .date {
display: none;
diff --git a/core/css/mobile.scss b/core/css/mobile.scss
index 2dd03480b26..49bc6619cbc 100644
--- a/core/css/mobile.scss
+++ b/core/css/mobile.scss
@@ -98,12 +98,12 @@
}
/* position controls for apps with app-navigation */
- #app-navigation + #app-content #controls {
+ #app-navigation + #app-content .files-controls {
padding-left: 44px;
}
/* .viewer-mode is when text editor, PDF viewer, etc is open */
- #body-user .app-files.viewer-mode #controls {
+ #body-user .app-files.viewer-mode .files-controls {
padding-left: 0 !important;
}
.app-files.viewer-mode #app-navigation-toggle {
@@ -118,13 +118,13 @@
#usersearchform {
display: none;
}
- #body-settings #controls {
+ #body-settings .files-controls {
min-width: variables.$breakpoint-mobile !important;
}
/* do not show dates in filepicker */
- #oc-dialog-filepicker-content .filelist #headerSize,
- #oc-dialog-filepicker-content .filelist #headerDate,
+ #oc-dialog-filepicker-content .filelist .column-size,
+ #oc-dialog-filepicker-content .filelist .column-mtime,
#oc-dialog-filepicker-content .filelist .filesize,
#oc-dialog-filepicker-content .filelist .date {
display: none;
diff --git a/core/css/server.css b/core/css/server.css
index 6408f7ec559..79ba6236b12 100644
--- a/core/css/server.css
+++ b/core/css/server.css
@@ -210,7 +210,7 @@ body {
}
/* CONTENT ------------------------------------------------------------------ */
-#controls {
+.files-controls {
box-sizing: border-box;
position: -webkit-sticky;
position: sticky;
@@ -229,7 +229,7 @@ body {
}
/* position controls for apps with app-navigation */
-.viewer-mode #app-navigation + #app-content #controls {
+.viewer-mode #app-navigation + #app-content .files-controls {
left: 0;
}
@@ -237,7 +237,7 @@ body {
box-sizing: border-box;
}
-#controls .actions > div > .button, #controls .actions > div button, #controls .actions > .button, #controls .actions button {
+.files-controls .actions > div > .button, .files-controls .actions > div button, .files-controls .actions > .button, .files-controls .actions button {
box-sizing: border-box;
display: inline-block;
display: flex;
@@ -247,7 +247,7 @@ body {
align-items: center;
justify-content: center;
}
-#controls .actions > div .button.hidden, #controls .actions .button.hidden {
+.files-controls .actions > div .button.hidden, .files-controls .actions .button.hidden {
display: none;
}
@@ -4905,12 +4905,12 @@ kbd {
}
/* position controls for apps with app-navigation */
- #app-navigation + #app-content #controls {
+ #app-navigation + #app-content .files-controls {
padding-left: 44px;
}
/* .viewer-mode is when text editor, PDF viewer, etc is open */
- #body-user .app-files.viewer-mode #controls {
+ #body-user .app-files.viewer-mode .files-controls {
padding-left: 0 !important;
}
@@ -4927,13 +4927,13 @@ kbd {
display: none;
}
- #body-settings #controls {
+ #body-settings .files-controls {
min-width: 1024px !important;
}
/* do not show dates in filepicker */
- #oc-dialog-filepicker-content .filelist #headerSize,
-#oc-dialog-filepicker-content .filelist #headerDate,
+ #oc-dialog-filepicker-content .filelist .column-size,
+#oc-dialog-filepicker-content .filelist .column-mtime,
#oc-dialog-filepicker-content .filelist .filesize,
#oc-dialog-filepicker-content .filelist .date {
display: none;
diff --git a/core/css/styles.css b/core/css/styles.css
index be84c6c1c73..7ad07f5f037 100644
--- a/core/css/styles.css
+++ b/core/css/styles.css
@@ -209,7 +209,7 @@ body {
}
/* CONTENT ------------------------------------------------------------------ */
-#controls {
+.files-controls {
box-sizing: border-box;
position: -webkit-sticky;
position: sticky;
@@ -228,7 +228,7 @@ body {
}
/* position controls for apps with app-navigation */
-.viewer-mode #app-navigation + #app-content #controls {
+.viewer-mode #app-navigation + #app-content .files-controls {
left: 0;
}
@@ -236,7 +236,7 @@ body {
box-sizing: border-box;
}
-#controls .actions > div > .button, #controls .actions > div button, #controls .actions > .button, #controls .actions button {
+.files-controls .actions > div > .button, .files-controls .actions > div button, .files-controls .actions > .button, .files-controls .actions button {
box-sizing: border-box;
display: inline-block;
display: flex;
@@ -246,7 +246,7 @@ body {
align-items: center;
justify-content: center;
}
-#controls .actions > div .button.hidden, #controls .actions .button.hidden {
+.files-controls .actions > div .button.hidden, .files-controls .actions .button.hidden {
display: none;
}
diff --git a/core/css/styles.scss b/core/css/styles.scss
index 30757b233ee..3220a7ad884 100644
--- a/core/css/styles.scss
+++ b/core/css/styles.scss
@@ -195,7 +195,7 @@ body {
/* CONTENT ------------------------------------------------------------------ */
-#controls {
+.files-controls {
box-sizing: border-box;
position: -webkit-sticky;
position: sticky;
@@ -214,7 +214,7 @@ body {
/* position controls for apps with app-navigation */
-.viewer-mode #app-navigation + #app-content #controls {
+.viewer-mode #app-navigation + #app-content .files-controls {
left: 0;
}
@@ -222,7 +222,7 @@ body {
box-sizing: border-box;
}
-#controls .actions {
+.files-controls .actions {
> div,
& {
> .button, button {
diff --git a/core/templates/filepicker.html b/core/templates/filepicker.html
index c021387e805..484a6e12d2b 100644
--- a/core/templates/filepicker.html
+++ b/core/templates/filepicker.html
@@ -22,20 +22,20 @@
<table id="picker-filestable" class="filelist list-container view-grid">
<thead>
<tr>
- <th id="headerName" class="column-name">
- <div id="headerName-container">
+ <th class="column-name">
+ <div id="column-name-container">
<a class="name sort columntitle" data-sort="name" tabindex="0">
<span>{nameCol}</span>
<span class="sort-indicator hidden icon-triangle-n"></span>
</a>
</div>
</th>
- <th id="headerSize" class="column-size">
+ <th class="column-size">
<a class="size sort columntitle" data-sort="size" tabindex="0">
<span>{sizeCol}</span>
<span class="sort-indicator hidden icon-triangle-n"></span></a>
</th>
- <th id="headerDate" class="column-mtime">
+ <th class="column-mtime">
<a id="modified" class="columntitle" data-sort="mtime" tabindex="0">
<span>{modifiedCol}</span>
<span class="sort-indicator hidden icon-triangle-n"></span></a>
diff --git a/dist/files_sharing-files_sharing.js b/dist/files_sharing-files_sharing.js
index 53607c4538e..b99cfd6dcdc 100644
--- a/dist/files_sharing-files_sharing.js
+++ b/dist/files_sharing-files_sharing.js
@@ -1,2 +1,2 @@
-!function(){var e={24839:function(){OCA.Sharing||(OCA.Sharing={}),OCA.Sharing.App={_inFileList:null,_outFileList:null,_overviewFileList:null,_pendingFileList:null,initSharingIn:function(e){return this._inFileList||(this._inFileList=new OCA.Sharing.FileList(e,{id:"shares.self",sharedWithUser:!0,fileActions:this._createFileActions(),config:OCA.Files.App.getFilesConfig(),shown:!0}),this._extendFileList(this._inFileList),this._inFileList.appName=t("files_sharing","Shared with you"),this._inFileList.$el.find("#emptycontent").html('<div class="icon-shared"></div><h2>'+t("files_sharing","Nothing shared with you yet")+"</h2><p>"+t("files_sharing","Files and folders others share with you will show up here")+"</p>")),this._inFileList},initSharingOut:function(e){return this._outFileList||(this._outFileList=new OCA.Sharing.FileList(e,{id:"shares.others",sharedWithUser:!1,fileActions:this._createFileActions(),config:OCA.Files.App.getFilesConfig(),shown:!0}),this._extendFileList(this._outFileList),this._outFileList.appName=t("files_sharing","Shared with others"),this._outFileList.$el.find("#emptycontent").html('<div class="icon-shared"></div><h2>'+t("files_sharing","Nothing shared yet")+"</h2><p>"+t("files_sharing","Files and folders you share will show up here")+"</p>")),this._outFileList},initSharingLinks:function(e){return this._linkFileList||(this._linkFileList=new OCA.Sharing.FileList(e,{id:"shares.link",linksOnly:!0,fileActions:this._createFileActions(),config:OCA.Files.App.getFilesConfig(),shown:!0}),this._extendFileList(this._linkFileList),this._linkFileList.appName=t("files_sharing","Shared by link"),this._linkFileList.$el.find("#emptycontent").html('<div class="icon-public"></div><h2>'+t("files_sharing","No shared links")+"</h2><p>"+t("files_sharing","Files and folders you share by link will show up here")+"</p>")),this._linkFileList},initSharingDeleted:function(e){return this._deletedFileList||(this._deletedFileList=new OCA.Sharing.FileList(e,{id:"shares.deleted",defaultFileActionsDisabled:!0,showDeleted:!0,sharedWithUser:!0,fileActions:this._restoreShareAction(),config:OCA.Files.App.getFilesConfig(),shown:!0}),this._extendFileList(this._deletedFileList),this._deletedFileList.appName=t("files_sharing","Deleted shares"),this._deletedFileList.$el.find("#emptycontent").html('<div class="icon-share"></div><h2>'+t("files_sharing","No deleted shares")+"</h2><p>"+t("files_sharing","Shares you deleted will show up here")+"</p>")),this._deletedFileList},initSharingPening:function(e){return this._pendingFileList||(this._pendingFileList=new OCA.Sharing.FileList(e,{id:"shares.pending",showPending:!0,detailsViewEnabled:!1,defaultFileActionsDisabled:!0,sharedWithUser:!0,fileActions:this._acceptShareAction(),config:OCA.Files.App.getFilesConfig(),shown:!0}),this._extendFileList(this._pendingFileList),this._pendingFileList.appName=t("files_sharing","Pending shares"),this._pendingFileList.$el.find("#emptycontent").html('<div class="icon-share"></div><h2>'+t("files_sharing","No pending shares")+"</h2><p>"+t("files_sharing","Shares you have received but not confirmed will show up here")+"</p>")),this._pendingFileList},initShareingOverview:function(e){return this._overviewFileList||(this._overviewFileList=new OCA.Sharing.FileList(e,{id:"shares.overview",fileActions:this._createFileActions(),config:OCA.Files.App.getFilesConfig(),isOverview:!0,shown:!0}),this._extendFileList(this._overviewFileList),this._overviewFileList.appName=t("files_sharing","Shares"),this._overviewFileList.$el.find("#emptycontent").html('<div class="icon-share"></div><h2>'+t("files_sharing","No shares")+"</h2><p>"+t("files_sharing","Shares will show up here")+"</p>")),this._overviewFileList},removeSharingIn:function(){this._inFileList&&this._inFileList.$fileList.empty()},removeSharingOut:function(){this._outFileList&&this._outFileList.$fileList.empty()},removeSharingLinks:function(){this._linkFileList&&this._linkFileList.$fileList.empty()},removeSharingDeleted:function(){this._deletedFileList&&this._deletedFileList.$fileList.empty()},removeSharingPending:function(){this._pendingFileList&&this._pendingFileList.$fileList.empty()},removeSharingOverview:function(){this._overviewFileList&&this._overviewFileList.$fileList.empty()},destroy:function(){OCA.Files.fileActions.off("setDefault.app-sharing",this._onActionsUpdated),OCA.Files.fileActions.off("registerAction.app-sharing",this._onActionsUpdated),this.removeSharingIn(),this.removeSharingOut(),this.removeSharingLinks(),this._inFileList=null,this._outFileList=null,this._linkFileList=null,this._overviewFileList=null,delete this._globalActionsInitialized},_createFileActions:function(){var e=new OCA.Files.FileActions;return e.registerDefaultActions(),e.merge(OCA.Files.fileActions),this._globalActionsInitialized||(this._onActionsUpdated=_.bind(this._onActionsUpdated,this),OCA.Files.fileActions.on("setDefault.app-sharing",this._onActionsUpdated),OCA.Files.fileActions.on("registerAction.app-sharing",this._onActionsUpdated),this._globalActionsInitialized=!0),e.register("dir","Open",OC.PERMISSION_READ,"",(function(e,i){OCA.Files.App.setActiveView("files",{silent:!0}),OCA.Files.App.fileList.changeDirectory(OC.joinPaths(i.$file.attr("data-path"),e),!0,!0)})),e.setDefault("dir","Open"),e},_restoreShareAction:function(){var e=new OCA.Files.FileActions;return e.registerAction({name:"Restore",displayName:t("files_sharing","Restore"),altText:t("files_sharing","Restore share"),mime:"all",permissions:OC.PERMISSION_ALL,iconClass:"icon-history",type:OCA.Files.FileActions.TYPE_INLINE,actionHandler:function(e,i){var s=i.$file.data("shareId");$.post(OC.linkToOCS("apps/files_sharing/api/v1/deletedshares",2)+s).success((function(e){i.fileList.remove(i.fileInfoModel.attributes.name)})).fail((function(){OC.Notification.showTemporary(t("files_sharing","Something happened. Unable to restore the share."))}))}}),e},_acceptShareAction:function(){var e=new OCA.Files.FileActions;return e.registerAction({name:"Accept share",displayName:t("files_sharing","Accept share"),mime:"all",permissions:OC.PERMISSION_ALL,iconClass:"icon-checkmark",type:OCA.Files.FileActions.TYPE_INLINE,actionHandler:function(e,i){var s=i.$file.data("shareId"),n="shares/pending";i.$file.attr("data-remote-id")&&(n="remote_shares/pending"),$.post(OC.linkToOCS("apps/files_sharing/api/v1/"+n,2)+s).success((function(e){i.fileList.remove(i.fileInfoModel.attributes.name)})).fail((function(){OC.Notification.showTemporary(t("files_sharing","Something happened. Unable to accept the share."))}))}}),e.registerAction({name:"Reject share",displayName:t("files_sharing","Reject share"),mime:"all",permissions:OC.PERMISSION_ALL,iconClass:"icon-close",type:OCA.Files.FileActions.TYPE_INLINE,shouldRender:function(e){return!e.$file.attr("data-remote-id")||parseInt(e.$file.attr("data-share-type"),10)!==OC.Share.SHARE_TYPE_REMOTE_GROUP},actionHandler:function(e,i){var s=i.$file.data("shareId"),n="shares";i.$file.attr("data-remote-id")&&(n="remote_shares"),$.ajax({url:OC.linkToOCS("apps/files_sharing/api/v1/"+n,2)+s,type:"DELETE"}).success((function(e){i.fileList.remove(i.fileInfoModel.attributes.name)})).fail((function(){OC.Notification.showTemporary(t("files_sharing","Something happened. Unable to reject the share."))}))}}),e},_onActionsUpdated:function(e){_.each([this._inFileList,this._outFileList,this._linkFileList],(function(i){i&&(e.action?i.fileActions.registerAction(e.action):e.defaultAction&&i.fileActions.setDefault(e.defaultAction.mime,e.defaultAction.name))}))},_extendFileList:function(e){e.fileSummary.$el.find(".filesize").remove()}},window.addEventListener("DOMContentLoaded",(function(){$("#app-content-sharingin").on("show",(function(e){OCA.Sharing.App.initSharingIn($(e.target))})),$("#app-content-sharingin").on("hide",(function(){OCA.Sharing.App.removeSharingIn()})),$("#app-content-sharingout").on("show",(function(e){OCA.Sharing.App.initSharingOut($(e.target))})),$("#app-content-sharingout").on("hide",(function(){OCA.Sharing.App.removeSharingOut()})),$("#app-content-sharinglinks").on("show",(function(e){OCA.Sharing.App.initSharingLinks($(e.target))})),$("#app-content-sharinglinks").on("hide",(function(){OCA.Sharing.App.removeSharingLinks()})),$("#app-content-deletedshares").on("show",(function(e){OCA.Sharing.App.initSharingDeleted($(e.target))})),$("#app-content-deletedshares").on("hide",(function(){OCA.Sharing.App.removeSharingDeleted()})),$("#app-content-pendingshares").on("show",(function(e){OCA.Sharing.App.initSharingPening($(e.target))})),$("#app-content-pendingshares").on("hide",(function(){OCA.Sharing.App.removeSharingPending()})),$("#app-content-shareoverview").on("show",(function(e){OCA.Sharing.App.initShareingOverview($(e.target))})),$("#app-content-shareoverview").on("hide",(function(){OCA.Sharing.App.removeSharingOverview()}))}))},46658:function(){var e;(e=function(e,i){this.initialize(e,i)}).prototype=_.extend({},OCA.Files.FileList.prototype,{appName:"Shares",_sharedWithUser:!1,_linksOnly:!1,_showDeleted:!1,_showPending:!1,_clientSideSort:!0,_allowSelection:!1,_isOverview:!1,initialize:function(e,i){OCA.Files.FileList.prototype.initialize.apply(this,arguments),this.initialized||(i&&i.sharedWithUser&&(this._sharedWithUser=!0),i&&i.linksOnly&&(this._linksOnly=!0),i&&i.showDeleted&&(this._showDeleted=!0),i&&i.showPending&&(this._showPending=!0),i&&i.isOverview&&(this._isOverview=!0))},_renderRow:function(){return OCA.Files.FileList.prototype._renderRow.apply(this,arguments)},_createRow:function(e){var i=OCA.Files.FileList.prototype._createRow.apply(this,arguments);if(i.find(".filesize").remove(),i.find("td.date").before(i.children("td:first")),i.find("td.filename input:checkbox").remove(),i.attr("data-share-id",_.pluck(e.shares,"id").join(",")),this._sharedWithUser){i.attr("data-share-owner",e.shareOwner),i.attr("data-mounttype","shared-root");var s=parseInt(i.attr("data-permissions"))|OC.PERMISSION_DELETE;i.attr("data-permissions",s)}if((this._showDeleted||this._showPending)&&(s=e.permissions,i.attr("data-share-permissions",s)),e.remoteId&&i.attr("data-remote-id",e.remoteId),e.shareType&&i.attr("data-share-type",e.shareType),this._linksOnly){var n=0;e.shares&&null!==e.shares[0].expiration&&(n=moment(e.shares[0].expiration).valueOf()),i.attr("data-expiration",n);var a,r,h=Math.round((n-(new Date).getTime())/1e3/60/60/24*5);h>=160&&(h=160),n>0?(a=OC.Util.formatDate(n),r=OC.Util.relativeModifiedDate(n)):(a=t("files_sharing","No expiration date set"),r="",h=160),td=$("<td></td>").attr({class:"date"}),td.append($("<span></span>").attr({class:"modified",title:a,style:"color:rgb("+h+","+h+","+h+")"}).text(r).tooltip({placement:"top"})),i.append(td)}return i},setSharedWithUser:function(e){this._sharedWithUser=!!e},updateEmptyContent:function(){var e=this.getCurrentDirectory();"/"===e?(this.$el.find("#emptycontent").toggleClass("hidden",!this.isEmpty),this.$el.find("#filestable thead th").toggleClass("hidden",this.isEmpty),this._linksOnly||this.$el.find("th.column-expiration").addClass("hidden")):OCA.Files.FileList.prototype.updateEmptyContent.apply(this,arguments)},getDirectoryPermissions:function(){return OC.PERMISSION_READ|OC.PERMISSION_DELETE},updateStorageStatistics:function(){},updateRow:function(e,i,t){return e},reload:function(){this.showMask(),this._reloadCall&&this._reloadCall.abort(),this._setCurrentDir("/",!1);var e=[],i={url:OC.linkToOCS("apps/files_sharing/api/v1",2)+"deletedshares",data:{format:"json",include_tags:!0},type:"GET",beforeSend:function(e){e.setRequestHeader("OCS-APIREQUEST","true")}},t={url:OC.linkToOCS("apps/files_sharing/api/v1/shares",2)+"pending",data:{format:"json"},type:"GET",beforeSend:function(e){e.setRequestHeader("OCS-APIREQUEST","true")}},s={url:OC.linkToOCS("apps/files_sharing/api/v1/remote_shares",2)+"pending",data:{format:"json"},type:"GET",beforeSend:function(e){e.setRequestHeader("OCS-APIREQUEST","true")}},n={url:OC.linkToOCS("apps/files_sharing/api/v1")+"shares",data:{format:"json",shared_with_me:!1!==this._sharedWithUser,include_tags:!0},type:"GET",beforeSend:function(e){e.setRequestHeader("OCS-APIREQUEST","true")}},a={url:OC.linkToOCS("apps/files_sharing/api/v1")+"remote_shares",data:{format:"json",include_tags:!0},type:"GET",beforeSend:function(e){e.setRequestHeader("OCS-APIREQUEST","true")}};this._showDeleted?e.push($.ajax(i)):this._showPending?(e.push($.ajax(t)),e.push($.ajax(s))):(e.push($.ajax(n)),(!1!==this._sharedWithUser||this._isOverview)&&e.push($.ajax(a)),this._isOverview&&(n.data.shared_with_me=!n.data.shared_with_me,e.push($.ajax(n)))),this._reloadCall=$.when.apply($,e);var r=this.reloadCallback.bind(this);return this._reloadCall.then(r,r)},reloadCallback:function(e,i,s){delete this._reloadCall,this.hideMask(),this.$el.find("#headerSharedWith").text(t("files_sharing",this._sharedWithUser?"Shared by":"Shared with"));var n=[];return e[0]&&e[0].ocs&&(e=e[0]),i&&i[0]&&i[0].ocs&&(i=i[0]),s&&s[0]&&s[0].ocs&&(s=s[0]),e.ocs&&e.ocs.data&&(n=n.concat(this._makeFilesFromShares(e.ocs.data,this._sharedWithUser))),i&&i.ocs&&i.ocs.data&&(n=n.concat(this._makeFilesFromRemoteShares(i.ocs.data))),s&&s.ocs&&s.ocs.data&&(n=this._showPending?n.concat(this._makeFilesFromRemoteShares(s.ocs.data)):n.concat(this._makeFilesFromShares(s.ocs.data,!this._sharedWithUser))),this.setFiles(n),!0},_makeFilesFromRemoteShares:function(e){var i=e;return _.chain(i).map((function(e){var i={shareOwner:e.owner+"@"+e.remote.replace(/.*?:\/\//g,""),name:OC.basename(e.mountpoint),mtime:1e3*e.mtime,mimetype:e.mimetype,type:e.type,shareType:1===parseInt(e.share_type,10)?OC.Share.SHARE_TYPE_REMOTE_GROUP:OC.Share.SHARE_TYPE_REMOTE,id:e.file_id,path:OC.dirname(e.mountpoint),permissions:e.permissions,tags:e.tags||[]};return e.remote_id&&("1"!==e.accepted&&(i.name=OC.basename(e.name),i.path="/"),i.remoteId=e.remote_id,i.shareOwnerId=e.owner),i.mimetype||(i.mimetype="dir-shared"),i.shares=[{id:e.id,type:OC.Share.SHARE_TYPE_REMOTE}],i})).value()},_makeFilesFromShares:function(e,i){var t=e;return this._linksOnly&&(t=_.filter(e,(function(e){return e.share_type===OC.Share.SHARE_TYPE_LINK}))),t=_.chain(t).map((function(e){var t={id:e.file_source,icon:OC.MimeType.getIconUrl(e.mimetype),mimetype:e.mimetype,hasPreview:e.has_preview,tags:e.tags||[]};return"folder"===e.item_type?(t.type="dir",t.mimetype="httpd/unix-directory"):t.type="file",t.share={id:e.id,type:e.share_type,target:e.share_with,stime:1e3*e.stime,expiration:e.expiration},i?(t.shareOwner=e.displayname_owner,t.shareOwnerId=e.uid_owner,t.name=OC.basename(e.file_target),t.path=OC.dirname(e.file_target),t.permissions=e.permissions,t.path&&(t.extraData=e.file_target)):(e.share_type!==OC.Share.SHARE_TYPE_LINK&&(t.share.targetDisplayName=e.share_with_displayname,t.share.targetShareWithId=e.share_with),t.name=OC.basename(e.path),t.path=OC.dirname(e.path),t.permissions=OC.PERMISSION_ALL,t.path&&(t.extraData=e.path)),t})).reduce((function(e,i){var t=e[i.id],s=i.share.targetDisplayName,n=i.share.targetShareWithId;return t?(i.share.stime>t.mtime&&(t.mtime=i.share.stime),t.shares.push(i.share)):((t=e[i.id]=i).shares=[i.share],t.recipients={},t.recipientData={},t.shareTypes={},t.recipientsCount=0,t.mtime=i.share.stime),s&&(t.recipientsCount<4&&(t.recipients[s]=!0,t.recipientData[t.recipientsCount]={shareWith:n,shareWithDisplayName:s}),t.recipientsCount++),t.shareTypes[i.share.type]=!0,delete i.share,e}),{}).values().each((function(e){e.mountType="shared",delete e.recipientsCount,i?delete e.shareTypes:e.shareTypes=_.keys(e.shareTypes)})).value(),t.sort(this._sortComparator)}}),OCA.Sharing.FileList=e}},i={};function s(t){var n=i[t];if(void 0!==n)return n.exports;var a=i[t]={exports:{}};return e[t](a,a.exports,s),a.exports}s.n=function(e){var i=e&&e.__esModule?function(){return e.default}:function(){return e};return s.d(i,{a:i}),i},s.d=function(e,i){for(var t in i)s.o(i,t)&&!s.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:i[t]})},s.o=function(e,i){return Object.prototype.hasOwnProperty.call(e,i)},function(){"use strict";s(24839),s(46658)}()}();
-//# sourceMappingURL=files_sharing-files_sharing.js.map?v=cb11c94bf3d807f7cd2f \ No newline at end of file
+!function(){var e={24839:function(){OCA.Sharing||(OCA.Sharing={}),OCA.Sharing.App={_inFileList:null,_outFileList:null,_overviewFileList:null,_pendingFileList:null,initSharingIn:function(e){return this._inFileList||(this._inFileList=new OCA.Sharing.FileList(e,{id:"shares.self",sharedWithUser:!0,fileActions:this._createFileActions(),config:OCA.Files.App.getFilesConfig(),shown:!0}),this._extendFileList(this._inFileList),this._inFileList.appName=t("files_sharing","Shared with you"),this._inFileList.$el.find(".emptyfilelist.emptycontent").html('<div class="icon-shared"></div><h2>'+t("files_sharing","Nothing shared with you yet")+"</h2><p>"+t("files_sharing","Files and folders others share with you will show up here")+"</p>")),this._inFileList},initSharingOut:function(e){return this._outFileList||(this._outFileList=new OCA.Sharing.FileList(e,{id:"shares.others",sharedWithUser:!1,fileActions:this._createFileActions(),config:OCA.Files.App.getFilesConfig(),shown:!0}),this._extendFileList(this._outFileList),this._outFileList.appName=t("files_sharing","Shared with others"),this._outFileList.$el.find(".emptyfilelist.emptycontent").html('<div class="icon-shared"></div><h2>'+t("files_sharing","Nothing shared yet")+"</h2><p>"+t("files_sharing","Files and folders you share will show up here")+"</p>")),this._outFileList},initSharingLinks:function(e){return this._linkFileList||(this._linkFileList=new OCA.Sharing.FileList(e,{id:"shares.link",linksOnly:!0,fileActions:this._createFileActions(),config:OCA.Files.App.getFilesConfig(),shown:!0}),this._extendFileList(this._linkFileList),this._linkFileList.appName=t("files_sharing","Shared by link"),this._linkFileList.$el.find(".emptyfilelist.emptycontent").html('<div class="icon-public"></div><h2>'+t("files_sharing","No shared links")+"</h2><p>"+t("files_sharing","Files and folders you share by link will show up here")+"</p>")),this._linkFileList},initSharingDeleted:function(e){return this._deletedFileList||(this._deletedFileList=new OCA.Sharing.FileList(e,{id:"shares.deleted",defaultFileActionsDisabled:!0,showDeleted:!0,sharedWithUser:!0,fileActions:this._restoreShareAction(),config:OCA.Files.App.getFilesConfig(),shown:!0}),this._extendFileList(this._deletedFileList),this._deletedFileList.appName=t("files_sharing","Deleted shares"),this._deletedFileList.$el.find(".emptyfilelist.emptycontent").html('<div class="icon-share"></div><h2>'+t("files_sharing","No deleted shares")+"</h2><p>"+t("files_sharing","Shares you deleted will show up here")+"</p>")),this._deletedFileList},initSharingPening:function(e){return this._pendingFileList||(this._pendingFileList=new OCA.Sharing.FileList(e,{id:"shares.pending",showPending:!0,detailsViewEnabled:!1,defaultFileActionsDisabled:!0,sharedWithUser:!0,fileActions:this._acceptShareAction(),config:OCA.Files.App.getFilesConfig(),shown:!0}),this._extendFileList(this._pendingFileList),this._pendingFileList.appName=t("files_sharing","Pending shares"),this._pendingFileList.$el.find(".emptyfilelist.emptycontent").html('<div class="icon-share"></div><h2>'+t("files_sharing","No pending shares")+"</h2><p>"+t("files_sharing","Shares you have received but not confirmed will show up here")+"</p>")),this._pendingFileList},initShareingOverview:function(e){return this._overviewFileList||(this._overviewFileList=new OCA.Sharing.FileList(e,{id:"shares.overview",fileActions:this._createFileActions(),config:OCA.Files.App.getFilesConfig(),isOverview:!0,shown:!0}),this._extendFileList(this._overviewFileList),this._overviewFileList.appName=t("files_sharing","Shares"),this._overviewFileList.$el.find(".emptyfilelist.emptycontent").html('<div class="icon-share"></div><h2>'+t("files_sharing","No shares")+"</h2><p>"+t("files_sharing","Shares will show up here")+"</p>")),this._overviewFileList},removeSharingIn:function(){this._inFileList&&this._inFileList.$fileList.empty()},removeSharingOut:function(){this._outFileList&&this._outFileList.$fileList.empty()},removeSharingLinks:function(){this._linkFileList&&this._linkFileList.$fileList.empty()},removeSharingDeleted:function(){this._deletedFileList&&this._deletedFileList.$fileList.empty()},removeSharingPending:function(){this._pendingFileList&&this._pendingFileList.$fileList.empty()},removeSharingOverview:function(){this._overviewFileList&&this._overviewFileList.$fileList.empty()},destroy:function(){OCA.Files.fileActions.off("setDefault.app-sharing",this._onActionsUpdated),OCA.Files.fileActions.off("registerAction.app-sharing",this._onActionsUpdated),this.removeSharingIn(),this.removeSharingOut(),this.removeSharingLinks(),this._inFileList=null,this._outFileList=null,this._linkFileList=null,this._overviewFileList=null,delete this._globalActionsInitialized},_createFileActions:function(){var e=new OCA.Files.FileActions;return e.registerDefaultActions(),e.merge(OCA.Files.fileActions),this._globalActionsInitialized||(this._onActionsUpdated=_.bind(this._onActionsUpdated,this),OCA.Files.fileActions.on("setDefault.app-sharing",this._onActionsUpdated),OCA.Files.fileActions.on("registerAction.app-sharing",this._onActionsUpdated),this._globalActionsInitialized=!0),e.register("dir","Open",OC.PERMISSION_READ,"",(function(e,i){OCA.Files.App.setActiveView("files",{silent:!0}),OCA.Files.App.fileList.changeDirectory(OC.joinPaths(i.$file.attr("data-path"),e),!0,!0)})),e.setDefault("dir","Open"),e},_restoreShareAction:function(){var e=new OCA.Files.FileActions;return e.registerAction({name:"Restore",displayName:t("files_sharing","Restore"),altText:t("files_sharing","Restore share"),mime:"all",permissions:OC.PERMISSION_ALL,iconClass:"icon-history",type:OCA.Files.FileActions.TYPE_INLINE,actionHandler:function(e,i){var s=i.$file.data("shareId");$.post(OC.linkToOCS("apps/files_sharing/api/v1/deletedshares",2)+s).success((function(e){i.fileList.remove(i.fileInfoModel.attributes.name)})).fail((function(){OC.Notification.showTemporary(t("files_sharing","Something happened. Unable to restore the share."))}))}}),e},_acceptShareAction:function(){var e=new OCA.Files.FileActions;return e.registerAction({name:"Accept share",displayName:t("files_sharing","Accept share"),mime:"all",permissions:OC.PERMISSION_ALL,iconClass:"icon-checkmark",type:OCA.Files.FileActions.TYPE_INLINE,actionHandler:function(e,i){var s=i.$file.data("shareId"),n="shares/pending";i.$file.attr("data-remote-id")&&(n="remote_shares/pending"),$.post(OC.linkToOCS("apps/files_sharing/api/v1/"+n,2)+s).success((function(e){i.fileList.remove(i.fileInfoModel.attributes.name)})).fail((function(){OC.Notification.showTemporary(t("files_sharing","Something happened. Unable to accept the share."))}))}}),e.registerAction({name:"Reject share",displayName:t("files_sharing","Reject share"),mime:"all",permissions:OC.PERMISSION_ALL,iconClass:"icon-close",type:OCA.Files.FileActions.TYPE_INLINE,shouldRender:function(e){return!e.$file.attr("data-remote-id")||parseInt(e.$file.attr("data-share-type"),10)!==OC.Share.SHARE_TYPE_REMOTE_GROUP},actionHandler:function(e,i){var s=i.$file.data("shareId"),n="shares";i.$file.attr("data-remote-id")&&(n="remote_shares"),$.ajax({url:OC.linkToOCS("apps/files_sharing/api/v1/"+n,2)+s,type:"DELETE"}).success((function(e){i.fileList.remove(i.fileInfoModel.attributes.name)})).fail((function(){OC.Notification.showTemporary(t("files_sharing","Something happened. Unable to reject the share."))}))}}),e},_onActionsUpdated:function(e){_.each([this._inFileList,this._outFileList,this._linkFileList],(function(i){i&&(e.action?i.fileActions.registerAction(e.action):e.defaultAction&&i.fileActions.setDefault(e.defaultAction.mime,e.defaultAction.name))}))},_extendFileList:function(e){e.fileSummary.$el.find(".filesize").remove()}},window.addEventListener("DOMContentLoaded",(function(){$("#app-content-sharingin").on("show",(function(e){OCA.Sharing.App.initSharingIn($(e.target))})),$("#app-content-sharingin").on("hide",(function(){OCA.Sharing.App.removeSharingIn()})),$("#app-content-sharingout").on("show",(function(e){OCA.Sharing.App.initSharingOut($(e.target))})),$("#app-content-sharingout").on("hide",(function(){OCA.Sharing.App.removeSharingOut()})),$("#app-content-sharinglinks").on("show",(function(e){OCA.Sharing.App.initSharingLinks($(e.target))})),$("#app-content-sharinglinks").on("hide",(function(){OCA.Sharing.App.removeSharingLinks()})),$("#app-content-deletedshares").on("show",(function(e){OCA.Sharing.App.initSharingDeleted($(e.target))})),$("#app-content-deletedshares").on("hide",(function(){OCA.Sharing.App.removeSharingDeleted()})),$("#app-content-pendingshares").on("show",(function(e){OCA.Sharing.App.initSharingPening($(e.target))})),$("#app-content-pendingshares").on("hide",(function(){OCA.Sharing.App.removeSharingPending()})),$("#app-content-shareoverview").on("show",(function(e){OCA.Sharing.App.initShareingOverview($(e.target))})),$("#app-content-shareoverview").on("hide",(function(){OCA.Sharing.App.removeSharingOverview()}))}))},46658:function(){var e;(e=function(e,i){this.initialize(e,i)}).prototype=_.extend({},OCA.Files.FileList.prototype,{appName:"Shares",_sharedWithUser:!1,_linksOnly:!1,_showDeleted:!1,_showPending:!1,_clientSideSort:!0,_allowSelection:!1,_isOverview:!1,initialize:function(e,i){OCA.Files.FileList.prototype.initialize.apply(this,arguments),this.initialized||(i&&i.sharedWithUser&&(this._sharedWithUser=!0),i&&i.linksOnly&&(this._linksOnly=!0),i&&i.showDeleted&&(this._showDeleted=!0),i&&i.showPending&&(this._showPending=!0),i&&i.isOverview&&(this._isOverview=!0))},_renderRow:function(){return OCA.Files.FileList.prototype._renderRow.apply(this,arguments)},_createRow:function(e){var i=OCA.Files.FileList.prototype._createRow.apply(this,arguments);if(i.find(".filesize").remove(),i.find("td.date").before(i.children("td:first")),i.find("td.filename input:checkbox").remove(),i.attr("data-share-id",_.pluck(e.shares,"id").join(",")),this._sharedWithUser){i.attr("data-share-owner",e.shareOwner),i.attr("data-mounttype","shared-root");var s=parseInt(i.attr("data-permissions"))|OC.PERMISSION_DELETE;i.attr("data-permissions",s)}if((this._showDeleted||this._showPending)&&(s=e.permissions,i.attr("data-share-permissions",s)),e.remoteId&&i.attr("data-remote-id",e.remoteId),e.shareType&&i.attr("data-share-type",e.shareType),this._linksOnly){var n=0;e.shares&&null!==e.shares[0].expiration&&(n=moment(e.shares[0].expiration).valueOf()),i.attr("data-expiration",n);var a,r,h=Math.round((n-(new Date).getTime())/1e3/60/60/24*5);h>=160&&(h=160),n>0?(a=OC.Util.formatDate(n),r=OC.Util.relativeModifiedDate(n)):(a=t("files_sharing","No expiration date set"),r="",h=160),td=$("<td></td>").attr({class:"date"}),td.append($("<span></span>").attr({class:"modified",title:a,style:"color:rgb("+h+","+h+","+h+")"}).text(r).tooltip({placement:"top"})),i.append(td)}return i},setSharedWithUser:function(e){this._sharedWithUser=!!e},updateEmptyContent:function(){var e=this.getCurrentDirectory();"/"===e?(this.$el.find(".emptyfilelist.emptycontent").toggleClass("hidden",!this.isEmpty),this.$el.find(".files-filestable thead th").toggleClass("hidden",this.isEmpty),this._linksOnly||this.$el.find("th.column-expiration").addClass("hidden")):OCA.Files.FileList.prototype.updateEmptyContent.apply(this,arguments)},getDirectoryPermissions:function(){return OC.PERMISSION_READ|OC.PERMISSION_DELETE},updateStorageStatistics:function(){},updateRow:function(e,i,t){return e},reload:function(){this.showMask(),this._reloadCall&&this._reloadCall.abort(),this._setCurrentDir("/",!1);var e=[],i={url:OC.linkToOCS("apps/files_sharing/api/v1",2)+"deletedshares",data:{format:"json",include_tags:!0},type:"GET",beforeSend:function(e){e.setRequestHeader("OCS-APIREQUEST","true")}},t={url:OC.linkToOCS("apps/files_sharing/api/v1/shares",2)+"pending",data:{format:"json"},type:"GET",beforeSend:function(e){e.setRequestHeader("OCS-APIREQUEST","true")}},s={url:OC.linkToOCS("apps/files_sharing/api/v1/remote_shares",2)+"pending",data:{format:"json"},type:"GET",beforeSend:function(e){e.setRequestHeader("OCS-APIREQUEST","true")}},n={url:OC.linkToOCS("apps/files_sharing/api/v1")+"shares",data:{format:"json",shared_with_me:!1!==this._sharedWithUser,include_tags:!0},type:"GET",beforeSend:function(e){e.setRequestHeader("OCS-APIREQUEST","true")}},a={url:OC.linkToOCS("apps/files_sharing/api/v1")+"remote_shares",data:{format:"json",include_tags:!0},type:"GET",beforeSend:function(e){e.setRequestHeader("OCS-APIREQUEST","true")}};this._showDeleted?e.push($.ajax(i)):this._showPending?(e.push($.ajax(t)),e.push($.ajax(s))):(e.push($.ajax(n)),(!1!==this._sharedWithUser||this._isOverview)&&e.push($.ajax(a)),this._isOverview&&(n.data.shared_with_me=!n.data.shared_with_me,e.push($.ajax(n)))),this._reloadCall=$.when.apply($,e);var r=this.reloadCallback.bind(this);return this._reloadCall.then(r,r)},reloadCallback:function(e,i,s){delete this._reloadCall,this.hideMask(),this.$el.find("#headerSharedWith").text(t("files_sharing",this._sharedWithUser?"Shared by":"Shared with"));var n=[];return e[0]&&e[0].ocs&&(e=e[0]),i&&i[0]&&i[0].ocs&&(i=i[0]),s&&s[0]&&s[0].ocs&&(s=s[0]),e.ocs&&e.ocs.data&&(n=n.concat(this._makeFilesFromShares(e.ocs.data,this._sharedWithUser))),i&&i.ocs&&i.ocs.data&&(n=n.concat(this._makeFilesFromRemoteShares(i.ocs.data))),s&&s.ocs&&s.ocs.data&&(n=this._showPending?n.concat(this._makeFilesFromRemoteShares(s.ocs.data)):n.concat(this._makeFilesFromShares(s.ocs.data,!this._sharedWithUser))),this.setFiles(n),!0},_makeFilesFromRemoteShares:function(e){var i=e;return _.chain(i).map((function(e){var i={shareOwner:e.owner+"@"+e.remote.replace(/.*?:\/\//g,""),name:OC.basename(e.mountpoint),mtime:1e3*e.mtime,mimetype:e.mimetype,type:e.type,shareType:1===parseInt(e.share_type,10)?OC.Share.SHARE_TYPE_REMOTE_GROUP:OC.Share.SHARE_TYPE_REMOTE,id:e.file_id,path:OC.dirname(e.mountpoint),permissions:e.permissions,tags:e.tags||[]};return e.remote_id&&("1"!==e.accepted&&(i.name=OC.basename(e.name),i.path="/"),i.remoteId=e.remote_id,i.shareOwnerId=e.owner),i.mimetype||(i.mimetype="dir-shared"),i.shares=[{id:e.id,type:OC.Share.SHARE_TYPE_REMOTE}],i})).value()},_makeFilesFromShares:function(e,i){var t=e;return this._linksOnly&&(t=_.filter(e,(function(e){return e.share_type===OC.Share.SHARE_TYPE_LINK}))),t=_.chain(t).map((function(e){var t={id:e.file_source,icon:OC.MimeType.getIconUrl(e.mimetype),mimetype:e.mimetype,hasPreview:e.has_preview,tags:e.tags||[]};return"folder"===e.item_type?(t.type="dir",t.mimetype="httpd/unix-directory"):t.type="file",t.share={id:e.id,type:e.share_type,target:e.share_with,stime:1e3*e.stime,expiration:e.expiration},i?(t.shareOwner=e.displayname_owner,t.shareOwnerId=e.uid_owner,t.name=OC.basename(e.file_target),t.path=OC.dirname(e.file_target),t.permissions=e.permissions,t.path&&(t.extraData=e.file_target)):(e.share_type!==OC.Share.SHARE_TYPE_LINK&&(t.share.targetDisplayName=e.share_with_displayname,t.share.targetShareWithId=e.share_with),t.name=OC.basename(e.path),t.path=OC.dirname(e.path),t.permissions=OC.PERMISSION_ALL,t.path&&(t.extraData=e.path)),t})).reduce((function(e,i){var t=e[i.id],s=i.share.targetDisplayName,n=i.share.targetShareWithId;return t?(i.share.stime>t.mtime&&(t.mtime=i.share.stime),t.shares.push(i.share)):((t=e[i.id]=i).shares=[i.share],t.recipients={},t.recipientData={},t.shareTypes={},t.recipientsCount=0,t.mtime=i.share.stime),s&&(t.recipientsCount<4&&(t.recipients[s]=!0,t.recipientData[t.recipientsCount]={shareWith:n,shareWithDisplayName:s}),t.recipientsCount++),t.shareTypes[i.share.type]=!0,delete i.share,e}),{}).values().each((function(e){e.mountType="shared",delete e.recipientsCount,i?delete e.shareTypes:e.shareTypes=_.keys(e.shareTypes)})).value(),t.sort(this._sortComparator)}}),OCA.Sharing.FileList=e}},i={};function s(t){var n=i[t];if(void 0!==n)return n.exports;var a=i[t]={exports:{}};return e[t](a,a.exports,s),a.exports}s.n=function(e){var i=e&&e.__esModule?function(){return e.default}:function(){return e};return s.d(i,{a:i}),i},s.d=function(e,i){for(var t in i)s.o(i,t)&&!s.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:i[t]})},s.o=function(e,i){return Object.prototype.hasOwnProperty.call(e,i)},function(){"use strict";s(24839),s(46658)}()}();
+//# sourceMappingURL=files_sharing-files_sharing.js.map?v=22bff80a3da4b2dd754e \ No newline at end of file
diff --git a/dist/files_sharing-files_sharing.js.map b/dist/files_sharing-files_sharing.js.map
index ba6d4352486..4559bc9b152 100644
--- a/dist/files_sharing-files_sharing.js.map
+++ b/dist/files_sharing-files_sharing.js.map
@@ -1 +1 @@
-{"version":3,"file":"files_sharing-files_sharing.js?v=cb11c94bf3d807f7cd2f","mappings":"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","sources":["webpack:///nextcloud/apps/files_sharing/js/app.js","webpack:///nextcloud/apps/files_sharing/js/sharedfilelist.js","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand"],"sourcesContent":["/**\n * Copyright (c) 2014 Vincent Petry <pvince81@owncloud.com>\n *\n * This file is licensed under the Affero General Public License version 3\n * or later.\n *\n * See the COPYING-README file.\n *\n */\n\nif (!OCA.Sharing) {\n\t/**\n\t * @namespace OCA.Sharing\n\t */\n\tOCA.Sharing = {}\n}\n\n/**\n * @namespace\n */\nOCA.Sharing.App = {\n\n\t_inFileList: null,\n\t_outFileList: null,\n\t_overviewFileList: null,\n\t_pendingFileList: null,\n\n\tinitSharingIn($el) {\n\t\tif (this._inFileList) {\n\t\t\treturn this._inFileList\n\t\t}\n\n\t\tthis._inFileList = new OCA.Sharing.FileList(\n\t\t\t$el,\n\t\t\t{\n\t\t\t\tid: 'shares.self',\n\t\t\t\tsharedWithUser: true,\n\t\t\t\tfileActions: this._createFileActions(),\n\t\t\t\tconfig: OCA.Files.App.getFilesConfig(),\n\t\t\t\t// The file list is created when a \"show\" event is handled, so\n\t\t\t\t// it should be marked as \"shown\" like it would have been done\n\t\t\t\t// if handling the event with the file list already created.\n\t\t\t\tshown: true,\n\t\t\t}\n\t\t)\n\n\t\tthis._extendFileList(this._inFileList)\n\t\tthis._inFileList.appName = t('files_sharing', 'Shared with you')\n\t\tthis._inFileList.$el.find('#emptycontent').html('<div class=\"icon-shared\"></div>'\n\t\t\t+ '<h2>' + t('files_sharing', 'Nothing shared with you yet') + '</h2>'\n\t\t\t+ '<p>' + t('files_sharing', 'Files and folders others share with you will show up here') + '</p>')\n\t\treturn this._inFileList\n\t},\n\n\tinitSharingOut($el) {\n\t\tif (this._outFileList) {\n\t\t\treturn this._outFileList\n\t\t}\n\t\tthis._outFileList = new OCA.Sharing.FileList(\n\t\t\t$el,\n\t\t\t{\n\t\t\t\tid: 'shares.others',\n\t\t\t\tsharedWithUser: false,\n\t\t\t\tfileActions: this._createFileActions(),\n\t\t\t\tconfig: OCA.Files.App.getFilesConfig(),\n\t\t\t\t// The file list is created when a \"show\" event is handled, so\n\t\t\t\t// it should be marked as \"shown\" like it would have been done\n\t\t\t\t// if handling the event with the file list already created.\n\t\t\t\tshown: true,\n\t\t\t}\n\t\t)\n\n\t\tthis._extendFileList(this._outFileList)\n\t\tthis._outFileList.appName = t('files_sharing', 'Shared with others')\n\t\tthis._outFileList.$el.find('#emptycontent').html('<div class=\"icon-shared\"></div>'\n\t\t\t+ '<h2>' + t('files_sharing', 'Nothing shared yet') + '</h2>'\n\t\t\t+ '<p>' + t('files_sharing', 'Files and folders you share will show up here') + '</p>')\n\t\treturn this._outFileList\n\t},\n\n\tinitSharingLinks($el) {\n\t\tif (this._linkFileList) {\n\t\t\treturn this._linkFileList\n\t\t}\n\t\tthis._linkFileList = new OCA.Sharing.FileList(\n\t\t\t$el,\n\t\t\t{\n\t\t\t\tid: 'shares.link',\n\t\t\t\tlinksOnly: true,\n\t\t\t\tfileActions: this._createFileActions(),\n\t\t\t\tconfig: OCA.Files.App.getFilesConfig(),\n\t\t\t\t// The file list is created when a \"show\" event is handled, so\n\t\t\t\t// it should be marked as \"shown\" like it would have been done\n\t\t\t\t// if handling the event with the file list already created.\n\t\t\t\tshown: true,\n\t\t\t}\n\t\t)\n\n\t\tthis._extendFileList(this._linkFileList)\n\t\tthis._linkFileList.appName = t('files_sharing', 'Shared by link')\n\t\tthis._linkFileList.$el.find('#emptycontent').html('<div class=\"icon-public\"></div>'\n\t\t\t+ '<h2>' + t('files_sharing', 'No shared links') + '</h2>'\n\t\t\t+ '<p>' + t('files_sharing', 'Files and folders you share by link will show up here') + '</p>')\n\t\treturn this._linkFileList\n\t},\n\n\tinitSharingDeleted($el) {\n\t\tif (this._deletedFileList) {\n\t\t\treturn this._deletedFileList\n\t\t}\n\t\tthis._deletedFileList = new OCA.Sharing.FileList(\n\t\t\t$el,\n\t\t\t{\n\t\t\t\tid: 'shares.deleted',\n\t\t\t\tdefaultFileActionsDisabled: true,\n\t\t\t\tshowDeleted: true,\n\t\t\t\tsharedWithUser: true,\n\t\t\t\tfileActions: this._restoreShareAction(),\n\t\t\t\tconfig: OCA.Files.App.getFilesConfig(),\n\t\t\t\t// The file list is created when a \"show\" event is handled, so\n\t\t\t\t// it should be marked as \"shown\" like it would have been done\n\t\t\t\t// if handling the event with the file list already created.\n\t\t\t\tshown: true,\n\t\t\t}\n\t\t)\n\n\t\tthis._extendFileList(this._deletedFileList)\n\t\tthis._deletedFileList.appName = t('files_sharing', 'Deleted shares')\n\t\tthis._deletedFileList.$el.find('#emptycontent').html('<div class=\"icon-share\"></div>'\n\t\t\t+ '<h2>' + t('files_sharing', 'No deleted shares') + '</h2>'\n\t\t\t+ '<p>' + t('files_sharing', 'Shares you deleted will show up here') + '</p>')\n\t\treturn this._deletedFileList\n\t},\n\n\tinitSharingPening($el) {\n\t\tif (this._pendingFileList) {\n\t\t\treturn this._pendingFileList\n\t\t}\n\t\tthis._pendingFileList = new OCA.Sharing.FileList(\n\t\t\t$el,\n\t\t\t{\n\t\t\t\tid: 'shares.pending',\n\t\t\t\tshowPending: true,\n\t\t\t\tdetailsViewEnabled: false,\n\t\t\t\tdefaultFileActionsDisabled: true,\n\t\t\t\tsharedWithUser: true,\n\t\t\t\tfileActions: this._acceptShareAction(),\n\t\t\t\tconfig: OCA.Files.App.getFilesConfig(),\n\t\t\t\t// The file list is created when a \"show\" event is handled, so\n\t\t\t\t// it should be marked as \"shown\" like it would have been done\n\t\t\t\t// if handling the event with the file list already created.\n\t\t\t\tshown: true,\n\t\t\t}\n\t\t)\n\n\t\tthis._extendFileList(this._pendingFileList)\n\t\tthis._pendingFileList.appName = t('files_sharing', 'Pending shares')\n\t\tthis._pendingFileList.$el.find('#emptycontent').html('<div class=\"icon-share\"></div>'\n\t\t\t+ '<h2>' + t('files_sharing', 'No pending shares') + '</h2>'\n\t\t\t+ '<p>' + t('files_sharing', 'Shares you have received but not confirmed will show up here') + '</p>')\n\t\treturn this._pendingFileList\n\t},\n\n\tinitShareingOverview($el) {\n\t\tif (this._overviewFileList) {\n\t\t\treturn this._overviewFileList\n\t\t}\n\t\tthis._overviewFileList = new OCA.Sharing.FileList(\n\t\t\t$el,\n\t\t\t{\n\t\t\t\tid: 'shares.overview',\n\t\t\t\tfileActions: this._createFileActions(),\n\t\t\t\tconfig: OCA.Files.App.getFilesConfig(),\n\t\t\t\tisOverview: true,\n\t\t\t\t// The file list is created when a \"show\" event is handled, so\n\t\t\t\t// it should be marked as \"shown\" like it would have been done\n\t\t\t\t// if handling the event with the file list already created.\n\t\t\t\tshown: true,\n\t\t\t}\n\t\t)\n\n\t\tthis._extendFileList(this._overviewFileList)\n\t\tthis._overviewFileList.appName = t('files_sharing', 'Shares')\n\t\tthis._overviewFileList.$el.find('#emptycontent').html('<div class=\"icon-share\"></div>'\n\t\t\t+ '<h2>' + t('files_sharing', 'No shares') + '</h2>'\n\t\t\t+ '<p>' + t('files_sharing', 'Shares will show up here') + '</p>')\n\t\treturn this._overviewFileList\n\t},\n\n\tremoveSharingIn() {\n\t\tif (this._inFileList) {\n\t\t\tthis._inFileList.$fileList.empty()\n\t\t}\n\t},\n\n\tremoveSharingOut() {\n\t\tif (this._outFileList) {\n\t\t\tthis._outFileList.$fileList.empty()\n\t\t}\n\t},\n\n\tremoveSharingLinks() {\n\t\tif (this._linkFileList) {\n\t\t\tthis._linkFileList.$fileList.empty()\n\t\t}\n\t},\n\n\tremoveSharingDeleted() {\n\t\tif (this._deletedFileList) {\n\t\t\tthis._deletedFileList.$fileList.empty()\n\t\t}\n\t},\n\n\tremoveSharingPending() {\n\t\tif (this._pendingFileList) {\n\t\t\tthis._pendingFileList.$fileList.empty()\n\t\t}\n\t},\n\n\tremoveSharingOverview() {\n\t\tif (this._overviewFileList) {\n\t\t\tthis._overviewFileList.$fileList.empty()\n\t\t}\n\t},\n\n\t/**\n\t * Destroy the app\n\t */\n\tdestroy() {\n\t\tOCA.Files.fileActions.off('setDefault.app-sharing', this._onActionsUpdated)\n\t\tOCA.Files.fileActions.off('registerAction.app-sharing', this._onActionsUpdated)\n\t\tthis.removeSharingIn()\n\t\tthis.removeSharingOut()\n\t\tthis.removeSharingLinks()\n\t\tthis._inFileList = null\n\t\tthis._outFileList = null\n\t\tthis._linkFileList = null\n\t\tthis._overviewFileList = null\n\t\tdelete this._globalActionsInitialized\n\t},\n\n\t_createFileActions() {\n\t\t// inherit file actions from the files app\n\t\tconst fileActions = new OCA.Files.FileActions()\n\t\t// note: not merging the legacy actions because legacy apps are not\n\t\t// compatible with the sharing overview and need to be adapted first\n\t\tfileActions.registerDefaultActions()\n\t\tfileActions.merge(OCA.Files.fileActions)\n\n\t\tif (!this._globalActionsInitialized) {\n\t\t\t// in case actions are registered later\n\t\t\tthis._onActionsUpdated = _.bind(this._onActionsUpdated, this)\n\t\t\tOCA.Files.fileActions.on('setDefault.app-sharing', this._onActionsUpdated)\n\t\t\tOCA.Files.fileActions.on('registerAction.app-sharing', this._onActionsUpdated)\n\t\t\tthis._globalActionsInitialized = true\n\t\t}\n\n\t\t// when the user clicks on a folder, redirect to the corresponding\n\t\t// folder in the files app instead of opening it directly\n\t\tfileActions.register('dir', 'Open', OC.PERMISSION_READ, '', function(filename, context) {\n\t\t\tOCA.Files.App.setActiveView('files', { silent: true })\n\t\t\tOCA.Files.App.fileList.changeDirectory(OC.joinPaths(context.$file.attr('data-path'), filename), true, true)\n\t\t})\n\t\tfileActions.setDefault('dir', 'Open')\n\t\treturn fileActions\n\t},\n\n\t_restoreShareAction() {\n\t\tconst fileActions = new OCA.Files.FileActions()\n\t\tfileActions.registerAction({\n\t\t\tname: 'Restore',\n\t\t\tdisplayName: t('files_sharing', 'Restore'),\n\t\t\taltText: t('files_sharing', 'Restore share'),\n\t\t\tmime: 'all',\n\t\t\tpermissions: OC.PERMISSION_ALL,\n\t\t\ticonClass: 'icon-history',\n\t\t\ttype: OCA.Files.FileActions.TYPE_INLINE,\n\t\t\tactionHandler(fileName, context) {\n\t\t\t\tconst shareId = context.$file.data('shareId')\n\t\t\t\t$.post(OC.linkToOCS('apps/files_sharing/api/v1/deletedshares', 2) + shareId)\n\t\t\t\t\t.success(function(result) {\n\t\t\t\t\t\tcontext.fileList.remove(context.fileInfoModel.attributes.name)\n\t\t\t\t\t}).fail(function() {\n\t\t\t\t\t\tOC.Notification.showTemporary(t('files_sharing', 'Something happened. Unable to restore the share.'))\n\t\t\t\t\t})\n\t\t\t},\n\t\t})\n\t\treturn fileActions\n\t},\n\n\t_acceptShareAction() {\n\t\tconst fileActions = new OCA.Files.FileActions()\n\t\tfileActions.registerAction({\n\t\t\tname: 'Accept share',\n\t\t\tdisplayName: t('files_sharing', 'Accept share'),\n\t\t\tmime: 'all',\n\t\t\tpermissions: OC.PERMISSION_ALL,\n\t\t\ticonClass: 'icon-checkmark',\n\t\t\ttype: OCA.Files.FileActions.TYPE_INLINE,\n\t\t\tactionHandler(fileName, context) {\n\t\t\t\tconst shareId = context.$file.data('shareId')\n\t\t\t\tlet shareBase = 'shares/pending'\n\t\t\t\tif (context.$file.attr('data-remote-id')) {\n\t\t\t\t\tshareBase = 'remote_shares/pending'\n\t\t\t\t}\n\t\t\t\t$.post(OC.linkToOCS('apps/files_sharing/api/v1/' + shareBase, 2) + shareId)\n\t\t\t\t\t.success(function(result) {\n\t\t\t\t\t\tcontext.fileList.remove(context.fileInfoModel.attributes.name)\n\t\t\t\t\t}).fail(function() {\n\t\t\t\t\t\tOC.Notification.showTemporary(t('files_sharing', 'Something happened. Unable to accept the share.'))\n\t\t\t\t\t})\n\t\t\t},\n\t\t})\n\t\tfileActions.registerAction({\n\t\t\tname: 'Reject share',\n\t\t\tdisplayName: t('files_sharing', 'Reject share'),\n\t\t\tmime: 'all',\n\t\t\tpermissions: OC.PERMISSION_ALL,\n\t\t\ticonClass: 'icon-close',\n\t\t\ttype: OCA.Files.FileActions.TYPE_INLINE,\n\t\t\tshouldRender(context) {\n\t\t\t\t// disable rejecting group shares from the pending list because they anyway\n\t\t\t\t// land back into that same list\n\t\t\t\tif (context.$file.attr('data-remote-id') && parseInt(context.$file.attr('data-share-type'), 10) === OC.Share.SHARE_TYPE_REMOTE_GROUP) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\treturn true\n\t\t\t},\n\t\t\tactionHandler(fileName, context) {\n\t\t\t\tconst shareId = context.$file.data('shareId')\n\t\t\t\tlet shareBase = 'shares'\n\t\t\t\tif (context.$file.attr('data-remote-id')) {\n\t\t\t\t\tshareBase = 'remote_shares'\n\t\t\t\t}\n\n\t\t\t\t$.ajax({\n\t\t\t\t\turl: OC.linkToOCS('apps/files_sharing/api/v1/' + shareBase, 2) + shareId,\n\t\t\t\t\ttype: 'DELETE',\n\t\t\t\t}).success(function(result) {\n\t\t\t\t\tcontext.fileList.remove(context.fileInfoModel.attributes.name)\n\t\t\t\t}).fail(function() {\n\t\t\t\t\tOC.Notification.showTemporary(t('files_sharing', 'Something happened. Unable to reject the share.'))\n\t\t\t\t})\n\t\t\t},\n\t\t})\n\t\treturn fileActions\n\t},\n\n\t_onActionsUpdated(ev) {\n\t\t_.each([this._inFileList, this._outFileList, this._linkFileList], function(list) {\n\t\t\tif (!list) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (ev.action) {\n\t\t\t\tlist.fileActions.registerAction(ev.action)\n\t\t\t} else if (ev.defaultAction) {\n\t\t\t\tlist.fileActions.setDefault(\n\t\t\t\t\tev.defaultAction.mime,\n\t\t\t\t\tev.defaultAction.name\n\t\t\t\t)\n\t\t\t}\n\t\t})\n\t},\n\n\t_extendFileList(fileList) {\n\t\t// remove size column from summary\n\t\tfileList.fileSummary.$el.find('.filesize').remove()\n\t},\n}\n\nwindow.addEventListener('DOMContentLoaded', function() {\n\t$('#app-content-sharingin').on('show', function(e) {\n\t\tOCA.Sharing.App.initSharingIn($(e.target))\n\t})\n\t$('#app-content-sharingin').on('hide', function() {\n\t\tOCA.Sharing.App.removeSharingIn()\n\t})\n\t$('#app-content-sharingout').on('show', function(e) {\n\t\tOCA.Sharing.App.initSharingOut($(e.target))\n\t})\n\t$('#app-content-sharingout').on('hide', function() {\n\t\tOCA.Sharing.App.removeSharingOut()\n\t})\n\t$('#app-content-sharinglinks').on('show', function(e) {\n\t\tOCA.Sharing.App.initSharingLinks($(e.target))\n\t})\n\t$('#app-content-sharinglinks').on('hide', function() {\n\t\tOCA.Sharing.App.removeSharingLinks()\n\t})\n\t$('#app-content-deletedshares').on('show', function(e) {\n\t\tOCA.Sharing.App.initSharingDeleted($(e.target))\n\t})\n\t$('#app-content-deletedshares').on('hide', function() {\n\t\tOCA.Sharing.App.removeSharingDeleted()\n\t})\n\t$('#app-content-pendingshares').on('show', function(e) {\n\t\tOCA.Sharing.App.initSharingPening($(e.target))\n\t})\n\t$('#app-content-pendingshares').on('hide', function() {\n\t\tOCA.Sharing.App.removeSharingPending()\n\t})\n\t$('#app-content-shareoverview').on('show', function(e) {\n\t\tOCA.Sharing.App.initShareingOverview($(e.target))\n\t})\n\t$('#app-content-shareoverview').on('hide', function() {\n\t\tOCA.Sharing.App.removeSharingOverview()\n\t})\n})\n","/* eslint-disable */\n/*\n * Copyright (c) 2014 Vincent Petry <pvince81@owncloud.com>\n *\n * This file is licensed under the Affero General Public License version 3\n * or later.\n *\n * See the COPYING-README file.\n *\n */\n(function() {\n\n\t/**\n\t * @class OCA.Sharing.FileList\n\t * @augments OCA.Files.FileList\n\t *\n\t * @classdesc Sharing file list.\n\t * Contains both \"shared with others\" and \"shared with you\" modes.\n\t *\n\t * @param $el container element with existing markup for the #controls\n\t * and a table\n\t * @param [options] map of options, see other parameters\n\t * @param {boolean} [options.sharedWithUser] true to return files shared with\n\t * the current user, false to return files that the user shared with others.\n\t * Defaults to false.\n\t * @param {boolean} [options.linksOnly] true to return only link shares\n\t */\n\tvar FileList = function($el, options) {\n\t\tthis.initialize($el, options)\n\t}\n\tFileList.prototype = _.extend({}, OCA.Files.FileList.prototype,\n\t\t/** @lends OCA.Sharing.FileList.prototype */ {\n\t\t\tappName: 'Shares',\n\n\t\t\t/**\n\t\t * Whether the list shows the files shared with the user (true) or\n\t\t * the files that the user shared with others (false).\n\t\t */\n\t\t\t_sharedWithUser: false,\n\t\t\t_linksOnly: false,\n\t\t\t_showDeleted: false,\n\t\t\t_showPending: false,\n\t\t\t_clientSideSort: true,\n\t\t\t_allowSelection: false,\n\t\t\t_isOverview: false,\n\n\t\t\t/**\n\t\t * @private\n\t\t */\n\t\t\tinitialize: function($el, options) {\n\t\t\t\tOCA.Files.FileList.prototype.initialize.apply(this, arguments)\n\t\t\t\tif (this.initialized) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\t// TODO: consolidate both options\n\t\t\t\tif (options && options.sharedWithUser) {\n\t\t\t\t\tthis._sharedWithUser = true\n\t\t\t\t}\n\t\t\t\tif (options && options.linksOnly) {\n\t\t\t\t\tthis._linksOnly = true\n\t\t\t\t}\n\t\t\t\tif (options && options.showDeleted) {\n\t\t\t\t\tthis._showDeleted = true\n\t\t\t\t}\n\t\t\t\tif (options && options.showPending) {\n\t\t\t\t\tthis._showPending = true\n\t\t\t\t}\n\t\t\t\tif (options && options.isOverview) {\n\t\t\t\t\tthis._isOverview = true\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t_renderRow: function() {\n\t\t\t// HACK: needed to call the overridden _renderRow\n\t\t\t// this is because at the time this class is created\n\t\t\t// the overriding hasn't been done yet...\n\t\t\t\treturn OCA.Files.FileList.prototype._renderRow.apply(this, arguments)\n\t\t\t},\n\n\t\t\t_createRow: function(fileData) {\n\t\t\t// TODO: hook earlier and render the whole row here\n\t\t\t\tvar $tr = OCA.Files.FileList.prototype._createRow.apply(this, arguments)\n\t\t\t\t$tr.find('.filesize').remove()\n\t\t\t\t$tr.find('td.date').before($tr.children('td:first'))\n\t\t\t\t$tr.find('td.filename input:checkbox').remove()\n\t\t\t\t$tr.attr('data-share-id', _.pluck(fileData.shares, 'id').join(','))\n\t\t\t\tif (this._sharedWithUser) {\n\t\t\t\t\t$tr.attr('data-share-owner', fileData.shareOwner)\n\t\t\t\t\t$tr.attr('data-mounttype', 'shared-root')\n\t\t\t\t\tvar permission = parseInt($tr.attr('data-permissions')) | OC.PERMISSION_DELETE\n\t\t\t\t\t$tr.attr('data-permissions', permission)\n\t\t\t\t}\n\t\t\t\tif (this._showDeleted || this._showPending) {\n\t\t\t\t\tvar permission = fileData.permissions\n\t\t\t\t\t$tr.attr('data-share-permissions', permission)\n\t\t\t\t}\n\n\t\t\t\tif (fileData.remoteId) {\n\t\t\t\t\t$tr.attr('data-remote-id', fileData.remoteId)\n\t\t\t\t}\n\n\t\t\t\tif (fileData.shareType) {\n\t\t\t\t\t$tr.attr('data-share-type', fileData.shareType)\n\t\t\t\t}\n\n\t\t\t\t// add row with expiration date for link only shares - influenced by _createRow of filelist\n\t\t\t\tif (this._linksOnly) {\n\t\t\t\t\tvar expirationTimestamp = 0\n\t\t\t\t\tif (fileData.shares && fileData.shares[0].expiration !== null) {\n\t\t\t\t\t\texpirationTimestamp = moment(fileData.shares[0].expiration).valueOf()\n\t\t\t\t\t}\n\t\t\t\t\t$tr.attr('data-expiration', expirationTimestamp)\n\n\t\t\t\t\t// date column (1000 milliseconds to seconds, 60 seconds, 60 minutes, 24 hours)\n\t\t\t\t\t// difference in days multiplied by 5 - brightest shade for expiry dates in more than 32 days (160/5)\n\t\t\t\t\tvar modifiedColor = Math.round((expirationTimestamp - (new Date()).getTime()) / 1000 / 60 / 60 / 24 * 5)\n\t\t\t\t\t// ensure that the brightest color is still readable\n\t\t\t\t\tif (modifiedColor >= 160) {\n\t\t\t\t\t\tmodifiedColor = 160\n\t\t\t\t\t}\n\n\t\t\t\t\tvar formatted\n\t\t\t\t\tvar text\n\t\t\t\t\tif (expirationTimestamp > 0) {\n\t\t\t\t\t\tformatted = OC.Util.formatDate(expirationTimestamp)\n\t\t\t\t\t\ttext = OC.Util.relativeModifiedDate(expirationTimestamp)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tformatted = t('files_sharing', 'No expiration date set')\n\t\t\t\t\t\ttext = ''\n\t\t\t\t\t\tmodifiedColor = 160\n\t\t\t\t\t}\n\t\t\t\t\ttd = $('<td></td>').attr({ 'class': 'date' })\n\t\t\t\t\ttd.append($('<span></span>').attr({\n\t\t\t\t\t\t'class': 'modified',\n\t\t\t\t\t\t'title': formatted,\n\t\t\t\t\t\t'style': 'color:rgb(' + modifiedColor + ',' + modifiedColor + ',' + modifiedColor + ')'\n\t\t\t\t\t}).text(text)\n\t\t\t\t\t\t.tooltip({ placement: 'top' })\n\t\t\t\t\t)\n\n\t\t\t\t\t$tr.append(td)\n\t\t\t\t}\n\t\t\t\treturn $tr\n\t\t\t},\n\n\t\t\t/**\n\t\t * Set whether the list should contain outgoing shares\n\t\t * or incoming shares.\n\t\t *\n\t\t * @param state true for incoming shares, false otherwise\n\t\t */\n\t\t\tsetSharedWithUser: function(state) {\n\t\t\t\tthis._sharedWithUser = !!state\n\t\t\t},\n\n\t\t\tupdateEmptyContent: function() {\n\t\t\t\tvar dir = this.getCurrentDirectory()\n\t\t\t\tif (dir === '/') {\n\t\t\t\t// root has special permissions\n\t\t\t\t\tthis.$el.find('#emptycontent').toggleClass('hidden', !this.isEmpty)\n\t\t\t\t\tthis.$el.find('#filestable thead th').toggleClass('hidden', this.isEmpty)\n\n\t\t\t\t\t// hide expiration date header for non link only shares\n\t\t\t\t\tif (!this._linksOnly) {\n\t\t\t\t\t\tthis.$el.find('th.column-expiration').addClass('hidden')\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tOCA.Files.FileList.prototype.updateEmptyContent.apply(this, arguments)\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tgetDirectoryPermissions: function() {\n\t\t\t\treturn OC.PERMISSION_READ | OC.PERMISSION_DELETE\n\t\t\t},\n\n\t\t\tupdateStorageStatistics: function() {\n\t\t\t// no op because it doesn't have\n\t\t\t// storage info like free space / used space\n\t\t\t},\n\n\t\t\tupdateRow: function($tr, fileInfo, options) {\n\t\t\t// no-op, suppress re-rendering\n\t\t\t\treturn $tr\n\t\t\t},\n\n\t\t\treload: function() {\n\t\t\t\tthis.showMask()\n\t\t\t\tif (this._reloadCall) {\n\t\t\t\t\tthis._reloadCall.abort()\n\t\t\t\t}\n\n\t\t\t\t// there is only root\n\t\t\t\tthis._setCurrentDir('/', false)\n\n\t\t\t\tvar promises = []\n\n\t\t\t\tvar deletedShares = {\n\t\t\t\t\turl: OC.linkToOCS('apps/files_sharing/api/v1', 2) + 'deletedshares',\n\t\t\t\t\t/* jshint camelcase: false */\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tformat: 'json',\n\t\t\t\t\t\tinclude_tags: true\n\t\t\t\t\t},\n\t\t\t\t\ttype: 'GET',\n\t\t\t\t\tbeforeSend: function(xhr) {\n\t\t\t\t\t\txhr.setRequestHeader('OCS-APIREQUEST', 'true')\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar pendingShares = {\n\t\t\t\t\turl: OC.linkToOCS('apps/files_sharing/api/v1/shares', 2) + 'pending',\n\t\t\t\t\t/* jshint camelcase: false */\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tformat: 'json'\n\t\t\t\t\t},\n\t\t\t\t\ttype: 'GET',\n\t\t\t\t\tbeforeSend: function(xhr) {\n\t\t\t\t\t\txhr.setRequestHeader('OCS-APIREQUEST', 'true')\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar pendingRemoteShares = {\n\t\t\t\t\turl: OC.linkToOCS('apps/files_sharing/api/v1/remote_shares', 2) + 'pending',\n\t\t\t\t\t/* jshint camelcase: false */\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tformat: 'json'\n\t\t\t\t\t},\n\t\t\t\t\ttype: 'GET',\n\t\t\t\t\tbeforeSend: function(xhr) {\n\t\t\t\t\t\txhr.setRequestHeader('OCS-APIREQUEST', 'true')\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar shares = {\n\t\t\t\t\turl: OC.linkToOCS('apps/files_sharing/api/v1') + 'shares',\n\t\t\t\t\t/* jshint camelcase: false */\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tformat: 'json',\n\t\t\t\t\t\tshared_with_me: this._sharedWithUser !== false,\n\t\t\t\t\t\tinclude_tags: true\n\t\t\t\t\t},\n\t\t\t\t\ttype: 'GET',\n\t\t\t\t\tbeforeSend: function(xhr) {\n\t\t\t\t\t\txhr.setRequestHeader('OCS-APIREQUEST', 'true')\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar remoteShares = {\n\t\t\t\t\turl: OC.linkToOCS('apps/files_sharing/api/v1') + 'remote_shares',\n\t\t\t\t\t/* jshint camelcase: false */\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tformat: 'json',\n\t\t\t\t\t\tinclude_tags: true\n\t\t\t\t\t},\n\t\t\t\t\ttype: 'GET',\n\t\t\t\t\tbeforeSend: function(xhr) {\n\t\t\t\t\t\txhr.setRequestHeader('OCS-APIREQUEST', 'true')\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Add the proper ajax requests to the list and run them\n\t\t\t\t// and make sure we have 2 promises\n\t\t\t\tif (this._showDeleted) {\n\t\t\t\t\tpromises.push($.ajax(deletedShares))\n\t\t\t\t} else if (this._showPending) {\n\t\t\t\t\tpromises.push($.ajax(pendingShares))\n\t\t\t\t\tpromises.push($.ajax(pendingRemoteShares))\n\t\t\t\t} else {\n\t\t\t\t\tpromises.push($.ajax(shares))\n\n\t\t\t\t\tif (this._sharedWithUser !== false || this._isOverview) {\n\t\t\t\t\t\tpromises.push($.ajax(remoteShares))\n\t\t\t\t\t}\n\t\t\t\t\tif (this._isOverview) {\n\t\t\t\t\t\tshares.data.shared_with_me = !shares.data.shared_with_me\n\t\t\t\t\t\tpromises.push($.ajax(shares))\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis._reloadCall = $.when.apply($, promises)\n\t\t\t\tvar callBack = this.reloadCallback.bind(this)\n\t\t\t\treturn this._reloadCall.then(callBack, callBack)\n\t\t\t},\n\n\t\t\treloadCallback: function(shares, remoteShares, additionalShares) {\n\t\t\t\tdelete this._reloadCall\n\t\t\t\tthis.hideMask()\n\n\t\t\t\tthis.$el.find('#headerSharedWith').text(\n\t\t\t\t\tt('files_sharing', this._sharedWithUser ? 'Shared by' : 'Shared with')\n\t\t\t\t)\n\n\t\t\t\tvar files = []\n\n\t\t\t\t// make sure to use the same format\n\t\t\t\tif (shares[0] && shares[0].ocs) {\n\t\t\t\t\tshares = shares[0]\n\t\t\t\t}\n\t\t\t\tif (remoteShares && remoteShares[0] && remoteShares[0].ocs) {\n\t\t\t\t\tremoteShares = remoteShares[0]\n\t\t\t\t}\n\t\t\t\tif (additionalShares && additionalShares[0] && additionalShares[0].ocs) {\n\t\t\t\t\tadditionalShares = additionalShares[0]\n\t\t\t\t}\n\n\t\t\t\tif (shares.ocs && shares.ocs.data) {\n\t\t\t\t\tfiles = files.concat(this._makeFilesFromShares(shares.ocs.data, this._sharedWithUser))\n\t\t\t\t}\n\n\t\t\t\tif (remoteShares && remoteShares.ocs && remoteShares.ocs.data) {\n\t\t\t\t\tfiles = files.concat(this._makeFilesFromRemoteShares(remoteShares.ocs.data))\n\t\t\t\t}\n\n\t\t\t\tif (additionalShares && additionalShares.ocs && additionalShares.ocs.data) {\n\t\t\t\t\tif (this._showPending) {\n\t\t\t\t\t\t// in this case the second callback is about pending remote shares\n\t\t\t\t\t\tfiles = files.concat(this._makeFilesFromRemoteShares(additionalShares.ocs.data))\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfiles = files.concat(this._makeFilesFromShares(additionalShares.ocs.data, !this._sharedWithUser))\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.setFiles(files)\n\t\t\t\treturn true\n\t\t\t},\n\n\t\t\t_makeFilesFromRemoteShares: function(data) {\n\t\t\t\tvar files = data\n\n\t\t\t\tfiles = _.chain(files)\n\t\t\t\t// convert share data to file data\n\t\t\t\t\t.map(function(share) {\n\t\t\t\t\t\tvar file = {\n\t\t\t\t\t\t\tshareOwner: share.owner + '@' + share.remote.replace(/.*?:\\/\\//g, ''),\n\t\t\t\t\t\t\tname: OC.basename(share.mountpoint),\n\t\t\t\t\t\t\tmtime: share.mtime * 1000,\n\t\t\t\t\t\t\tmimetype: share.mimetype,\n\t\t\t\t\t\t\ttype: share.type,\n\t\t\t\t\t\t\t// remote share types are different and need to be mapped\n\t\t\t\t\t\t\tshareType: (parseInt(share.share_type, 10) === 1) ? OC.Share.SHARE_TYPE_REMOTE_GROUP : OC.Share.SHARE_TYPE_REMOTE,\n\t\t\t\t\t\t\tid: share.file_id,\n\t\t\t\t\t\t\tpath: OC.dirname(share.mountpoint),\n\t\t\t\t\t\t\tpermissions: share.permissions,\n\t\t\t\t\t\t\ttags: share.tags || []\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (share.remote_id) {\n\t\t\t\t\t\t\t// remote share\n\t\t\t\t\t\t\tif (share.accepted !== '1') {\n\t\t\t\t\t\t\t\tfile.name = OC.basename(share.name)\n\t\t\t\t\t\t\t\tfile.path = '/'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tfile.remoteId = share.remote_id\n\t\t\t\t\t\t\tfile.shareOwnerId = share.owner\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!file.mimetype) {\n\t\t\t\t\t\t\t// pending shares usually have no type, so default to showing a directory icon\n\t\t\t\t\t\t\tfile.mimetype = 'dir-shared'\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfile.shares = [{\n\t\t\t\t\t\t\tid: share.id,\n\t\t\t\t\t\t\ttype: OC.Share.SHARE_TYPE_REMOTE\n\t\t\t\t\t\t}]\n\t\t\t\t\t\treturn file\n\t\t\t\t\t})\n\t\t\t\t\t.value()\n\t\t\t\treturn files\n\t\t\t},\n\n\t\t\t/**\n\t\t * Converts the OCS API share response data to a file info\n\t\t * list\n\t\t * @param {Array} data OCS API share array\n\t\t * @param {boolean} sharedWithUser\n\t\t * @returns {Array.<OCA.Sharing.SharedFileInfo>} array of shared file info\n\t\t */\n\t\t\t_makeFilesFromShares: function(data, sharedWithUser) {\n\t\t\t/* jshint camelcase: false */\n\t\t\t\tvar files = data\n\n\t\t\t\tif (this._linksOnly) {\n\t\t\t\t\tfiles = _.filter(data, function(share) {\n\t\t\t\t\t\treturn share.share_type === OC.Share.SHARE_TYPE_LINK\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\t// OCS API uses non-camelcased names\n\t\t\t\tfiles = _.chain(files)\n\t\t\t\t// convert share data to file data\n\t\t\t\t\t.map(function(share) {\n\t\t\t\t\t// TODO: use OC.Files.FileInfo\n\t\t\t\t\t\tvar file = {\n\t\t\t\t\t\t\tid: share.file_source,\n\t\t\t\t\t\t\ticon: OC.MimeType.getIconUrl(share.mimetype),\n\t\t\t\t\t\t\tmimetype: share.mimetype,\n\t\t\t\t\t\t\thasPreview: share.has_preview,\n\t\t\t\t\t\t\ttags: share.tags || []\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (share.item_type === 'folder') {\n\t\t\t\t\t\t\tfile.type = 'dir'\n\t\t\t\t\t\t\tfile.mimetype = 'httpd/unix-directory'\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfile.type = 'file'\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfile.share = {\n\t\t\t\t\t\t\tid: share.id,\n\t\t\t\t\t\t\ttype: share.share_type,\n\t\t\t\t\t\t\ttarget: share.share_with,\n\t\t\t\t\t\t\tstime: share.stime * 1000,\n\t\t\t\t\t\t\texpiration: share.expiration\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (sharedWithUser) {\n\t\t\t\t\t\t\tfile.shareOwner = share.displayname_owner\n\t\t\t\t\t\t\tfile.shareOwnerId = share.uid_owner\n\t\t\t\t\t\t\tfile.name = OC.basename(share.file_target)\n\t\t\t\t\t\t\tfile.path = OC.dirname(share.file_target)\n\t\t\t\t\t\t\tfile.permissions = share.permissions\n\t\t\t\t\t\t\tif (file.path) {\n\t\t\t\t\t\t\t\tfile.extraData = share.file_target\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (share.share_type !== OC.Share.SHARE_TYPE_LINK) {\n\t\t\t\t\t\t\t\tfile.share.targetDisplayName = share.share_with_displayname\n\t\t\t\t\t\t\t\tfile.share.targetShareWithId = share.share_with\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tfile.name = OC.basename(share.path)\n\t\t\t\t\t\t\tfile.path = OC.dirname(share.path)\n\t\t\t\t\t\t\tfile.permissions = OC.PERMISSION_ALL\n\t\t\t\t\t\t\tif (file.path) {\n\t\t\t\t\t\t\t\tfile.extraData = share.path\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn file\n\t\t\t\t\t})\n\t\t\t\t// Group all files and have a \"shares\" array with\n\t\t\t\t// the share info for each file.\n\t\t\t\t//\n\t\t\t\t// This uses a hash memo to cumulate share information\n\t\t\t\t// inside the same file object (by file id).\n\t\t\t\t\t.reduce(function(memo, file) {\n\t\t\t\t\t\tvar data = memo[file.id]\n\t\t\t\t\t\tvar recipient = file.share.targetDisplayName\n\t\t\t\t\t\tvar recipientId = file.share.targetShareWithId\n\t\t\t\t\t\tif (!data) {\n\t\t\t\t\t\t\tdata = memo[file.id] = file\n\t\t\t\t\t\t\tdata.shares = [file.share]\n\t\t\t\t\t\t\t// using a hash to make them unique,\n\t\t\t\t\t\t\t// this is only a list to be displayed\n\t\t\t\t\t\t\tdata.recipients = {}\n\t\t\t\t\t\t\tdata.recipientData = {}\n\t\t\t\t\t\t\t// share types\n\t\t\t\t\t\t\tdata.shareTypes = {}\n\t\t\t\t\t\t\t// counter is cheaper than calling _.keys().length\n\t\t\t\t\t\t\tdata.recipientsCount = 0\n\t\t\t\t\t\t\tdata.mtime = file.share.stime\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t// always take the most recent stime\n\t\t\t\t\t\t\tif (file.share.stime > data.mtime) {\n\t\t\t\t\t\t\t\tdata.mtime = file.share.stime\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdata.shares.push(file.share)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (recipient) {\n\t\t\t\t\t\t// limit counterparts for output\n\t\t\t\t\t\t\tif (data.recipientsCount < 4) {\n\t\t\t\t\t\t\t// only store the first ones, they will be the only ones\n\t\t\t\t\t\t\t// displayed\n\t\t\t\t\t\t\t\tdata.recipients[recipient] = true\n\t\t\t\t\t\t\t\tdata.recipientData[data.recipientsCount] = {\n\t\t\t\t\t\t\t\t\t'shareWith': recipientId,\n\t\t\t\t\t\t\t\t\t'shareWithDisplayName': recipient\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdata.recipientsCount++\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdata.shareTypes[file.share.type] = true\n\n\t\t\t\t\t\tdelete file.share\n\t\t\t\t\t\treturn memo\n\t\t\t\t\t}, {})\n\t\t\t\t// Retrieve only the values of the returned hash\n\t\t\t\t\t.values()\n\t\t\t\t// Clean up\n\t\t\t\t\t.each(function(data) {\n\t\t\t\t\t// convert the recipients map to a flat\n\t\t\t\t\t// array of sorted names\n\t\t\t\t\t\tdata.mountType = 'shared'\n\t\t\t\t\t\tdelete data.recipientsCount\n\t\t\t\t\t\tif (sharedWithUser) {\n\t\t\t\t\t\t// only for outgoing shares\n\t\t\t\t\t\t\tdelete data.shareTypes\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdata.shareTypes = _.keys(data.shareTypes)\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t// Finish the chain by getting the result\n\t\t\t\t\t.value()\n\n\t\t\t\t// Sort by expected sort comparator\n\t\t\t\treturn files.sort(this._sortComparator)\n\t\t\t}\n\t\t})\n\n\t/**\n\t * Share info attributes.\n\t *\n\t * @typedef {Object} OCA.Sharing.ShareInfo\n\t *\n\t * @property {number} id share ID\n\t * @property {number} type share type\n\t * @property {String} target share target, either user name or group name\n\t * @property {number} stime share timestamp in milliseconds\n\t * @property {String} [targetDisplayName] display name of the recipient\n\t * (only when shared with others)\n\t * @property {String} [targetShareWithId] id of the recipient\n\t *\n\t */\n\n\t/**\n\t * Recipient attributes\n\t *\n\t * @typedef {Object} OCA.Sharing.RecipientInfo\n\t * @property {String} shareWith the id of the recipient\n\t * @property {String} shareWithDisplayName the display name of the recipient\n\t */\n\n\t/**\n\t * Shared file info attributes.\n\t *\n\t * @typedef {OCA.Files.FileInfo} OCA.Sharing.SharedFileInfo\n\t *\n\t * @property {Array.<OCA.Sharing.ShareInfo>} shares array of shares for\n\t * this file\n\t * @property {number} mtime most recent share time (if multiple shares)\n\t * @property {String} shareOwner name of the share owner\n\t * @property {Array.<String>} recipients name of the first 4 recipients\n\t * (this is mostly for display purposes)\n\t * @property {Object.<OCA.Sharing.RecipientInfo>} recipientData (as object for easier\n\t * passing to HTML data attributes with jQuery)\n\t */\n\n\tOCA.Sharing.FileList = FileList\n})()\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(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__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }"],"names":["OCA","Sharing","App","_inFileList","_outFileList","_overviewFileList","_pendingFileList","initSharingIn","$el","this","FileList","id","sharedWithUser","fileActions","_createFileActions","config","Files","getFilesConfig","shown","_extendFileList","appName","t","find","html","initSharingOut","initSharingLinks","_linkFileList","linksOnly","initSharingDeleted","_deletedFileList","defaultFileActionsDisabled","showDeleted","_restoreShareAction","initSharingPening","showPending","detailsViewEnabled","_acceptShareAction","initShareingOverview","isOverview","removeSharingIn","$fileList","empty","removeSharingOut","removeSharingLinks","removeSharingDeleted","removeSharingPending","removeSharingOverview","destroy","off","_onActionsUpdated","_globalActionsInitialized","FileActions","registerDefaultActions","merge","_","bind","on","register","OC","PERMISSION_READ","filename","context","setActiveView","silent","fileList","changeDirectory","joinPaths","$file","attr","setDefault","registerAction","name","displayName","altText","mime","permissions","PERMISSION_ALL","iconClass","type","TYPE_INLINE","actionHandler","fileName","shareId","data","$","post","linkToOCS","success","result","remove","fileInfoModel","attributes","fail","Notification","showTemporary","shareBase","shouldRender","parseInt","Share","SHARE_TYPE_REMOTE_GROUP","ajax","url","ev","each","list","action","defaultAction","fileSummary","window","addEventListener","e","target","options","initialize","prototype","extend","_sharedWithUser","_linksOnly","_showDeleted","_showPending","_clientSideSort","_allowSelection","_isOverview","apply","arguments","initialized","_renderRow","_createRow","fileData","$tr","before","children","pluck","shares","join","shareOwner","permission","PERMISSION_DELETE","remoteId","shareType","expirationTimestamp","expiration","moment","valueOf","formatted","text","modifiedColor","Math","round","Date","getTime","Util","formatDate","relativeModifiedDate","td","append","tooltip","placement","setSharedWithUser","state","updateEmptyContent","dir","getCurrentDirectory","toggleClass","isEmpty","addClass","getDirectoryPermissions","updateStorageStatistics","updateRow","fileInfo","reload","showMask","_reloadCall","abort","_setCurrentDir","promises","deletedShares","format","include_tags","beforeSend","xhr","setRequestHeader","pendingShares","pendingRemoteShares","shared_with_me","remoteShares","push","when","callBack","reloadCallback","then","additionalShares","hideMask","files","ocs","concat","_makeFilesFromShares","_makeFilesFromRemoteShares","setFiles","chain","map","share","file","owner","remote","replace","basename","mountpoint","mtime","mimetype","share_type","SHARE_TYPE_REMOTE","file_id","path","dirname","tags","remote_id","accepted","shareOwnerId","value","filter","SHARE_TYPE_LINK","file_source","icon","MimeType","getIconUrl","hasPreview","has_preview","item_type","share_with","stime","displayname_owner","uid_owner","file_target","extraData","targetDisplayName","share_with_displayname","targetShareWithId","reduce","memo","recipient","recipientId","recipients","recipientData","shareTypes","recipientsCount","values","mountType","keys","sort","_sortComparator","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","n","getter","__esModule","d","a","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","hasOwnProperty","call"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"files_sharing-files_sharing.js?v=22bff80a3da4b2dd754e","mappings":"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","sources":["webpack:///nextcloud/apps/files_sharing/js/app.js","webpack:///nextcloud/apps/files_sharing/js/sharedfilelist.js","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand"],"sourcesContent":["/**\n * Copyright (c) 2014 Vincent Petry <pvince81@owncloud.com>\n *\n * This file is licensed under the Affero General Public License version 3\n * or later.\n *\n * See the COPYING-README file.\n *\n */\n\nif (!OCA.Sharing) {\n\t/**\n\t * @namespace OCA.Sharing\n\t */\n\tOCA.Sharing = {}\n}\n\n/**\n * @namespace\n */\nOCA.Sharing.App = {\n\n\t_inFileList: null,\n\t_outFileList: null,\n\t_overviewFileList: null,\n\t_pendingFileList: null,\n\n\tinitSharingIn($el) {\n\t\tif (this._inFileList) {\n\t\t\treturn this._inFileList\n\t\t}\n\n\t\tthis._inFileList = new OCA.Sharing.FileList(\n\t\t\t$el,\n\t\t\t{\n\t\t\t\tid: 'shares.self',\n\t\t\t\tsharedWithUser: true,\n\t\t\t\tfileActions: this._createFileActions(),\n\t\t\t\tconfig: OCA.Files.App.getFilesConfig(),\n\t\t\t\t// The file list is created when a \"show\" event is handled, so\n\t\t\t\t// it should be marked as \"shown\" like it would have been done\n\t\t\t\t// if handling the event with the file list already created.\n\t\t\t\tshown: true,\n\t\t\t}\n\t\t)\n\n\t\tthis._extendFileList(this._inFileList)\n\t\tthis._inFileList.appName = t('files_sharing', 'Shared with you')\n\t\tthis._inFileList.$el.find('.emptyfilelist.emptycontent').html('<div class=\"icon-shared\"></div>'\n\t\t\t+ '<h2>' + t('files_sharing', 'Nothing shared with you yet') + '</h2>'\n\t\t\t+ '<p>' + t('files_sharing', 'Files and folders others share with you will show up here') + '</p>')\n\t\treturn this._inFileList\n\t},\n\n\tinitSharingOut($el) {\n\t\tif (this._outFileList) {\n\t\t\treturn this._outFileList\n\t\t}\n\t\tthis._outFileList = new OCA.Sharing.FileList(\n\t\t\t$el,\n\t\t\t{\n\t\t\t\tid: 'shares.others',\n\t\t\t\tsharedWithUser: false,\n\t\t\t\tfileActions: this._createFileActions(),\n\t\t\t\tconfig: OCA.Files.App.getFilesConfig(),\n\t\t\t\t// The file list is created when a \"show\" event is handled, so\n\t\t\t\t// it should be marked as \"shown\" like it would have been done\n\t\t\t\t// if handling the event with the file list already created.\n\t\t\t\tshown: true,\n\t\t\t}\n\t\t)\n\n\t\tthis._extendFileList(this._outFileList)\n\t\tthis._outFileList.appName = t('files_sharing', 'Shared with others')\n\t\tthis._outFileList.$el.find('.emptyfilelist.emptycontent').html('<div class=\"icon-shared\"></div>'\n\t\t\t+ '<h2>' + t('files_sharing', 'Nothing shared yet') + '</h2>'\n\t\t\t+ '<p>' + t('files_sharing', 'Files and folders you share will show up here') + '</p>')\n\t\treturn this._outFileList\n\t},\n\n\tinitSharingLinks($el) {\n\t\tif (this._linkFileList) {\n\t\t\treturn this._linkFileList\n\t\t}\n\t\tthis._linkFileList = new OCA.Sharing.FileList(\n\t\t\t$el,\n\t\t\t{\n\t\t\t\tid: 'shares.link',\n\t\t\t\tlinksOnly: true,\n\t\t\t\tfileActions: this._createFileActions(),\n\t\t\t\tconfig: OCA.Files.App.getFilesConfig(),\n\t\t\t\t// The file list is created when a \"show\" event is handled, so\n\t\t\t\t// it should be marked as \"shown\" like it would have been done\n\t\t\t\t// if handling the event with the file list already created.\n\t\t\t\tshown: true,\n\t\t\t}\n\t\t)\n\n\t\tthis._extendFileList(this._linkFileList)\n\t\tthis._linkFileList.appName = t('files_sharing', 'Shared by link')\n\t\tthis._linkFileList.$el.find('.emptyfilelist.emptycontent').html('<div class=\"icon-public\"></div>'\n\t\t\t+ '<h2>' + t('files_sharing', 'No shared links') + '</h2>'\n\t\t\t+ '<p>' + t('files_sharing', 'Files and folders you share by link will show up here') + '</p>')\n\t\treturn this._linkFileList\n\t},\n\n\tinitSharingDeleted($el) {\n\t\tif (this._deletedFileList) {\n\t\t\treturn this._deletedFileList\n\t\t}\n\t\tthis._deletedFileList = new OCA.Sharing.FileList(\n\t\t\t$el,\n\t\t\t{\n\t\t\t\tid: 'shares.deleted',\n\t\t\t\tdefaultFileActionsDisabled: true,\n\t\t\t\tshowDeleted: true,\n\t\t\t\tsharedWithUser: true,\n\t\t\t\tfileActions: this._restoreShareAction(),\n\t\t\t\tconfig: OCA.Files.App.getFilesConfig(),\n\t\t\t\t// The file list is created when a \"show\" event is handled, so\n\t\t\t\t// it should be marked as \"shown\" like it would have been done\n\t\t\t\t// if handling the event with the file list already created.\n\t\t\t\tshown: true,\n\t\t\t}\n\t\t)\n\n\t\tthis._extendFileList(this._deletedFileList)\n\t\tthis._deletedFileList.appName = t('files_sharing', 'Deleted shares')\n\t\tthis._deletedFileList.$el.find('.emptyfilelist.emptycontent').html('<div class=\"icon-share\"></div>'\n\t\t\t+ '<h2>' + t('files_sharing', 'No deleted shares') + '</h2>'\n\t\t\t+ '<p>' + t('files_sharing', 'Shares you deleted will show up here') + '</p>')\n\t\treturn this._deletedFileList\n\t},\n\n\tinitSharingPening($el) {\n\t\tif (this._pendingFileList) {\n\t\t\treturn this._pendingFileList\n\t\t}\n\t\tthis._pendingFileList = new OCA.Sharing.FileList(\n\t\t\t$el,\n\t\t\t{\n\t\t\t\tid: 'shares.pending',\n\t\t\t\tshowPending: true,\n\t\t\t\tdetailsViewEnabled: false,\n\t\t\t\tdefaultFileActionsDisabled: true,\n\t\t\t\tsharedWithUser: true,\n\t\t\t\tfileActions: this._acceptShareAction(),\n\t\t\t\tconfig: OCA.Files.App.getFilesConfig(),\n\t\t\t\t// The file list is created when a \"show\" event is handled, so\n\t\t\t\t// it should be marked as \"shown\" like it would have been done\n\t\t\t\t// if handling the event with the file list already created.\n\t\t\t\tshown: true,\n\t\t\t}\n\t\t)\n\n\t\tthis._extendFileList(this._pendingFileList)\n\t\tthis._pendingFileList.appName = t('files_sharing', 'Pending shares')\n\t\tthis._pendingFileList.$el.find('.emptyfilelist.emptycontent').html('<div class=\"icon-share\"></div>'\n\t\t\t+ '<h2>' + t('files_sharing', 'No pending shares') + '</h2>'\n\t\t\t+ '<p>' + t('files_sharing', 'Shares you have received but not confirmed will show up here') + '</p>')\n\t\treturn this._pendingFileList\n\t},\n\n\tinitShareingOverview($el) {\n\t\tif (this._overviewFileList) {\n\t\t\treturn this._overviewFileList\n\t\t}\n\t\tthis._overviewFileList = new OCA.Sharing.FileList(\n\t\t\t$el,\n\t\t\t{\n\t\t\t\tid: 'shares.overview',\n\t\t\t\tfileActions: this._createFileActions(),\n\t\t\t\tconfig: OCA.Files.App.getFilesConfig(),\n\t\t\t\tisOverview: true,\n\t\t\t\t// The file list is created when a \"show\" event is handled, so\n\t\t\t\t// it should be marked as \"shown\" like it would have been done\n\t\t\t\t// if handling the event with the file list already created.\n\t\t\t\tshown: true,\n\t\t\t}\n\t\t)\n\n\t\tthis._extendFileList(this._overviewFileList)\n\t\tthis._overviewFileList.appName = t('files_sharing', 'Shares')\n\t\tthis._overviewFileList.$el.find('.emptyfilelist.emptycontent').html('<div class=\"icon-share\"></div>'\n\t\t\t+ '<h2>' + t('files_sharing', 'No shares') + '</h2>'\n\t\t\t+ '<p>' + t('files_sharing', 'Shares will show up here') + '</p>')\n\t\treturn this._overviewFileList\n\t},\n\n\tremoveSharingIn() {\n\t\tif (this._inFileList) {\n\t\t\tthis._inFileList.$fileList.empty()\n\t\t}\n\t},\n\n\tremoveSharingOut() {\n\t\tif (this._outFileList) {\n\t\t\tthis._outFileList.$fileList.empty()\n\t\t}\n\t},\n\n\tremoveSharingLinks() {\n\t\tif (this._linkFileList) {\n\t\t\tthis._linkFileList.$fileList.empty()\n\t\t}\n\t},\n\n\tremoveSharingDeleted() {\n\t\tif (this._deletedFileList) {\n\t\t\tthis._deletedFileList.$fileList.empty()\n\t\t}\n\t},\n\n\tremoveSharingPending() {\n\t\tif (this._pendingFileList) {\n\t\t\tthis._pendingFileList.$fileList.empty()\n\t\t}\n\t},\n\n\tremoveSharingOverview() {\n\t\tif (this._overviewFileList) {\n\t\t\tthis._overviewFileList.$fileList.empty()\n\t\t}\n\t},\n\n\t/**\n\t * Destroy the app\n\t */\n\tdestroy() {\n\t\tOCA.Files.fileActions.off('setDefault.app-sharing', this._onActionsUpdated)\n\t\tOCA.Files.fileActions.off('registerAction.app-sharing', this._onActionsUpdated)\n\t\tthis.removeSharingIn()\n\t\tthis.removeSharingOut()\n\t\tthis.removeSharingLinks()\n\t\tthis._inFileList = null\n\t\tthis._outFileList = null\n\t\tthis._linkFileList = null\n\t\tthis._overviewFileList = null\n\t\tdelete this._globalActionsInitialized\n\t},\n\n\t_createFileActions() {\n\t\t// inherit file actions from the files app\n\t\tconst fileActions = new OCA.Files.FileActions()\n\t\t// note: not merging the legacy actions because legacy apps are not\n\t\t// compatible with the sharing overview and need to be adapted first\n\t\tfileActions.registerDefaultActions()\n\t\tfileActions.merge(OCA.Files.fileActions)\n\n\t\tif (!this._globalActionsInitialized) {\n\t\t\t// in case actions are registered later\n\t\t\tthis._onActionsUpdated = _.bind(this._onActionsUpdated, this)\n\t\t\tOCA.Files.fileActions.on('setDefault.app-sharing', this._onActionsUpdated)\n\t\t\tOCA.Files.fileActions.on('registerAction.app-sharing', this._onActionsUpdated)\n\t\t\tthis._globalActionsInitialized = true\n\t\t}\n\n\t\t// when the user clicks on a folder, redirect to the corresponding\n\t\t// folder in the files app instead of opening it directly\n\t\tfileActions.register('dir', 'Open', OC.PERMISSION_READ, '', function(filename, context) {\n\t\t\tOCA.Files.App.setActiveView('files', { silent: true })\n\t\t\tOCA.Files.App.fileList.changeDirectory(OC.joinPaths(context.$file.attr('data-path'), filename), true, true)\n\t\t})\n\t\tfileActions.setDefault('dir', 'Open')\n\t\treturn fileActions\n\t},\n\n\t_restoreShareAction() {\n\t\tconst fileActions = new OCA.Files.FileActions()\n\t\tfileActions.registerAction({\n\t\t\tname: 'Restore',\n\t\t\tdisplayName: t('files_sharing', 'Restore'),\n\t\t\taltText: t('files_sharing', 'Restore share'),\n\t\t\tmime: 'all',\n\t\t\tpermissions: OC.PERMISSION_ALL,\n\t\t\ticonClass: 'icon-history',\n\t\t\ttype: OCA.Files.FileActions.TYPE_INLINE,\n\t\t\tactionHandler(fileName, context) {\n\t\t\t\tconst shareId = context.$file.data('shareId')\n\t\t\t\t$.post(OC.linkToOCS('apps/files_sharing/api/v1/deletedshares', 2) + shareId)\n\t\t\t\t\t.success(function(result) {\n\t\t\t\t\t\tcontext.fileList.remove(context.fileInfoModel.attributes.name)\n\t\t\t\t\t}).fail(function() {\n\t\t\t\t\t\tOC.Notification.showTemporary(t('files_sharing', 'Something happened. Unable to restore the share.'))\n\t\t\t\t\t})\n\t\t\t},\n\t\t})\n\t\treturn fileActions\n\t},\n\n\t_acceptShareAction() {\n\t\tconst fileActions = new OCA.Files.FileActions()\n\t\tfileActions.registerAction({\n\t\t\tname: 'Accept share',\n\t\t\tdisplayName: t('files_sharing', 'Accept share'),\n\t\t\tmime: 'all',\n\t\t\tpermissions: OC.PERMISSION_ALL,\n\t\t\ticonClass: 'icon-checkmark',\n\t\t\ttype: OCA.Files.FileActions.TYPE_INLINE,\n\t\t\tactionHandler(fileName, context) {\n\t\t\t\tconst shareId = context.$file.data('shareId')\n\t\t\t\tlet shareBase = 'shares/pending'\n\t\t\t\tif (context.$file.attr('data-remote-id')) {\n\t\t\t\t\tshareBase = 'remote_shares/pending'\n\t\t\t\t}\n\t\t\t\t$.post(OC.linkToOCS('apps/files_sharing/api/v1/' + shareBase, 2) + shareId)\n\t\t\t\t\t.success(function(result) {\n\t\t\t\t\t\tcontext.fileList.remove(context.fileInfoModel.attributes.name)\n\t\t\t\t\t}).fail(function() {\n\t\t\t\t\t\tOC.Notification.showTemporary(t('files_sharing', 'Something happened. Unable to accept the share.'))\n\t\t\t\t\t})\n\t\t\t},\n\t\t})\n\t\tfileActions.registerAction({\n\t\t\tname: 'Reject share',\n\t\t\tdisplayName: t('files_sharing', 'Reject share'),\n\t\t\tmime: 'all',\n\t\t\tpermissions: OC.PERMISSION_ALL,\n\t\t\ticonClass: 'icon-close',\n\t\t\ttype: OCA.Files.FileActions.TYPE_INLINE,\n\t\t\tshouldRender(context) {\n\t\t\t\t// disable rejecting group shares from the pending list because they anyway\n\t\t\t\t// land back into that same list\n\t\t\t\tif (context.$file.attr('data-remote-id') && parseInt(context.$file.attr('data-share-type'), 10) === OC.Share.SHARE_TYPE_REMOTE_GROUP) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\treturn true\n\t\t\t},\n\t\t\tactionHandler(fileName, context) {\n\t\t\t\tconst shareId = context.$file.data('shareId')\n\t\t\t\tlet shareBase = 'shares'\n\t\t\t\tif (context.$file.attr('data-remote-id')) {\n\t\t\t\t\tshareBase = 'remote_shares'\n\t\t\t\t}\n\n\t\t\t\t$.ajax({\n\t\t\t\t\turl: OC.linkToOCS('apps/files_sharing/api/v1/' + shareBase, 2) + shareId,\n\t\t\t\t\ttype: 'DELETE',\n\t\t\t\t}).success(function(result) {\n\t\t\t\t\tcontext.fileList.remove(context.fileInfoModel.attributes.name)\n\t\t\t\t}).fail(function() {\n\t\t\t\t\tOC.Notification.showTemporary(t('files_sharing', 'Something happened. Unable to reject the share.'))\n\t\t\t\t})\n\t\t\t},\n\t\t})\n\t\treturn fileActions\n\t},\n\n\t_onActionsUpdated(ev) {\n\t\t_.each([this._inFileList, this._outFileList, this._linkFileList], function(list) {\n\t\t\tif (!list) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (ev.action) {\n\t\t\t\tlist.fileActions.registerAction(ev.action)\n\t\t\t} else if (ev.defaultAction) {\n\t\t\t\tlist.fileActions.setDefault(\n\t\t\t\t\tev.defaultAction.mime,\n\t\t\t\t\tev.defaultAction.name\n\t\t\t\t)\n\t\t\t}\n\t\t})\n\t},\n\n\t_extendFileList(fileList) {\n\t\t// remove size column from summary\n\t\tfileList.fileSummary.$el.find('.filesize').remove()\n\t},\n}\n\nwindow.addEventListener('DOMContentLoaded', function() {\n\t$('#app-content-sharingin').on('show', function(e) {\n\t\tOCA.Sharing.App.initSharingIn($(e.target))\n\t})\n\t$('#app-content-sharingin').on('hide', function() {\n\t\tOCA.Sharing.App.removeSharingIn()\n\t})\n\t$('#app-content-sharingout').on('show', function(e) {\n\t\tOCA.Sharing.App.initSharingOut($(e.target))\n\t})\n\t$('#app-content-sharingout').on('hide', function() {\n\t\tOCA.Sharing.App.removeSharingOut()\n\t})\n\t$('#app-content-sharinglinks').on('show', function(e) {\n\t\tOCA.Sharing.App.initSharingLinks($(e.target))\n\t})\n\t$('#app-content-sharinglinks').on('hide', function() {\n\t\tOCA.Sharing.App.removeSharingLinks()\n\t})\n\t$('#app-content-deletedshares').on('show', function(e) {\n\t\tOCA.Sharing.App.initSharingDeleted($(e.target))\n\t})\n\t$('#app-content-deletedshares').on('hide', function() {\n\t\tOCA.Sharing.App.removeSharingDeleted()\n\t})\n\t$('#app-content-pendingshares').on('show', function(e) {\n\t\tOCA.Sharing.App.initSharingPening($(e.target))\n\t})\n\t$('#app-content-pendingshares').on('hide', function() {\n\t\tOCA.Sharing.App.removeSharingPending()\n\t})\n\t$('#app-content-shareoverview').on('show', function(e) {\n\t\tOCA.Sharing.App.initShareingOverview($(e.target))\n\t})\n\t$('#app-content-shareoverview').on('hide', function() {\n\t\tOCA.Sharing.App.removeSharingOverview()\n\t})\n})\n","/* eslint-disable */\n/*\n * Copyright (c) 2014 Vincent Petry <pvince81@owncloud.com>\n *\n * This file is licensed under the Affero General Public License version 3\n * or later.\n *\n * See the COPYING-README file.\n *\n */\n(function() {\n\n\t/**\n\t * @class OCA.Sharing.FileList\n\t * @augments OCA.Files.FileList\n\t *\n\t * @classdesc Sharing file list.\n\t * Contains both \"shared with others\" and \"shared with you\" modes.\n\t *\n\t * @param $el container element with existing markup for the .files-controls\n\t * and a table\n\t * @param [options] map of options, see other parameters\n\t * @param {boolean} [options.sharedWithUser] true to return files shared with\n\t * the current user, false to return files that the user shared with others.\n\t * Defaults to false.\n\t * @param {boolean} [options.linksOnly] true to return only link shares\n\t */\n\tvar FileList = function($el, options) {\n\t\tthis.initialize($el, options)\n\t}\n\tFileList.prototype = _.extend({}, OCA.Files.FileList.prototype,\n\t\t/** @lends OCA.Sharing.FileList.prototype */ {\n\t\t\tappName: 'Shares',\n\n\t\t\t/**\n\t\t * Whether the list shows the files shared with the user (true) or\n\t\t * the files that the user shared with others (false).\n\t\t */\n\t\t\t_sharedWithUser: false,\n\t\t\t_linksOnly: false,\n\t\t\t_showDeleted: false,\n\t\t\t_showPending: false,\n\t\t\t_clientSideSort: true,\n\t\t\t_allowSelection: false,\n\t\t\t_isOverview: false,\n\n\t\t\t/**\n\t\t * @private\n\t\t */\n\t\t\tinitialize: function($el, options) {\n\t\t\t\tOCA.Files.FileList.prototype.initialize.apply(this, arguments)\n\t\t\t\tif (this.initialized) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\t// TODO: consolidate both options\n\t\t\t\tif (options && options.sharedWithUser) {\n\t\t\t\t\tthis._sharedWithUser = true\n\t\t\t\t}\n\t\t\t\tif (options && options.linksOnly) {\n\t\t\t\t\tthis._linksOnly = true\n\t\t\t\t}\n\t\t\t\tif (options && options.showDeleted) {\n\t\t\t\t\tthis._showDeleted = true\n\t\t\t\t}\n\t\t\t\tif (options && options.showPending) {\n\t\t\t\t\tthis._showPending = true\n\t\t\t\t}\n\t\t\t\tif (options && options.isOverview) {\n\t\t\t\t\tthis._isOverview = true\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t_renderRow: function() {\n\t\t\t// HACK: needed to call the overridden _renderRow\n\t\t\t// this is because at the time this class is created\n\t\t\t// the overriding hasn't been done yet...\n\t\t\t\treturn OCA.Files.FileList.prototype._renderRow.apply(this, arguments)\n\t\t\t},\n\n\t\t\t_createRow: function(fileData) {\n\t\t\t// TODO: hook earlier and render the whole row here\n\t\t\t\tvar $tr = OCA.Files.FileList.prototype._createRow.apply(this, arguments)\n\t\t\t\t$tr.find('.filesize').remove()\n\t\t\t\t$tr.find('td.date').before($tr.children('td:first'))\n\t\t\t\t$tr.find('td.filename input:checkbox').remove()\n\t\t\t\t$tr.attr('data-share-id', _.pluck(fileData.shares, 'id').join(','))\n\t\t\t\tif (this._sharedWithUser) {\n\t\t\t\t\t$tr.attr('data-share-owner', fileData.shareOwner)\n\t\t\t\t\t$tr.attr('data-mounttype', 'shared-root')\n\t\t\t\t\tvar permission = parseInt($tr.attr('data-permissions')) | OC.PERMISSION_DELETE\n\t\t\t\t\t$tr.attr('data-permissions', permission)\n\t\t\t\t}\n\t\t\t\tif (this._showDeleted || this._showPending) {\n\t\t\t\t\tvar permission = fileData.permissions\n\t\t\t\t\t$tr.attr('data-share-permissions', permission)\n\t\t\t\t}\n\n\t\t\t\tif (fileData.remoteId) {\n\t\t\t\t\t$tr.attr('data-remote-id', fileData.remoteId)\n\t\t\t\t}\n\n\t\t\t\tif (fileData.shareType) {\n\t\t\t\t\t$tr.attr('data-share-type', fileData.shareType)\n\t\t\t\t}\n\n\t\t\t\t// add row with expiration date for link only shares - influenced by _createRow of filelist\n\t\t\t\tif (this._linksOnly) {\n\t\t\t\t\tvar expirationTimestamp = 0\n\t\t\t\t\tif (fileData.shares && fileData.shares[0].expiration !== null) {\n\t\t\t\t\t\texpirationTimestamp = moment(fileData.shares[0].expiration).valueOf()\n\t\t\t\t\t}\n\t\t\t\t\t$tr.attr('data-expiration', expirationTimestamp)\n\n\t\t\t\t\t// date column (1000 milliseconds to seconds, 60 seconds, 60 minutes, 24 hours)\n\t\t\t\t\t// difference in days multiplied by 5 - brightest shade for expiry dates in more than 32 days (160/5)\n\t\t\t\t\tvar modifiedColor = Math.round((expirationTimestamp - (new Date()).getTime()) / 1000 / 60 / 60 / 24 * 5)\n\t\t\t\t\t// ensure that the brightest color is still readable\n\t\t\t\t\tif (modifiedColor >= 160) {\n\t\t\t\t\t\tmodifiedColor = 160\n\t\t\t\t\t}\n\n\t\t\t\t\tvar formatted\n\t\t\t\t\tvar text\n\t\t\t\t\tif (expirationTimestamp > 0) {\n\t\t\t\t\t\tformatted = OC.Util.formatDate(expirationTimestamp)\n\t\t\t\t\t\ttext = OC.Util.relativeModifiedDate(expirationTimestamp)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tformatted = t('files_sharing', 'No expiration date set')\n\t\t\t\t\t\ttext = ''\n\t\t\t\t\t\tmodifiedColor = 160\n\t\t\t\t\t}\n\t\t\t\t\ttd = $('<td></td>').attr({ 'class': 'date' })\n\t\t\t\t\ttd.append($('<span></span>').attr({\n\t\t\t\t\t\t'class': 'modified',\n\t\t\t\t\t\t'title': formatted,\n\t\t\t\t\t\t'style': 'color:rgb(' + modifiedColor + ',' + modifiedColor + ',' + modifiedColor + ')'\n\t\t\t\t\t}).text(text)\n\t\t\t\t\t\t.tooltip({ placement: 'top' })\n\t\t\t\t\t)\n\n\t\t\t\t\t$tr.append(td)\n\t\t\t\t}\n\t\t\t\treturn $tr\n\t\t\t},\n\n\t\t\t/**\n\t\t * Set whether the list should contain outgoing shares\n\t\t * or incoming shares.\n\t\t *\n\t\t * @param state true for incoming shares, false otherwise\n\t\t */\n\t\t\tsetSharedWithUser: function(state) {\n\t\t\t\tthis._sharedWithUser = !!state\n\t\t\t},\n\n\t\t\tupdateEmptyContent: function() {\n\t\t\t\tvar dir = this.getCurrentDirectory()\n\t\t\t\tif (dir === '/') {\n\t\t\t\t// root has special permissions\n\t\t\t\t\tthis.$el.find('.emptyfilelist.emptycontent').toggleClass('hidden', !this.isEmpty)\n\t\t\t\t\tthis.$el.find('.files-filestable thead th').toggleClass('hidden', this.isEmpty)\n\n\t\t\t\t\t// hide expiration date header for non link only shares\n\t\t\t\t\tif (!this._linksOnly) {\n\t\t\t\t\t\tthis.$el.find('th.column-expiration').addClass('hidden')\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tOCA.Files.FileList.prototype.updateEmptyContent.apply(this, arguments)\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tgetDirectoryPermissions: function() {\n\t\t\t\treturn OC.PERMISSION_READ | OC.PERMISSION_DELETE\n\t\t\t},\n\n\t\t\tupdateStorageStatistics: function() {\n\t\t\t// no op because it doesn't have\n\t\t\t// storage info like free space / used space\n\t\t\t},\n\n\t\t\tupdateRow: function($tr, fileInfo, options) {\n\t\t\t// no-op, suppress re-rendering\n\t\t\t\treturn $tr\n\t\t\t},\n\n\t\t\treload: function() {\n\t\t\t\tthis.showMask()\n\t\t\t\tif (this._reloadCall) {\n\t\t\t\t\tthis._reloadCall.abort()\n\t\t\t\t}\n\n\t\t\t\t// there is only root\n\t\t\t\tthis._setCurrentDir('/', false)\n\n\t\t\t\tvar promises = []\n\n\t\t\t\tvar deletedShares = {\n\t\t\t\t\turl: OC.linkToOCS('apps/files_sharing/api/v1', 2) + 'deletedshares',\n\t\t\t\t\t/* jshint camelcase: false */\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tformat: 'json',\n\t\t\t\t\t\tinclude_tags: true\n\t\t\t\t\t},\n\t\t\t\t\ttype: 'GET',\n\t\t\t\t\tbeforeSend: function(xhr) {\n\t\t\t\t\t\txhr.setRequestHeader('OCS-APIREQUEST', 'true')\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar pendingShares = {\n\t\t\t\t\turl: OC.linkToOCS('apps/files_sharing/api/v1/shares', 2) + 'pending',\n\t\t\t\t\t/* jshint camelcase: false */\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tformat: 'json'\n\t\t\t\t\t},\n\t\t\t\t\ttype: 'GET',\n\t\t\t\t\tbeforeSend: function(xhr) {\n\t\t\t\t\t\txhr.setRequestHeader('OCS-APIREQUEST', 'true')\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar pendingRemoteShares = {\n\t\t\t\t\turl: OC.linkToOCS('apps/files_sharing/api/v1/remote_shares', 2) + 'pending',\n\t\t\t\t\t/* jshint camelcase: false */\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tformat: 'json'\n\t\t\t\t\t},\n\t\t\t\t\ttype: 'GET',\n\t\t\t\t\tbeforeSend: function(xhr) {\n\t\t\t\t\t\txhr.setRequestHeader('OCS-APIREQUEST', 'true')\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar shares = {\n\t\t\t\t\turl: OC.linkToOCS('apps/files_sharing/api/v1') + 'shares',\n\t\t\t\t\t/* jshint camelcase: false */\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tformat: 'json',\n\t\t\t\t\t\tshared_with_me: this._sharedWithUser !== false,\n\t\t\t\t\t\tinclude_tags: true\n\t\t\t\t\t},\n\t\t\t\t\ttype: 'GET',\n\t\t\t\t\tbeforeSend: function(xhr) {\n\t\t\t\t\t\txhr.setRequestHeader('OCS-APIREQUEST', 'true')\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar remoteShares = {\n\t\t\t\t\turl: OC.linkToOCS('apps/files_sharing/api/v1') + 'remote_shares',\n\t\t\t\t\t/* jshint camelcase: false */\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tformat: 'json',\n\t\t\t\t\t\tinclude_tags: true\n\t\t\t\t\t},\n\t\t\t\t\ttype: 'GET',\n\t\t\t\t\tbeforeSend: function(xhr) {\n\t\t\t\t\t\txhr.setRequestHeader('OCS-APIREQUEST', 'true')\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Add the proper ajax requests to the list and run them\n\t\t\t\t// and make sure we have 2 promises\n\t\t\t\tif (this._showDeleted) {\n\t\t\t\t\tpromises.push($.ajax(deletedShares))\n\t\t\t\t} else if (this._showPending) {\n\t\t\t\t\tpromises.push($.ajax(pendingShares))\n\t\t\t\t\tpromises.push($.ajax(pendingRemoteShares))\n\t\t\t\t} else {\n\t\t\t\t\tpromises.push($.ajax(shares))\n\n\t\t\t\t\tif (this._sharedWithUser !== false || this._isOverview) {\n\t\t\t\t\t\tpromises.push($.ajax(remoteShares))\n\t\t\t\t\t}\n\t\t\t\t\tif (this._isOverview) {\n\t\t\t\t\t\tshares.data.shared_with_me = !shares.data.shared_with_me\n\t\t\t\t\t\tpromises.push($.ajax(shares))\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis._reloadCall = $.when.apply($, promises)\n\t\t\t\tvar callBack = this.reloadCallback.bind(this)\n\t\t\t\treturn this._reloadCall.then(callBack, callBack)\n\t\t\t},\n\n\t\t\treloadCallback: function(shares, remoteShares, additionalShares) {\n\t\t\t\tdelete this._reloadCall\n\t\t\t\tthis.hideMask()\n\n\t\t\t\tthis.$el.find('#headerSharedWith').text(\n\t\t\t\t\tt('files_sharing', this._sharedWithUser ? 'Shared by' : 'Shared with')\n\t\t\t\t)\n\n\t\t\t\tvar files = []\n\n\t\t\t\t// make sure to use the same format\n\t\t\t\tif (shares[0] && shares[0].ocs) {\n\t\t\t\t\tshares = shares[0]\n\t\t\t\t}\n\t\t\t\tif (remoteShares && remoteShares[0] && remoteShares[0].ocs) {\n\t\t\t\t\tremoteShares = remoteShares[0]\n\t\t\t\t}\n\t\t\t\tif (additionalShares && additionalShares[0] && additionalShares[0].ocs) {\n\t\t\t\t\tadditionalShares = additionalShares[0]\n\t\t\t\t}\n\n\t\t\t\tif (shares.ocs && shares.ocs.data) {\n\t\t\t\t\tfiles = files.concat(this._makeFilesFromShares(shares.ocs.data, this._sharedWithUser))\n\t\t\t\t}\n\n\t\t\t\tif (remoteShares && remoteShares.ocs && remoteShares.ocs.data) {\n\t\t\t\t\tfiles = files.concat(this._makeFilesFromRemoteShares(remoteShares.ocs.data))\n\t\t\t\t}\n\n\t\t\t\tif (additionalShares && additionalShares.ocs && additionalShares.ocs.data) {\n\t\t\t\t\tif (this._showPending) {\n\t\t\t\t\t\t// in this case the second callback is about pending remote shares\n\t\t\t\t\t\tfiles = files.concat(this._makeFilesFromRemoteShares(additionalShares.ocs.data))\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfiles = files.concat(this._makeFilesFromShares(additionalShares.ocs.data, !this._sharedWithUser))\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.setFiles(files)\n\t\t\t\treturn true\n\t\t\t},\n\n\t\t\t_makeFilesFromRemoteShares: function(data) {\n\t\t\t\tvar files = data\n\n\t\t\t\tfiles = _.chain(files)\n\t\t\t\t// convert share data to file data\n\t\t\t\t\t.map(function(share) {\n\t\t\t\t\t\tvar file = {\n\t\t\t\t\t\t\tshareOwner: share.owner + '@' + share.remote.replace(/.*?:\\/\\//g, ''),\n\t\t\t\t\t\t\tname: OC.basename(share.mountpoint),\n\t\t\t\t\t\t\tmtime: share.mtime * 1000,\n\t\t\t\t\t\t\tmimetype: share.mimetype,\n\t\t\t\t\t\t\ttype: share.type,\n\t\t\t\t\t\t\t// remote share types are different and need to be mapped\n\t\t\t\t\t\t\tshareType: (parseInt(share.share_type, 10) === 1) ? OC.Share.SHARE_TYPE_REMOTE_GROUP : OC.Share.SHARE_TYPE_REMOTE,\n\t\t\t\t\t\t\tid: share.file_id,\n\t\t\t\t\t\t\tpath: OC.dirname(share.mountpoint),\n\t\t\t\t\t\t\tpermissions: share.permissions,\n\t\t\t\t\t\t\ttags: share.tags || []\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (share.remote_id) {\n\t\t\t\t\t\t\t// remote share\n\t\t\t\t\t\t\tif (share.accepted !== '1') {\n\t\t\t\t\t\t\t\tfile.name = OC.basename(share.name)\n\t\t\t\t\t\t\t\tfile.path = '/'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tfile.remoteId = share.remote_id\n\t\t\t\t\t\t\tfile.shareOwnerId = share.owner\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!file.mimetype) {\n\t\t\t\t\t\t\t// pending shares usually have no type, so default to showing a directory icon\n\t\t\t\t\t\t\tfile.mimetype = 'dir-shared'\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfile.shares = [{\n\t\t\t\t\t\t\tid: share.id,\n\t\t\t\t\t\t\ttype: OC.Share.SHARE_TYPE_REMOTE\n\t\t\t\t\t\t}]\n\t\t\t\t\t\treturn file\n\t\t\t\t\t})\n\t\t\t\t\t.value()\n\t\t\t\treturn files\n\t\t\t},\n\n\t\t\t/**\n\t\t * Converts the OCS API share response data to a file info\n\t\t * list\n\t\t * @param {Array} data OCS API share array\n\t\t * @param {boolean} sharedWithUser\n\t\t * @returns {Array.<OCA.Sharing.SharedFileInfo>} array of shared file info\n\t\t */\n\t\t\t_makeFilesFromShares: function(data, sharedWithUser) {\n\t\t\t/* jshint camelcase: false */\n\t\t\t\tvar files = data\n\n\t\t\t\tif (this._linksOnly) {\n\t\t\t\t\tfiles = _.filter(data, function(share) {\n\t\t\t\t\t\treturn share.share_type === OC.Share.SHARE_TYPE_LINK\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\t// OCS API uses non-camelcased names\n\t\t\t\tfiles = _.chain(files)\n\t\t\t\t// convert share data to file data\n\t\t\t\t\t.map(function(share) {\n\t\t\t\t\t// TODO: use OC.Files.FileInfo\n\t\t\t\t\t\tvar file = {\n\t\t\t\t\t\t\tid: share.file_source,\n\t\t\t\t\t\t\ticon: OC.MimeType.getIconUrl(share.mimetype),\n\t\t\t\t\t\t\tmimetype: share.mimetype,\n\t\t\t\t\t\t\thasPreview: share.has_preview,\n\t\t\t\t\t\t\ttags: share.tags || []\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (share.item_type === 'folder') {\n\t\t\t\t\t\t\tfile.type = 'dir'\n\t\t\t\t\t\t\tfile.mimetype = 'httpd/unix-directory'\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfile.type = 'file'\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfile.share = {\n\t\t\t\t\t\t\tid: share.id,\n\t\t\t\t\t\t\ttype: share.share_type,\n\t\t\t\t\t\t\ttarget: share.share_with,\n\t\t\t\t\t\t\tstime: share.stime * 1000,\n\t\t\t\t\t\t\texpiration: share.expiration\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (sharedWithUser) {\n\t\t\t\t\t\t\tfile.shareOwner = share.displayname_owner\n\t\t\t\t\t\t\tfile.shareOwnerId = share.uid_owner\n\t\t\t\t\t\t\tfile.name = OC.basename(share.file_target)\n\t\t\t\t\t\t\tfile.path = OC.dirname(share.file_target)\n\t\t\t\t\t\t\tfile.permissions = share.permissions\n\t\t\t\t\t\t\tif (file.path) {\n\t\t\t\t\t\t\t\tfile.extraData = share.file_target\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (share.share_type !== OC.Share.SHARE_TYPE_LINK) {\n\t\t\t\t\t\t\t\tfile.share.targetDisplayName = share.share_with_displayname\n\t\t\t\t\t\t\t\tfile.share.targetShareWithId = share.share_with\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tfile.name = OC.basename(share.path)\n\t\t\t\t\t\t\tfile.path = OC.dirname(share.path)\n\t\t\t\t\t\t\tfile.permissions = OC.PERMISSION_ALL\n\t\t\t\t\t\t\tif (file.path) {\n\t\t\t\t\t\t\t\tfile.extraData = share.path\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn file\n\t\t\t\t\t})\n\t\t\t\t// Group all files and have a \"shares\" array with\n\t\t\t\t// the share info for each file.\n\t\t\t\t//\n\t\t\t\t// This uses a hash memo to cumulate share information\n\t\t\t\t// inside the same file object (by file id).\n\t\t\t\t\t.reduce(function(memo, file) {\n\t\t\t\t\t\tvar data = memo[file.id]\n\t\t\t\t\t\tvar recipient = file.share.targetDisplayName\n\t\t\t\t\t\tvar recipientId = file.share.targetShareWithId\n\t\t\t\t\t\tif (!data) {\n\t\t\t\t\t\t\tdata = memo[file.id] = file\n\t\t\t\t\t\t\tdata.shares = [file.share]\n\t\t\t\t\t\t\t// using a hash to make them unique,\n\t\t\t\t\t\t\t// this is only a list to be displayed\n\t\t\t\t\t\t\tdata.recipients = {}\n\t\t\t\t\t\t\tdata.recipientData = {}\n\t\t\t\t\t\t\t// share types\n\t\t\t\t\t\t\tdata.shareTypes = {}\n\t\t\t\t\t\t\t// counter is cheaper than calling _.keys().length\n\t\t\t\t\t\t\tdata.recipientsCount = 0\n\t\t\t\t\t\t\tdata.mtime = file.share.stime\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t// always take the most recent stime\n\t\t\t\t\t\t\tif (file.share.stime > data.mtime) {\n\t\t\t\t\t\t\t\tdata.mtime = file.share.stime\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdata.shares.push(file.share)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (recipient) {\n\t\t\t\t\t\t// limit counterparts for output\n\t\t\t\t\t\t\tif (data.recipientsCount < 4) {\n\t\t\t\t\t\t\t// only store the first ones, they will be the only ones\n\t\t\t\t\t\t\t// displayed\n\t\t\t\t\t\t\t\tdata.recipients[recipient] = true\n\t\t\t\t\t\t\t\tdata.recipientData[data.recipientsCount] = {\n\t\t\t\t\t\t\t\t\t'shareWith': recipientId,\n\t\t\t\t\t\t\t\t\t'shareWithDisplayName': recipient\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdata.recipientsCount++\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdata.shareTypes[file.share.type] = true\n\n\t\t\t\t\t\tdelete file.share\n\t\t\t\t\t\treturn memo\n\t\t\t\t\t}, {})\n\t\t\t\t// Retrieve only the values of the returned hash\n\t\t\t\t\t.values()\n\t\t\t\t// Clean up\n\t\t\t\t\t.each(function(data) {\n\t\t\t\t\t// convert the recipients map to a flat\n\t\t\t\t\t// array of sorted names\n\t\t\t\t\t\tdata.mountType = 'shared'\n\t\t\t\t\t\tdelete data.recipientsCount\n\t\t\t\t\t\tif (sharedWithUser) {\n\t\t\t\t\t\t// only for outgoing shares\n\t\t\t\t\t\t\tdelete data.shareTypes\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdata.shareTypes = _.keys(data.shareTypes)\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t// Finish the chain by getting the result\n\t\t\t\t\t.value()\n\n\t\t\t\t// Sort by expected sort comparator\n\t\t\t\treturn files.sort(this._sortComparator)\n\t\t\t}\n\t\t})\n\n\t/**\n\t * Share info attributes.\n\t *\n\t * @typedef {Object} OCA.Sharing.ShareInfo\n\t *\n\t * @property {number} id share ID\n\t * @property {number} type share type\n\t * @property {String} target share target, either user name or group name\n\t * @property {number} stime share timestamp in milliseconds\n\t * @property {String} [targetDisplayName] display name of the recipient\n\t * (only when shared with others)\n\t * @property {String} [targetShareWithId] id of the recipient\n\t *\n\t */\n\n\t/**\n\t * Recipient attributes\n\t *\n\t * @typedef {Object} OCA.Sharing.RecipientInfo\n\t * @property {String} shareWith the id of the recipient\n\t * @property {String} shareWithDisplayName the display name of the recipient\n\t */\n\n\t/**\n\t * Shared file info attributes.\n\t *\n\t * @typedef {OCA.Files.FileInfo} OCA.Sharing.SharedFileInfo\n\t *\n\t * @property {Array.<OCA.Sharing.ShareInfo>} shares array of shares for\n\t * this file\n\t * @property {number} mtime most recent share time (if multiple shares)\n\t * @property {String} shareOwner name of the share owner\n\t * @property {Array.<String>} recipients name of the first 4 recipients\n\t * (this is mostly for display purposes)\n\t * @property {Object.<OCA.Sharing.RecipientInfo>} recipientData (as object for easier\n\t * passing to HTML data attributes with jQuery)\n\t */\n\n\tOCA.Sharing.FileList = FileList\n})()\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(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__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }"],"names":["OCA","Sharing","App","_inFileList","_outFileList","_overviewFileList","_pendingFileList","initSharingIn","$el","this","FileList","id","sharedWithUser","fileActions","_createFileActions","config","Files","getFilesConfig","shown","_extendFileList","appName","t","find","html","initSharingOut","initSharingLinks","_linkFileList","linksOnly","initSharingDeleted","_deletedFileList","defaultFileActionsDisabled","showDeleted","_restoreShareAction","initSharingPening","showPending","detailsViewEnabled","_acceptShareAction","initShareingOverview","isOverview","removeSharingIn","$fileList","empty","removeSharingOut","removeSharingLinks","removeSharingDeleted","removeSharingPending","removeSharingOverview","destroy","off","_onActionsUpdated","_globalActionsInitialized","FileActions","registerDefaultActions","merge","_","bind","on","register","OC","PERMISSION_READ","filename","context","setActiveView","silent","fileList","changeDirectory","joinPaths","$file","attr","setDefault","registerAction","name","displayName","altText","mime","permissions","PERMISSION_ALL","iconClass","type","TYPE_INLINE","actionHandler","fileName","shareId","data","$","post","linkToOCS","success","result","remove","fileInfoModel","attributes","fail","Notification","showTemporary","shareBase","shouldRender","parseInt","Share","SHARE_TYPE_REMOTE_GROUP","ajax","url","ev","each","list","action","defaultAction","fileSummary","window","addEventListener","e","target","options","initialize","prototype","extend","_sharedWithUser","_linksOnly","_showDeleted","_showPending","_clientSideSort","_allowSelection","_isOverview","apply","arguments","initialized","_renderRow","_createRow","fileData","$tr","before","children","pluck","shares","join","shareOwner","permission","PERMISSION_DELETE","remoteId","shareType","expirationTimestamp","expiration","moment","valueOf","formatted","text","modifiedColor","Math","round","Date","getTime","Util","formatDate","relativeModifiedDate","td","append","tooltip","placement","setSharedWithUser","state","updateEmptyContent","dir","getCurrentDirectory","toggleClass","isEmpty","addClass","getDirectoryPermissions","updateStorageStatistics","updateRow","fileInfo","reload","showMask","_reloadCall","abort","_setCurrentDir","promises","deletedShares","format","include_tags","beforeSend","xhr","setRequestHeader","pendingShares","pendingRemoteShares","shared_with_me","remoteShares","push","when","callBack","reloadCallback","then","additionalShares","hideMask","files","ocs","concat","_makeFilesFromShares","_makeFilesFromRemoteShares","setFiles","chain","map","share","file","owner","remote","replace","basename","mountpoint","mtime","mimetype","share_type","SHARE_TYPE_REMOTE","file_id","path","dirname","tags","remote_id","accepted","shareOwnerId","value","filter","SHARE_TYPE_LINK","file_source","icon","MimeType","getIconUrl","hasPreview","has_preview","item_type","share_with","stime","displayname_owner","uid_owner","file_target","extraData","targetDisplayName","share_with_displayname","targetShareWithId","reduce","memo","recipient","recipientId","recipients","recipientData","shareTypes","recipientsCount","values","mountType","keys","sort","_sortComparator","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","n","getter","__esModule","d","a","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","hasOwnProperty","call"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/files_sharing-files_sharing_tab.js b/dist/files_sharing-files_sharing_tab.js
index 47400edf312..014b374d20c 100644
--- a/dist/files_sharing-files_sharing_tab.js
+++ b/dist/files_sharing-files_sharing_tab.js
@@ -1,3 +1,3 @@
/*! For license information please see files_sharing-files_sharing_tab.js.LICENSE.txt */
-!function(){"use strict";var n,e={21883:function(n,e,r){var i=r(20144),a=r(72268),s=r.n(a),o=r(9944),c=r(1794),l=r(79753),u=r(28017),h=r.n(u),d=r(4820);function p(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}var f=function(){function n(){!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n)}var e,t;return e=n,(t=[{key:"isPublicUploadEnabled",get:function(){return document.getElementById("filestable")&&"yes"===document.getElementById("filestable").dataset.allowPublicUpload}},{key:"isShareWithLinkAllowed",get:function(){return document.getElementById("allowShareWithLink")&&"yes"===document.getElementById("allowShareWithLink").value}},{key:"federatedShareDocLink",get:function(){return OC.appConfig.core.federatedCloudShareDoc}},{key:"defaultExpirationDateString",get:function(){var n="";if(this.isDefaultExpireDateEnabled){var e=window.moment.utc(),t=this.defaultExpireDate;e.add(t,"days"),n=e.format("YYYY-MM-DD")}return n}},{key:"defaultInternalExpirationDateString",get:function(){var n="";if(this.isDefaultInternalExpireDateEnabled){var e=window.moment.utc(),t=this.defaultInternalExpireDate;e.add(t,"days"),n=e.format("YYYY-MM-DD")}return n}},{key:"defaultRemoteExpirationDateString",get:function(){var n="";if(this.isDefaultRemoteExpireDateEnabled){var e=window.moment.utc(),t=this.defaultRemoteExpireDate;e.add(t,"days"),n=e.format("YYYY-MM-DD")}return n}},{key:"enforcePasswordForPublicLink",get:function(){return!0===OC.appConfig.core.enforcePasswordForPublicLink}},{key:"enableLinkPasswordByDefault",get:function(){return!0===OC.appConfig.core.enableLinkPasswordByDefault}},{key:"isDefaultExpireDateEnforced",get:function(){return!0===OC.appConfig.core.defaultExpireDateEnforced}},{key:"isDefaultExpireDateEnabled",get:function(){return!0===OC.appConfig.core.defaultExpireDateEnabled}},{key:"isDefaultInternalExpireDateEnforced",get:function(){return!0===OC.appConfig.core.defaultInternalExpireDateEnforced}},{key:"isDefaultRemoteExpireDateEnforced",get:function(){return!0===OC.appConfig.core.defaultRemoteExpireDateEnforced}},{key:"isDefaultInternalExpireDateEnabled",get:function(){return!0===OC.appConfig.core.defaultInternalExpireDateEnabled}},{key:"isRemoteShareAllowed",get:function(){return!0===OC.appConfig.core.remoteShareAllowed}},{key:"isMailShareAllowed",get:function(){var n,e,t,r=OC.getCapabilities();return void 0!==(null==r||null===(n=r.files_sharing)||void 0===n?void 0:n.sharebymail)&&!0===(null==r||null===(e=r.files_sharing)||void 0===e||null===(t=e.public)||void 0===t?void 0:t.enabled)}},{key:"defaultExpireDate",get:function(){return OC.appConfig.core.defaultExpireDate}},{key:"defaultInternalExpireDate",get:function(){return OC.appConfig.core.defaultInternalExpireDate}},{key:"defaultRemoteExpireDate",get:function(){return OC.appConfig.core.defaultRemoteExpireDate}},{key:"isResharingAllowed",get:function(){return!0===OC.appConfig.core.resharingAllowed}},{key:"isPasswordForMailSharesRequired",get:function(){return void 0!==OC.getCapabilities().files_sharing.sharebymail&&OC.getCapabilities().files_sharing.sharebymail.password.enforced}},{key:"shouldAlwaysShowUnique",get:function(){var n,e;return!0===(null===(n=OC.getCapabilities().files_sharing)||void 0===n||null===(e=n.sharee)||void 0===e?void 0:e.always_show_unique)}},{key:"allowGroupSharing",get:function(){return!0===OC.appConfig.core.allowGroupSharing}},{key:"maxAutocompleteResults",get:function(){return parseInt(OC.config["sharing.maxAutocompleteResults"],10)||25}},{key:"minSearchStringLength",get:function(){return parseInt(OC.config["sharing.minSearchStringLength"],10)||0}},{key:"passwordPolicy",get:function(){var n=OC.getCapabilities();return n.password_policy?n.password_policy:{}}}])&&p(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}(),g=r(41922);function m(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}var v=function(){function n(e){var t,r;!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),r=void 0,(t="_share")in this?Object.defineProperty(this,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):this[t]=r,e.ocs&&e.ocs.data&&e.ocs.data[0]&&(e=e.ocs.data[0]),e.hide_download=!!e.hide_download,e.mail_send=!!e.mail_send,this._share=e}var e,t;return e=n,(t=[{key:"state",get:function(){return this._share}},{key:"id",get:function(){return this._share.id}},{key:"type",get:function(){return this._share.share_type}},{key:"permissions",get:function(){return this._share.permissions},set:function(n){this._share.permissions=n}},{key:"owner",get:function(){return this._share.uid_owner}},{key:"ownerDisplayName",get:function(){return this._share.displayname_owner}},{key:"shareWith",get:function(){return this._share.share_with}},{key:"shareWithDisplayName",get:function(){return this._share.share_with_displayname||this._share.share_with}},{key:"shareWithDisplayNameUnique",get:function(){return this._share.share_with_displayname_unique||this._share.share_with}},{key:"shareWithLink",get:function(){return this._share.share_with_link}},{key:"shareWithAvatar",get:function(){return this._share.share_with_avatar}},{key:"uidFileOwner",get:function(){return this._share.uid_file_owner}},{key:"displaynameFileOwner",get:function(){return this._share.displayname_file_owner||this._share.uid_file_owner}},{key:"createdTime",get:function(){return this._share.stime}},{key:"expireDate",get:function(){return this._share.expiration},set:function(n){this._share.expiration=n}},{key:"token",get:function(){return this._share.token}},{key:"note",get:function(){return this._share.note},set:function(n){this._share.note=n}},{key:"label",get:function(){return this._share.label},set:function(n){this._share.label=n}},{key:"mailSend",get:function(){return!0===this._share.mail_send}},{key:"hideDownload",get:function(){return!0===this._share.hide_download},set:function(n){this._share.hide_download=!0===n}},{key:"password",get:function(){return this._share.password},set:function(n){this._share.password=n}},{key:"passwordExpirationTime",get:function(){return this._share.password_expiration_time},set:function(n){this._share.password_expiration_time=n}},{key:"sendPasswordByTalk",get:function(){return this._share.send_password_by_talk},set:function(n){this._share.send_password_by_talk=n}},{key:"path",get:function(){return this._share.path}},{key:"itemType",get:function(){return this._share.item_type}},{key:"mimetype",get:function(){return this._share.mimetype}},{key:"fileSource",get:function(){return this._share.file_source}},{key:"fileTarget",get:function(){return this._share.file_target}},{key:"fileParent",get:function(){return this._share.file_parent}},{key:"hasReadPermission",get:function(){return!!(this.permissions&OC.PERMISSION_READ)}},{key:"hasCreatePermission",get:function(){return!!(this.permissions&OC.PERMISSION_CREATE)}},{key:"hasDeletePermission",get:function(){return!!(this.permissions&OC.PERMISSION_DELETE)}},{key:"hasUpdatePermission",get:function(){return!!(this.permissions&OC.PERMISSION_UPDATE)}},{key:"hasSharePermission",get:function(){return!!(this.permissions&OC.PERMISSION_SHARE)}},{key:"canEdit",get:function(){return!0===this._share.can_edit}},{key:"canDelete",get:function(){return!0===this._share.can_delete}},{key:"viaFileid",get:function(){return this._share.via_fileid}},{key:"viaPath",get:function(){return this._share.via_path}},{key:"parent",get:function(){return this._share.parent}},{key:"storageId",get:function(){return this._share.storage_id}},{key:"storage",get:function(){return this._share.storage}},{key:"itemSource",get:function(){return this._share.item_source}},{key:"status",get:function(){return this._share.status}}])&&m(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}(),_={data:function(){return{SHARE_TYPES:g.D}}},A=r(74466),y=r.n(A),E=r(79440),w=r.n(E),S=r(15168),b=r.n(S),C={name:"SharingEntrySimple",components:{Actions:w()},directives:{Tooltip:b()},props:{title:{type:String,default:"",required:!0},tooltip:{type:String,default:""},subtitle:{type:String,default:""},isUnique:{type:Boolean,default:!0},ariaExpanded:{type:Boolean,default:null}},computed:{ariaExpandedValue:function(){return null===this.ariaExpanded?this.ariaExpanded:this.ariaExpanded?"true":"false"}}},x=r(93379),k=r.n(x),P=r(7795),T=r.n(P),R=r(90569),D=r.n(R),O=r(3565),I=r.n(O),L=r(19216),N=r.n(L),Y=r(44589),H=r.n(Y),U=r(22695),M={};M.styleTagTransform=H(),M.setAttributes=I(),M.insert=D().bind(null,"head"),M.domAPI=T(),M.insertStyleElement=N(),k()(U.Z,M),U.Z&&U.Z.locals&&U.Z.locals;var B=r(51900),W=(0,B.Z)(C,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("li",{staticClass:"sharing-entry"},[n._t("avatar"),n._v(" "),t("div",{directives:[{name:"tooltip",rawName:"v-tooltip",value:n.tooltip,expression:"tooltip"}],staticClass:"sharing-entry__desc"},[t("span",{staticClass:"sharing-entry__title"},[n._v(n._s(n.title))]),n._v(" "),n.subtitle?t("p",[n._v("\n\t\t\t"+n._s(n.subtitle)+"\n\t\t")]):n._e()]),n._v(" "),n.$slots.default?t("Actions",{staticClass:"sharing-entry__actions",attrs:{"menu-align":"right","aria-expanded":n.ariaExpandedValue}},[n._t("default")],2):n._e()],2)}),[],!1,null,"3483f0f7",null).exports;function j(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}var q={name:"SharingEntryInternal",components:{ActionLink:y(),SharingEntrySimple:W},props:{fileInfo:{type:Object,default:function(){},required:!0}},data:function(){return{copied:!1,copySuccess:!1}},computed:{internalLink:function(){return window.location.protocol+"//"+window.location.host+(0,l.generateUrl)("/f/")+this.fileInfo.id},clipboardTooltip:function(){return this.copied?this.copySuccess?t("files_sharing","Link copied"):t("files_sharing","Cannot copy, please copy the link manually"):t("files_sharing","Copy to clipboard")},internalLinkSubtitle:function(){return"dir"===this.fileInfo.type?t("files_sharing","Only works for users with access to this folder"):t("files_sharing","Only works for users with access to this file")}},methods:{copyLink:function(){var n,e=this;return(n=regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,e.$copyText(e.internalLink);case 3:e.$refs.copyButton.$el.focus(),e.copySuccess=!0,e.copied=!0,n.next=13;break;case 8:n.prev=8,n.t0=n.catch(0),e.copySuccess=!1,e.copied=!0,console.error(n.t0);case 13:return n.prev=13,setTimeout((function(){e.copySuccess=!1,e.copied=!1}),4e3),n.finish(13);case 16:case"end":return n.stop()}}),n,null,[[0,8,13,16]])})),function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){j(a,r,i,s,o,"next",n)}function o(n){j(a,r,i,s,o,"throw",n)}s(void 0)}))})()}}},F=q,$=r(5602),Z={};Z.styleTagTransform=H(),Z.setAttributes=I(),Z.insert=D().bind(null,"head"),Z.domAPI=T(),Z.insertStyleElement=N(),k()($.Z,Z),$.Z&&$.Z.locals&&$.Z.locals;var G=(0,B.Z)(F,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("ul",[t("SharingEntrySimple",{staticClass:"sharing-entry__internal",attrs:{title:n.t("files_sharing","Internal link"),subtitle:n.internalLinkSubtitle},scopedSlots:n._u([{key:"avatar",fn:function(){return[t("div",{staticClass:"avatar-external icon-external-white"})]},proxy:!0}])},[n._v(" "),t("ActionLink",{ref:"copyButton",attrs:{href:n.internalLink,target:"_blank",icon:n.copied&&n.copySuccess?"icon-checkmark-color":"icon-clippy"},on:{click:function(e){return e.preventDefault(),n.copyLink.apply(null,arguments)}}},[n._v("\n\t\t\t"+n._s(n.clipboardTooltip)+"\n\t\t")])],1)],1)}),[],!1,null,"739d8480",null),V=G.exports,K=r(22200),Q=r(20296),z=r.n(Q),J=r(7811),X=r.n(J);function nn(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}function en(n){return function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){nn(a,r,i,s,o,"next",n)}function o(n){nn(a,r,i,s,o,"throw",n)}s(void 0)}))}}var tn=new f,rn="abcdefgijkmnopqrstwxyzABCDEFGHJKLMNPQRSTWXYZ23456789";function an(){return sn.apply(this,arguments)}function sn(){return(sn=en(regeneratorRuntime.mark((function n(){var e;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(!tn.passwordPolicy.api||!tn.passwordPolicy.api.generate){n.next=12;break}return n.prev=1,n.next=4,d.default.get(tn.passwordPolicy.api.generate);case 4:if(!(e=n.sent).data.ocs.data.password){n.next=7;break}return n.abrupt("return",e.data.ocs.data.password);case 7:n.next=12;break;case 9:n.prev=9,n.t0=n.catch(1),console.info("Error generating password from password_policy",n.t0);case 12:return n.abrupt("return",Array(10).fill(0).reduce((function(n,e){return n+rn.charAt(Math.floor(Math.random()*rn.length))}),""));case 13:case"end":return n.stop()}}),n,null,[[1,9]])})))).apply(this,arguments)}function on(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}function cn(n){return function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){on(a,r,i,s,o,"next",n)}function o(n){on(a,r,i,s,o,"throw",n)}s(void 0)}))}}r(35449);var ln=(0,l.generateOcsUrl)("apps/files_sharing/api/v1/shares"),un={methods:{createShare:function(n){return cn(regeneratorRuntime.mark((function e(){var r,i,a,s,o,c,l,u,h,p,f,g,m,_,A,y;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=n.path,i=n.permissions,a=n.shareType,s=n.shareWith,o=n.publicUpload,c=n.password,l=n.sendPasswordByTalk,u=n.expireDate,h=n.label,e.prev=1,e.next=4,d.default.post(ln,{path:r,permissions:i,shareType:a,shareWith:s,publicUpload:o,password:c,sendPasswordByTalk:l,expireDate:u,label:h});case 4:if(null!=(f=e.sent)&&null!==(p=f.data)&&void 0!==p&&p.ocs){e.next=7;break}throw f;case 7:return e.abrupt("return",new v(f.data.ocs.data));case 10:throw e.prev=10,e.t0=e.catch(1),console.error("Error while creating share",e.t0),y=null===e.t0||void 0===e.t0||null===(g=e.t0.response)||void 0===g||null===(m=g.data)||void 0===m||null===(_=m.ocs)||void 0===_||null===(A=_.meta)||void 0===A?void 0:A.message,OC.Notification.showTemporary(y?t("files_sharing","Error creating the share: {errorMessage}",{errorMessage:y}):t("files_sharing","Error creating the share"),{type:"error"}),e.t0;case 16:case"end":return e.stop()}}),e,null,[[1,10]])})))()},deleteShare:function(n){return cn(regeneratorRuntime.mark((function e(){var r,i,a,s,o,c,l;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,d.default.delete(ln+"/".concat(n));case 3:if(null!=(i=e.sent)&&null!==(r=i.data)&&void 0!==r&&r.ocs){e.next=6;break}throw i;case 6:return e.abrupt("return",!0);case 9:throw e.prev=9,e.t0=e.catch(0),console.error("Error while deleting share",e.t0),l=null===e.t0||void 0===e.t0||null===(a=e.t0.response)||void 0===a||null===(s=a.data)||void 0===s||null===(o=s.ocs)||void 0===o||null===(c=o.meta)||void 0===c?void 0:c.message,OC.Notification.showTemporary(l?t("files_sharing","Error deleting the share: {errorMessage}",{errorMessage:l}):t("files_sharing","Error deleting the share"),{type:"error"}),e.t0;case 15:case"end":return e.stop()}}),e,null,[[0,9]])})))()},updateShare:function(n,e){return cn(regeneratorRuntime.mark((function r(){var i,a,s,o,c,l,u,h;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.prev=0,r.next=3,d.default.put(ln+"/".concat(n),e);case 3:if(null!=(a=r.sent)&&null!==(i=a.data)&&void 0!==i&&i.ocs){r.next=8;break}throw a;case 8:return r.abrupt("return",a.data.ocs.data);case 9:r.next=17;break;case 11:throw r.prev=11,r.t0=r.catch(0),console.error("Error while updating share",r.t0),400!==r.t0.response.status&&(u=null===r.t0||void 0===r.t0||null===(s=r.t0.response)||void 0===s||null===(o=s.data)||void 0===o||null===(c=o.ocs)||void 0===c||null===(l=c.meta)||void 0===l?void 0:l.message,OC.Notification.showTemporary(u?t("files_sharing","Error updating the share: {errorMessage}",{errorMessage:u}):t("files_sharing","Error updating the share"),{type:"error"})),h=r.t0.response.data.ocs.meta.message,new Error(h);case 17:case"end":return r.stop()}}),r,null,[[0,11]])})))()}}};function hn(n){return hn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},hn(n)}function dn(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(n);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),t.push.apply(t,r)}return t}function pn(n){for(var e=1;e<arguments.length;e++){var t=null!=arguments[e]?arguments[e]:{};e%2?dn(Object(t),!0).forEach((function(e){fn(n,e,t[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(t)):dn(Object(t)).forEach((function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(t,e))}))}return n}function fn(n,e,t){return e in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function gn(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}function mn(n){return function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){gn(a,r,i,s,o,"next",n)}function o(n){gn(a,r,i,s,o,"throw",n)}s(void 0)}))}}var vn={name:"SharingInput",components:{Multiselect:X()},mixins:[_,un],props:{shares:{type:Array,default:function(){return[]},required:!0},linkShares:{type:Array,default:function(){return[]},required:!0},fileInfo:{type:Object,default:function(){},required:!0},reshare:{type:v,default:null},canReshare:{type:Boolean,required:!0}},data:function(){return{config:new f,loading:!1,query:"",recommendations:[],ShareSearch:OCA.Sharing.ShareSearch.state,suggestions:[]}},computed:{externalResults:function(){return this.ShareSearch.results},inputPlaceholder:function(){var n=this.config.isRemoteShareAllowed;return this.canReshare?n?t("files_sharing","Name, email, or Federated Cloud ID …"):t("files_sharing","Name or email …"):t("files_sharing","Resharing is not allowed")},isValidQuery:function(){return this.query&&""!==this.query.trim()&&this.query.length>this.config.minSearchStringLength},options:function(){return this.isValidQuery?this.suggestions:this.recommendations},noResultText:function(){return this.loading?t("files_sharing","Searching …"):t("files_sharing","No elements found.")}},mounted:function(){this.getRecommendations()},methods:{asyncFind:function(n,e){var t=this;return mn(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.query=n.trim(),!t.isValidQuery){e.next=5;break}return t.loading=!0,e.next=5,t.debounceGetSuggestions(n);case 5:case"end":return e.stop()}}),e)})))()},getSuggestions:function(n){var e=arguments,r=this;return mn(regeneratorRuntime.mark((function i(){var a,s,o,c,u,h,p,f,g,m,v,_,A;return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return a=e.length>1&&void 0!==e[1]&&e[1],r.loading=!0,!0===OC.getCapabilities().files_sharing.sharee.query_lookup_default&&(a=!0),s=[r.SHARE_TYPES.SHARE_TYPE_USER,r.SHARE_TYPES.SHARE_TYPE_GROUP,r.SHARE_TYPES.SHARE_TYPE_REMOTE,r.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP,r.SHARE_TYPES.SHARE_TYPE_CIRCLE,r.SHARE_TYPES.SHARE_TYPE_ROOM,r.SHARE_TYPES.SHARE_TYPE_GUEST,r.SHARE_TYPES.SHARE_TYPE_DECK],!0===OC.getCapabilities().files_sharing.public.enabled&&s.push(r.SHARE_TYPES.SHARE_TYPE_EMAIL),o=null,i.prev=6,i.next=9,d.default.get((0,l.generateOcsUrl)("apps/files_sharing/api/v1/sharees"),{params:{format:"json",itemType:"dir"===r.fileInfo.type?"folder":"file",search:n,lookup:a,perPage:r.config.maxAutocompleteResults,shareType:s}});case 9:o=i.sent,i.next=16;break;case 12:return i.prev=12,i.t0=i.catch(6),console.error("Error fetching suggestions",i.t0),i.abrupt("return");case 16:c=o.data.ocs.data,u=o.data.ocs.data.exact,c.exact=[],h=Object.values(u).reduce((function(n,e){return n.concat(e)}),[]),p=Object.values(c).reduce((function(n,e){return n.concat(e)}),[]),f=r.filterOutExistingShares(h).map((function(n){return r.formatForMultiselect(n)})).sort((function(n,e){return n.shareType-e.shareType})),g=r.filterOutExistingShares(p).map((function(n){return r.formatForMultiselect(n)})).sort((function(n,e){return n.shareType-e.shareType})),m=[],c.lookupEnabled&&!a&&m.push({id:"global-lookup",isNoUser:!0,displayName:t("files_sharing","Search globally"),lookup:!0}),v=r.externalResults.filter((function(n){return!n.condition||n.condition(r)})),_=f.concat(g).concat(v).concat(m),A=_.reduce((function(n,e){return e.displayName?(n[e.displayName]||(n[e.displayName]=0),n[e.displayName]++,n):n}),{}),r.suggestions=_.map((function(n){return A[n.displayName]>1&&!n.desc?pn(pn({},n),{},{desc:n.shareWithDisplayNameUnique}):n})),r.loading=!1,console.info("suggestions",r.suggestions);case 31:case"end":return i.stop()}}),i,null,[[6,12]])})))()},debounceGetSuggestions:z()((function(){this.getSuggestions.apply(this,arguments)}),300),getRecommendations:function(){var n=this;return mn(regeneratorRuntime.mark((function e(){var t,r,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.loading=!0,t=null,e.prev=2,e.next=5,d.default.get((0,l.generateOcsUrl)("apps/files_sharing/api/v1/sharees_recommended"),{params:{format:"json",itemType:n.fileInfo.type}});case 5:t=e.sent,e.next=12;break;case 8:return e.prev=8,e.t0=e.catch(2),console.error("Error fetching recommendations",e.t0),e.abrupt("return");case 12:r=n.externalResults.filter((function(e){return!e.condition||e.condition(n)})),i=Object.values(t.data.ocs.data.exact).reduce((function(n,e){return n.concat(e)}),[]),n.recommendations=n.filterOutExistingShares(i).map((function(e){return n.formatForMultiselect(e)})).concat(r),n.loading=!1,console.info("recommendations",n.recommendations);case 17:case"end":return e.stop()}}),e,null,[[2,8]])})))()},filterOutExistingShares:function(n){var e=this;return n.reduce((function(n,t){if("object"!==hn(t))return n;try{if(t.value.shareType===e.SHARE_TYPES.SHARE_TYPE_USER){if(t.value.shareWith===(0,K.getCurrentUser)().uid)return n;if(e.reshare&&t.value.shareWith===e.reshare.owner)return n}if(t.value.shareType===e.SHARE_TYPES.SHARE_TYPE_EMAIL){if(-1!==e.linkShares.map((function(n){return n.shareWith})).indexOf(t.value.shareWith.trim()))return n}else{var r=e.shares.reduce((function(n,e){return n[e.shareWith]=e.type,n}),{}),i=t.value.shareWith.trim();if(i in r&&r[i]===t.value.shareType)return n}n.push(t)}catch(e){return n}return n}),[])},shareTypeToIcon:function(n){switch(n){case this.SHARE_TYPES.SHARE_TYPE_GUEST:return"icon-user";case this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP:case this.SHARE_TYPES.SHARE_TYPE_GROUP:return"icon-group";case this.SHARE_TYPES.SHARE_TYPE_EMAIL:return"icon-mail";case this.SHARE_TYPES.SHARE_TYPE_CIRCLE:return"icon-circle";case this.SHARE_TYPES.SHARE_TYPE_ROOM:return"icon-room";case this.SHARE_TYPES.SHARE_TYPE_DECK:return"icon-deck";default:return""}},formatForMultiselect:function(n){var e,r;if(n.value.shareType===this.SHARE_TYPES.SHARE_TYPE_USER&&this.config.shouldAlwaysShowUnique)e=null!==(r=n.shareWithDisplayNameUnique)&&void 0!==r?r:"";else if(n.value.shareType!==this.SHARE_TYPES.SHARE_TYPE_REMOTE&&n.value.shareType!==this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP||!n.value.server)if(n.value.shareType===this.SHARE_TYPES.SHARE_TYPE_EMAIL)e=n.value.shareWith;else{var i;e=null!==(i=n.shareWithDescription)&&void 0!==i?i:""}else e=t("files_sharing","on {server}",{server:n.value.server});return{id:"".concat(n.value.shareType,"-").concat(n.value.shareWith),shareWith:n.value.shareWith,shareType:n.value.shareType,user:n.uuid||n.value.shareWith,isNoUser:n.value.shareType!==this.SHARE_TYPES.SHARE_TYPE_USER,displayName:n.name||n.label,subtitle:e,shareWithDisplayNameUnique:n.shareWithDisplayNameUnique||"",icon:this.shareTypeToIcon(n.value.shareType)}},addShare:function(n){var e=this;return mn(regeneratorRuntime.mark((function t(){var r,i,a,s,o,c,l,u;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!n.lookup){t.next=5;break}return t.next=3,e.getSuggestions(e.query,!0);case 3:return e.$nextTick((function(){e.$refs.multiselect.$el.querySelector(".multiselect__input").focus()})),t.abrupt("return",!0);case 5:if(!n.handler){t.next=11;break}return t.next=8,n.handler(e);case 8:return r=t.sent,e.$emit("add:share",new v(r)),t.abrupt("return",!0);case 11:if(e.loading=!0,console.debug("Adding a new share from the input for",n),t.prev=13,o=null,!e.config.enforcePasswordForPublicLink||n.shareType!==e.SHARE_TYPES.SHARE_TYPE_EMAIL){t.next=19;break}return t.next=18,an();case 18:o=t.sent;case 19:return c=(e.fileInfo.path+"/"+e.fileInfo.name).replace("//","/"),t.next=22,e.createShare({path:c,shareType:n.shareType,shareWith:n.shareWith,password:o,permissions:e.fileInfo.sharePermissions&OC.getCapabilities().files_sharing.default_permissions});case 22:if(l=t.sent,!o){t.next=31;break}return l.newPassword=o,t.next=27,new Promise((function(n){e.$emit("add:share",l,n)}));case 27:t.sent.open=!0,t.next=32;break;case 31:e.$emit("add:share",l);case 32:return null!==(i=e.$refs.multiselect)&&void 0!==i&&null!==(a=i.$refs)&&void 0!==a&&null!==(s=a.VueMultiselect)&&void 0!==s&&s.search&&(e.$refs.multiselect.$refs.VueMultiselect.search=""),t.next=35,e.getRecommendations();case 35:t.next=43;break;case 37:t.prev=37,t.t0=t.catch(13),(u=e.$refs.multiselect.$el.querySelector("input"))&&u.focus(),e.query=n.shareWith,console.error("Error while adding new share",t.t0);case 43:return t.prev=43,e.loading=!1,t.finish(43);case 46:case"end":return t.stop()}}),t,null,[[13,37,43,46]])})))()}}},_n=vn,An=r(84721),yn={};yn.styleTagTransform=H(),yn.setAttributes=I(),yn.insert=D().bind(null,"head"),yn.domAPI=T(),yn.insertStyleElement=N(),k()(An.Z,yn),An.Z&&An.Z.locals&&An.Z.locals;var En=(0,B.Z)(_n,(function(){var n=this,e=n.$createElement;return(n._self._c||e)("Multiselect",{ref:"multiselect",staticClass:"sharing-input",attrs:{"clear-on-select":!0,disabled:!n.canReshare,"hide-selected":!0,"internal-search":!1,loading:n.loading,options:n.options,placeholder:n.inputPlaceholder,"preselect-first":!0,"preserve-search":!0,searchable:!0,"user-select":!0,"open-direction":"below",label:"displayName","track-by":"id"},on:{"search-change":n.asyncFind,select:n.addShare},scopedSlots:n._u([{key:"noOptions",fn:function(){return[n._v("\n\t\t"+n._s(n.t("files_sharing","No recommendations. Start typing."))+"\n\t")]},proxy:!0},{key:"noResult",fn:function(){return[n._v("\n\t\t"+n._s(n.noResultText)+"\n\t")]},proxy:!0}])})}),[],!1,null,null,null).exports,wn=r(56286),Sn=r.n(wn),bn=r(76632),Cn=r(41009),xn=r.n(Cn),kn=r(25746);function Pn(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}function Tn(n){return function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){Pn(a,r,i,s,o,"next",n)}function o(n){Pn(a,r,i,s,o,"throw",n)}s(void 0)}))}}var Rn={mixins:[un,_],props:{fileInfo:{type:Object,default:function(){},required:!0},share:{type:v,default:null},isUnique:{type:Boolean,default:!0}},data:function(){var n;return{config:new f,errors:{},loading:!1,saving:!1,open:!1,updateQueue:new kn.Z({concurrency:1}),reactiveState:null===(n=this.share)||void 0===n?void 0:n.state}},computed:{hasNote:{get:function(){return""!==this.share.note},set:function(n){this.share.note=n?null:""}},dateTomorrow:function(){return moment().add(1,"days")},lang:function(){var n=window.dayNamesShort?window.dayNamesShort:["Sun.","Mon.","Tue.","Wed.","Thu.","Fri.","Sat."],e=window.monthNamesShort?window.monthNamesShort:["Jan.","Feb.","Mar.","Apr.","May.","Jun.","Jul.","Aug.","Sep.","Oct.","Nov.","Dec."];return{formatLocale:{firstDayOfWeek:window.firstDay?window.firstDay:0,monthsShort:e,weekdaysMin:n,weekdaysShort:n},monthFormat:"MMM"}},isShareOwner:function(){return this.share&&this.share.owner===(0,K.getCurrentUser)().uid}},methods:{checkShare:function(n){return(!n.password||"string"==typeof n.password&&""!==n.password.trim())&&!(n.expirationDate&&!moment(n.expirationDate).isValid())},onExpirationChange:function(n){var e=moment(n).format("YYYY-MM-DD");this.share.expireDate=e,this.queueUpdate("expireDate")},onExpirationDisable:function(){this.share.expireDate="",this.queueUpdate("expireDate")},onNoteChange:function(n){this.$set(this.share,"newNote",n.trim())},onNoteSubmit:function(){this.share.newNote&&(this.share.note=this.share.newNote,this.$delete(this.share,"newNote"),this.queueUpdate("note"))},onDelete:function(){var n=this;return Tn(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,n.loading=!0,n.open=!1,e.next=5,n.deleteShare(n.share.id);case 5:console.debug("Share deleted",n.share.id),n.$emit("remove:share",n.share),e.next=12;break;case 9:e.prev=9,e.t0=e.catch(0),n.open=!0;case 12:return e.prev=12,n.loading=!1,e.finish(12);case 15:case"end":return e.stop()}}),e,null,[[0,9,12,15]])})))()},queueUpdate:function(){for(var n=this,e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];if(0!==t.length)if(this.share.id){var i={};t.map((function(e){return i[e]=n.share[e].toString()})),this.updateQueue.add(Tn(regeneratorRuntime.mark((function e(){var r,a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.saving=!0,n.errors={},e.prev=2,e.next=5,n.updateShare(n.share.id,i);case 5:r=e.sent,t.indexOf("password")>=0&&(n.$delete(n.share,"newPassword"),n.share.passwordExpirationTime=r.password_expiration_time),n.$delete(n.errors,t[0]),e.next=14;break;case 10:e.prev=10,e.t0=e.catch(2),(a=e.t0.message)&&""!==a&&n.onSyncError(t[0],a);case 14:return e.prev=14,n.saving=!1,e.finish(14);case 17:case"end":return e.stop()}}),e,null,[[2,10,14,17]])}))))}else console.error("Cannot update share.",this.share,"No valid id")},onSyncError:function(n,e){switch(this.open=!0,n){case"password":case"pending":case"expireDate":case"label":case"note":this.$set(this.errors,n,e);var t=this.$refs[n];if(t){t.$el&&(t=t.$el);var r=t.querySelector(".focusable");r&&r.focus()}break;case"sendPasswordByTalk":this.$set(this.errors,n,e),this.share.sendPasswordByTalk=!this.share.sendPasswordByTalk}},debounceQueueUpdate:z()((function(n){this.queueUpdate(n)}),500),disabledDate:function(n){var e=moment(n);return this.dateTomorrow&&e.isBefore(this.dateTomorrow,"day")||this.dateMaxEnforced&&e.isSameOrAfter(this.dateMaxEnforced,"day")}}},Dn={name:"SharingEntryInherited",components:{ActionButton:Sn(),ActionLink:y(),ActionText:xn(),Avatar:h(),SharingEntrySimple:W},mixins:[Rn],props:{share:{type:v,required:!0}},computed:{viaFileTargetUrl:function(){return(0,l.generateUrl)("/f/{fileid}",{fileid:this.share.viaFileid})},viaFolderName:function(){return(0,bn.EZ)(this.share.viaPath)}}},On=r(71296),In={};In.styleTagTransform=H(),In.setAttributes=I(),In.insert=D().bind(null,"head"),In.domAPI=T(),In.insertStyleElement=N(),k()(On.Z,In),On.Z&&On.Z.locals&&On.Z.locals;var Ln=(0,B.Z)(Dn,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("SharingEntrySimple",{key:n.share.id,staticClass:"sharing-entry__inherited",attrs:{title:n.share.shareWithDisplayName},scopedSlots:n._u([{key:"avatar",fn:function(){return[t("Avatar",{staticClass:"sharing-entry__avatar",attrs:{user:n.share.shareWith,"display-name":n.share.shareWithDisplayName,"tooltip-message":""}})]},proxy:!0}])},[n._v(" "),t("ActionText",{attrs:{icon:"icon-user"}},[n._v("\n\t\t"+n._s(n.t("files_sharing","Added by {initiator}",{initiator:n.share.ownerDisplayName}))+"\n\t")]),n._v(" "),n.share.viaPath&&n.share.viaFileid?t("ActionLink",{attrs:{icon:"icon-folder",href:n.viaFileTargetUrl}},[n._v("\n\t\t"+n._s(n.t("files_sharing","Via “{folder}”",{folder:n.viaFolderName}))+"\n\t")]):n._e(),n._v(" "),n.share.canDelete?t("ActionButton",{attrs:{icon:"icon-close"},on:{click:function(e){return e.preventDefault(),n.onDelete.apply(null,arguments)}}},[n._v("\n\t\t"+n._s(n.t("files_sharing","Unshare"))+"\n\t")]):n._e()],1)}),[],!1,null,"29845767",null),Nn=Ln.exports;function Yn(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}var Hn={name:"SharingInherited",components:{ActionButton:Sn(),SharingEntryInherited:Nn,SharingEntrySimple:W},props:{fileInfo:{type:Object,default:function(){},required:!0}},data:function(){return{loaded:!1,loading:!1,showInheritedShares:!1,shares:[]}},computed:{showInheritedSharesIcon:function(){return this.loading?"icon-loading-small":this.showInheritedShares?"icon-triangle-n":"icon-triangle-s"},mainTitle:function(){return t("files_sharing","Others with access")},subTitle:function(){return this.showInheritedShares&&0===this.shares.length?t("files_sharing","No other users with access found"):""},toggleTooltip:function(){return"dir"===this.fileInfo.type?t("files_sharing","Toggle list of others with access to this directory"):t("files_sharing","Toggle list of others with access to this file")},fullPath:function(){return"".concat(this.fileInfo.path,"/").concat(this.fileInfo.name).replace("//","/")}},watch:{fileInfo:function(){this.resetState()}},methods:{toggleInheritedShares:function(){this.showInheritedShares=!this.showInheritedShares,this.showInheritedShares?this.fetchInheritedShares():this.resetState()},fetchInheritedShares:function(){var n,e=this;return(n=regeneratorRuntime.mark((function n(){var r,i;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return e.loading=!0,n.prev=1,r=(0,l.generateOcsUrl)("apps/files_sharing/api/v1/shares/inherited?format=json&path={path}",{path:e.fullPath}),n.next=5,d.default.get(r);case 5:i=n.sent,e.shares=i.data.ocs.data.map((function(n){return new v(n)})).sort((function(n,e){return e.createdTime-n.createdTime})),console.info(e.shares),e.loaded=!0,n.next=14;break;case 11:n.prev=11,n.t0=n.catch(1),OC.Notification.showTemporary(t("files_sharing","Unable to fetch inherited shares"),{type:"error"});case 14:return n.prev=14,e.loading=!1,n.finish(14);case 17:case"end":return n.stop()}}),n,null,[[1,11,14,17]])})),function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){Yn(a,r,i,s,o,"next",n)}function o(n){Yn(a,r,i,s,o,"throw",n)}s(void 0)}))})()},resetState:function(){this.loaded=!1,this.loading=!1,this.showInheritedShares=!1,this.shares=[]}}},Un=Hn,Mn=r(79031),Bn={};Bn.styleTagTransform=H(),Bn.setAttributes=I(),Bn.insert=D().bind(null,"head"),Bn.domAPI=T(),Bn.insertStyleElement=N(),k()(Mn.Z,Bn),Mn.Z&&Mn.Z.locals&&Mn.Z.locals;var Wn=(0,B.Z)(Un,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("ul",{attrs:{id:"sharing-inherited-shares"}},[t("SharingEntrySimple",{staticClass:"sharing-entry__inherited",attrs:{title:n.mainTitle,subtitle:n.subTitle,"aria-expanded":n.showInheritedShares},scopedSlots:n._u([{key:"avatar",fn:function(){return[t("div",{staticClass:"avatar-shared icon-more-white"})]},proxy:!0}])},[n._v(" "),t("ActionButton",{attrs:{icon:n.showInheritedSharesIcon},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),n.toggleInheritedShares.apply(null,arguments)}}},[n._v("\n\t\t\t"+n._s(n.toggleTooltip)+"\n\t\t")])],1),n._v(" "),n._l(n.shares,(function(e){return t("SharingEntryInherited",{key:e.id,attrs:{"file-info":n.fileInfo,share:e}})}))],2)}),[],!1,null,"7a52663c",null),jn=Wn.exports,qn=r(83779),Fn=r.n(qn),$n=r(88408),Zn=r.n($n),Gn=r(33521),Vn=r.n(Gn),Kn=r(97654),Qn=r.n(Kn),zn={name:"ExternalShareAction",props:{id:{type:String,required:!0},action:{type:Object,default:function(){return{}}},fileInfo:{type:Object,default:function(){},required:!0},share:{type:v,default:null}},computed:{data:function(){return this.action.data(this)}}},Jn=(0,B.Z)(zn,(function(){var n=this,e=n.$createElement;return(n._self._c||e)(n.data.is,n._g(n._b({tag:"Component"},"Component",n.data,!1),n.action.handlers),[n._v("\n\t"+n._s(n.data.text)+"\n")])}),[],!1,null,null,null).exports,Xn=r(10949),ne=r.n(Xn),ee={NONE:0,READ:1,UPDATE:2,CREATE:4,DELETE:8,SHARE:16},te={READ_ONLY:ee.READ,UPLOAD_AND_UPDATE:ee.READ|ee.UPDATE|ee.CREATE|ee.DELETE,FILE_DROP:ee.CREATE,ALL:ee.UPDATE|ee.CREATE|ee.READ|ee.DELETE|ee.SHARE};function re(n,e){return n!==ee.NONE&&(n&e)===e}function ie(n){return!(!re(n,ee.READ)&&!re(n,ee.CREATE)||!re(n,ee.READ)&&(re(n,ee.UPDATE)||re(n,ee.DELETE)))}function ae(n,e){return re(n,e)?function(n,e){return n&~e}(n,e):function(n,e){return n|e}(n,e)}var se=r(26937),oe=r(91889),ce={name:"SharePermissionsEditor",components:{ActionButton:Sn(),ActionCheckbox:Fn(),ActionRadio:ne(),Tune:se.Z,ChevronLeft:oe.default},mixins:[Rn],data:function(){return{randomFormName:Math.random().toString(27).substring(2),showCustomPermissionsForm:!1,atomicPermissions:ee,bundledPermissions:te}},computed:{sharePermissionsSummary:function(){var n=this;return Object.values(this.atomicPermissions).filter((function(e){return n.shareHasPermissions(e)})).map((function(e){switch(e){case n.atomicPermissions.CREATE:return n.t("files_sharing","Upload");case n.atomicPermissions.READ:return n.t("files_sharing","Read");case n.atomicPermissions.UPDATE:return n.t("files_sharing","Edit");case n.atomicPermissions.DELETE:return n.t("files_sharing","Delete");default:return null}})).filter((function(n){return null!==n})).join(", ")},sharePermissionsIsBundle:function(){var n=this;return Object.values(te).map((function(e){return n.sharePermissionEqual(e)})).filter((function(n){return n})).length>0},sharePermissionsSetIsValid:function(){return ie(this.share.permissions)},isFolder:function(){return"dir"===this.fileInfo.type},fileHasCreatePermission:function(){return!!(this.fileInfo.permissions&ee.CREATE)}},mounted:function(){this.showCustomPermissionsForm=!this.sharePermissionsIsBundle},methods:{sharePermissionEqual:function(n){return(this.share.permissions&~ee.SHARE)===n},shareHasPermissions:function(n){return re(this.share.permissions,n)},setSharePermissions:function(n){this.share.permissions=n,this.queueUpdate("permissions")},canToggleSharePermissions:function(n){return function(n,e){return ie(ae(n,e))}(this.share.permissions,n)},toggleSharePermissions:function(n){this.share.permissions=ae(this.share.permissions,n),ie(this.share.permissions)&&this.queueUpdate("permissions")}}},le=r(30141),ue={};ue.styleTagTransform=H(),ue.setAttributes=I(),ue.insert=D().bind(null,"head"),ue.domAPI=T(),ue.insertStyleElement=N(),k()(le.Z,ue),le.Z&&le.Z.locals&&le.Z.locals;var he=(0,B.Z)(ce,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("li",[t("ul",[n.isFolder?n._e():t("ActionCheckbox",{attrs:{checked:n.shareHasPermissions(n.atomicPermissions.UPDATE),disabled:n.saving},on:{"update:checked":function(e){return n.toggleSharePermissions(n.atomicPermissions.UPDATE)}}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Allow editing"))+"\n\t\t")]),n._v(" "),n.isFolder&&n.fileHasCreatePermission&&n.config.isPublicUploadEnabled?[n.showCustomPermissionsForm?t("span",{class:{error:!n.sharePermissionsSetIsValid}},[t("ActionCheckbox",{attrs:{checked:n.shareHasPermissions(n.atomicPermissions.READ),disabled:n.saving||!n.canToggleSharePermissions(n.atomicPermissions.READ)},on:{"update:checked":function(e){return n.toggleSharePermissions(n.atomicPermissions.READ)}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Read"))+"\n\t\t\t\t")]),n._v(" "),t("ActionCheckbox",{attrs:{checked:n.shareHasPermissions(n.atomicPermissions.CREATE),disabled:n.saving||!n.canToggleSharePermissions(n.atomicPermissions.CREATE)},on:{"update:checked":function(e){return n.toggleSharePermissions(n.atomicPermissions.CREATE)}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Upload"))+"\n\t\t\t\t")]),n._v(" "),t("ActionCheckbox",{attrs:{checked:n.shareHasPermissions(n.atomicPermissions.UPDATE),disabled:n.saving||!n.canToggleSharePermissions(n.atomicPermissions.UPDATE)},on:{"update:checked":function(e){return n.toggleSharePermissions(n.atomicPermissions.UPDATE)}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Edit"))+"\n\t\t\t\t")]),n._v(" "),t("ActionCheckbox",{attrs:{checked:n.shareHasPermissions(n.atomicPermissions.DELETE),disabled:n.saving||!n.canToggleSharePermissions(n.atomicPermissions.DELETE)},on:{"update:checked":function(e){return n.toggleSharePermissions(n.atomicPermissions.DELETE)}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Delete"))+"\n\t\t\t\t")]),n._v(" "),t("ActionButton",{on:{click:function(e){n.showCustomPermissionsForm=!1}},scopedSlots:n._u([{key:"icon",fn:function(){return[t("ChevronLeft")]},proxy:!0}],null,!1,1018742195)},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Bundled permissions"))+"\n\t\t\t\t")])],1):[t("ActionRadio",{attrs:{checked:n.sharePermissionEqual(n.bundledPermissions.READ_ONLY),value:n.bundledPermissions.READ_ONLY,name:n.randomFormName,disabled:n.saving},on:{change:function(e){return n.setSharePermissions(n.bundledPermissions.READ_ONLY)}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Read only"))+"\n\t\t\t\t")]),n._v(" "),t("ActionRadio",{attrs:{checked:n.sharePermissionEqual(n.bundledPermissions.UPLOAD_AND_UPDATE),value:n.bundledPermissions.UPLOAD_AND_UPDATE,disabled:n.saving,name:n.randomFormName},on:{change:function(e){return n.setSharePermissions(n.bundledPermissions.UPLOAD_AND_UPDATE)}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Allow upload and editing"))+"\n\t\t\t\t")]),n._v(" "),t("ActionRadio",{staticClass:"sharing-entry__action--public-upload",attrs:{checked:n.sharePermissionEqual(n.bundledPermissions.FILE_DROP),value:n.bundledPermissions.FILE_DROP,disabled:n.saving,name:n.randomFormName},on:{change:function(e){return n.setSharePermissions(n.bundledPermissions.FILE_DROP)}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","File drop (upload only)"))+"\n\t\t\t\t")]),n._v(" "),t("ActionButton",{attrs:{title:n.t("files_sharing","Custom permissions")},on:{click:function(e){n.showCustomPermissionsForm=!0}},scopedSlots:n._u([{key:"icon",fn:function(){return[t("Tune")]},proxy:!0}],null,!1,961531849)},[n._v("\n\t\t\t\t\t"+n._s(n.sharePermissionsIsBundle?"":n.sharePermissionsSummary)+"\n\t\t\t\t")])]]:n._e()],2)])}),[],!1,null,"ea414898",null).exports;function de(n){return de="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},de(n)}function pe(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}function fe(n){return function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){pe(a,r,i,s,o,"next",n)}function o(n){pe(a,r,i,s,o,"throw",n)}s(void 0)}))}}var ge={name:"SharingEntryLink",components:{Actions:w(),ActionButton:Sn(),ActionCheckbox:Fn(),ActionInput:Zn(),ActionLink:y(),ActionText:xn(),ActionTextEditable:Qn(),ActionSeparator:Vn(),Avatar:h(),ExternalShareAction:Jn,SharePermissionsEditor:he},directives:{Tooltip:b()},mixins:[Rn],props:{canReshare:{type:Boolean,default:!0}},data:function(){return{copySuccess:!0,copied:!1,pending:!1,ExternalLegacyLinkActions:OCA.Sharing.ExternalLinkActions.state,ExternalShareActions:OCA.Sharing.ExternalShareActions.state}},computed:{title:function(){if(this.share&&this.share.id){if(!this.isShareOwner&&this.share.ownerDisplayName)return this.isEmailShareType?t("files_sharing","{shareWith} by {initiator}",{shareWith:this.share.shareWith,initiator:this.share.ownerDisplayName}):t("files_sharing","Shared via link by {initiator}",{initiator:this.share.ownerDisplayName});if(this.share.label&&""!==this.share.label.trim())return this.isEmailShareType?t("files_sharing","Mail share ({label})",{label:this.share.label.trim()}):t("files_sharing","Share link ({label})",{label:this.share.label.trim()});if(this.isEmailShareType)return this.share.shareWith}return t("files_sharing","Share link")},subtitle:function(){return this.isEmailShareType&&this.title!==this.share.shareWith?this.share.shareWith:null},hasExpirationDate:{get:function(){return this.config.isDefaultExpireDateEnforced||!!this.share.expireDate},set:function(n){var e=moment(this.config.defaultExpirationDateString);e.isValid()||(e=moment()),this.share.state.expiration=n?e.format("YYYY-MM-DD"):"",console.debug("Expiration date status",n,this.share.expireDate)}},dateMaxEnforced:function(){return this.config.isDefaultExpireDateEnforced&&moment().add(1+this.config.defaultExpireDate,"days")},isPasswordProtected:{get:function(){return this.config.enforcePasswordForPublicLink||!!this.share.password},set:function(n){var e=this;return fe(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(t.t0=i.default,t.t1=e.share,!n){t.next=8;break}return t.next=5,an();case 5:t.t2=t.sent,t.next=9;break;case 8:t.t2="";case 9:t.t3=t.t2,t.t0.set.call(t.t0,t.t1,"password",t.t3),i.default.set(e.share,"newPassword",e.share.password);case 12:case"end":return t.stop()}}),t)})))()}},passwordExpirationTime:function(){if(null===this.share.passwordExpirationTime)return null;var n=moment(this.share.passwordExpirationTime);return!(n.diff(moment())<0)&&n.fromNow()},isTalkEnabled:function(){return void 0!==OC.appswebroots.spreed},isPasswordProtectedByTalkAvailable:function(){return this.isPasswordProtected&&this.isTalkEnabled},isPasswordProtectedByTalk:{get:function(){return this.share.sendPasswordByTalk},set:function(n){var e=this;return fe(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:e.share.sendPasswordByTalk=n;case 1:case"end":return t.stop()}}),t)})))()}},isEmailShareType:function(){return!!this.share&&this.share.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL},canTogglePasswordProtectedByTalkAvailable:function(){return!(!this.isPasswordProtected||this.isEmailShareType&&!this.hasUnsavedPassword)},pendingPassword:function(){return this.config.enforcePasswordForPublicLink&&this.share&&!this.share.id},pendingExpirationDate:function(){return this.config.isDefaultExpireDateEnforced&&this.share&&!this.share.id},hasUnsavedPassword:function(){return void 0!==this.share.newPassword},shareLink:function(){return window.location.protocol+"//"+window.location.host+(0,l.generateUrl)("/s/")+this.share.token},clipboardTooltip:function(){return this.copied?this.copySuccess?t("files_sharing","Link copied"):t("files_sharing","Cannot copy, please copy the link manually"):t("files_sharing","Copy to clipboard")},externalLegacyLinkActions:function(){return this.ExternalLegacyLinkActions.actions},externalLinkActions:function(){return this.ExternalShareActions.actions.filter((function(n){return n.shareType.includes(g.D.SHARE_TYPE_LINK)||n.shareType.includes(g.D.SHARE_TYPE_EMAIL)}))},isPasswordPolicyEnabled:function(){return"object"===de(this.config.passwordPolicy)}},methods:{onNewLinkShare:function(){var n=this;return fe(regeneratorRuntime.mark((function e(){var r,i,a,s;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!n.loading){e.next=2;break}return e.abrupt("return");case 2:if(r={share_type:g.D.SHARE_TYPE_LINK},n.config.isDefaultExpireDateEnforced&&(r.expiration=n.config.defaultExpirationDateString),!n.config.enableLinkPasswordByDefault){e.next=8;break}return e.next=7,an();case 7:r.password=e.sent;case 8:if(!n.config.enforcePasswordForPublicLink&&!n.config.isDefaultExpireDateEnforced){e.next=33;break}if(n.pending=!0,!n.share||n.share.id){e.next=20;break}if(!n.checkShare(n.share)){e.next=17;break}return e.next=14,n.pushNewLinkShare(n.share,!0);case 14:return e.abrupt("return",!0);case 17:return n.open=!0,OC.Notification.showTemporary(t("files_sharing","Error, please enter proper password and/or expiration date")),e.abrupt("return",!1);case 20:if(!n.config.enforcePasswordForPublicLink){e.next=24;break}return e.next=23,an();case 23:r.password=e.sent;case 24:return i=new v(r),e.next=27,new Promise((function(e){n.$emit("add:share",i,e)}));case 27:a=e.sent,n.open=!1,n.pending=!1,a.open=!0,e.next=36;break;case 33:return s=new v(r),e.next=36,n.pushNewLinkShare(s);case 36:case"end":return e.stop()}}),e)})))()},pushNewLinkShare:function(n,e){var t=this;return fe(regeneratorRuntime.mark((function r(){var i,a,s,o,c;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(r.prev=0,!t.loading){r.next=3;break}return r.abrupt("return",!0);case 3:return t.loading=!0,t.errors={},i=(t.fileInfo.path+"/"+t.fileInfo.name).replace("//","/"),r.next=8,t.createShare({path:i,shareType:g.D.SHARE_TYPE_LINK,password:n.password,expireDate:n.expireDate});case 8:if(a=r.sent,t.open=!1,console.debug("Link share created",a),!e){r.next=17;break}return r.next=14,new Promise((function(n){t.$emit("update:share",a,n)}));case 14:s=r.sent,r.next=20;break;case 17:return r.next=19,new Promise((function(n){t.$emit("add:share",a,n)}));case 19:s=r.sent;case 20:t.config.enforcePasswordForPublicLink||s.copyLink(),r.next=28;break;case 23:r.prev=23,r.t0=r.catch(0),o=r.t0.response,(c=o.data.ocs.meta.message).match(/password/i)?t.onSyncError("password",c):c.match(/date/i)?t.onSyncError("expireDate",c):t.onSyncError("pending",c);case 28:return r.prev=28,t.loading=!1,r.finish(28);case 31:case"end":return r.stop()}}),r,null,[[0,23,28,31]])})))()},onLabelChange:function(n){this.$set(this.share,"newLabel",n.trim())},onLabelSubmit:function(){"string"==typeof this.share.newLabel&&(this.share.label=this.share.newLabel,this.$delete(this.share,"newLabel"),this.queueUpdate("label"))},copyLink:function(){var n=this;return fe(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,n.$copyText(n.shareLink);case 3:n.$refs.copyButton.$el.focus(),n.copySuccess=!0,n.copied=!0,e.next=13;break;case 8:e.prev=8,e.t0=e.catch(0),n.copySuccess=!1,n.copied=!0,console.error(e.t0);case 13:return e.prev=13,setTimeout((function(){n.copySuccess=!1,n.copied=!1}),4e3),e.finish(13);case 16:case"end":return e.stop()}}),e,null,[[0,8,13,16]])})))()},onPasswordChange:function(n){this.$set(this.share,"newPassword",n)},onPasswordDisable:function(){this.share.password="",this.$delete(this.share,"newPassword"),this.share.id&&this.queueUpdate("password")},onPasswordSubmit:function(){this.hasUnsavedPassword&&(this.share.password=this.share.newPassword.trim(),this.queueUpdate("password"))},onPasswordProtectedByTalkChange:function(){this.hasUnsavedPassword&&(this.share.password=this.share.newPassword.trim()),this.queueUpdate("sendPasswordByTalk","password")},onMenuClose:function(){this.onPasswordSubmit(),this.onNoteSubmit()},onCancel:function(){this.$emit("remove:share",this.share)}}},me=r(62868),ve={};ve.styleTagTransform=H(),ve.setAttributes=I(),ve.insert=D().bind(null,"head"),ve.domAPI=T(),ve.insertStyleElement=N(),k()(me.Z,ve),me.Z&&me.Z.locals&&me.Z.locals;var _e=(0,B.Z)(ge,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("li",{staticClass:"sharing-entry sharing-entry__link",class:{"sharing-entry--share":n.share}},[t("Avatar",{staticClass:"sharing-entry__avatar",attrs:{"is-no-user":!0,"icon-class":n.isEmailShareType?"avatar-link-share icon-mail-white":"avatar-link-share icon-public-white"}}),n._v(" "),t("div",{staticClass:"sharing-entry__desc"},[t("span",{staticClass:"sharing-entry__title",attrs:{title:n.title}},[n._v("\n\t\t\t"+n._s(n.title)+"\n\t\t")]),n._v(" "),n.subtitle?t("p",[n._v("\n\t\t\t"+n._s(n.subtitle)+"\n\t\t")]):n._e()]),n._v(" "),n.share&&!n.isEmailShareType&&n.share.token?t("Actions",{ref:"copyButton",staticClass:"sharing-entry__copy"},[t("ActionLink",{attrs:{href:n.shareLink,target:"_blank",icon:n.copied&&n.copySuccess?"icon-checkmark-color":"icon-clippy"},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),n.copyLink.apply(null,arguments)}}},[n._v("\n\t\t\t"+n._s(n.clipboardTooltip)+"\n\t\t")])],1):n._e(),n._v(" "),n.pending||!n.pendingPassword&&!n.pendingExpirationDate?n.loading?t("div",{staticClass:"icon-loading-small sharing-entry__loading"}):t("Actions",{staticClass:"sharing-entry__actions",attrs:{"menu-align":"right",open:n.open},on:{"update:open":function(e){n.open=e},close:n.onMenuClose}},[n.share?[n.share.canEdit&&n.canReshare?[t("ActionInput",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.label,show:n.errors.label,trigger:"manual",defaultContainer:".app-sidebar"},expression:"{\n\t\t\t\t\t\tcontent: errors.label,\n\t\t\t\t\t\tshow: errors.label,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '.app-sidebar'\n\t\t\t\t\t}",modifiers:{auto:!0}}],ref:"label",class:{error:n.errors.label},attrs:{disabled:n.saving,"aria-label":n.t("files_sharing","Share label"),value:void 0!==n.share.newLabel?n.share.newLabel:n.share.label,icon:"icon-edit",maxlength:"255"},on:{"update:value":n.onLabelChange,submit:n.onLabelSubmit}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Share label"))+"\n\t\t\t\t")]),n._v(" "),t("SharePermissionsEditor",{attrs:{"can-reshare":n.canReshare,share:n.share,"file-info":n.fileInfo},on:{"update:share":function(e){n.share=e}}}),n._v(" "),t("ActionSeparator"),n._v(" "),t("ActionCheckbox",{attrs:{checked:n.share.hideDownload,disabled:n.saving},on:{"update:checked":function(e){return n.$set(n.share,"hideDownload",e)},change:function(e){return n.queueUpdate("hideDownload")}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Hide download"))+"\n\t\t\t\t")]),n._v(" "),t("ActionCheckbox",{staticClass:"share-link-password-checkbox",attrs:{checked:n.isPasswordProtected,disabled:n.config.enforcePasswordForPublicLink||n.saving},on:{"update:checked":function(e){n.isPasswordProtected=e},uncheck:n.onPasswordDisable}},[n._v("\n\t\t\t\t\t"+n._s(n.config.enforcePasswordForPublicLink?n.t("files_sharing","Password protection (enforced)"):n.t("files_sharing","Password protect"))+"\n\t\t\t\t")]),n._v(" "),n.isPasswordProtected?t("ActionInput",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.password,show:n.errors.password,trigger:"manual",defaultContainer:"#app-sidebar"},expression:"{\n\t\t\t\t\t\tcontent: errors.password,\n\t\t\t\t\t\tshow: errors.password,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t}",modifiers:{auto:!0}}],ref:"password",staticClass:"share-link-password",class:{error:n.errors.password},attrs:{disabled:n.saving,required:n.config.enforcePasswordForPublicLink,value:n.hasUnsavedPassword?n.share.newPassword:"***************",icon:"icon-password",autocomplete:"new-password",type:n.hasUnsavedPassword?"text":"password"},on:{"update:value":n.onPasswordChange,submit:n.onPasswordSubmit}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Enter a password"))+"\n\t\t\t\t")]):n._e(),n._v(" "),n.isEmailShareType&&n.passwordExpirationTime?t("ActionText",{attrs:{icon:"icon-info"}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Password expires {passwordExpirationTime}",{passwordExpirationTime:n.passwordExpirationTime}))+"\n\t\t\t\t")]):n.isEmailShareType&&null!==n.passwordExpirationTime?t("ActionText",{attrs:{icon:"icon-error"}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Password expired"))+"\n\t\t\t\t")]):n._e(),n._v(" "),n.isPasswordProtectedByTalkAvailable?t("ActionCheckbox",{staticClass:"share-link-password-talk-checkbox",attrs:{checked:n.isPasswordProtectedByTalk,disabled:!n.canTogglePasswordProtectedByTalkAvailable||n.saving},on:{"update:checked":function(e){n.isPasswordProtectedByTalk=e},change:n.onPasswordProtectedByTalkChange}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Video verification"))+"\n\t\t\t\t")]):n._e(),n._v(" "),t("ActionCheckbox",{staticClass:"share-link-expire-date-checkbox",attrs:{checked:n.hasExpirationDate,disabled:n.config.isDefaultExpireDateEnforced||n.saving},on:{"update:checked":function(e){n.hasExpirationDate=e},uncheck:n.onExpirationDisable}},[n._v("\n\t\t\t\t\t"+n._s(n.config.isDefaultExpireDateEnforced?n.t("files_sharing","Expiration date (enforced)"):n.t("files_sharing","Set expiration date"))+"\n\t\t\t\t")]),n._v(" "),n.hasExpirationDate?t("ActionInput",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.expireDate,show:n.errors.expireDate,trigger:"manual",defaultContainer:"#app-sidebar"},expression:"{\n\t\t\t\t\t\tcontent: errors.expireDate,\n\t\t\t\t\t\tshow: errors.expireDate,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t}",modifiers:{auto:!0}}],ref:"expireDate",staticClass:"share-link-expire-date",class:{error:n.errors.expireDate},attrs:{disabled:n.saving,lang:n.lang,value:n.share.expireDate,"value-type":"format",icon:"icon-calendar-dark",type:"date","disabled-date":n.disabledDate},on:{"update:value":n.onExpirationChange}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Enter a date"))+"\n\t\t\t\t")]):n._e(),n._v(" "),t("ActionCheckbox",{attrs:{checked:n.hasNote,disabled:n.saving},on:{"update:checked":function(e){n.hasNote=e},uncheck:function(e){return n.queueUpdate("note")}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Note to recipient"))+"\n\t\t\t\t")]),n._v(" "),n.hasNote?t("ActionTextEditable",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.note,show:n.errors.note,trigger:"manual",defaultContainer:"#app-sidebar"},expression:"{\n\t\t\t\t\t\tcontent: errors.note,\n\t\t\t\t\t\tshow: errors.note,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t}",modifiers:{auto:!0}}],ref:"note",class:{error:n.errors.note},attrs:{disabled:n.saving,placeholder:n.t("files_sharing","Enter a note for the share recipient"),value:n.share.newNote||n.share.note,icon:"icon-edit"},on:{"update:value":n.onNoteChange,submit:n.onNoteSubmit}}):n._e()]:n._e(),n._v(" "),t("ActionSeparator"),n._v(" "),n._l(n.externalLinkActions,(function(e){return t("ExternalShareAction",{key:e.id,attrs:{id:e.id,action:e,"file-info":n.fileInfo,share:n.share}})})),n._v(" "),n._l(n.externalLegacyLinkActions,(function(e,r){var i=e.icon,a=e.url,s=e.name;return t("ActionLink",{key:r,attrs:{href:a(n.shareLink),icon:i,target:"_blank"}},[n._v("\n\t\t\t\t"+n._s(s)+"\n\t\t\t")])})),n._v(" "),n.share.canDelete?t("ActionButton",{attrs:{icon:"icon-close",disabled:n.saving},on:{click:function(e){return e.preventDefault(),n.onDelete.apply(null,arguments)}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Unshare"))+"\n\t\t\t")]):n._e(),n._v(" "),!n.isEmailShareType&&n.canReshare?t("ActionButton",{staticClass:"new-share-link",attrs:{icon:"icon-add"},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),n.onNewLinkShare.apply(null,arguments)}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Add another link"))+"\n\t\t\t")]):n._e()]:n.canReshare?t("ActionButton",{staticClass:"new-share-link",attrs:{icon:n.loading?"icon-loading-small":"icon-add"},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),n.onNewLinkShare.apply(null,arguments)}}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Create a new share link"))+"\n\t\t")]):n._e()],2):t("Actions",{staticClass:"sharing-entry__actions",attrs:{"menu-align":"right",open:n.open},on:{"update:open":function(e){n.open=e},close:n.onNewLinkShare}},[n.errors.pending?t("ActionText",{class:{error:n.errors.pending},attrs:{icon:"icon-error"}},[n._v("\n\t\t\t"+n._s(n.errors.pending)+"\n\t\t")]):t("ActionText",{attrs:{icon:"icon-info"}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Please enter the following required information before creating the share"))+"\n\t\t")]),n._v(" "),n.pendingPassword?t("ActionText",{attrs:{icon:"icon-password"}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Password protection (enforced)"))+"\n\t\t")]):n.config.enableLinkPasswordByDefault?t("ActionCheckbox",{staticClass:"share-link-password-checkbox",attrs:{checked:n.isPasswordProtected,disabled:n.config.enforcePasswordForPublicLink||n.saving},on:{"update:checked":function(e){n.isPasswordProtected=e},uncheck:n.onPasswordDisable}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Password protection"))+"\n\t\t")]):n._e(),n._v(" "),n.pendingPassword||n.share.password?t("ActionInput",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.password,show:n.errors.password,trigger:"manual",defaultContainer:"#app-sidebar"},expression:"{\n\t\t\t\tcontent: errors.password,\n\t\t\t\tshow: errors.password,\n\t\t\t\ttrigger: 'manual',\n\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t}",modifiers:{auto:!0}}],staticClass:"share-link-password",attrs:{value:n.share.password,disabled:n.saving,required:n.config.enableLinkPasswordByDefault||n.config.enforcePasswordForPublicLink,minlength:n.isPasswordPolicyEnabled&&n.config.passwordPolicy.minLength,icon:"",autocomplete:"new-password"},on:{"update:value":function(e){return n.$set(n.share,"password",e)},submit:n.onNewLinkShare}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Enter a password"))+"\n\t\t")]):n._e(),n._v(" "),n.pendingExpirationDate?t("ActionText",{attrs:{icon:"icon-calendar-dark"}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Expiration date (enforced)"))+"\n\t\t")]):n._e(),n._v(" "),n.pendingExpirationDate?t("ActionInput",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.expireDate,show:n.errors.expireDate,trigger:"manual",defaultContainer:"#app-sidebar"},expression:"{\n\t\t\t\tcontent: errors.expireDate,\n\t\t\t\tshow: errors.expireDate,\n\t\t\t\ttrigger: 'manual',\n\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t}",modifiers:{auto:!0}}],staticClass:"share-link-expire-date",attrs:{disabled:n.saving,lang:n.lang,icon:"",type:"date","value-type":"format","disabled-date":n.disabledDate},model:{value:n.share.expireDate,callback:function(e){n.$set(n.share,"expireDate",e)},expression:"share.expireDate"}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Enter a date"))+"\n\t\t")]):n._e(),n._v(" "),t("ActionButton",{attrs:{icon:"icon-checkmark"},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),n.onNewLinkShare.apply(null,arguments)}}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Create share"))+"\n\t\t")]),n._v(" "),t("ActionButton",{attrs:{icon:"icon-close"},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),n.onCancel.apply(null,arguments)}}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Cancel"))+"\n\t\t")])],1)],1)}),[],!1,null,"16656e50",null),Ae={name:"SharingLinkList",components:{SharingEntryLink:_e.exports},mixins:[_],props:{fileInfo:{type:Object,default:function(){},required:!0},shares:{type:Array,default:function(){return[]},required:!0},canReshare:{type:Boolean,required:!0}},data:function(){return{canLinkShare:OC.getCapabilities().files_sharing.public.enabled}},computed:{hasLinkShares:function(){var n=this;return this.shares.filter((function(e){return e.type===n.SHARE_TYPES.SHARE_TYPE_LINK})).length>0},hasShares:function(){return this.shares.length>0}},methods:{addShare:function(n,e){this.shares.unshift(n),this.awaitForShare(n,e)},awaitForShare:function(n,e){var t=this;this.$nextTick((function(){var r=t.$children.find((function(e){return e.share===n}));r&&e(r)}))},removeShare:function(n){var e=this.shares.findIndex((function(e){return e===n}));this.shares.splice(e,1)}}},ye=(0,B.Z)(Ae,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return n.canLinkShare?t("ul",{staticClass:"sharing-link-list"},[!n.hasLinkShares&&n.canReshare?t("SharingEntryLink",{attrs:{"can-reshare":n.canReshare,"file-info":n.fileInfo},on:{"add:share":n.addShare}}):n._e(),n._v(" "),n.hasShares?n._l(n.shares,(function(e,r){return t("SharingEntryLink",{key:e.id,attrs:{"can-reshare":n.canReshare,share:n.shares[r],"file-info":n.fileInfo},on:{"update:share":[function(e){return n.$set(n.shares,r,e)},function(e){return n.awaitForShare.apply(void 0,arguments)}],"add:share":function(e){return n.addShare.apply(void 0,arguments)},"remove:share":n.removeShare}})})):n._e()],2):n._e()}),[],!1,null,null,null),Ee=ye.exports;function we(n){return we="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},we(n)}var Se={name:"SharingEntry",components:{Actions:w(),ActionButton:Sn(),ActionCheckbox:Fn(),ActionInput:Zn(),ActionTextEditable:Qn(),Avatar:h()},directives:{Tooltip:b()},mixins:[Rn],data:function(){return{permissionsEdit:OC.PERMISSION_UPDATE,permissionsCreate:OC.PERMISSION_CREATE,permissionsDelete:OC.PERMISSION_DELETE,permissionsRead:OC.PERMISSION_READ,permissionsShare:OC.PERMISSION_SHARE}},computed:{title:function(){var n=this.share.shareWithDisplayName;return this.share.type===this.SHARE_TYPES.SHARE_TYPE_GROUP?n+=" (".concat(t("files_sharing","group"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_ROOM?n+=" (".concat(t("files_sharing","conversation"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE?n+=" (".concat(t("files_sharing","remote"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP?n+=" (".concat(t("files_sharing","remote group"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_GUEST&&(n+=" (".concat(t("files_sharing","guest"),")")),n},tooltip:function(){if(this.share.owner!==this.share.uidFileOwner){var n={user:this.share.shareWithDisplayName,owner:this.share.ownerDisplayName};return this.share.type===this.SHARE_TYPES.SHARE_TYPE_GROUP?t("files_sharing","Shared with the group {user} by {owner}",n):this.share.type===this.SHARE_TYPES.SHARE_TYPE_ROOM?t("files_sharing","Shared with the conversation {user} by {owner}",n):t("files_sharing","Shared with {user} by {owner}",n)}return null},canHaveNote:function(){return!this.isRemote},isRemote:function(){return this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE||this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP},canSetEdit:function(){return this.fileInfo.sharePermissions&OC.PERMISSION_UPDATE||this.canEdit},canSetCreate:function(){return this.fileInfo.sharePermissions&OC.PERMISSION_CREATE||this.canCreate},canSetDelete:function(){return this.fileInfo.sharePermissions&OC.PERMISSION_DELETE||this.canDelete},canSetReshare:function(){return this.fileInfo.sharePermissions&OC.PERMISSION_SHARE||this.canReshare},canEdit:{get:function(){return this.share.hasUpdatePermission},set:function(n){this.updatePermissions({isEditChecked:n})}},canCreate:{get:function(){return this.share.hasCreatePermission},set:function(n){this.updatePermissions({isCreateChecked:n})}},canDelete:{get:function(){return this.share.hasDeletePermission},set:function(n){this.updatePermissions({isDeleteChecked:n})}},canReshare:{get:function(){return this.share.hasSharePermission},set:function(n){this.updatePermissions({isReshareChecked:n})}},hasRead:{get:function(){return this.share.hasReadPermission}},isFolder:function(){return"dir"===this.fileInfo.type},hasExpirationDate:{get:function(){return this.config.isDefaultInternalExpireDateEnforced||!!this.share.expireDate},set:function(n){this.share.expireDate=n?""!==this.config.defaultInternalExpirationDateString?this.config.defaultInternalExpirationDateString:moment().format("YYYY-MM-DD"):""}},dateMaxEnforced:function(){return this.isRemote?this.config.isDefaultRemoteExpireDateEnforced&&moment().add(1+this.config.defaultRemoteExpireDate,"days"):this.config.isDefaultInternalExpireDateEnforced&&moment().add(1+this.config.defaultInternalExpireDate,"days")},hasStatus:function(){return this.share.type===this.SHARE_TYPES.SHARE_TYPE_USER&&"object"===we(this.share.status)&&!Array.isArray(this.share.status)}},methods:{updatePermissions:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=n.isEditChecked,t=void 0===e?this.canEdit:e,r=n.isCreateChecked,i=void 0===r?this.canCreate:r,a=n.isDeleteChecked,s=void 0===a?this.canDelete:a,o=n.isReshareChecked,c=void 0===o?this.canReshare:o,l=0|(this.hasRead?this.permissionsRead:0)|(i?this.permissionsCreate:0)|(s?this.permissionsDelete:0)|(t?this.permissionsEdit:0)|(c?this.permissionsShare:0);this.share.permissions=l,this.queueUpdate("permissions")},onMenuClose:function(){this.onNoteSubmit()}}},be=Se,Ce=r(24061),xe={};xe.styleTagTransform=H(),xe.setAttributes=I(),xe.insert=D().bind(null,"head"),xe.domAPI=T(),xe.insertStyleElement=N(),k()(Ce.Z,xe),Ce.Z&&Ce.Z.locals&&Ce.Z.locals;var ke=(0,B.Z)(be,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("li",{staticClass:"sharing-entry"},[t("Avatar",{staticClass:"sharing-entry__avatar",attrs:{"is-no-user":n.share.type!==n.SHARE_TYPES.SHARE_TYPE_USER,user:n.share.shareWith,"display-name":n.share.shareWithDisplayName,"tooltip-message":n.share.type===n.SHARE_TYPES.SHARE_TYPE_USER?n.share.shareWith:"","menu-position":"left",url:n.share.shareWithAvatar}}),n._v(" "),t(n.share.shareWithLink?"a":"div",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:n.tooltip,expression:"tooltip",modifiers:{auto:!0}}],tag:"component",staticClass:"sharing-entry__desc",attrs:{href:n.share.shareWithLink}},[t("span",[n._v(n._s(n.title)),n.isUnique?n._e():t("span",{staticClass:"sharing-entry__desc-unique"},[n._v(" ("+n._s(n.share.shareWithDisplayNameUnique)+")")])]),n._v(" "),n.hasStatus?t("p",[t("span",[n._v(n._s(n.share.status.icon||""))]),n._v(" "),t("span",[n._v(n._s(n.share.status.message||""))])]):n._e()]),n._v(" "),t("Actions",{staticClass:"sharing-entry__actions",attrs:{"menu-align":"right"},on:{close:n.onMenuClose}},[n.share.canEdit?[t("ActionCheckbox",{ref:"canEdit",attrs:{checked:n.canEdit,value:n.permissionsEdit,disabled:n.saving||!n.canSetEdit},on:{"update:checked":function(e){n.canEdit=e}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Allow editing"))+"\n\t\t\t")]),n._v(" "),n.isFolder?t("ActionCheckbox",{ref:"canCreate",attrs:{checked:n.canCreate,value:n.permissionsCreate,disabled:n.saving||!n.canSetCreate},on:{"update:checked":function(e){n.canCreate=e}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Allow creating"))+"\n\t\t\t")]):n._e(),n._v(" "),n.isFolder?t("ActionCheckbox",{ref:"canDelete",attrs:{checked:n.canDelete,value:n.permissionsDelete,disabled:n.saving||!n.canSetDelete},on:{"update:checked":function(e){n.canDelete=e}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Allow deleting"))+"\n\t\t\t")]):n._e(),n._v(" "),n.config.isResharingAllowed?t("ActionCheckbox",{ref:"canReshare",attrs:{checked:n.canReshare,value:n.permissionsShare,disabled:n.saving||!n.canSetReshare},on:{"update:checked":function(e){n.canReshare=e}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Allow resharing"))+"\n\t\t\t")]):n._e(),n._v(" "),t("ActionCheckbox",{attrs:{checked:n.hasExpirationDate,disabled:n.config.isDefaultInternalExpireDateEnforced||n.saving},on:{"update:checked":function(e){n.hasExpirationDate=e},uncheck:n.onExpirationDisable}},[n._v("\n\t\t\t\t"+n._s(n.config.isDefaultInternalExpireDateEnforced?n.t("files_sharing","Expiration date enforced"):n.t("files_sharing","Set expiration date"))+"\n\t\t\t")]),n._v(" "),n.hasExpirationDate?t("ActionInput",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.expireDate,show:n.errors.expireDate,trigger:"manual"},expression:"{\n\t\t\t\t\tcontent: errors.expireDate,\n\t\t\t\t\tshow: errors.expireDate,\n\t\t\t\t\ttrigger: 'manual'\n\t\t\t\t}",modifiers:{auto:!0}}],ref:"expireDate",class:{error:n.errors.expireDate},attrs:{disabled:n.saving,lang:n.lang,value:n.share.expireDate,"value-type":"format",icon:"icon-calendar-dark",type:"date","disabled-date":n.disabledDate},on:{"update:value":n.onExpirationChange}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Enter a date"))+"\n\t\t\t")]):n._e(),n._v(" "),n.canHaveNote?[t("ActionCheckbox",{attrs:{checked:n.hasNote,disabled:n.saving},on:{"update:checked":function(e){n.hasNote=e},uncheck:function(e){return n.queueUpdate("note")}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Note to recipient"))+"\n\t\t\t\t")]),n._v(" "),n.hasNote?t("ActionTextEditable",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.note,show:n.errors.note,trigger:"manual"},expression:"{\n\t\t\t\t\t\tcontent: errors.note,\n\t\t\t\t\t\tshow: errors.note,\n\t\t\t\t\t\ttrigger: 'manual'\n\t\t\t\t\t}",modifiers:{auto:!0}}],ref:"note",class:{error:n.errors.note},attrs:{disabled:n.saving,value:n.share.newNote||n.share.note,icon:"icon-edit"},on:{"update:value":n.onNoteChange,submit:n.onNoteSubmit}}):n._e()]:n._e()]:n._e(),n._v(" "),n.share.canDelete?t("ActionButton",{attrs:{icon:"icon-close",disabled:n.saving},on:{click:function(e){return e.preventDefault(),n.onDelete.apply(null,arguments)}}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Unshare"))+"\n\t\t")]):n._e()],2)],1)}),[],!1,null,"dc8e346e",null);function Pe(n,e){(null==e||e>n.length)&&(e=n.length);for(var t=0,r=new Array(e);t<e;t++)r[t]=n[t];return r}var Te={name:"SharingList",components:{SharingEntry:ke.exports},mixins:[_],props:{fileInfo:{type:Object,default:function(){},required:!0},shares:{type:Array,default:function(){return[]},required:!0}},computed:{hasShares:function(){return 0===this.shares.length},isUnique:function(){var n=this;return function(e){return(t=n.shares,function(n){if(Array.isArray(n))return Pe(n)}(t)||function(n){if("undefined"!=typeof Symbol&&null!=n[Symbol.iterator]||null!=n["@@iterator"])return Array.from(n)}(t)||function(n,e){if(n){if("string"==typeof n)return Pe(n,e);var t=Object.prototype.toString.call(n).slice(8,-1);return"Object"===t&&n.constructor&&(t=n.constructor.name),"Map"===t||"Set"===t?Array.from(n):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?Pe(n,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).filter((function(t){return e.type===n.SHARE_TYPES.SHARE_TYPE_USER&&e.shareWithDisplayName===t.shareWithDisplayName})).length<=1;var t}}},methods:{removeShare:function(n){var e=this.shares.findIndex((function(e){return e===n}));this.shares.splice(e,1)}}},Re=(0,B.Z)(Te,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("ul",{staticClass:"sharing-sharee-list"},n._l(n.shares,(function(e){return t("SharingEntry",{key:e.id,attrs:{"file-info":n.fileInfo,share:e,"is-unique":n.isUnique(e)},on:{"remove:share":n.removeShare}})})),1)}),[],!1,null,null,null).exports;function De(n,e){(null==e||e>n.length)&&(e=n.length);for(var t=0,r=new Array(e);t<e;t++)r[t]=n[t];return r}function Oe(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}function Ie(n){return function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){Oe(a,r,i,s,o,"next",n)}function o(n){Oe(a,r,i,s,o,"throw",n)}s(void 0)}))}}var Le={name:"SharingTab",components:{Avatar:h(),CollectionList:c.G,SharingEntryInternal:V,SharingEntrySimple:W,SharingInherited:jn,SharingInput:En,SharingLinkList:Ee,SharingList:Re},mixins:[_],data:function(){return{config:new f,error:"",expirationInterval:null,loading:!0,fileInfo:null,reshare:null,sharedWithMe:{},shares:[],linkShares:[],sections:OCA.Sharing.ShareTabSections.getSections()}},computed:{isSharedWithMe:function(){return Object.keys(this.sharedWithMe).length>0},canReshare:function(){return!!(this.fileInfo.permissions&OC.PERMISSION_SHARE)||!!(this.reshare&&this.reshare.hasSharePermission&&this.config.isResharingAllowed)}},methods:{update:function(n){var e=this;return Ie(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:e.fileInfo=n,e.resetState(),e.getShares();case 3:case"end":return t.stop()}}),t)})))()},getShares:function(){var n=this;return Ie(regeneratorRuntime.mark((function e(){var r,i,a,s,o,c,u,h,p,f,g,m;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,n.loading=!0,r=(0,l.generateOcsUrl)("apps/files_sharing/api/v1/shares"),i="json",a=(n.fileInfo.path+"/"+n.fileInfo.name).replace("//","/"),s=d.default.get(r,{params:{format:i,path:a,reshares:!0}}),o=d.default.get(r,{params:{format:i,path:a,shared_with_me:!0}}),e.next=9,Promise.all([s,o]);case 9:c=e.sent,_=2,u=function(n){if(Array.isArray(n))return n}(v=c)||function(n,e){var t=null==n?null:"undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(null!=t){var r,i,a=[],s=!0,o=!1;try{for(t=t.call(n);!(s=(r=t.next()).done)&&(a.push(r.value),!e||a.length!==e);s=!0);}catch(n){o=!0,i=n}finally{try{s||null==t.return||t.return()}finally{if(o)throw i}}return a}}(v,_)||function(n,e){if(n){if("string"==typeof n)return De(n,e);var t=Object.prototype.toString.call(n).slice(8,-1);return"Object"===t&&n.constructor&&(t=n.constructor.name),"Map"===t||"Set"===t?Array.from(n):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?De(n,e):void 0}}(v,_)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),h=u[0],p=u[1],n.loading=!1,n.processSharedWithMe(p),n.processShares(h),e.next=23;break;case 18:e.prev=18,e.t0=e.catch(0),null!==(f=e.t0.response.data)&&void 0!==f&&null!==(g=f.ocs)&&void 0!==g&&null!==(m=g.meta)&&void 0!==m&&m.message?n.error=e.t0.response.data.ocs.meta.message:n.error=t("files_sharing","Unable to load the shares list"),n.loading=!1,console.error("Error loading the shares list",e.t0);case 23:case"end":return e.stop()}var v,_}),e,null,[[0,18]])})))()},resetState:function(){clearInterval(this.expirationInterval),this.loading=!0,this.error="",this.sharedWithMe={},this.shares=[],this.linkShares=[]},updateExpirationSubtitle:function(n){var e=moment(n.expireDate).unix();this.$set(this.sharedWithMe,"subtitle",t("files_sharing","Expires {relativetime}",{relativetime:OC.Util.relativeModifiedDate(1e3*e)})),moment().unix()>e&&(clearInterval(this.expirationInterval),this.$set(this.sharedWithMe,"subtitle",t("files_sharing","this share just expired.")))},processShares:function(n){var e=this,t=n.data;if(t.ocs&&t.ocs.data&&t.ocs.data.length>0){var r=t.ocs.data.map((function(n){return new v(n)})).sort((function(n,e){return e.createdTime-n.createdTime}));this.linkShares=r.filter((function(n){return n.type===e.SHARE_TYPES.SHARE_TYPE_LINK||n.type===e.SHARE_TYPES.SHARE_TYPE_EMAIL})),this.shares=r.filter((function(n){return n.type!==e.SHARE_TYPES.SHARE_TYPE_LINK&&n.type!==e.SHARE_TYPES.SHARE_TYPE_EMAIL})),console.debug("Processed",this.linkShares.length,"link share(s)"),console.debug("Processed",this.shares.length,"share(s)")}},processSharedWithMe:function(n){var e=n.data;if(e.ocs&&e.ocs.data&&e.ocs.data[0]){var r=new v(e),i=function(n){return n.type===g.D.SHARE_TYPE_GROUP?t("files_sharing","Shared with you and the group {group} by {owner}",{group:n.shareWithDisplayName,owner:n.ownerDisplayName},void 0,{escape:!1}):n.type===g.D.SHARE_TYPE_CIRCLE?t("files_sharing","Shared with you and {circle} by {owner}",{circle:n.shareWithDisplayName,owner:n.ownerDisplayName},void 0,{escape:!1}):n.type===g.D.SHARE_TYPE_ROOM?n.shareWithDisplayName?t("files_sharing","Shared with you and the conversation {conversation} by {owner}",{conversation:n.shareWithDisplayName,owner:n.ownerDisplayName},void 0,{escape:!1}):t("files_sharing","Shared with you in a conversation by {owner}",{owner:n.ownerDisplayName},void 0,{escape:!1}):t("files_sharing","Shared with you by {owner}",{owner:n.ownerDisplayName},void 0,{escape:!1})}(r),a=r.ownerDisplayName,s=r.owner;this.sharedWithMe={displayName:a,title:i,user:s},this.reshare=r,r.expireDate&&moment(r.expireDate).unix()>moment().unix()&&(this.updateExpirationSubtitle(r),this.expirationInterval=setInterval(this.updateExpirationSubtitle,1e4,r))}else this.fileInfo&&void 0!==this.fileInfo.shareOwnerId&&this.fileInfo.shareOwnerId!==OC.currentUser&&(this.sharedWithMe={displayName:this.fileInfo.shareOwner,title:t("files_sharing","Shared with you by {owner}",{owner:this.fileInfo.shareOwner},void 0,{escape:!1}),user:this.fileInfo.shareOwnerId})},addShare:function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){};n.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL?this.linkShares.unshift(n):this.shares.unshift(n),this.awaitForShare(n,e)},awaitForShare:function(n,e){var t=this.$refs.shareList;n.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL&&(t=this.$refs.linkShareList),this.$nextTick((function(){var r=t.$children.find((function(e){return e.share===n}));r&&e(r)}))}}},Ne=Le,Ye=r(61618),He={};He.styleTagTransform=H(),He.setAttributes=I(),He.insert=D().bind(null,"head"),He.domAPI=T(),He.insertStyleElement=N(),k()(Ye.Z,He),Ye.Z&&Ye.Z.locals&&Ye.Z.locals;var Ue=(0,B.Z)(Ne,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("div",{class:{"icon-loading":n.loading}},[n.error?t("div",{staticClass:"emptycontent",class:{emptyContentWithSections:n.sections.length>0}},[t("div",{staticClass:"icon icon-error"}),n._v(" "),t("h2",[n._v(n._s(n.error))])]):[n.isSharedWithMe?t("SharingEntrySimple",n._b({staticClass:"sharing-entry__reshare",scopedSlots:n._u([{key:"avatar",fn:function(){return[t("Avatar",{staticClass:"sharing-entry__avatar",attrs:{user:n.sharedWithMe.user,"display-name":n.sharedWithMe.displayName,"tooltip-message":""}})]},proxy:!0}],null,!1,1643724538)},"SharingEntrySimple",n.sharedWithMe,!1)):n._e(),n._v(" "),n.loading?n._e():t("SharingInput",{attrs:{"can-reshare":n.canReshare,"file-info":n.fileInfo,"link-shares":n.linkShares,reshare:n.reshare,shares:n.shares},on:{"add:share":n.addShare}}),n._v(" "),n.loading?n._e():t("SharingLinkList",{ref:"linkShareList",attrs:{"can-reshare":n.canReshare,"file-info":n.fileInfo,shares:n.linkShares}}),n._v(" "),n.loading?n._e():t("SharingList",{ref:"shareList",attrs:{shares:n.shares,"file-info":n.fileInfo}}),n._v(" "),n.canReshare&&!n.loading?t("SharingInherited",{attrs:{"file-info":n.fileInfo}}):n._e(),n._v(" "),t("SharingEntryInternal",{attrs:{"file-info":n.fileInfo}}),n._v(" "),n.fileInfo?t("CollectionList",{attrs:{id:""+n.fileInfo.id,type:"file",name:n.fileInfo.name}}):n._e()],n._v(" "),n._l(n.sections,(function(e,r){return t("div",{key:r,ref:"section-"+r,refInFor:!0,staticClass:"sharingTab__additionalContent"},[t(e(n.$refs["section-"+r],n.fileInfo),{tag:"component",attrs:{"file-info":n.fileInfo}})],1)}))],2)}),[],!1,null,"b6bc0cd2",null).exports;function Me(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}var Be=function(){function n(){var e,t;!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),t=void 0,(e="_state")in this?Object.defineProperty(this,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):this[e]=t,this._state={},this._state.results=[],console.debug("OCA.Sharing.ShareSearch initialized")}var e,t;return e=n,(t=[{key:"state",get:function(){return this._state}},{key:"addNewResult",value:function(n){return""!==n.displayName.trim()&&"function"==typeof n.handler?(this._state.results.push(n),!0):(console.error("Invalid search result provided",n),!1)}}])&&Me(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}();function We(n){return We="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},We(n)}function je(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}var qe=function(){function n(){var e,t;!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),t=void 0,(e="_state")in this?Object.defineProperty(this,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):this[e]=t,this._state={},this._state.actions=[],console.debug("OCA.Sharing.ExternalLinkActions initialized")}var e,t;return e=n,(t=[{key:"state",get:function(){return this._state}},{key:"registerAction",value:function(n){return console.warn("OCA.Sharing.ExternalLinkActions is deprecated, use OCA.Sharing.ExternalShareAction instead"),"object"===We(n)&&n.icon&&n.name&&n.url?(this._state.actions.push(n),!0):(console.error("Invalid action provided",n),!1)}}])&&je(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}();function Fe(n){return Fe="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},Fe(n)}function $e(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}var Ze=function(){function n(){var e,t;!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),t=void 0,(e="_state")in this?Object.defineProperty(this,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):this[e]=t,this._state={},this._state.actions=[],console.debug("OCA.Sharing.ExternalShareActions initialized")}var e,t;return e=n,(t=[{key:"state",get:function(){return this._state}},{key:"registerAction",value:function(n){return"object"===Fe(n)&&"string"==typeof n.id&&"function"==typeof n.data&&Array.isArray(n.shareType)&&"object"===Fe(n.handlers)&&Object.values(n.handlers).every((function(n){return"function"==typeof n}))?this._state.actions.findIndex((function(e){return e.id===n.id}))>-1?(console.error("An action with the same id ".concat(n.id," already exists"),n),!1):(this._state.actions.push(n),!0):(console.error("Invalid action provided",n),!1)}}])&&$e(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}();function Ge(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}var Ve=function(){function n(){var e,t;!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),t=void 0,(e="_sections")in this?Object.defineProperty(this,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):this[e]=t,this._sections=[]}var e,t;return e=n,(t=[{key:"registerSection",value:function(n){this._sections.push(n)}},{key:"getSections",value:function(){return this._sections}}])&&Ge(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}();function Ke(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}window.OCA.Sharing||(window.OCA.Sharing={}),Object.assign(window.OCA.Sharing,{ShareSearch:new Be}),Object.assign(window.OCA.Sharing,{ExternalLinkActions:new qe}),Object.assign(window.OCA.Sharing,{ExternalShareActions:new Ze}),Object.assign(window.OCA.Sharing,{ShareTabSections:new Ve}),i.default.prototype.t=o.translate,i.default.prototype.n=o.translatePlural,i.default.use(s());var Qe=i.default.extend(Ue),ze=null;window.addEventListener("DOMContentLoaded",(function(){OCA.Files&&OCA.Files.Sidebar&&OCA.Files.Sidebar.registerTab(new OCA.Files.Sidebar.Tab({id:"sharing",name:(0,o.translate)("files_sharing","Sharing"),icon:"icon-share",mount:function(n,e,t){return(r=regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return ze&&ze.$destroy(),ze=new Qe({parent:t}),r.next=4,ze.update(e);case 4:ze.$mount(n);case 5:case"end":return r.stop()}}),r)})),function(){var n=this,e=arguments;return new Promise((function(t,i){var a=r.apply(n,e);function s(n){Ke(a,t,i,s,o,"next",n)}function o(n){Ke(a,t,i,s,o,"throw",n)}s(void 0)}))})();var r},update:function(n){ze.update(n)},destroy:function(){ze.$destroy(),ze=null}}))}))},30141:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".error[data-v-ea414898] .action-checkbox__label:before{border:1px solid var(--color-error)}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharePermissionsEditor.vue"],names:[],mappings:"AAiSC,wDACC,mCAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.error {\n\t::v-deep .action-checkbox__label:before {\n\t\tborder: 1px solid var(--color-error);\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},24061:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-entry[data-v-dc8e346e]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-dc8e346e]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-dc8e346e]{color:var(--color-text-maxcontrast)}.sharing-entry__desc-unique[data-v-dc8e346e]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-dc8e346e]{margin-left:auto}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntry.vue"],names:[],mappings:"AAsZA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAED,6CACC,mCAAA,CAGF,yCACC,gBAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t\t&-unique {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},71296:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-entry[data-v-29845767]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-29845767]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-29845767]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-29845767]{margin-left:auto}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryInherited.vue"],names:[],mappings:"AAgGA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAGF,yCACC,gBAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},5602:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-entry__internal .avatar-external[data-v-739d8480]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}.sharing-entry__internal .icon-checkmark-color[data-v-739d8480]{opacity:1}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryInternal.vue"],names:[],mappings:"AA0GC,2DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA,CAED,gEACC,SAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.sharing-entry__internal {\n\t.avatar-external {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},62868:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-entry[data-v-16656e50]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-16656e50]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em;overflow:hidden}.sharing-entry__desc p[data-v-16656e50]{color:var(--color-text-maxcontrast)}.sharing-entry__title[data-v-16656e50]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.sharing-entry:not(.sharing-entry--share) .sharing-entry__actions .new-share-link[data-v-16656e50]{border-top:1px solid var(--color-border)}.sharing-entry[data-v-16656e50] .avatar-link-share{background-color:var(--color-primary)}.sharing-entry .sharing-entry__action--public-upload[data-v-16656e50]{border-bottom:1px solid var(--color-border)}.sharing-entry__loading[data-v-16656e50]{width:44px;height:44px;margin:0;padding:14px;margin-left:auto}.sharing-entry .action-item[data-v-16656e50]{margin-left:auto}.sharing-entry .action-item~.action-item[data-v-16656e50],.sharing-entry .action-item~.sharing-entry__loading[data-v-16656e50]{margin-left:0}.sharing-entry .icon-checkmark-color[data-v-16656e50]{opacity:1}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryLink.vue"],names:[],mappings:"AAy2BA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,eAAA,CAEA,wCACC,mCAAA,CAGF,uCACC,sBAAA,CACA,eAAA,CACA,kBAAA,CAIA,mGACC,wCAAA,CAIF,oDACC,qCAAA,CAGD,sEACC,2CAAA,CAGD,yCACC,UAAA,CACA,WAAA,CACA,QAAA,CACA,YAAA,CACA,gBAAA,CAKD,6CACC,gBAAA,CACA,+HAEC,aAAA,CAIF,sDACC,SAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\toverflow: hidden;\n\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__title {\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t}\n\n\t&:not(.sharing-entry--share) &__actions {\n\t\t.new-share-link {\n\t\t\tborder-top: 1px solid var(--color-border);\n\t\t}\n\t}\n\n\t::v-deep .avatar-link-share {\n\t\tbackground-color: var(--color-primary);\n\t}\n\n\t.sharing-entry__action--public-upload {\n\t\tborder-bottom: 1px solid var(--color-border);\n\t}\n\n\t&__loading {\n\t\twidth: 44px;\n\t\theight: 44px;\n\t\tmargin: 0;\n\t\tpadding: 14px;\n\t\tmargin-left: auto;\n\t}\n\n\t// put menus to the left\n\t// but only the first one\n\t.action-item {\n\t\tmargin-left: auto;\n\t\t~ .action-item,\n\t\t~ .sharing-entry__loading {\n\t\t\tmargin-left: 0;\n\t\t}\n\t}\n\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},22695:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-entry[data-v-3483f0f7]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-3483f0f7]{padding:8px;line-height:1.2em;position:relative;flex:1 1;min-width:0}.sharing-entry__desc p[data-v-3483f0f7]{color:var(--color-text-maxcontrast)}.sharing-entry__title[data-v-3483f0f7]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:inherit}.sharing-entry__actions[data-v-3483f0f7]{margin-left:auto !important}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntrySimple.vue"],names:[],mappings:"AA2FA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,WAAA,CACA,iBAAA,CACA,iBAAA,CACA,QAAA,CACA,WAAA,CACA,wCACC,mCAAA,CAGF,uCACC,kBAAA,CACA,sBAAA,CACA,eAAA,CACA,iBAAA,CAED,yCACC,2BAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\t&__desc {\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tposition: relative;\n\t\tflex: 1 1;\n\t\tmin-width: 0;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__title {\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\tmax-width: inherit;\n\t}\n\t&__actions {\n\t\tmargin-left: auto !important;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},84721:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-input{width:100%;margin:10px 0}.sharing-input .multiselect__option span[lookup] .avatardiv{background-image:var(--icon-search-white);background-repeat:no-repeat;background-position:center;background-color:var(--color-text-maxcontrast) !important}.sharing-input .multiselect__option span[lookup] .avatardiv div{display:none}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingInput.vue"],names:[],mappings:"AA0gBA,eACC,UAAA,CACA,aAAA,CAKE,4DACC,yCAAA,CACA,2BAAA,CACA,0BAAA,CACA,yDAAA,CACA,gEACC,YAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.sharing-input {\n\twidth: 100%;\n\tmargin: 10px 0;\n\n\t// properly style the lookup entry\n\t.multiselect__option {\n\t\tspan[lookup] {\n\t\t\t.avatardiv {\n\t\t\t\tbackground-image: var(--icon-search-white);\n\t\t\t\tbackground-repeat: no-repeat;\n\t\t\t\tbackground-position: center;\n\t\t\t\tbackground-color: var(--color-text-maxcontrast) !important;\n\t\t\t\tdiv {\n\t\t\t\t\tdisplay: none;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},79031:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-entry__inherited .avatar-shared[data-v-7a52663c]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}","",{version:3,sources:["webpack://./apps/files_sharing/src/views/SharingInherited.vue"],names:[],mappings:"AA8JC,0DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.sharing-entry__inherited {\n\t.avatar-shared {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},61618:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".emptyContentWithSections[data-v-b6bc0cd2]{margin:1rem auto}","",{version:3,sources:["webpack://./apps/files_sharing/src/views/SharingTab.vue"],names:[],mappings:"AAyWA,2CACC,gBAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.emptyContentWithSections {\n\tmargin: 1rem auto;\n}\n"],sourceRoot:""}]),e.Z=s}},r={};function i(n){var t=r[n];if(void 0!==t)return t.exports;var a=r[n]={id:n,loaded:!1,exports:{}};return e[n].call(a.exports,a,a.exports,i),a.loaded=!0,a.exports}i.m=e,i.amdD=function(){throw new Error("define cannot be used indirect")},i.amdO={},n=[],i.O=function(e,t,r,a){if(!t){var s=1/0;for(u=0;u<n.length;u++){t=n[u][0],r=n[u][1],a=n[u][2];for(var o=!0,c=0;c<t.length;c++)(!1&a||s>=a)&&Object.keys(i.O).every((function(n){return i.O[n](t[c])}))?t.splice(c--,1):(o=!1,a<s&&(s=a));if(o){n.splice(u--,1);var l=r();void 0!==l&&(e=l)}}return e}a=a||0;for(var u=n.length;u>0&&n[u-1][2]>a;u--)n[u]=n[u-1];n[u]=[t,r,a]},i.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return i.d(e,{a:e}),e},i.d=function(n,e){for(var t in e)i.o(e,t)&&!i.o(n,t)&&Object.defineProperty(n,t,{enumerable:!0,get:e[t]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"==typeof window)return window}}(),i.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},i.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},i.nmd=function(n){return n.paths=[],n.children||(n.children=[]),n},i.j=7870,function(){i.b=document.baseURI||self.location.href;var n={7870:0};i.O.j=function(e){return 0===n[e]};var e=function(e,t){var r,a,s=t[0],o=t[1],c=t[2],l=0;if(s.some((function(e){return 0!==n[e]}))){for(r in o)i.o(o,r)&&(i.m[r]=o[r]);if(c)var u=c(i)}for(e&&e(t);l<s.length;l++)a=s[l],i.o(n,a)&&n[a]&&n[a][0](),n[a]=0;return i.O(u)},t=self.webpackChunknextcloud=self.webpackChunknextcloud||[];t.forEach(e.bind(null,0)),t.push=e.bind(null,t.push.bind(t))}(),i.nc=void 0;var a=i.O(void 0,[7874],(function(){return i(21883)}));a=i.O(a)}();
-//# sourceMappingURL=files_sharing-files_sharing_tab.js.map?v=e9152faf6b2f4eb19f61 \ No newline at end of file
+!function(){"use strict";var n,e={21883:function(n,e,r){var i=r(20144),a=r(72268),s=r.n(a),o=r(9944),c=r(1794),l=r(79753),u=r(28017),h=r.n(u),d=r(4820);function p(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}var f=function(){function n(){!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n)}var e,t;return e=n,(t=[{key:"isPublicUploadEnabled",get:function(){return document.getElementsByClassName("files-filestable")[0]&&"yes"===document.getElementsByClassName("files-filestable")[0].dataset.allowPublicUpload}},{key:"isShareWithLinkAllowed",get:function(){return document.getElementById("allowShareWithLink")&&"yes"===document.getElementById("allowShareWithLink").value}},{key:"federatedShareDocLink",get:function(){return OC.appConfig.core.federatedCloudShareDoc}},{key:"defaultExpirationDateString",get:function(){var n="";if(this.isDefaultExpireDateEnabled){var e=window.moment.utc(),t=this.defaultExpireDate;e.add(t,"days"),n=e.format("YYYY-MM-DD")}return n}},{key:"defaultInternalExpirationDateString",get:function(){var n="";if(this.isDefaultInternalExpireDateEnabled){var e=window.moment.utc(),t=this.defaultInternalExpireDate;e.add(t,"days"),n=e.format("YYYY-MM-DD")}return n}},{key:"defaultRemoteExpirationDateString",get:function(){var n="";if(this.isDefaultRemoteExpireDateEnabled){var e=window.moment.utc(),t=this.defaultRemoteExpireDate;e.add(t,"days"),n=e.format("YYYY-MM-DD")}return n}},{key:"enforcePasswordForPublicLink",get:function(){return!0===OC.appConfig.core.enforcePasswordForPublicLink}},{key:"enableLinkPasswordByDefault",get:function(){return!0===OC.appConfig.core.enableLinkPasswordByDefault}},{key:"isDefaultExpireDateEnforced",get:function(){return!0===OC.appConfig.core.defaultExpireDateEnforced}},{key:"isDefaultExpireDateEnabled",get:function(){return!0===OC.appConfig.core.defaultExpireDateEnabled}},{key:"isDefaultInternalExpireDateEnforced",get:function(){return!0===OC.appConfig.core.defaultInternalExpireDateEnforced}},{key:"isDefaultRemoteExpireDateEnforced",get:function(){return!0===OC.appConfig.core.defaultRemoteExpireDateEnforced}},{key:"isDefaultInternalExpireDateEnabled",get:function(){return!0===OC.appConfig.core.defaultInternalExpireDateEnabled}},{key:"isRemoteShareAllowed",get:function(){return!0===OC.appConfig.core.remoteShareAllowed}},{key:"isMailShareAllowed",get:function(){var n,e,t,r=OC.getCapabilities();return void 0!==(null==r||null===(n=r.files_sharing)||void 0===n?void 0:n.sharebymail)&&!0===(null==r||null===(e=r.files_sharing)||void 0===e||null===(t=e.public)||void 0===t?void 0:t.enabled)}},{key:"defaultExpireDate",get:function(){return OC.appConfig.core.defaultExpireDate}},{key:"defaultInternalExpireDate",get:function(){return OC.appConfig.core.defaultInternalExpireDate}},{key:"defaultRemoteExpireDate",get:function(){return OC.appConfig.core.defaultRemoteExpireDate}},{key:"isResharingAllowed",get:function(){return!0===OC.appConfig.core.resharingAllowed}},{key:"isPasswordForMailSharesRequired",get:function(){return void 0!==OC.getCapabilities().files_sharing.sharebymail&&OC.getCapabilities().files_sharing.sharebymail.password.enforced}},{key:"shouldAlwaysShowUnique",get:function(){var n,e;return!0===(null===(n=OC.getCapabilities().files_sharing)||void 0===n||null===(e=n.sharee)||void 0===e?void 0:e.always_show_unique)}},{key:"allowGroupSharing",get:function(){return!0===OC.appConfig.core.allowGroupSharing}},{key:"maxAutocompleteResults",get:function(){return parseInt(OC.config["sharing.maxAutocompleteResults"],10)||25}},{key:"minSearchStringLength",get:function(){return parseInt(OC.config["sharing.minSearchStringLength"],10)||0}},{key:"passwordPolicy",get:function(){var n=OC.getCapabilities();return n.password_policy?n.password_policy:{}}}])&&p(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}(),g=r(41922);function m(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}var v=function(){function n(e){var t,r;!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),r=void 0,(t="_share")in this?Object.defineProperty(this,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):this[t]=r,e.ocs&&e.ocs.data&&e.ocs.data[0]&&(e=e.ocs.data[0]),e.hide_download=!!e.hide_download,e.mail_send=!!e.mail_send,this._share=e}var e,t;return e=n,(t=[{key:"state",get:function(){return this._share}},{key:"id",get:function(){return this._share.id}},{key:"type",get:function(){return this._share.share_type}},{key:"permissions",get:function(){return this._share.permissions},set:function(n){this._share.permissions=n}},{key:"owner",get:function(){return this._share.uid_owner}},{key:"ownerDisplayName",get:function(){return this._share.displayname_owner}},{key:"shareWith",get:function(){return this._share.share_with}},{key:"shareWithDisplayName",get:function(){return this._share.share_with_displayname||this._share.share_with}},{key:"shareWithDisplayNameUnique",get:function(){return this._share.share_with_displayname_unique||this._share.share_with}},{key:"shareWithLink",get:function(){return this._share.share_with_link}},{key:"shareWithAvatar",get:function(){return this._share.share_with_avatar}},{key:"uidFileOwner",get:function(){return this._share.uid_file_owner}},{key:"displaynameFileOwner",get:function(){return this._share.displayname_file_owner||this._share.uid_file_owner}},{key:"createdTime",get:function(){return this._share.stime}},{key:"expireDate",get:function(){return this._share.expiration},set:function(n){this._share.expiration=n}},{key:"token",get:function(){return this._share.token}},{key:"note",get:function(){return this._share.note},set:function(n){this._share.note=n}},{key:"label",get:function(){return this._share.label},set:function(n){this._share.label=n}},{key:"mailSend",get:function(){return!0===this._share.mail_send}},{key:"hideDownload",get:function(){return!0===this._share.hide_download},set:function(n){this._share.hide_download=!0===n}},{key:"password",get:function(){return this._share.password},set:function(n){this._share.password=n}},{key:"passwordExpirationTime",get:function(){return this._share.password_expiration_time},set:function(n){this._share.password_expiration_time=n}},{key:"sendPasswordByTalk",get:function(){return this._share.send_password_by_talk},set:function(n){this._share.send_password_by_talk=n}},{key:"path",get:function(){return this._share.path}},{key:"itemType",get:function(){return this._share.item_type}},{key:"mimetype",get:function(){return this._share.mimetype}},{key:"fileSource",get:function(){return this._share.file_source}},{key:"fileTarget",get:function(){return this._share.file_target}},{key:"fileParent",get:function(){return this._share.file_parent}},{key:"hasReadPermission",get:function(){return!!(this.permissions&OC.PERMISSION_READ)}},{key:"hasCreatePermission",get:function(){return!!(this.permissions&OC.PERMISSION_CREATE)}},{key:"hasDeletePermission",get:function(){return!!(this.permissions&OC.PERMISSION_DELETE)}},{key:"hasUpdatePermission",get:function(){return!!(this.permissions&OC.PERMISSION_UPDATE)}},{key:"hasSharePermission",get:function(){return!!(this.permissions&OC.PERMISSION_SHARE)}},{key:"canEdit",get:function(){return!0===this._share.can_edit}},{key:"canDelete",get:function(){return!0===this._share.can_delete}},{key:"viaFileid",get:function(){return this._share.via_fileid}},{key:"viaPath",get:function(){return this._share.via_path}},{key:"parent",get:function(){return this._share.parent}},{key:"storageId",get:function(){return this._share.storage_id}},{key:"storage",get:function(){return this._share.storage}},{key:"itemSource",get:function(){return this._share.item_source}},{key:"status",get:function(){return this._share.status}}])&&m(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}(),_={data:function(){return{SHARE_TYPES:g.D}}},A=r(74466),y=r.n(A),E=r(79440),w=r.n(E),S=r(15168),b=r.n(S),C={name:"SharingEntrySimple",components:{Actions:w()},directives:{Tooltip:b()},props:{title:{type:String,default:"",required:!0},tooltip:{type:String,default:""},subtitle:{type:String,default:""},isUnique:{type:Boolean,default:!0},ariaExpanded:{type:Boolean,default:null}},computed:{ariaExpandedValue:function(){return null===this.ariaExpanded?this.ariaExpanded:this.ariaExpanded?"true":"false"}}},x=r(93379),k=r.n(x),P=r(7795),T=r.n(P),R=r(90569),D=r.n(R),O=r(3565),I=r.n(O),L=r(19216),N=r.n(L),Y=r(44589),H=r.n(Y),U=r(22695),M={};M.styleTagTransform=H(),M.setAttributes=I(),M.insert=D().bind(null,"head"),M.domAPI=T(),M.insertStyleElement=N(),k()(U.Z,M),U.Z&&U.Z.locals&&U.Z.locals;var B=r(51900),W=(0,B.Z)(C,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("li",{staticClass:"sharing-entry"},[n._t("avatar"),n._v(" "),t("div",{directives:[{name:"tooltip",rawName:"v-tooltip",value:n.tooltip,expression:"tooltip"}],staticClass:"sharing-entry__desc"},[t("span",{staticClass:"sharing-entry__title"},[n._v(n._s(n.title))]),n._v(" "),n.subtitle?t("p",[n._v("\n\t\t\t"+n._s(n.subtitle)+"\n\t\t")]):n._e()]),n._v(" "),n.$slots.default?t("Actions",{staticClass:"sharing-entry__actions",attrs:{"menu-align":"right","aria-expanded":n.ariaExpandedValue}},[n._t("default")],2):n._e()],2)}),[],!1,null,"3483f0f7",null).exports;function j(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}var q={name:"SharingEntryInternal",components:{ActionLink:y(),SharingEntrySimple:W},props:{fileInfo:{type:Object,default:function(){},required:!0}},data:function(){return{copied:!1,copySuccess:!1}},computed:{internalLink:function(){return window.location.protocol+"//"+window.location.host+(0,l.generateUrl)("/f/")+this.fileInfo.id},clipboardTooltip:function(){return this.copied?this.copySuccess?t("files_sharing","Link copied"):t("files_sharing","Cannot copy, please copy the link manually"):t("files_sharing","Copy to clipboard")},internalLinkSubtitle:function(){return"dir"===this.fileInfo.type?t("files_sharing","Only works for users with access to this folder"):t("files_sharing","Only works for users with access to this file")}},methods:{copyLink:function(){var n,e=this;return(n=regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,e.$copyText(e.internalLink);case 3:e.$refs.copyButton.$el.focus(),e.copySuccess=!0,e.copied=!0,n.next=13;break;case 8:n.prev=8,n.t0=n.catch(0),e.copySuccess=!1,e.copied=!0,console.error(n.t0);case 13:return n.prev=13,setTimeout((function(){e.copySuccess=!1,e.copied=!1}),4e3),n.finish(13);case 16:case"end":return n.stop()}}),n,null,[[0,8,13,16]])})),function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){j(a,r,i,s,o,"next",n)}function o(n){j(a,r,i,s,o,"throw",n)}s(void 0)}))})()}}},F=q,$=r(5602),Z={};Z.styleTagTransform=H(),Z.setAttributes=I(),Z.insert=D().bind(null,"head"),Z.domAPI=T(),Z.insertStyleElement=N(),k()($.Z,Z),$.Z&&$.Z.locals&&$.Z.locals;var G=(0,B.Z)(F,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("ul",[t("SharingEntrySimple",{staticClass:"sharing-entry__internal",attrs:{title:n.t("files_sharing","Internal link"),subtitle:n.internalLinkSubtitle},scopedSlots:n._u([{key:"avatar",fn:function(){return[t("div",{staticClass:"avatar-external icon-external-white"})]},proxy:!0}])},[n._v(" "),t("ActionLink",{ref:"copyButton",attrs:{href:n.internalLink,target:"_blank",icon:n.copied&&n.copySuccess?"icon-checkmark-color":"icon-clippy"},on:{click:function(e){return e.preventDefault(),n.copyLink.apply(null,arguments)}}},[n._v("\n\t\t\t"+n._s(n.clipboardTooltip)+"\n\t\t")])],1)],1)}),[],!1,null,"739d8480",null),V=G.exports,K=r(22200),Q=r(20296),z=r.n(Q),J=r(7811),X=r.n(J);function nn(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}function en(n){return function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){nn(a,r,i,s,o,"next",n)}function o(n){nn(a,r,i,s,o,"throw",n)}s(void 0)}))}}var tn=new f,rn="abcdefgijkmnopqrstwxyzABCDEFGHJKLMNPQRSTWXYZ23456789";function an(){return sn.apply(this,arguments)}function sn(){return(sn=en(regeneratorRuntime.mark((function n(){var e;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(!tn.passwordPolicy.api||!tn.passwordPolicy.api.generate){n.next=12;break}return n.prev=1,n.next=4,d.default.get(tn.passwordPolicy.api.generate);case 4:if(!(e=n.sent).data.ocs.data.password){n.next=7;break}return n.abrupt("return",e.data.ocs.data.password);case 7:n.next=12;break;case 9:n.prev=9,n.t0=n.catch(1),console.info("Error generating password from password_policy",n.t0);case 12:return n.abrupt("return",Array(10).fill(0).reduce((function(n,e){return n+rn.charAt(Math.floor(Math.random()*rn.length))}),""));case 13:case"end":return n.stop()}}),n,null,[[1,9]])})))).apply(this,arguments)}function on(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}function cn(n){return function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){on(a,r,i,s,o,"next",n)}function o(n){on(a,r,i,s,o,"throw",n)}s(void 0)}))}}r(35449);var ln=(0,l.generateOcsUrl)("apps/files_sharing/api/v1/shares"),un={methods:{createShare:function(n){return cn(regeneratorRuntime.mark((function e(){var r,i,a,s,o,c,l,u,h,p,f,g,m,_,A,y;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=n.path,i=n.permissions,a=n.shareType,s=n.shareWith,o=n.publicUpload,c=n.password,l=n.sendPasswordByTalk,u=n.expireDate,h=n.label,e.prev=1,e.next=4,d.default.post(ln,{path:r,permissions:i,shareType:a,shareWith:s,publicUpload:o,password:c,sendPasswordByTalk:l,expireDate:u,label:h});case 4:if(null!=(f=e.sent)&&null!==(p=f.data)&&void 0!==p&&p.ocs){e.next=7;break}throw f;case 7:return e.abrupt("return",new v(f.data.ocs.data));case 10:throw e.prev=10,e.t0=e.catch(1),console.error("Error while creating share",e.t0),y=null===e.t0||void 0===e.t0||null===(g=e.t0.response)||void 0===g||null===(m=g.data)||void 0===m||null===(_=m.ocs)||void 0===_||null===(A=_.meta)||void 0===A?void 0:A.message,OC.Notification.showTemporary(y?t("files_sharing","Error creating the share: {errorMessage}",{errorMessage:y}):t("files_sharing","Error creating the share"),{type:"error"}),e.t0;case 16:case"end":return e.stop()}}),e,null,[[1,10]])})))()},deleteShare:function(n){return cn(regeneratorRuntime.mark((function e(){var r,i,a,s,o,c,l;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,d.default.delete(ln+"/".concat(n));case 3:if(null!=(i=e.sent)&&null!==(r=i.data)&&void 0!==r&&r.ocs){e.next=6;break}throw i;case 6:return e.abrupt("return",!0);case 9:throw e.prev=9,e.t0=e.catch(0),console.error("Error while deleting share",e.t0),l=null===e.t0||void 0===e.t0||null===(a=e.t0.response)||void 0===a||null===(s=a.data)||void 0===s||null===(o=s.ocs)||void 0===o||null===(c=o.meta)||void 0===c?void 0:c.message,OC.Notification.showTemporary(l?t("files_sharing","Error deleting the share: {errorMessage}",{errorMessage:l}):t("files_sharing","Error deleting the share"),{type:"error"}),e.t0;case 15:case"end":return e.stop()}}),e,null,[[0,9]])})))()},updateShare:function(n,e){return cn(regeneratorRuntime.mark((function r(){var i,a,s,o,c,l,u,h;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.prev=0,r.next=3,d.default.put(ln+"/".concat(n),e);case 3:if(null!=(a=r.sent)&&null!==(i=a.data)&&void 0!==i&&i.ocs){r.next=8;break}throw a;case 8:return r.abrupt("return",a.data.ocs.data);case 9:r.next=17;break;case 11:throw r.prev=11,r.t0=r.catch(0),console.error("Error while updating share",r.t0),400!==r.t0.response.status&&(u=null===r.t0||void 0===r.t0||null===(s=r.t0.response)||void 0===s||null===(o=s.data)||void 0===o||null===(c=o.ocs)||void 0===c||null===(l=c.meta)||void 0===l?void 0:l.message,OC.Notification.showTemporary(u?t("files_sharing","Error updating the share: {errorMessage}",{errorMessage:u}):t("files_sharing","Error updating the share"),{type:"error"})),h=r.t0.response.data.ocs.meta.message,new Error(h);case 17:case"end":return r.stop()}}),r,null,[[0,11]])})))()}}};function hn(n){return hn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},hn(n)}function dn(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(n);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),t.push.apply(t,r)}return t}function pn(n){for(var e=1;e<arguments.length;e++){var t=null!=arguments[e]?arguments[e]:{};e%2?dn(Object(t),!0).forEach((function(e){fn(n,e,t[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(t)):dn(Object(t)).forEach((function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(t,e))}))}return n}function fn(n,e,t){return e in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function gn(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}function mn(n){return function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){gn(a,r,i,s,o,"next",n)}function o(n){gn(a,r,i,s,o,"throw",n)}s(void 0)}))}}var vn={name:"SharingInput",components:{Multiselect:X()},mixins:[_,un],props:{shares:{type:Array,default:function(){return[]},required:!0},linkShares:{type:Array,default:function(){return[]},required:!0},fileInfo:{type:Object,default:function(){},required:!0},reshare:{type:v,default:null},canReshare:{type:Boolean,required:!0}},data:function(){return{config:new f,loading:!1,query:"",recommendations:[],ShareSearch:OCA.Sharing.ShareSearch.state,suggestions:[]}},computed:{externalResults:function(){return this.ShareSearch.results},inputPlaceholder:function(){var n=this.config.isRemoteShareAllowed;return this.canReshare?n?t("files_sharing","Name, email, or Federated Cloud ID …"):t("files_sharing","Name or email …"):t("files_sharing","Resharing is not allowed")},isValidQuery:function(){return this.query&&""!==this.query.trim()&&this.query.length>this.config.minSearchStringLength},options:function(){return this.isValidQuery?this.suggestions:this.recommendations},noResultText:function(){return this.loading?t("files_sharing","Searching …"):t("files_sharing","No elements found.")}},mounted:function(){this.getRecommendations()},methods:{asyncFind:function(n,e){var t=this;return mn(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.query=n.trim(),!t.isValidQuery){e.next=5;break}return t.loading=!0,e.next=5,t.debounceGetSuggestions(n);case 5:case"end":return e.stop()}}),e)})))()},getSuggestions:function(n){var e=arguments,r=this;return mn(regeneratorRuntime.mark((function i(){var a,s,o,c,u,h,p,f,g,m,v,_,A;return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return a=e.length>1&&void 0!==e[1]&&e[1],r.loading=!0,!0===OC.getCapabilities().files_sharing.sharee.query_lookup_default&&(a=!0),s=[r.SHARE_TYPES.SHARE_TYPE_USER,r.SHARE_TYPES.SHARE_TYPE_GROUP,r.SHARE_TYPES.SHARE_TYPE_REMOTE,r.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP,r.SHARE_TYPES.SHARE_TYPE_CIRCLE,r.SHARE_TYPES.SHARE_TYPE_ROOM,r.SHARE_TYPES.SHARE_TYPE_GUEST,r.SHARE_TYPES.SHARE_TYPE_DECK],!0===OC.getCapabilities().files_sharing.public.enabled&&s.push(r.SHARE_TYPES.SHARE_TYPE_EMAIL),o=null,i.prev=6,i.next=9,d.default.get((0,l.generateOcsUrl)("apps/files_sharing/api/v1/sharees"),{params:{format:"json",itemType:"dir"===r.fileInfo.type?"folder":"file",search:n,lookup:a,perPage:r.config.maxAutocompleteResults,shareType:s}});case 9:o=i.sent,i.next=16;break;case 12:return i.prev=12,i.t0=i.catch(6),console.error("Error fetching suggestions",i.t0),i.abrupt("return");case 16:c=o.data.ocs.data,u=o.data.ocs.data.exact,c.exact=[],h=Object.values(u).reduce((function(n,e){return n.concat(e)}),[]),p=Object.values(c).reduce((function(n,e){return n.concat(e)}),[]),f=r.filterOutExistingShares(h).map((function(n){return r.formatForMultiselect(n)})).sort((function(n,e){return n.shareType-e.shareType})),g=r.filterOutExistingShares(p).map((function(n){return r.formatForMultiselect(n)})).sort((function(n,e){return n.shareType-e.shareType})),m=[],c.lookupEnabled&&!a&&m.push({id:"global-lookup",isNoUser:!0,displayName:t("files_sharing","Search globally"),lookup:!0}),v=r.externalResults.filter((function(n){return!n.condition||n.condition(r)})),_=f.concat(g).concat(v).concat(m),A=_.reduce((function(n,e){return e.displayName?(n[e.displayName]||(n[e.displayName]=0),n[e.displayName]++,n):n}),{}),r.suggestions=_.map((function(n){return A[n.displayName]>1&&!n.desc?pn(pn({},n),{},{desc:n.shareWithDisplayNameUnique}):n})),r.loading=!1,console.info("suggestions",r.suggestions);case 31:case"end":return i.stop()}}),i,null,[[6,12]])})))()},debounceGetSuggestions:z()((function(){this.getSuggestions.apply(this,arguments)}),300),getRecommendations:function(){var n=this;return mn(regeneratorRuntime.mark((function e(){var t,r,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.loading=!0,t=null,e.prev=2,e.next=5,d.default.get((0,l.generateOcsUrl)("apps/files_sharing/api/v1/sharees_recommended"),{params:{format:"json",itemType:n.fileInfo.type}});case 5:t=e.sent,e.next=12;break;case 8:return e.prev=8,e.t0=e.catch(2),console.error("Error fetching recommendations",e.t0),e.abrupt("return");case 12:r=n.externalResults.filter((function(e){return!e.condition||e.condition(n)})),i=Object.values(t.data.ocs.data.exact).reduce((function(n,e){return n.concat(e)}),[]),n.recommendations=n.filterOutExistingShares(i).map((function(e){return n.formatForMultiselect(e)})).concat(r),n.loading=!1,console.info("recommendations",n.recommendations);case 17:case"end":return e.stop()}}),e,null,[[2,8]])})))()},filterOutExistingShares:function(n){var e=this;return n.reduce((function(n,t){if("object"!==hn(t))return n;try{if(t.value.shareType===e.SHARE_TYPES.SHARE_TYPE_USER){if(t.value.shareWith===(0,K.getCurrentUser)().uid)return n;if(e.reshare&&t.value.shareWith===e.reshare.owner)return n}if(t.value.shareType===e.SHARE_TYPES.SHARE_TYPE_EMAIL){if(-1!==e.linkShares.map((function(n){return n.shareWith})).indexOf(t.value.shareWith.trim()))return n}else{var r=e.shares.reduce((function(n,e){return n[e.shareWith]=e.type,n}),{}),i=t.value.shareWith.trim();if(i in r&&r[i]===t.value.shareType)return n}n.push(t)}catch(e){return n}return n}),[])},shareTypeToIcon:function(n){switch(n){case this.SHARE_TYPES.SHARE_TYPE_GUEST:return"icon-user";case this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP:case this.SHARE_TYPES.SHARE_TYPE_GROUP:return"icon-group";case this.SHARE_TYPES.SHARE_TYPE_EMAIL:return"icon-mail";case this.SHARE_TYPES.SHARE_TYPE_CIRCLE:return"icon-circle";case this.SHARE_TYPES.SHARE_TYPE_ROOM:return"icon-room";case this.SHARE_TYPES.SHARE_TYPE_DECK:return"icon-deck";default:return""}},formatForMultiselect:function(n){var e,r;if(n.value.shareType===this.SHARE_TYPES.SHARE_TYPE_USER&&this.config.shouldAlwaysShowUnique)e=null!==(r=n.shareWithDisplayNameUnique)&&void 0!==r?r:"";else if(n.value.shareType!==this.SHARE_TYPES.SHARE_TYPE_REMOTE&&n.value.shareType!==this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP||!n.value.server)if(n.value.shareType===this.SHARE_TYPES.SHARE_TYPE_EMAIL)e=n.value.shareWith;else{var i;e=null!==(i=n.shareWithDescription)&&void 0!==i?i:""}else e=t("files_sharing","on {server}",{server:n.value.server});return{id:"".concat(n.value.shareType,"-").concat(n.value.shareWith),shareWith:n.value.shareWith,shareType:n.value.shareType,user:n.uuid||n.value.shareWith,isNoUser:n.value.shareType!==this.SHARE_TYPES.SHARE_TYPE_USER,displayName:n.name||n.label,subtitle:e,shareWithDisplayNameUnique:n.shareWithDisplayNameUnique||"",icon:this.shareTypeToIcon(n.value.shareType)}},addShare:function(n){var e=this;return mn(regeneratorRuntime.mark((function t(){var r,i,a,s,o,c,l,u;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!n.lookup){t.next=5;break}return t.next=3,e.getSuggestions(e.query,!0);case 3:return e.$nextTick((function(){e.$refs.multiselect.$el.querySelector(".multiselect__input").focus()})),t.abrupt("return",!0);case 5:if(!n.handler){t.next=11;break}return t.next=8,n.handler(e);case 8:return r=t.sent,e.$emit("add:share",new v(r)),t.abrupt("return",!0);case 11:if(e.loading=!0,console.debug("Adding a new share from the input for",n),t.prev=13,o=null,!e.config.enforcePasswordForPublicLink||n.shareType!==e.SHARE_TYPES.SHARE_TYPE_EMAIL){t.next=19;break}return t.next=18,an();case 18:o=t.sent;case 19:return c=(e.fileInfo.path+"/"+e.fileInfo.name).replace("//","/"),t.next=22,e.createShare({path:c,shareType:n.shareType,shareWith:n.shareWith,password:o,permissions:e.fileInfo.sharePermissions&OC.getCapabilities().files_sharing.default_permissions});case 22:if(l=t.sent,!o){t.next=31;break}return l.newPassword=o,t.next=27,new Promise((function(n){e.$emit("add:share",l,n)}));case 27:t.sent.open=!0,t.next=32;break;case 31:e.$emit("add:share",l);case 32:return null!==(i=e.$refs.multiselect)&&void 0!==i&&null!==(a=i.$refs)&&void 0!==a&&null!==(s=a.VueMultiselect)&&void 0!==s&&s.search&&(e.$refs.multiselect.$refs.VueMultiselect.search=""),t.next=35,e.getRecommendations();case 35:t.next=43;break;case 37:t.prev=37,t.t0=t.catch(13),(u=e.$refs.multiselect.$el.querySelector("input"))&&u.focus(),e.query=n.shareWith,console.error("Error while adding new share",t.t0);case 43:return t.prev=43,e.loading=!1,t.finish(43);case 46:case"end":return t.stop()}}),t,null,[[13,37,43,46]])})))()}}},_n=vn,An=r(84721),yn={};yn.styleTagTransform=H(),yn.setAttributes=I(),yn.insert=D().bind(null,"head"),yn.domAPI=T(),yn.insertStyleElement=N(),k()(An.Z,yn),An.Z&&An.Z.locals&&An.Z.locals;var En=(0,B.Z)(_n,(function(){var n=this,e=n.$createElement;return(n._self._c||e)("Multiselect",{ref:"multiselect",staticClass:"sharing-input",attrs:{"clear-on-select":!0,disabled:!n.canReshare,"hide-selected":!0,"internal-search":!1,loading:n.loading,options:n.options,placeholder:n.inputPlaceholder,"preselect-first":!0,"preserve-search":!0,searchable:!0,"user-select":!0,"open-direction":"below",label:"displayName","track-by":"id"},on:{"search-change":n.asyncFind,select:n.addShare},scopedSlots:n._u([{key:"noOptions",fn:function(){return[n._v("\n\t\t"+n._s(n.t("files_sharing","No recommendations. Start typing."))+"\n\t")]},proxy:!0},{key:"noResult",fn:function(){return[n._v("\n\t\t"+n._s(n.noResultText)+"\n\t")]},proxy:!0}])})}),[],!1,null,null,null).exports,wn=r(56286),Sn=r.n(wn),bn=r(76632),Cn=r(41009),xn=r.n(Cn),kn=r(25746);function Pn(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}function Tn(n){return function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){Pn(a,r,i,s,o,"next",n)}function o(n){Pn(a,r,i,s,o,"throw",n)}s(void 0)}))}}var Rn={mixins:[un,_],props:{fileInfo:{type:Object,default:function(){},required:!0},share:{type:v,default:null},isUnique:{type:Boolean,default:!0}},data:function(){var n;return{config:new f,errors:{},loading:!1,saving:!1,open:!1,updateQueue:new kn.Z({concurrency:1}),reactiveState:null===(n=this.share)||void 0===n?void 0:n.state}},computed:{hasNote:{get:function(){return""!==this.share.note},set:function(n){this.share.note=n?null:""}},dateTomorrow:function(){return moment().add(1,"days")},lang:function(){var n=window.dayNamesShort?window.dayNamesShort:["Sun.","Mon.","Tue.","Wed.","Thu.","Fri.","Sat."],e=window.monthNamesShort?window.monthNamesShort:["Jan.","Feb.","Mar.","Apr.","May.","Jun.","Jul.","Aug.","Sep.","Oct.","Nov.","Dec."];return{formatLocale:{firstDayOfWeek:window.firstDay?window.firstDay:0,monthsShort:e,weekdaysMin:n,weekdaysShort:n},monthFormat:"MMM"}},isShareOwner:function(){return this.share&&this.share.owner===(0,K.getCurrentUser)().uid}},methods:{checkShare:function(n){return(!n.password||"string"==typeof n.password&&""!==n.password.trim())&&!(n.expirationDate&&!moment(n.expirationDate).isValid())},onExpirationChange:function(n){var e=moment(n).format("YYYY-MM-DD");this.share.expireDate=e,this.queueUpdate("expireDate")},onExpirationDisable:function(){this.share.expireDate="",this.queueUpdate("expireDate")},onNoteChange:function(n){this.$set(this.share,"newNote",n.trim())},onNoteSubmit:function(){this.share.newNote&&(this.share.note=this.share.newNote,this.$delete(this.share,"newNote"),this.queueUpdate("note"))},onDelete:function(){var n=this;return Tn(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,n.loading=!0,n.open=!1,e.next=5,n.deleteShare(n.share.id);case 5:console.debug("Share deleted",n.share.id),n.$emit("remove:share",n.share),e.next=12;break;case 9:e.prev=9,e.t0=e.catch(0),n.open=!0;case 12:return e.prev=12,n.loading=!1,e.finish(12);case 15:case"end":return e.stop()}}),e,null,[[0,9,12,15]])})))()},queueUpdate:function(){for(var n=this,e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];if(0!==t.length)if(this.share.id){var i={};t.map((function(e){return i[e]=n.share[e].toString()})),this.updateQueue.add(Tn(regeneratorRuntime.mark((function e(){var r,a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.saving=!0,n.errors={},e.prev=2,e.next=5,n.updateShare(n.share.id,i);case 5:r=e.sent,t.indexOf("password")>=0&&(n.$delete(n.share,"newPassword"),n.share.passwordExpirationTime=r.password_expiration_time),n.$delete(n.errors,t[0]),e.next=14;break;case 10:e.prev=10,e.t0=e.catch(2),(a=e.t0.message)&&""!==a&&n.onSyncError(t[0],a);case 14:return e.prev=14,n.saving=!1,e.finish(14);case 17:case"end":return e.stop()}}),e,null,[[2,10,14,17]])}))))}else console.error("Cannot update share.",this.share,"No valid id")},onSyncError:function(n,e){switch(this.open=!0,n){case"password":case"pending":case"expireDate":case"label":case"note":this.$set(this.errors,n,e);var t=this.$refs[n];if(t){t.$el&&(t=t.$el);var r=t.querySelector(".focusable");r&&r.focus()}break;case"sendPasswordByTalk":this.$set(this.errors,n,e),this.share.sendPasswordByTalk=!this.share.sendPasswordByTalk}},debounceQueueUpdate:z()((function(n){this.queueUpdate(n)}),500),disabledDate:function(n){var e=moment(n);return this.dateTomorrow&&e.isBefore(this.dateTomorrow,"day")||this.dateMaxEnforced&&e.isSameOrAfter(this.dateMaxEnforced,"day")}}},Dn={name:"SharingEntryInherited",components:{ActionButton:Sn(),ActionLink:y(),ActionText:xn(),Avatar:h(),SharingEntrySimple:W},mixins:[Rn],props:{share:{type:v,required:!0}},computed:{viaFileTargetUrl:function(){return(0,l.generateUrl)("/f/{fileid}",{fileid:this.share.viaFileid})},viaFolderName:function(){return(0,bn.EZ)(this.share.viaPath)}}},On=r(71296),In={};In.styleTagTransform=H(),In.setAttributes=I(),In.insert=D().bind(null,"head"),In.domAPI=T(),In.insertStyleElement=N(),k()(On.Z,In),On.Z&&On.Z.locals&&On.Z.locals;var Ln=(0,B.Z)(Dn,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("SharingEntrySimple",{key:n.share.id,staticClass:"sharing-entry__inherited",attrs:{title:n.share.shareWithDisplayName},scopedSlots:n._u([{key:"avatar",fn:function(){return[t("Avatar",{staticClass:"sharing-entry__avatar",attrs:{user:n.share.shareWith,"display-name":n.share.shareWithDisplayName,"tooltip-message":""}})]},proxy:!0}])},[n._v(" "),t("ActionText",{attrs:{icon:"icon-user"}},[n._v("\n\t\t"+n._s(n.t("files_sharing","Added by {initiator}",{initiator:n.share.ownerDisplayName}))+"\n\t")]),n._v(" "),n.share.viaPath&&n.share.viaFileid?t("ActionLink",{attrs:{icon:"icon-folder",href:n.viaFileTargetUrl}},[n._v("\n\t\t"+n._s(n.t("files_sharing","Via “{folder}”",{folder:n.viaFolderName}))+"\n\t")]):n._e(),n._v(" "),n.share.canDelete?t("ActionButton",{attrs:{icon:"icon-close"},on:{click:function(e){return e.preventDefault(),n.onDelete.apply(null,arguments)}}},[n._v("\n\t\t"+n._s(n.t("files_sharing","Unshare"))+"\n\t")]):n._e()],1)}),[],!1,null,"29845767",null),Nn=Ln.exports;function Yn(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}var Hn={name:"SharingInherited",components:{ActionButton:Sn(),SharingEntryInherited:Nn,SharingEntrySimple:W},props:{fileInfo:{type:Object,default:function(){},required:!0}},data:function(){return{loaded:!1,loading:!1,showInheritedShares:!1,shares:[]}},computed:{showInheritedSharesIcon:function(){return this.loading?"icon-loading-small":this.showInheritedShares?"icon-triangle-n":"icon-triangle-s"},mainTitle:function(){return t("files_sharing","Others with access")},subTitle:function(){return this.showInheritedShares&&0===this.shares.length?t("files_sharing","No other users with access found"):""},toggleTooltip:function(){return"dir"===this.fileInfo.type?t("files_sharing","Toggle list of others with access to this directory"):t("files_sharing","Toggle list of others with access to this file")},fullPath:function(){return"".concat(this.fileInfo.path,"/").concat(this.fileInfo.name).replace("//","/")}},watch:{fileInfo:function(){this.resetState()}},methods:{toggleInheritedShares:function(){this.showInheritedShares=!this.showInheritedShares,this.showInheritedShares?this.fetchInheritedShares():this.resetState()},fetchInheritedShares:function(){var n,e=this;return(n=regeneratorRuntime.mark((function n(){var r,i;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return e.loading=!0,n.prev=1,r=(0,l.generateOcsUrl)("apps/files_sharing/api/v1/shares/inherited?format=json&path={path}",{path:e.fullPath}),n.next=5,d.default.get(r);case 5:i=n.sent,e.shares=i.data.ocs.data.map((function(n){return new v(n)})).sort((function(n,e){return e.createdTime-n.createdTime})),console.info(e.shares),e.loaded=!0,n.next=14;break;case 11:n.prev=11,n.t0=n.catch(1),OC.Notification.showTemporary(t("files_sharing","Unable to fetch inherited shares"),{type:"error"});case 14:return n.prev=14,e.loading=!1,n.finish(14);case 17:case"end":return n.stop()}}),n,null,[[1,11,14,17]])})),function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){Yn(a,r,i,s,o,"next",n)}function o(n){Yn(a,r,i,s,o,"throw",n)}s(void 0)}))})()},resetState:function(){this.loaded=!1,this.loading=!1,this.showInheritedShares=!1,this.shares=[]}}},Un=Hn,Mn=r(79031),Bn={};Bn.styleTagTransform=H(),Bn.setAttributes=I(),Bn.insert=D().bind(null,"head"),Bn.domAPI=T(),Bn.insertStyleElement=N(),k()(Mn.Z,Bn),Mn.Z&&Mn.Z.locals&&Mn.Z.locals;var Wn=(0,B.Z)(Un,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("ul",{attrs:{id:"sharing-inherited-shares"}},[t("SharingEntrySimple",{staticClass:"sharing-entry__inherited",attrs:{title:n.mainTitle,subtitle:n.subTitle,"aria-expanded":n.showInheritedShares},scopedSlots:n._u([{key:"avatar",fn:function(){return[t("div",{staticClass:"avatar-shared icon-more-white"})]},proxy:!0}])},[n._v(" "),t("ActionButton",{attrs:{icon:n.showInheritedSharesIcon},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),n.toggleInheritedShares.apply(null,arguments)}}},[n._v("\n\t\t\t"+n._s(n.toggleTooltip)+"\n\t\t")])],1),n._v(" "),n._l(n.shares,(function(e){return t("SharingEntryInherited",{key:e.id,attrs:{"file-info":n.fileInfo,share:e}})}))],2)}),[],!1,null,"7a52663c",null),jn=Wn.exports,qn=r(83779),Fn=r.n(qn),$n=r(88408),Zn=r.n($n),Gn=r(33521),Vn=r.n(Gn),Kn=r(97654),Qn=r.n(Kn),zn={name:"ExternalShareAction",props:{id:{type:String,required:!0},action:{type:Object,default:function(){return{}}},fileInfo:{type:Object,default:function(){},required:!0},share:{type:v,default:null}},computed:{data:function(){return this.action.data(this)}}},Jn=(0,B.Z)(zn,(function(){var n=this,e=n.$createElement;return(n._self._c||e)(n.data.is,n._g(n._b({tag:"Component"},"Component",n.data,!1),n.action.handlers),[n._v("\n\t"+n._s(n.data.text)+"\n")])}),[],!1,null,null,null).exports,Xn=r(10949),ne=r.n(Xn),ee={NONE:0,READ:1,UPDATE:2,CREATE:4,DELETE:8,SHARE:16},te={READ_ONLY:ee.READ,UPLOAD_AND_UPDATE:ee.READ|ee.UPDATE|ee.CREATE|ee.DELETE,FILE_DROP:ee.CREATE,ALL:ee.UPDATE|ee.CREATE|ee.READ|ee.DELETE|ee.SHARE};function re(n,e){return n!==ee.NONE&&(n&e)===e}function ie(n){return!(!re(n,ee.READ)&&!re(n,ee.CREATE)||!re(n,ee.READ)&&(re(n,ee.UPDATE)||re(n,ee.DELETE)))}function ae(n,e){return re(n,e)?function(n,e){return n&~e}(n,e):function(n,e){return n|e}(n,e)}var se=r(26937),oe=r(91889),ce={name:"SharePermissionsEditor",components:{ActionButton:Sn(),ActionCheckbox:Fn(),ActionRadio:ne(),Tune:se.Z,ChevronLeft:oe.default},mixins:[Rn],data:function(){return{randomFormName:Math.random().toString(27).substring(2),showCustomPermissionsForm:!1,atomicPermissions:ee,bundledPermissions:te}},computed:{sharePermissionsSummary:function(){var n=this;return Object.values(this.atomicPermissions).filter((function(e){return n.shareHasPermissions(e)})).map((function(e){switch(e){case n.atomicPermissions.CREATE:return n.t("files_sharing","Upload");case n.atomicPermissions.READ:return n.t("files_sharing","Read");case n.atomicPermissions.UPDATE:return n.t("files_sharing","Edit");case n.atomicPermissions.DELETE:return n.t("files_sharing","Delete");default:return null}})).filter((function(n){return null!==n})).join(", ")},sharePermissionsIsBundle:function(){var n=this;return Object.values(te).map((function(e){return n.sharePermissionEqual(e)})).filter((function(n){return n})).length>0},sharePermissionsSetIsValid:function(){return ie(this.share.permissions)},isFolder:function(){return"dir"===this.fileInfo.type},fileHasCreatePermission:function(){return!!(this.fileInfo.permissions&ee.CREATE)}},mounted:function(){this.showCustomPermissionsForm=!this.sharePermissionsIsBundle},methods:{sharePermissionEqual:function(n){return(this.share.permissions&~ee.SHARE)===n},shareHasPermissions:function(n){return re(this.share.permissions,n)},setSharePermissions:function(n){this.share.permissions=n,this.queueUpdate("permissions")},canToggleSharePermissions:function(n){return function(n,e){return ie(ae(n,e))}(this.share.permissions,n)},toggleSharePermissions:function(n){this.share.permissions=ae(this.share.permissions,n),ie(this.share.permissions)&&this.queueUpdate("permissions")}}},le=r(30141),ue={};ue.styleTagTransform=H(),ue.setAttributes=I(),ue.insert=D().bind(null,"head"),ue.domAPI=T(),ue.insertStyleElement=N(),k()(le.Z,ue),le.Z&&le.Z.locals&&le.Z.locals;var he=(0,B.Z)(ce,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("li",[t("ul",[n.isFolder?n._e():t("ActionCheckbox",{attrs:{checked:n.shareHasPermissions(n.atomicPermissions.UPDATE),disabled:n.saving},on:{"update:checked":function(e){return n.toggleSharePermissions(n.atomicPermissions.UPDATE)}}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Allow editing"))+"\n\t\t")]),n._v(" "),n.isFolder&&n.fileHasCreatePermission&&n.config.isPublicUploadEnabled?[n.showCustomPermissionsForm?t("span",{class:{error:!n.sharePermissionsSetIsValid}},[t("ActionCheckbox",{attrs:{checked:n.shareHasPermissions(n.atomicPermissions.READ),disabled:n.saving||!n.canToggleSharePermissions(n.atomicPermissions.READ)},on:{"update:checked":function(e){return n.toggleSharePermissions(n.atomicPermissions.READ)}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Read"))+"\n\t\t\t\t")]),n._v(" "),t("ActionCheckbox",{attrs:{checked:n.shareHasPermissions(n.atomicPermissions.CREATE),disabled:n.saving||!n.canToggleSharePermissions(n.atomicPermissions.CREATE)},on:{"update:checked":function(e){return n.toggleSharePermissions(n.atomicPermissions.CREATE)}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Upload"))+"\n\t\t\t\t")]),n._v(" "),t("ActionCheckbox",{attrs:{checked:n.shareHasPermissions(n.atomicPermissions.UPDATE),disabled:n.saving||!n.canToggleSharePermissions(n.atomicPermissions.UPDATE)},on:{"update:checked":function(e){return n.toggleSharePermissions(n.atomicPermissions.UPDATE)}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Edit"))+"\n\t\t\t\t")]),n._v(" "),t("ActionCheckbox",{attrs:{checked:n.shareHasPermissions(n.atomicPermissions.DELETE),disabled:n.saving||!n.canToggleSharePermissions(n.atomicPermissions.DELETE)},on:{"update:checked":function(e){return n.toggleSharePermissions(n.atomicPermissions.DELETE)}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Delete"))+"\n\t\t\t\t")]),n._v(" "),t("ActionButton",{on:{click:function(e){n.showCustomPermissionsForm=!1}},scopedSlots:n._u([{key:"icon",fn:function(){return[t("ChevronLeft")]},proxy:!0}],null,!1,1018742195)},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Bundled permissions"))+"\n\t\t\t\t")])],1):[t("ActionRadio",{attrs:{checked:n.sharePermissionEqual(n.bundledPermissions.READ_ONLY),value:n.bundledPermissions.READ_ONLY,name:n.randomFormName,disabled:n.saving},on:{change:function(e){return n.setSharePermissions(n.bundledPermissions.READ_ONLY)}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Read only"))+"\n\t\t\t\t")]),n._v(" "),t("ActionRadio",{attrs:{checked:n.sharePermissionEqual(n.bundledPermissions.UPLOAD_AND_UPDATE),value:n.bundledPermissions.UPLOAD_AND_UPDATE,disabled:n.saving,name:n.randomFormName},on:{change:function(e){return n.setSharePermissions(n.bundledPermissions.UPLOAD_AND_UPDATE)}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Allow upload and editing"))+"\n\t\t\t\t")]),n._v(" "),t("ActionRadio",{staticClass:"sharing-entry__action--public-upload",attrs:{checked:n.sharePermissionEqual(n.bundledPermissions.FILE_DROP),value:n.bundledPermissions.FILE_DROP,disabled:n.saving,name:n.randomFormName},on:{change:function(e){return n.setSharePermissions(n.bundledPermissions.FILE_DROP)}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","File drop (upload only)"))+"\n\t\t\t\t")]),n._v(" "),t("ActionButton",{attrs:{title:n.t("files_sharing","Custom permissions")},on:{click:function(e){n.showCustomPermissionsForm=!0}},scopedSlots:n._u([{key:"icon",fn:function(){return[t("Tune")]},proxy:!0}],null,!1,961531849)},[n._v("\n\t\t\t\t\t"+n._s(n.sharePermissionsIsBundle?"":n.sharePermissionsSummary)+"\n\t\t\t\t")])]]:n._e()],2)])}),[],!1,null,"ea414898",null).exports;function de(n){return de="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},de(n)}function pe(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}function fe(n){return function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){pe(a,r,i,s,o,"next",n)}function o(n){pe(a,r,i,s,o,"throw",n)}s(void 0)}))}}var ge={name:"SharingEntryLink",components:{Actions:w(),ActionButton:Sn(),ActionCheckbox:Fn(),ActionInput:Zn(),ActionLink:y(),ActionText:xn(),ActionTextEditable:Qn(),ActionSeparator:Vn(),Avatar:h(),ExternalShareAction:Jn,SharePermissionsEditor:he},directives:{Tooltip:b()},mixins:[Rn],props:{canReshare:{type:Boolean,default:!0}},data:function(){return{copySuccess:!0,copied:!1,pending:!1,ExternalLegacyLinkActions:OCA.Sharing.ExternalLinkActions.state,ExternalShareActions:OCA.Sharing.ExternalShareActions.state}},computed:{title:function(){if(this.share&&this.share.id){if(!this.isShareOwner&&this.share.ownerDisplayName)return this.isEmailShareType?t("files_sharing","{shareWith} by {initiator}",{shareWith:this.share.shareWith,initiator:this.share.ownerDisplayName}):t("files_sharing","Shared via link by {initiator}",{initiator:this.share.ownerDisplayName});if(this.share.label&&""!==this.share.label.trim())return this.isEmailShareType?t("files_sharing","Mail share ({label})",{label:this.share.label.trim()}):t("files_sharing","Share link ({label})",{label:this.share.label.trim()});if(this.isEmailShareType)return this.share.shareWith}return t("files_sharing","Share link")},subtitle:function(){return this.isEmailShareType&&this.title!==this.share.shareWith?this.share.shareWith:null},hasExpirationDate:{get:function(){return this.config.isDefaultExpireDateEnforced||!!this.share.expireDate},set:function(n){var e=moment(this.config.defaultExpirationDateString);e.isValid()||(e=moment()),this.share.state.expiration=n?e.format("YYYY-MM-DD"):"",console.debug("Expiration date status",n,this.share.expireDate)}},dateMaxEnforced:function(){return this.config.isDefaultExpireDateEnforced&&moment().add(1+this.config.defaultExpireDate,"days")},isPasswordProtected:{get:function(){return this.config.enforcePasswordForPublicLink||!!this.share.password},set:function(n){var e=this;return fe(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(t.t0=i.default,t.t1=e.share,!n){t.next=8;break}return t.next=5,an();case 5:t.t2=t.sent,t.next=9;break;case 8:t.t2="";case 9:t.t3=t.t2,t.t0.set.call(t.t0,t.t1,"password",t.t3),i.default.set(e.share,"newPassword",e.share.password);case 12:case"end":return t.stop()}}),t)})))()}},passwordExpirationTime:function(){if(null===this.share.passwordExpirationTime)return null;var n=moment(this.share.passwordExpirationTime);return!(n.diff(moment())<0)&&n.fromNow()},isTalkEnabled:function(){return void 0!==OC.appswebroots.spreed},isPasswordProtectedByTalkAvailable:function(){return this.isPasswordProtected&&this.isTalkEnabled},isPasswordProtectedByTalk:{get:function(){return this.share.sendPasswordByTalk},set:function(n){var e=this;return fe(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:e.share.sendPasswordByTalk=n;case 1:case"end":return t.stop()}}),t)})))()}},isEmailShareType:function(){return!!this.share&&this.share.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL},canTogglePasswordProtectedByTalkAvailable:function(){return!(!this.isPasswordProtected||this.isEmailShareType&&!this.hasUnsavedPassword)},pendingPassword:function(){return this.config.enforcePasswordForPublicLink&&this.share&&!this.share.id},pendingExpirationDate:function(){return this.config.isDefaultExpireDateEnforced&&this.share&&!this.share.id},hasUnsavedPassword:function(){return void 0!==this.share.newPassword},shareLink:function(){return window.location.protocol+"//"+window.location.host+(0,l.generateUrl)("/s/")+this.share.token},clipboardTooltip:function(){return this.copied?this.copySuccess?t("files_sharing","Link copied"):t("files_sharing","Cannot copy, please copy the link manually"):t("files_sharing","Copy to clipboard")},externalLegacyLinkActions:function(){return this.ExternalLegacyLinkActions.actions},externalLinkActions:function(){return this.ExternalShareActions.actions.filter((function(n){return n.shareType.includes(g.D.SHARE_TYPE_LINK)||n.shareType.includes(g.D.SHARE_TYPE_EMAIL)}))},isPasswordPolicyEnabled:function(){return"object"===de(this.config.passwordPolicy)}},methods:{onNewLinkShare:function(){var n=this;return fe(regeneratorRuntime.mark((function e(){var r,i,a,s;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!n.loading){e.next=2;break}return e.abrupt("return");case 2:if(r={share_type:g.D.SHARE_TYPE_LINK},n.config.isDefaultExpireDateEnforced&&(r.expiration=n.config.defaultExpirationDateString),!n.config.enableLinkPasswordByDefault){e.next=8;break}return e.next=7,an();case 7:r.password=e.sent;case 8:if(!n.config.enforcePasswordForPublicLink&&!n.config.isDefaultExpireDateEnforced){e.next=33;break}if(n.pending=!0,!n.share||n.share.id){e.next=20;break}if(!n.checkShare(n.share)){e.next=17;break}return e.next=14,n.pushNewLinkShare(n.share,!0);case 14:return e.abrupt("return",!0);case 17:return n.open=!0,OC.Notification.showTemporary(t("files_sharing","Error, please enter proper password and/or expiration date")),e.abrupt("return",!1);case 20:if(!n.config.enforcePasswordForPublicLink){e.next=24;break}return e.next=23,an();case 23:r.password=e.sent;case 24:return i=new v(r),e.next=27,new Promise((function(e){n.$emit("add:share",i,e)}));case 27:a=e.sent,n.open=!1,n.pending=!1,a.open=!0,e.next=36;break;case 33:return s=new v(r),e.next=36,n.pushNewLinkShare(s);case 36:case"end":return e.stop()}}),e)})))()},pushNewLinkShare:function(n,e){var t=this;return fe(regeneratorRuntime.mark((function r(){var i,a,s,o,c;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(r.prev=0,!t.loading){r.next=3;break}return r.abrupt("return",!0);case 3:return t.loading=!0,t.errors={},i=(t.fileInfo.path+"/"+t.fileInfo.name).replace("//","/"),r.next=8,t.createShare({path:i,shareType:g.D.SHARE_TYPE_LINK,password:n.password,expireDate:n.expireDate});case 8:if(a=r.sent,t.open=!1,console.debug("Link share created",a),!e){r.next=17;break}return r.next=14,new Promise((function(n){t.$emit("update:share",a,n)}));case 14:s=r.sent,r.next=20;break;case 17:return r.next=19,new Promise((function(n){t.$emit("add:share",a,n)}));case 19:s=r.sent;case 20:t.config.enforcePasswordForPublicLink||s.copyLink(),r.next=28;break;case 23:r.prev=23,r.t0=r.catch(0),o=r.t0.response,(c=o.data.ocs.meta.message).match(/password/i)?t.onSyncError("password",c):c.match(/date/i)?t.onSyncError("expireDate",c):t.onSyncError("pending",c);case 28:return r.prev=28,t.loading=!1,r.finish(28);case 31:case"end":return r.stop()}}),r,null,[[0,23,28,31]])})))()},onLabelChange:function(n){this.$set(this.share,"newLabel",n.trim())},onLabelSubmit:function(){"string"==typeof this.share.newLabel&&(this.share.label=this.share.newLabel,this.$delete(this.share,"newLabel"),this.queueUpdate("label"))},copyLink:function(){var n=this;return fe(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,n.$copyText(n.shareLink);case 3:n.$refs.copyButton.$el.focus(),n.copySuccess=!0,n.copied=!0,e.next=13;break;case 8:e.prev=8,e.t0=e.catch(0),n.copySuccess=!1,n.copied=!0,console.error(e.t0);case 13:return e.prev=13,setTimeout((function(){n.copySuccess=!1,n.copied=!1}),4e3),e.finish(13);case 16:case"end":return e.stop()}}),e,null,[[0,8,13,16]])})))()},onPasswordChange:function(n){this.$set(this.share,"newPassword",n)},onPasswordDisable:function(){this.share.password="",this.$delete(this.share,"newPassword"),this.share.id&&this.queueUpdate("password")},onPasswordSubmit:function(){this.hasUnsavedPassword&&(this.share.password=this.share.newPassword.trim(),this.queueUpdate("password"))},onPasswordProtectedByTalkChange:function(){this.hasUnsavedPassword&&(this.share.password=this.share.newPassword.trim()),this.queueUpdate("sendPasswordByTalk","password")},onMenuClose:function(){this.onPasswordSubmit(),this.onNoteSubmit()},onCancel:function(){this.$emit("remove:share",this.share)}}},me=r(62868),ve={};ve.styleTagTransform=H(),ve.setAttributes=I(),ve.insert=D().bind(null,"head"),ve.domAPI=T(),ve.insertStyleElement=N(),k()(me.Z,ve),me.Z&&me.Z.locals&&me.Z.locals;var _e=(0,B.Z)(ge,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("li",{staticClass:"sharing-entry sharing-entry__link",class:{"sharing-entry--share":n.share}},[t("Avatar",{staticClass:"sharing-entry__avatar",attrs:{"is-no-user":!0,"icon-class":n.isEmailShareType?"avatar-link-share icon-mail-white":"avatar-link-share icon-public-white"}}),n._v(" "),t("div",{staticClass:"sharing-entry__desc"},[t("span",{staticClass:"sharing-entry__title",attrs:{title:n.title}},[n._v("\n\t\t\t"+n._s(n.title)+"\n\t\t")]),n._v(" "),n.subtitle?t("p",[n._v("\n\t\t\t"+n._s(n.subtitle)+"\n\t\t")]):n._e()]),n._v(" "),n.share&&!n.isEmailShareType&&n.share.token?t("Actions",{ref:"copyButton",staticClass:"sharing-entry__copy"},[t("ActionLink",{attrs:{href:n.shareLink,target:"_blank",icon:n.copied&&n.copySuccess?"icon-checkmark-color":"icon-clippy"},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),n.copyLink.apply(null,arguments)}}},[n._v("\n\t\t\t"+n._s(n.clipboardTooltip)+"\n\t\t")])],1):n._e(),n._v(" "),n.pending||!n.pendingPassword&&!n.pendingExpirationDate?n.loading?t("div",{staticClass:"icon-loading-small sharing-entry__loading"}):t("Actions",{staticClass:"sharing-entry__actions",attrs:{"menu-align":"right",open:n.open},on:{"update:open":function(e){n.open=e},close:n.onMenuClose}},[n.share?[n.share.canEdit&&n.canReshare?[t("ActionInput",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.label,show:n.errors.label,trigger:"manual",defaultContainer:".app-sidebar"},expression:"{\n\t\t\t\t\t\tcontent: errors.label,\n\t\t\t\t\t\tshow: errors.label,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '.app-sidebar'\n\t\t\t\t\t}",modifiers:{auto:!0}}],ref:"label",class:{error:n.errors.label},attrs:{disabled:n.saving,"aria-label":n.t("files_sharing","Share label"),value:void 0!==n.share.newLabel?n.share.newLabel:n.share.label,icon:"icon-edit",maxlength:"255"},on:{"update:value":n.onLabelChange,submit:n.onLabelSubmit}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Share label"))+"\n\t\t\t\t")]),n._v(" "),t("SharePermissionsEditor",{attrs:{"can-reshare":n.canReshare,share:n.share,"file-info":n.fileInfo},on:{"update:share":function(e){n.share=e}}}),n._v(" "),t("ActionSeparator"),n._v(" "),t("ActionCheckbox",{attrs:{checked:n.share.hideDownload,disabled:n.saving},on:{"update:checked":function(e){return n.$set(n.share,"hideDownload",e)},change:function(e){return n.queueUpdate("hideDownload")}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Hide download"))+"\n\t\t\t\t")]),n._v(" "),t("ActionCheckbox",{staticClass:"share-link-password-checkbox",attrs:{checked:n.isPasswordProtected,disabled:n.config.enforcePasswordForPublicLink||n.saving},on:{"update:checked":function(e){n.isPasswordProtected=e},uncheck:n.onPasswordDisable}},[n._v("\n\t\t\t\t\t"+n._s(n.config.enforcePasswordForPublicLink?n.t("files_sharing","Password protection (enforced)"):n.t("files_sharing","Password protect"))+"\n\t\t\t\t")]),n._v(" "),n.isPasswordProtected?t("ActionInput",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.password,show:n.errors.password,trigger:"manual",defaultContainer:"#app-sidebar"},expression:"{\n\t\t\t\t\t\tcontent: errors.password,\n\t\t\t\t\t\tshow: errors.password,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t}",modifiers:{auto:!0}}],ref:"password",staticClass:"share-link-password",class:{error:n.errors.password},attrs:{disabled:n.saving,required:n.config.enforcePasswordForPublicLink,value:n.hasUnsavedPassword?n.share.newPassword:"***************",icon:"icon-password",autocomplete:"new-password",type:n.hasUnsavedPassword?"text":"password"},on:{"update:value":n.onPasswordChange,submit:n.onPasswordSubmit}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Enter a password"))+"\n\t\t\t\t")]):n._e(),n._v(" "),n.isEmailShareType&&n.passwordExpirationTime?t("ActionText",{attrs:{icon:"icon-info"}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Password expires {passwordExpirationTime}",{passwordExpirationTime:n.passwordExpirationTime}))+"\n\t\t\t\t")]):n.isEmailShareType&&null!==n.passwordExpirationTime?t("ActionText",{attrs:{icon:"icon-error"}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Password expired"))+"\n\t\t\t\t")]):n._e(),n._v(" "),n.isPasswordProtectedByTalkAvailable?t("ActionCheckbox",{staticClass:"share-link-password-talk-checkbox",attrs:{checked:n.isPasswordProtectedByTalk,disabled:!n.canTogglePasswordProtectedByTalkAvailable||n.saving},on:{"update:checked":function(e){n.isPasswordProtectedByTalk=e},change:n.onPasswordProtectedByTalkChange}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Video verification"))+"\n\t\t\t\t")]):n._e(),n._v(" "),t("ActionCheckbox",{staticClass:"share-link-expire-date-checkbox",attrs:{checked:n.hasExpirationDate,disabled:n.config.isDefaultExpireDateEnforced||n.saving},on:{"update:checked":function(e){n.hasExpirationDate=e},uncheck:n.onExpirationDisable}},[n._v("\n\t\t\t\t\t"+n._s(n.config.isDefaultExpireDateEnforced?n.t("files_sharing","Expiration date (enforced)"):n.t("files_sharing","Set expiration date"))+"\n\t\t\t\t")]),n._v(" "),n.hasExpirationDate?t("ActionInput",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.expireDate,show:n.errors.expireDate,trigger:"manual",defaultContainer:"#app-sidebar"},expression:"{\n\t\t\t\t\t\tcontent: errors.expireDate,\n\t\t\t\t\t\tshow: errors.expireDate,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t}",modifiers:{auto:!0}}],ref:"expireDate",staticClass:"share-link-expire-date",class:{error:n.errors.expireDate},attrs:{disabled:n.saving,lang:n.lang,value:n.share.expireDate,"value-type":"format",icon:"icon-calendar-dark",type:"date","disabled-date":n.disabledDate},on:{"update:value":n.onExpirationChange}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Enter a date"))+"\n\t\t\t\t")]):n._e(),n._v(" "),t("ActionCheckbox",{attrs:{checked:n.hasNote,disabled:n.saving},on:{"update:checked":function(e){n.hasNote=e},uncheck:function(e){return n.queueUpdate("note")}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Note to recipient"))+"\n\t\t\t\t")]),n._v(" "),n.hasNote?t("ActionTextEditable",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.note,show:n.errors.note,trigger:"manual",defaultContainer:"#app-sidebar"},expression:"{\n\t\t\t\t\t\tcontent: errors.note,\n\t\t\t\t\t\tshow: errors.note,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t}",modifiers:{auto:!0}}],ref:"note",class:{error:n.errors.note},attrs:{disabled:n.saving,placeholder:n.t("files_sharing","Enter a note for the share recipient"),value:n.share.newNote||n.share.note,icon:"icon-edit"},on:{"update:value":n.onNoteChange,submit:n.onNoteSubmit}}):n._e()]:n._e(),n._v(" "),t("ActionSeparator"),n._v(" "),n._l(n.externalLinkActions,(function(e){return t("ExternalShareAction",{key:e.id,attrs:{id:e.id,action:e,"file-info":n.fileInfo,share:n.share}})})),n._v(" "),n._l(n.externalLegacyLinkActions,(function(e,r){var i=e.icon,a=e.url,s=e.name;return t("ActionLink",{key:r,attrs:{href:a(n.shareLink),icon:i,target:"_blank"}},[n._v("\n\t\t\t\t"+n._s(s)+"\n\t\t\t")])})),n._v(" "),n.share.canDelete?t("ActionButton",{attrs:{icon:"icon-close",disabled:n.saving},on:{click:function(e){return e.preventDefault(),n.onDelete.apply(null,arguments)}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Unshare"))+"\n\t\t\t")]):n._e(),n._v(" "),!n.isEmailShareType&&n.canReshare?t("ActionButton",{staticClass:"new-share-link",attrs:{icon:"icon-add"},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),n.onNewLinkShare.apply(null,arguments)}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Add another link"))+"\n\t\t\t")]):n._e()]:n.canReshare?t("ActionButton",{staticClass:"new-share-link",attrs:{icon:n.loading?"icon-loading-small":"icon-add"},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),n.onNewLinkShare.apply(null,arguments)}}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Create a new share link"))+"\n\t\t")]):n._e()],2):t("Actions",{staticClass:"sharing-entry__actions",attrs:{"menu-align":"right",open:n.open},on:{"update:open":function(e){n.open=e},close:n.onNewLinkShare}},[n.errors.pending?t("ActionText",{class:{error:n.errors.pending},attrs:{icon:"icon-error"}},[n._v("\n\t\t\t"+n._s(n.errors.pending)+"\n\t\t")]):t("ActionText",{attrs:{icon:"icon-info"}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Please enter the following required information before creating the share"))+"\n\t\t")]),n._v(" "),n.pendingPassword?t("ActionText",{attrs:{icon:"icon-password"}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Password protection (enforced)"))+"\n\t\t")]):n.config.enableLinkPasswordByDefault?t("ActionCheckbox",{staticClass:"share-link-password-checkbox",attrs:{checked:n.isPasswordProtected,disabled:n.config.enforcePasswordForPublicLink||n.saving},on:{"update:checked":function(e){n.isPasswordProtected=e},uncheck:n.onPasswordDisable}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Password protection"))+"\n\t\t")]):n._e(),n._v(" "),n.pendingPassword||n.share.password?t("ActionInput",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.password,show:n.errors.password,trigger:"manual",defaultContainer:"#app-sidebar"},expression:"{\n\t\t\t\tcontent: errors.password,\n\t\t\t\tshow: errors.password,\n\t\t\t\ttrigger: 'manual',\n\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t}",modifiers:{auto:!0}}],staticClass:"share-link-password",attrs:{value:n.share.password,disabled:n.saving,required:n.config.enableLinkPasswordByDefault||n.config.enforcePasswordForPublicLink,minlength:n.isPasswordPolicyEnabled&&n.config.passwordPolicy.minLength,icon:"",autocomplete:"new-password"},on:{"update:value":function(e){return n.$set(n.share,"password",e)},submit:n.onNewLinkShare}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Enter a password"))+"\n\t\t")]):n._e(),n._v(" "),n.pendingExpirationDate?t("ActionText",{attrs:{icon:"icon-calendar-dark"}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Expiration date (enforced)"))+"\n\t\t")]):n._e(),n._v(" "),n.pendingExpirationDate?t("ActionInput",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.expireDate,show:n.errors.expireDate,trigger:"manual",defaultContainer:"#app-sidebar"},expression:"{\n\t\t\t\tcontent: errors.expireDate,\n\t\t\t\tshow: errors.expireDate,\n\t\t\t\ttrigger: 'manual',\n\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t}",modifiers:{auto:!0}}],staticClass:"share-link-expire-date",attrs:{disabled:n.saving,lang:n.lang,icon:"",type:"date","value-type":"format","disabled-date":n.disabledDate},model:{value:n.share.expireDate,callback:function(e){n.$set(n.share,"expireDate",e)},expression:"share.expireDate"}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Enter a date"))+"\n\t\t")]):n._e(),n._v(" "),t("ActionButton",{attrs:{icon:"icon-checkmark"},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),n.onNewLinkShare.apply(null,arguments)}}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Create share"))+"\n\t\t")]),n._v(" "),t("ActionButton",{attrs:{icon:"icon-close"},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),n.onCancel.apply(null,arguments)}}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Cancel"))+"\n\t\t")])],1)],1)}),[],!1,null,"16656e50",null),Ae={name:"SharingLinkList",components:{SharingEntryLink:_e.exports},mixins:[_],props:{fileInfo:{type:Object,default:function(){},required:!0},shares:{type:Array,default:function(){return[]},required:!0},canReshare:{type:Boolean,required:!0}},data:function(){return{canLinkShare:OC.getCapabilities().files_sharing.public.enabled}},computed:{hasLinkShares:function(){var n=this;return this.shares.filter((function(e){return e.type===n.SHARE_TYPES.SHARE_TYPE_LINK})).length>0},hasShares:function(){return this.shares.length>0}},methods:{addShare:function(n,e){this.shares.unshift(n),this.awaitForShare(n,e)},awaitForShare:function(n,e){var t=this;this.$nextTick((function(){var r=t.$children.find((function(e){return e.share===n}));r&&e(r)}))},removeShare:function(n){var e=this.shares.findIndex((function(e){return e===n}));this.shares.splice(e,1)}}},ye=(0,B.Z)(Ae,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return n.canLinkShare?t("ul",{staticClass:"sharing-link-list"},[!n.hasLinkShares&&n.canReshare?t("SharingEntryLink",{attrs:{"can-reshare":n.canReshare,"file-info":n.fileInfo},on:{"add:share":n.addShare}}):n._e(),n._v(" "),n.hasShares?n._l(n.shares,(function(e,r){return t("SharingEntryLink",{key:e.id,attrs:{"can-reshare":n.canReshare,share:n.shares[r],"file-info":n.fileInfo},on:{"update:share":[function(e){return n.$set(n.shares,r,e)},function(e){return n.awaitForShare.apply(void 0,arguments)}],"add:share":function(e){return n.addShare.apply(void 0,arguments)},"remove:share":n.removeShare}})})):n._e()],2):n._e()}),[],!1,null,null,null),Ee=ye.exports;function we(n){return we="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},we(n)}var Se={name:"SharingEntry",components:{Actions:w(),ActionButton:Sn(),ActionCheckbox:Fn(),ActionInput:Zn(),ActionTextEditable:Qn(),Avatar:h()},directives:{Tooltip:b()},mixins:[Rn],data:function(){return{permissionsEdit:OC.PERMISSION_UPDATE,permissionsCreate:OC.PERMISSION_CREATE,permissionsDelete:OC.PERMISSION_DELETE,permissionsRead:OC.PERMISSION_READ,permissionsShare:OC.PERMISSION_SHARE}},computed:{title:function(){var n=this.share.shareWithDisplayName;return this.share.type===this.SHARE_TYPES.SHARE_TYPE_GROUP?n+=" (".concat(t("files_sharing","group"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_ROOM?n+=" (".concat(t("files_sharing","conversation"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE?n+=" (".concat(t("files_sharing","remote"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP?n+=" (".concat(t("files_sharing","remote group"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_GUEST&&(n+=" (".concat(t("files_sharing","guest"),")")),n},tooltip:function(){if(this.share.owner!==this.share.uidFileOwner){var n={user:this.share.shareWithDisplayName,owner:this.share.ownerDisplayName};return this.share.type===this.SHARE_TYPES.SHARE_TYPE_GROUP?t("files_sharing","Shared with the group {user} by {owner}",n):this.share.type===this.SHARE_TYPES.SHARE_TYPE_ROOM?t("files_sharing","Shared with the conversation {user} by {owner}",n):t("files_sharing","Shared with {user} by {owner}",n)}return null},canHaveNote:function(){return!this.isRemote},isRemote:function(){return this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE||this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP},canSetEdit:function(){return this.fileInfo.sharePermissions&OC.PERMISSION_UPDATE||this.canEdit},canSetCreate:function(){return this.fileInfo.sharePermissions&OC.PERMISSION_CREATE||this.canCreate},canSetDelete:function(){return this.fileInfo.sharePermissions&OC.PERMISSION_DELETE||this.canDelete},canSetReshare:function(){return this.fileInfo.sharePermissions&OC.PERMISSION_SHARE||this.canReshare},canEdit:{get:function(){return this.share.hasUpdatePermission},set:function(n){this.updatePermissions({isEditChecked:n})}},canCreate:{get:function(){return this.share.hasCreatePermission},set:function(n){this.updatePermissions({isCreateChecked:n})}},canDelete:{get:function(){return this.share.hasDeletePermission},set:function(n){this.updatePermissions({isDeleteChecked:n})}},canReshare:{get:function(){return this.share.hasSharePermission},set:function(n){this.updatePermissions({isReshareChecked:n})}},hasRead:{get:function(){return this.share.hasReadPermission}},isFolder:function(){return"dir"===this.fileInfo.type},hasExpirationDate:{get:function(){return this.config.isDefaultInternalExpireDateEnforced||!!this.share.expireDate},set:function(n){this.share.expireDate=n?""!==this.config.defaultInternalExpirationDateString?this.config.defaultInternalExpirationDateString:moment().format("YYYY-MM-DD"):""}},dateMaxEnforced:function(){return this.isRemote?this.config.isDefaultRemoteExpireDateEnforced&&moment().add(1+this.config.defaultRemoteExpireDate,"days"):this.config.isDefaultInternalExpireDateEnforced&&moment().add(1+this.config.defaultInternalExpireDate,"days")},hasStatus:function(){return this.share.type===this.SHARE_TYPES.SHARE_TYPE_USER&&"object"===we(this.share.status)&&!Array.isArray(this.share.status)}},methods:{updatePermissions:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=n.isEditChecked,t=void 0===e?this.canEdit:e,r=n.isCreateChecked,i=void 0===r?this.canCreate:r,a=n.isDeleteChecked,s=void 0===a?this.canDelete:a,o=n.isReshareChecked,c=void 0===o?this.canReshare:o,l=0|(this.hasRead?this.permissionsRead:0)|(i?this.permissionsCreate:0)|(s?this.permissionsDelete:0)|(t?this.permissionsEdit:0)|(c?this.permissionsShare:0);this.share.permissions=l,this.queueUpdate("permissions")},onMenuClose:function(){this.onNoteSubmit()}}},be=Se,Ce=r(24061),xe={};xe.styleTagTransform=H(),xe.setAttributes=I(),xe.insert=D().bind(null,"head"),xe.domAPI=T(),xe.insertStyleElement=N(),k()(Ce.Z,xe),Ce.Z&&Ce.Z.locals&&Ce.Z.locals;var ke=(0,B.Z)(be,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("li",{staticClass:"sharing-entry"},[t("Avatar",{staticClass:"sharing-entry__avatar",attrs:{"is-no-user":n.share.type!==n.SHARE_TYPES.SHARE_TYPE_USER,user:n.share.shareWith,"display-name":n.share.shareWithDisplayName,"tooltip-message":n.share.type===n.SHARE_TYPES.SHARE_TYPE_USER?n.share.shareWith:"","menu-position":"left",url:n.share.shareWithAvatar}}),n._v(" "),t(n.share.shareWithLink?"a":"div",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:n.tooltip,expression:"tooltip",modifiers:{auto:!0}}],tag:"component",staticClass:"sharing-entry__desc",attrs:{href:n.share.shareWithLink}},[t("span",[n._v(n._s(n.title)),n.isUnique?n._e():t("span",{staticClass:"sharing-entry__desc-unique"},[n._v(" ("+n._s(n.share.shareWithDisplayNameUnique)+")")])]),n._v(" "),n.hasStatus?t("p",[t("span",[n._v(n._s(n.share.status.icon||""))]),n._v(" "),t("span",[n._v(n._s(n.share.status.message||""))])]):n._e()]),n._v(" "),t("Actions",{staticClass:"sharing-entry__actions",attrs:{"menu-align":"right"},on:{close:n.onMenuClose}},[n.share.canEdit?[t("ActionCheckbox",{ref:"canEdit",attrs:{checked:n.canEdit,value:n.permissionsEdit,disabled:n.saving||!n.canSetEdit},on:{"update:checked":function(e){n.canEdit=e}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Allow editing"))+"\n\t\t\t")]),n._v(" "),n.isFolder?t("ActionCheckbox",{ref:"canCreate",attrs:{checked:n.canCreate,value:n.permissionsCreate,disabled:n.saving||!n.canSetCreate},on:{"update:checked":function(e){n.canCreate=e}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Allow creating"))+"\n\t\t\t")]):n._e(),n._v(" "),n.isFolder?t("ActionCheckbox",{ref:"canDelete",attrs:{checked:n.canDelete,value:n.permissionsDelete,disabled:n.saving||!n.canSetDelete},on:{"update:checked":function(e){n.canDelete=e}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Allow deleting"))+"\n\t\t\t")]):n._e(),n._v(" "),n.config.isResharingAllowed?t("ActionCheckbox",{ref:"canReshare",attrs:{checked:n.canReshare,value:n.permissionsShare,disabled:n.saving||!n.canSetReshare},on:{"update:checked":function(e){n.canReshare=e}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Allow resharing"))+"\n\t\t\t")]):n._e(),n._v(" "),t("ActionCheckbox",{attrs:{checked:n.hasExpirationDate,disabled:n.config.isDefaultInternalExpireDateEnforced||n.saving},on:{"update:checked":function(e){n.hasExpirationDate=e},uncheck:n.onExpirationDisable}},[n._v("\n\t\t\t\t"+n._s(n.config.isDefaultInternalExpireDateEnforced?n.t("files_sharing","Expiration date enforced"):n.t("files_sharing","Set expiration date"))+"\n\t\t\t")]),n._v(" "),n.hasExpirationDate?t("ActionInput",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.expireDate,show:n.errors.expireDate,trigger:"manual"},expression:"{\n\t\t\t\t\tcontent: errors.expireDate,\n\t\t\t\t\tshow: errors.expireDate,\n\t\t\t\t\ttrigger: 'manual'\n\t\t\t\t}",modifiers:{auto:!0}}],ref:"expireDate",class:{error:n.errors.expireDate},attrs:{disabled:n.saving,lang:n.lang,value:n.share.expireDate,"value-type":"format",icon:"icon-calendar-dark",type:"date","disabled-date":n.disabledDate},on:{"update:value":n.onExpirationChange}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Enter a date"))+"\n\t\t\t")]):n._e(),n._v(" "),n.canHaveNote?[t("ActionCheckbox",{attrs:{checked:n.hasNote,disabled:n.saving},on:{"update:checked":function(e){n.hasNote=e},uncheck:function(e){return n.queueUpdate("note")}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Note to recipient"))+"\n\t\t\t\t")]),n._v(" "),n.hasNote?t("ActionTextEditable",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.note,show:n.errors.note,trigger:"manual"},expression:"{\n\t\t\t\t\t\tcontent: errors.note,\n\t\t\t\t\t\tshow: errors.note,\n\t\t\t\t\t\ttrigger: 'manual'\n\t\t\t\t\t}",modifiers:{auto:!0}}],ref:"note",class:{error:n.errors.note},attrs:{disabled:n.saving,value:n.share.newNote||n.share.note,icon:"icon-edit"},on:{"update:value":n.onNoteChange,submit:n.onNoteSubmit}}):n._e()]:n._e()]:n._e(),n._v(" "),n.share.canDelete?t("ActionButton",{attrs:{icon:"icon-close",disabled:n.saving},on:{click:function(e){return e.preventDefault(),n.onDelete.apply(null,arguments)}}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Unshare"))+"\n\t\t")]):n._e()],2)],1)}),[],!1,null,"dc8e346e",null);function Pe(n,e){(null==e||e>n.length)&&(e=n.length);for(var t=0,r=new Array(e);t<e;t++)r[t]=n[t];return r}var Te={name:"SharingList",components:{SharingEntry:ke.exports},mixins:[_],props:{fileInfo:{type:Object,default:function(){},required:!0},shares:{type:Array,default:function(){return[]},required:!0}},computed:{hasShares:function(){return 0===this.shares.length},isUnique:function(){var n=this;return function(e){return(t=n.shares,function(n){if(Array.isArray(n))return Pe(n)}(t)||function(n){if("undefined"!=typeof Symbol&&null!=n[Symbol.iterator]||null!=n["@@iterator"])return Array.from(n)}(t)||function(n,e){if(n){if("string"==typeof n)return Pe(n,e);var t=Object.prototype.toString.call(n).slice(8,-1);return"Object"===t&&n.constructor&&(t=n.constructor.name),"Map"===t||"Set"===t?Array.from(n):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?Pe(n,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).filter((function(t){return e.type===n.SHARE_TYPES.SHARE_TYPE_USER&&e.shareWithDisplayName===t.shareWithDisplayName})).length<=1;var t}}},methods:{removeShare:function(n){var e=this.shares.findIndex((function(e){return e===n}));this.shares.splice(e,1)}}},Re=(0,B.Z)(Te,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("ul",{staticClass:"sharing-sharee-list"},n._l(n.shares,(function(e){return t("SharingEntry",{key:e.id,attrs:{"file-info":n.fileInfo,share:e,"is-unique":n.isUnique(e)},on:{"remove:share":n.removeShare}})})),1)}),[],!1,null,null,null).exports;function De(n,e){(null==e||e>n.length)&&(e=n.length);for(var t=0,r=new Array(e);t<e;t++)r[t]=n[t];return r}function Oe(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}function Ie(n){return function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){Oe(a,r,i,s,o,"next",n)}function o(n){Oe(a,r,i,s,o,"throw",n)}s(void 0)}))}}var Le={name:"SharingTab",components:{Avatar:h(),CollectionList:c.G,SharingEntryInternal:V,SharingEntrySimple:W,SharingInherited:jn,SharingInput:En,SharingLinkList:Ee,SharingList:Re},mixins:[_],data:function(){return{config:new f,error:"",expirationInterval:null,loading:!0,fileInfo:null,reshare:null,sharedWithMe:{},shares:[],linkShares:[],sections:OCA.Sharing.ShareTabSections.getSections()}},computed:{isSharedWithMe:function(){return Object.keys(this.sharedWithMe).length>0},canReshare:function(){return!!(this.fileInfo.permissions&OC.PERMISSION_SHARE)||!!(this.reshare&&this.reshare.hasSharePermission&&this.config.isResharingAllowed)}},methods:{update:function(n){var e=this;return Ie(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:e.fileInfo=n,e.resetState(),e.getShares();case 3:case"end":return t.stop()}}),t)})))()},getShares:function(){var n=this;return Ie(regeneratorRuntime.mark((function e(){var r,i,a,s,o,c,u,h,p,f,g,m;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,n.loading=!0,r=(0,l.generateOcsUrl)("apps/files_sharing/api/v1/shares"),i="json",a=(n.fileInfo.path+"/"+n.fileInfo.name).replace("//","/"),s=d.default.get(r,{params:{format:i,path:a,reshares:!0}}),o=d.default.get(r,{params:{format:i,path:a,shared_with_me:!0}}),e.next=9,Promise.all([s,o]);case 9:c=e.sent,_=2,u=function(n){if(Array.isArray(n))return n}(v=c)||function(n,e){var t=null==n?null:"undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(null!=t){var r,i,a=[],s=!0,o=!1;try{for(t=t.call(n);!(s=(r=t.next()).done)&&(a.push(r.value),!e||a.length!==e);s=!0);}catch(n){o=!0,i=n}finally{try{s||null==t.return||t.return()}finally{if(o)throw i}}return a}}(v,_)||function(n,e){if(n){if("string"==typeof n)return De(n,e);var t=Object.prototype.toString.call(n).slice(8,-1);return"Object"===t&&n.constructor&&(t=n.constructor.name),"Map"===t||"Set"===t?Array.from(n):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?De(n,e):void 0}}(v,_)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),h=u[0],p=u[1],n.loading=!1,n.processSharedWithMe(p),n.processShares(h),e.next=23;break;case 18:e.prev=18,e.t0=e.catch(0),null!==(f=e.t0.response.data)&&void 0!==f&&null!==(g=f.ocs)&&void 0!==g&&null!==(m=g.meta)&&void 0!==m&&m.message?n.error=e.t0.response.data.ocs.meta.message:n.error=t("files_sharing","Unable to load the shares list"),n.loading=!1,console.error("Error loading the shares list",e.t0);case 23:case"end":return e.stop()}var v,_}),e,null,[[0,18]])})))()},resetState:function(){clearInterval(this.expirationInterval),this.loading=!0,this.error="",this.sharedWithMe={},this.shares=[],this.linkShares=[]},updateExpirationSubtitle:function(n){var e=moment(n.expireDate).unix();this.$set(this.sharedWithMe,"subtitle",t("files_sharing","Expires {relativetime}",{relativetime:OC.Util.relativeModifiedDate(1e3*e)})),moment().unix()>e&&(clearInterval(this.expirationInterval),this.$set(this.sharedWithMe,"subtitle",t("files_sharing","this share just expired.")))},processShares:function(n){var e=this,t=n.data;if(t.ocs&&t.ocs.data&&t.ocs.data.length>0){var r=t.ocs.data.map((function(n){return new v(n)})).sort((function(n,e){return e.createdTime-n.createdTime}));this.linkShares=r.filter((function(n){return n.type===e.SHARE_TYPES.SHARE_TYPE_LINK||n.type===e.SHARE_TYPES.SHARE_TYPE_EMAIL})),this.shares=r.filter((function(n){return n.type!==e.SHARE_TYPES.SHARE_TYPE_LINK&&n.type!==e.SHARE_TYPES.SHARE_TYPE_EMAIL})),console.debug("Processed",this.linkShares.length,"link share(s)"),console.debug("Processed",this.shares.length,"share(s)")}},processSharedWithMe:function(n){var e=n.data;if(e.ocs&&e.ocs.data&&e.ocs.data[0]){var r=new v(e),i=function(n){return n.type===g.D.SHARE_TYPE_GROUP?t("files_sharing","Shared with you and the group {group} by {owner}",{group:n.shareWithDisplayName,owner:n.ownerDisplayName},void 0,{escape:!1}):n.type===g.D.SHARE_TYPE_CIRCLE?t("files_sharing","Shared with you and {circle} by {owner}",{circle:n.shareWithDisplayName,owner:n.ownerDisplayName},void 0,{escape:!1}):n.type===g.D.SHARE_TYPE_ROOM?n.shareWithDisplayName?t("files_sharing","Shared with you and the conversation {conversation} by {owner}",{conversation:n.shareWithDisplayName,owner:n.ownerDisplayName},void 0,{escape:!1}):t("files_sharing","Shared with you in a conversation by {owner}",{owner:n.ownerDisplayName},void 0,{escape:!1}):t("files_sharing","Shared with you by {owner}",{owner:n.ownerDisplayName},void 0,{escape:!1})}(r),a=r.ownerDisplayName,s=r.owner;this.sharedWithMe={displayName:a,title:i,user:s},this.reshare=r,r.expireDate&&moment(r.expireDate).unix()>moment().unix()&&(this.updateExpirationSubtitle(r),this.expirationInterval=setInterval(this.updateExpirationSubtitle,1e4,r))}else this.fileInfo&&void 0!==this.fileInfo.shareOwnerId&&this.fileInfo.shareOwnerId!==OC.currentUser&&(this.sharedWithMe={displayName:this.fileInfo.shareOwner,title:t("files_sharing","Shared with you by {owner}",{owner:this.fileInfo.shareOwner},void 0,{escape:!1}),user:this.fileInfo.shareOwnerId})},addShare:function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){};n.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL?this.linkShares.unshift(n):this.shares.unshift(n),this.awaitForShare(n,e)},awaitForShare:function(n,e){var t=this.$refs.shareList;n.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL&&(t=this.$refs.linkShareList),this.$nextTick((function(){var r=t.$children.find((function(e){return e.share===n}));r&&e(r)}))}}},Ne=Le,Ye=r(61618),He={};He.styleTagTransform=H(),He.setAttributes=I(),He.insert=D().bind(null,"head"),He.domAPI=T(),He.insertStyleElement=N(),k()(Ye.Z,He),Ye.Z&&Ye.Z.locals&&Ye.Z.locals;var Ue=(0,B.Z)(Ne,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("div",{class:{"icon-loading":n.loading}},[n.error?t("div",{staticClass:"emptycontent",class:{emptyContentWithSections:n.sections.length>0}},[t("div",{staticClass:"icon icon-error"}),n._v(" "),t("h2",[n._v(n._s(n.error))])]):[n.isSharedWithMe?t("SharingEntrySimple",n._b({staticClass:"sharing-entry__reshare",scopedSlots:n._u([{key:"avatar",fn:function(){return[t("Avatar",{staticClass:"sharing-entry__avatar",attrs:{user:n.sharedWithMe.user,"display-name":n.sharedWithMe.displayName,"tooltip-message":""}})]},proxy:!0}],null,!1,1643724538)},"SharingEntrySimple",n.sharedWithMe,!1)):n._e(),n._v(" "),n.loading?n._e():t("SharingInput",{attrs:{"can-reshare":n.canReshare,"file-info":n.fileInfo,"link-shares":n.linkShares,reshare:n.reshare,shares:n.shares},on:{"add:share":n.addShare}}),n._v(" "),n.loading?n._e():t("SharingLinkList",{ref:"linkShareList",attrs:{"can-reshare":n.canReshare,"file-info":n.fileInfo,shares:n.linkShares}}),n._v(" "),n.loading?n._e():t("SharingList",{ref:"shareList",attrs:{shares:n.shares,"file-info":n.fileInfo}}),n._v(" "),n.canReshare&&!n.loading?t("SharingInherited",{attrs:{"file-info":n.fileInfo}}):n._e(),n._v(" "),t("SharingEntryInternal",{attrs:{"file-info":n.fileInfo}}),n._v(" "),n.fileInfo?t("CollectionList",{attrs:{id:""+n.fileInfo.id,type:"file",name:n.fileInfo.name}}):n._e()],n._v(" "),n._l(n.sections,(function(e,r){return t("div",{key:r,ref:"section-"+r,refInFor:!0,staticClass:"sharingTab__additionalContent"},[t(e(n.$refs["section-"+r],n.fileInfo),{tag:"component",attrs:{"file-info":n.fileInfo}})],1)}))],2)}),[],!1,null,"b6bc0cd2",null).exports;function Me(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}var Be=function(){function n(){var e,t;!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),t=void 0,(e="_state")in this?Object.defineProperty(this,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):this[e]=t,this._state={},this._state.results=[],console.debug("OCA.Sharing.ShareSearch initialized")}var e,t;return e=n,(t=[{key:"state",get:function(){return this._state}},{key:"addNewResult",value:function(n){return""!==n.displayName.trim()&&"function"==typeof n.handler?(this._state.results.push(n),!0):(console.error("Invalid search result provided",n),!1)}}])&&Me(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}();function We(n){return We="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},We(n)}function je(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}var qe=function(){function n(){var e,t;!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),t=void 0,(e="_state")in this?Object.defineProperty(this,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):this[e]=t,this._state={},this._state.actions=[],console.debug("OCA.Sharing.ExternalLinkActions initialized")}var e,t;return e=n,(t=[{key:"state",get:function(){return this._state}},{key:"registerAction",value:function(n){return console.warn("OCA.Sharing.ExternalLinkActions is deprecated, use OCA.Sharing.ExternalShareAction instead"),"object"===We(n)&&n.icon&&n.name&&n.url?(this._state.actions.push(n),!0):(console.error("Invalid action provided",n),!1)}}])&&je(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}();function Fe(n){return Fe="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},Fe(n)}function $e(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}var Ze=function(){function n(){var e,t;!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),t=void 0,(e="_state")in this?Object.defineProperty(this,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):this[e]=t,this._state={},this._state.actions=[],console.debug("OCA.Sharing.ExternalShareActions initialized")}var e,t;return e=n,(t=[{key:"state",get:function(){return this._state}},{key:"registerAction",value:function(n){return"object"===Fe(n)&&"string"==typeof n.id&&"function"==typeof n.data&&Array.isArray(n.shareType)&&"object"===Fe(n.handlers)&&Object.values(n.handlers).every((function(n){return"function"==typeof n}))?this._state.actions.findIndex((function(e){return e.id===n.id}))>-1?(console.error("An action with the same id ".concat(n.id," already exists"),n),!1):(this._state.actions.push(n),!0):(console.error("Invalid action provided",n),!1)}}])&&$e(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}();function Ge(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}var Ve=function(){function n(){var e,t;!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),t=void 0,(e="_sections")in this?Object.defineProperty(this,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):this[e]=t,this._sections=[]}var e,t;return e=n,(t=[{key:"registerSection",value:function(n){this._sections.push(n)}},{key:"getSections",value:function(){return this._sections}}])&&Ge(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}();function Ke(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}window.OCA.Sharing||(window.OCA.Sharing={}),Object.assign(window.OCA.Sharing,{ShareSearch:new Be}),Object.assign(window.OCA.Sharing,{ExternalLinkActions:new qe}),Object.assign(window.OCA.Sharing,{ExternalShareActions:new Ze}),Object.assign(window.OCA.Sharing,{ShareTabSections:new Ve}),i.default.prototype.t=o.translate,i.default.prototype.n=o.translatePlural,i.default.use(s());var Qe=i.default.extend(Ue),ze=null;window.addEventListener("DOMContentLoaded",(function(){OCA.Files&&OCA.Files.Sidebar&&OCA.Files.Sidebar.registerTab(new OCA.Files.Sidebar.Tab({id:"sharing",name:(0,o.translate)("files_sharing","Sharing"),icon:"icon-share",mount:function(n,e,t){return(r=regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return ze&&ze.$destroy(),ze=new Qe({parent:t}),r.next=4,ze.update(e);case 4:ze.$mount(n);case 5:case"end":return r.stop()}}),r)})),function(){var n=this,e=arguments;return new Promise((function(t,i){var a=r.apply(n,e);function s(n){Ke(a,t,i,s,o,"next",n)}function o(n){Ke(a,t,i,s,o,"throw",n)}s(void 0)}))})();var r},update:function(n){ze.update(n)},destroy:function(){ze.$destroy(),ze=null}}))}))},30141:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".error[data-v-ea414898] .action-checkbox__label:before{border:1px solid var(--color-error)}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharePermissionsEditor.vue"],names:[],mappings:"AAiSC,wDACC,mCAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.error {\n\t::v-deep .action-checkbox__label:before {\n\t\tborder: 1px solid var(--color-error);\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},24061:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-entry[data-v-dc8e346e]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-dc8e346e]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-dc8e346e]{color:var(--color-text-maxcontrast)}.sharing-entry__desc-unique[data-v-dc8e346e]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-dc8e346e]{margin-left:auto}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntry.vue"],names:[],mappings:"AAsZA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAED,6CACC,mCAAA,CAGF,yCACC,gBAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t\t&-unique {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},71296:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-entry[data-v-29845767]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-29845767]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-29845767]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-29845767]{margin-left:auto}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryInherited.vue"],names:[],mappings:"AAgGA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAGF,yCACC,gBAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},5602:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-entry__internal .avatar-external[data-v-739d8480]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}.sharing-entry__internal .icon-checkmark-color[data-v-739d8480]{opacity:1}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryInternal.vue"],names:[],mappings:"AA0GC,2DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA,CAED,gEACC,SAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.sharing-entry__internal {\n\t.avatar-external {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},62868:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-entry[data-v-16656e50]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-16656e50]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em;overflow:hidden}.sharing-entry__desc p[data-v-16656e50]{color:var(--color-text-maxcontrast)}.sharing-entry__title[data-v-16656e50]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.sharing-entry:not(.sharing-entry--share) .sharing-entry__actions .new-share-link[data-v-16656e50]{border-top:1px solid var(--color-border)}.sharing-entry[data-v-16656e50] .avatar-link-share{background-color:var(--color-primary)}.sharing-entry .sharing-entry__action--public-upload[data-v-16656e50]{border-bottom:1px solid var(--color-border)}.sharing-entry__loading[data-v-16656e50]{width:44px;height:44px;margin:0;padding:14px;margin-left:auto}.sharing-entry .action-item[data-v-16656e50]{margin-left:auto}.sharing-entry .action-item~.action-item[data-v-16656e50],.sharing-entry .action-item~.sharing-entry__loading[data-v-16656e50]{margin-left:0}.sharing-entry .icon-checkmark-color[data-v-16656e50]{opacity:1}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryLink.vue"],names:[],mappings:"AAy2BA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,eAAA,CAEA,wCACC,mCAAA,CAGF,uCACC,sBAAA,CACA,eAAA,CACA,kBAAA,CAIA,mGACC,wCAAA,CAIF,oDACC,qCAAA,CAGD,sEACC,2CAAA,CAGD,yCACC,UAAA,CACA,WAAA,CACA,QAAA,CACA,YAAA,CACA,gBAAA,CAKD,6CACC,gBAAA,CACA,+HAEC,aAAA,CAIF,sDACC,SAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\toverflow: hidden;\n\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__title {\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t}\n\n\t&:not(.sharing-entry--share) &__actions {\n\t\t.new-share-link {\n\t\t\tborder-top: 1px solid var(--color-border);\n\t\t}\n\t}\n\n\t::v-deep .avatar-link-share {\n\t\tbackground-color: var(--color-primary);\n\t}\n\n\t.sharing-entry__action--public-upload {\n\t\tborder-bottom: 1px solid var(--color-border);\n\t}\n\n\t&__loading {\n\t\twidth: 44px;\n\t\theight: 44px;\n\t\tmargin: 0;\n\t\tpadding: 14px;\n\t\tmargin-left: auto;\n\t}\n\n\t// put menus to the left\n\t// but only the first one\n\t.action-item {\n\t\tmargin-left: auto;\n\t\t~ .action-item,\n\t\t~ .sharing-entry__loading {\n\t\t\tmargin-left: 0;\n\t\t}\n\t}\n\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},22695:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-entry[data-v-3483f0f7]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-3483f0f7]{padding:8px;line-height:1.2em;position:relative;flex:1 1;min-width:0}.sharing-entry__desc p[data-v-3483f0f7]{color:var(--color-text-maxcontrast)}.sharing-entry__title[data-v-3483f0f7]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:inherit}.sharing-entry__actions[data-v-3483f0f7]{margin-left:auto !important}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntrySimple.vue"],names:[],mappings:"AA2FA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,WAAA,CACA,iBAAA,CACA,iBAAA,CACA,QAAA,CACA,WAAA,CACA,wCACC,mCAAA,CAGF,uCACC,kBAAA,CACA,sBAAA,CACA,eAAA,CACA,iBAAA,CAED,yCACC,2BAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\t&__desc {\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tposition: relative;\n\t\tflex: 1 1;\n\t\tmin-width: 0;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__title {\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\tmax-width: inherit;\n\t}\n\t&__actions {\n\t\tmargin-left: auto !important;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},84721:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-input{width:100%;margin:10px 0}.sharing-input .multiselect__option span[lookup] .avatardiv{background-image:var(--icon-search-white);background-repeat:no-repeat;background-position:center;background-color:var(--color-text-maxcontrast) !important}.sharing-input .multiselect__option span[lookup] .avatardiv div{display:none}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingInput.vue"],names:[],mappings:"AA0gBA,eACC,UAAA,CACA,aAAA,CAKE,4DACC,yCAAA,CACA,2BAAA,CACA,0BAAA,CACA,yDAAA,CACA,gEACC,YAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.sharing-input {\n\twidth: 100%;\n\tmargin: 10px 0;\n\n\t// properly style the lookup entry\n\t.multiselect__option {\n\t\tspan[lookup] {\n\t\t\t.avatardiv {\n\t\t\t\tbackground-image: var(--icon-search-white);\n\t\t\t\tbackground-repeat: no-repeat;\n\t\t\t\tbackground-position: center;\n\t\t\t\tbackground-color: var(--color-text-maxcontrast) !important;\n\t\t\t\tdiv {\n\t\t\t\t\tdisplay: none;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},79031:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-entry__inherited .avatar-shared[data-v-7a52663c]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}","",{version:3,sources:["webpack://./apps/files_sharing/src/views/SharingInherited.vue"],names:[],mappings:"AA8JC,0DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.sharing-entry__inherited {\n\t.avatar-shared {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},61618:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".emptyContentWithSections[data-v-b6bc0cd2]{margin:1rem auto}","",{version:3,sources:["webpack://./apps/files_sharing/src/views/SharingTab.vue"],names:[],mappings:"AAyWA,2CACC,gBAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.emptyContentWithSections {\n\tmargin: 1rem auto;\n}\n"],sourceRoot:""}]),e.Z=s}},r={};function i(n){var t=r[n];if(void 0!==t)return t.exports;var a=r[n]={id:n,loaded:!1,exports:{}};return e[n].call(a.exports,a,a.exports,i),a.loaded=!0,a.exports}i.m=e,i.amdD=function(){throw new Error("define cannot be used indirect")},i.amdO={},n=[],i.O=function(e,t,r,a){if(!t){var s=1/0;for(u=0;u<n.length;u++){t=n[u][0],r=n[u][1],a=n[u][2];for(var o=!0,c=0;c<t.length;c++)(!1&a||s>=a)&&Object.keys(i.O).every((function(n){return i.O[n](t[c])}))?t.splice(c--,1):(o=!1,a<s&&(s=a));if(o){n.splice(u--,1);var l=r();void 0!==l&&(e=l)}}return e}a=a||0;for(var u=n.length;u>0&&n[u-1][2]>a;u--)n[u]=n[u-1];n[u]=[t,r,a]},i.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return i.d(e,{a:e}),e},i.d=function(n,e){for(var t in e)i.o(e,t)&&!i.o(n,t)&&Object.defineProperty(n,t,{enumerable:!0,get:e[t]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"==typeof window)return window}}(),i.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},i.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},i.nmd=function(n){return n.paths=[],n.children||(n.children=[]),n},i.j=7870,function(){i.b=document.baseURI||self.location.href;var n={7870:0};i.O.j=function(e){return 0===n[e]};var e=function(e,t){var r,a,s=t[0],o=t[1],c=t[2],l=0;if(s.some((function(e){return 0!==n[e]}))){for(r in o)i.o(o,r)&&(i.m[r]=o[r]);if(c)var u=c(i)}for(e&&e(t);l<s.length;l++)a=s[l],i.o(n,a)&&n[a]&&n[a][0](),n[a]=0;return i.O(u)},t=self.webpackChunknextcloud=self.webpackChunknextcloud||[];t.forEach(e.bind(null,0)),t.push=e.bind(null,t.push.bind(t))}(),i.nc=void 0;var a=i.O(void 0,[7874],(function(){return i(21883)}));a=i.O(a)}();
+//# sourceMappingURL=files_sharing-files_sharing_tab.js.map?v=2fbe5c0db42d4150aacc \ No newline at end of file
diff --git a/dist/files_sharing-files_sharing_tab.js.map b/dist/files_sharing-files_sharing_tab.js.map
index 95a417b9101..6eb3eec0143 100644
--- a/dist/files_sharing-files_sharing_tab.js.map
+++ b/dist/files_sharing-files_sharing_tab.js.map
@@ -1 +1 @@
-{"version":3,"file":"files_sharing-files_sharing_tab.js?v=e9152faf6b2f4eb19f61","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/files_sharing/src/services/ConfigService.js","webpack:///nextcloud/apps/files_sharing/src/models/Share.js","webpack:///nextcloud/apps/files_sharing/src/mixins/ShareTypes.js","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntrySimple.vue?6639","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntrySimple.vue?cb12","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue?vue&type=template&id=3483f0f7&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInternal.vue?3479","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInternal.vue?4c20","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue?vue&type=template&id=739d8480&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/utils/GeneratePassword.js","webpack:///nextcloud/apps/files_sharing/src/mixins/ShareRequests.js","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingInput.vue?1f8b","webpack://nextcloud/./apps/files_sharing/src/components/SharingInput.vue?3d7c","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue?vue&type=template&id=70f57b32&","webpack:///nextcloud/apps/files_sharing/src/mixins/SharesMixin.js","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInherited.vue?b36f","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInherited.vue?0e5a","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue?vue&type=template&id=29845767&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/views/SharingInherited.vue?7b89","webpack://nextcloud/./apps/files_sharing/src/views/SharingInherited.vue?1677","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue?vue&type=template&id=7a52663c&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/ExternalShareAction.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/components/ExternalShareAction.vue","webpack://nextcloud/./apps/files_sharing/src/components/ExternalShareAction.vue?9bf3","webpack:///nextcloud/apps/files_sharing/src/components/ExternalShareAction.vue?vue&type=template&id=29f555e7&","webpack:///nextcloud/apps/files_sharing/src/lib/SharePermissionsToolBox.js","webpack:///nextcloud/apps/files_sharing/src/components/SharePermissionsEditor.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/components/SharePermissionsEditor.vue","webpack://nextcloud/./apps/files_sharing/src/components/SharePermissionsEditor.vue?c4af","webpack://nextcloud/./apps/files_sharing/src/components/SharePermissionsEditor.vue?f133","webpack:///nextcloud/apps/files_sharing/src/components/SharePermissionsEditor.vue?vue&type=template&id=ea414898&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryLink.vue?9336","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryLink.vue?af90","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue?vue&type=template&id=16656e50&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/views/SharingLinkList.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/views/SharingLinkList.vue","webpack://nextcloud/./apps/files_sharing/src/views/SharingLinkList.vue?a70b","webpack:///nextcloud/apps/files_sharing/src/views/SharingLinkList.vue?vue&type=template&id=8be1a6a2&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntry.vue?0853","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntry.vue?10a7","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue?vue&type=template&id=dc8e346e&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/views/SharingList.vue","webpack:///nextcloud/apps/files_sharing/src/views/SharingList.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/views/SharingList.vue?9f9c","webpack:///nextcloud/apps/files_sharing/src/views/SharingList.vue?vue&type=template&id=0b29d4c0&","webpack:///nextcloud/apps/files_sharing/src/views/SharingTab.vue","webpack:///nextcloud/apps/files_sharing/src/utils/SharedWithMe.js","webpack:///nextcloud/apps/files_sharing/src/views/SharingTab.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/views/SharingTab.vue?54a0","webpack://nextcloud/./apps/files_sharing/src/views/SharingTab.vue?6997","webpack:///nextcloud/apps/files_sharing/src/views/SharingTab.vue?vue&type=template&id=b6bc0cd2&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/services/ShareSearch.js","webpack:///nextcloud/apps/files_sharing/src/services/ExternalLinkActions.js","webpack:///nextcloud/apps/files_sharing/src/services/ExternalShareActions.js","webpack:///nextcloud/apps/files_sharing/src/services/TabSections.js","webpack:///nextcloud/apps/files_sharing/src/files_sharing_tab.js","webpack:///nextcloud/apps/files_sharing/src/components/SharePermissionsEditor.vue?vue&type=style&index=0&id=ea414898&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue?vue&type=style&index=0&id=dc8e346e&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue?vue&type=style&index=0&id=29845767&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue?vue&type=style&index=0&id=739d8480&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue?vue&type=style&index=0&id=16656e50&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue?vue&type=style&index=0&id=3483f0f7&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue?vue&type=style&index=0&lang=scss&","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue?vue&type=style&index=0&id=7a52663c&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/views/SharingTab.vue?vue&type=style&index=0&id=b6bc0cd2&scoped=true&lang=scss&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/amd define","webpack:///nextcloud/webpack/runtime/amd options","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(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(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class Config {\n\n\t/**\n\t * Is public upload allowed on link shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isPublicUploadEnabled() {\n\t\treturn document.getElementById('filestable')\n\t\t\t&& document.getElementById('filestable').dataset.allowPublicUpload === 'yes'\n\t}\n\n\t/**\n\t * Are link share allowed ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isShareWithLinkAllowed() {\n\t\treturn document.getElementById('allowShareWithLink')\n\t\t\t&& document.getElementById('allowShareWithLink').value === 'yes'\n\t}\n\n\t/**\n\t * Get the federated sharing documentation link\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget federatedShareDocLink() {\n\t\treturn OC.appConfig.core.federatedCloudShareDoc\n\t}\n\n\t/**\n\t * Get the default link share expiration date as string\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultExpirationDateString() {\n\t\tlet expireDateString = ''\n\t\tif (this.isDefaultExpireDateEnabled) {\n\t\t\tconst date = window.moment.utc()\n\t\t\tconst expireAfterDays = this.defaultExpireDate\n\t\t\tdate.add(expireAfterDays, 'days')\n\t\t\texpireDateString = date.format('YYYY-MM-DD')\n\t\t}\n\t\treturn expireDateString\n\t}\n\n\t/**\n\t * Get the default internal expiration date as string\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultInternalExpirationDateString() {\n\t\tlet expireDateString = ''\n\t\tif (this.isDefaultInternalExpireDateEnabled) {\n\t\t\tconst date = window.moment.utc()\n\t\t\tconst expireAfterDays = this.defaultInternalExpireDate\n\t\t\tdate.add(expireAfterDays, 'days')\n\t\t\texpireDateString = date.format('YYYY-MM-DD')\n\t\t}\n\t\treturn expireDateString\n\t}\n\n\t/**\n\t * Get the default remote expiration date as string\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultRemoteExpirationDateString() {\n\t\tlet expireDateString = ''\n\t\tif (this.isDefaultRemoteExpireDateEnabled) {\n\t\t\tconst date = window.moment.utc()\n\t\t\tconst expireAfterDays = this.defaultRemoteExpireDate\n\t\t\tdate.add(expireAfterDays, 'days')\n\t\t\texpireDateString = date.format('YYYY-MM-DD')\n\t\t}\n\t\treturn expireDateString\n\t}\n\n\t/**\n\t * Are link shares password-enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget enforcePasswordForPublicLink() {\n\t\treturn OC.appConfig.core.enforcePasswordForPublicLink === true\n\t}\n\n\t/**\n\t * Is password asked by default on link shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget enableLinkPasswordByDefault() {\n\t\treturn OC.appConfig.core.enableLinkPasswordByDefault === true\n\t}\n\n\t/**\n\t * Is link shares expiration enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultExpireDateEnforced() {\n\t\treturn OC.appConfig.core.defaultExpireDateEnforced === true\n\t}\n\n\t/**\n\t * Is there a default expiration date for new link shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultExpireDateEnabled() {\n\t\treturn OC.appConfig.core.defaultExpireDateEnabled === true\n\t}\n\n\t/**\n\t * Is internal shares expiration enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultInternalExpireDateEnforced() {\n\t\treturn OC.appConfig.core.defaultInternalExpireDateEnforced === true\n\t}\n\n\t/**\n\t * Is remote shares expiration enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultRemoteExpireDateEnforced() {\n\t\treturn OC.appConfig.core.defaultRemoteExpireDateEnforced === true\n\t}\n\n\t/**\n\t * Is there a default expiration date for new internal shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultInternalExpireDateEnabled() {\n\t\treturn OC.appConfig.core.defaultInternalExpireDateEnabled === true\n\t}\n\n\t/**\n\t * Are users on this server allowed to send shares to other servers ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isRemoteShareAllowed() {\n\t\treturn OC.appConfig.core.remoteShareAllowed === true\n\t}\n\n\t/**\n\t * Is sharing my mail (link share) enabled ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isMailShareAllowed() {\n\t\tconst capabilities = OC.getCapabilities()\n\t\t// eslint-disable-next-line camelcase\n\t\treturn capabilities?.files_sharing?.sharebymail !== undefined\n\t\t\t// eslint-disable-next-line camelcase\n\t\t\t&& capabilities?.files_sharing?.public?.enabled === true\n\t}\n\n\t/**\n\t * Get the default days to link shares expiration\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultExpireDate() {\n\t\treturn OC.appConfig.core.defaultExpireDate\n\t}\n\n\t/**\n\t * Get the default days to internal shares expiration\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultInternalExpireDate() {\n\t\treturn OC.appConfig.core.defaultInternalExpireDate\n\t}\n\n\t/**\n\t * Get the default days to remote shares expiration\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultRemoteExpireDate() {\n\t\treturn OC.appConfig.core.defaultRemoteExpireDate\n\t}\n\n\t/**\n\t * Is resharing allowed ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isResharingAllowed() {\n\t\treturn OC.appConfig.core.resharingAllowed === true\n\t}\n\n\t/**\n\t * Is password enforced for mail shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isPasswordForMailSharesRequired() {\n\t\treturn (OC.getCapabilities().files_sharing.sharebymail === undefined) ? false : OC.getCapabilities().files_sharing.sharebymail.password.enforced\n\t}\n\n\t/**\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget shouldAlwaysShowUnique() {\n\t\treturn (OC.getCapabilities().files_sharing?.sharee?.always_show_unique === true)\n\t}\n\n\t/**\n\t * Is sharing with groups allowed ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget allowGroupSharing() {\n\t\treturn OC.appConfig.core.allowGroupSharing === true\n\t}\n\n\t/**\n\t * Get the maximum results of a share search\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget maxAutocompleteResults() {\n\t\treturn parseInt(OC.config['sharing.maxAutocompleteResults'], 10) || 25\n\t}\n\n\t/**\n\t * Get the minimal string length\n\t * to initiate a share search\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget minSearchStringLength() {\n\t\treturn parseInt(OC.config['sharing.minSearchStringLength'], 10) || 0\n\t}\n\n\t/**\n\t * Get the password policy config\n\t *\n\t * @return {object}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget passwordPolicy() {\n\t\tconst capabilities = OC.getCapabilities()\n\t\treturn capabilities.password_policy ? capabilities.password_policy : {}\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Gary Kim <gary@garykim.dev>\n * @author Georg Ehrke <oc.list@georgehrke.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class Share {\n\n\t_share\n\n\t/**\n\t * Create the share object\n\t *\n\t * @param {object} ocsData ocs request response\n\t */\n\tconstructor(ocsData) {\n\t\tif (ocsData.ocs && ocsData.ocs.data && ocsData.ocs.data[0]) {\n\t\t\tocsData = ocsData.ocs.data[0]\n\t\t}\n\n\t\t// convert int into boolean\n\t\tocsData.hide_download = !!ocsData.hide_download\n\t\tocsData.mail_send = !!ocsData.mail_send\n\n\t\t// store state\n\t\tthis._share = ocsData\n\t}\n\n\t/**\n\t * Get the share state\n\t * ! used for reactivity purpose\n\t * Do not remove. It allow vuejs to\n\t * inject its watchers into the #share\n\t * state and make the whole class reactive\n\t *\n\t * @return {object} the share raw state\n\t * @readonly\n\t * @memberof Sidebar\n\t */\n\tget state() {\n\t\treturn this._share\n\t}\n\n\t/**\n\t * get the share id\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget id() {\n\t\treturn this._share.id\n\t}\n\n\t/**\n\t * Get the share type\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget type() {\n\t\treturn this._share.share_type\n\t}\n\n\t/**\n\t * Get the share permissions\n\t * See OC.PERMISSION_* variables\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget permissions() {\n\t\treturn this._share.permissions\n\t}\n\n\t/**\n\t * Set the share permissions\n\t * See OC.PERMISSION_* variables\n\t *\n\t * @param {number} permissions valid permission, See OC.PERMISSION_* variables\n\t * @memberof Share\n\t */\n\tset permissions(permissions) {\n\t\tthis._share.permissions = permissions\n\t}\n\n\t// SHARE OWNER --------------------------------------------------\n\t/**\n\t * Get the share owner uid\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget owner() {\n\t\treturn this._share.uid_owner\n\t}\n\n\t/**\n\t * Get the share owner's display name\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget ownerDisplayName() {\n\t\treturn this._share.displayname_owner\n\t}\n\n\t// SHARED WITH --------------------------------------------------\n\t/**\n\t * Get the share with entity uid\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWith() {\n\t\treturn this._share.share_with\n\t}\n\n\t/**\n\t * Get the share with entity display name\n\t * fallback to its uid if none\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithDisplayName() {\n\t\treturn this._share.share_with_displayname\n\t\t\t|| this._share.share_with\n\t}\n\n\t/**\n\t * Unique display name in case of multiple\n\t * duplicates results with the same name.\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithDisplayNameUnique() {\n\t\treturn this._share.share_with_displayname_unique\n\t\t\t|| this._share.share_with\n\t}\n\n\t/**\n\t * Get the share with entity link\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithLink() {\n\t\treturn this._share.share_with_link\n\t}\n\n\t/**\n\t * Get the share with avatar if any\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithAvatar() {\n\t\treturn this._share.share_with_avatar\n\t}\n\n\t// SHARED FILE OR FOLDER OWNER ----------------------------------\n\t/**\n\t * Get the shared item owner uid\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget uidFileOwner() {\n\t\treturn this._share.uid_file_owner\n\t}\n\n\t/**\n\t * Get the shared item display name\n\t * fallback to its uid if none\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget displaynameFileOwner() {\n\t\treturn this._share.displayname_file_owner\n\t\t\t|| this._share.uid_file_owner\n\t}\n\n\t// TIME DATA ----------------------------------------------------\n\t/**\n\t * Get the share creation timestamp\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget createdTime() {\n\t\treturn this._share.stime\n\t}\n\n\t/**\n\t * Get the expiration date as a string format\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget expireDate() {\n\t\treturn this._share.expiration\n\t}\n\n\t/**\n\t * Set the expiration date as a string format\n\t * e.g. YYYY-MM-DD\n\t *\n\t * @param {string} date the share expiration date\n\t * @memberof Share\n\t */\n\tset expireDate(date) {\n\t\tthis._share.expiration = date\n\t}\n\n\t// EXTRA DATA ---------------------------------------------------\n\t/**\n\t * Get the public share token\n\t *\n\t * @return {string} the token\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget token() {\n\t\treturn this._share.token\n\t}\n\n\t/**\n\t * Get the share note if any\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget note() {\n\t\treturn this._share.note\n\t}\n\n\t/**\n\t * Set the share note if any\n\t *\n\t * @param {string} note the note\n\t * @memberof Share\n\t */\n\tset note(note) {\n\t\tthis._share.note = note\n\t}\n\n\t/**\n\t * Get the share label if any\n\t * Should only exist on link shares\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget label() {\n\t\treturn this._share.label\n\t}\n\n\t/**\n\t * Set the share label if any\n\t * Should only be set on link shares\n\t *\n\t * @param {string} label the label\n\t * @memberof Share\n\t */\n\tset label(label) {\n\t\tthis._share.label = label\n\t}\n\n\t/**\n\t * Have a mail been sent\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget mailSend() {\n\t\treturn this._share.mail_send === true\n\t}\n\n\t/**\n\t * Hide the download button on public page\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hideDownload() {\n\t\treturn this._share.hide_download === true\n\t}\n\n\t/**\n\t * Hide the download button on public page\n\t *\n\t * @param {boolean} state hide the button ?\n\t * @memberof Share\n\t */\n\tset hideDownload(state) {\n\t\tthis._share.hide_download = state === true\n\t}\n\n\t/**\n\t * Password protection of the share\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget password() {\n\t\treturn this._share.password\n\t}\n\n\t/**\n\t * Password protection of the share\n\t *\n\t * @param {string} password the share password\n\t * @memberof Share\n\t */\n\tset password(password) {\n\t\tthis._share.password = password\n\t}\n\n\t/**\n\t * Password expiration time\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget passwordExpirationTime() {\n\t\treturn this._share.password_expiration_time\n\t}\n\n\t/**\n\t * Password expiration time\n\t *\n\t * @param {string} password exipration time\n\t * @memberof Share\n\t */\n\tset passwordExpirationTime(passwordExpirationTime) {\n\t\tthis._share.password_expiration_time = passwordExpirationTime\n\t}\n\n\t/**\n\t * Password protection by Talk of the share\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget sendPasswordByTalk() {\n\t\treturn this._share.send_password_by_talk\n\t}\n\n\t/**\n\t * Password protection by Talk of the share\n\t *\n\t * @param {boolean} sendPasswordByTalk whether to send the password by Talk\n\t * or not\n\t * @memberof Share\n\t */\n\tset sendPasswordByTalk(sendPasswordByTalk) {\n\t\tthis._share.send_password_by_talk = sendPasswordByTalk\n\t}\n\n\t// SHARED ITEM DATA ---------------------------------------------\n\t/**\n\t * Get the shared item absolute full path\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget path() {\n\t\treturn this._share.path\n\t}\n\n\t/**\n\t * Return the item type: file or folder\n\t *\n\t * @return {string} 'folder' or 'file'\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget itemType() {\n\t\treturn this._share.item_type\n\t}\n\n\t/**\n\t * Get the shared item mimetype\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget mimetype() {\n\t\treturn this._share.mimetype\n\t}\n\n\t/**\n\t * Get the shared item id\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget fileSource() {\n\t\treturn this._share.file_source\n\t}\n\n\t/**\n\t * Get the target path on the receiving end\n\t * e.g the file /xxx/aaa will be shared in\n\t * the receiving root as /aaa, the fileTarget is /aaa\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget fileTarget() {\n\t\treturn this._share.file_target\n\t}\n\n\t/**\n\t * Get the parent folder id if any\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget fileParent() {\n\t\treturn this._share.file_parent\n\t}\n\n\t// PERMISSIONS Shortcuts\n\n\t/**\n\t * Does this share have READ permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasReadPermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_READ))\n\t}\n\n\t/**\n\t * Does this share have CREATE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasCreatePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_CREATE))\n\t}\n\n\t/**\n\t * Does this share have DELETE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasDeletePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_DELETE))\n\t}\n\n\t/**\n\t * Does this share have UPDATE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasUpdatePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_UPDATE))\n\t}\n\n\t/**\n\t * Does this share have SHARE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasSharePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_SHARE))\n\t}\n\n\t// PERMISSIONS Shortcuts for the CURRENT USER\n\t// ! the permissions above are the share settings,\n\t// ! meaning the permissions for the recipient\n\t/**\n\t * Can the current user EDIT this share ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget canEdit() {\n\t\treturn this._share.can_edit === true\n\t}\n\n\t/**\n\t * Can the current user DELETE this share ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget canDelete() {\n\t\treturn this._share.can_delete === true\n\t}\n\n\t/**\n\t * Top level accessible shared folder fileid for the current user\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget viaFileid() {\n\t\treturn this._share.via_fileid\n\t}\n\n\t/**\n\t * Top level accessible shared folder path for the current user\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget viaPath() {\n\t\treturn this._share.via_path\n\t}\n\n\t// TODO: SORT THOSE PROPERTIES\n\n\tget parent() {\n\t\treturn this._share.parent\n\t}\n\n\tget storageId() {\n\t\treturn this._share.storage_id\n\t}\n\n\tget storage() {\n\t\treturn this._share.storage\n\t}\n\n\tget itemSource() {\n\t\treturn this._share.item_source\n\t}\n\n\tget status() {\n\t\treturn this._share.status\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { Type as ShareTypes } from '@nextcloud/sharing'\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tSHARE_TYPES: ShareTypes,\n\t\t}\n\t},\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntrySimple.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntrySimple.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<li class=\"sharing-entry\">\n\t\t<slot name=\"avatar\" />\n\t\t<div v-tooltip=\"tooltip\" class=\"sharing-entry__desc\">\n\t\t\t<span class=\"sharing-entry__title\">{{ title }}</span>\n\t\t\t<p v-if=\"subtitle\">\n\t\t\t\t{{ subtitle }}\n\t\t\t</p>\n\t\t</div>\n\t\t<Actions v-if=\"$slots['default']\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\tmenu-align=\"right\"\n\t\t\t:aria-expanded=\"ariaExpandedValue\">\n\t\t\t<slot />\n\t\t</Actions>\n\t</li>\n</template>\n\n<script>\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport Tooltip from '@nextcloud/vue/dist/Directives/Tooltip'\n\nexport default {\n\tname: 'SharingEntrySimple',\n\n\tcomponents: {\n\t\tActions,\n\t},\n\n\tdirectives: {\n\t\tTooltip,\n\t},\n\n\tprops: {\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t\trequired: true,\n\t\t},\n\t\ttooltip: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tsubtitle: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tisUnique: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tariaExpanded: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tariaExpandedValue() {\n\t\t\tif (this.ariaExpanded === null) {\n\t\t\t\treturn this.ariaExpanded\n\t\t\t}\n\t\t\treturn this.ariaExpanded ? 'true' : 'false'\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\t&__desc {\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tposition: relative;\n\t\tflex: 1 1;\n\t\tmin-width: 0;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__title {\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\tmax-width: inherit;\n\t}\n\t&__actions {\n\t\tmargin-left: auto !important;\n\t}\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntrySimple.vue?vue&type=style&index=0&id=3483f0f7&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntrySimple.vue?vue&type=style&index=0&id=3483f0f7&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntrySimple.vue?vue&type=template&id=3483f0f7&scoped=true&\"\nimport script from \"./SharingEntrySimple.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntrySimple.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntrySimple.vue?vue&type=style&index=0&id=3483f0f7&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3483f0f7\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{staticClass:\"sharing-entry\"},[_vm._t(\"avatar\"),_vm._v(\" \"),_c('div',{directives:[{name:\"tooltip\",rawName:\"v-tooltip\",value:(_vm.tooltip),expression:\"tooltip\"}],staticClass:\"sharing-entry__desc\"},[_c('span',{staticClass:\"sharing-entry__title\"},[_vm._v(_vm._s(_vm.title))]),_vm._v(\" \"),(_vm.subtitle)?_c('p',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.subtitle)+\"\\n\\t\\t\")]):_vm._e()]),_vm._v(\" \"),(_vm.$slots['default'])?_c('Actions',{staticClass:\"sharing-entry__actions\",attrs:{\"menu-align\":\"right\",\"aria-expanded\":_vm.ariaExpandedValue}},[_vm._t(\"default\")],2):_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n<template>\n\t<ul>\n\t\t<SharingEntrySimple class=\"sharing-entry__internal\"\n\t\t\t:title=\"t('files_sharing', 'Internal link')\"\n\t\t\t:subtitle=\"internalLinkSubtitle\">\n\t\t\t<template #avatar>\n\t\t\t\t<div class=\"avatar-external icon-external-white\" />\n\t\t\t</template>\n\n\t\t\t<ActionLink ref=\"copyButton\"\n\t\t\t\t:href=\"internalLink\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\t:icon=\"copied && copySuccess ? 'icon-checkmark-color' : 'icon-clippy'\"\n\t\t\t\t@click.prevent=\"copyLink\">\n\t\t\t\t{{ clipboardTooltip }}\n\t\t\t</ActionLink>\n\t\t</SharingEntrySimple>\n\t</ul>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport ActionLink from '@nextcloud/vue/dist/Components/ActionLink'\nimport SharingEntrySimple from './SharingEntrySimple'\n\nexport default {\n\tname: 'SharingEntryInternal',\n\n\tcomponents: {\n\t\tActionLink,\n\t\tSharingEntrySimple,\n\t},\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tcopied: false,\n\t\t\tcopySuccess: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Get the internal link to this file id\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tinternalLink() {\n\t\t\treturn window.location.protocol + '//' + window.location.host + generateUrl('/f/') + this.fileInfo.id\n\t\t},\n\n\t\t/**\n\t\t * Clipboard v-tooltip message\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tclipboardTooltip() {\n\t\t\tif (this.copied) {\n\t\t\t\treturn this.copySuccess\n\t\t\t\t\t? t('files_sharing', 'Link copied')\n\t\t\t\t\t: t('files_sharing', 'Cannot copy, please copy the link manually')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Copy to clipboard')\n\t\t},\n\n\t\tinternalLinkSubtitle() {\n\t\t\tif (this.fileInfo.type === 'dir') {\n\t\t\t\treturn t('files_sharing', 'Only works for users with access to this folder')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Only works for users with access to this file')\n\t\t},\n\t},\n\n\tmethods: {\n\t\tasync copyLink() {\n\t\t\ttry {\n\t\t\t\tawait this.$copyText(this.internalLink)\n\t\t\t\t// focus and show the tooltip\n\t\t\t\tthis.$refs.copyButton.$el.focus()\n\t\t\t\tthis.copySuccess = true\n\t\t\t\tthis.copied = true\n\t\t\t} catch (error) {\n\t\t\t\tthis.copySuccess = false\n\t\t\t\tthis.copied = true\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.copySuccess = false\n\t\t\t\t\tthis.copied = false\n\t\t\t\t}, 4000)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry__internal {\n\t.avatar-external {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInternal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInternal.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInternal.vue?vue&type=style&index=0&id=739d8480&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInternal.vue?vue&type=style&index=0&id=739d8480&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntryInternal.vue?vue&type=template&id=739d8480&scoped=true&\"\nimport script from \"./SharingEntryInternal.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntryInternal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntryInternal.vue?vue&type=style&index=0&id=739d8480&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"739d8480\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',[_c('SharingEntrySimple',{staticClass:\"sharing-entry__internal\",attrs:{\"title\":_vm.t('files_sharing', 'Internal link'),\"subtitle\":_vm.internalLinkSubtitle},scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('div',{staticClass:\"avatar-external icon-external-white\"})]},proxy:true}])},[_vm._v(\" \"),_c('ActionLink',{ref:\"copyButton\",attrs:{\"href\":_vm.internalLink,\"target\":\"_blank\",\"icon\":_vm.copied && _vm.copySuccess ? 'icon-checkmark-color' : 'icon-clippy'},on:{\"click\":function($event){$event.preventDefault();return _vm.copyLink.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.clipboardTooltip)+\"\\n\\t\\t\")])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport Config from '../services/ConfigService'\n\nconst config = new Config()\nconst passwordSet = 'abcdefgijkmnopqrstwxyzABCDEFGHJKLMNPQRSTWXYZ23456789'\n\n/**\n * Generate a valid policy password or\n * request a valid password if password_policy\n * is enabled\n *\n * @return {string} a valid password\n */\nexport default async function() {\n\t// password policy is enabled, let's request a pass\n\tif (config.passwordPolicy.api && config.passwordPolicy.api.generate) {\n\t\ttry {\n\t\t\tconst request = await axios.get(config.passwordPolicy.api.generate)\n\t\t\tif (request.data.ocs.data.password) {\n\t\t\t\treturn request.data.ocs.data.password\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.info('Error generating password from password_policy', error)\n\t\t}\n\t}\n\n\t// generate password of 10 length based on passwordSet\n\treturn Array(10).fill(0)\n\t\t.reduce((prev, curr) => {\n\t\t\tprev += passwordSet.charAt(Math.floor(Math.random() * passwordSet.length))\n\t\t\treturn prev\n\t\t}, '')\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n// TODO: remove when ie not supported\nimport 'url-search-params-polyfill'\n\nimport { generateOcsUrl } from '@nextcloud/router'\nimport axios from '@nextcloud/axios'\nimport Share from '../models/Share'\n\nconst shareUrl = generateOcsUrl('apps/files_sharing/api/v1/shares')\n\nexport default {\n\tmethods: {\n\t\t/**\n\t\t * Create a new share\n\t\t *\n\t\t * @param {object} data destructuring object\n\t\t * @param {string} data.path path to the file/folder which should be shared\n\t\t * @param {number} data.shareType 0 = user; 1 = group; 3 = public link; 6 = federated cloud share\n\t\t * @param {string} data.shareWith user/group id with which the file should be shared (optional for shareType > 1)\n\t\t * @param {boolean} [data.publicUpload=false] allow public upload to a public shared folder\n\t\t * @param {string} [data.password] password to protect public link Share with\n\t\t * @param {number} [data.permissions=31] 1 = read; 2 = update; 4 = create; 8 = delete; 16 = share; 31 = all (default: 31, for public shares: 1)\n\t\t * @param {boolean} [data.sendPasswordByTalk=false] send the password via a talk conversation\n\t\t * @param {string} [data.expireDate=''] expire the shareautomatically after\n\t\t * @param {string} [data.label=''] custom label\n\t\t * @return {Share} the new share\n\t\t * @throws {Error}\n\t\t */\n\t\tasync createShare({ path, permissions, shareType, shareWith, publicUpload, password, sendPasswordByTalk, expireDate, label }) {\n\t\t\ttry {\n\t\t\t\tconst request = await axios.post(shareUrl, { path, permissions, shareType, shareWith, publicUpload, password, sendPasswordByTalk, expireDate, label })\n\t\t\t\tif (!request?.data?.ocs) {\n\t\t\t\t\tthrow request\n\t\t\t\t}\n\t\t\t\treturn new Share(request.data.ocs.data)\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error while creating share', error)\n\t\t\t\tconst errorMessage = error?.response?.data?.ocs?.meta?.message\n\t\t\t\tOC.Notification.showTemporary(\n\t\t\t\t\terrorMessage ? t('files_sharing', 'Error creating the share: {errorMessage}', { errorMessage }) : t('files_sharing', 'Error creating the share'),\n\t\t\t\t\t{ type: 'error' }\n\t\t\t\t)\n\t\t\t\tthrow error\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Delete a share\n\t\t *\n\t\t * @param {number} id share id\n\t\t * @throws {Error}\n\t\t */\n\t\tasync deleteShare(id) {\n\t\t\ttry {\n\t\t\t\tconst request = await axios.delete(shareUrl + `/${id}`)\n\t\t\t\tif (!request?.data?.ocs) {\n\t\t\t\t\tthrow request\n\t\t\t\t}\n\t\t\t\treturn true\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error while deleting share', error)\n\t\t\t\tconst errorMessage = error?.response?.data?.ocs?.meta?.message\n\t\t\t\tOC.Notification.showTemporary(\n\t\t\t\t\terrorMessage ? t('files_sharing', 'Error deleting the share: {errorMessage}', { errorMessage }) : t('files_sharing', 'Error deleting the share'),\n\t\t\t\t\t{ type: 'error' }\n\t\t\t\t)\n\t\t\t\tthrow error\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Update a share\n\t\t *\n\t\t * @param {number} id share id\n\t\t * @param {object} properties key-value object of the properties to update\n\t\t */\n\t\tasync updateShare(id, properties) {\n\t\t\ttry {\n\t\t\t\tconst request = await axios.put(shareUrl + `/${id}`, properties)\n\t\t\t\tif (!request?.data?.ocs) {\n\t\t\t\t\tthrow request\n\t\t\t\t} else {\n\t\t\t\t\treturn request.data.ocs.data\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error while updating share', error)\n\t\t\t\tif (error.response.status !== 400) {\n\t\t\t\t\tconst errorMessage = error?.response?.data?.ocs?.meta?.message\n\t\t\t\t\tOC.Notification.showTemporary(\n\t\t\t\t\t\terrorMessage ? t('files_sharing', 'Error updating the share: {errorMessage}', { errorMessage }) : t('files_sharing', 'Error updating the share'),\n\t\t\t\t\t\t{ type: 'error' }\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\tconst message = error.response.data.ocs.meta.message\n\t\t\t\tthrow new Error(message)\n\t\t\t}\n\t\t},\n\t},\n}\n","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<Multiselect ref=\"multiselect\"\n\t\tclass=\"sharing-input\"\n\t\t:clear-on-select=\"true\"\n\t\t:disabled=\"!canReshare\"\n\t\t:hide-selected=\"true\"\n\t\t:internal-search=\"false\"\n\t\t:loading=\"loading\"\n\t\t:options=\"options\"\n\t\t:placeholder=\"inputPlaceholder\"\n\t\t:preselect-first=\"true\"\n\t\t:preserve-search=\"true\"\n\t\t:searchable=\"true\"\n\t\t:user-select=\"true\"\n\t\topen-direction=\"below\"\n\t\tlabel=\"displayName\"\n\t\ttrack-by=\"id\"\n\t\t@search-change=\"asyncFind\"\n\t\t@select=\"addShare\">\n\t\t<template #noOptions>\n\t\t\t{{ t('files_sharing', 'No recommendations. Start typing.') }}\n\t\t</template>\n\t\t<template #noResult>\n\t\t\t{{ noResultText }}\n\t\t</template>\n\t</Multiselect>\n</template>\n\n<script>\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport axios from '@nextcloud/axios'\nimport debounce from 'debounce'\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\n\nimport Config from '../services/ConfigService'\nimport GeneratePassword from '../utils/GeneratePassword'\nimport Share from '../models/Share'\nimport ShareRequests from '../mixins/ShareRequests'\nimport ShareTypes from '../mixins/ShareTypes'\n\nexport default {\n\tname: 'SharingInput',\n\n\tcomponents: {\n\t\tMultiselect,\n\t},\n\n\tmixins: [ShareTypes, ShareRequests],\n\n\tprops: {\n\t\tshares: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\trequired: true,\n\t\t},\n\t\tlinkShares: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\trequired: true,\n\t\t},\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\treshare: {\n\t\t\ttype: Share,\n\t\t\tdefault: null,\n\t\t},\n\t\tcanReshare: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tconfig: new Config(),\n\t\t\tloading: false,\n\t\t\tquery: '',\n\t\t\trecommendations: [],\n\t\t\tShareSearch: OCA.Sharing.ShareSearch.state,\n\t\t\tsuggestions: [],\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Implement ShareSearch\n\t\t * allows external appas to inject new\n\t\t * results into the autocomplete dropdown\n\t\t * Used for the guests app\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\texternalResults() {\n\t\t\treturn this.ShareSearch.results\n\t\t},\n\t\tinputPlaceholder() {\n\t\t\tconst allowRemoteSharing = this.config.isRemoteShareAllowed\n\n\t\t\tif (!this.canReshare) {\n\t\t\t\treturn t('files_sharing', 'Resharing is not allowed')\n\t\t\t}\n\t\t\t// We can always search with email addresses for users too\n\t\t\tif (!allowRemoteSharing) {\n\t\t\t\treturn t('files_sharing', 'Name or email …')\n\t\t\t}\n\n\t\t\treturn t('files_sharing', 'Name, email, or Federated Cloud ID …')\n\t\t},\n\n\t\tisValidQuery() {\n\t\t\treturn this.query && this.query.trim() !== '' && this.query.length > this.config.minSearchStringLength\n\t\t},\n\n\t\toptions() {\n\t\t\tif (this.isValidQuery) {\n\t\t\t\treturn this.suggestions\n\t\t\t}\n\t\t\treturn this.recommendations\n\t\t},\n\n\t\tnoResultText() {\n\t\t\tif (this.loading) {\n\t\t\t\treturn t('files_sharing', 'Searching …')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'No elements found.')\n\t\t},\n\t},\n\n\tmounted() {\n\t\tthis.getRecommendations()\n\t},\n\n\tmethods: {\n\t\tasync asyncFind(query, id) {\n\t\t\t// save current query to check if we display\n\t\t\t// recommendations or search results\n\t\t\tthis.query = query.trim()\n\t\t\tif (this.isValidQuery) {\n\t\t\t\t// start loading now to have proper ux feedback\n\t\t\t\t// during the debounce\n\t\t\t\tthis.loading = true\n\t\t\t\tawait this.debounceGetSuggestions(query)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Get suggestions\n\t\t *\n\t\t * @param {string} search the search query\n\t\t * @param {boolean} [lookup=false] search on lookup server\n\t\t */\n\t\tasync getSuggestions(search, lookup = false) {\n\t\t\tthis.loading = true\n\n\t\t\tif (OC.getCapabilities().files_sharing.sharee.query_lookup_default === true) {\n\t\t\t\tlookup = true\n\t\t\t}\n\n\t\t\tconst shareType = [\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_USER,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_GROUP,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_REMOTE,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_CIRCLE,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_ROOM,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_GUEST,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_DECK,\n\t\t\t]\n\n\t\t\tif (OC.getCapabilities().files_sharing.public.enabled === true) {\n\t\t\t\tshareType.push(this.SHARE_TYPES.SHARE_TYPE_EMAIL)\n\t\t\t}\n\n\t\t\tlet request = null\n\t\t\ttry {\n\t\t\t\trequest = await axios.get(generateOcsUrl('apps/files_sharing/api/v1/sharees'), {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat: 'json',\n\t\t\t\t\t\titemType: this.fileInfo.type === 'dir' ? 'folder' : 'file',\n\t\t\t\t\t\tsearch,\n\t\t\t\t\t\tlookup,\n\t\t\t\t\t\tperPage: this.config.maxAutocompleteResults,\n\t\t\t\t\t\tshareType,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error fetching suggestions', error)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst data = request.data.ocs.data\n\t\t\tconst exact = request.data.ocs.data.exact\n\t\t\tdata.exact = [] // removing exact from general results\n\n\t\t\t// flatten array of arrays\n\t\t\tconst rawExactSuggestions = Object.values(exact).reduce((arr, elem) => arr.concat(elem), [])\n\t\t\tconst rawSuggestions = Object.values(data).reduce((arr, elem) => arr.concat(elem), [])\n\n\t\t\t// remove invalid data and format to user-select layout\n\t\t\tconst exactSuggestions = this.filterOutExistingShares(rawExactSuggestions)\n\t\t\t\t.map(share => this.formatForMultiselect(share))\n\t\t\t\t// sort by type so we can get user&groups first...\n\t\t\t\t.sort((a, b) => a.shareType - b.shareType)\n\t\t\tconst suggestions = this.filterOutExistingShares(rawSuggestions)\n\t\t\t\t.map(share => this.formatForMultiselect(share))\n\t\t\t\t// sort by type so we can get user&groups first...\n\t\t\t\t.sort((a, b) => a.shareType - b.shareType)\n\n\t\t\t// lookup clickable entry\n\t\t\t// show if enabled and not already requested\n\t\t\tconst lookupEntry = []\n\t\t\tif (data.lookupEnabled && !lookup) {\n\t\t\t\tlookupEntry.push({\n\t\t\t\t\tid: 'global-lookup',\n\t\t\t\t\tisNoUser: true,\n\t\t\t\t\tdisplayName: t('files_sharing', 'Search globally'),\n\t\t\t\t\tlookup: true,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\t// if there is a condition specified, filter it\n\t\t\tconst externalResults = this.externalResults.filter(result => !result.condition || result.condition(this))\n\n\t\t\tconst allSuggestions = exactSuggestions.concat(suggestions).concat(externalResults).concat(lookupEntry)\n\n\t\t\t// Count occurances of display names in order to provide a distinguishable description if needed\n\t\t\tconst nameCounts = allSuggestions.reduce((nameCounts, result) => {\n\t\t\t\tif (!result.displayName) {\n\t\t\t\t\treturn nameCounts\n\t\t\t\t}\n\t\t\t\tif (!nameCounts[result.displayName]) {\n\t\t\t\t\tnameCounts[result.displayName] = 0\n\t\t\t\t}\n\t\t\t\tnameCounts[result.displayName]++\n\t\t\t\treturn nameCounts\n\t\t\t}, {})\n\n\t\t\tthis.suggestions = allSuggestions.map(item => {\n\t\t\t\t// Make sure that items with duplicate displayName get the shareWith applied as a description\n\t\t\t\tif (nameCounts[item.displayName] > 1 && !item.desc) {\n\t\t\t\t\treturn { ...item, desc: item.shareWithDisplayNameUnique }\n\t\t\t\t}\n\t\t\t\treturn item\n\t\t\t})\n\n\t\t\tthis.loading = false\n\t\t\tconsole.info('suggestions', this.suggestions)\n\t\t},\n\n\t\t/**\n\t\t * Debounce getSuggestions\n\t\t *\n\t\t * @param {...*} args the arguments\n\t\t */\n\t\tdebounceGetSuggestions: debounce(function(...args) {\n\t\t\tthis.getSuggestions(...args)\n\t\t}, 300),\n\n\t\t/**\n\t\t * Get the sharing recommendations\n\t\t */\n\t\tasync getRecommendations() {\n\t\t\tthis.loading = true\n\n\t\t\tlet request = null\n\t\t\ttry {\n\t\t\t\trequest = await axios.get(generateOcsUrl('apps/files_sharing/api/v1/sharees_recommended'), {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat: 'json',\n\t\t\t\t\t\titemType: this.fileInfo.type,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error fetching recommendations', error)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Add external results from the OCA.Sharing.ShareSearch api\n\t\t\tconst externalResults = this.externalResults.filter(result => !result.condition || result.condition(this))\n\n\t\t\t// flatten array of arrays\n\t\t\tconst rawRecommendations = Object.values(request.data.ocs.data.exact)\n\t\t\t\t.reduce((arr, elem) => arr.concat(elem), [])\n\n\t\t\t// remove invalid data and format to user-select layout\n\t\t\tthis.recommendations = this.filterOutExistingShares(rawRecommendations)\n\t\t\t\t.map(share => this.formatForMultiselect(share))\n\t\t\t\t.concat(externalResults)\n\n\t\t\tthis.loading = false\n\t\t\tconsole.info('recommendations', this.recommendations)\n\t\t},\n\n\t\t/**\n\t\t * Filter out existing shares from\n\t\t * the provided shares search results\n\t\t *\n\t\t * @param {object[]} shares the array of shares object\n\t\t * @return {object[]}\n\t\t */\n\t\tfilterOutExistingShares(shares) {\n\t\t\treturn shares.reduce((arr, share) => {\n\t\t\t\t// only check proper objects\n\t\t\t\tif (typeof share !== 'object') {\n\t\t\t\t\treturn arr\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tif (share.value.shareType === this.SHARE_TYPES.SHARE_TYPE_USER) {\n\t\t\t\t\t\t// filter out current user\n\t\t\t\t\t\tif (share.value.shareWith === getCurrentUser().uid) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// filter out the owner of the share\n\t\t\t\t\t\tif (this.reshare && share.value.shareWith === this.reshare.owner) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// filter out existing mail shares\n\t\t\t\t\tif (share.value.shareType === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\t\t\tconst emails = this.linkShares.map(elem => elem.shareWith)\n\t\t\t\t\t\tif (emails.indexOf(share.value.shareWith.trim()) !== -1) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\t\t\t\t\t} else { // filter out existing shares\n\t\t\t\t\t\t// creating an object of uid => type\n\t\t\t\t\t\tconst sharesObj = this.shares.reduce((obj, elem) => {\n\t\t\t\t\t\t\tobj[elem.shareWith] = elem.type\n\t\t\t\t\t\t\treturn obj\n\t\t\t\t\t\t}, {})\n\n\t\t\t\t\t\t// if shareWith is the same and the share type too, ignore it\n\t\t\t\t\t\tconst key = share.value.shareWith.trim()\n\t\t\t\t\t\tif (key in sharesObj\n\t\t\t\t\t\t\t&& sharesObj[key] === share.value.shareType) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// ALL GOOD\n\t\t\t\t\t// let's add the suggestion\n\t\t\t\t\tarr.push(share)\n\t\t\t\t} catch {\n\t\t\t\t\treturn arr\n\t\t\t\t}\n\t\t\t\treturn arr\n\t\t\t}, [])\n\t\t},\n\n\t\t/**\n\t\t * Get the icon based on the share type\n\t\t *\n\t\t * @param {number} type the share type\n\t\t * @return {string} the icon class\n\t\t */\n\t\tshareTypeToIcon(type) {\n\t\t\tswitch (type) {\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_GUEST:\n\t\t\t\t// default is a user, other icons are here to differenciate\n\t\t\t\t// themselves from it, so let's not display the user icon\n\t\t\t\t// case this.SHARE_TYPES.SHARE_TYPE_REMOTE:\n\t\t\t\t// case this.SHARE_TYPES.SHARE_TYPE_USER:\n\t\t\t\treturn 'icon-user'\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP:\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_GROUP:\n\t\t\t\treturn 'icon-group'\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_EMAIL:\n\t\t\t\treturn 'icon-mail'\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_CIRCLE:\n\t\t\t\treturn 'icon-circle'\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_ROOM:\n\t\t\t\treturn 'icon-room'\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_DECK:\n\t\t\t\treturn 'icon-deck'\n\n\t\t\tdefault:\n\t\t\t\treturn ''\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Format shares for the multiselect options\n\t\t *\n\t\t * @param {object} result select entry item\n\t\t * @return {object}\n\t\t */\n\t\tformatForMultiselect(result) {\n\t\t\tlet subtitle\n\t\t\tif (result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_USER && this.config.shouldAlwaysShowUnique) {\n\t\t\t\tsubtitle = result.shareWithDisplayNameUnique ?? ''\n\t\t\t} else if ((result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_REMOTE\n\t\t\t\t\t|| result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP\n\t\t\t) && result.value.server) {\n\t\t\t\tsubtitle = t('files_sharing', 'on {server}', { server: result.value.server })\n\t\t\t} else if (result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\tsubtitle = result.value.shareWith\n\t\t\t} else {\n\t\t\t\tsubtitle = result.shareWithDescription ?? ''\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tid: `${result.value.shareType}-${result.value.shareWith}`,\n\t\t\t\tshareWith: result.value.shareWith,\n\t\t\t\tshareType: result.value.shareType,\n\t\t\t\tuser: result.uuid || result.value.shareWith,\n\t\t\t\tisNoUser: result.value.shareType !== this.SHARE_TYPES.SHARE_TYPE_USER,\n\t\t\t\tdisplayName: result.name || result.label,\n\t\t\t\tsubtitle,\n\t\t\t\tshareWithDisplayNameUnique: result.shareWithDisplayNameUnique || '',\n\t\t\t\ticon: this.shareTypeToIcon(result.value.shareType),\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Process the new share request\n\t\t *\n\t\t * @param {object} value the multiselect option\n\t\t */\n\t\tasync addShare(value) {\n\t\t\tif (value.lookup) {\n\t\t\t\tawait this.getSuggestions(this.query, true)\n\n\t\t\t\t// focus the input again\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tthis.$refs.multiselect.$el.querySelector('.multiselect__input').focus()\n\t\t\t\t})\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\t// handle externalResults from OCA.Sharing.ShareSearch\n\t\t\tif (value.handler) {\n\t\t\t\tconst share = await value.handler(this)\n\t\t\t\tthis.$emit('add:share', new Share(share))\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\tthis.loading = true\n\t\t\tconsole.debug('Adding a new share from the input for', value)\n\t\t\ttry {\n\t\t\t\tlet password = null\n\n\t\t\t\tif (this.config.enforcePasswordForPublicLink\n\t\t\t\t\t&& value.shareType === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\t\tpassword = await GeneratePassword()\n\t\t\t\t}\n\n\t\t\t\tconst path = (this.fileInfo.path + '/' + this.fileInfo.name).replace('//', '/')\n\t\t\t\tconst share = await this.createShare({\n\t\t\t\t\tpath,\n\t\t\t\t\tshareType: value.shareType,\n\t\t\t\t\tshareWith: value.shareWith,\n\t\t\t\t\tpassword,\n\t\t\t\t\tpermissions: this.fileInfo.sharePermissions & OC.getCapabilities().files_sharing.default_permissions,\n\t\t\t\t})\n\n\t\t\t\t// If we had a password, we need to show it to the user as it was generated\n\t\t\t\tif (password) {\n\t\t\t\t\tshare.newPassword = password\n\t\t\t\t\t// Wait for the newly added share\n\t\t\t\t\tconst component = await new Promise(resolve => {\n\t\t\t\t\t\tthis.$emit('add:share', share, resolve)\n\t\t\t\t\t})\n\n\t\t\t\t\t// open the menu on the\n\t\t\t\t\t// freshly created share component\n\t\t\t\t\tcomponent.open = true\n\t\t\t\t} else {\n\t\t\t\t\t// Else we just add it normally\n\t\t\t\t\tthis.$emit('add:share', share)\n\t\t\t\t}\n\n\t\t\t\t// reset the search string when done\n\t\t\t\t// FIXME: https://github.com/shentao/vue-multiselect/issues/633\n\t\t\t\tif (this.$refs.multiselect?.$refs?.VueMultiselect?.search) {\n\t\t\t\t\tthis.$refs.multiselect.$refs.VueMultiselect.search = ''\n\t\t\t\t}\n\n\t\t\t\tawait this.getRecommendations()\n\t\t\t} catch (error) {\n\t\t\t\t// focus back if any error\n\t\t\t\tconst input = this.$refs.multiselect.$el.querySelector('input')\n\t\t\t\tif (input) {\n\t\t\t\t\tinput.focus()\n\t\t\t\t}\n\t\t\t\tthis.query = value.shareWith\n\t\t\t\tconsole.error('Error while adding new share', error)\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\n.sharing-input {\n\twidth: 100%;\n\tmargin: 10px 0;\n\n\t// properly style the lookup entry\n\t.multiselect__option {\n\t\tspan[lookup] {\n\t\t\t.avatardiv {\n\t\t\t\tbackground-image: var(--icon-search-white);\n\t\t\t\tbackground-repeat: no-repeat;\n\t\t\t\tbackground-position: center;\n\t\t\t\tbackground-color: var(--color-text-maxcontrast) !important;\n\t\t\t\tdiv {\n\t\t\t\t\tdisplay: none;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.vue?vue&type=style&index=0&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.vue?vue&type=style&index=0&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingInput.vue?vue&type=template&id=70f57b32&\"\nimport script from \"./SharingInput.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingInput.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Multiselect',{ref:\"multiselect\",staticClass:\"sharing-input\",attrs:{\"clear-on-select\":true,\"disabled\":!_vm.canReshare,\"hide-selected\":true,\"internal-search\":false,\"loading\":_vm.loading,\"options\":_vm.options,\"placeholder\":_vm.inputPlaceholder,\"preselect-first\":true,\"preserve-search\":true,\"searchable\":true,\"user-select\":true,\"open-direction\":\"below\",\"label\":\"displayName\",\"track-by\":\"id\"},on:{\"search-change\":_vm.asyncFind,\"select\":_vm.addShare},scopedSlots:_vm._u([{key:\"noOptions\",fn:function(){return [_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'No recommendations. Start typing.'))+\"\\n\\t\")]},proxy:true},{key:\"noResult\",fn:function(){return [_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.noResultText)+\"\\n\\t\")]},proxy:true}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Gary Kim <gary@garykim.dev>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n// eslint-disable-next-line import/no-unresolved, node/no-missing-import\nimport PQueue from 'p-queue'\nimport debounce from 'debounce'\n\nimport Share from '../models/Share'\nimport SharesRequests from './ShareRequests'\nimport ShareTypes from './ShareTypes'\nimport Config from '../services/ConfigService'\nimport { getCurrentUser } from '@nextcloud/auth'\n\nexport default {\n\tmixins: [SharesRequests, ShareTypes],\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\tshare: {\n\t\t\ttype: Share,\n\t\t\tdefault: null,\n\t\t},\n\t\tisUnique: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tconfig: new Config(),\n\n\t\t\t// errors helpers\n\t\t\terrors: {},\n\n\t\t\t// component status toggles\n\t\t\tloading: false,\n\t\t\tsaving: false,\n\t\t\topen: false,\n\n\t\t\t// concurrency management queue\n\t\t\t// we want one queue per share\n\t\t\tupdateQueue: new PQueue({ concurrency: 1 }),\n\n\t\t\t/**\n\t\t\t * ! This allow vue to make the Share class state reactive\n\t\t\t * ! do not remove it ot you'll lose all reactivity here\n\t\t\t */\n\t\t\treactiveState: this.share?.state,\n\t\t}\n\t},\n\n\tcomputed: {\n\n\t\t/**\n\t\t * Does the current share have a note\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasNote: {\n\t\t\tget() {\n\t\t\t\treturn this.share.note !== ''\n\t\t\t},\n\t\t\tset(enabled) {\n\t\t\t\tthis.share.note = enabled\n\t\t\t\t\t? null // enabled but user did not changed the content yet\n\t\t\t\t\t: '' // empty = no note = disabled\n\t\t\t},\n\t\t},\n\n\t\tdateTomorrow() {\n\t\t\treturn moment().add(1, 'days')\n\t\t},\n\n\t\t// Datepicker language\n\t\tlang() {\n\t\t\tconst weekdaysShort = window.dayNamesShort\n\t\t\t\t? window.dayNamesShort // provided by nextcloud\n\t\t\t\t: ['Sun.', 'Mon.', 'Tue.', 'Wed.', 'Thu.', 'Fri.', 'Sat.']\n\t\t\tconst monthsShort = window.monthNamesShort\n\t\t\t\t? window.monthNamesShort // provided by nextcloud\n\t\t\t\t: ['Jan.', 'Feb.', 'Mar.', 'Apr.', 'May.', 'Jun.', 'Jul.', 'Aug.', 'Sep.', 'Oct.', 'Nov.', 'Dec.']\n\t\t\tconst firstDayOfWeek = window.firstDay ? window.firstDay : 0\n\n\t\t\treturn {\n\t\t\t\tformatLocale: {\n\t\t\t\t\tfirstDayOfWeek,\n\t\t\t\t\tmonthsShort,\n\t\t\t\t\tweekdaysMin: weekdaysShort,\n\t\t\t\t\tweekdaysShort,\n\t\t\t\t},\n\t\t\t\tmonthFormat: 'MMM',\n\t\t\t}\n\t\t},\n\n\t\tisShareOwner() {\n\t\t\treturn this.share && this.share.owner === getCurrentUser().uid\n\t\t},\n\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Check if a share is valid before\n\t\t * firing the request\n\t\t *\n\t\t * @param {Share} share the share to check\n\t\t * @return {boolean}\n\t\t */\n\t\tcheckShare(share) {\n\t\t\tif (share.password) {\n\t\t\t\tif (typeof share.password !== 'string' || share.password.trim() === '') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (share.expirationDate) {\n\t\t\t\tconst date = moment(share.expirationDate)\n\t\t\t\tif (!date.isValid()) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\n\t\t/**\n\t\t * ActionInput can be a little tricky to work with.\n\t\t * Since we expect a string and not a Date,\n\t\t * we need to process the value here\n\t\t *\n\t\t * @param {Date} date js date to be parsed by moment.js\n\t\t */\n\t\tonExpirationChange(date) {\n\t\t\t// format to YYYY-MM-DD\n\t\t\tconst value = moment(date).format('YYYY-MM-DD')\n\t\t\tthis.share.expireDate = value\n\t\t\tthis.queueUpdate('expireDate')\n\t\t},\n\n\t\t/**\n\t\t * Uncheck expire date\n\t\t * We need this method because @update:checked\n\t\t * is ran simultaneously as @uncheck, so\n\t\t * so we cannot ensure data is up-to-date\n\t\t */\n\t\tonExpirationDisable() {\n\t\t\tthis.share.expireDate = ''\n\t\t\tthis.queueUpdate('expireDate')\n\t\t},\n\n\t\t/**\n\t\t * Note changed, let's save it to a different key\n\t\t *\n\t\t * @param {string} note the share note\n\t\t */\n\t\tonNoteChange(note) {\n\t\t\tthis.$set(this.share, 'newNote', note.trim())\n\t\t},\n\n\t\t/**\n\t\t * When the note change, we trim, save and dispatch\n\t\t *\n\t\t */\n\t\tonNoteSubmit() {\n\t\t\tif (this.share.newNote) {\n\t\t\t\tthis.share.note = this.share.newNote\n\t\t\t\tthis.$delete(this.share, 'newNote')\n\t\t\t\tthis.queueUpdate('note')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Delete share button handler\n\t\t */\n\t\tasync onDelete() {\n\t\t\ttry {\n\t\t\t\tthis.loading = true\n\t\t\t\tthis.open = false\n\t\t\t\tawait this.deleteShare(this.share.id)\n\t\t\t\tconsole.debug('Share deleted', this.share.id)\n\t\t\t\tthis.$emit('remove:share', this.share)\n\t\t\t} catch (error) {\n\t\t\t\t// re-open menu if error\n\t\t\t\tthis.open = true\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Send an update of the share to the queue\n\t\t *\n\t\t * @param {Array<string>} propertyNames the properties to sync\n\t\t */\n\t\tqueueUpdate(...propertyNames) {\n\t\t\tif (propertyNames.length === 0) {\n\t\t\t\t// Nothing to update\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (this.share.id) {\n\t\t\t\tconst properties = {}\n\t\t\t\t// force value to string because that is what our\n\t\t\t\t// share api controller accepts\n\t\t\t\tpropertyNames.map(p => (properties[p] = this.share[p].toString()))\n\n\t\t\t\tthis.updateQueue.add(async () => {\n\t\t\t\t\tthis.saving = true\n\t\t\t\t\tthis.errors = {}\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst updatedShare = await this.updateShare(this.share.id, properties)\n\n\t\t\t\t\t\tif (propertyNames.indexOf('password') >= 0) {\n\t\t\t\t\t\t\t// reset password state after sync\n\t\t\t\t\t\t\tthis.$delete(this.share, 'newPassword')\n\n\t\t\t\t\t\t\t// updates password expiration time after sync\n\t\t\t\t\t\t\tthis.share.passwordExpirationTime = updatedShare.password_expiration_time\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// clear any previous errors\n\t\t\t\t\t\tthis.$delete(this.errors, propertyNames[0])\n\n\t\t\t\t\t} catch ({ message }) {\n\t\t\t\t\t\tif (message && message !== '') {\n\t\t\t\t\t\t\tthis.onSyncError(propertyNames[0], message)\n\t\t\t\t\t\t}\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tthis.saving = false\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tconsole.error('Cannot update share.', this.share, 'No valid id')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Manage sync errors\n\t\t *\n\t\t * @param {string} property the errored property, e.g. 'password'\n\t\t * @param {string} message the error message\n\t\t */\n\t\tonSyncError(property, message) {\n\t\t\t// re-open menu if closed\n\t\t\tthis.open = true\n\t\t\tswitch (property) {\n\t\t\tcase 'password':\n\t\t\tcase 'pending':\n\t\t\tcase 'expireDate':\n\t\t\tcase 'label':\n\t\t\tcase 'note': {\n\t\t\t\t// show error\n\t\t\t\tthis.$set(this.errors, property, message)\n\n\t\t\t\tlet propertyEl = this.$refs[property]\n\t\t\t\tif (propertyEl) {\n\t\t\t\t\tif (propertyEl.$el) {\n\t\t\t\t\t\tpropertyEl = propertyEl.$el\n\t\t\t\t\t}\n\t\t\t\t\t// focus if there is a focusable action element\n\t\t\t\t\tconst focusable = propertyEl.querySelector('.focusable')\n\t\t\t\t\tif (focusable) {\n\t\t\t\t\t\tfocusable.focus()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'sendPasswordByTalk': {\n\t\t\t\t// show error\n\t\t\t\tthis.$set(this.errors, property, message)\n\n\t\t\t\t// Restore previous state\n\t\t\t\tthis.share.sendPasswordByTalk = !this.share.sendPasswordByTalk\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Debounce queueUpdate to avoid requests spamming\n\t\t * more importantly for text data\n\t\t *\n\t\t * @param {string} property the property to sync\n\t\t */\n\t\tdebounceQueueUpdate: debounce(function(property) {\n\t\t\tthis.queueUpdate(property)\n\t\t}, 500),\n\n\t\t/**\n\t\t * Returns which dates are disabled for the datepicker\n\t\t *\n\t\t * @param {Date} date date to check\n\t\t * @return {boolean}\n\t\t */\n\t\tdisabledDate(date) {\n\t\t\tconst dateMoment = moment(date)\n\t\t\treturn (this.dateTomorrow && dateMoment.isBefore(this.dateTomorrow, 'day'))\n\t\t\t\t|| (this.dateMaxEnforced && dateMoment.isSameOrAfter(this.dateMaxEnforced, 'day'))\n\t\t},\n\t},\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInherited.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInherited.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<SharingEntrySimple :key=\"share.id\"\n\t\tclass=\"sharing-entry__inherited\"\n\t\t:title=\"share.shareWithDisplayName\">\n\t\t<template #avatar>\n\t\t\t<Avatar :user=\"share.shareWith\"\n\t\t\t\t:display-name=\"share.shareWithDisplayName\"\n\t\t\t\tclass=\"sharing-entry__avatar\"\n\t\t\t\ttooltip-message=\"\" />\n\t\t</template>\n\t\t<ActionText icon=\"icon-user\">\n\t\t\t{{ t('files_sharing', 'Added by {initiator}', { initiator: share.ownerDisplayName }) }}\n\t\t</ActionText>\n\t\t<ActionLink v-if=\"share.viaPath && share.viaFileid\"\n\t\t\ticon=\"icon-folder\"\n\t\t\t:href=\"viaFileTargetUrl\">\n\t\t\t{{ t('files_sharing', 'Via “{folder}”', {folder: viaFolderName} ) }}\n\t\t</ActionLink>\n\t\t<ActionButton v-if=\"share.canDelete\"\n\t\t\ticon=\"icon-close\"\n\t\t\t@click.prevent=\"onDelete\">\n\t\t\t{{ t('files_sharing', 'Unshare') }}\n\t\t</actionbutton>\n\t</SharingEntrySimple>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { basename } from '@nextcloud/paths'\nimport Avatar from '@nextcloud/vue/dist/Components/Avatar'\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport ActionLink from '@nextcloud/vue/dist/Components/ActionLink'\nimport ActionText from '@nextcloud/vue/dist/Components/ActionText'\n\n// eslint-disable-next-line no-unused-vars\nimport Share from '../models/Share'\nimport SharesMixin from '../mixins/SharesMixin'\nimport SharingEntrySimple from '../components/SharingEntrySimple'\n\nexport default {\n\tname: 'SharingEntryInherited',\n\n\tcomponents: {\n\t\tActionButton,\n\t\tActionLink,\n\t\tActionText,\n\t\tAvatar,\n\t\tSharingEntrySimple,\n\t},\n\n\tmixins: [SharesMixin],\n\n\tprops: {\n\t\tshare: {\n\t\t\ttype: Share,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tviaFileTargetUrl() {\n\t\t\treturn generateUrl('/f/{fileid}', {\n\t\t\t\tfileid: this.share.viaFileid,\n\t\t\t})\n\t\t},\n\n\t\tviaFolderName() {\n\t\t\treturn basename(this.share.viaPath)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto;\n\t}\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInherited.vue?vue&type=style&index=0&id=29845767&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInherited.vue?vue&type=style&index=0&id=29845767&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntryInherited.vue?vue&type=template&id=29845767&scoped=true&\"\nimport script from \"./SharingEntryInherited.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntryInherited.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntryInherited.vue?vue&type=style&index=0&id=29845767&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"29845767\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('SharingEntrySimple',{key:_vm.share.id,staticClass:\"sharing-entry__inherited\",attrs:{\"title\":_vm.share.shareWithDisplayName},scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('Avatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"user\":_vm.share.shareWith,\"display-name\":_vm.share.shareWithDisplayName,\"tooltip-message\":\"\"}})]},proxy:true}])},[_vm._v(\" \"),_c('ActionText',{attrs:{\"icon\":\"icon-user\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Added by {initiator}', { initiator: _vm.share.ownerDisplayName }))+\"\\n\\t\")]),_vm._v(\" \"),(_vm.share.viaPath && _vm.share.viaFileid)?_c('ActionLink',{attrs:{\"icon\":\"icon-folder\",\"href\":_vm.viaFileTargetUrl}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Via “{folder}”', {folder: _vm.viaFolderName} ))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.share.canDelete)?_c('ActionButton',{attrs:{\"icon\":\"icon-close\"},on:{\"click\":function($event){$event.preventDefault();return _vm.onDelete.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Unshare'))+\"\\n\\t\")]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<ul id=\"sharing-inherited-shares\">\n\t\t<!-- Main collapsible entry -->\n\t\t<SharingEntrySimple class=\"sharing-entry__inherited\"\n\t\t\t:title=\"mainTitle\"\n\t\t\t:subtitle=\"subTitle\"\n\t\t\t:aria-expanded=\"showInheritedShares\">\n\t\t\t<template #avatar>\n\t\t\t\t<div class=\"avatar-shared icon-more-white\" />\n\t\t\t</template>\n\t\t\t<ActionButton :icon=\"showInheritedSharesIcon\" @click.prevent.stop=\"toggleInheritedShares\">\n\t\t\t\t{{ toggleTooltip }}\n\t\t\t</ActionButton>\n\t\t</SharingEntrySimple>\n\n\t\t<!-- Inherited shares list -->\n\t\t<SharingEntryInherited v-for=\"share in shares\"\n\t\t\t:key=\"share.id\"\n\t\t\t:file-info=\"fileInfo\"\n\t\t\t:share=\"share\" />\n\t</ul>\n</template>\n\n<script>\nimport { generateOcsUrl } from '@nextcloud/router'\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport axios from '@nextcloud/axios'\n\nimport Share from '../models/Share'\nimport SharingEntryInherited from '../components/SharingEntryInherited'\nimport SharingEntrySimple from '../components/SharingEntrySimple'\n\nexport default {\n\tname: 'SharingInherited',\n\n\tcomponents: {\n\t\tActionButton,\n\t\tSharingEntryInherited,\n\t\tSharingEntrySimple,\n\t},\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloaded: false,\n\t\t\tloading: false,\n\t\t\tshowInheritedShares: false,\n\t\t\tshares: [],\n\t\t}\n\t},\n\tcomputed: {\n\t\tshowInheritedSharesIcon() {\n\t\t\tif (this.loading) {\n\t\t\t\treturn 'icon-loading-small'\n\t\t\t}\n\t\t\tif (this.showInheritedShares) {\n\t\t\t\treturn 'icon-triangle-n'\n\t\t\t}\n\t\t\treturn 'icon-triangle-s'\n\t\t},\n\t\tmainTitle() {\n\t\t\treturn t('files_sharing', 'Others with access')\n\t\t},\n\t\tsubTitle() {\n\t\t\treturn (this.showInheritedShares && this.shares.length === 0)\n\t\t\t\t? t('files_sharing', 'No other users with access found')\n\t\t\t\t: ''\n\t\t},\n\t\ttoggleTooltip() {\n\t\t\treturn this.fileInfo.type === 'dir'\n\t\t\t\t? t('files_sharing', 'Toggle list of others with access to this directory')\n\t\t\t\t: t('files_sharing', 'Toggle list of others with access to this file')\n\t\t},\n\t\tfullPath() {\n\t\t\tconst path = `${this.fileInfo.path}/${this.fileInfo.name}`\n\t\t\treturn path.replace('//', '/')\n\t\t},\n\t},\n\twatch: {\n\t\tfileInfo() {\n\t\t\tthis.resetState()\n\t\t},\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Toggle the list view and fetch/reset the state\n\t\t */\n\t\ttoggleInheritedShares() {\n\t\t\tthis.showInheritedShares = !this.showInheritedShares\n\t\t\tif (this.showInheritedShares) {\n\t\t\t\tthis.fetchInheritedShares()\n\t\t\t} else {\n\t\t\t\tthis.resetState()\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Fetch the Inherited Shares array\n\t\t */\n\t\tasync fetchInheritedShares() {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tconst url = generateOcsUrl('apps/files_sharing/api/v1/shares/inherited?format=json&path={path}', { path: this.fullPath })\n\t\t\t\tconst shares = await axios.get(url)\n\t\t\t\tthis.shares = shares.data.ocs.data\n\t\t\t\t\t.map(share => new Share(share))\n\t\t\t\t\t.sort((a, b) => b.createdTime - a.createdTime)\n\t\t\t\tconsole.info(this.shares)\n\t\t\t\tthis.loaded = true\n\t\t\t} catch (error) {\n\t\t\t\tOC.Notification.showTemporary(t('files_sharing', 'Unable to fetch inherited shares'), { type: 'error' })\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Reset current component state\n\t\t */\n\t\tresetState() {\n\t\t\tthis.loaded = false\n\t\t\tthis.loading = false\n\t\t\tthis.showInheritedShares = false\n\t\t\tthis.shares = []\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry__inherited {\n\t.avatar-shared {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInherited.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInherited.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInherited.vue?vue&type=style&index=0&id=7a52663c&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInherited.vue?vue&type=style&index=0&id=7a52663c&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingInherited.vue?vue&type=template&id=7a52663c&scoped=true&\"\nimport script from \"./SharingInherited.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingInherited.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingInherited.vue?vue&type=style&index=0&id=7a52663c&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7a52663c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',{attrs:{\"id\":\"sharing-inherited-shares\"}},[_c('SharingEntrySimple',{staticClass:\"sharing-entry__inherited\",attrs:{\"title\":_vm.mainTitle,\"subtitle\":_vm.subTitle,\"aria-expanded\":_vm.showInheritedShares},scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('div',{staticClass:\"avatar-shared icon-more-white\"})]},proxy:true}])},[_vm._v(\" \"),_c('ActionButton',{attrs:{\"icon\":_vm.showInheritedSharesIcon},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.toggleInheritedShares.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.toggleTooltip)+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_vm._l((_vm.shares),function(share){return _c('SharingEntryInherited',{key:share.id,attrs:{\"file-info\":_vm.fileInfo,\"share\":share}})})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExternalShareAction.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExternalShareAction.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2021 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<Component :is=\"data.is\"\n\t\tv-bind=\"data\"\n\t\tv-on=\"action.handlers\">\n\t\t{{ data.text }}\n\t</Component>\n</template>\n\n<script>\nimport Share from '../models/Share'\n\nexport default {\n\tname: 'ExternalShareAction',\n\n\tprops: {\n\t\tid: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\taction: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => ({}),\n\t\t},\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\tshare: {\n\t\t\ttype: Share,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tdata() {\n\t\t\treturn this.action.data(this)\n\t\t},\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./ExternalShareAction.vue?vue&type=template&id=29f555e7&\"\nimport script from \"./ExternalShareAction.vue?vue&type=script&lang=js&\"\nexport * from \"./ExternalShareAction.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(_vm.data.is,_vm._g(_vm._b({tag:\"Component\"},'Component',_vm.data,false),_vm.action.handlers),[_vm._v(\"\\n\\t\"+_vm._s(_vm.data.text)+\"\\n\")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2022 Louis Chmn <louis@chmn.me>\n *\n * @author Louis Chmn <louis@chmn.me>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const ATOMIC_PERMISSIONS = {\n\tNONE: 0,\n\tREAD: 1,\n\tUPDATE: 2,\n\tCREATE: 4,\n\tDELETE: 8,\n\tSHARE: 16,\n}\n\nexport const BUNDLED_PERMISSIONS = {\n\tREAD_ONLY: ATOMIC_PERMISSIONS.READ,\n\tUPLOAD_AND_UPDATE: ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.DELETE,\n\tFILE_DROP: ATOMIC_PERMISSIONS.CREATE,\n\tALL: ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.DELETE | ATOMIC_PERMISSIONS.SHARE,\n}\n\n/**\n * Return whether a given permissions set contains some permissions.\n *\n * @param {number} initialPermissionSet - the permissions set.\n * @param {number} permissionsToCheck - the permissions to check.\n * @return {boolean}\n */\nexport function hasPermissions(initialPermissionSet, permissionsToCheck) {\n\treturn initialPermissionSet !== ATOMIC_PERMISSIONS.NONE && (initialPermissionSet & permissionsToCheck) === permissionsToCheck\n}\n\n/**\n * Return whether a given permissions set is valid.\n *\n * @param {number} permissionsSet - the permissions set.\n *\n * @return {boolean}\n */\nexport function permissionsSetIsValid(permissionsSet) {\n\t// Must have at least READ or CREATE permission.\n\tif (!hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.READ) && !hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.CREATE)) {\n\t\treturn false\n\t}\n\n\t// Must have READ permission if have UPDATE or DELETE.\n\tif (!hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.READ) && (\n\t\thasPermissions(permissionsSet, ATOMIC_PERMISSIONS.UPDATE) || hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.DELETE)\n\t)) {\n\t\treturn false\n\t}\n\n\treturn true\n}\n\n/**\n * Add some permissions to an initial set of permissions.\n *\n * @param {number} initialPermissionSet - the initial permissions.\n * @param {number} permissionsToAdd - the permissions to add.\n *\n * @return {number}\n */\nexport function addPermissions(initialPermissionSet, permissionsToAdd) {\n\treturn initialPermissionSet | permissionsToAdd\n}\n\n/**\n * Remove some permissions from an initial set of permissions.\n *\n * @param {number} initialPermissionSet - the initial permissions.\n * @param {number} permissionsToSubtract - the permissions to remove.\n *\n * @return {number}\n */\nexport function subtractPermissions(initialPermissionSet, permissionsToSubtract) {\n\treturn initialPermissionSet & ~permissionsToSubtract\n}\n\n/**\n * Toggle some permissions from an initial set of permissions.\n *\n * @param {number} initialPermissionSet - the permissions set.\n * @param {number} permissionsToToggle - the permissions to toggle.\n *\n * @return {number}\n */\nexport function togglePermissions(initialPermissionSet, permissionsToToggle) {\n\tif (hasPermissions(initialPermissionSet, permissionsToToggle)) {\n\t\treturn subtractPermissions(initialPermissionSet, permissionsToToggle)\n\t} else {\n\t\treturn addPermissions(initialPermissionSet, permissionsToToggle)\n\t}\n}\n\n/**\n * Return whether some given permissions can be toggled from a permission set.\n *\n * @param {number} permissionSet - the initial permissions set.\n * @param {number} permissionsToToggle - the permissions to toggle.\n *\n * @return {boolean}\n */\nexport function canTogglePermissions(permissionSet, permissionsToToggle) {\n\treturn permissionsSetIsValid(togglePermissions(permissionSet, permissionsToToggle))\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharePermissionsEditor.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharePermissionsEditor.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2022 Louis Chmn <louis@chmn.me>\n -\n - @author Louis Chmn <louis@chmn.me>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<li>\n\t\t<ul>\n\t\t\t<!-- file -->\n\t\t\t<ActionCheckbox v-if=\"!isFolder\"\n\t\t\t\t:checked=\"shareHasPermissions(atomicPermissions.UPDATE)\"\n\t\t\t\t:disabled=\"saving\"\n\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.UPDATE)\">\n\t\t\t\t{{ t('files_sharing', 'Allow editing') }}\n\t\t\t</ActionCheckbox>\n\n\t\t\t<!-- folder -->\n\t\t\t<template v-if=\"isFolder && fileHasCreatePermission && config.isPublicUploadEnabled\">\n\t\t\t\t<template v-if=\"!showCustomPermissionsForm\">\n\t\t\t\t\t<ActionRadio :checked=\"sharePermissionEqual(bundledPermissions.READ_ONLY)\"\n\t\t\t\t\t\t:value=\"bundledPermissions.READ_ONLY\"\n\t\t\t\t\t\t:name=\"randomFormName\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t@change=\"setSharePermissions(bundledPermissions.READ_ONLY)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Read only') }}\n\t\t\t\t\t</ActionRadio>\n\n\t\t\t\t\t<ActionRadio :checked=\"sharePermissionEqual(bundledPermissions.UPLOAD_AND_UPDATE)\"\n\t\t\t\t\t\t:value=\"bundledPermissions.UPLOAD_AND_UPDATE\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:name=\"randomFormName\"\n\t\t\t\t\t\t@change=\"setSharePermissions(bundledPermissions.UPLOAD_AND_UPDATE)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Allow upload and editing') }}\n\t\t\t\t\t</ActionRadio>\n\t\t\t\t\t<ActionRadio :checked=\"sharePermissionEqual(bundledPermissions.FILE_DROP)\"\n\t\t\t\t\t\t:value=\"bundledPermissions.FILE_DROP\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:name=\"randomFormName\"\n\t\t\t\t\t\tclass=\"sharing-entry__action--public-upload\"\n\t\t\t\t\t\t@change=\"setSharePermissions(bundledPermissions.FILE_DROP)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'File drop (upload only)') }}\n\t\t\t\t\t</ActionRadio>\n\n\t\t\t\t\t<!-- custom permissions button -->\n\t\t\t\t\t<ActionButton :title=\"t('files_sharing', 'Custom permissions')\"\n\t\t\t\t\t\t@click=\"showCustomPermissionsForm = true\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<Tune />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t{{ sharePermissionsIsBundle ? \"\" : sharePermissionsSummary }}\n\t\t\t\t\t</ActionButton>\n\t\t\t\t</template>\n\n\t\t\t\t<!-- custom permissions -->\n\t\t\t\t<span v-else :class=\"{error: !sharePermissionsSetIsValid}\">\n\t\t\t\t\t<ActionCheckbox :checked=\"shareHasPermissions(atomicPermissions.READ)\"\n\t\t\t\t\t\t:disabled=\"saving || !canToggleSharePermissions(atomicPermissions.READ)\"\n\t\t\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.READ)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Read') }}\n\t\t\t\t\t</ActionCheckbox>\n\t\t\t\t\t<ActionCheckbox :checked=\"shareHasPermissions(atomicPermissions.CREATE)\"\n\t\t\t\t\t\t:disabled=\"saving || !canToggleSharePermissions(atomicPermissions.CREATE)\"\n\t\t\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.CREATE)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Upload') }}\n\t\t\t\t\t</ActionCheckbox>\n\t\t\t\t\t<ActionCheckbox :checked=\"shareHasPermissions(atomicPermissions.UPDATE)\"\n\t\t\t\t\t\t:disabled=\"saving || !canToggleSharePermissions(atomicPermissions.UPDATE)\"\n\t\t\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.UPDATE)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Edit') }}\n\t\t\t\t\t</ActionCheckbox>\n\t\t\t\t\t<ActionCheckbox :checked=\"shareHasPermissions(atomicPermissions.DELETE)\"\n\t\t\t\t\t\t:disabled=\"saving || !canToggleSharePermissions(atomicPermissions.DELETE)\"\n\t\t\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.DELETE)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Delete') }}\n\t\t\t\t\t</ActionCheckbox>\n\n\t\t\t\t\t<ActionButton @click=\"showCustomPermissionsForm = false\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<ChevronLeft />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t{{ t('files_sharing', 'Bundled permissions') }}\n\t\t\t\t\t</ActionButton>\n\t\t\t\t</span>\n\t\t\t</template>\n\t\t</ul>\n\t</li>\n</template>\n\n<script>\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport ActionRadio from '@nextcloud/vue/dist/Components/ActionRadio'\nimport ActionCheckbox from '@nextcloud/vue/dist/Components/ActionCheckbox'\n\nimport SharesMixin from '../mixins/SharesMixin'\nimport {\n\tATOMIC_PERMISSIONS,\n\tBUNDLED_PERMISSIONS,\n\thasPermissions,\n\tpermissionsSetIsValid,\n\ttogglePermissions,\n\tcanTogglePermissions,\n} from '../lib/SharePermissionsToolBox'\n\nimport Tune from 'vue-material-design-icons/Tune'\nimport ChevronLeft from 'vue-material-design-icons/ChevronLeft'\n\nexport default {\n\tname: 'SharePermissionsEditor',\n\n\tcomponents: {\n\t\tActionButton,\n\t\tActionCheckbox,\n\t\tActionRadio,\n\t\tTune,\n\t\tChevronLeft,\n\t},\n\n\tmixins: [SharesMixin],\n\n\tdata() {\n\t\treturn {\n\t\t\trandomFormName: Math.random().toString(27).substring(2),\n\n\t\t\tshowCustomPermissionsForm: false,\n\n\t\t\tatomicPermissions: ATOMIC_PERMISSIONS,\n\t\t\tbundledPermissions: BUNDLED_PERMISSIONS,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Return the summary of custom checked permissions.\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tsharePermissionsSummary() {\n\t\t\treturn Object.values(this.atomicPermissions)\n\t\t\t\t.filter(permission => this.shareHasPermissions(permission))\n\t\t\t\t.map(permission => {\n\t\t\t\t\tswitch (permission) {\n\t\t\t\t\tcase this.atomicPermissions.CREATE:\n\t\t\t\t\t\treturn this.t('files_sharing', 'Upload')\n\t\t\t\t\tcase this.atomicPermissions.READ:\n\t\t\t\t\t\treturn this.t('files_sharing', 'Read')\n\t\t\t\t\tcase this.atomicPermissions.UPDATE:\n\t\t\t\t\t\treturn this.t('files_sharing', 'Edit')\n\t\t\t\t\tcase this.atomicPermissions.DELETE:\n\t\t\t\t\t\treturn this.t('files_sharing', 'Delete')\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn null\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.filter(permissionLabel => permissionLabel !== null)\n\t\t\t\t.join(', ')\n\t\t},\n\n\t\t/**\n\t\t * Return whether the share's permission is a bundle.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tsharePermissionsIsBundle() {\n\t\t\treturn Object.values(BUNDLED_PERMISSIONS)\n\t\t\t\t.map(bundle => this.sharePermissionEqual(bundle))\n\t\t\t\t.filter(isBundle => isBundle)\n\t\t\t\t.length > 0\n\t\t},\n\n\t\t/**\n\t\t * Return whether the share's permission is valid.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tsharePermissionsSetIsValid() {\n\t\t\treturn permissionsSetIsValid(this.share.permissions)\n\t\t},\n\n\t\t/**\n\t\t * Is the current share a folder ?\n\t\t * TODO: move to a proper FileInfo model?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisFolder() {\n\t\t\treturn this.fileInfo.type === 'dir'\n\t\t},\n\n\t\t/**\n\t\t * Does the current file/folder have create permissions.\n\t\t * TODO: move to a proper FileInfo model?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tfileHasCreatePermission() {\n\t\t\treturn !!(this.fileInfo.permissions & ATOMIC_PERMISSIONS.CREATE)\n\t\t},\n\t},\n\n\tmounted() {\n\t\t// Show the Custom Permissions view on open if the permissions set is not a bundle.\n\t\tthis.showCustomPermissionsForm = !this.sharePermissionsIsBundle\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Return whether the share has the exact given permissions.\n\t\t *\n\t\t * @param {number} permissions - the permissions to check.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tsharePermissionEqual(permissions) {\n\t\t\t// We use the share's permission without PERMISSION_SHARE as it is not relevant here.\n\t\t\treturn (this.share.permissions & ~ATOMIC_PERMISSIONS.SHARE) === permissions\n\t\t},\n\n\t\t/**\n\t\t * Return whether the share has the given permissions.\n\t\t *\n\t\t * @param {number} permissions - the permissions to check.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tshareHasPermissions(permissions) {\n\t\t\treturn hasPermissions(this.share.permissions, permissions)\n\t\t},\n\n\t\t/**\n\t\t * Set the share permissions to the given permissions.\n\t\t *\n\t\t * @param {number} permissions - the permissions to set.\n\t\t *\n\t\t * @return {void}\n\t\t */\n\t\tsetSharePermissions(permissions) {\n\t\t\tthis.share.permissions = permissions\n\t\t\tthis.queueUpdate('permissions')\n\t\t},\n\n\t\t/**\n\t\t * Return whether some given permissions can be toggled.\n\t\t *\n\t\t * @param {number} permissionsToToggle - the permissions to toggle.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanToggleSharePermissions(permissionsToToggle) {\n\t\t\treturn canTogglePermissions(this.share.permissions, permissionsToToggle)\n\t\t},\n\n\t\t/**\n\t\t * Toggle a given permission.\n\t\t *\n\t\t * @param {number} permissions - the permissions to toggle.\n\t\t *\n\t\t * @return {void}\n\t\t */\n\t\ttoggleSharePermissions(permissions) {\n\t\t\tthis.share.permissions = togglePermissions(this.share.permissions, permissions)\n\n\t\t\tif (!permissionsSetIsValid(this.share.permissions)) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.queueUpdate('permissions')\n\t\t},\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n.error {\n\t::v-deep .action-checkbox__label:before {\n\t\tborder: 1px solid var(--color-error);\n\t}\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharePermissionsEditor.vue?vue&type=style&index=0&id=ea414898&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharePermissionsEditor.vue?vue&type=style&index=0&id=ea414898&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharePermissionsEditor.vue?vue&type=template&id=ea414898&scoped=true&\"\nimport script from \"./SharePermissionsEditor.vue?vue&type=script&lang=js&\"\nexport * from \"./SharePermissionsEditor.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharePermissionsEditor.vue?vue&type=style&index=0&id=ea414898&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ea414898\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',[_c('ul',[(!_vm.isFolder)?_c('ActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.UPDATE),\"disabled\":_vm.saving},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.UPDATE)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow editing'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isFolder && _vm.fileHasCreatePermission && _vm.config.isPublicUploadEnabled)?[(!_vm.showCustomPermissionsForm)?[_c('ActionRadio',{attrs:{\"checked\":_vm.sharePermissionEqual(_vm.bundledPermissions.READ_ONLY),\"value\":_vm.bundledPermissions.READ_ONLY,\"name\":_vm.randomFormName,\"disabled\":_vm.saving},on:{\"change\":function($event){return _vm.setSharePermissions(_vm.bundledPermissions.READ_ONLY)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Read only'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionRadio',{attrs:{\"checked\":_vm.sharePermissionEqual(_vm.bundledPermissions.UPLOAD_AND_UPDATE),\"value\":_vm.bundledPermissions.UPLOAD_AND_UPDATE,\"disabled\":_vm.saving,\"name\":_vm.randomFormName},on:{\"change\":function($event){return _vm.setSharePermissions(_vm.bundledPermissions.UPLOAD_AND_UPDATE)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow upload and editing'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionRadio',{staticClass:\"sharing-entry__action--public-upload\",attrs:{\"checked\":_vm.sharePermissionEqual(_vm.bundledPermissions.FILE_DROP),\"value\":_vm.bundledPermissions.FILE_DROP,\"disabled\":_vm.saving,\"name\":_vm.randomFormName},on:{\"change\":function($event){return _vm.setSharePermissions(_vm.bundledPermissions.FILE_DROP)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'File drop (upload only)'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionButton',{attrs:{\"title\":_vm.t('files_sharing', 'Custom permissions')},on:{\"click\":function($event){_vm.showCustomPermissionsForm = true}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Tune')]},proxy:true}],null,false,961531849)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.sharePermissionsIsBundle ? \"\" : _vm.sharePermissionsSummary)+\"\\n\\t\\t\\t\\t\")])]:_c('span',{class:{error: !_vm.sharePermissionsSetIsValid}},[_c('ActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.READ),\"disabled\":_vm.saving || !_vm.canToggleSharePermissions(_vm.atomicPermissions.READ)},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.READ)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Read'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.CREATE),\"disabled\":_vm.saving || !_vm.canToggleSharePermissions(_vm.atomicPermissions.CREATE)},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.CREATE)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Upload'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.UPDATE),\"disabled\":_vm.saving || !_vm.canToggleSharePermissions(_vm.atomicPermissions.UPDATE)},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.UPDATE)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Edit'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.DELETE),\"disabled\":_vm.saving || !_vm.canToggleSharePermissions(_vm.atomicPermissions.DELETE)},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.DELETE)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Delete'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionButton',{on:{\"click\":function($event){_vm.showCustomPermissionsForm = false}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('ChevronLeft')]},proxy:true}],null,false,1018742195)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Bundled permissions'))+\"\\n\\t\\t\\t\\t\")])],1)]:_vm._e()],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<li :class=\"{'sharing-entry--share': share}\" class=\"sharing-entry sharing-entry__link\">\n\t\t<Avatar :is-no-user=\"true\"\n\t\t\t:icon-class=\"isEmailShareType ? 'avatar-link-share icon-mail-white' : 'avatar-link-share icon-public-white'\"\n\t\t\tclass=\"sharing-entry__avatar\" />\n\t\t<div class=\"sharing-entry__desc\">\n\t\t\t<span class=\"sharing-entry__title\" :title=\"title\">\n\t\t\t\t{{ title }}\n\t\t\t</span>\n\t\t\t<p v-if=\"subtitle\">\n\t\t\t\t{{ subtitle }}\n\t\t\t</p>\n\t\t</div>\n\n\t\t<!-- clipboard -->\n\t\t<Actions v-if=\"share && !isEmailShareType && share.token\"\n\t\t\tref=\"copyButton\"\n\t\t\tclass=\"sharing-entry__copy\">\n\t\t\t<ActionLink :href=\"shareLink\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\t:icon=\"copied && copySuccess ? 'icon-checkmark-color' : 'icon-clippy'\"\n\t\t\t\t@click.stop.prevent=\"copyLink\">\n\t\t\t\t{{ clipboardTooltip }}\n\t\t\t</ActionLink>\n\t\t</Actions>\n\n\t\t<!-- pending actions -->\n\t\t<Actions v-if=\"!pending && (pendingPassword || pendingExpirationDate)\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\tmenu-align=\"right\"\n\t\t\t:open.sync=\"open\"\n\t\t\t@close=\"onNewLinkShare\">\n\t\t\t<!-- pending data menu -->\n\t\t\t<ActionText v-if=\"errors.pending\"\n\t\t\t\ticon=\"icon-error\"\n\t\t\t\t:class=\"{ error: errors.pending}\">\n\t\t\t\t{{ errors.pending }}\n\t\t\t</ActionText>\n\t\t\t<ActionText v-else icon=\"icon-info\">\n\t\t\t\t{{ t('files_sharing', 'Please enter the following required information before creating the share') }}\n\t\t\t</ActionText>\n\n\t\t\t<!-- password -->\n\t\t\t<ActionText v-if=\"pendingPassword\" icon=\"icon-password\">\n\t\t\t\t{{ t('files_sharing', 'Password protection (enforced)') }}\n\t\t\t</ActionText>\n\t\t\t<ActionCheckbox v-else-if=\"config.enableLinkPasswordByDefault\"\n\t\t\t\t:checked.sync=\"isPasswordProtected\"\n\t\t\t\t:disabled=\"config.enforcePasswordForPublicLink || saving\"\n\t\t\t\tclass=\"share-link-password-checkbox\"\n\t\t\t\t@uncheck=\"onPasswordDisable\">\n\t\t\t\t{{ t('files_sharing', 'Password protection') }}\n\t\t\t</ActionCheckbox>\n\t\t\t<ActionInput v-if=\"pendingPassword || share.password\"\n\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\tcontent: errors.password,\n\t\t\t\t\tshow: errors.password,\n\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t}\"\n\t\t\t\tclass=\"share-link-password\"\n\t\t\t\t:value.sync=\"share.password\"\n\t\t\t\t:disabled=\"saving\"\n\t\t\t\t:required=\"config.enableLinkPasswordByDefault || config.enforcePasswordForPublicLink\"\n\t\t\t\t:minlength=\"isPasswordPolicyEnabled && config.passwordPolicy.minLength\"\n\t\t\t\ticon=\"\"\n\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t@submit=\"onNewLinkShare\">\n\t\t\t\t{{ t('files_sharing', 'Enter a password') }}\n\t\t\t</ActionInput>\n\n\t\t\t<!-- expiration date -->\n\t\t\t<ActionText v-if=\"pendingExpirationDate\" icon=\"icon-calendar-dark\">\n\t\t\t\t{{ t('files_sharing', 'Expiration date (enforced)') }}\n\t\t\t</ActionText>\n\t\t\t<ActionInput v-if=\"pendingExpirationDate\"\n\t\t\t\tv-model=\"share.expireDate\"\n\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\tcontent: errors.expireDate,\n\t\t\t\t\tshow: errors.expireDate,\n\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t}\"\n\t\t\t\tclass=\"share-link-expire-date\"\n\t\t\t\t:disabled=\"saving\"\n\n\t\t\t\t:lang=\"lang\"\n\t\t\t\ticon=\"\"\n\t\t\t\ttype=\"date\"\n\t\t\t\tvalue-type=\"format\"\n\t\t\t\t:disabled-date=\"disabledDate\">\n\t\t\t\t<!-- let's not submit when picked, the user\n\t\t\t\t\tmight want to still edit or copy the password -->\n\t\t\t\t{{ t('files_sharing', 'Enter a date') }}\n\t\t\t</ActionInput>\n\n\t\t\t<ActionButton icon=\"icon-checkmark\" @click.prevent.stop=\"onNewLinkShare\">\n\t\t\t\t{{ t('files_sharing', 'Create share') }}\n\t\t\t</ActionButton>\n\t\t\t<ActionButton icon=\"icon-close\" @click.prevent.stop=\"onCancel\">\n\t\t\t\t{{ t('files_sharing', 'Cancel') }}\n\t\t\t</ActionButton>\n\t\t</Actions>\n\n\t\t<!-- actions -->\n\t\t<Actions v-else-if=\"!loading\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\tmenu-align=\"right\"\n\t\t\t:open.sync=\"open\"\n\t\t\t@close=\"onMenuClose\">\n\t\t\t<template v-if=\"share\">\n\t\t\t\t<template v-if=\"share.canEdit && canReshare\">\n\t\t\t\t\t<!-- Custom Label -->\n\t\t\t\t\t<ActionInput ref=\"label\"\n\t\t\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\t\t\tcontent: errors.label,\n\t\t\t\t\t\t\tshow: errors.label,\n\t\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\t\tdefaultContainer: '.app-sidebar'\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\t:class=\"{ error: errors.label }\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:aria-label=\"t('files_sharing', 'Share label')\"\n\t\t\t\t\t\t:value=\"share.newLabel !== undefined ? share.newLabel : share.label\"\n\t\t\t\t\t\ticon=\"icon-edit\"\n\t\t\t\t\t\tmaxlength=\"255\"\n\t\t\t\t\t\t@update:value=\"onLabelChange\"\n\t\t\t\t\t\t@submit=\"onLabelSubmit\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Share label') }}\n\t\t\t\t\t</ActionInput>\n\n\t\t\t\t\t<SharePermissionsEditor :can-reshare=\"canReshare\"\n\t\t\t\t\t\t:share.sync=\"share\"\n\t\t\t\t\t\t:file-info=\"fileInfo\" />\n\n\t\t\t\t\t<ActionSeparator />\n\n\t\t\t\t\t<ActionCheckbox :checked.sync=\"share.hideDownload\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t@change=\"queueUpdate('hideDownload')\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Hide download') }}\n\t\t\t\t\t</ActionCheckbox>\n\n\t\t\t\t\t<!-- password -->\n\t\t\t\t\t<ActionCheckbox :checked.sync=\"isPasswordProtected\"\n\t\t\t\t\t\t:disabled=\"config.enforcePasswordForPublicLink || saving\"\n\t\t\t\t\t\tclass=\"share-link-password-checkbox\"\n\t\t\t\t\t\t@uncheck=\"onPasswordDisable\">\n\t\t\t\t\t\t{{ config.enforcePasswordForPublicLink\n\t\t\t\t\t\t\t? t('files_sharing', 'Password protection (enforced)')\n\t\t\t\t\t\t\t: t('files_sharing', 'Password protect') }}\n\t\t\t\t\t</ActionCheckbox>\n\t\t\t\t\t<ActionInput v-if=\"isPasswordProtected\"\n\t\t\t\t\t\tref=\"password\"\n\t\t\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\t\t\tcontent: errors.password,\n\t\t\t\t\t\t\tshow: errors.password,\n\t\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\tclass=\"share-link-password\"\n\t\t\t\t\t\t:class=\"{ error: errors.password}\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:required=\"config.enforcePasswordForPublicLink\"\n\t\t\t\t\t\t:value=\"hasUnsavedPassword ? share.newPassword : '***************'\"\n\t\t\t\t\t\ticon=\"icon-password\"\n\t\t\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t\t\t:type=\"hasUnsavedPassword ? 'text': 'password'\"\n\t\t\t\t\t\t@update:value=\"onPasswordChange\"\n\t\t\t\t\t\t@submit=\"onPasswordSubmit\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Enter a password') }}\n\t\t\t\t\t</ActionInput>\n\t\t\t\t\t<ActionText v-if=\"isEmailShareType && passwordExpirationTime\" icon=\"icon-info\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Password expires {passwordExpirationTime}', {passwordExpirationTime}) }}\n\t\t\t\t\t</ActionText>\n\t\t\t\t\t<ActionText v-else-if=\"isEmailShareType && passwordExpirationTime !== null\" icon=\"icon-error\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Password expired') }}\n\t\t\t\t\t</ActionText>\n\n\t\t\t\t\t<!-- password protected by Talk -->\n\t\t\t\t\t<ActionCheckbox v-if=\"isPasswordProtectedByTalkAvailable\"\n\t\t\t\t\t\t:checked.sync=\"isPasswordProtectedByTalk\"\n\t\t\t\t\t\t:disabled=\"!canTogglePasswordProtectedByTalkAvailable || saving\"\n\t\t\t\t\t\tclass=\"share-link-password-talk-checkbox\"\n\t\t\t\t\t\t@change=\"onPasswordProtectedByTalkChange\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Video verification') }}\n\t\t\t\t\t</ActionCheckbox>\n\n\t\t\t\t\t<!-- expiration date -->\n\t\t\t\t\t<ActionCheckbox :checked.sync=\"hasExpirationDate\"\n\t\t\t\t\t\t:disabled=\"config.isDefaultExpireDateEnforced || saving\"\n\t\t\t\t\t\tclass=\"share-link-expire-date-checkbox\"\n\t\t\t\t\t\t@uncheck=\"onExpirationDisable\">\n\t\t\t\t\t\t{{ config.isDefaultExpireDateEnforced\n\t\t\t\t\t\t\t? t('files_sharing', 'Expiration date (enforced)')\n\t\t\t\t\t\t\t: t('files_sharing', 'Set expiration date') }}\n\t\t\t\t\t</ActionCheckbox>\n\t\t\t\t\t<ActionInput v-if=\"hasExpirationDate\"\n\t\t\t\t\t\tref=\"expireDate\"\n\t\t\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\t\t\tcontent: errors.expireDate,\n\t\t\t\t\t\t\tshow: errors.expireDate,\n\t\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\tclass=\"share-link-expire-date\"\n\t\t\t\t\t\t:class=\"{ error: errors.expireDate}\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:lang=\"lang\"\n\t\t\t\t\t\t:value=\"share.expireDate\"\n\t\t\t\t\t\tvalue-type=\"format\"\n\t\t\t\t\t\ticon=\"icon-calendar-dark\"\n\t\t\t\t\t\ttype=\"date\"\n\t\t\t\t\t\t:disabled-date=\"disabledDate\"\n\t\t\t\t\t\t@update:value=\"onExpirationChange\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Enter a date') }}\n\t\t\t\t\t</ActionInput>\n\n\t\t\t\t\t<!-- note -->\n\t\t\t\t\t<ActionCheckbox :checked.sync=\"hasNote\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t@uncheck=\"queueUpdate('note')\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Note to recipient') }}\n\t\t\t\t\t</ActionCheckbox>\n\t\t\t\t\t<ActionTextEditable v-if=\"hasNote\"\n\t\t\t\t\t\tref=\"note\"\n\t\t\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\t\t\tcontent: errors.note,\n\t\t\t\t\t\t\tshow: errors.note,\n\t\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\t:class=\"{ error: errors.note}\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:placeholder=\"t('files_sharing', 'Enter a note for the share recipient')\"\n\t\t\t\t\t\t:value=\"share.newNote || share.note\"\n\t\t\t\t\t\ticon=\"icon-edit\"\n\t\t\t\t\t\t@update:value=\"onNoteChange\"\n\t\t\t\t\t\t@submit=\"onNoteSubmit\" />\n\t\t\t\t</template>\n\n\t\t\t\t<ActionSeparator />\n\n\t\t\t\t<!-- external actions -->\n\t\t\t\t<ExternalShareAction v-for=\"action in externalLinkActions\"\n\t\t\t\t\t:id=\"action.id\"\n\t\t\t\t\t:key=\"action.id\"\n\t\t\t\t\t:action=\"action\"\n\t\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t\t:share=\"share\" />\n\n\t\t\t\t<!-- external legacy sharing via url (social...) -->\n\t\t\t\t<ActionLink v-for=\"({icon, url, name}, index) in externalLegacyLinkActions\"\n\t\t\t\t\t:key=\"index\"\n\t\t\t\t\t:href=\"url(shareLink)\"\n\t\t\t\t\t:icon=\"icon\"\n\t\t\t\t\ttarget=\"_blank\">\n\t\t\t\t\t{{ name }}\n\t\t\t\t</ActionLink>\n\n\t\t\t\t<ActionButton v-if=\"share.canDelete\"\n\t\t\t\t\ticon=\"icon-close\"\n\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t@click.prevent=\"onDelete\">\n\t\t\t\t\t{{ t('files_sharing', 'Unshare') }}\n\t\t\t\t</ActionButton>\n\t\t\t\t<ActionButton v-if=\"!isEmailShareType && canReshare\"\n\t\t\t\t\tclass=\"new-share-link\"\n\t\t\t\t\ticon=\"icon-add\"\n\t\t\t\t\t@click.prevent.stop=\"onNewLinkShare\">\n\t\t\t\t\t{{ t('files_sharing', 'Add another link') }}\n\t\t\t\t</ActionButton>\n\t\t\t</template>\n\n\t\t\t<!-- Create new share -->\n\t\t\t<ActionButton v-else-if=\"canReshare\"\n\t\t\t\tclass=\"new-share-link\"\n\t\t\t\t:icon=\"loading ? 'icon-loading-small' : 'icon-add'\"\n\t\t\t\t@click.prevent.stop=\"onNewLinkShare\">\n\t\t\t\t{{ t('files_sharing', 'Create a new share link') }}\n\t\t\t</ActionButton>\n\t\t</Actions>\n\n\t\t<!-- loading indicator to replace the menu -->\n\t\t<div v-else class=\"icon-loading-small sharing-entry__loading\" />\n\t</li>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { Type as ShareTypes } from '@nextcloud/sharing'\nimport Vue from 'vue'\n\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport ActionCheckbox from '@nextcloud/vue/dist/Components/ActionCheckbox'\nimport ActionInput from '@nextcloud/vue/dist/Components/ActionInput'\nimport ActionLink from '@nextcloud/vue/dist/Components/ActionLink'\nimport ActionText from '@nextcloud/vue/dist/Components/ActionText'\nimport ActionSeparator from '@nextcloud/vue/dist/Components/ActionSeparator'\nimport ActionTextEditable from '@nextcloud/vue/dist/Components/ActionTextEditable'\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport Avatar from '@nextcloud/vue/dist/Components/Avatar'\nimport Tooltip from '@nextcloud/vue/dist/Directives/Tooltip'\n\nimport ExternalShareAction from './ExternalShareAction'\nimport SharePermissionsEditor from './SharePermissionsEditor'\nimport GeneratePassword from '../utils/GeneratePassword'\nimport Share from '../models/Share'\nimport SharesMixin from '../mixins/SharesMixin'\n\nexport default {\n\tname: 'SharingEntryLink',\n\n\tcomponents: {\n\t\tActions,\n\t\tActionButton,\n\t\tActionCheckbox,\n\t\tActionInput,\n\t\tActionLink,\n\t\tActionText,\n\t\tActionTextEditable,\n\t\tActionSeparator,\n\t\tAvatar,\n\t\tExternalShareAction,\n\t\tSharePermissionsEditor,\n\t},\n\n\tdirectives: {\n\t\tTooltip,\n\t},\n\n\tmixins: [SharesMixin],\n\n\tprops: {\n\t\tcanReshare: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tcopySuccess: true,\n\t\t\tcopied: false,\n\n\t\t\t// Are we waiting for password/expiration date\n\t\t\tpending: false,\n\n\t\t\tExternalLegacyLinkActions: OCA.Sharing.ExternalLinkActions.state,\n\t\t\tExternalShareActions: OCA.Sharing.ExternalShareActions.state,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Link share label\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\ttitle() {\n\t\t\t// if we have a valid existing share (not pending)\n\t\t\tif (this.share && this.share.id) {\n\t\t\t\tif (!this.isShareOwner && this.share.ownerDisplayName) {\n\t\t\t\t\tif (this.isEmailShareType) {\n\t\t\t\t\t\treturn t('files_sharing', '{shareWith} by {initiator}', {\n\t\t\t\t\t\t\tshareWith: this.share.shareWith,\n\t\t\t\t\t\t\tinitiator: this.share.ownerDisplayName,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\treturn t('files_sharing', 'Shared via link by {initiator}', {\n\t\t\t\t\t\tinitiator: this.share.ownerDisplayName,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (this.share.label && this.share.label.trim() !== '') {\n\t\t\t\t\tif (this.isEmailShareType) {\n\t\t\t\t\t\treturn t('files_sharing', 'Mail share ({label})', {\n\t\t\t\t\t\t\tlabel: this.share.label.trim(),\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\treturn t('files_sharing', 'Share link ({label})', {\n\t\t\t\t\t\tlabel: this.share.label.trim(),\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (this.isEmailShareType) {\n\t\t\t\t\treturn this.share.shareWith\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Share link')\n\t\t},\n\n\t\t/**\n\t\t * Show the email on a second line if a label is set for mail shares\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tsubtitle() {\n\t\t\tif (this.isEmailShareType\n\t\t\t\t&& this.title !== this.share.shareWith) {\n\t\t\t\treturn this.share.shareWith\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\t/**\n\t\t * Does the current share have an expiration date\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasExpirationDate: {\n\t\t\tget() {\n\t\t\t\treturn this.config.isDefaultExpireDateEnforced\n\t\t\t\t\t|| !!this.share.expireDate\n\t\t\t},\n\t\t\tset(enabled) {\n\t\t\t\tlet dateString = moment(this.config.defaultExpirationDateString)\n\t\t\t\tif (!dateString.isValid()) {\n\t\t\t\t\tdateString = moment()\n\t\t\t\t}\n\t\t\t\tthis.share.state.expiration = enabled\n\t\t\t\t\t? dateString.format('YYYY-MM-DD')\n\t\t\t\t\t: ''\n\t\t\t\tconsole.debug('Expiration date status', enabled, this.share.expireDate)\n\t\t\t},\n\t\t},\n\n\t\tdateMaxEnforced() {\n\t\t\treturn this.config.isDefaultExpireDateEnforced\n\t\t\t\t&& moment().add(1 + this.config.defaultExpireDate, 'days')\n\t\t},\n\n\t\t/**\n\t\t * Is the current share password protected ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisPasswordProtected: {\n\t\t\tget() {\n\t\t\t\treturn this.config.enforcePasswordForPublicLink\n\t\t\t\t\t|| !!this.share.password\n\t\t\t},\n\t\t\tasync set(enabled) {\n\t\t\t\t// TODO: directly save after generation to make sure the share is always protected\n\t\t\t\tVue.set(this.share, 'password', enabled ? await GeneratePassword() : '')\n\t\t\t\tVue.set(this.share, 'newPassword', this.share.password)\n\t\t\t},\n\t\t},\n\n\t\tpasswordExpirationTime() {\n\t\t\tif (this.share.passwordExpirationTime === null) {\n\t\t\t\treturn null\n\t\t\t}\n\n\t\t\tconst expirationTime = moment(this.share.passwordExpirationTime)\n\n\t\t\tif (expirationTime.diff(moment()) < 0) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\treturn expirationTime.fromNow()\n\t\t},\n\n\t\t/**\n\t\t * Is Talk enabled?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisTalkEnabled() {\n\t\t\treturn OC.appswebroots.spreed !== undefined\n\t\t},\n\n\t\t/**\n\t\t * Is it possible to protect the password by Talk?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisPasswordProtectedByTalkAvailable() {\n\t\t\treturn this.isPasswordProtected && this.isTalkEnabled\n\t\t},\n\n\t\t/**\n\t\t * Is the current share password protected by Talk?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisPasswordProtectedByTalk: {\n\t\t\tget() {\n\t\t\t\treturn this.share.sendPasswordByTalk\n\t\t\t},\n\t\t\tasync set(enabled) {\n\t\t\t\tthis.share.sendPasswordByTalk = enabled\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Is the current share an email share ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisEmailShareType() {\n\t\t\treturn this.share\n\t\t\t\t? this.share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL\n\t\t\t\t: false\n\t\t},\n\n\t\tcanTogglePasswordProtectedByTalkAvailable() {\n\t\t\tif (!this.isPasswordProtected) {\n\t\t\t\t// Makes no sense\n\t\t\t\treturn false\n\t\t\t} else if (this.isEmailShareType && !this.hasUnsavedPassword) {\n\t\t\t\t// For email shares we need a new password in order to enable or\n\t\t\t\t// disable\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\t// Anything else should be fine\n\t\t\treturn true\n\t\t},\n\n\t\t/**\n\t\t * Pending data.\n\t\t * If the share still doesn't have an id, it is not synced\n\t\t * Therefore this is still not valid and requires user input\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tpendingPassword() {\n\t\t\treturn this.config.enforcePasswordForPublicLink && this.share && !this.share.id\n\t\t},\n\t\tpendingExpirationDate() {\n\t\t\treturn this.config.isDefaultExpireDateEnforced && this.share && !this.share.id\n\t\t},\n\n\t\t// if newPassword exists, but is empty, it means\n\t\t// the user deleted the original password\n\t\thasUnsavedPassword() {\n\t\t\treturn this.share.newPassword !== undefined\n\t\t},\n\n\t\t/**\n\t\t * Return the public share link\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tshareLink() {\n\t\t\treturn window.location.protocol + '//' + window.location.host + generateUrl('/s/') + this.share.token\n\t\t},\n\n\t\t/**\n\t\t * Clipboard v-tooltip message\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tclipboardTooltip() {\n\t\t\tif (this.copied) {\n\t\t\t\treturn this.copySuccess\n\t\t\t\t\t? t('files_sharing', 'Link copied')\n\t\t\t\t\t: t('files_sharing', 'Cannot copy, please copy the link manually')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Copy to clipboard')\n\t\t},\n\n\t\t/**\n\t\t * External additionnai actions for the menu\n\t\t *\n\t\t * @deprecated use OCA.Sharing.ExternalShareActions\n\t\t * @return {Array}\n\t\t */\n\t\texternalLegacyLinkActions() {\n\t\t\treturn this.ExternalLegacyLinkActions.actions\n\t\t},\n\n\t\t/**\n\t\t * Additional actions for the menu\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\texternalLinkActions() {\n\t\t\t// filter only the registered actions for said link\n\t\t\treturn this.ExternalShareActions.actions\n\t\t\t\t.filter(action => action.shareType.includes(ShareTypes.SHARE_TYPE_LINK)\n\t\t\t\t\t|| action.shareType.includes(ShareTypes.SHARE_TYPE_EMAIL))\n\t\t},\n\n\t\tisPasswordPolicyEnabled() {\n\t\t\treturn typeof this.config.passwordPolicy === 'object'\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Create a new share link and append it to the list\n\t\t */\n\t\tasync onNewLinkShare() {\n\t\t\t// do not run again if already loading\n\t\t\tif (this.loading) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst shareDefaults = {\n\t\t\t\tshare_type: ShareTypes.SHARE_TYPE_LINK,\n\t\t\t}\n\t\t\tif (this.config.isDefaultExpireDateEnforced) {\n\t\t\t\t// default is empty string if not set\n\t\t\t\t// expiration is the share object key, not expireDate\n\t\t\t\tshareDefaults.expiration = this.config.defaultExpirationDateString\n\t\t\t}\n\t\t\tif (this.config.enableLinkPasswordByDefault) {\n\t\t\t\tshareDefaults.password = await GeneratePassword()\n\t\t\t}\n\n\t\t\t// do not push yet if we need a password or an expiration date: show pending menu\n\t\t\tif (this.config.enforcePasswordForPublicLink || this.config.isDefaultExpireDateEnforced) {\n\t\t\t\tthis.pending = true\n\n\t\t\t\t// if a share already exists, pushing it\n\t\t\t\tif (this.share && !this.share.id) {\n\t\t\t\t\t// if the share is valid, create it on the server\n\t\t\t\t\tif (this.checkShare(this.share)) {\n\t\t\t\t\t\tawait this.pushNewLinkShare(this.share, true)\n\t\t\t\t\t\treturn true\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.open = true\n\t\t\t\t\t\tOC.Notification.showTemporary(t('files_sharing', 'Error, please enter proper password and/or expiration date'))\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// ELSE, show the pending popovermenu\n\t\t\t\t// if password enforced, pre-fill with random one\n\t\t\t\tif (this.config.enforcePasswordForPublicLink) {\n\t\t\t\t\tshareDefaults.password = await GeneratePassword()\n\t\t\t\t}\n\n\t\t\t\t// create share & close menu\n\t\t\t\tconst share = new Share(shareDefaults)\n\t\t\t\tconst component = await new Promise(resolve => {\n\t\t\t\t\tthis.$emit('add:share', share, resolve)\n\t\t\t\t})\n\n\t\t\t\t// open the menu on the\n\t\t\t\t// freshly created share component\n\t\t\t\tthis.open = false\n\t\t\t\tthis.pending = false\n\t\t\t\tcomponent.open = true\n\n\t\t\t// Nothing is enforced, creating share directly\n\t\t\t} else {\n\t\t\t\tconst share = new Share(shareDefaults)\n\t\t\t\tawait this.pushNewLinkShare(share)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Push a new link share to the server\n\t\t * And update or append to the list\n\t\t * accordingly\n\t\t *\n\t\t * @param {Share} share the new share\n\t\t * @param {boolean} [update=false] do we update the current share ?\n\t\t */\n\t\tasync pushNewLinkShare(share, update) {\n\t\t\ttry {\n\t\t\t\t// do nothing if we're already pending creation\n\t\t\t\tif (this.loading) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\n\t\t\t\tthis.loading = true\n\t\t\t\tthis.errors = {}\n\n\t\t\t\tconst path = (this.fileInfo.path + '/' + this.fileInfo.name).replace('//', '/')\n\t\t\t\tconst newShare = await this.createShare({\n\t\t\t\t\tpath,\n\t\t\t\t\tshareType: ShareTypes.SHARE_TYPE_LINK,\n\t\t\t\t\tpassword: share.password,\n\t\t\t\t\texpireDate: share.expireDate,\n\t\t\t\t\t// we do not allow setting the publicUpload\n\t\t\t\t\t// before the share creation.\n\t\t\t\t\t// Todo: We also need to fix the createShare method in\n\t\t\t\t\t// lib/Controller/ShareAPIController.php to allow file drop\n\t\t\t\t\t// (currently not supported on create, only update)\n\t\t\t\t})\n\n\t\t\t\tthis.open = false\n\n\t\t\t\tconsole.debug('Link share created', newShare)\n\n\t\t\t\t// if share already exists, copy link directly on next tick\n\t\t\t\tlet component\n\t\t\t\tif (update) {\n\t\t\t\t\tcomponent = await new Promise(resolve => {\n\t\t\t\t\t\tthis.$emit('update:share', newShare, resolve)\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\t// adding new share to the array and copying link to clipboard\n\t\t\t\t\t// using promise so that we can copy link in the same click function\n\t\t\t\t\t// and avoid firefox copy permissions issue\n\t\t\t\t\tcomponent = await new Promise(resolve => {\n\t\t\t\t\t\tthis.$emit('add:share', newShare, resolve)\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\t// Execute the copy link method\n\t\t\t\t// freshly created share component\n\t\t\t\t// ! somehow does not works on firefox !\n\t\t\t\tif (!this.config.enforcePasswordForPublicLink) {\n\t\t\t\t\t// Only copy the link when the password was not forced,\n\t\t\t\t\t// otherwise the user needs to copy/paste the password before finishing the share.\n\t\t\t\t\tcomponent.copyLink()\n\t\t\t\t}\n\n\t\t\t} catch ({ response }) {\n\t\t\t\tconst message = response.data.ocs.meta.message\n\t\t\t\tif (message.match(/password/i)) {\n\t\t\t\t\tthis.onSyncError('password', message)\n\t\t\t\t} else if (message.match(/date/i)) {\n\t\t\t\t\tthis.onSyncError('expireDate', message)\n\t\t\t\t} else {\n\t\t\t\t\tthis.onSyncError('pending', message)\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Label changed, let's save it to a different key\n\t\t *\n\t\t * @param {string} label the share label\n\t\t */\n\t\tonLabelChange(label) {\n\t\t\tthis.$set(this.share, 'newLabel', label.trim())\n\t\t},\n\n\t\t/**\n\t\t * When the note change, we trim, save and dispatch\n\t\t */\n\t\tonLabelSubmit() {\n\t\t\tif (typeof this.share.newLabel === 'string') {\n\t\t\t\tthis.share.label = this.share.newLabel\n\t\t\t\tthis.$delete(this.share, 'newLabel')\n\t\t\t\tthis.queueUpdate('label')\n\t\t\t}\n\t\t},\n\t\tasync copyLink() {\n\t\t\ttry {\n\t\t\t\tawait this.$copyText(this.shareLink)\n\t\t\t\t// focus and show the tooltip\n\t\t\t\tthis.$refs.copyButton.$el.focus()\n\t\t\t\tthis.copySuccess = true\n\t\t\t\tthis.copied = true\n\t\t\t} catch (error) {\n\t\t\t\tthis.copySuccess = false\n\t\t\t\tthis.copied = true\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.copySuccess = false\n\t\t\t\t\tthis.copied = false\n\t\t\t\t}, 4000)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Update newPassword values\n\t\t * of share. If password is set but not newPassword\n\t\t * then the user did not changed the password\n\t\t * If both co-exists, the password have changed and\n\t\t * we show it in plain text.\n\t\t * Then on submit (or menu close), we sync it.\n\t\t *\n\t\t * @param {string} password the changed password\n\t\t */\n\t\tonPasswordChange(password) {\n\t\t\tthis.$set(this.share, 'newPassword', password)\n\t\t},\n\n\t\t/**\n\t\t * Uncheck password protection\n\t\t * We need this method because @update:checked\n\t\t * is ran simultaneously as @uncheck, so we\n\t\t * cannot ensure data is up-to-date\n\t\t */\n\t\tonPasswordDisable() {\n\t\t\tthis.share.password = ''\n\n\t\t\t// reset password state after sync\n\t\t\tthis.$delete(this.share, 'newPassword')\n\n\t\t\t// only update if valid share.\n\t\t\tif (this.share.id) {\n\t\t\t\tthis.queueUpdate('password')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Menu have been closed or password has been submited.\n\t\t * The only property that does not get\n\t\t * synced automatically is the password\n\t\t * So let's check if we have an unsaved\n\t\t * password.\n\t\t * expireDate is saved on datepicker pick\n\t\t * or close.\n\t\t */\n\t\tonPasswordSubmit() {\n\t\t\tif (this.hasUnsavedPassword) {\n\t\t\t\tthis.share.password = this.share.newPassword.trim()\n\t\t\t\tthis.queueUpdate('password')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Update the password along with \"sendPasswordByTalk\".\n\t\t *\n\t\t * If the password was modified the new password is sent; otherwise\n\t\t * updating a mail share would fail, as in that case it is required that\n\t\t * a new password is set when enabling or disabling\n\t\t * \"sendPasswordByTalk\".\n\t\t */\n\t\tonPasswordProtectedByTalkChange() {\n\t\t\tif (this.hasUnsavedPassword) {\n\t\t\t\tthis.share.password = this.share.newPassword.trim()\n\t\t\t}\n\n\t\t\tthis.queueUpdate('sendPasswordByTalk', 'password')\n\t\t},\n\n\t\t/**\n\t\t * Save potential changed data on menu close\n\t\t */\n\t\tonMenuClose() {\n\t\t\tthis.onPasswordSubmit()\n\t\t\tthis.onNoteSubmit()\n\t\t},\n\n\t\t/**\n\t\t * Cancel the share creation\n\t\t * Used in the pending popover\n\t\t */\n\t\tonCancel() {\n\t\t\t// this.share already exists at this point,\n\t\t\t// but is incomplete as not pushed to server\n\t\t\t// YET. We can safely delete the share :)\n\t\t\tthis.$emit('remove:share', this.share)\n\t\t},\n\t},\n\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\toverflow: hidden;\n\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__title {\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t}\n\n\t&:not(.sharing-entry--share) &__actions {\n\t\t.new-share-link {\n\t\t\tborder-top: 1px solid var(--color-border);\n\t\t}\n\t}\n\n\t::v-deep .avatar-link-share {\n\t\tbackground-color: var(--color-primary);\n\t}\n\n\t.sharing-entry__action--public-upload {\n\t\tborder-bottom: 1px solid var(--color-border);\n\t}\n\n\t&__loading {\n\t\twidth: 44px;\n\t\theight: 44px;\n\t\tmargin: 0;\n\t\tpadding: 14px;\n\t\tmargin-left: auto;\n\t}\n\n\t// put menus to the left\n\t// but only the first one\n\t.action-item {\n\t\tmargin-left: auto;\n\t\t~ .action-item,\n\t\t~ .sharing-entry__loading {\n\t\t\tmargin-left: 0;\n\t\t}\n\t}\n\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryLink.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryLink.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryLink.vue?vue&type=style&index=0&id=16656e50&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryLink.vue?vue&type=style&index=0&id=16656e50&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntryLink.vue?vue&type=template&id=16656e50&scoped=true&\"\nimport script from \"./SharingEntryLink.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntryLink.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntryLink.vue?vue&type=style&index=0&id=16656e50&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"16656e50\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{staticClass:\"sharing-entry sharing-entry__link\",class:{'sharing-entry--share': _vm.share}},[_c('Avatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"is-no-user\":true,\"icon-class\":_vm.isEmailShareType ? 'avatar-link-share icon-mail-white' : 'avatar-link-share icon-public-white'}}),_vm._v(\" \"),_c('div',{staticClass:\"sharing-entry__desc\"},[_c('span',{staticClass:\"sharing-entry__title\",attrs:{\"title\":_vm.title}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.title)+\"\\n\\t\\t\")]),_vm._v(\" \"),(_vm.subtitle)?_c('p',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.subtitle)+\"\\n\\t\\t\")]):_vm._e()]),_vm._v(\" \"),(_vm.share && !_vm.isEmailShareType && _vm.share.token)?_c('Actions',{ref:\"copyButton\",staticClass:\"sharing-entry__copy\"},[_c('ActionLink',{attrs:{\"href\":_vm.shareLink,\"target\":\"_blank\",\"icon\":_vm.copied && _vm.copySuccess ? 'icon-checkmark-color' : 'icon-clippy'},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.copyLink.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.clipboardTooltip)+\"\\n\\t\\t\")])],1):_vm._e(),_vm._v(\" \"),(!_vm.pending && (_vm.pendingPassword || _vm.pendingExpirationDate))?_c('Actions',{staticClass:\"sharing-entry__actions\",attrs:{\"menu-align\":\"right\",\"open\":_vm.open},on:{\"update:open\":function($event){_vm.open=$event},\"close\":_vm.onNewLinkShare}},[(_vm.errors.pending)?_c('ActionText',{class:{ error: _vm.errors.pending},attrs:{\"icon\":\"icon-error\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.errors.pending)+\"\\n\\t\\t\")]):_c('ActionText',{attrs:{\"icon\":\"icon-info\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Please enter the following required information before creating the share'))+\"\\n\\t\\t\")]),_vm._v(\" \"),(_vm.pendingPassword)?_c('ActionText',{attrs:{\"icon\":\"icon-password\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password protection (enforced)'))+\"\\n\\t\\t\")]):(_vm.config.enableLinkPasswordByDefault)?_c('ActionCheckbox',{staticClass:\"share-link-password-checkbox\",attrs:{\"checked\":_vm.isPasswordProtected,\"disabled\":_vm.config.enforcePasswordForPublicLink || _vm.saving},on:{\"update:checked\":function($event){_vm.isPasswordProtected=$event},\"uncheck\":_vm.onPasswordDisable}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password protection'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.pendingPassword || _vm.share.password)?_c('ActionInput',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\tcontent: _vm.errors.password,\n\t\t\t\tshow: _vm.errors.password,\n\t\t\t\ttrigger: 'manual',\n\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t}),expression:\"{\\n\\t\\t\\t\\tcontent: errors.password,\\n\\t\\t\\t\\tshow: errors.password,\\n\\t\\t\\t\\ttrigger: 'manual',\\n\\t\\t\\t\\tdefaultContainer: '#app-sidebar'\\n\\t\\t\\t}\",modifiers:{\"auto\":true}}],staticClass:\"share-link-password\",attrs:{\"value\":_vm.share.password,\"disabled\":_vm.saving,\"required\":_vm.config.enableLinkPasswordByDefault || _vm.config.enforcePasswordForPublicLink,\"minlength\":_vm.isPasswordPolicyEnabled && _vm.config.passwordPolicy.minLength,\"icon\":\"\",\"autocomplete\":\"new-password\"},on:{\"update:value\":function($event){return _vm.$set(_vm.share, \"password\", $event)},\"submit\":_vm.onNewLinkShare}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a password'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.pendingExpirationDate)?_c('ActionText',{attrs:{\"icon\":\"icon-calendar-dark\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Expiration date (enforced)'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.pendingExpirationDate)?_c('ActionInput',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\tcontent: _vm.errors.expireDate,\n\t\t\t\tshow: _vm.errors.expireDate,\n\t\t\t\ttrigger: 'manual',\n\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t}),expression:\"{\\n\\t\\t\\t\\tcontent: errors.expireDate,\\n\\t\\t\\t\\tshow: errors.expireDate,\\n\\t\\t\\t\\ttrigger: 'manual',\\n\\t\\t\\t\\tdefaultContainer: '#app-sidebar'\\n\\t\\t\\t}\",modifiers:{\"auto\":true}}],staticClass:\"share-link-expire-date\",attrs:{\"disabled\":_vm.saving,\"lang\":_vm.lang,\"icon\":\"\",\"type\":\"date\",\"value-type\":\"format\",\"disabled-date\":_vm.disabledDate},model:{value:(_vm.share.expireDate),callback:function ($$v) {_vm.$set(_vm.share, \"expireDate\", $$v)},expression:\"share.expireDate\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a date'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('ActionButton',{attrs:{\"icon\":\"icon-checkmark\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onNewLinkShare.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Create share'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('ActionButton',{attrs:{\"icon\":\"icon-close\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onCancel.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Cancel'))+\"\\n\\t\\t\")])],1):(!_vm.loading)?_c('Actions',{staticClass:\"sharing-entry__actions\",attrs:{\"menu-align\":\"right\",\"open\":_vm.open},on:{\"update:open\":function($event){_vm.open=$event},\"close\":_vm.onMenuClose}},[(_vm.share)?[(_vm.share.canEdit && _vm.canReshare)?[_c('ActionInput',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\t\t\tcontent: _vm.errors.label,\n\t\t\t\t\t\tshow: _vm.errors.label,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '.app-sidebar'\n\t\t\t\t\t}),expression:\"{\\n\\t\\t\\t\\t\\t\\tcontent: errors.label,\\n\\t\\t\\t\\t\\t\\tshow: errors.label,\\n\\t\\t\\t\\t\\t\\ttrigger: 'manual',\\n\\t\\t\\t\\t\\t\\tdefaultContainer: '.app-sidebar'\\n\\t\\t\\t\\t\\t}\",modifiers:{\"auto\":true}}],ref:\"label\",class:{ error: _vm.errors.label },attrs:{\"disabled\":_vm.saving,\"aria-label\":_vm.t('files_sharing', 'Share label'),\"value\":_vm.share.newLabel !== undefined ? _vm.share.newLabel : _vm.share.label,\"icon\":\"icon-edit\",\"maxlength\":\"255\"},on:{\"update:value\":_vm.onLabelChange,\"submit\":_vm.onLabelSubmit}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Share label'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('SharePermissionsEditor',{attrs:{\"can-reshare\":_vm.canReshare,\"share\":_vm.share,\"file-info\":_vm.fileInfo},on:{\"update:share\":function($event){_vm.share=$event}}}),_vm._v(\" \"),_c('ActionSeparator'),_vm._v(\" \"),_c('ActionCheckbox',{attrs:{\"checked\":_vm.share.hideDownload,\"disabled\":_vm.saving},on:{\"update:checked\":function($event){return _vm.$set(_vm.share, \"hideDownload\", $event)},\"change\":function($event){return _vm.queueUpdate('hideDownload')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Hide download'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionCheckbox',{staticClass:\"share-link-password-checkbox\",attrs:{\"checked\":_vm.isPasswordProtected,\"disabled\":_vm.config.enforcePasswordForPublicLink || _vm.saving},on:{\"update:checked\":function($event){_vm.isPasswordProtected=$event},\"uncheck\":_vm.onPasswordDisable}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.config.enforcePasswordForPublicLink\n\t\t\t\t\t\t? _vm.t('files_sharing', 'Password protection (enforced)')\n\t\t\t\t\t\t: _vm.t('files_sharing', 'Password protect'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.isPasswordProtected)?_c('ActionInput',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\t\t\tcontent: _vm.errors.password,\n\t\t\t\t\t\tshow: _vm.errors.password,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t}),expression:\"{\\n\\t\\t\\t\\t\\t\\tcontent: errors.password,\\n\\t\\t\\t\\t\\t\\tshow: errors.password,\\n\\t\\t\\t\\t\\t\\ttrigger: 'manual',\\n\\t\\t\\t\\t\\t\\tdefaultContainer: '#app-sidebar'\\n\\t\\t\\t\\t\\t}\",modifiers:{\"auto\":true}}],ref:\"password\",staticClass:\"share-link-password\",class:{ error: _vm.errors.password},attrs:{\"disabled\":_vm.saving,\"required\":_vm.config.enforcePasswordForPublicLink,\"value\":_vm.hasUnsavedPassword ? _vm.share.newPassword : '***************',\"icon\":\"icon-password\",\"autocomplete\":\"new-password\",\"type\":_vm.hasUnsavedPassword ? 'text': 'password'},on:{\"update:value\":_vm.onPasswordChange,\"submit\":_vm.onPasswordSubmit}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a password'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isEmailShareType && _vm.passwordExpirationTime)?_c('ActionText',{attrs:{\"icon\":\"icon-info\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password expires {passwordExpirationTime}', {passwordExpirationTime: _vm.passwordExpirationTime}))+\"\\n\\t\\t\\t\\t\")]):(_vm.isEmailShareType && _vm.passwordExpirationTime !== null)?_c('ActionText',{attrs:{\"icon\":\"icon-error\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password expired'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isPasswordProtectedByTalkAvailable)?_c('ActionCheckbox',{staticClass:\"share-link-password-talk-checkbox\",attrs:{\"checked\":_vm.isPasswordProtectedByTalk,\"disabled\":!_vm.canTogglePasswordProtectedByTalkAvailable || _vm.saving},on:{\"update:checked\":function($event){_vm.isPasswordProtectedByTalk=$event},\"change\":_vm.onPasswordProtectedByTalkChange}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Video verification'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('ActionCheckbox',{staticClass:\"share-link-expire-date-checkbox\",attrs:{\"checked\":_vm.hasExpirationDate,\"disabled\":_vm.config.isDefaultExpireDateEnforced || _vm.saving},on:{\"update:checked\":function($event){_vm.hasExpirationDate=$event},\"uncheck\":_vm.onExpirationDisable}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.config.isDefaultExpireDateEnforced\n\t\t\t\t\t\t? _vm.t('files_sharing', 'Expiration date (enforced)')\n\t\t\t\t\t\t: _vm.t('files_sharing', 'Set expiration date'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.hasExpirationDate)?_c('ActionInput',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\t\t\tcontent: _vm.errors.expireDate,\n\t\t\t\t\t\tshow: _vm.errors.expireDate,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t}),expression:\"{\\n\\t\\t\\t\\t\\t\\tcontent: errors.expireDate,\\n\\t\\t\\t\\t\\t\\tshow: errors.expireDate,\\n\\t\\t\\t\\t\\t\\ttrigger: 'manual',\\n\\t\\t\\t\\t\\t\\tdefaultContainer: '#app-sidebar'\\n\\t\\t\\t\\t\\t}\",modifiers:{\"auto\":true}}],ref:\"expireDate\",staticClass:\"share-link-expire-date\",class:{ error: _vm.errors.expireDate},attrs:{\"disabled\":_vm.saving,\"lang\":_vm.lang,\"value\":_vm.share.expireDate,\"value-type\":\"format\",\"icon\":\"icon-calendar-dark\",\"type\":\"date\",\"disabled-date\":_vm.disabledDate},on:{\"update:value\":_vm.onExpirationChange}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a date'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('ActionCheckbox',{attrs:{\"checked\":_vm.hasNote,\"disabled\":_vm.saving},on:{\"update:checked\":function($event){_vm.hasNote=$event},\"uncheck\":function($event){return _vm.queueUpdate('note')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Note to recipient'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.hasNote)?_c('ActionTextEditable',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\t\t\tcontent: _vm.errors.note,\n\t\t\t\t\t\tshow: _vm.errors.note,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t}),expression:\"{\\n\\t\\t\\t\\t\\t\\tcontent: errors.note,\\n\\t\\t\\t\\t\\t\\tshow: errors.note,\\n\\t\\t\\t\\t\\t\\ttrigger: 'manual',\\n\\t\\t\\t\\t\\t\\tdefaultContainer: '#app-sidebar'\\n\\t\\t\\t\\t\\t}\",modifiers:{\"auto\":true}}],ref:\"note\",class:{ error: _vm.errors.note},attrs:{\"disabled\":_vm.saving,\"placeholder\":_vm.t('files_sharing', 'Enter a note for the share recipient'),\"value\":_vm.share.newNote || _vm.share.note,\"icon\":\"icon-edit\"},on:{\"update:value\":_vm.onNoteChange,\"submit\":_vm.onNoteSubmit}}):_vm._e()]:_vm._e(),_vm._v(\" \"),_c('ActionSeparator'),_vm._v(\" \"),_vm._l((_vm.externalLinkActions),function(action){return _c('ExternalShareAction',{key:action.id,attrs:{\"id\":action.id,\"action\":action,\"file-info\":_vm.fileInfo,\"share\":_vm.share}})}),_vm._v(\" \"),_vm._l((_vm.externalLegacyLinkActions),function(ref,index){\n\t\t\t\t\tvar icon = ref.icon;\n\t\t\t\t\tvar url = ref.url;\n\t\t\t\t\tvar name = ref.name;\nreturn _c('ActionLink',{key:index,attrs:{\"href\":url(_vm.shareLink),\"icon\":icon,\"target\":\"_blank\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(name)+\"\\n\\t\\t\\t\")])}),_vm._v(\" \"),(_vm.share.canDelete)?_c('ActionButton',{attrs:{\"icon\":\"icon-close\",\"disabled\":_vm.saving},on:{\"click\":function($event){$event.preventDefault();return _vm.onDelete.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Unshare'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(!_vm.isEmailShareType && _vm.canReshare)?_c('ActionButton',{staticClass:\"new-share-link\",attrs:{\"icon\":\"icon-add\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onNewLinkShare.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Add another link'))+\"\\n\\t\\t\\t\")]):_vm._e()]:(_vm.canReshare)?_c('ActionButton',{staticClass:\"new-share-link\",attrs:{\"icon\":_vm.loading ? 'icon-loading-small' : 'icon-add'},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onNewLinkShare.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Create a new share link'))+\"\\n\\t\\t\")]):_vm._e()],2):_c('div',{staticClass:\"icon-loading-small sharing-entry__loading\"})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingLinkList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingLinkList.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<ul v-if=\"canLinkShare\" class=\"sharing-link-list\">\n\t\t<!-- If no link shares, show the add link default entry -->\n\t\t<SharingEntryLink v-if=\"!hasLinkShares && canReshare\"\n\t\t\t:can-reshare=\"canReshare\"\n\t\t\t:file-info=\"fileInfo\"\n\t\t\t@add:share=\"addShare\" />\n\n\t\t<!-- Else we display the list -->\n\t\t<template v-if=\"hasShares\">\n\t\t\t<!-- using shares[index] to work with .sync -->\n\t\t\t<SharingEntryLink v-for=\"(share, index) in shares\"\n\t\t\t\t:key=\"share.id\"\n\t\t\t\t:can-reshare=\"canReshare\"\n\t\t\t\t:share.sync=\"shares[index]\"\n\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t@add:share=\"addShare(...arguments)\"\n\t\t\t\t@update:share=\"awaitForShare(...arguments)\"\n\t\t\t\t@remove:share=\"removeShare\" />\n\t\t</template>\n\t</ul>\n</template>\n\n<script>\n// eslint-disable-next-line no-unused-vars\nimport Share from '../models/Share'\nimport ShareTypes from '../mixins/ShareTypes'\nimport SharingEntryLink from '../components/SharingEntryLink'\n\nexport default {\n\tname: 'SharingLinkList',\n\n\tcomponents: {\n\t\tSharingEntryLink,\n\t},\n\n\tmixins: [ShareTypes],\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\tshares: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\trequired: true,\n\t\t},\n\t\tcanReshare: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tcanLinkShare: OC.getCapabilities().files_sharing.public.enabled,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Do we have link shares?\n\t\t * Using this to still show the `new link share`\n\t\t * button regardless of mail shares\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\thasLinkShares() {\n\t\t\treturn this.shares.filter(share => share.type === this.SHARE_TYPES.SHARE_TYPE_LINK).length > 0\n\t\t},\n\n\t\t/**\n\t\t * Do we have any link or email shares?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasShares() {\n\t\t\treturn this.shares.length > 0\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Add a new share into the link shares list\n\t\t * and return the newly created share component\n\t\t *\n\t\t * @param {Share} share the share to add to the array\n\t\t * @param {Function} resolve a function to run after the share is added and its component initialized\n\t\t */\n\t\taddShare(share, resolve) {\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.shares.unshift(share)\n\t\t\tthis.awaitForShare(share, resolve)\n\t\t},\n\n\t\t/**\n\t\t * Await for next tick and render after the list updated\n\t\t * Then resolve with the matched vue component of the\n\t\t * provided share object\n\t\t *\n\t\t * @param {Share} share newly created share\n\t\t * @param {Function} resolve a function to execute after\n\t\t */\n\t\tawaitForShare(share, resolve) {\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tconst newShare = this.$children.find(component => component.share === share)\n\t\t\t\tif (newShare) {\n\t\t\t\t\tresolve(newShare)\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Remove a share from the shares list\n\t\t *\n\t\t * @param {Share} share the share to remove\n\t\t */\n\t\tremoveShare(share) {\n\t\t\tconst index = this.shares.findIndex(item => item === share)\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.shares.splice(index, 1)\n\t\t},\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./SharingLinkList.vue?vue&type=template&id=8be1a6a2&\"\nimport script from \"./SharingLinkList.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingLinkList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.canLinkShare)?_c('ul',{staticClass:\"sharing-link-list\"},[(!_vm.hasLinkShares && _vm.canReshare)?_c('SharingEntryLink',{attrs:{\"can-reshare\":_vm.canReshare,\"file-info\":_vm.fileInfo},on:{\"add:share\":_vm.addShare}}):_vm._e(),_vm._v(\" \"),(_vm.hasShares)?_vm._l((_vm.shares),function(share,index){return _c('SharingEntryLink',{key:share.id,attrs:{\"can-reshare\":_vm.canReshare,\"share\":_vm.shares[index],\"file-info\":_vm.fileInfo},on:{\"update:share\":[function($event){return _vm.$set(_vm.shares, index, $event)},function($event){return _vm.awaitForShare.apply(void 0, arguments)}],\"add:share\":function($event){return _vm.addShare.apply(void 0, arguments)},\"remove:share\":_vm.removeShare}})}):_vm._e()],2):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<li class=\"sharing-entry\">\n\t\t<Avatar class=\"sharing-entry__avatar\"\n\t\t\t:is-no-user=\"share.type !== SHARE_TYPES.SHARE_TYPE_USER\"\n\t\t\t:user=\"share.shareWith\"\n\t\t\t:display-name=\"share.shareWithDisplayName\"\n\t\t\t:tooltip-message=\"share.type === SHARE_TYPES.SHARE_TYPE_USER ? share.shareWith : ''\"\n\t\t\t:menu-position=\"'left'\"\n\t\t\t:url=\"share.shareWithAvatar\" />\n\t\t<component :is=\"share.shareWithLink ? 'a' : 'div'\"\n\t\t\tv-tooltip.auto=\"tooltip\"\n\t\t\t:href=\"share.shareWithLink\"\n\t\t\tclass=\"sharing-entry__desc\">\n\t\t\t<span>{{ title }}<span v-if=\"!isUnique\" class=\"sharing-entry__desc-unique\"> ({{ share.shareWithDisplayNameUnique }})</span></span>\n\t\t\t<p v-if=\"hasStatus\">\n\t\t\t\t<span>{{ share.status.icon || '' }}</span>\n\t\t\t\t<span>{{ share.status.message || '' }}</span>\n\t\t\t</p>\n\t\t</component>\n\t\t<Actions menu-align=\"right\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\t@close=\"onMenuClose\">\n\t\t\t<template v-if=\"share.canEdit\">\n\t\t\t\t<!-- edit permission -->\n\t\t\t\t<ActionCheckbox ref=\"canEdit\"\n\t\t\t\t\t:checked.sync=\"canEdit\"\n\t\t\t\t\t:value=\"permissionsEdit\"\n\t\t\t\t\t:disabled=\"saving || !canSetEdit\">\n\t\t\t\t\t{{ t('files_sharing', 'Allow editing') }}\n\t\t\t\t</ActionCheckbox>\n\n\t\t\t\t<!-- create permission -->\n\t\t\t\t<ActionCheckbox v-if=\"isFolder\"\n\t\t\t\t\tref=\"canCreate\"\n\t\t\t\t\t:checked.sync=\"canCreate\"\n\t\t\t\t\t:value=\"permissionsCreate\"\n\t\t\t\t\t:disabled=\"saving || !canSetCreate\">\n\t\t\t\t\t{{ t('files_sharing', 'Allow creating') }}\n\t\t\t\t</ActionCheckbox>\n\n\t\t\t\t<!-- delete permission -->\n\t\t\t\t<ActionCheckbox v-if=\"isFolder\"\n\t\t\t\t\tref=\"canDelete\"\n\t\t\t\t\t:checked.sync=\"canDelete\"\n\t\t\t\t\t:value=\"permissionsDelete\"\n\t\t\t\t\t:disabled=\"saving || !canSetDelete\">\n\t\t\t\t\t{{ t('files_sharing', 'Allow deleting') }}\n\t\t\t\t</ActionCheckbox>\n\n\t\t\t\t<!-- reshare permission -->\n\t\t\t\t<ActionCheckbox v-if=\"config.isResharingAllowed\"\n\t\t\t\t\tref=\"canReshare\"\n\t\t\t\t\t:checked.sync=\"canReshare\"\n\t\t\t\t\t:value=\"permissionsShare\"\n\t\t\t\t\t:disabled=\"saving || !canSetReshare\">\n\t\t\t\t\t{{ t('files_sharing', 'Allow resharing') }}\n\t\t\t\t</ActionCheckbox>\n\n\t\t\t\t<!-- expiration date -->\n\t\t\t\t<ActionCheckbox :checked.sync=\"hasExpirationDate\"\n\t\t\t\t\t:disabled=\"config.isDefaultInternalExpireDateEnforced || saving\"\n\t\t\t\t\t@uncheck=\"onExpirationDisable\">\n\t\t\t\t\t{{ config.isDefaultInternalExpireDateEnforced\n\t\t\t\t\t\t? t('files_sharing', 'Expiration date enforced')\n\t\t\t\t\t\t: t('files_sharing', 'Set expiration date') }}\n\t\t\t\t</ActionCheckbox>\n\t\t\t\t<ActionInput v-if=\"hasExpirationDate\"\n\t\t\t\t\tref=\"expireDate\"\n\t\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\t\tcontent: errors.expireDate,\n\t\t\t\t\t\tshow: errors.expireDate,\n\t\t\t\t\t\ttrigger: 'manual'\n\t\t\t\t\t}\"\n\t\t\t\t\t:class=\"{ error: errors.expireDate}\"\n\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t:lang=\"lang\"\n\t\t\t\t\t:value=\"share.expireDate\"\n\t\t\t\t\tvalue-type=\"format\"\n\t\t\t\t\ticon=\"icon-calendar-dark\"\n\t\t\t\t\ttype=\"date\"\n\t\t\t\t\t:disabled-date=\"disabledDate\"\n\t\t\t\t\t@update:value=\"onExpirationChange\">\n\t\t\t\t\t{{ t('files_sharing', 'Enter a date') }}\n\t\t\t\t</ActionInput>\n\n\t\t\t\t<!-- note -->\n\t\t\t\t<template v-if=\"canHaveNote\">\n\t\t\t\t\t<ActionCheckbox :checked.sync=\"hasNote\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t@uncheck=\"queueUpdate('note')\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Note to recipient') }}\n\t\t\t\t\t</ActionCheckbox>\n\t\t\t\t\t<ActionTextEditable v-if=\"hasNote\"\n\t\t\t\t\t\tref=\"note\"\n\t\t\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\t\t\tcontent: errors.note,\n\t\t\t\t\t\t\tshow: errors.note,\n\t\t\t\t\t\t\ttrigger: 'manual'\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\t:class=\"{ error: errors.note}\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:value=\"share.newNote || share.note\"\n\t\t\t\t\t\ticon=\"icon-edit\"\n\t\t\t\t\t\t@update:value=\"onNoteChange\"\n\t\t\t\t\t\t@submit=\"onNoteSubmit\" />\n\t\t\t\t</template>\n\t\t\t</template>\n\n\t\t\t<ActionButton v-if=\"share.canDelete\"\n\t\t\t\ticon=\"icon-close\"\n\t\t\t\t:disabled=\"saving\"\n\t\t\t\t@click.prevent=\"onDelete\">\n\t\t\t\t{{ t('files_sharing', 'Unshare') }}\n\t\t\t</ActionButton>\n\t\t</Actions>\n\t</li>\n</template>\n\n<script>\nimport Avatar from '@nextcloud/vue/dist/Components/Avatar'\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport ActionCheckbox from '@nextcloud/vue/dist/Components/ActionCheckbox'\nimport ActionInput from '@nextcloud/vue/dist/Components/ActionInput'\nimport ActionTextEditable from '@nextcloud/vue/dist/Components/ActionTextEditable'\nimport Tooltip from '@nextcloud/vue/dist/Directives/Tooltip'\n\nimport SharesMixin from '../mixins/SharesMixin'\n\nexport default {\n\tname: 'SharingEntry',\n\n\tcomponents: {\n\t\tActions,\n\t\tActionButton,\n\t\tActionCheckbox,\n\t\tActionInput,\n\t\tActionTextEditable,\n\t\tAvatar,\n\t},\n\n\tdirectives: {\n\t\tTooltip,\n\t},\n\n\tmixins: [SharesMixin],\n\n\tdata() {\n\t\treturn {\n\t\t\tpermissionsEdit: OC.PERMISSION_UPDATE,\n\t\t\tpermissionsCreate: OC.PERMISSION_CREATE,\n\t\t\tpermissionsDelete: OC.PERMISSION_DELETE,\n\t\t\tpermissionsRead: OC.PERMISSION_READ,\n\t\t\tpermissionsShare: OC.PERMISSION_SHARE,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\ttitle() {\n\t\t\tlet title = this.share.shareWithDisplayName\n\t\t\tif (this.share.type === this.SHARE_TYPES.SHARE_TYPE_GROUP) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'group')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_ROOM) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'conversation')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'remote')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'remote group')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_GUEST) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'guest')})`\n\t\t\t}\n\t\t\treturn title\n\t\t},\n\n\t\ttooltip() {\n\t\t\tif (this.share.owner !== this.share.uidFileOwner) {\n\t\t\t\tconst data = {\n\t\t\t\t\t// todo: strong or italic?\n\t\t\t\t\t// but the t function escape any html from the data :/\n\t\t\t\t\tuser: this.share.shareWithDisplayName,\n\t\t\t\t\towner: this.share.ownerDisplayName,\n\t\t\t\t}\n\n\t\t\t\tif (this.share.type === this.SHARE_TYPES.SHARE_TYPE_GROUP) {\n\t\t\t\t\treturn t('files_sharing', 'Shared with the group {user} by {owner}', data)\n\t\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_ROOM) {\n\t\t\t\t\treturn t('files_sharing', 'Shared with the conversation {user} by {owner}', data)\n\t\t\t\t}\n\n\t\t\t\treturn t('files_sharing', 'Shared with {user} by {owner}', data)\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\tcanHaveNote() {\n\t\t\treturn !this.isRemote\n\t\t},\n\n\t\tisRemote() {\n\t\t\treturn this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE\n\t\t\t\t|| this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP\n\t\t},\n\n\t\t/**\n\t\t * Can the sharer set whether the sharee can edit the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetEdit() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.sharePermissions & OC.PERMISSION_UPDATE) || this.canEdit\n\t\t},\n\n\t\t/**\n\t\t * Can the sharer set whether the sharee can create the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetCreate() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.sharePermissions & OC.PERMISSION_CREATE) || this.canCreate\n\t\t},\n\n\t\t/**\n\t\t * Can the sharer set whether the sharee can delete the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetDelete() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.sharePermissions & OC.PERMISSION_DELETE) || this.canDelete\n\t\t},\n\n\t\t/**\n\t\t * Can the sharer set whether the sharee can reshare the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetReshare() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.sharePermissions & OC.PERMISSION_SHARE) || this.canReshare\n\t\t},\n\n\t\t/**\n\t\t * Can the sharee edit the shared file ?\n\t\t */\n\t\tcanEdit: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasUpdatePermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updatePermissions({ isEditChecked: checked })\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Can the sharee create the shared file ?\n\t\t */\n\t\tcanCreate: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasCreatePermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updatePermissions({ isCreateChecked: checked })\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Can the sharee delete the shared file ?\n\t\t */\n\t\tcanDelete: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasDeletePermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updatePermissions({ isDeleteChecked: checked })\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Can the sharee reshare the file ?\n\t\t */\n\t\tcanReshare: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasSharePermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updatePermissions({ isReshareChecked: checked })\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Is this share readable\n\t\t * Needed for some federated shares that might have been added from file drop links\n\t\t */\n\t\thasRead: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasReadPermission\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Is the current share a folder ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisFolder() {\n\t\t\treturn this.fileInfo.type === 'dir'\n\t\t},\n\n\t\t/**\n\t\t * Does the current share have an expiration date\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasExpirationDate: {\n\t\t\tget() {\n\t\t\t\treturn this.config.isDefaultInternalExpireDateEnforced || !!this.share.expireDate\n\t\t\t},\n\t\t\tset(enabled) {\n\t\t\t\tthis.share.expireDate = enabled\n\t\t\t\t\t? this.config.defaultInternalExpirationDateString !== ''\n\t\t\t\t\t\t? this.config.defaultInternalExpirationDateString\n\t\t\t\t\t\t: moment().format('YYYY-MM-DD')\n\t\t\t\t\t: ''\n\t\t\t},\n\t\t},\n\n\t\tdateMaxEnforced() {\n\t\t\tif (!this.isRemote) {\n\t\t\t\treturn this.config.isDefaultInternalExpireDateEnforced\n\t\t\t\t\t&& moment().add(1 + this.config.defaultInternalExpireDate, 'days')\n\t\t\t} else {\n\t\t\t\treturn this.config.isDefaultRemoteExpireDateEnforced\n\t\t\t\t\t&& moment().add(1 + this.config.defaultRemoteExpireDate, 'days')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @return {boolean}\n\t\t */\n\t\thasStatus() {\n\t\t\tif (this.share.type !== this.SHARE_TYPES.SHARE_TYPE_USER) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\treturn (typeof this.share.status === 'object' && !Array.isArray(this.share.status))\n\t\t},\n\n\t},\n\n\tmethods: {\n\t\tupdatePermissions({ isEditChecked = this.canEdit, isCreateChecked = this.canCreate, isDeleteChecked = this.canDelete, isReshareChecked = this.canReshare } = {}) {\n\t\t\t// calc permissions if checked\n\t\t\tconst permissions = 0\n\t\t\t\t| (this.hasRead ? this.permissionsRead : 0)\n\t\t\t\t| (isCreateChecked ? this.permissionsCreate : 0)\n\t\t\t\t| (isDeleteChecked ? this.permissionsDelete : 0)\n\t\t\t\t| (isEditChecked ? this.permissionsEdit : 0)\n\t\t\t\t| (isReshareChecked ? this.permissionsShare : 0)\n\n\t\t\tthis.share.permissions = permissions\n\t\t\tthis.queueUpdate('permissions')\n\t\t},\n\n\t\t/**\n\t\t * Save potential changed data on menu close\n\t\t */\n\t\tonMenuClose() {\n\t\t\tthis.onNoteSubmit()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t\t&-unique {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntry.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntry.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntry.vue?vue&type=style&index=0&id=dc8e346e&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntry.vue?vue&type=style&index=0&id=dc8e346e&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntry.vue?vue&type=template&id=dc8e346e&scoped=true&\"\nimport script from \"./SharingEntry.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntry.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntry.vue?vue&type=style&index=0&id=dc8e346e&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"dc8e346e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{staticClass:\"sharing-entry\"},[_c('Avatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"is-no-user\":_vm.share.type !== _vm.SHARE_TYPES.SHARE_TYPE_USER,\"user\":_vm.share.shareWith,\"display-name\":_vm.share.shareWithDisplayName,\"tooltip-message\":_vm.share.type === _vm.SHARE_TYPES.SHARE_TYPE_USER ? _vm.share.shareWith : '',\"menu-position\":'left',\"url\":_vm.share.shareWithAvatar}}),_vm._v(\" \"),_c(_vm.share.shareWithLink ? 'a' : 'div',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.tooltip),expression:\"tooltip\",modifiers:{\"auto\":true}}],tag:\"component\",staticClass:\"sharing-entry__desc\",attrs:{\"href\":_vm.share.shareWithLink}},[_c('span',[_vm._v(_vm._s(_vm.title)),(!_vm.isUnique)?_c('span',{staticClass:\"sharing-entry__desc-unique\"},[_vm._v(\" (\"+_vm._s(_vm.share.shareWithDisplayNameUnique)+\")\")]):_vm._e()]),_vm._v(\" \"),(_vm.hasStatus)?_c('p',[_c('span',[_vm._v(_vm._s(_vm.share.status.icon || ''))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.share.status.message || ''))])]):_vm._e()]),_vm._v(\" \"),_c('Actions',{staticClass:\"sharing-entry__actions\",attrs:{\"menu-align\":\"right\"},on:{\"close\":_vm.onMenuClose}},[(_vm.share.canEdit)?[_c('ActionCheckbox',{ref:\"canEdit\",attrs:{\"checked\":_vm.canEdit,\"value\":_vm.permissionsEdit,\"disabled\":_vm.saving || !_vm.canSetEdit},on:{\"update:checked\":function($event){_vm.canEdit=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow editing'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),(_vm.isFolder)?_c('ActionCheckbox',{ref:\"canCreate\",attrs:{\"checked\":_vm.canCreate,\"value\":_vm.permissionsCreate,\"disabled\":_vm.saving || !_vm.canSetCreate},on:{\"update:checked\":function($event){_vm.canCreate=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow creating'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isFolder)?_c('ActionCheckbox',{ref:\"canDelete\",attrs:{\"checked\":_vm.canDelete,\"value\":_vm.permissionsDelete,\"disabled\":_vm.saving || !_vm.canSetDelete},on:{\"update:checked\":function($event){_vm.canDelete=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow deleting'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.config.isResharingAllowed)?_c('ActionCheckbox',{ref:\"canReshare\",attrs:{\"checked\":_vm.canReshare,\"value\":_vm.permissionsShare,\"disabled\":_vm.saving || !_vm.canSetReshare},on:{\"update:checked\":function($event){_vm.canReshare=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow resharing'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('ActionCheckbox',{attrs:{\"checked\":_vm.hasExpirationDate,\"disabled\":_vm.config.isDefaultInternalExpireDateEnforced || _vm.saving},on:{\"update:checked\":function($event){_vm.hasExpirationDate=$event},\"uncheck\":_vm.onExpirationDisable}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.config.isDefaultInternalExpireDateEnforced\n\t\t\t\t\t? _vm.t('files_sharing', 'Expiration date enforced')\n\t\t\t\t\t: _vm.t('files_sharing', 'Set expiration date'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),(_vm.hasExpirationDate)?_c('ActionInput',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\t\tcontent: _vm.errors.expireDate,\n\t\t\t\t\tshow: _vm.errors.expireDate,\n\t\t\t\t\ttrigger: 'manual'\n\t\t\t\t}),expression:\"{\\n\\t\\t\\t\\t\\tcontent: errors.expireDate,\\n\\t\\t\\t\\t\\tshow: errors.expireDate,\\n\\t\\t\\t\\t\\ttrigger: 'manual'\\n\\t\\t\\t\\t}\",modifiers:{\"auto\":true}}],ref:\"expireDate\",class:{ error: _vm.errors.expireDate},attrs:{\"disabled\":_vm.saving,\"lang\":_vm.lang,\"value\":_vm.share.expireDate,\"value-type\":\"format\",\"icon\":\"icon-calendar-dark\",\"type\":\"date\",\"disabled-date\":_vm.disabledDate},on:{\"update:value\":_vm.onExpirationChange}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a date'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.canHaveNote)?[_c('ActionCheckbox',{attrs:{\"checked\":_vm.hasNote,\"disabled\":_vm.saving},on:{\"update:checked\":function($event){_vm.hasNote=$event},\"uncheck\":function($event){return _vm.queueUpdate('note')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Note to recipient'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.hasNote)?_c('ActionTextEditable',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\t\t\tcontent: _vm.errors.note,\n\t\t\t\t\t\tshow: _vm.errors.note,\n\t\t\t\t\t\ttrigger: 'manual'\n\t\t\t\t\t}),expression:\"{\\n\\t\\t\\t\\t\\t\\tcontent: errors.note,\\n\\t\\t\\t\\t\\t\\tshow: errors.note,\\n\\t\\t\\t\\t\\t\\ttrigger: 'manual'\\n\\t\\t\\t\\t\\t}\",modifiers:{\"auto\":true}}],ref:\"note\",class:{ error: _vm.errors.note},attrs:{\"disabled\":_vm.saving,\"value\":_vm.share.newNote || _vm.share.note,\"icon\":\"icon-edit\"},on:{\"update:value\":_vm.onNoteChange,\"submit\":_vm.onNoteSubmit}}):_vm._e()]:_vm._e()]:_vm._e(),_vm._v(\" \"),(_vm.share.canDelete)?_c('ActionButton',{attrs:{\"icon\":\"icon-close\",\"disabled\":_vm.saving},on:{\"click\":function($event){$event.preventDefault();return _vm.onDelete.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Unshare'))+\"\\n\\t\\t\")]):_vm._e()],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<ul class=\"sharing-sharee-list\">\n\t\t<SharingEntry v-for=\"share in shares\"\n\t\t\t:key=\"share.id\"\n\t\t\t:file-info=\"fileInfo\"\n\t\t\t:share=\"share\"\n\t\t\t:is-unique=\"isUnique(share)\"\n\t\t\t@remove:share=\"removeShare\" />\n\t</ul>\n</template>\n\n<script>\n// eslint-disable-next-line no-unused-vars\nimport Share from '../models/Share'\nimport SharingEntry from '../components/SharingEntry'\nimport ShareTypes from '../mixins/ShareTypes'\n\nexport default {\n\tname: 'SharingList',\n\n\tcomponents: {\n\t\tSharingEntry,\n\t},\n\n\tmixins: [ShareTypes],\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\tshares: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\thasShares() {\n\t\t\treturn this.shares.length === 0\n\t\t},\n\t\tisUnique() {\n\t\t\treturn (share) => {\n\t\t\t\treturn [...this.shares].filter((item) => {\n\t\t\t\t\treturn share.type === this.SHARE_TYPES.SHARE_TYPE_USER && share.shareWithDisplayName === item.shareWithDisplayName\n\t\t\t\t}).length <= 1\n\t\t\t}\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Remove a share from the shares list\n\t\t *\n\t\t * @param {Share} share the share to remove\n\t\t */\n\t\tremoveShare(share) {\n\t\t\tconst index = this.shares.findIndex(item => item === share)\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.shares.splice(index, 1)\n\t\t},\n\t},\n}\n</script>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingList.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SharingList.vue?vue&type=template&id=0b29d4c0&\"\nimport script from \"./SharingList.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',{staticClass:\"sharing-sharee-list\"},_vm._l((_vm.shares),function(share){return _c('SharingEntry',{key:share.id,attrs:{\"file-info\":_vm.fileInfo,\"share\":share,\"is-unique\":_vm.isUnique(share)},on:{\"remove:share\":_vm.removeShare}})}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div :class=\"{ 'icon-loading': loading }\">\n\t\t<!-- error message -->\n\t\t<div v-if=\"error\" class=\"emptycontent\" :class=\"{ emptyContentWithSections: sections.length > 0 }\">\n\t\t\t<div class=\"icon icon-error\" />\n\t\t\t<h2>{{ error }}</h2>\n\t\t</div>\n\n\t\t<!-- shares content -->\n\t\t<template v-else>\n\t\t\t<!-- shared with me information -->\n\t\t\t<SharingEntrySimple v-if=\"isSharedWithMe\" v-bind=\"sharedWithMe\" class=\"sharing-entry__reshare\">\n\t\t\t\t<template #avatar>\n\t\t\t\t\t<Avatar :user=\"sharedWithMe.user\"\n\t\t\t\t\t\t:display-name=\"sharedWithMe.displayName\"\n\t\t\t\t\t\tclass=\"sharing-entry__avatar\"\n\t\t\t\t\t\ttooltip-message=\"\" />\n\t\t\t\t</template>\n\t\t\t</SharingEntrySimple>\n\n\t\t\t<!-- add new share input -->\n\t\t\t<SharingInput v-if=\"!loading\"\n\t\t\t\t:can-reshare=\"canReshare\"\n\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t:link-shares=\"linkShares\"\n\t\t\t\t:reshare=\"reshare\"\n\t\t\t\t:shares=\"shares\"\n\t\t\t\t@add:share=\"addShare\" />\n\n\t\t\t<!-- link shares list -->\n\t\t\t<SharingLinkList v-if=\"!loading\"\n\t\t\t\tref=\"linkShareList\"\n\t\t\t\t:can-reshare=\"canReshare\"\n\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t:shares=\"linkShares\" />\n\n\t\t\t<!-- other shares list -->\n\t\t\t<SharingList v-if=\"!loading\"\n\t\t\t\tref=\"shareList\"\n\t\t\t\t:shares=\"shares\"\n\t\t\t\t:file-info=\"fileInfo\" />\n\n\t\t\t<!-- inherited shares -->\n\t\t\t<SharingInherited v-if=\"canReshare && !loading\" :file-info=\"fileInfo\" />\n\n\t\t\t<!-- internal link copy -->\n\t\t\t<SharingEntryInternal :file-info=\"fileInfo\" />\n\n\t\t\t<!-- projects -->\n\t\t\t<CollectionList v-if=\"fileInfo\"\n\t\t\t\t:id=\"`${fileInfo.id}`\"\n\t\t\t\ttype=\"file\"\n\t\t\t\t:name=\"fileInfo.name\" />\n\t\t</template>\n\n\t\t<!-- additionnal entries, use it with cautious -->\n\t\t<div v-for=\"(section, index) in sections\"\n\t\t\t:ref=\"'section-' + index\"\n\t\t\t:key=\"index\"\n\t\t\tclass=\"sharingTab__additionalContent\">\n\t\t\t<component :is=\"section($refs['section-'+index], fileInfo)\" :file-info=\"fileInfo\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { CollectionList } from 'nextcloud-vue-collections'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport Avatar from '@nextcloud/vue/dist/Components/Avatar'\nimport axios from '@nextcloud/axios'\n\nimport Config from '../services/ConfigService'\nimport { shareWithTitle } from '../utils/SharedWithMe'\nimport Share from '../models/Share'\nimport ShareTypes from '../mixins/ShareTypes'\nimport SharingEntryInternal from '../components/SharingEntryInternal'\nimport SharingEntrySimple from '../components/SharingEntrySimple'\nimport SharingInput from '../components/SharingInput'\n\nimport SharingInherited from './SharingInherited'\nimport SharingLinkList from './SharingLinkList'\nimport SharingList from './SharingList'\n\nexport default {\n\tname: 'SharingTab',\n\n\tcomponents: {\n\t\tAvatar,\n\t\tCollectionList,\n\t\tSharingEntryInternal,\n\t\tSharingEntrySimple,\n\t\tSharingInherited,\n\t\tSharingInput,\n\t\tSharingLinkList,\n\t\tSharingList,\n\t},\n\n\tmixins: [ShareTypes],\n\n\tdata() {\n\t\treturn {\n\t\t\tconfig: new Config(),\n\n\t\t\terror: '',\n\t\t\texpirationInterval: null,\n\t\t\tloading: true,\n\n\t\t\tfileInfo: null,\n\n\t\t\t// reshare Share object\n\t\t\treshare: null,\n\t\t\tsharedWithMe: {},\n\t\t\tshares: [],\n\t\t\tlinkShares: [],\n\n\t\t\tsections: OCA.Sharing.ShareTabSections.getSections(),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Is this share shared with me?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisSharedWithMe() {\n\t\t\treturn Object.keys(this.sharedWithMe).length > 0\n\t\t},\n\n\t\tcanReshare() {\n\t\t\treturn !!(this.fileInfo.permissions & OC.PERMISSION_SHARE)\n\t\t\t\t|| !!(this.reshare && this.reshare.hasSharePermission && this.config.isResharingAllowed)\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Update current fileInfo and fetch new data\n\t\t *\n\t\t * @param {object} fileInfo the current file FileInfo\n\t\t */\n\t\tasync update(fileInfo) {\n\t\t\tthis.fileInfo = fileInfo\n\t\t\tthis.resetState()\n\t\t\tthis.getShares()\n\t\t},\n\n\t\t/**\n\t\t * Get the existing shares infos\n\t\t */\n\t\tasync getShares() {\n\t\t\ttry {\n\t\t\t\tthis.loading = true\n\n\t\t\t\t// init params\n\t\t\t\tconst shareUrl = generateOcsUrl('apps/files_sharing/api/v1/shares')\n\t\t\t\tconst format = 'json'\n\t\t\t\t// TODO: replace with proper getFUllpath implementation of our own FileInfo model\n\t\t\t\tconst path = (this.fileInfo.path + '/' + this.fileInfo.name).replace('//', '/')\n\n\t\t\t\t// fetch shares\n\t\t\t\tconst fetchShares = axios.get(shareUrl, {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat,\n\t\t\t\t\t\tpath,\n\t\t\t\t\t\treshares: true,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tconst fetchSharedWithMe = axios.get(shareUrl, {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat,\n\t\t\t\t\t\tpath,\n\t\t\t\t\t\tshared_with_me: true,\n\t\t\t\t\t},\n\t\t\t\t})\n\n\t\t\t\t// wait for data\n\t\t\t\tconst [shares, sharedWithMe] = await Promise.all([fetchShares, fetchSharedWithMe])\n\t\t\t\tthis.loading = false\n\n\t\t\t\t// process results\n\t\t\t\tthis.processSharedWithMe(sharedWithMe)\n\t\t\t\tthis.processShares(shares)\n\t\t\t} catch (error) {\n\t\t\t\tif (error.response.data?.ocs?.meta?.message) {\n\t\t\t\t\tthis.error = error.response.data.ocs.meta.message\n\t\t\t\t} else {\n\t\t\t\t\tthis.error = t('files_sharing', 'Unable to load the shares list')\n\t\t\t\t}\n\t\t\t\tthis.loading = false\n\t\t\t\tconsole.error('Error loading the shares list', error)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Reset the current view to its default state\n\t\t */\n\t\tresetState() {\n\t\t\tclearInterval(this.expirationInterval)\n\t\t\tthis.loading = true\n\t\t\tthis.error = ''\n\t\t\tthis.sharedWithMe = {}\n\t\t\tthis.shares = []\n\t\t\tthis.linkShares = []\n\t\t},\n\n\t\t/**\n\t\t * Update sharedWithMe.subtitle with the appropriate\n\t\t * expiration time left\n\t\t *\n\t\t * @param {Share} share the sharedWith Share object\n\t\t */\n\t\tupdateExpirationSubtitle(share) {\n\t\t\tconst expiration = moment(share.expireDate).unix()\n\t\t\tthis.$set(this.sharedWithMe, 'subtitle', t('files_sharing', 'Expires {relativetime}', {\n\t\t\t\trelativetime: OC.Util.relativeModifiedDate(expiration * 1000),\n\t\t\t}))\n\n\t\t\t// share have expired\n\t\t\tif (moment().unix() > expiration) {\n\t\t\t\tclearInterval(this.expirationInterval)\n\t\t\t\t// TODO: clear ui if share is expired\n\t\t\t\tthis.$set(this.sharedWithMe, 'subtitle', t('files_sharing', 'this share just expired.'))\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Process the current shares data\n\t\t * and init shares[]\n\t\t *\n\t\t * @param {object} share the share ocs api request data\n\t\t * @param {object} share.data the request data\n\t\t */\n\t\tprocessShares({ data }) {\n\t\t\tif (data.ocs && data.ocs.data && data.ocs.data.length > 0) {\n\t\t\t\t// create Share objects and sort by newest\n\t\t\t\tconst shares = data.ocs.data\n\t\t\t\t\t.map(share => new Share(share))\n\t\t\t\t\t.sort((a, b) => b.createdTime - a.createdTime)\n\n\t\t\t\tthis.linkShares = shares.filter(share => share.type === this.SHARE_TYPES.SHARE_TYPE_LINK || share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL)\n\t\t\t\tthis.shares = shares.filter(share => share.type !== this.SHARE_TYPES.SHARE_TYPE_LINK && share.type !== this.SHARE_TYPES.SHARE_TYPE_EMAIL)\n\n\t\t\t\tconsole.debug('Processed', this.linkShares.length, 'link share(s)')\n\t\t\t\tconsole.debug('Processed', this.shares.length, 'share(s)')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Process the sharedWithMe share data\n\t\t * and init sharedWithMe\n\t\t *\n\t\t * @param {object} share the share ocs api request data\n\t\t * @param {object} share.data the request data\n\t\t */\n\t\tprocessSharedWithMe({ data }) {\n\t\t\tif (data.ocs && data.ocs.data && data.ocs.data[0]) {\n\t\t\t\tconst share = new Share(data)\n\t\t\t\tconst title = shareWithTitle(share)\n\t\t\t\tconst displayName = share.ownerDisplayName\n\t\t\t\tconst user = share.owner\n\n\t\t\t\tthis.sharedWithMe = {\n\t\t\t\t\tdisplayName,\n\t\t\t\t\ttitle,\n\t\t\t\t\tuser,\n\t\t\t\t}\n\t\t\t\tthis.reshare = share\n\n\t\t\t\t// If we have an expiration date, use it as subtitle\n\t\t\t\t// Refresh the status every 10s and clear if expired\n\t\t\t\tif (share.expireDate && moment(share.expireDate).unix() > moment().unix()) {\n\t\t\t\t\t// first update\n\t\t\t\t\tthis.updateExpirationSubtitle(share)\n\t\t\t\t\t// interval update\n\t\t\t\t\tthis.expirationInterval = setInterval(this.updateExpirationSubtitle, 10000, share)\n\t\t\t\t}\n\t\t\t} else if (this.fileInfo && this.fileInfo.shareOwnerId !== undefined ? this.fileInfo.shareOwnerId !== OC.currentUser : false) {\n\t\t\t\t// Fallback to compare owner and current user.\n\t\t\t\tthis.sharedWithMe = {\n\t\t\t\t\tdisplayName: this.fileInfo.shareOwner,\n\t\t\t\t\ttitle: t(\n\t\t\t\t\t\t'files_sharing',\n\t\t\t\t\t\t'Shared with you by {owner}',\n\t\t\t\t\t\t{ owner: this.fileInfo.shareOwner },\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t{ escape: false }\n\t\t\t\t\t),\n\t\t\t\t\tuser: this.fileInfo.shareOwnerId,\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Add a new share into the shares list\n\t\t * and return the newly created share component\n\t\t *\n\t\t * @param {Share} share the share to add to the array\n\t\t * @param {Function} [resolve] a function to run after the share is added and its component initialized\n\t\t */\n\t\taddShare(share, resolve = () => {}) {\n\t\t\t// only catching share type MAIL as link shares are added differently\n\t\t\t// meaning: not from the ShareInput\n\t\t\tif (share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\tthis.linkShares.unshift(share)\n\t\t\t} else {\n\t\t\t\tthis.shares.unshift(share)\n\t\t\t}\n\t\t\tthis.awaitForShare(share, resolve)\n\t\t},\n\n\t\t/**\n\t\t * Await for next tick and render after the list updated\n\t\t * Then resolve with the matched vue component of the\n\t\t * provided share object\n\t\t *\n\t\t * @param {Share} share newly created share\n\t\t * @param {Function} resolve a function to execute after\n\t\t */\n\t\tawaitForShare(share, resolve) {\n\t\t\tlet listComponent = this.$refs.shareList\n\t\t\t// Only mail shares comes from the input, link shares\n\t\t\t// are managed internally in the SharingLinkList component\n\t\t\tif (share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\tlistComponent = this.$refs.linkShareList\n\t\t\t}\n\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tconst newShare = listComponent.$children.find(component => component.share === share)\n\t\t\t\tif (newShare) {\n\t\t\t\t\tresolve(newShare)\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.emptyContentWithSections {\n\tmargin: 1rem auto;\n}\n</style>\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { Type as ShareTypes } from '@nextcloud/sharing'\n\nconst shareWithTitle = function(share) {\n\tif (share.type === ShareTypes.SHARE_TYPE_GROUP) {\n\t\treturn t(\n\t\t\t'files_sharing',\n\t\t\t'Shared with you and the group {group} by {owner}',\n\t\t\t{\n\t\t\t\tgroup: share.shareWithDisplayName,\n\t\t\t\towner: share.ownerDisplayName,\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{ escape: false }\n\t\t)\n\t} else if (share.type === ShareTypes.SHARE_TYPE_CIRCLE) {\n\t\treturn t(\n\t\t\t'files_sharing',\n\t\t\t'Shared with you and {circle} by {owner}',\n\t\t\t{\n\t\t\t\tcircle: share.shareWithDisplayName,\n\t\t\t\towner: share.ownerDisplayName,\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{ escape: false }\n\t\t)\n\t} else if (share.type === ShareTypes.SHARE_TYPE_ROOM) {\n\t\tif (share.shareWithDisplayName) {\n\t\t\treturn t(\n\t\t\t\t'files_sharing',\n\t\t\t\t'Shared with you and the conversation {conversation} by {owner}',\n\t\t\t\t{\n\t\t\t\t\tconversation: share.shareWithDisplayName,\n\t\t\t\t\towner: share.ownerDisplayName,\n\t\t\t\t},\n\t\t\t\tundefined,\n\t\t\t\t{ escape: false }\n\t\t\t)\n\t\t} else {\n\t\t\treturn t(\n\t\t\t\t'files_sharing',\n\t\t\t\t'Shared with you in a conversation by {owner}',\n\t\t\t\t{\n\t\t\t\t\towner: share.ownerDisplayName,\n\t\t\t\t},\n\t\t\t\tundefined,\n\t\t\t\t{ escape: false }\n\t\t\t)\n\t\t}\n\t} else {\n\t\treturn t(\n\t\t\t'files_sharing',\n\t\t\t'Shared with you by {owner}',\n\t\t\t{ owner: share.ownerDisplayName },\n\t\t\tundefined,\n\t\t\t{ escape: false }\n\t\t)\n\t}\n}\n\nexport { shareWithTitle }\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingTab.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingTab.vue?vue&type=style&index=0&id=b6bc0cd2&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingTab.vue?vue&type=style&index=0&id=b6bc0cd2&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingTab.vue?vue&type=template&id=b6bc0cd2&scoped=true&\"\nimport script from \"./SharingTab.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingTab.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingTab.vue?vue&type=style&index=0&id=b6bc0cd2&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 \"b6bc0cd2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:{ 'icon-loading': _vm.loading }},[(_vm.error)?_c('div',{staticClass:\"emptycontent\",class:{ emptyContentWithSections: _vm.sections.length > 0 }},[_c('div',{staticClass:\"icon icon-error\"}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.error))])]):[(_vm.isSharedWithMe)?_c('SharingEntrySimple',_vm._b({staticClass:\"sharing-entry__reshare\",scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('Avatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"user\":_vm.sharedWithMe.user,\"display-name\":_vm.sharedWithMe.displayName,\"tooltip-message\":\"\"}})]},proxy:true}],null,false,1643724538)},'SharingEntrySimple',_vm.sharedWithMe,false)):_vm._e(),_vm._v(\" \"),(!_vm.loading)?_c('SharingInput',{attrs:{\"can-reshare\":_vm.canReshare,\"file-info\":_vm.fileInfo,\"link-shares\":_vm.linkShares,\"reshare\":_vm.reshare,\"shares\":_vm.shares},on:{\"add:share\":_vm.addShare}}):_vm._e(),_vm._v(\" \"),(!_vm.loading)?_c('SharingLinkList',{ref:\"linkShareList\",attrs:{\"can-reshare\":_vm.canReshare,\"file-info\":_vm.fileInfo,\"shares\":_vm.linkShares}}):_vm._e(),_vm._v(\" \"),(!_vm.loading)?_c('SharingList',{ref:\"shareList\",attrs:{\"shares\":_vm.shares,\"file-info\":_vm.fileInfo}}):_vm._e(),_vm._v(\" \"),(_vm.canReshare && !_vm.loading)?_c('SharingInherited',{attrs:{\"file-info\":_vm.fileInfo}}):_vm._e(),_vm._v(\" \"),_c('SharingEntryInternal',{attrs:{\"file-info\":_vm.fileInfo}}),_vm._v(\" \"),(_vm.fileInfo)?_c('CollectionList',{attrs:{\"id\":(\"\" + (_vm.fileInfo.id)),\"type\":\"file\",\"name\":_vm.fileInfo.name}}):_vm._e()],_vm._v(\" \"),_vm._l((_vm.sections),function(section,index){return _c('div',{key:index,ref:'section-' + index,refInFor:true,staticClass:\"sharingTab__additionalContent\"},[_c(section(_vm.$refs['section-'+index], _vm.fileInfo),{tag:\"component\",attrs:{\"file-info\":_vm.fileInfo}})],1)})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class ShareSearch {\n\n\t_state\n\n\tconstructor() {\n\t\t// init empty state\n\t\tthis._state = {}\n\n\t\t// init default values\n\t\tthis._state.results = []\n\t\tconsole.debug('OCA.Sharing.ShareSearch initialized')\n\t}\n\n\t/**\n\t * Get the state\n\t *\n\t * @readonly\n\t * @memberof ShareSearch\n\t * @return {object} the data state\n\t */\n\tget state() {\n\t\treturn this._state\n\t}\n\n\t/**\n\t * Register a new result\n\t * Mostly used by the guests app.\n\t * We should consider deprecation and add results via php ?\n\t *\n\t * @param {object} result entry to append\n\t * @param {string} [result.user] entry user\n\t * @param {string} result.displayName entry first line\n\t * @param {string} [result.desc] entry second line\n\t * @param {string} [result.icon] entry icon\n\t * @param {Function} result.handler function to run on entry selection\n\t * @param {Function} [result.condition] condition to add entry or not\n\t * @return {boolean}\n\t */\n\taddNewResult(result) {\n\t\tif (result.displayName.trim() !== ''\n\t\t\t&& typeof result.handler === 'function') {\n\t\t\tthis._state.results.push(result)\n\t\t\treturn true\n\t\t}\n\t\tconsole.error('Invalid search result provided', result)\n\t\treturn false\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class ExternalLinkActions {\n\n\t_state\n\n\tconstructor() {\n\t\t// init empty state\n\t\tthis._state = {}\n\n\t\t// init default values\n\t\tthis._state.actions = []\n\t\tconsole.debug('OCA.Sharing.ExternalLinkActions initialized')\n\t}\n\n\t/**\n\t * Get the state\n\t *\n\t * @readonly\n\t * @memberof ExternalLinkActions\n\t * @return {object} the data state\n\t */\n\tget state() {\n\t\treturn this._state\n\t}\n\n\t/**\n\t * Register a new action for the link share\n\t * Mostly used by the social sharing app.\n\t *\n\t * @param {object} action new action component to register\n\t * @return {boolean}\n\t */\n\tregisterAction(action) {\n\t\tconsole.warn('OCA.Sharing.ExternalLinkActions is deprecated, use OCA.Sharing.ExternalShareAction instead')\n\n\t\tif (typeof action === 'object' && action.icon && action.name && action.url) {\n\t\t\tthis._state.actions.push(action)\n\t\t\treturn true\n\t\t}\n\t\tconsole.error('Invalid action provided', action)\n\t\treturn false\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class ExternalShareActions {\n\n\t_state\n\n\tconstructor() {\n\t\t// init empty state\n\t\tthis._state = {}\n\n\t\t// init default values\n\t\tthis._state.actions = []\n\t\tconsole.debug('OCA.Sharing.ExternalShareActions initialized')\n\t}\n\n\t/**\n\t * Get the state\n\t *\n\t * @readonly\n\t * @memberof ExternalLinkActions\n\t * @return {object} the data state\n\t */\n\tget state() {\n\t\treturn this._state\n\t}\n\n\t/**\n\t * Register a new option/entry for the a given share type\n\t *\n\t * @param {object} action new action component to register\n\t * @param {string} action.id unique action id\n\t * @param {Function} action.data data to bind the component to\n\t * @param {Array} action.shareType list of \\@nextcloud/sharing.Types.SHARE_XXX to be mounted on\n\t * @param {object} action.handlers list of listeners\n\t * @return {boolean}\n\t */\n\tregisterAction(action) {\n\t\t// Validate action\n\t\tif (typeof action !== 'object'\n\t\t\t|| typeof action.id !== 'string'\n\t\t\t|| typeof action.data !== 'function' // () => {disabled: true}\n\t\t\t|| !Array.isArray(action.shareType) // [\\@nextcloud/sharing.Types.SHARE_TYPE_LINK, ...]\n\t\t\t|| typeof action.handlers !== 'object' // {click: () => {}, ...}\n\t\t\t|| !Object.values(action.handlers).every(handler => typeof handler === 'function')) {\n\t\t\tconsole.error('Invalid action provided', action)\n\t\t\treturn false\n\t\t}\n\n\t\t// Check duplicates\n\t\tconst hasDuplicate = this._state.actions.findIndex(check => check.id === action.id) > -1\n\t\tif (hasDuplicate) {\n\t\t\tconsole.error(`An action with the same id ${action.id} already exists`, action)\n\t\t\treturn false\n\t\t}\n\n\t\tthis._state.actions.push(action)\n\t\treturn true\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class TabSections {\n\n\t_sections\n\n\tconstructor() {\n\t\tthis._sections = []\n\t}\n\n\t/**\n\t * @param {registerSectionCallback} section To be called to mount the section to the sharing sidebar\n\t */\n\tregisterSection(section) {\n\t\tthis._sections.push(section)\n\t}\n\n\tgetSections() {\n\t\treturn this._sections\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport VueClipboard from 'vue-clipboard2'\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n'\n\nimport SharingTab from './views/SharingTab'\nimport ShareSearch from './services/ShareSearch'\nimport ExternalLinkActions from './services/ExternalLinkActions'\nimport ExternalShareActions from './services/ExternalShareActions'\nimport TabSections from './services/TabSections'\n\n// Init Sharing Tab Service\nif (!window.OCA.Sharing) {\n\twindow.OCA.Sharing = {}\n}\nObject.assign(window.OCA.Sharing, { ShareSearch: new ShareSearch() })\nObject.assign(window.OCA.Sharing, { ExternalLinkActions: new ExternalLinkActions() })\nObject.assign(window.OCA.Sharing, { ExternalShareActions: new ExternalShareActions() })\nObject.assign(window.OCA.Sharing, { ShareTabSections: new TabSections() })\n\nVue.prototype.t = t\nVue.prototype.n = n\nVue.use(VueClipboard)\n\n// Init Sharing tab component\nconst View = Vue.extend(SharingTab)\nlet TabInstance = null\n\nwindow.addEventListener('DOMContentLoaded', function() {\n\tif (OCA.Files && OCA.Files.Sidebar) {\n\t\tOCA.Files.Sidebar.registerTab(new OCA.Files.Sidebar.Tab({\n\t\t\tid: 'sharing',\n\t\t\tname: t('files_sharing', 'Sharing'),\n\t\t\ticon: 'icon-share',\n\n\t\t\tasync mount(el, fileInfo, context) {\n\t\t\t\tif (TabInstance) {\n\t\t\t\t\tTabInstance.$destroy()\n\t\t\t\t}\n\t\t\t\tTabInstance = new View({\n\t\t\t\t\t// Better integration with vue parent component\n\t\t\t\t\tparent: context,\n\t\t\t\t})\n\t\t\t\t// Only mount after we have all the info we need\n\t\t\t\tawait TabInstance.update(fileInfo)\n\t\t\t\tTabInstance.$mount(el)\n\t\t\t},\n\t\t\tupdate(fileInfo) {\n\t\t\t\tTabInstance.update(fileInfo)\n\t\t\t},\n\t\t\tdestroy() {\n\t\t\t\tTabInstance.$destroy()\n\t\t\t\tTabInstance = null\n\t\t\t},\n\t\t}))\n\t}\n})\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".error[data-v-ea414898] .action-checkbox__label:before{border:1px solid var(--color-error)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharePermissionsEditor.vue\"],\"names\":[],\"mappings\":\"AAiSC,wDACC,mCAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.error {\\n\\t::v-deep .action-checkbox__label:before {\\n\\t\\tborder: 1px solid var(--color-error);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry[data-v-dc8e346e]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-dc8e346e]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-dc8e346e]{color:var(--color-text-maxcontrast)}.sharing-entry__desc-unique[data-v-dc8e346e]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-dc8e346e]{margin-left:auto}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntry.vue\"],\"names\":[],\"mappings\":\"AAsZA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAED,6CACC,mCAAA,CAGF,yCACC,gBAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\theight: 44px;\\n\\t&__desc {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: space-between;\\n\\t\\tpadding: 8px;\\n\\t\\tline-height: 1.2em;\\n\\t\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t\\t&-unique {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\t&__actions {\\n\\t\\tmargin-left: auto;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry[data-v-29845767]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-29845767]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-29845767]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-29845767]{margin-left:auto}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryInherited.vue\"],\"names\":[],\"mappings\":\"AAgGA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAGF,yCACC,gBAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\theight: 44px;\\n\\t&__desc {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: space-between;\\n\\t\\tpadding: 8px;\\n\\t\\tline-height: 1.2em;\\n\\t\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\t&__actions {\\n\\t\\tmargin-left: auto;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry__internal .avatar-external[data-v-739d8480]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}.sharing-entry__internal .icon-checkmark-color[data-v-739d8480]{opacity:1}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryInternal.vue\"],\"names\":[],\"mappings\":\"AA0GC,2DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA,CAED,gEACC,SAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.sharing-entry__internal {\\n\\t.avatar-external {\\n\\t\\twidth: 32px;\\n\\t\\theight: 32px;\\n\\t\\tline-height: 32px;\\n\\t\\tfont-size: 18px;\\n\\t\\tbackground-color: var(--color-text-maxcontrast);\\n\\t\\tborder-radius: 50%;\\n\\t\\tflex-shrink: 0;\\n\\t}\\n\\t.icon-checkmark-color {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry[data-v-16656e50]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-16656e50]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em;overflow:hidden}.sharing-entry__desc p[data-v-16656e50]{color:var(--color-text-maxcontrast)}.sharing-entry__title[data-v-16656e50]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.sharing-entry:not(.sharing-entry--share) .sharing-entry__actions .new-share-link[data-v-16656e50]{border-top:1px solid var(--color-border)}.sharing-entry[data-v-16656e50] .avatar-link-share{background-color:var(--color-primary)}.sharing-entry .sharing-entry__action--public-upload[data-v-16656e50]{border-bottom:1px solid var(--color-border)}.sharing-entry__loading[data-v-16656e50]{width:44px;height:44px;margin:0;padding:14px;margin-left:auto}.sharing-entry .action-item[data-v-16656e50]{margin-left:auto}.sharing-entry .action-item~.action-item[data-v-16656e50],.sharing-entry .action-item~.sharing-entry__loading[data-v-16656e50]{margin-left:0}.sharing-entry .icon-checkmark-color[data-v-16656e50]{opacity:1}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryLink.vue\"],\"names\":[],\"mappings\":\"AAy2BA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,eAAA,CAEA,wCACC,mCAAA,CAGF,uCACC,sBAAA,CACA,eAAA,CACA,kBAAA,CAIA,mGACC,wCAAA,CAIF,oDACC,qCAAA,CAGD,sEACC,2CAAA,CAGD,yCACC,UAAA,CACA,WAAA,CACA,QAAA,CACA,YAAA,CACA,gBAAA,CAKD,6CACC,gBAAA,CACA,+HAEC,aAAA,CAIF,sDACC,SAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tmin-height: 44px;\\n\\t&__desc {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: space-between;\\n\\t\\tpadding: 8px;\\n\\t\\tline-height: 1.2em;\\n\\t\\toverflow: hidden;\\n\\n\\t\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\t&__title {\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\toverflow: hidden;\\n\\t\\twhite-space: nowrap;\\n\\t}\\n\\n\\t&:not(.sharing-entry--share) &__actions {\\n\\t\\t.new-share-link {\\n\\t\\t\\tborder-top: 1px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t::v-deep .avatar-link-share {\\n\\t\\tbackground-color: var(--color-primary);\\n\\t}\\n\\n\\t.sharing-entry__action--public-upload {\\n\\t\\tborder-bottom: 1px solid var(--color-border);\\n\\t}\\n\\n\\t&__loading {\\n\\t\\twidth: 44px;\\n\\t\\theight: 44px;\\n\\t\\tmargin: 0;\\n\\t\\tpadding: 14px;\\n\\t\\tmargin-left: auto;\\n\\t}\\n\\n\\t// put menus to the left\\n\\t// but only the first one\\n\\t.action-item {\\n\\t\\tmargin-left: auto;\\n\\t\\t~ .action-item,\\n\\t\\t~ .sharing-entry__loading {\\n\\t\\t\\tmargin-left: 0;\\n\\t\\t}\\n\\t}\\n\\n\\t.icon-checkmark-color {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry[data-v-3483f0f7]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-3483f0f7]{padding:8px;line-height:1.2em;position:relative;flex:1 1;min-width:0}.sharing-entry__desc p[data-v-3483f0f7]{color:var(--color-text-maxcontrast)}.sharing-entry__title[data-v-3483f0f7]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:inherit}.sharing-entry__actions[data-v-3483f0f7]{margin-left:auto !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntrySimple.vue\"],\"names\":[],\"mappings\":\"AA2FA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,WAAA,CACA,iBAAA,CACA,iBAAA,CACA,QAAA,CACA,WAAA,CACA,wCACC,mCAAA,CAGF,uCACC,kBAAA,CACA,sBAAA,CACA,eAAA,CACA,iBAAA,CAED,yCACC,2BAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tmin-height: 44px;\\n\\t&__desc {\\n\\t\\tpadding: 8px;\\n\\t\\tline-height: 1.2em;\\n\\t\\tposition: relative;\\n\\t\\tflex: 1 1;\\n\\t\\tmin-width: 0;\\n\\t\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\t&__title {\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\toverflow: hidden;\\n\\t\\tmax-width: inherit;\\n\\t}\\n\\t&__actions {\\n\\t\\tmargin-left: auto !important;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-input{width:100%;margin:10px 0}.sharing-input .multiselect__option span[lookup] .avatardiv{background-image:var(--icon-search-white);background-repeat:no-repeat;background-position:center;background-color:var(--color-text-maxcontrast) !important}.sharing-input .multiselect__option span[lookup] .avatardiv div{display:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingInput.vue\"],\"names\":[],\"mappings\":\"AA0gBA,eACC,UAAA,CACA,aAAA,CAKE,4DACC,yCAAA,CACA,2BAAA,CACA,0BAAA,CACA,yDAAA,CACA,gEACC,YAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.sharing-input {\\n\\twidth: 100%;\\n\\tmargin: 10px 0;\\n\\n\\t// properly style the lookup entry\\n\\t.multiselect__option {\\n\\t\\tspan[lookup] {\\n\\t\\t\\t.avatardiv {\\n\\t\\t\\t\\tbackground-image: var(--icon-search-white);\\n\\t\\t\\t\\tbackground-repeat: no-repeat;\\n\\t\\t\\t\\tbackground-position: center;\\n\\t\\t\\t\\tbackground-color: var(--color-text-maxcontrast) !important;\\n\\t\\t\\t\\tdiv {\\n\\t\\t\\t\\t\\tdisplay: none;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry__inherited .avatar-shared[data-v-7a52663c]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/views/SharingInherited.vue\"],\"names\":[],\"mappings\":\"AA8JC,0DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.sharing-entry__inherited {\\n\\t.avatar-shared {\\n\\t\\twidth: 32px;\\n\\t\\theight: 32px;\\n\\t\\tline-height: 32px;\\n\\t\\tfont-size: 18px;\\n\\t\\tbackground-color: var(--color-text-maxcontrast);\\n\\t\\tborder-radius: 50%;\\n\\t\\tflex-shrink: 0;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".emptyContentWithSections[data-v-b6bc0cd2]{margin:1rem auto}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/views/SharingTab.vue\"],\"names\":[],\"mappings\":\"AAyWA,2CACC,gBAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.emptyContentWithSections {\\n\\tmargin: 1rem auto;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(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 = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 7870;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t7870: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(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(function(id) { return 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], function() { return __webpack_require__(21883); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","Config","document","getElementById","dataset","allowPublicUpload","value","OC","appConfig","core","federatedCloudShareDoc","expireDateString","this","isDefaultExpireDateEnabled","date","window","moment","utc","expireAfterDays","defaultExpireDate","add","format","isDefaultInternalExpireDateEnabled","defaultInternalExpireDate","isDefaultRemoteExpireDateEnabled","defaultRemoteExpireDate","enforcePasswordForPublicLink","enableLinkPasswordByDefault","defaultExpireDateEnforced","defaultExpireDateEnabled","defaultInternalExpireDateEnforced","defaultRemoteExpireDateEnforced","defaultInternalExpireDateEnabled","remoteShareAllowed","capabilities","getCapabilities","undefined","files_sharing","sharebymail","public","enabled","resharingAllowed","password","enforced","sharee","always_show_unique","allowGroupSharing","parseInt","config","password_policy","Share","ocsData","ocs","data","hide_download","mail_send","_share","id","share_type","permissions","uid_owner","displayname_owner","share_with","share_with_displayname","share_with_displayname_unique","share_with_link","share_with_avatar","uid_file_owner","displayname_file_owner","stime","expiration","token","note","label","state","password_expiration_time","passwordExpirationTime","send_password_by_talk","sendPasswordByTalk","path","item_type","mimetype","file_source","file_target","file_parent","PERMISSION_READ","PERMISSION_CREATE","PERMISSION_DELETE","PERMISSION_UPDATE","PERMISSION_SHARE","can_edit","can_delete","via_fileid","via_path","parent","storage_id","storage","item_source","status","SHARE_TYPES","ShareTypes","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","_h","$createElement","_c","_self","staticClass","_t","_v","directives","name","rawName","expression","_s","title","subtitle","_e","$slots","attrs","ariaExpandedValue","t","internalLinkSubtitle","scopedSlots","_u","key","fn","proxy","ref","internalLink","copied","copySuccess","on","$event","preventDefault","copyLink","apply","arguments","clipboardTooltip","passwordSet","passwordPolicy","api","generate","axios","request","console","info","Array","fill","reduce","prev","curr","charAt","Math","floor","random","length","shareUrl","generateOcsUrl","methods","createShare","shareType","shareWith","publicUpload","expireDate","error","errorMessage","response","meta","message","Notification","showTemporary","type","deleteShare","updateShare","properties","Error","canReshare","loading","inputPlaceholder","asyncFind","addShare","noResultText","mixins","SharesRequests","props","fileInfo","Object","default","required","share","isUnique","Boolean","errors","saving","open","updateQueue","PQueue","concurrency","reactiveState","computed","hasNote","get","set","dateTomorrow","lang","weekdaysShort","dayNamesShort","monthsShort","monthNamesShort","formatLocale","firstDayOfWeek","firstDay","weekdaysMin","monthFormat","isShareOwner","owner","getCurrentUser","uid","checkShare","trim","expirationDate","isValid","onExpirationChange","queueUpdate","onExpirationDisable","onNoteChange","$set","onNoteSubmit","newNote","$delete","onDelete","debug","$emit","propertyNames","map","p","toString","updatedShare","indexOf","onSyncError","property","propertyEl","$refs","$el","focusable","querySelector","focus","debounceQueueUpdate","debounce","disabledDate","dateMoment","isBefore","dateMaxEnforced","isSameOrAfter","shareWithDisplayName","initiator","ownerDisplayName","viaPath","viaFileid","viaFileTargetUrl","folder","viaFolderName","mainTitle","subTitle","showInheritedShares","showInheritedSharesIcon","stopPropagation","toggleInheritedShares","toggleTooltip","_l","is","_g","_b","tag","action","handlers","text","ATOMIC_PERMISSIONS","NONE","READ","UPDATE","CREATE","DELETE","SHARE","BUNDLED_PERMISSIONS","READ_ONLY","UPLOAD_AND_UPDATE","FILE_DROP","ALL","hasPermissions","initialPermissionSet","permissionsToCheck","permissionsSetIsValid","permissionsSet","togglePermissions","permissionsToToggle","permissionsToSubtract","subtractPermissions","permissionsToAdd","addPermissions","permissionSet","isFolder","shareHasPermissions","atomicPermissions","toggleSharePermissions","fileHasCreatePermission","isPublicUploadEnabled","showCustomPermissionsForm","class","sharePermissionsSetIsValid","canToggleSharePermissions","sharePermissionEqual","bundledPermissions","randomFormName","setSharePermissions","sharePermissionsIsBundle","sharePermissionsSummary","isEmailShareType","shareLink","pending","pendingPassword","pendingExpirationDate","onMenuClose","canEdit","content","show","trigger","defaultContainer","modifiers","newLabel","onLabelChange","onLabelSubmit","hideDownload","isPasswordProtected","onPasswordDisable","hasUnsavedPassword","newPassword","onPasswordChange","onPasswordSubmit","isPasswordProtectedByTalk","canTogglePasswordProtectedByTalkAvailable","onPasswordProtectedByTalkChange","hasExpirationDate","isDefaultExpireDateEnforced","index","icon","url","onNewLinkShare","isPasswordPolicyEnabled","minLength","model","callback","$$v","onCancel","hasLinkShares","shares","awaitForShare","removeShare","SHARE_TYPE_USER","shareWithAvatar","shareWithLink","shareWithDisplayNameUnique","permissionsEdit","canSetEdit","canCreate","permissionsCreate","canSetCreate","canDelete","permissionsDelete","canSetDelete","permissionsShare","canSetReshare","isDefaultInternalExpireDateEnforced","group","escape","circle","conversation","emptyContentWithSections","sections","sharedWithMe","user","displayName","linkShares","reshare","section","refInFor","ShareSearch","_state","results","result","handler","push","ExternalLinkActions","actions","warn","ExternalShareActions","isArray","values","every","findIndex","check","TabSections","_sections","OCA","Sharing","assign","ShareTabSections","Vue","n","VueClipboard","View","SharingTab","TabInstance","addEventListener","Files","Sidebar","registerTab","Tab","mount","el","context","$destroy","update","$mount","destroy","___CSS_LOADER_EXPORT___","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","call","m","amdD","amdO","O","chunkIds","priority","notFulfilled","Infinity","i","fulfilled","j","keys","splice","r","getter","__esModule","d","a","definition","o","defineProperty","enumerable","g","globalThis","Function","e","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","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_sharing-files_sharing_tab.js?v=2fbe5c0db42d4150aacc","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/files_sharing/src/services/ConfigService.js","webpack:///nextcloud/apps/files_sharing/src/models/Share.js","webpack:///nextcloud/apps/files_sharing/src/mixins/ShareTypes.js","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntrySimple.vue?6639","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntrySimple.vue?cb12","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue?vue&type=template&id=3483f0f7&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInternal.vue?3479","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInternal.vue?4c20","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue?vue&type=template&id=739d8480&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/utils/GeneratePassword.js","webpack:///nextcloud/apps/files_sharing/src/mixins/ShareRequests.js","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingInput.vue?1f8b","webpack://nextcloud/./apps/files_sharing/src/components/SharingInput.vue?3d7c","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue?vue&type=template&id=70f57b32&","webpack:///nextcloud/apps/files_sharing/src/mixins/SharesMixin.js","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInherited.vue?b36f","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInherited.vue?0e5a","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue?vue&type=template&id=29845767&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/views/SharingInherited.vue?7b89","webpack://nextcloud/./apps/files_sharing/src/views/SharingInherited.vue?1677","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue?vue&type=template&id=7a52663c&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/ExternalShareAction.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/components/ExternalShareAction.vue","webpack://nextcloud/./apps/files_sharing/src/components/ExternalShareAction.vue?9bf3","webpack:///nextcloud/apps/files_sharing/src/components/ExternalShareAction.vue?vue&type=template&id=29f555e7&","webpack:///nextcloud/apps/files_sharing/src/lib/SharePermissionsToolBox.js","webpack:///nextcloud/apps/files_sharing/src/components/SharePermissionsEditor.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/components/SharePermissionsEditor.vue","webpack://nextcloud/./apps/files_sharing/src/components/SharePermissionsEditor.vue?c4af","webpack://nextcloud/./apps/files_sharing/src/components/SharePermissionsEditor.vue?f133","webpack:///nextcloud/apps/files_sharing/src/components/SharePermissionsEditor.vue?vue&type=template&id=ea414898&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryLink.vue?9336","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryLink.vue?af90","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue?vue&type=template&id=16656e50&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/views/SharingLinkList.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/views/SharingLinkList.vue","webpack://nextcloud/./apps/files_sharing/src/views/SharingLinkList.vue?a70b","webpack:///nextcloud/apps/files_sharing/src/views/SharingLinkList.vue?vue&type=template&id=8be1a6a2&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntry.vue?0853","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntry.vue?10a7","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue?vue&type=template&id=dc8e346e&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/views/SharingList.vue","webpack:///nextcloud/apps/files_sharing/src/views/SharingList.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/views/SharingList.vue?9f9c","webpack:///nextcloud/apps/files_sharing/src/views/SharingList.vue?vue&type=template&id=0b29d4c0&","webpack:///nextcloud/apps/files_sharing/src/views/SharingTab.vue","webpack:///nextcloud/apps/files_sharing/src/utils/SharedWithMe.js","webpack:///nextcloud/apps/files_sharing/src/views/SharingTab.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/views/SharingTab.vue?54a0","webpack://nextcloud/./apps/files_sharing/src/views/SharingTab.vue?6997","webpack:///nextcloud/apps/files_sharing/src/views/SharingTab.vue?vue&type=template&id=b6bc0cd2&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/services/ShareSearch.js","webpack:///nextcloud/apps/files_sharing/src/services/ExternalLinkActions.js","webpack:///nextcloud/apps/files_sharing/src/services/ExternalShareActions.js","webpack:///nextcloud/apps/files_sharing/src/services/TabSections.js","webpack:///nextcloud/apps/files_sharing/src/files_sharing_tab.js","webpack:///nextcloud/apps/files_sharing/src/components/SharePermissionsEditor.vue?vue&type=style&index=0&id=ea414898&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue?vue&type=style&index=0&id=dc8e346e&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue?vue&type=style&index=0&id=29845767&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue?vue&type=style&index=0&id=739d8480&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue?vue&type=style&index=0&id=16656e50&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue?vue&type=style&index=0&id=3483f0f7&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue?vue&type=style&index=0&lang=scss&","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue?vue&type=style&index=0&id=7a52663c&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/views/SharingTab.vue?vue&type=style&index=0&id=b6bc0cd2&scoped=true&lang=scss&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/amd define","webpack:///nextcloud/webpack/runtime/amd options","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(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(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class Config {\n\n\t/**\n\t * Is public upload allowed on link shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isPublicUploadEnabled() {\n\t\treturn document.getElementsByClassName('files-filestable')[0]\n\t\t\t&& document.getElementsByClassName('files-filestable')[0].dataset.allowPublicUpload === 'yes'\n\t}\n\n\t/**\n\t * Are link share allowed ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isShareWithLinkAllowed() {\n\t\treturn document.getElementById('allowShareWithLink')\n\t\t\t&& document.getElementById('allowShareWithLink').value === 'yes'\n\t}\n\n\t/**\n\t * Get the federated sharing documentation link\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget federatedShareDocLink() {\n\t\treturn OC.appConfig.core.federatedCloudShareDoc\n\t}\n\n\t/**\n\t * Get the default link share expiration date as string\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultExpirationDateString() {\n\t\tlet expireDateString = ''\n\t\tif (this.isDefaultExpireDateEnabled) {\n\t\t\tconst date = window.moment.utc()\n\t\t\tconst expireAfterDays = this.defaultExpireDate\n\t\t\tdate.add(expireAfterDays, 'days')\n\t\t\texpireDateString = date.format('YYYY-MM-DD')\n\t\t}\n\t\treturn expireDateString\n\t}\n\n\t/**\n\t * Get the default internal expiration date as string\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultInternalExpirationDateString() {\n\t\tlet expireDateString = ''\n\t\tif (this.isDefaultInternalExpireDateEnabled) {\n\t\t\tconst date = window.moment.utc()\n\t\t\tconst expireAfterDays = this.defaultInternalExpireDate\n\t\t\tdate.add(expireAfterDays, 'days')\n\t\t\texpireDateString = date.format('YYYY-MM-DD')\n\t\t}\n\t\treturn expireDateString\n\t}\n\n\t/**\n\t * Get the default remote expiration date as string\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultRemoteExpirationDateString() {\n\t\tlet expireDateString = ''\n\t\tif (this.isDefaultRemoteExpireDateEnabled) {\n\t\t\tconst date = window.moment.utc()\n\t\t\tconst expireAfterDays = this.defaultRemoteExpireDate\n\t\t\tdate.add(expireAfterDays, 'days')\n\t\t\texpireDateString = date.format('YYYY-MM-DD')\n\t\t}\n\t\treturn expireDateString\n\t}\n\n\t/**\n\t * Are link shares password-enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget enforcePasswordForPublicLink() {\n\t\treturn OC.appConfig.core.enforcePasswordForPublicLink === true\n\t}\n\n\t/**\n\t * Is password asked by default on link shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget enableLinkPasswordByDefault() {\n\t\treturn OC.appConfig.core.enableLinkPasswordByDefault === true\n\t}\n\n\t/**\n\t * Is link shares expiration enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultExpireDateEnforced() {\n\t\treturn OC.appConfig.core.defaultExpireDateEnforced === true\n\t}\n\n\t/**\n\t * Is there a default expiration date for new link shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultExpireDateEnabled() {\n\t\treturn OC.appConfig.core.defaultExpireDateEnabled === true\n\t}\n\n\t/**\n\t * Is internal shares expiration enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultInternalExpireDateEnforced() {\n\t\treturn OC.appConfig.core.defaultInternalExpireDateEnforced === true\n\t}\n\n\t/**\n\t * Is remote shares expiration enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultRemoteExpireDateEnforced() {\n\t\treturn OC.appConfig.core.defaultRemoteExpireDateEnforced === true\n\t}\n\n\t/**\n\t * Is there a default expiration date for new internal shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultInternalExpireDateEnabled() {\n\t\treturn OC.appConfig.core.defaultInternalExpireDateEnabled === true\n\t}\n\n\t/**\n\t * Are users on this server allowed to send shares to other servers ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isRemoteShareAllowed() {\n\t\treturn OC.appConfig.core.remoteShareAllowed === true\n\t}\n\n\t/**\n\t * Is sharing my mail (link share) enabled ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isMailShareAllowed() {\n\t\tconst capabilities = OC.getCapabilities()\n\t\t// eslint-disable-next-line camelcase\n\t\treturn capabilities?.files_sharing?.sharebymail !== undefined\n\t\t\t// eslint-disable-next-line camelcase\n\t\t\t&& capabilities?.files_sharing?.public?.enabled === true\n\t}\n\n\t/**\n\t * Get the default days to link shares expiration\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultExpireDate() {\n\t\treturn OC.appConfig.core.defaultExpireDate\n\t}\n\n\t/**\n\t * Get the default days to internal shares expiration\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultInternalExpireDate() {\n\t\treturn OC.appConfig.core.defaultInternalExpireDate\n\t}\n\n\t/**\n\t * Get the default days to remote shares expiration\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultRemoteExpireDate() {\n\t\treturn OC.appConfig.core.defaultRemoteExpireDate\n\t}\n\n\t/**\n\t * Is resharing allowed ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isResharingAllowed() {\n\t\treturn OC.appConfig.core.resharingAllowed === true\n\t}\n\n\t/**\n\t * Is password enforced for mail shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isPasswordForMailSharesRequired() {\n\t\treturn (OC.getCapabilities().files_sharing.sharebymail === undefined) ? false : OC.getCapabilities().files_sharing.sharebymail.password.enforced\n\t}\n\n\t/**\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget shouldAlwaysShowUnique() {\n\t\treturn (OC.getCapabilities().files_sharing?.sharee?.always_show_unique === true)\n\t}\n\n\t/**\n\t * Is sharing with groups allowed ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget allowGroupSharing() {\n\t\treturn OC.appConfig.core.allowGroupSharing === true\n\t}\n\n\t/**\n\t * Get the maximum results of a share search\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget maxAutocompleteResults() {\n\t\treturn parseInt(OC.config['sharing.maxAutocompleteResults'], 10) || 25\n\t}\n\n\t/**\n\t * Get the minimal string length\n\t * to initiate a share search\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget minSearchStringLength() {\n\t\treturn parseInt(OC.config['sharing.minSearchStringLength'], 10) || 0\n\t}\n\n\t/**\n\t * Get the password policy config\n\t *\n\t * @return {object}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget passwordPolicy() {\n\t\tconst capabilities = OC.getCapabilities()\n\t\treturn capabilities.password_policy ? capabilities.password_policy : {}\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Gary Kim <gary@garykim.dev>\n * @author Georg Ehrke <oc.list@georgehrke.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class Share {\n\n\t_share\n\n\t/**\n\t * Create the share object\n\t *\n\t * @param {object} ocsData ocs request response\n\t */\n\tconstructor(ocsData) {\n\t\tif (ocsData.ocs && ocsData.ocs.data && ocsData.ocs.data[0]) {\n\t\t\tocsData = ocsData.ocs.data[0]\n\t\t}\n\n\t\t// convert int into boolean\n\t\tocsData.hide_download = !!ocsData.hide_download\n\t\tocsData.mail_send = !!ocsData.mail_send\n\n\t\t// store state\n\t\tthis._share = ocsData\n\t}\n\n\t/**\n\t * Get the share state\n\t * ! used for reactivity purpose\n\t * Do not remove. It allow vuejs to\n\t * inject its watchers into the #share\n\t * state and make the whole class reactive\n\t *\n\t * @return {object} the share raw state\n\t * @readonly\n\t * @memberof Sidebar\n\t */\n\tget state() {\n\t\treturn this._share\n\t}\n\n\t/**\n\t * get the share id\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget id() {\n\t\treturn this._share.id\n\t}\n\n\t/**\n\t * Get the share type\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget type() {\n\t\treturn this._share.share_type\n\t}\n\n\t/**\n\t * Get the share permissions\n\t * See OC.PERMISSION_* variables\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget permissions() {\n\t\treturn this._share.permissions\n\t}\n\n\t/**\n\t * Set the share permissions\n\t * See OC.PERMISSION_* variables\n\t *\n\t * @param {number} permissions valid permission, See OC.PERMISSION_* variables\n\t * @memberof Share\n\t */\n\tset permissions(permissions) {\n\t\tthis._share.permissions = permissions\n\t}\n\n\t// SHARE OWNER --------------------------------------------------\n\t/**\n\t * Get the share owner uid\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget owner() {\n\t\treturn this._share.uid_owner\n\t}\n\n\t/**\n\t * Get the share owner's display name\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget ownerDisplayName() {\n\t\treturn this._share.displayname_owner\n\t}\n\n\t// SHARED WITH --------------------------------------------------\n\t/**\n\t * Get the share with entity uid\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWith() {\n\t\treturn this._share.share_with\n\t}\n\n\t/**\n\t * Get the share with entity display name\n\t * fallback to its uid if none\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithDisplayName() {\n\t\treturn this._share.share_with_displayname\n\t\t\t|| this._share.share_with\n\t}\n\n\t/**\n\t * Unique display name in case of multiple\n\t * duplicates results with the same name.\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithDisplayNameUnique() {\n\t\treturn this._share.share_with_displayname_unique\n\t\t\t|| this._share.share_with\n\t}\n\n\t/**\n\t * Get the share with entity link\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithLink() {\n\t\treturn this._share.share_with_link\n\t}\n\n\t/**\n\t * Get the share with avatar if any\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithAvatar() {\n\t\treturn this._share.share_with_avatar\n\t}\n\n\t// SHARED FILE OR FOLDER OWNER ----------------------------------\n\t/**\n\t * Get the shared item owner uid\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget uidFileOwner() {\n\t\treturn this._share.uid_file_owner\n\t}\n\n\t/**\n\t * Get the shared item display name\n\t * fallback to its uid if none\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget displaynameFileOwner() {\n\t\treturn this._share.displayname_file_owner\n\t\t\t|| this._share.uid_file_owner\n\t}\n\n\t// TIME DATA ----------------------------------------------------\n\t/**\n\t * Get the share creation timestamp\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget createdTime() {\n\t\treturn this._share.stime\n\t}\n\n\t/**\n\t * Get the expiration date as a string format\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget expireDate() {\n\t\treturn this._share.expiration\n\t}\n\n\t/**\n\t * Set the expiration date as a string format\n\t * e.g. YYYY-MM-DD\n\t *\n\t * @param {string} date the share expiration date\n\t * @memberof Share\n\t */\n\tset expireDate(date) {\n\t\tthis._share.expiration = date\n\t}\n\n\t// EXTRA DATA ---------------------------------------------------\n\t/**\n\t * Get the public share token\n\t *\n\t * @return {string} the token\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget token() {\n\t\treturn this._share.token\n\t}\n\n\t/**\n\t * Get the share note if any\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget note() {\n\t\treturn this._share.note\n\t}\n\n\t/**\n\t * Set the share note if any\n\t *\n\t * @param {string} note the note\n\t * @memberof Share\n\t */\n\tset note(note) {\n\t\tthis._share.note = note\n\t}\n\n\t/**\n\t * Get the share label if any\n\t * Should only exist on link shares\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget label() {\n\t\treturn this._share.label\n\t}\n\n\t/**\n\t * Set the share label if any\n\t * Should only be set on link shares\n\t *\n\t * @param {string} label the label\n\t * @memberof Share\n\t */\n\tset label(label) {\n\t\tthis._share.label = label\n\t}\n\n\t/**\n\t * Have a mail been sent\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget mailSend() {\n\t\treturn this._share.mail_send === true\n\t}\n\n\t/**\n\t * Hide the download button on public page\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hideDownload() {\n\t\treturn this._share.hide_download === true\n\t}\n\n\t/**\n\t * Hide the download button on public page\n\t *\n\t * @param {boolean} state hide the button ?\n\t * @memberof Share\n\t */\n\tset hideDownload(state) {\n\t\tthis._share.hide_download = state === true\n\t}\n\n\t/**\n\t * Password protection of the share\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget password() {\n\t\treturn this._share.password\n\t}\n\n\t/**\n\t * Password protection of the share\n\t *\n\t * @param {string} password the share password\n\t * @memberof Share\n\t */\n\tset password(password) {\n\t\tthis._share.password = password\n\t}\n\n\t/**\n\t * Password expiration time\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget passwordExpirationTime() {\n\t\treturn this._share.password_expiration_time\n\t}\n\n\t/**\n\t * Password expiration time\n\t *\n\t * @param {string} password exipration time\n\t * @memberof Share\n\t */\n\tset passwordExpirationTime(passwordExpirationTime) {\n\t\tthis._share.password_expiration_time = passwordExpirationTime\n\t}\n\n\t/**\n\t * Password protection by Talk of the share\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget sendPasswordByTalk() {\n\t\treturn this._share.send_password_by_talk\n\t}\n\n\t/**\n\t * Password protection by Talk of the share\n\t *\n\t * @param {boolean} sendPasswordByTalk whether to send the password by Talk\n\t * or not\n\t * @memberof Share\n\t */\n\tset sendPasswordByTalk(sendPasswordByTalk) {\n\t\tthis._share.send_password_by_talk = sendPasswordByTalk\n\t}\n\n\t// SHARED ITEM DATA ---------------------------------------------\n\t/**\n\t * Get the shared item absolute full path\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget path() {\n\t\treturn this._share.path\n\t}\n\n\t/**\n\t * Return the item type: file or folder\n\t *\n\t * @return {string} 'folder' or 'file'\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget itemType() {\n\t\treturn this._share.item_type\n\t}\n\n\t/**\n\t * Get the shared item mimetype\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget mimetype() {\n\t\treturn this._share.mimetype\n\t}\n\n\t/**\n\t * Get the shared item id\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget fileSource() {\n\t\treturn this._share.file_source\n\t}\n\n\t/**\n\t * Get the target path on the receiving end\n\t * e.g the file /xxx/aaa will be shared in\n\t * the receiving root as /aaa, the fileTarget is /aaa\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget fileTarget() {\n\t\treturn this._share.file_target\n\t}\n\n\t/**\n\t * Get the parent folder id if any\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget fileParent() {\n\t\treturn this._share.file_parent\n\t}\n\n\t// PERMISSIONS Shortcuts\n\n\t/**\n\t * Does this share have READ permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasReadPermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_READ))\n\t}\n\n\t/**\n\t * Does this share have CREATE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasCreatePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_CREATE))\n\t}\n\n\t/**\n\t * Does this share have DELETE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasDeletePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_DELETE))\n\t}\n\n\t/**\n\t * Does this share have UPDATE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasUpdatePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_UPDATE))\n\t}\n\n\t/**\n\t * Does this share have SHARE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasSharePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_SHARE))\n\t}\n\n\t// PERMISSIONS Shortcuts for the CURRENT USER\n\t// ! the permissions above are the share settings,\n\t// ! meaning the permissions for the recipient\n\t/**\n\t * Can the current user EDIT this share ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget canEdit() {\n\t\treturn this._share.can_edit === true\n\t}\n\n\t/**\n\t * Can the current user DELETE this share ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget canDelete() {\n\t\treturn this._share.can_delete === true\n\t}\n\n\t/**\n\t * Top level accessible shared folder fileid for the current user\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget viaFileid() {\n\t\treturn this._share.via_fileid\n\t}\n\n\t/**\n\t * Top level accessible shared folder path for the current user\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget viaPath() {\n\t\treturn this._share.via_path\n\t}\n\n\t// TODO: SORT THOSE PROPERTIES\n\n\tget parent() {\n\t\treturn this._share.parent\n\t}\n\n\tget storageId() {\n\t\treturn this._share.storage_id\n\t}\n\n\tget storage() {\n\t\treturn this._share.storage\n\t}\n\n\tget itemSource() {\n\t\treturn this._share.item_source\n\t}\n\n\tget status() {\n\t\treturn this._share.status\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { Type as ShareTypes } from '@nextcloud/sharing'\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tSHARE_TYPES: ShareTypes,\n\t\t}\n\t},\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntrySimple.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntrySimple.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<li class=\"sharing-entry\">\n\t\t<slot name=\"avatar\" />\n\t\t<div v-tooltip=\"tooltip\" class=\"sharing-entry__desc\">\n\t\t\t<span class=\"sharing-entry__title\">{{ title }}</span>\n\t\t\t<p v-if=\"subtitle\">\n\t\t\t\t{{ subtitle }}\n\t\t\t</p>\n\t\t</div>\n\t\t<Actions v-if=\"$slots['default']\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\tmenu-align=\"right\"\n\t\t\t:aria-expanded=\"ariaExpandedValue\">\n\t\t\t<slot />\n\t\t</Actions>\n\t</li>\n</template>\n\n<script>\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport Tooltip from '@nextcloud/vue/dist/Directives/Tooltip'\n\nexport default {\n\tname: 'SharingEntrySimple',\n\n\tcomponents: {\n\t\tActions,\n\t},\n\n\tdirectives: {\n\t\tTooltip,\n\t},\n\n\tprops: {\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t\trequired: true,\n\t\t},\n\t\ttooltip: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tsubtitle: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tisUnique: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tariaExpanded: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tariaExpandedValue() {\n\t\t\tif (this.ariaExpanded === null) {\n\t\t\t\treturn this.ariaExpanded\n\t\t\t}\n\t\t\treturn this.ariaExpanded ? 'true' : 'false'\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\t&__desc {\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tposition: relative;\n\t\tflex: 1 1;\n\t\tmin-width: 0;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__title {\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\tmax-width: inherit;\n\t}\n\t&__actions {\n\t\tmargin-left: auto !important;\n\t}\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntrySimple.vue?vue&type=style&index=0&id=3483f0f7&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntrySimple.vue?vue&type=style&index=0&id=3483f0f7&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntrySimple.vue?vue&type=template&id=3483f0f7&scoped=true&\"\nimport script from \"./SharingEntrySimple.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntrySimple.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntrySimple.vue?vue&type=style&index=0&id=3483f0f7&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3483f0f7\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{staticClass:\"sharing-entry\"},[_vm._t(\"avatar\"),_vm._v(\" \"),_c('div',{directives:[{name:\"tooltip\",rawName:\"v-tooltip\",value:(_vm.tooltip),expression:\"tooltip\"}],staticClass:\"sharing-entry__desc\"},[_c('span',{staticClass:\"sharing-entry__title\"},[_vm._v(_vm._s(_vm.title))]),_vm._v(\" \"),(_vm.subtitle)?_c('p',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.subtitle)+\"\\n\\t\\t\")]):_vm._e()]),_vm._v(\" \"),(_vm.$slots['default'])?_c('Actions',{staticClass:\"sharing-entry__actions\",attrs:{\"menu-align\":\"right\",\"aria-expanded\":_vm.ariaExpandedValue}},[_vm._t(\"default\")],2):_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n<template>\n\t<ul>\n\t\t<SharingEntrySimple class=\"sharing-entry__internal\"\n\t\t\t:title=\"t('files_sharing', 'Internal link')\"\n\t\t\t:subtitle=\"internalLinkSubtitle\">\n\t\t\t<template #avatar>\n\t\t\t\t<div class=\"avatar-external icon-external-white\" />\n\t\t\t</template>\n\n\t\t\t<ActionLink ref=\"copyButton\"\n\t\t\t\t:href=\"internalLink\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\t:icon=\"copied && copySuccess ? 'icon-checkmark-color' : 'icon-clippy'\"\n\t\t\t\t@click.prevent=\"copyLink\">\n\t\t\t\t{{ clipboardTooltip }}\n\t\t\t</ActionLink>\n\t\t</SharingEntrySimple>\n\t</ul>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport ActionLink from '@nextcloud/vue/dist/Components/ActionLink'\nimport SharingEntrySimple from './SharingEntrySimple'\n\nexport default {\n\tname: 'SharingEntryInternal',\n\n\tcomponents: {\n\t\tActionLink,\n\t\tSharingEntrySimple,\n\t},\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tcopied: false,\n\t\t\tcopySuccess: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Get the internal link to this file id\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tinternalLink() {\n\t\t\treturn window.location.protocol + '//' + window.location.host + generateUrl('/f/') + this.fileInfo.id\n\t\t},\n\n\t\t/**\n\t\t * Clipboard v-tooltip message\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tclipboardTooltip() {\n\t\t\tif (this.copied) {\n\t\t\t\treturn this.copySuccess\n\t\t\t\t\t? t('files_sharing', 'Link copied')\n\t\t\t\t\t: t('files_sharing', 'Cannot copy, please copy the link manually')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Copy to clipboard')\n\t\t},\n\n\t\tinternalLinkSubtitle() {\n\t\t\tif (this.fileInfo.type === 'dir') {\n\t\t\t\treturn t('files_sharing', 'Only works for users with access to this folder')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Only works for users with access to this file')\n\t\t},\n\t},\n\n\tmethods: {\n\t\tasync copyLink() {\n\t\t\ttry {\n\t\t\t\tawait this.$copyText(this.internalLink)\n\t\t\t\t// focus and show the tooltip\n\t\t\t\tthis.$refs.copyButton.$el.focus()\n\t\t\t\tthis.copySuccess = true\n\t\t\t\tthis.copied = true\n\t\t\t} catch (error) {\n\t\t\t\tthis.copySuccess = false\n\t\t\t\tthis.copied = true\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.copySuccess = false\n\t\t\t\t\tthis.copied = false\n\t\t\t\t}, 4000)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry__internal {\n\t.avatar-external {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInternal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInternal.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInternal.vue?vue&type=style&index=0&id=739d8480&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInternal.vue?vue&type=style&index=0&id=739d8480&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntryInternal.vue?vue&type=template&id=739d8480&scoped=true&\"\nimport script from \"./SharingEntryInternal.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntryInternal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntryInternal.vue?vue&type=style&index=0&id=739d8480&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"739d8480\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',[_c('SharingEntrySimple',{staticClass:\"sharing-entry__internal\",attrs:{\"title\":_vm.t('files_sharing', 'Internal link'),\"subtitle\":_vm.internalLinkSubtitle},scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('div',{staticClass:\"avatar-external icon-external-white\"})]},proxy:true}])},[_vm._v(\" \"),_c('ActionLink',{ref:\"copyButton\",attrs:{\"href\":_vm.internalLink,\"target\":\"_blank\",\"icon\":_vm.copied && _vm.copySuccess ? 'icon-checkmark-color' : 'icon-clippy'},on:{\"click\":function($event){$event.preventDefault();return _vm.copyLink.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.clipboardTooltip)+\"\\n\\t\\t\")])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport Config from '../services/ConfigService'\n\nconst config = new Config()\nconst passwordSet = 'abcdefgijkmnopqrstwxyzABCDEFGHJKLMNPQRSTWXYZ23456789'\n\n/**\n * Generate a valid policy password or\n * request a valid password if password_policy\n * is enabled\n *\n * @return {string} a valid password\n */\nexport default async function() {\n\t// password policy is enabled, let's request a pass\n\tif (config.passwordPolicy.api && config.passwordPolicy.api.generate) {\n\t\ttry {\n\t\t\tconst request = await axios.get(config.passwordPolicy.api.generate)\n\t\t\tif (request.data.ocs.data.password) {\n\t\t\t\treturn request.data.ocs.data.password\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.info('Error generating password from password_policy', error)\n\t\t}\n\t}\n\n\t// generate password of 10 length based on passwordSet\n\treturn Array(10).fill(0)\n\t\t.reduce((prev, curr) => {\n\t\t\tprev += passwordSet.charAt(Math.floor(Math.random() * passwordSet.length))\n\t\t\treturn prev\n\t\t}, '')\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n// TODO: remove when ie not supported\nimport 'url-search-params-polyfill'\n\nimport { generateOcsUrl } from '@nextcloud/router'\nimport axios from '@nextcloud/axios'\nimport Share from '../models/Share'\n\nconst shareUrl = generateOcsUrl('apps/files_sharing/api/v1/shares')\n\nexport default {\n\tmethods: {\n\t\t/**\n\t\t * Create a new share\n\t\t *\n\t\t * @param {object} data destructuring object\n\t\t * @param {string} data.path path to the file/folder which should be shared\n\t\t * @param {number} data.shareType 0 = user; 1 = group; 3 = public link; 6 = federated cloud share\n\t\t * @param {string} data.shareWith user/group id with which the file should be shared (optional for shareType > 1)\n\t\t * @param {boolean} [data.publicUpload=false] allow public upload to a public shared folder\n\t\t * @param {string} [data.password] password to protect public link Share with\n\t\t * @param {number} [data.permissions=31] 1 = read; 2 = update; 4 = create; 8 = delete; 16 = share; 31 = all (default: 31, for public shares: 1)\n\t\t * @param {boolean} [data.sendPasswordByTalk=false] send the password via a talk conversation\n\t\t * @param {string} [data.expireDate=''] expire the shareautomatically after\n\t\t * @param {string} [data.label=''] custom label\n\t\t * @return {Share} the new share\n\t\t * @throws {Error}\n\t\t */\n\t\tasync createShare({ path, permissions, shareType, shareWith, publicUpload, password, sendPasswordByTalk, expireDate, label }) {\n\t\t\ttry {\n\t\t\t\tconst request = await axios.post(shareUrl, { path, permissions, shareType, shareWith, publicUpload, password, sendPasswordByTalk, expireDate, label })\n\t\t\t\tif (!request?.data?.ocs) {\n\t\t\t\t\tthrow request\n\t\t\t\t}\n\t\t\t\treturn new Share(request.data.ocs.data)\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error while creating share', error)\n\t\t\t\tconst errorMessage = error?.response?.data?.ocs?.meta?.message\n\t\t\t\tOC.Notification.showTemporary(\n\t\t\t\t\terrorMessage ? t('files_sharing', 'Error creating the share: {errorMessage}', { errorMessage }) : t('files_sharing', 'Error creating the share'),\n\t\t\t\t\t{ type: 'error' }\n\t\t\t\t)\n\t\t\t\tthrow error\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Delete a share\n\t\t *\n\t\t * @param {number} id share id\n\t\t * @throws {Error}\n\t\t */\n\t\tasync deleteShare(id) {\n\t\t\ttry {\n\t\t\t\tconst request = await axios.delete(shareUrl + `/${id}`)\n\t\t\t\tif (!request?.data?.ocs) {\n\t\t\t\t\tthrow request\n\t\t\t\t}\n\t\t\t\treturn true\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error while deleting share', error)\n\t\t\t\tconst errorMessage = error?.response?.data?.ocs?.meta?.message\n\t\t\t\tOC.Notification.showTemporary(\n\t\t\t\t\terrorMessage ? t('files_sharing', 'Error deleting the share: {errorMessage}', { errorMessage }) : t('files_sharing', 'Error deleting the share'),\n\t\t\t\t\t{ type: 'error' }\n\t\t\t\t)\n\t\t\t\tthrow error\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Update a share\n\t\t *\n\t\t * @param {number} id share id\n\t\t * @param {object} properties key-value object of the properties to update\n\t\t */\n\t\tasync updateShare(id, properties) {\n\t\t\ttry {\n\t\t\t\tconst request = await axios.put(shareUrl + `/${id}`, properties)\n\t\t\t\tif (!request?.data?.ocs) {\n\t\t\t\t\tthrow request\n\t\t\t\t} else {\n\t\t\t\t\treturn request.data.ocs.data\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error while updating share', error)\n\t\t\t\tif (error.response.status !== 400) {\n\t\t\t\t\tconst errorMessage = error?.response?.data?.ocs?.meta?.message\n\t\t\t\t\tOC.Notification.showTemporary(\n\t\t\t\t\t\terrorMessage ? t('files_sharing', 'Error updating the share: {errorMessage}', { errorMessage }) : t('files_sharing', 'Error updating the share'),\n\t\t\t\t\t\t{ type: 'error' }\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\tconst message = error.response.data.ocs.meta.message\n\t\t\t\tthrow new Error(message)\n\t\t\t}\n\t\t},\n\t},\n}\n","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<Multiselect ref=\"multiselect\"\n\t\tclass=\"sharing-input\"\n\t\t:clear-on-select=\"true\"\n\t\t:disabled=\"!canReshare\"\n\t\t:hide-selected=\"true\"\n\t\t:internal-search=\"false\"\n\t\t:loading=\"loading\"\n\t\t:options=\"options\"\n\t\t:placeholder=\"inputPlaceholder\"\n\t\t:preselect-first=\"true\"\n\t\t:preserve-search=\"true\"\n\t\t:searchable=\"true\"\n\t\t:user-select=\"true\"\n\t\topen-direction=\"below\"\n\t\tlabel=\"displayName\"\n\t\ttrack-by=\"id\"\n\t\t@search-change=\"asyncFind\"\n\t\t@select=\"addShare\">\n\t\t<template #noOptions>\n\t\t\t{{ t('files_sharing', 'No recommendations. Start typing.') }}\n\t\t</template>\n\t\t<template #noResult>\n\t\t\t{{ noResultText }}\n\t\t</template>\n\t</Multiselect>\n</template>\n\n<script>\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport axios from '@nextcloud/axios'\nimport debounce from 'debounce'\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\n\nimport Config from '../services/ConfigService'\nimport GeneratePassword from '../utils/GeneratePassword'\nimport Share from '../models/Share'\nimport ShareRequests from '../mixins/ShareRequests'\nimport ShareTypes from '../mixins/ShareTypes'\n\nexport default {\n\tname: 'SharingInput',\n\n\tcomponents: {\n\t\tMultiselect,\n\t},\n\n\tmixins: [ShareTypes, ShareRequests],\n\n\tprops: {\n\t\tshares: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\trequired: true,\n\t\t},\n\t\tlinkShares: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\trequired: true,\n\t\t},\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\treshare: {\n\t\t\ttype: Share,\n\t\t\tdefault: null,\n\t\t},\n\t\tcanReshare: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tconfig: new Config(),\n\t\t\tloading: false,\n\t\t\tquery: '',\n\t\t\trecommendations: [],\n\t\t\tShareSearch: OCA.Sharing.ShareSearch.state,\n\t\t\tsuggestions: [],\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Implement ShareSearch\n\t\t * allows external appas to inject new\n\t\t * results into the autocomplete dropdown\n\t\t * Used for the guests app\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\texternalResults() {\n\t\t\treturn this.ShareSearch.results\n\t\t},\n\t\tinputPlaceholder() {\n\t\t\tconst allowRemoteSharing = this.config.isRemoteShareAllowed\n\n\t\t\tif (!this.canReshare) {\n\t\t\t\treturn t('files_sharing', 'Resharing is not allowed')\n\t\t\t}\n\t\t\t// We can always search with email addresses for users too\n\t\t\tif (!allowRemoteSharing) {\n\t\t\t\treturn t('files_sharing', 'Name or email …')\n\t\t\t}\n\n\t\t\treturn t('files_sharing', 'Name, email, or Federated Cloud ID …')\n\t\t},\n\n\t\tisValidQuery() {\n\t\t\treturn this.query && this.query.trim() !== '' && this.query.length > this.config.minSearchStringLength\n\t\t},\n\n\t\toptions() {\n\t\t\tif (this.isValidQuery) {\n\t\t\t\treturn this.suggestions\n\t\t\t}\n\t\t\treturn this.recommendations\n\t\t},\n\n\t\tnoResultText() {\n\t\t\tif (this.loading) {\n\t\t\t\treturn t('files_sharing', 'Searching …')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'No elements found.')\n\t\t},\n\t},\n\n\tmounted() {\n\t\tthis.getRecommendations()\n\t},\n\n\tmethods: {\n\t\tasync asyncFind(query, id) {\n\t\t\t// save current query to check if we display\n\t\t\t// recommendations or search results\n\t\t\tthis.query = query.trim()\n\t\t\tif (this.isValidQuery) {\n\t\t\t\t// start loading now to have proper ux feedback\n\t\t\t\t// during the debounce\n\t\t\t\tthis.loading = true\n\t\t\t\tawait this.debounceGetSuggestions(query)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Get suggestions\n\t\t *\n\t\t * @param {string} search the search query\n\t\t * @param {boolean} [lookup=false] search on lookup server\n\t\t */\n\t\tasync getSuggestions(search, lookup = false) {\n\t\t\tthis.loading = true\n\n\t\t\tif (OC.getCapabilities().files_sharing.sharee.query_lookup_default === true) {\n\t\t\t\tlookup = true\n\t\t\t}\n\n\t\t\tconst shareType = [\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_USER,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_GROUP,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_REMOTE,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_CIRCLE,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_ROOM,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_GUEST,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_DECK,\n\t\t\t]\n\n\t\t\tif (OC.getCapabilities().files_sharing.public.enabled === true) {\n\t\t\t\tshareType.push(this.SHARE_TYPES.SHARE_TYPE_EMAIL)\n\t\t\t}\n\n\t\t\tlet request = null\n\t\t\ttry {\n\t\t\t\trequest = await axios.get(generateOcsUrl('apps/files_sharing/api/v1/sharees'), {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat: 'json',\n\t\t\t\t\t\titemType: this.fileInfo.type === 'dir' ? 'folder' : 'file',\n\t\t\t\t\t\tsearch,\n\t\t\t\t\t\tlookup,\n\t\t\t\t\t\tperPage: this.config.maxAutocompleteResults,\n\t\t\t\t\t\tshareType,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error fetching suggestions', error)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst data = request.data.ocs.data\n\t\t\tconst exact = request.data.ocs.data.exact\n\t\t\tdata.exact = [] // removing exact from general results\n\n\t\t\t// flatten array of arrays\n\t\t\tconst rawExactSuggestions = Object.values(exact).reduce((arr, elem) => arr.concat(elem), [])\n\t\t\tconst rawSuggestions = Object.values(data).reduce((arr, elem) => arr.concat(elem), [])\n\n\t\t\t// remove invalid data and format to user-select layout\n\t\t\tconst exactSuggestions = this.filterOutExistingShares(rawExactSuggestions)\n\t\t\t\t.map(share => this.formatForMultiselect(share))\n\t\t\t\t// sort by type so we can get user&groups first...\n\t\t\t\t.sort((a, b) => a.shareType - b.shareType)\n\t\t\tconst suggestions = this.filterOutExistingShares(rawSuggestions)\n\t\t\t\t.map(share => this.formatForMultiselect(share))\n\t\t\t\t// sort by type so we can get user&groups first...\n\t\t\t\t.sort((a, b) => a.shareType - b.shareType)\n\n\t\t\t// lookup clickable entry\n\t\t\t// show if enabled and not already requested\n\t\t\tconst lookupEntry = []\n\t\t\tif (data.lookupEnabled && !lookup) {\n\t\t\t\tlookupEntry.push({\n\t\t\t\t\tid: 'global-lookup',\n\t\t\t\t\tisNoUser: true,\n\t\t\t\t\tdisplayName: t('files_sharing', 'Search globally'),\n\t\t\t\t\tlookup: true,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\t// if there is a condition specified, filter it\n\t\t\tconst externalResults = this.externalResults.filter(result => !result.condition || result.condition(this))\n\n\t\t\tconst allSuggestions = exactSuggestions.concat(suggestions).concat(externalResults).concat(lookupEntry)\n\n\t\t\t// Count occurances of display names in order to provide a distinguishable description if needed\n\t\t\tconst nameCounts = allSuggestions.reduce((nameCounts, result) => {\n\t\t\t\tif (!result.displayName) {\n\t\t\t\t\treturn nameCounts\n\t\t\t\t}\n\t\t\t\tif (!nameCounts[result.displayName]) {\n\t\t\t\t\tnameCounts[result.displayName] = 0\n\t\t\t\t}\n\t\t\t\tnameCounts[result.displayName]++\n\t\t\t\treturn nameCounts\n\t\t\t}, {})\n\n\t\t\tthis.suggestions = allSuggestions.map(item => {\n\t\t\t\t// Make sure that items with duplicate displayName get the shareWith applied as a description\n\t\t\t\tif (nameCounts[item.displayName] > 1 && !item.desc) {\n\t\t\t\t\treturn { ...item, desc: item.shareWithDisplayNameUnique }\n\t\t\t\t}\n\t\t\t\treturn item\n\t\t\t})\n\n\t\t\tthis.loading = false\n\t\t\tconsole.info('suggestions', this.suggestions)\n\t\t},\n\n\t\t/**\n\t\t * Debounce getSuggestions\n\t\t *\n\t\t * @param {...*} args the arguments\n\t\t */\n\t\tdebounceGetSuggestions: debounce(function(...args) {\n\t\t\tthis.getSuggestions(...args)\n\t\t}, 300),\n\n\t\t/**\n\t\t * Get the sharing recommendations\n\t\t */\n\t\tasync getRecommendations() {\n\t\t\tthis.loading = true\n\n\t\t\tlet request = null\n\t\t\ttry {\n\t\t\t\trequest = await axios.get(generateOcsUrl('apps/files_sharing/api/v1/sharees_recommended'), {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat: 'json',\n\t\t\t\t\t\titemType: this.fileInfo.type,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error fetching recommendations', error)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Add external results from the OCA.Sharing.ShareSearch api\n\t\t\tconst externalResults = this.externalResults.filter(result => !result.condition || result.condition(this))\n\n\t\t\t// flatten array of arrays\n\t\t\tconst rawRecommendations = Object.values(request.data.ocs.data.exact)\n\t\t\t\t.reduce((arr, elem) => arr.concat(elem), [])\n\n\t\t\t// remove invalid data and format to user-select layout\n\t\t\tthis.recommendations = this.filterOutExistingShares(rawRecommendations)\n\t\t\t\t.map(share => this.formatForMultiselect(share))\n\t\t\t\t.concat(externalResults)\n\n\t\t\tthis.loading = false\n\t\t\tconsole.info('recommendations', this.recommendations)\n\t\t},\n\n\t\t/**\n\t\t * Filter out existing shares from\n\t\t * the provided shares search results\n\t\t *\n\t\t * @param {object[]} shares the array of shares object\n\t\t * @return {object[]}\n\t\t */\n\t\tfilterOutExistingShares(shares) {\n\t\t\treturn shares.reduce((arr, share) => {\n\t\t\t\t// only check proper objects\n\t\t\t\tif (typeof share !== 'object') {\n\t\t\t\t\treturn arr\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tif (share.value.shareType === this.SHARE_TYPES.SHARE_TYPE_USER) {\n\t\t\t\t\t\t// filter out current user\n\t\t\t\t\t\tif (share.value.shareWith === getCurrentUser().uid) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// filter out the owner of the share\n\t\t\t\t\t\tif (this.reshare && share.value.shareWith === this.reshare.owner) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// filter out existing mail shares\n\t\t\t\t\tif (share.value.shareType === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\t\t\tconst emails = this.linkShares.map(elem => elem.shareWith)\n\t\t\t\t\t\tif (emails.indexOf(share.value.shareWith.trim()) !== -1) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\t\t\t\t\t} else { // filter out existing shares\n\t\t\t\t\t\t// creating an object of uid => type\n\t\t\t\t\t\tconst sharesObj = this.shares.reduce((obj, elem) => {\n\t\t\t\t\t\t\tobj[elem.shareWith] = elem.type\n\t\t\t\t\t\t\treturn obj\n\t\t\t\t\t\t}, {})\n\n\t\t\t\t\t\t// if shareWith is the same and the share type too, ignore it\n\t\t\t\t\t\tconst key = share.value.shareWith.trim()\n\t\t\t\t\t\tif (key in sharesObj\n\t\t\t\t\t\t\t&& sharesObj[key] === share.value.shareType) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// ALL GOOD\n\t\t\t\t\t// let's add the suggestion\n\t\t\t\t\tarr.push(share)\n\t\t\t\t} catch {\n\t\t\t\t\treturn arr\n\t\t\t\t}\n\t\t\t\treturn arr\n\t\t\t}, [])\n\t\t},\n\n\t\t/**\n\t\t * Get the icon based on the share type\n\t\t *\n\t\t * @param {number} type the share type\n\t\t * @return {string} the icon class\n\t\t */\n\t\tshareTypeToIcon(type) {\n\t\t\tswitch (type) {\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_GUEST:\n\t\t\t\t// default is a user, other icons are here to differenciate\n\t\t\t\t// themselves from it, so let's not display the user icon\n\t\t\t\t// case this.SHARE_TYPES.SHARE_TYPE_REMOTE:\n\t\t\t\t// case this.SHARE_TYPES.SHARE_TYPE_USER:\n\t\t\t\treturn 'icon-user'\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP:\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_GROUP:\n\t\t\t\treturn 'icon-group'\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_EMAIL:\n\t\t\t\treturn 'icon-mail'\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_CIRCLE:\n\t\t\t\treturn 'icon-circle'\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_ROOM:\n\t\t\t\treturn 'icon-room'\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_DECK:\n\t\t\t\treturn 'icon-deck'\n\n\t\t\tdefault:\n\t\t\t\treturn ''\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Format shares for the multiselect options\n\t\t *\n\t\t * @param {object} result select entry item\n\t\t * @return {object}\n\t\t */\n\t\tformatForMultiselect(result) {\n\t\t\tlet subtitle\n\t\t\tif (result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_USER && this.config.shouldAlwaysShowUnique) {\n\t\t\t\tsubtitle = result.shareWithDisplayNameUnique ?? ''\n\t\t\t} else if ((result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_REMOTE\n\t\t\t\t\t|| result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP\n\t\t\t) && result.value.server) {\n\t\t\t\tsubtitle = t('files_sharing', 'on {server}', { server: result.value.server })\n\t\t\t} else if (result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\tsubtitle = result.value.shareWith\n\t\t\t} else {\n\t\t\t\tsubtitle = result.shareWithDescription ?? ''\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tid: `${result.value.shareType}-${result.value.shareWith}`,\n\t\t\t\tshareWith: result.value.shareWith,\n\t\t\t\tshareType: result.value.shareType,\n\t\t\t\tuser: result.uuid || result.value.shareWith,\n\t\t\t\tisNoUser: result.value.shareType !== this.SHARE_TYPES.SHARE_TYPE_USER,\n\t\t\t\tdisplayName: result.name || result.label,\n\t\t\t\tsubtitle,\n\t\t\t\tshareWithDisplayNameUnique: result.shareWithDisplayNameUnique || '',\n\t\t\t\ticon: this.shareTypeToIcon(result.value.shareType),\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Process the new share request\n\t\t *\n\t\t * @param {object} value the multiselect option\n\t\t */\n\t\tasync addShare(value) {\n\t\t\tif (value.lookup) {\n\t\t\t\tawait this.getSuggestions(this.query, true)\n\n\t\t\t\t// focus the input again\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tthis.$refs.multiselect.$el.querySelector('.multiselect__input').focus()\n\t\t\t\t})\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\t// handle externalResults from OCA.Sharing.ShareSearch\n\t\t\tif (value.handler) {\n\t\t\t\tconst share = await value.handler(this)\n\t\t\t\tthis.$emit('add:share', new Share(share))\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\tthis.loading = true\n\t\t\tconsole.debug('Adding a new share from the input for', value)\n\t\t\ttry {\n\t\t\t\tlet password = null\n\n\t\t\t\tif (this.config.enforcePasswordForPublicLink\n\t\t\t\t\t&& value.shareType === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\t\tpassword = await GeneratePassword()\n\t\t\t\t}\n\n\t\t\t\tconst path = (this.fileInfo.path + '/' + this.fileInfo.name).replace('//', '/')\n\t\t\t\tconst share = await this.createShare({\n\t\t\t\t\tpath,\n\t\t\t\t\tshareType: value.shareType,\n\t\t\t\t\tshareWith: value.shareWith,\n\t\t\t\t\tpassword,\n\t\t\t\t\tpermissions: this.fileInfo.sharePermissions & OC.getCapabilities().files_sharing.default_permissions,\n\t\t\t\t})\n\n\t\t\t\t// If we had a password, we need to show it to the user as it was generated\n\t\t\t\tif (password) {\n\t\t\t\t\tshare.newPassword = password\n\t\t\t\t\t// Wait for the newly added share\n\t\t\t\t\tconst component = await new Promise(resolve => {\n\t\t\t\t\t\tthis.$emit('add:share', share, resolve)\n\t\t\t\t\t})\n\n\t\t\t\t\t// open the menu on the\n\t\t\t\t\t// freshly created share component\n\t\t\t\t\tcomponent.open = true\n\t\t\t\t} else {\n\t\t\t\t\t// Else we just add it normally\n\t\t\t\t\tthis.$emit('add:share', share)\n\t\t\t\t}\n\n\t\t\t\t// reset the search string when done\n\t\t\t\t// FIXME: https://github.com/shentao/vue-multiselect/issues/633\n\t\t\t\tif (this.$refs.multiselect?.$refs?.VueMultiselect?.search) {\n\t\t\t\t\tthis.$refs.multiselect.$refs.VueMultiselect.search = ''\n\t\t\t\t}\n\n\t\t\t\tawait this.getRecommendations()\n\t\t\t} catch (error) {\n\t\t\t\t// focus back if any error\n\t\t\t\tconst input = this.$refs.multiselect.$el.querySelector('input')\n\t\t\t\tif (input) {\n\t\t\t\t\tinput.focus()\n\t\t\t\t}\n\t\t\t\tthis.query = value.shareWith\n\t\t\t\tconsole.error('Error while adding new share', error)\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\n.sharing-input {\n\twidth: 100%;\n\tmargin: 10px 0;\n\n\t// properly style the lookup entry\n\t.multiselect__option {\n\t\tspan[lookup] {\n\t\t\t.avatardiv {\n\t\t\t\tbackground-image: var(--icon-search-white);\n\t\t\t\tbackground-repeat: no-repeat;\n\t\t\t\tbackground-position: center;\n\t\t\t\tbackground-color: var(--color-text-maxcontrast) !important;\n\t\t\t\tdiv {\n\t\t\t\t\tdisplay: none;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.vue?vue&type=style&index=0&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.vue?vue&type=style&index=0&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingInput.vue?vue&type=template&id=70f57b32&\"\nimport script from \"./SharingInput.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingInput.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Multiselect',{ref:\"multiselect\",staticClass:\"sharing-input\",attrs:{\"clear-on-select\":true,\"disabled\":!_vm.canReshare,\"hide-selected\":true,\"internal-search\":false,\"loading\":_vm.loading,\"options\":_vm.options,\"placeholder\":_vm.inputPlaceholder,\"preselect-first\":true,\"preserve-search\":true,\"searchable\":true,\"user-select\":true,\"open-direction\":\"below\",\"label\":\"displayName\",\"track-by\":\"id\"},on:{\"search-change\":_vm.asyncFind,\"select\":_vm.addShare},scopedSlots:_vm._u([{key:\"noOptions\",fn:function(){return [_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'No recommendations. Start typing.'))+\"\\n\\t\")]},proxy:true},{key:\"noResult\",fn:function(){return [_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.noResultText)+\"\\n\\t\")]},proxy:true}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Gary Kim <gary@garykim.dev>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n// eslint-disable-next-line import/no-unresolved, node/no-missing-import\nimport PQueue from 'p-queue'\nimport debounce from 'debounce'\n\nimport Share from '../models/Share'\nimport SharesRequests from './ShareRequests'\nimport ShareTypes from './ShareTypes'\nimport Config from '../services/ConfigService'\nimport { getCurrentUser } from '@nextcloud/auth'\n\nexport default {\n\tmixins: [SharesRequests, ShareTypes],\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\tshare: {\n\t\t\ttype: Share,\n\t\t\tdefault: null,\n\t\t},\n\t\tisUnique: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tconfig: new Config(),\n\n\t\t\t// errors helpers\n\t\t\terrors: {},\n\n\t\t\t// component status toggles\n\t\t\tloading: false,\n\t\t\tsaving: false,\n\t\t\topen: false,\n\n\t\t\t// concurrency management queue\n\t\t\t// we want one queue per share\n\t\t\tupdateQueue: new PQueue({ concurrency: 1 }),\n\n\t\t\t/**\n\t\t\t * ! This allow vue to make the Share class state reactive\n\t\t\t * ! do not remove it ot you'll lose all reactivity here\n\t\t\t */\n\t\t\treactiveState: this.share?.state,\n\t\t}\n\t},\n\n\tcomputed: {\n\n\t\t/**\n\t\t * Does the current share have a note\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasNote: {\n\t\t\tget() {\n\t\t\t\treturn this.share.note !== ''\n\t\t\t},\n\t\t\tset(enabled) {\n\t\t\t\tthis.share.note = enabled\n\t\t\t\t\t? null // enabled but user did not changed the content yet\n\t\t\t\t\t: '' // empty = no note = disabled\n\t\t\t},\n\t\t},\n\n\t\tdateTomorrow() {\n\t\t\treturn moment().add(1, 'days')\n\t\t},\n\n\t\t// Datepicker language\n\t\tlang() {\n\t\t\tconst weekdaysShort = window.dayNamesShort\n\t\t\t\t? window.dayNamesShort // provided by nextcloud\n\t\t\t\t: ['Sun.', 'Mon.', 'Tue.', 'Wed.', 'Thu.', 'Fri.', 'Sat.']\n\t\t\tconst monthsShort = window.monthNamesShort\n\t\t\t\t? window.monthNamesShort // provided by nextcloud\n\t\t\t\t: ['Jan.', 'Feb.', 'Mar.', 'Apr.', 'May.', 'Jun.', 'Jul.', 'Aug.', 'Sep.', 'Oct.', 'Nov.', 'Dec.']\n\t\t\tconst firstDayOfWeek = window.firstDay ? window.firstDay : 0\n\n\t\t\treturn {\n\t\t\t\tformatLocale: {\n\t\t\t\t\tfirstDayOfWeek,\n\t\t\t\t\tmonthsShort,\n\t\t\t\t\tweekdaysMin: weekdaysShort,\n\t\t\t\t\tweekdaysShort,\n\t\t\t\t},\n\t\t\t\tmonthFormat: 'MMM',\n\t\t\t}\n\t\t},\n\n\t\tisShareOwner() {\n\t\t\treturn this.share && this.share.owner === getCurrentUser().uid\n\t\t},\n\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Check if a share is valid before\n\t\t * firing the request\n\t\t *\n\t\t * @param {Share} share the share to check\n\t\t * @return {boolean}\n\t\t */\n\t\tcheckShare(share) {\n\t\t\tif (share.password) {\n\t\t\t\tif (typeof share.password !== 'string' || share.password.trim() === '') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (share.expirationDate) {\n\t\t\t\tconst date = moment(share.expirationDate)\n\t\t\t\tif (!date.isValid()) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\n\t\t/**\n\t\t * ActionInput can be a little tricky to work with.\n\t\t * Since we expect a string and not a Date,\n\t\t * we need to process the value here\n\t\t *\n\t\t * @param {Date} date js date to be parsed by moment.js\n\t\t */\n\t\tonExpirationChange(date) {\n\t\t\t// format to YYYY-MM-DD\n\t\t\tconst value = moment(date).format('YYYY-MM-DD')\n\t\t\tthis.share.expireDate = value\n\t\t\tthis.queueUpdate('expireDate')\n\t\t},\n\n\t\t/**\n\t\t * Uncheck expire date\n\t\t * We need this method because @update:checked\n\t\t * is ran simultaneously as @uncheck, so\n\t\t * so we cannot ensure data is up-to-date\n\t\t */\n\t\tonExpirationDisable() {\n\t\t\tthis.share.expireDate = ''\n\t\t\tthis.queueUpdate('expireDate')\n\t\t},\n\n\t\t/**\n\t\t * Note changed, let's save it to a different key\n\t\t *\n\t\t * @param {string} note the share note\n\t\t */\n\t\tonNoteChange(note) {\n\t\t\tthis.$set(this.share, 'newNote', note.trim())\n\t\t},\n\n\t\t/**\n\t\t * When the note change, we trim, save and dispatch\n\t\t *\n\t\t */\n\t\tonNoteSubmit() {\n\t\t\tif (this.share.newNote) {\n\t\t\t\tthis.share.note = this.share.newNote\n\t\t\t\tthis.$delete(this.share, 'newNote')\n\t\t\t\tthis.queueUpdate('note')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Delete share button handler\n\t\t */\n\t\tasync onDelete() {\n\t\t\ttry {\n\t\t\t\tthis.loading = true\n\t\t\t\tthis.open = false\n\t\t\t\tawait this.deleteShare(this.share.id)\n\t\t\t\tconsole.debug('Share deleted', this.share.id)\n\t\t\t\tthis.$emit('remove:share', this.share)\n\t\t\t} catch (error) {\n\t\t\t\t// re-open menu if error\n\t\t\t\tthis.open = true\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Send an update of the share to the queue\n\t\t *\n\t\t * @param {Array<string>} propertyNames the properties to sync\n\t\t */\n\t\tqueueUpdate(...propertyNames) {\n\t\t\tif (propertyNames.length === 0) {\n\t\t\t\t// Nothing to update\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (this.share.id) {\n\t\t\t\tconst properties = {}\n\t\t\t\t// force value to string because that is what our\n\t\t\t\t// share api controller accepts\n\t\t\t\tpropertyNames.map(p => (properties[p] = this.share[p].toString()))\n\n\t\t\t\tthis.updateQueue.add(async () => {\n\t\t\t\t\tthis.saving = true\n\t\t\t\t\tthis.errors = {}\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst updatedShare = await this.updateShare(this.share.id, properties)\n\n\t\t\t\t\t\tif (propertyNames.indexOf('password') >= 0) {\n\t\t\t\t\t\t\t// reset password state after sync\n\t\t\t\t\t\t\tthis.$delete(this.share, 'newPassword')\n\n\t\t\t\t\t\t\t// updates password expiration time after sync\n\t\t\t\t\t\t\tthis.share.passwordExpirationTime = updatedShare.password_expiration_time\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// clear any previous errors\n\t\t\t\t\t\tthis.$delete(this.errors, propertyNames[0])\n\n\t\t\t\t\t} catch ({ message }) {\n\t\t\t\t\t\tif (message && message !== '') {\n\t\t\t\t\t\t\tthis.onSyncError(propertyNames[0], message)\n\t\t\t\t\t\t}\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tthis.saving = false\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tconsole.error('Cannot update share.', this.share, 'No valid id')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Manage sync errors\n\t\t *\n\t\t * @param {string} property the errored property, e.g. 'password'\n\t\t * @param {string} message the error message\n\t\t */\n\t\tonSyncError(property, message) {\n\t\t\t// re-open menu if closed\n\t\t\tthis.open = true\n\t\t\tswitch (property) {\n\t\t\tcase 'password':\n\t\t\tcase 'pending':\n\t\t\tcase 'expireDate':\n\t\t\tcase 'label':\n\t\t\tcase 'note': {\n\t\t\t\t// show error\n\t\t\t\tthis.$set(this.errors, property, message)\n\n\t\t\t\tlet propertyEl = this.$refs[property]\n\t\t\t\tif (propertyEl) {\n\t\t\t\t\tif (propertyEl.$el) {\n\t\t\t\t\t\tpropertyEl = propertyEl.$el\n\t\t\t\t\t}\n\t\t\t\t\t// focus if there is a focusable action element\n\t\t\t\t\tconst focusable = propertyEl.querySelector('.focusable')\n\t\t\t\t\tif (focusable) {\n\t\t\t\t\t\tfocusable.focus()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'sendPasswordByTalk': {\n\t\t\t\t// show error\n\t\t\t\tthis.$set(this.errors, property, message)\n\n\t\t\t\t// Restore previous state\n\t\t\t\tthis.share.sendPasswordByTalk = !this.share.sendPasswordByTalk\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Debounce queueUpdate to avoid requests spamming\n\t\t * more importantly for text data\n\t\t *\n\t\t * @param {string} property the property to sync\n\t\t */\n\t\tdebounceQueueUpdate: debounce(function(property) {\n\t\t\tthis.queueUpdate(property)\n\t\t}, 500),\n\n\t\t/**\n\t\t * Returns which dates are disabled for the datepicker\n\t\t *\n\t\t * @param {Date} date date to check\n\t\t * @return {boolean}\n\t\t */\n\t\tdisabledDate(date) {\n\t\t\tconst dateMoment = moment(date)\n\t\t\treturn (this.dateTomorrow && dateMoment.isBefore(this.dateTomorrow, 'day'))\n\t\t\t\t|| (this.dateMaxEnforced && dateMoment.isSameOrAfter(this.dateMaxEnforced, 'day'))\n\t\t},\n\t},\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInherited.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInherited.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<SharingEntrySimple :key=\"share.id\"\n\t\tclass=\"sharing-entry__inherited\"\n\t\t:title=\"share.shareWithDisplayName\">\n\t\t<template #avatar>\n\t\t\t<Avatar :user=\"share.shareWith\"\n\t\t\t\t:display-name=\"share.shareWithDisplayName\"\n\t\t\t\tclass=\"sharing-entry__avatar\"\n\t\t\t\ttooltip-message=\"\" />\n\t\t</template>\n\t\t<ActionText icon=\"icon-user\">\n\t\t\t{{ t('files_sharing', 'Added by {initiator}', { initiator: share.ownerDisplayName }) }}\n\t\t</ActionText>\n\t\t<ActionLink v-if=\"share.viaPath && share.viaFileid\"\n\t\t\ticon=\"icon-folder\"\n\t\t\t:href=\"viaFileTargetUrl\">\n\t\t\t{{ t('files_sharing', 'Via “{folder}”', {folder: viaFolderName} ) }}\n\t\t</ActionLink>\n\t\t<ActionButton v-if=\"share.canDelete\"\n\t\t\ticon=\"icon-close\"\n\t\t\t@click.prevent=\"onDelete\">\n\t\t\t{{ t('files_sharing', 'Unshare') }}\n\t\t</actionbutton>\n\t</SharingEntrySimple>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { basename } from '@nextcloud/paths'\nimport Avatar from '@nextcloud/vue/dist/Components/Avatar'\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport ActionLink from '@nextcloud/vue/dist/Components/ActionLink'\nimport ActionText from '@nextcloud/vue/dist/Components/ActionText'\n\n// eslint-disable-next-line no-unused-vars\nimport Share from '../models/Share'\nimport SharesMixin from '../mixins/SharesMixin'\nimport SharingEntrySimple from '../components/SharingEntrySimple'\n\nexport default {\n\tname: 'SharingEntryInherited',\n\n\tcomponents: {\n\t\tActionButton,\n\t\tActionLink,\n\t\tActionText,\n\t\tAvatar,\n\t\tSharingEntrySimple,\n\t},\n\n\tmixins: [SharesMixin],\n\n\tprops: {\n\t\tshare: {\n\t\t\ttype: Share,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tviaFileTargetUrl() {\n\t\t\treturn generateUrl('/f/{fileid}', {\n\t\t\t\tfileid: this.share.viaFileid,\n\t\t\t})\n\t\t},\n\n\t\tviaFolderName() {\n\t\t\treturn basename(this.share.viaPath)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto;\n\t}\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInherited.vue?vue&type=style&index=0&id=29845767&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInherited.vue?vue&type=style&index=0&id=29845767&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntryInherited.vue?vue&type=template&id=29845767&scoped=true&\"\nimport script from \"./SharingEntryInherited.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntryInherited.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntryInherited.vue?vue&type=style&index=0&id=29845767&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"29845767\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('SharingEntrySimple',{key:_vm.share.id,staticClass:\"sharing-entry__inherited\",attrs:{\"title\":_vm.share.shareWithDisplayName},scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('Avatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"user\":_vm.share.shareWith,\"display-name\":_vm.share.shareWithDisplayName,\"tooltip-message\":\"\"}})]},proxy:true}])},[_vm._v(\" \"),_c('ActionText',{attrs:{\"icon\":\"icon-user\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Added by {initiator}', { initiator: _vm.share.ownerDisplayName }))+\"\\n\\t\")]),_vm._v(\" \"),(_vm.share.viaPath && _vm.share.viaFileid)?_c('ActionLink',{attrs:{\"icon\":\"icon-folder\",\"href\":_vm.viaFileTargetUrl}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Via “{folder}”', {folder: _vm.viaFolderName} ))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.share.canDelete)?_c('ActionButton',{attrs:{\"icon\":\"icon-close\"},on:{\"click\":function($event){$event.preventDefault();return _vm.onDelete.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Unshare'))+\"\\n\\t\")]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<ul id=\"sharing-inherited-shares\">\n\t\t<!-- Main collapsible entry -->\n\t\t<SharingEntrySimple class=\"sharing-entry__inherited\"\n\t\t\t:title=\"mainTitle\"\n\t\t\t:subtitle=\"subTitle\"\n\t\t\t:aria-expanded=\"showInheritedShares\">\n\t\t\t<template #avatar>\n\t\t\t\t<div class=\"avatar-shared icon-more-white\" />\n\t\t\t</template>\n\t\t\t<ActionButton :icon=\"showInheritedSharesIcon\" @click.prevent.stop=\"toggleInheritedShares\">\n\t\t\t\t{{ toggleTooltip }}\n\t\t\t</ActionButton>\n\t\t</SharingEntrySimple>\n\n\t\t<!-- Inherited shares list -->\n\t\t<SharingEntryInherited v-for=\"share in shares\"\n\t\t\t:key=\"share.id\"\n\t\t\t:file-info=\"fileInfo\"\n\t\t\t:share=\"share\" />\n\t</ul>\n</template>\n\n<script>\nimport { generateOcsUrl } from '@nextcloud/router'\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport axios from '@nextcloud/axios'\n\nimport Share from '../models/Share'\nimport SharingEntryInherited from '../components/SharingEntryInherited'\nimport SharingEntrySimple from '../components/SharingEntrySimple'\n\nexport default {\n\tname: 'SharingInherited',\n\n\tcomponents: {\n\t\tActionButton,\n\t\tSharingEntryInherited,\n\t\tSharingEntrySimple,\n\t},\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloaded: false,\n\t\t\tloading: false,\n\t\t\tshowInheritedShares: false,\n\t\t\tshares: [],\n\t\t}\n\t},\n\tcomputed: {\n\t\tshowInheritedSharesIcon() {\n\t\t\tif (this.loading) {\n\t\t\t\treturn 'icon-loading-small'\n\t\t\t}\n\t\t\tif (this.showInheritedShares) {\n\t\t\t\treturn 'icon-triangle-n'\n\t\t\t}\n\t\t\treturn 'icon-triangle-s'\n\t\t},\n\t\tmainTitle() {\n\t\t\treturn t('files_sharing', 'Others with access')\n\t\t},\n\t\tsubTitle() {\n\t\t\treturn (this.showInheritedShares && this.shares.length === 0)\n\t\t\t\t? t('files_sharing', 'No other users with access found')\n\t\t\t\t: ''\n\t\t},\n\t\ttoggleTooltip() {\n\t\t\treturn this.fileInfo.type === 'dir'\n\t\t\t\t? t('files_sharing', 'Toggle list of others with access to this directory')\n\t\t\t\t: t('files_sharing', 'Toggle list of others with access to this file')\n\t\t},\n\t\tfullPath() {\n\t\t\tconst path = `${this.fileInfo.path}/${this.fileInfo.name}`\n\t\t\treturn path.replace('//', '/')\n\t\t},\n\t},\n\twatch: {\n\t\tfileInfo() {\n\t\t\tthis.resetState()\n\t\t},\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Toggle the list view and fetch/reset the state\n\t\t */\n\t\ttoggleInheritedShares() {\n\t\t\tthis.showInheritedShares = !this.showInheritedShares\n\t\t\tif (this.showInheritedShares) {\n\t\t\t\tthis.fetchInheritedShares()\n\t\t\t} else {\n\t\t\t\tthis.resetState()\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Fetch the Inherited Shares array\n\t\t */\n\t\tasync fetchInheritedShares() {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tconst url = generateOcsUrl('apps/files_sharing/api/v1/shares/inherited?format=json&path={path}', { path: this.fullPath })\n\t\t\t\tconst shares = await axios.get(url)\n\t\t\t\tthis.shares = shares.data.ocs.data\n\t\t\t\t\t.map(share => new Share(share))\n\t\t\t\t\t.sort((a, b) => b.createdTime - a.createdTime)\n\t\t\t\tconsole.info(this.shares)\n\t\t\t\tthis.loaded = true\n\t\t\t} catch (error) {\n\t\t\t\tOC.Notification.showTemporary(t('files_sharing', 'Unable to fetch inherited shares'), { type: 'error' })\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Reset current component state\n\t\t */\n\t\tresetState() {\n\t\t\tthis.loaded = false\n\t\t\tthis.loading = false\n\t\t\tthis.showInheritedShares = false\n\t\t\tthis.shares = []\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry__inherited {\n\t.avatar-shared {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInherited.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInherited.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInherited.vue?vue&type=style&index=0&id=7a52663c&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInherited.vue?vue&type=style&index=0&id=7a52663c&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingInherited.vue?vue&type=template&id=7a52663c&scoped=true&\"\nimport script from \"./SharingInherited.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingInherited.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingInherited.vue?vue&type=style&index=0&id=7a52663c&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7a52663c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',{attrs:{\"id\":\"sharing-inherited-shares\"}},[_c('SharingEntrySimple',{staticClass:\"sharing-entry__inherited\",attrs:{\"title\":_vm.mainTitle,\"subtitle\":_vm.subTitle,\"aria-expanded\":_vm.showInheritedShares},scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('div',{staticClass:\"avatar-shared icon-more-white\"})]},proxy:true}])},[_vm._v(\" \"),_c('ActionButton',{attrs:{\"icon\":_vm.showInheritedSharesIcon},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.toggleInheritedShares.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.toggleTooltip)+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_vm._l((_vm.shares),function(share){return _c('SharingEntryInherited',{key:share.id,attrs:{\"file-info\":_vm.fileInfo,\"share\":share}})})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExternalShareAction.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExternalShareAction.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2021 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<Component :is=\"data.is\"\n\t\tv-bind=\"data\"\n\t\tv-on=\"action.handlers\">\n\t\t{{ data.text }}\n\t</Component>\n</template>\n\n<script>\nimport Share from '../models/Share'\n\nexport default {\n\tname: 'ExternalShareAction',\n\n\tprops: {\n\t\tid: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\taction: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => ({}),\n\t\t},\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\tshare: {\n\t\t\ttype: Share,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tdata() {\n\t\t\treturn this.action.data(this)\n\t\t},\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./ExternalShareAction.vue?vue&type=template&id=29f555e7&\"\nimport script from \"./ExternalShareAction.vue?vue&type=script&lang=js&\"\nexport * from \"./ExternalShareAction.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(_vm.data.is,_vm._g(_vm._b({tag:\"Component\"},'Component',_vm.data,false),_vm.action.handlers),[_vm._v(\"\\n\\t\"+_vm._s(_vm.data.text)+\"\\n\")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2022 Louis Chmn <louis@chmn.me>\n *\n * @author Louis Chmn <louis@chmn.me>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const ATOMIC_PERMISSIONS = {\n\tNONE: 0,\n\tREAD: 1,\n\tUPDATE: 2,\n\tCREATE: 4,\n\tDELETE: 8,\n\tSHARE: 16,\n}\n\nexport const BUNDLED_PERMISSIONS = {\n\tREAD_ONLY: ATOMIC_PERMISSIONS.READ,\n\tUPLOAD_AND_UPDATE: ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.DELETE,\n\tFILE_DROP: ATOMIC_PERMISSIONS.CREATE,\n\tALL: ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.DELETE | ATOMIC_PERMISSIONS.SHARE,\n}\n\n/**\n * Return whether a given permissions set contains some permissions.\n *\n * @param {number} initialPermissionSet - the permissions set.\n * @param {number} permissionsToCheck - the permissions to check.\n * @return {boolean}\n */\nexport function hasPermissions(initialPermissionSet, permissionsToCheck) {\n\treturn initialPermissionSet !== ATOMIC_PERMISSIONS.NONE && (initialPermissionSet & permissionsToCheck) === permissionsToCheck\n}\n\n/**\n * Return whether a given permissions set is valid.\n *\n * @param {number} permissionsSet - the permissions set.\n *\n * @return {boolean}\n */\nexport function permissionsSetIsValid(permissionsSet) {\n\t// Must have at least READ or CREATE permission.\n\tif (!hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.READ) && !hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.CREATE)) {\n\t\treturn false\n\t}\n\n\t// Must have READ permission if have UPDATE or DELETE.\n\tif (!hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.READ) && (\n\t\thasPermissions(permissionsSet, ATOMIC_PERMISSIONS.UPDATE) || hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.DELETE)\n\t)) {\n\t\treturn false\n\t}\n\n\treturn true\n}\n\n/**\n * Add some permissions to an initial set of permissions.\n *\n * @param {number} initialPermissionSet - the initial permissions.\n * @param {number} permissionsToAdd - the permissions to add.\n *\n * @return {number}\n */\nexport function addPermissions(initialPermissionSet, permissionsToAdd) {\n\treturn initialPermissionSet | permissionsToAdd\n}\n\n/**\n * Remove some permissions from an initial set of permissions.\n *\n * @param {number} initialPermissionSet - the initial permissions.\n * @param {number} permissionsToSubtract - the permissions to remove.\n *\n * @return {number}\n */\nexport function subtractPermissions(initialPermissionSet, permissionsToSubtract) {\n\treturn initialPermissionSet & ~permissionsToSubtract\n}\n\n/**\n * Toggle some permissions from an initial set of permissions.\n *\n * @param {number} initialPermissionSet - the permissions set.\n * @param {number} permissionsToToggle - the permissions to toggle.\n *\n * @return {number}\n */\nexport function togglePermissions(initialPermissionSet, permissionsToToggle) {\n\tif (hasPermissions(initialPermissionSet, permissionsToToggle)) {\n\t\treturn subtractPermissions(initialPermissionSet, permissionsToToggle)\n\t} else {\n\t\treturn addPermissions(initialPermissionSet, permissionsToToggle)\n\t}\n}\n\n/**\n * Return whether some given permissions can be toggled from a permission set.\n *\n * @param {number} permissionSet - the initial permissions set.\n * @param {number} permissionsToToggle - the permissions to toggle.\n *\n * @return {boolean}\n */\nexport function canTogglePermissions(permissionSet, permissionsToToggle) {\n\treturn permissionsSetIsValid(togglePermissions(permissionSet, permissionsToToggle))\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharePermissionsEditor.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharePermissionsEditor.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2022 Louis Chmn <louis@chmn.me>\n -\n - @author Louis Chmn <louis@chmn.me>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<li>\n\t\t<ul>\n\t\t\t<!-- file -->\n\t\t\t<ActionCheckbox v-if=\"!isFolder\"\n\t\t\t\t:checked=\"shareHasPermissions(atomicPermissions.UPDATE)\"\n\t\t\t\t:disabled=\"saving\"\n\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.UPDATE)\">\n\t\t\t\t{{ t('files_sharing', 'Allow editing') }}\n\t\t\t</ActionCheckbox>\n\n\t\t\t<!-- folder -->\n\t\t\t<template v-if=\"isFolder && fileHasCreatePermission && config.isPublicUploadEnabled\">\n\t\t\t\t<template v-if=\"!showCustomPermissionsForm\">\n\t\t\t\t\t<ActionRadio :checked=\"sharePermissionEqual(bundledPermissions.READ_ONLY)\"\n\t\t\t\t\t\t:value=\"bundledPermissions.READ_ONLY\"\n\t\t\t\t\t\t:name=\"randomFormName\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t@change=\"setSharePermissions(bundledPermissions.READ_ONLY)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Read only') }}\n\t\t\t\t\t</ActionRadio>\n\n\t\t\t\t\t<ActionRadio :checked=\"sharePermissionEqual(bundledPermissions.UPLOAD_AND_UPDATE)\"\n\t\t\t\t\t\t:value=\"bundledPermissions.UPLOAD_AND_UPDATE\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:name=\"randomFormName\"\n\t\t\t\t\t\t@change=\"setSharePermissions(bundledPermissions.UPLOAD_AND_UPDATE)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Allow upload and editing') }}\n\t\t\t\t\t</ActionRadio>\n\t\t\t\t\t<ActionRadio :checked=\"sharePermissionEqual(bundledPermissions.FILE_DROP)\"\n\t\t\t\t\t\t:value=\"bundledPermissions.FILE_DROP\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:name=\"randomFormName\"\n\t\t\t\t\t\tclass=\"sharing-entry__action--public-upload\"\n\t\t\t\t\t\t@change=\"setSharePermissions(bundledPermissions.FILE_DROP)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'File drop (upload only)') }}\n\t\t\t\t\t</ActionRadio>\n\n\t\t\t\t\t<!-- custom permissions button -->\n\t\t\t\t\t<ActionButton :title=\"t('files_sharing', 'Custom permissions')\"\n\t\t\t\t\t\t@click=\"showCustomPermissionsForm = true\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<Tune />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t{{ sharePermissionsIsBundle ? \"\" : sharePermissionsSummary }}\n\t\t\t\t\t</ActionButton>\n\t\t\t\t</template>\n\n\t\t\t\t<!-- custom permissions -->\n\t\t\t\t<span v-else :class=\"{error: !sharePermissionsSetIsValid}\">\n\t\t\t\t\t<ActionCheckbox :checked=\"shareHasPermissions(atomicPermissions.READ)\"\n\t\t\t\t\t\t:disabled=\"saving || !canToggleSharePermissions(atomicPermissions.READ)\"\n\t\t\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.READ)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Read') }}\n\t\t\t\t\t</ActionCheckbox>\n\t\t\t\t\t<ActionCheckbox :checked=\"shareHasPermissions(atomicPermissions.CREATE)\"\n\t\t\t\t\t\t:disabled=\"saving || !canToggleSharePermissions(atomicPermissions.CREATE)\"\n\t\t\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.CREATE)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Upload') }}\n\t\t\t\t\t</ActionCheckbox>\n\t\t\t\t\t<ActionCheckbox :checked=\"shareHasPermissions(atomicPermissions.UPDATE)\"\n\t\t\t\t\t\t:disabled=\"saving || !canToggleSharePermissions(atomicPermissions.UPDATE)\"\n\t\t\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.UPDATE)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Edit') }}\n\t\t\t\t\t</ActionCheckbox>\n\t\t\t\t\t<ActionCheckbox :checked=\"shareHasPermissions(atomicPermissions.DELETE)\"\n\t\t\t\t\t\t:disabled=\"saving || !canToggleSharePermissions(atomicPermissions.DELETE)\"\n\t\t\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.DELETE)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Delete') }}\n\t\t\t\t\t</ActionCheckbox>\n\n\t\t\t\t\t<ActionButton @click=\"showCustomPermissionsForm = false\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<ChevronLeft />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t{{ t('files_sharing', 'Bundled permissions') }}\n\t\t\t\t\t</ActionButton>\n\t\t\t\t</span>\n\t\t\t</template>\n\t\t</ul>\n\t</li>\n</template>\n\n<script>\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport ActionRadio from '@nextcloud/vue/dist/Components/ActionRadio'\nimport ActionCheckbox from '@nextcloud/vue/dist/Components/ActionCheckbox'\n\nimport SharesMixin from '../mixins/SharesMixin'\nimport {\n\tATOMIC_PERMISSIONS,\n\tBUNDLED_PERMISSIONS,\n\thasPermissions,\n\tpermissionsSetIsValid,\n\ttogglePermissions,\n\tcanTogglePermissions,\n} from '../lib/SharePermissionsToolBox'\n\nimport Tune from 'vue-material-design-icons/Tune'\nimport ChevronLeft from 'vue-material-design-icons/ChevronLeft'\n\nexport default {\n\tname: 'SharePermissionsEditor',\n\n\tcomponents: {\n\t\tActionButton,\n\t\tActionCheckbox,\n\t\tActionRadio,\n\t\tTune,\n\t\tChevronLeft,\n\t},\n\n\tmixins: [SharesMixin],\n\n\tdata() {\n\t\treturn {\n\t\t\trandomFormName: Math.random().toString(27).substring(2),\n\n\t\t\tshowCustomPermissionsForm: false,\n\n\t\t\tatomicPermissions: ATOMIC_PERMISSIONS,\n\t\t\tbundledPermissions: BUNDLED_PERMISSIONS,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Return the summary of custom checked permissions.\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tsharePermissionsSummary() {\n\t\t\treturn Object.values(this.atomicPermissions)\n\t\t\t\t.filter(permission => this.shareHasPermissions(permission))\n\t\t\t\t.map(permission => {\n\t\t\t\t\tswitch (permission) {\n\t\t\t\t\tcase this.atomicPermissions.CREATE:\n\t\t\t\t\t\treturn this.t('files_sharing', 'Upload')\n\t\t\t\t\tcase this.atomicPermissions.READ:\n\t\t\t\t\t\treturn this.t('files_sharing', 'Read')\n\t\t\t\t\tcase this.atomicPermissions.UPDATE:\n\t\t\t\t\t\treturn this.t('files_sharing', 'Edit')\n\t\t\t\t\tcase this.atomicPermissions.DELETE:\n\t\t\t\t\t\treturn this.t('files_sharing', 'Delete')\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn null\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.filter(permissionLabel => permissionLabel !== null)\n\t\t\t\t.join(', ')\n\t\t},\n\n\t\t/**\n\t\t * Return whether the share's permission is a bundle.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tsharePermissionsIsBundle() {\n\t\t\treturn Object.values(BUNDLED_PERMISSIONS)\n\t\t\t\t.map(bundle => this.sharePermissionEqual(bundle))\n\t\t\t\t.filter(isBundle => isBundle)\n\t\t\t\t.length > 0\n\t\t},\n\n\t\t/**\n\t\t * Return whether the share's permission is valid.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tsharePermissionsSetIsValid() {\n\t\t\treturn permissionsSetIsValid(this.share.permissions)\n\t\t},\n\n\t\t/**\n\t\t * Is the current share a folder ?\n\t\t * TODO: move to a proper FileInfo model?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisFolder() {\n\t\t\treturn this.fileInfo.type === 'dir'\n\t\t},\n\n\t\t/**\n\t\t * Does the current file/folder have create permissions.\n\t\t * TODO: move to a proper FileInfo model?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tfileHasCreatePermission() {\n\t\t\treturn !!(this.fileInfo.permissions & ATOMIC_PERMISSIONS.CREATE)\n\t\t},\n\t},\n\n\tmounted() {\n\t\t// Show the Custom Permissions view on open if the permissions set is not a bundle.\n\t\tthis.showCustomPermissionsForm = !this.sharePermissionsIsBundle\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Return whether the share has the exact given permissions.\n\t\t *\n\t\t * @param {number} permissions - the permissions to check.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tsharePermissionEqual(permissions) {\n\t\t\t// We use the share's permission without PERMISSION_SHARE as it is not relevant here.\n\t\t\treturn (this.share.permissions & ~ATOMIC_PERMISSIONS.SHARE) === permissions\n\t\t},\n\n\t\t/**\n\t\t * Return whether the share has the given permissions.\n\t\t *\n\t\t * @param {number} permissions - the permissions to check.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tshareHasPermissions(permissions) {\n\t\t\treturn hasPermissions(this.share.permissions, permissions)\n\t\t},\n\n\t\t/**\n\t\t * Set the share permissions to the given permissions.\n\t\t *\n\t\t * @param {number} permissions - the permissions to set.\n\t\t *\n\t\t * @return {void}\n\t\t */\n\t\tsetSharePermissions(permissions) {\n\t\t\tthis.share.permissions = permissions\n\t\t\tthis.queueUpdate('permissions')\n\t\t},\n\n\t\t/**\n\t\t * Return whether some given permissions can be toggled.\n\t\t *\n\t\t * @param {number} permissionsToToggle - the permissions to toggle.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanToggleSharePermissions(permissionsToToggle) {\n\t\t\treturn canTogglePermissions(this.share.permissions, permissionsToToggle)\n\t\t},\n\n\t\t/**\n\t\t * Toggle a given permission.\n\t\t *\n\t\t * @param {number} permissions - the permissions to toggle.\n\t\t *\n\t\t * @return {void}\n\t\t */\n\t\ttoggleSharePermissions(permissions) {\n\t\t\tthis.share.permissions = togglePermissions(this.share.permissions, permissions)\n\n\t\t\tif (!permissionsSetIsValid(this.share.permissions)) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.queueUpdate('permissions')\n\t\t},\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n.error {\n\t::v-deep .action-checkbox__label:before {\n\t\tborder: 1px solid var(--color-error);\n\t}\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharePermissionsEditor.vue?vue&type=style&index=0&id=ea414898&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharePermissionsEditor.vue?vue&type=style&index=0&id=ea414898&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharePermissionsEditor.vue?vue&type=template&id=ea414898&scoped=true&\"\nimport script from \"./SharePermissionsEditor.vue?vue&type=script&lang=js&\"\nexport * from \"./SharePermissionsEditor.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharePermissionsEditor.vue?vue&type=style&index=0&id=ea414898&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ea414898\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',[_c('ul',[(!_vm.isFolder)?_c('ActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.UPDATE),\"disabled\":_vm.saving},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.UPDATE)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow editing'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isFolder && _vm.fileHasCreatePermission && _vm.config.isPublicUploadEnabled)?[(!_vm.showCustomPermissionsForm)?[_c('ActionRadio',{attrs:{\"checked\":_vm.sharePermissionEqual(_vm.bundledPermissions.READ_ONLY),\"value\":_vm.bundledPermissions.READ_ONLY,\"name\":_vm.randomFormName,\"disabled\":_vm.saving},on:{\"change\":function($event){return _vm.setSharePermissions(_vm.bundledPermissions.READ_ONLY)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Read only'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionRadio',{attrs:{\"checked\":_vm.sharePermissionEqual(_vm.bundledPermissions.UPLOAD_AND_UPDATE),\"value\":_vm.bundledPermissions.UPLOAD_AND_UPDATE,\"disabled\":_vm.saving,\"name\":_vm.randomFormName},on:{\"change\":function($event){return _vm.setSharePermissions(_vm.bundledPermissions.UPLOAD_AND_UPDATE)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow upload and editing'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionRadio',{staticClass:\"sharing-entry__action--public-upload\",attrs:{\"checked\":_vm.sharePermissionEqual(_vm.bundledPermissions.FILE_DROP),\"value\":_vm.bundledPermissions.FILE_DROP,\"disabled\":_vm.saving,\"name\":_vm.randomFormName},on:{\"change\":function($event){return _vm.setSharePermissions(_vm.bundledPermissions.FILE_DROP)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'File drop (upload only)'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionButton',{attrs:{\"title\":_vm.t('files_sharing', 'Custom permissions')},on:{\"click\":function($event){_vm.showCustomPermissionsForm = true}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Tune')]},proxy:true}],null,false,961531849)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.sharePermissionsIsBundle ? \"\" : _vm.sharePermissionsSummary)+\"\\n\\t\\t\\t\\t\")])]:_c('span',{class:{error: !_vm.sharePermissionsSetIsValid}},[_c('ActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.READ),\"disabled\":_vm.saving || !_vm.canToggleSharePermissions(_vm.atomicPermissions.READ)},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.READ)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Read'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.CREATE),\"disabled\":_vm.saving || !_vm.canToggleSharePermissions(_vm.atomicPermissions.CREATE)},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.CREATE)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Upload'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.UPDATE),\"disabled\":_vm.saving || !_vm.canToggleSharePermissions(_vm.atomicPermissions.UPDATE)},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.UPDATE)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Edit'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.DELETE),\"disabled\":_vm.saving || !_vm.canToggleSharePermissions(_vm.atomicPermissions.DELETE)},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.DELETE)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Delete'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionButton',{on:{\"click\":function($event){_vm.showCustomPermissionsForm = false}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('ChevronLeft')]},proxy:true}],null,false,1018742195)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Bundled permissions'))+\"\\n\\t\\t\\t\\t\")])],1)]:_vm._e()],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<li :class=\"{'sharing-entry--share': share}\" class=\"sharing-entry sharing-entry__link\">\n\t\t<Avatar :is-no-user=\"true\"\n\t\t\t:icon-class=\"isEmailShareType ? 'avatar-link-share icon-mail-white' : 'avatar-link-share icon-public-white'\"\n\t\t\tclass=\"sharing-entry__avatar\" />\n\t\t<div class=\"sharing-entry__desc\">\n\t\t\t<span class=\"sharing-entry__title\" :title=\"title\">\n\t\t\t\t{{ title }}\n\t\t\t</span>\n\t\t\t<p v-if=\"subtitle\">\n\t\t\t\t{{ subtitle }}\n\t\t\t</p>\n\t\t</div>\n\n\t\t<!-- clipboard -->\n\t\t<Actions v-if=\"share && !isEmailShareType && share.token\"\n\t\t\tref=\"copyButton\"\n\t\t\tclass=\"sharing-entry__copy\">\n\t\t\t<ActionLink :href=\"shareLink\"\n\t\t\t\ttarget=\"_blank\"\n\t\t\t\t:icon=\"copied && copySuccess ? 'icon-checkmark-color' : 'icon-clippy'\"\n\t\t\t\t@click.stop.prevent=\"copyLink\">\n\t\t\t\t{{ clipboardTooltip }}\n\t\t\t</ActionLink>\n\t\t</Actions>\n\n\t\t<!-- pending actions -->\n\t\t<Actions v-if=\"!pending && (pendingPassword || pendingExpirationDate)\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\tmenu-align=\"right\"\n\t\t\t:open.sync=\"open\"\n\t\t\t@close=\"onNewLinkShare\">\n\t\t\t<!-- pending data menu -->\n\t\t\t<ActionText v-if=\"errors.pending\"\n\t\t\t\ticon=\"icon-error\"\n\t\t\t\t:class=\"{ error: errors.pending}\">\n\t\t\t\t{{ errors.pending }}\n\t\t\t</ActionText>\n\t\t\t<ActionText v-else icon=\"icon-info\">\n\t\t\t\t{{ t('files_sharing', 'Please enter the following required information before creating the share') }}\n\t\t\t</ActionText>\n\n\t\t\t<!-- password -->\n\t\t\t<ActionText v-if=\"pendingPassword\" icon=\"icon-password\">\n\t\t\t\t{{ t('files_sharing', 'Password protection (enforced)') }}\n\t\t\t</ActionText>\n\t\t\t<ActionCheckbox v-else-if=\"config.enableLinkPasswordByDefault\"\n\t\t\t\t:checked.sync=\"isPasswordProtected\"\n\t\t\t\t:disabled=\"config.enforcePasswordForPublicLink || saving\"\n\t\t\t\tclass=\"share-link-password-checkbox\"\n\t\t\t\t@uncheck=\"onPasswordDisable\">\n\t\t\t\t{{ t('files_sharing', 'Password protection') }}\n\t\t\t</ActionCheckbox>\n\t\t\t<ActionInput v-if=\"pendingPassword || share.password\"\n\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\tcontent: errors.password,\n\t\t\t\t\tshow: errors.password,\n\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t}\"\n\t\t\t\tclass=\"share-link-password\"\n\t\t\t\t:value.sync=\"share.password\"\n\t\t\t\t:disabled=\"saving\"\n\t\t\t\t:required=\"config.enableLinkPasswordByDefault || config.enforcePasswordForPublicLink\"\n\t\t\t\t:minlength=\"isPasswordPolicyEnabled && config.passwordPolicy.minLength\"\n\t\t\t\ticon=\"\"\n\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t@submit=\"onNewLinkShare\">\n\t\t\t\t{{ t('files_sharing', 'Enter a password') }}\n\t\t\t</ActionInput>\n\n\t\t\t<!-- expiration date -->\n\t\t\t<ActionText v-if=\"pendingExpirationDate\" icon=\"icon-calendar-dark\">\n\t\t\t\t{{ t('files_sharing', 'Expiration date (enforced)') }}\n\t\t\t</ActionText>\n\t\t\t<ActionInput v-if=\"pendingExpirationDate\"\n\t\t\t\tv-model=\"share.expireDate\"\n\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\tcontent: errors.expireDate,\n\t\t\t\t\tshow: errors.expireDate,\n\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t}\"\n\t\t\t\tclass=\"share-link-expire-date\"\n\t\t\t\t:disabled=\"saving\"\n\n\t\t\t\t:lang=\"lang\"\n\t\t\t\ticon=\"\"\n\t\t\t\ttype=\"date\"\n\t\t\t\tvalue-type=\"format\"\n\t\t\t\t:disabled-date=\"disabledDate\">\n\t\t\t\t<!-- let's not submit when picked, the user\n\t\t\t\t\tmight want to still edit or copy the password -->\n\t\t\t\t{{ t('files_sharing', 'Enter a date') }}\n\t\t\t</ActionInput>\n\n\t\t\t<ActionButton icon=\"icon-checkmark\" @click.prevent.stop=\"onNewLinkShare\">\n\t\t\t\t{{ t('files_sharing', 'Create share') }}\n\t\t\t</ActionButton>\n\t\t\t<ActionButton icon=\"icon-close\" @click.prevent.stop=\"onCancel\">\n\t\t\t\t{{ t('files_sharing', 'Cancel') }}\n\t\t\t</ActionButton>\n\t\t</Actions>\n\n\t\t<!-- actions -->\n\t\t<Actions v-else-if=\"!loading\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\tmenu-align=\"right\"\n\t\t\t:open.sync=\"open\"\n\t\t\t@close=\"onMenuClose\">\n\t\t\t<template v-if=\"share\">\n\t\t\t\t<template v-if=\"share.canEdit && canReshare\">\n\t\t\t\t\t<!-- Custom Label -->\n\t\t\t\t\t<ActionInput ref=\"label\"\n\t\t\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\t\t\tcontent: errors.label,\n\t\t\t\t\t\t\tshow: errors.label,\n\t\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\t\tdefaultContainer: '.app-sidebar'\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\t:class=\"{ error: errors.label }\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:aria-label=\"t('files_sharing', 'Share label')\"\n\t\t\t\t\t\t:value=\"share.newLabel !== undefined ? share.newLabel : share.label\"\n\t\t\t\t\t\ticon=\"icon-edit\"\n\t\t\t\t\t\tmaxlength=\"255\"\n\t\t\t\t\t\t@update:value=\"onLabelChange\"\n\t\t\t\t\t\t@submit=\"onLabelSubmit\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Share label') }}\n\t\t\t\t\t</ActionInput>\n\n\t\t\t\t\t<SharePermissionsEditor :can-reshare=\"canReshare\"\n\t\t\t\t\t\t:share.sync=\"share\"\n\t\t\t\t\t\t:file-info=\"fileInfo\" />\n\n\t\t\t\t\t<ActionSeparator />\n\n\t\t\t\t\t<ActionCheckbox :checked.sync=\"share.hideDownload\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t@change=\"queueUpdate('hideDownload')\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Hide download') }}\n\t\t\t\t\t</ActionCheckbox>\n\n\t\t\t\t\t<!-- password -->\n\t\t\t\t\t<ActionCheckbox :checked.sync=\"isPasswordProtected\"\n\t\t\t\t\t\t:disabled=\"config.enforcePasswordForPublicLink || saving\"\n\t\t\t\t\t\tclass=\"share-link-password-checkbox\"\n\t\t\t\t\t\t@uncheck=\"onPasswordDisable\">\n\t\t\t\t\t\t{{ config.enforcePasswordForPublicLink\n\t\t\t\t\t\t\t? t('files_sharing', 'Password protection (enforced)')\n\t\t\t\t\t\t\t: t('files_sharing', 'Password protect') }}\n\t\t\t\t\t</ActionCheckbox>\n\t\t\t\t\t<ActionInput v-if=\"isPasswordProtected\"\n\t\t\t\t\t\tref=\"password\"\n\t\t\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\t\t\tcontent: errors.password,\n\t\t\t\t\t\t\tshow: errors.password,\n\t\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\tclass=\"share-link-password\"\n\t\t\t\t\t\t:class=\"{ error: errors.password}\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:required=\"config.enforcePasswordForPublicLink\"\n\t\t\t\t\t\t:value=\"hasUnsavedPassword ? share.newPassword : '***************'\"\n\t\t\t\t\t\ticon=\"icon-password\"\n\t\t\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t\t\t:type=\"hasUnsavedPassword ? 'text': 'password'\"\n\t\t\t\t\t\t@update:value=\"onPasswordChange\"\n\t\t\t\t\t\t@submit=\"onPasswordSubmit\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Enter a password') }}\n\t\t\t\t\t</ActionInput>\n\t\t\t\t\t<ActionText v-if=\"isEmailShareType && passwordExpirationTime\" icon=\"icon-info\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Password expires {passwordExpirationTime}', {passwordExpirationTime}) }}\n\t\t\t\t\t</ActionText>\n\t\t\t\t\t<ActionText v-else-if=\"isEmailShareType && passwordExpirationTime !== null\" icon=\"icon-error\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Password expired') }}\n\t\t\t\t\t</ActionText>\n\n\t\t\t\t\t<!-- password protected by Talk -->\n\t\t\t\t\t<ActionCheckbox v-if=\"isPasswordProtectedByTalkAvailable\"\n\t\t\t\t\t\t:checked.sync=\"isPasswordProtectedByTalk\"\n\t\t\t\t\t\t:disabled=\"!canTogglePasswordProtectedByTalkAvailable || saving\"\n\t\t\t\t\t\tclass=\"share-link-password-talk-checkbox\"\n\t\t\t\t\t\t@change=\"onPasswordProtectedByTalkChange\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Video verification') }}\n\t\t\t\t\t</ActionCheckbox>\n\n\t\t\t\t\t<!-- expiration date -->\n\t\t\t\t\t<ActionCheckbox :checked.sync=\"hasExpirationDate\"\n\t\t\t\t\t\t:disabled=\"config.isDefaultExpireDateEnforced || saving\"\n\t\t\t\t\t\tclass=\"share-link-expire-date-checkbox\"\n\t\t\t\t\t\t@uncheck=\"onExpirationDisable\">\n\t\t\t\t\t\t{{ config.isDefaultExpireDateEnforced\n\t\t\t\t\t\t\t? t('files_sharing', 'Expiration date (enforced)')\n\t\t\t\t\t\t\t: t('files_sharing', 'Set expiration date') }}\n\t\t\t\t\t</ActionCheckbox>\n\t\t\t\t\t<ActionInput v-if=\"hasExpirationDate\"\n\t\t\t\t\t\tref=\"expireDate\"\n\t\t\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\t\t\tcontent: errors.expireDate,\n\t\t\t\t\t\t\tshow: errors.expireDate,\n\t\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\tclass=\"share-link-expire-date\"\n\t\t\t\t\t\t:class=\"{ error: errors.expireDate}\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:lang=\"lang\"\n\t\t\t\t\t\t:value=\"share.expireDate\"\n\t\t\t\t\t\tvalue-type=\"format\"\n\t\t\t\t\t\ticon=\"icon-calendar-dark\"\n\t\t\t\t\t\ttype=\"date\"\n\t\t\t\t\t\t:disabled-date=\"disabledDate\"\n\t\t\t\t\t\t@update:value=\"onExpirationChange\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Enter a date') }}\n\t\t\t\t\t</ActionInput>\n\n\t\t\t\t\t<!-- note -->\n\t\t\t\t\t<ActionCheckbox :checked.sync=\"hasNote\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t@uncheck=\"queueUpdate('note')\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Note to recipient') }}\n\t\t\t\t\t</ActionCheckbox>\n\t\t\t\t\t<ActionTextEditable v-if=\"hasNote\"\n\t\t\t\t\t\tref=\"note\"\n\t\t\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\t\t\tcontent: errors.note,\n\t\t\t\t\t\t\tshow: errors.note,\n\t\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\t:class=\"{ error: errors.note}\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:placeholder=\"t('files_sharing', 'Enter a note for the share recipient')\"\n\t\t\t\t\t\t:value=\"share.newNote || share.note\"\n\t\t\t\t\t\ticon=\"icon-edit\"\n\t\t\t\t\t\t@update:value=\"onNoteChange\"\n\t\t\t\t\t\t@submit=\"onNoteSubmit\" />\n\t\t\t\t</template>\n\n\t\t\t\t<ActionSeparator />\n\n\t\t\t\t<!-- external actions -->\n\t\t\t\t<ExternalShareAction v-for=\"action in externalLinkActions\"\n\t\t\t\t\t:id=\"action.id\"\n\t\t\t\t\t:key=\"action.id\"\n\t\t\t\t\t:action=\"action\"\n\t\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t\t:share=\"share\" />\n\n\t\t\t\t<!-- external legacy sharing via url (social...) -->\n\t\t\t\t<ActionLink v-for=\"({icon, url, name}, index) in externalLegacyLinkActions\"\n\t\t\t\t\t:key=\"index\"\n\t\t\t\t\t:href=\"url(shareLink)\"\n\t\t\t\t\t:icon=\"icon\"\n\t\t\t\t\ttarget=\"_blank\">\n\t\t\t\t\t{{ name }}\n\t\t\t\t</ActionLink>\n\n\t\t\t\t<ActionButton v-if=\"share.canDelete\"\n\t\t\t\t\ticon=\"icon-close\"\n\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t@click.prevent=\"onDelete\">\n\t\t\t\t\t{{ t('files_sharing', 'Unshare') }}\n\t\t\t\t</ActionButton>\n\t\t\t\t<ActionButton v-if=\"!isEmailShareType && canReshare\"\n\t\t\t\t\tclass=\"new-share-link\"\n\t\t\t\t\ticon=\"icon-add\"\n\t\t\t\t\t@click.prevent.stop=\"onNewLinkShare\">\n\t\t\t\t\t{{ t('files_sharing', 'Add another link') }}\n\t\t\t\t</ActionButton>\n\t\t\t</template>\n\n\t\t\t<!-- Create new share -->\n\t\t\t<ActionButton v-else-if=\"canReshare\"\n\t\t\t\tclass=\"new-share-link\"\n\t\t\t\t:icon=\"loading ? 'icon-loading-small' : 'icon-add'\"\n\t\t\t\t@click.prevent.stop=\"onNewLinkShare\">\n\t\t\t\t{{ t('files_sharing', 'Create a new share link') }}\n\t\t\t</ActionButton>\n\t\t</Actions>\n\n\t\t<!-- loading indicator to replace the menu -->\n\t\t<div v-else class=\"icon-loading-small sharing-entry__loading\" />\n\t</li>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { Type as ShareTypes } from '@nextcloud/sharing'\nimport Vue from 'vue'\n\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport ActionCheckbox from '@nextcloud/vue/dist/Components/ActionCheckbox'\nimport ActionInput from '@nextcloud/vue/dist/Components/ActionInput'\nimport ActionLink from '@nextcloud/vue/dist/Components/ActionLink'\nimport ActionText from '@nextcloud/vue/dist/Components/ActionText'\nimport ActionSeparator from '@nextcloud/vue/dist/Components/ActionSeparator'\nimport ActionTextEditable from '@nextcloud/vue/dist/Components/ActionTextEditable'\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport Avatar from '@nextcloud/vue/dist/Components/Avatar'\nimport Tooltip from '@nextcloud/vue/dist/Directives/Tooltip'\n\nimport ExternalShareAction from './ExternalShareAction'\nimport SharePermissionsEditor from './SharePermissionsEditor'\nimport GeneratePassword from '../utils/GeneratePassword'\nimport Share from '../models/Share'\nimport SharesMixin from '../mixins/SharesMixin'\n\nexport default {\n\tname: 'SharingEntryLink',\n\n\tcomponents: {\n\t\tActions,\n\t\tActionButton,\n\t\tActionCheckbox,\n\t\tActionInput,\n\t\tActionLink,\n\t\tActionText,\n\t\tActionTextEditable,\n\t\tActionSeparator,\n\t\tAvatar,\n\t\tExternalShareAction,\n\t\tSharePermissionsEditor,\n\t},\n\n\tdirectives: {\n\t\tTooltip,\n\t},\n\n\tmixins: [SharesMixin],\n\n\tprops: {\n\t\tcanReshare: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tcopySuccess: true,\n\t\t\tcopied: false,\n\n\t\t\t// Are we waiting for password/expiration date\n\t\t\tpending: false,\n\n\t\t\tExternalLegacyLinkActions: OCA.Sharing.ExternalLinkActions.state,\n\t\t\tExternalShareActions: OCA.Sharing.ExternalShareActions.state,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Link share label\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\ttitle() {\n\t\t\t// if we have a valid existing share (not pending)\n\t\t\tif (this.share && this.share.id) {\n\t\t\t\tif (!this.isShareOwner && this.share.ownerDisplayName) {\n\t\t\t\t\tif (this.isEmailShareType) {\n\t\t\t\t\t\treturn t('files_sharing', '{shareWith} by {initiator}', {\n\t\t\t\t\t\t\tshareWith: this.share.shareWith,\n\t\t\t\t\t\t\tinitiator: this.share.ownerDisplayName,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\treturn t('files_sharing', 'Shared via link by {initiator}', {\n\t\t\t\t\t\tinitiator: this.share.ownerDisplayName,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (this.share.label && this.share.label.trim() !== '') {\n\t\t\t\t\tif (this.isEmailShareType) {\n\t\t\t\t\t\treturn t('files_sharing', 'Mail share ({label})', {\n\t\t\t\t\t\t\tlabel: this.share.label.trim(),\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\treturn t('files_sharing', 'Share link ({label})', {\n\t\t\t\t\t\tlabel: this.share.label.trim(),\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (this.isEmailShareType) {\n\t\t\t\t\treturn this.share.shareWith\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Share link')\n\t\t},\n\n\t\t/**\n\t\t * Show the email on a second line if a label is set for mail shares\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tsubtitle() {\n\t\t\tif (this.isEmailShareType\n\t\t\t\t&& this.title !== this.share.shareWith) {\n\t\t\t\treturn this.share.shareWith\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\t/**\n\t\t * Does the current share have an expiration date\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasExpirationDate: {\n\t\t\tget() {\n\t\t\t\treturn this.config.isDefaultExpireDateEnforced\n\t\t\t\t\t|| !!this.share.expireDate\n\t\t\t},\n\t\t\tset(enabled) {\n\t\t\t\tlet dateString = moment(this.config.defaultExpirationDateString)\n\t\t\t\tif (!dateString.isValid()) {\n\t\t\t\t\tdateString = moment()\n\t\t\t\t}\n\t\t\t\tthis.share.state.expiration = enabled\n\t\t\t\t\t? dateString.format('YYYY-MM-DD')\n\t\t\t\t\t: ''\n\t\t\t\tconsole.debug('Expiration date status', enabled, this.share.expireDate)\n\t\t\t},\n\t\t},\n\n\t\tdateMaxEnforced() {\n\t\t\treturn this.config.isDefaultExpireDateEnforced\n\t\t\t\t&& moment().add(1 + this.config.defaultExpireDate, 'days')\n\t\t},\n\n\t\t/**\n\t\t * Is the current share password protected ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisPasswordProtected: {\n\t\t\tget() {\n\t\t\t\treturn this.config.enforcePasswordForPublicLink\n\t\t\t\t\t|| !!this.share.password\n\t\t\t},\n\t\t\tasync set(enabled) {\n\t\t\t\t// TODO: directly save after generation to make sure the share is always protected\n\t\t\t\tVue.set(this.share, 'password', enabled ? await GeneratePassword() : '')\n\t\t\t\tVue.set(this.share, 'newPassword', this.share.password)\n\t\t\t},\n\t\t},\n\n\t\tpasswordExpirationTime() {\n\t\t\tif (this.share.passwordExpirationTime === null) {\n\t\t\t\treturn null\n\t\t\t}\n\n\t\t\tconst expirationTime = moment(this.share.passwordExpirationTime)\n\n\t\t\tif (expirationTime.diff(moment()) < 0) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\treturn expirationTime.fromNow()\n\t\t},\n\n\t\t/**\n\t\t * Is Talk enabled?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisTalkEnabled() {\n\t\t\treturn OC.appswebroots.spreed !== undefined\n\t\t},\n\n\t\t/**\n\t\t * Is it possible to protect the password by Talk?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisPasswordProtectedByTalkAvailable() {\n\t\t\treturn this.isPasswordProtected && this.isTalkEnabled\n\t\t},\n\n\t\t/**\n\t\t * Is the current share password protected by Talk?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisPasswordProtectedByTalk: {\n\t\t\tget() {\n\t\t\t\treturn this.share.sendPasswordByTalk\n\t\t\t},\n\t\t\tasync set(enabled) {\n\t\t\t\tthis.share.sendPasswordByTalk = enabled\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Is the current share an email share ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisEmailShareType() {\n\t\t\treturn this.share\n\t\t\t\t? this.share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL\n\t\t\t\t: false\n\t\t},\n\n\t\tcanTogglePasswordProtectedByTalkAvailable() {\n\t\t\tif (!this.isPasswordProtected) {\n\t\t\t\t// Makes no sense\n\t\t\t\treturn false\n\t\t\t} else if (this.isEmailShareType && !this.hasUnsavedPassword) {\n\t\t\t\t// For email shares we need a new password in order to enable or\n\t\t\t\t// disable\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\t// Anything else should be fine\n\t\t\treturn true\n\t\t},\n\n\t\t/**\n\t\t * Pending data.\n\t\t * If the share still doesn't have an id, it is not synced\n\t\t * Therefore this is still not valid and requires user input\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tpendingPassword() {\n\t\t\treturn this.config.enforcePasswordForPublicLink && this.share && !this.share.id\n\t\t},\n\t\tpendingExpirationDate() {\n\t\t\treturn this.config.isDefaultExpireDateEnforced && this.share && !this.share.id\n\t\t},\n\n\t\t// if newPassword exists, but is empty, it means\n\t\t// the user deleted the original password\n\t\thasUnsavedPassword() {\n\t\t\treturn this.share.newPassword !== undefined\n\t\t},\n\n\t\t/**\n\t\t * Return the public share link\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tshareLink() {\n\t\t\treturn window.location.protocol + '//' + window.location.host + generateUrl('/s/') + this.share.token\n\t\t},\n\n\t\t/**\n\t\t * Clipboard v-tooltip message\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tclipboardTooltip() {\n\t\t\tif (this.copied) {\n\t\t\t\treturn this.copySuccess\n\t\t\t\t\t? t('files_sharing', 'Link copied')\n\t\t\t\t\t: t('files_sharing', 'Cannot copy, please copy the link manually')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Copy to clipboard')\n\t\t},\n\n\t\t/**\n\t\t * External additionnai actions for the menu\n\t\t *\n\t\t * @deprecated use OCA.Sharing.ExternalShareActions\n\t\t * @return {Array}\n\t\t */\n\t\texternalLegacyLinkActions() {\n\t\t\treturn this.ExternalLegacyLinkActions.actions\n\t\t},\n\n\t\t/**\n\t\t * Additional actions for the menu\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\texternalLinkActions() {\n\t\t\t// filter only the registered actions for said link\n\t\t\treturn this.ExternalShareActions.actions\n\t\t\t\t.filter(action => action.shareType.includes(ShareTypes.SHARE_TYPE_LINK)\n\t\t\t\t\t|| action.shareType.includes(ShareTypes.SHARE_TYPE_EMAIL))\n\t\t},\n\n\t\tisPasswordPolicyEnabled() {\n\t\t\treturn typeof this.config.passwordPolicy === 'object'\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Create a new share link and append it to the list\n\t\t */\n\t\tasync onNewLinkShare() {\n\t\t\t// do not run again if already loading\n\t\t\tif (this.loading) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst shareDefaults = {\n\t\t\t\tshare_type: ShareTypes.SHARE_TYPE_LINK,\n\t\t\t}\n\t\t\tif (this.config.isDefaultExpireDateEnforced) {\n\t\t\t\t// default is empty string if not set\n\t\t\t\t// expiration is the share object key, not expireDate\n\t\t\t\tshareDefaults.expiration = this.config.defaultExpirationDateString\n\t\t\t}\n\t\t\tif (this.config.enableLinkPasswordByDefault) {\n\t\t\t\tshareDefaults.password = await GeneratePassword()\n\t\t\t}\n\n\t\t\t// do not push yet if we need a password or an expiration date: show pending menu\n\t\t\tif (this.config.enforcePasswordForPublicLink || this.config.isDefaultExpireDateEnforced) {\n\t\t\t\tthis.pending = true\n\n\t\t\t\t// if a share already exists, pushing it\n\t\t\t\tif (this.share && !this.share.id) {\n\t\t\t\t\t// if the share is valid, create it on the server\n\t\t\t\t\tif (this.checkShare(this.share)) {\n\t\t\t\t\t\tawait this.pushNewLinkShare(this.share, true)\n\t\t\t\t\t\treturn true\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.open = true\n\t\t\t\t\t\tOC.Notification.showTemporary(t('files_sharing', 'Error, please enter proper password and/or expiration date'))\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// ELSE, show the pending popovermenu\n\t\t\t\t// if password enforced, pre-fill with random one\n\t\t\t\tif (this.config.enforcePasswordForPublicLink) {\n\t\t\t\t\tshareDefaults.password = await GeneratePassword()\n\t\t\t\t}\n\n\t\t\t\t// create share & close menu\n\t\t\t\tconst share = new Share(shareDefaults)\n\t\t\t\tconst component = await new Promise(resolve => {\n\t\t\t\t\tthis.$emit('add:share', share, resolve)\n\t\t\t\t})\n\n\t\t\t\t// open the menu on the\n\t\t\t\t// freshly created share component\n\t\t\t\tthis.open = false\n\t\t\t\tthis.pending = false\n\t\t\t\tcomponent.open = true\n\n\t\t\t// Nothing is enforced, creating share directly\n\t\t\t} else {\n\t\t\t\tconst share = new Share(shareDefaults)\n\t\t\t\tawait this.pushNewLinkShare(share)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Push a new link share to the server\n\t\t * And update or append to the list\n\t\t * accordingly\n\t\t *\n\t\t * @param {Share} share the new share\n\t\t * @param {boolean} [update=false] do we update the current share ?\n\t\t */\n\t\tasync pushNewLinkShare(share, update) {\n\t\t\ttry {\n\t\t\t\t// do nothing if we're already pending creation\n\t\t\t\tif (this.loading) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\n\t\t\t\tthis.loading = true\n\t\t\t\tthis.errors = {}\n\n\t\t\t\tconst path = (this.fileInfo.path + '/' + this.fileInfo.name).replace('//', '/')\n\t\t\t\tconst newShare = await this.createShare({\n\t\t\t\t\tpath,\n\t\t\t\t\tshareType: ShareTypes.SHARE_TYPE_LINK,\n\t\t\t\t\tpassword: share.password,\n\t\t\t\t\texpireDate: share.expireDate,\n\t\t\t\t\t// we do not allow setting the publicUpload\n\t\t\t\t\t// before the share creation.\n\t\t\t\t\t// Todo: We also need to fix the createShare method in\n\t\t\t\t\t// lib/Controller/ShareAPIController.php to allow file drop\n\t\t\t\t\t// (currently not supported on create, only update)\n\t\t\t\t})\n\n\t\t\t\tthis.open = false\n\n\t\t\t\tconsole.debug('Link share created', newShare)\n\n\t\t\t\t// if share already exists, copy link directly on next tick\n\t\t\t\tlet component\n\t\t\t\tif (update) {\n\t\t\t\t\tcomponent = await new Promise(resolve => {\n\t\t\t\t\t\tthis.$emit('update:share', newShare, resolve)\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\t// adding new share to the array and copying link to clipboard\n\t\t\t\t\t// using promise so that we can copy link in the same click function\n\t\t\t\t\t// and avoid firefox copy permissions issue\n\t\t\t\t\tcomponent = await new Promise(resolve => {\n\t\t\t\t\t\tthis.$emit('add:share', newShare, resolve)\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\t// Execute the copy link method\n\t\t\t\t// freshly created share component\n\t\t\t\t// ! somehow does not works on firefox !\n\t\t\t\tif (!this.config.enforcePasswordForPublicLink) {\n\t\t\t\t\t// Only copy the link when the password was not forced,\n\t\t\t\t\t// otherwise the user needs to copy/paste the password before finishing the share.\n\t\t\t\t\tcomponent.copyLink()\n\t\t\t\t}\n\n\t\t\t} catch ({ response }) {\n\t\t\t\tconst message = response.data.ocs.meta.message\n\t\t\t\tif (message.match(/password/i)) {\n\t\t\t\t\tthis.onSyncError('password', message)\n\t\t\t\t} else if (message.match(/date/i)) {\n\t\t\t\t\tthis.onSyncError('expireDate', message)\n\t\t\t\t} else {\n\t\t\t\t\tthis.onSyncError('pending', message)\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Label changed, let's save it to a different key\n\t\t *\n\t\t * @param {string} label the share label\n\t\t */\n\t\tonLabelChange(label) {\n\t\t\tthis.$set(this.share, 'newLabel', label.trim())\n\t\t},\n\n\t\t/**\n\t\t * When the note change, we trim, save and dispatch\n\t\t */\n\t\tonLabelSubmit() {\n\t\t\tif (typeof this.share.newLabel === 'string') {\n\t\t\t\tthis.share.label = this.share.newLabel\n\t\t\t\tthis.$delete(this.share, 'newLabel')\n\t\t\t\tthis.queueUpdate('label')\n\t\t\t}\n\t\t},\n\t\tasync copyLink() {\n\t\t\ttry {\n\t\t\t\tawait this.$copyText(this.shareLink)\n\t\t\t\t// focus and show the tooltip\n\t\t\t\tthis.$refs.copyButton.$el.focus()\n\t\t\t\tthis.copySuccess = true\n\t\t\t\tthis.copied = true\n\t\t\t} catch (error) {\n\t\t\t\tthis.copySuccess = false\n\t\t\t\tthis.copied = true\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.copySuccess = false\n\t\t\t\t\tthis.copied = false\n\t\t\t\t}, 4000)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Update newPassword values\n\t\t * of share. If password is set but not newPassword\n\t\t * then the user did not changed the password\n\t\t * If both co-exists, the password have changed and\n\t\t * we show it in plain text.\n\t\t * Then on submit (or menu close), we sync it.\n\t\t *\n\t\t * @param {string} password the changed password\n\t\t */\n\t\tonPasswordChange(password) {\n\t\t\tthis.$set(this.share, 'newPassword', password)\n\t\t},\n\n\t\t/**\n\t\t * Uncheck password protection\n\t\t * We need this method because @update:checked\n\t\t * is ran simultaneously as @uncheck, so we\n\t\t * cannot ensure data is up-to-date\n\t\t */\n\t\tonPasswordDisable() {\n\t\t\tthis.share.password = ''\n\n\t\t\t// reset password state after sync\n\t\t\tthis.$delete(this.share, 'newPassword')\n\n\t\t\t// only update if valid share.\n\t\t\tif (this.share.id) {\n\t\t\t\tthis.queueUpdate('password')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Menu have been closed or password has been submited.\n\t\t * The only property that does not get\n\t\t * synced automatically is the password\n\t\t * So let's check if we have an unsaved\n\t\t * password.\n\t\t * expireDate is saved on datepicker pick\n\t\t * or close.\n\t\t */\n\t\tonPasswordSubmit() {\n\t\t\tif (this.hasUnsavedPassword) {\n\t\t\t\tthis.share.password = this.share.newPassword.trim()\n\t\t\t\tthis.queueUpdate('password')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Update the password along with \"sendPasswordByTalk\".\n\t\t *\n\t\t * If the password was modified the new password is sent; otherwise\n\t\t * updating a mail share would fail, as in that case it is required that\n\t\t * a new password is set when enabling or disabling\n\t\t * \"sendPasswordByTalk\".\n\t\t */\n\t\tonPasswordProtectedByTalkChange() {\n\t\t\tif (this.hasUnsavedPassword) {\n\t\t\t\tthis.share.password = this.share.newPassword.trim()\n\t\t\t}\n\n\t\t\tthis.queueUpdate('sendPasswordByTalk', 'password')\n\t\t},\n\n\t\t/**\n\t\t * Save potential changed data on menu close\n\t\t */\n\t\tonMenuClose() {\n\t\t\tthis.onPasswordSubmit()\n\t\t\tthis.onNoteSubmit()\n\t\t},\n\n\t\t/**\n\t\t * Cancel the share creation\n\t\t * Used in the pending popover\n\t\t */\n\t\tonCancel() {\n\t\t\t// this.share already exists at this point,\n\t\t\t// but is incomplete as not pushed to server\n\t\t\t// YET. We can safely delete the share :)\n\t\t\tthis.$emit('remove:share', this.share)\n\t\t},\n\t},\n\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\toverflow: hidden;\n\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__title {\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t}\n\n\t&:not(.sharing-entry--share) &__actions {\n\t\t.new-share-link {\n\t\t\tborder-top: 1px solid var(--color-border);\n\t\t}\n\t}\n\n\t::v-deep .avatar-link-share {\n\t\tbackground-color: var(--color-primary);\n\t}\n\n\t.sharing-entry__action--public-upload {\n\t\tborder-bottom: 1px solid var(--color-border);\n\t}\n\n\t&__loading {\n\t\twidth: 44px;\n\t\theight: 44px;\n\t\tmargin: 0;\n\t\tpadding: 14px;\n\t\tmargin-left: auto;\n\t}\n\n\t// put menus to the left\n\t// but only the first one\n\t.action-item {\n\t\tmargin-left: auto;\n\t\t~ .action-item,\n\t\t~ .sharing-entry__loading {\n\t\t\tmargin-left: 0;\n\t\t}\n\t}\n\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryLink.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryLink.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryLink.vue?vue&type=style&index=0&id=16656e50&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryLink.vue?vue&type=style&index=0&id=16656e50&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntryLink.vue?vue&type=template&id=16656e50&scoped=true&\"\nimport script from \"./SharingEntryLink.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntryLink.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntryLink.vue?vue&type=style&index=0&id=16656e50&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"16656e50\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{staticClass:\"sharing-entry sharing-entry__link\",class:{'sharing-entry--share': _vm.share}},[_c('Avatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"is-no-user\":true,\"icon-class\":_vm.isEmailShareType ? 'avatar-link-share icon-mail-white' : 'avatar-link-share icon-public-white'}}),_vm._v(\" \"),_c('div',{staticClass:\"sharing-entry__desc\"},[_c('span',{staticClass:\"sharing-entry__title\",attrs:{\"title\":_vm.title}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.title)+\"\\n\\t\\t\")]),_vm._v(\" \"),(_vm.subtitle)?_c('p',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.subtitle)+\"\\n\\t\\t\")]):_vm._e()]),_vm._v(\" \"),(_vm.share && !_vm.isEmailShareType && _vm.share.token)?_c('Actions',{ref:\"copyButton\",staticClass:\"sharing-entry__copy\"},[_c('ActionLink',{attrs:{\"href\":_vm.shareLink,\"target\":\"_blank\",\"icon\":_vm.copied && _vm.copySuccess ? 'icon-checkmark-color' : 'icon-clippy'},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.copyLink.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.clipboardTooltip)+\"\\n\\t\\t\")])],1):_vm._e(),_vm._v(\" \"),(!_vm.pending && (_vm.pendingPassword || _vm.pendingExpirationDate))?_c('Actions',{staticClass:\"sharing-entry__actions\",attrs:{\"menu-align\":\"right\",\"open\":_vm.open},on:{\"update:open\":function($event){_vm.open=$event},\"close\":_vm.onNewLinkShare}},[(_vm.errors.pending)?_c('ActionText',{class:{ error: _vm.errors.pending},attrs:{\"icon\":\"icon-error\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.errors.pending)+\"\\n\\t\\t\")]):_c('ActionText',{attrs:{\"icon\":\"icon-info\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Please enter the following required information before creating the share'))+\"\\n\\t\\t\")]),_vm._v(\" \"),(_vm.pendingPassword)?_c('ActionText',{attrs:{\"icon\":\"icon-password\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password protection (enforced)'))+\"\\n\\t\\t\")]):(_vm.config.enableLinkPasswordByDefault)?_c('ActionCheckbox',{staticClass:\"share-link-password-checkbox\",attrs:{\"checked\":_vm.isPasswordProtected,\"disabled\":_vm.config.enforcePasswordForPublicLink || _vm.saving},on:{\"update:checked\":function($event){_vm.isPasswordProtected=$event},\"uncheck\":_vm.onPasswordDisable}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password protection'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.pendingPassword || _vm.share.password)?_c('ActionInput',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\tcontent: _vm.errors.password,\n\t\t\t\tshow: _vm.errors.password,\n\t\t\t\ttrigger: 'manual',\n\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t}),expression:\"{\\n\\t\\t\\t\\tcontent: errors.password,\\n\\t\\t\\t\\tshow: errors.password,\\n\\t\\t\\t\\ttrigger: 'manual',\\n\\t\\t\\t\\tdefaultContainer: '#app-sidebar'\\n\\t\\t\\t}\",modifiers:{\"auto\":true}}],staticClass:\"share-link-password\",attrs:{\"value\":_vm.share.password,\"disabled\":_vm.saving,\"required\":_vm.config.enableLinkPasswordByDefault || _vm.config.enforcePasswordForPublicLink,\"minlength\":_vm.isPasswordPolicyEnabled && _vm.config.passwordPolicy.minLength,\"icon\":\"\",\"autocomplete\":\"new-password\"},on:{\"update:value\":function($event){return _vm.$set(_vm.share, \"password\", $event)},\"submit\":_vm.onNewLinkShare}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a password'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.pendingExpirationDate)?_c('ActionText',{attrs:{\"icon\":\"icon-calendar-dark\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Expiration date (enforced)'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.pendingExpirationDate)?_c('ActionInput',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\tcontent: _vm.errors.expireDate,\n\t\t\t\tshow: _vm.errors.expireDate,\n\t\t\t\ttrigger: 'manual',\n\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t}),expression:\"{\\n\\t\\t\\t\\tcontent: errors.expireDate,\\n\\t\\t\\t\\tshow: errors.expireDate,\\n\\t\\t\\t\\ttrigger: 'manual',\\n\\t\\t\\t\\tdefaultContainer: '#app-sidebar'\\n\\t\\t\\t}\",modifiers:{\"auto\":true}}],staticClass:\"share-link-expire-date\",attrs:{\"disabled\":_vm.saving,\"lang\":_vm.lang,\"icon\":\"\",\"type\":\"date\",\"value-type\":\"format\",\"disabled-date\":_vm.disabledDate},model:{value:(_vm.share.expireDate),callback:function ($$v) {_vm.$set(_vm.share, \"expireDate\", $$v)},expression:\"share.expireDate\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a date'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('ActionButton',{attrs:{\"icon\":\"icon-checkmark\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onNewLinkShare.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Create share'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('ActionButton',{attrs:{\"icon\":\"icon-close\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onCancel.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Cancel'))+\"\\n\\t\\t\")])],1):(!_vm.loading)?_c('Actions',{staticClass:\"sharing-entry__actions\",attrs:{\"menu-align\":\"right\",\"open\":_vm.open},on:{\"update:open\":function($event){_vm.open=$event},\"close\":_vm.onMenuClose}},[(_vm.share)?[(_vm.share.canEdit && _vm.canReshare)?[_c('ActionInput',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\t\t\tcontent: _vm.errors.label,\n\t\t\t\t\t\tshow: _vm.errors.label,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '.app-sidebar'\n\t\t\t\t\t}),expression:\"{\\n\\t\\t\\t\\t\\t\\tcontent: errors.label,\\n\\t\\t\\t\\t\\t\\tshow: errors.label,\\n\\t\\t\\t\\t\\t\\ttrigger: 'manual',\\n\\t\\t\\t\\t\\t\\tdefaultContainer: '.app-sidebar'\\n\\t\\t\\t\\t\\t}\",modifiers:{\"auto\":true}}],ref:\"label\",class:{ error: _vm.errors.label },attrs:{\"disabled\":_vm.saving,\"aria-label\":_vm.t('files_sharing', 'Share label'),\"value\":_vm.share.newLabel !== undefined ? _vm.share.newLabel : _vm.share.label,\"icon\":\"icon-edit\",\"maxlength\":\"255\"},on:{\"update:value\":_vm.onLabelChange,\"submit\":_vm.onLabelSubmit}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Share label'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('SharePermissionsEditor',{attrs:{\"can-reshare\":_vm.canReshare,\"share\":_vm.share,\"file-info\":_vm.fileInfo},on:{\"update:share\":function($event){_vm.share=$event}}}),_vm._v(\" \"),_c('ActionSeparator'),_vm._v(\" \"),_c('ActionCheckbox',{attrs:{\"checked\":_vm.share.hideDownload,\"disabled\":_vm.saving},on:{\"update:checked\":function($event){return _vm.$set(_vm.share, \"hideDownload\", $event)},\"change\":function($event){return _vm.queueUpdate('hideDownload')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Hide download'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('ActionCheckbox',{staticClass:\"share-link-password-checkbox\",attrs:{\"checked\":_vm.isPasswordProtected,\"disabled\":_vm.config.enforcePasswordForPublicLink || _vm.saving},on:{\"update:checked\":function($event){_vm.isPasswordProtected=$event},\"uncheck\":_vm.onPasswordDisable}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.config.enforcePasswordForPublicLink\n\t\t\t\t\t\t? _vm.t('files_sharing', 'Password protection (enforced)')\n\t\t\t\t\t\t: _vm.t('files_sharing', 'Password protect'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.isPasswordProtected)?_c('ActionInput',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\t\t\tcontent: _vm.errors.password,\n\t\t\t\t\t\tshow: _vm.errors.password,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t}),expression:\"{\\n\\t\\t\\t\\t\\t\\tcontent: errors.password,\\n\\t\\t\\t\\t\\t\\tshow: errors.password,\\n\\t\\t\\t\\t\\t\\ttrigger: 'manual',\\n\\t\\t\\t\\t\\t\\tdefaultContainer: '#app-sidebar'\\n\\t\\t\\t\\t\\t}\",modifiers:{\"auto\":true}}],ref:\"password\",staticClass:\"share-link-password\",class:{ error: _vm.errors.password},attrs:{\"disabled\":_vm.saving,\"required\":_vm.config.enforcePasswordForPublicLink,\"value\":_vm.hasUnsavedPassword ? _vm.share.newPassword : '***************',\"icon\":\"icon-password\",\"autocomplete\":\"new-password\",\"type\":_vm.hasUnsavedPassword ? 'text': 'password'},on:{\"update:value\":_vm.onPasswordChange,\"submit\":_vm.onPasswordSubmit}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a password'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isEmailShareType && _vm.passwordExpirationTime)?_c('ActionText',{attrs:{\"icon\":\"icon-info\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password expires {passwordExpirationTime}', {passwordExpirationTime: _vm.passwordExpirationTime}))+\"\\n\\t\\t\\t\\t\")]):(_vm.isEmailShareType && _vm.passwordExpirationTime !== null)?_c('ActionText',{attrs:{\"icon\":\"icon-error\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password expired'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isPasswordProtectedByTalkAvailable)?_c('ActionCheckbox',{staticClass:\"share-link-password-talk-checkbox\",attrs:{\"checked\":_vm.isPasswordProtectedByTalk,\"disabled\":!_vm.canTogglePasswordProtectedByTalkAvailable || _vm.saving},on:{\"update:checked\":function($event){_vm.isPasswordProtectedByTalk=$event},\"change\":_vm.onPasswordProtectedByTalkChange}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Video verification'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('ActionCheckbox',{staticClass:\"share-link-expire-date-checkbox\",attrs:{\"checked\":_vm.hasExpirationDate,\"disabled\":_vm.config.isDefaultExpireDateEnforced || _vm.saving},on:{\"update:checked\":function($event){_vm.hasExpirationDate=$event},\"uncheck\":_vm.onExpirationDisable}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.config.isDefaultExpireDateEnforced\n\t\t\t\t\t\t? _vm.t('files_sharing', 'Expiration date (enforced)')\n\t\t\t\t\t\t: _vm.t('files_sharing', 'Set expiration date'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.hasExpirationDate)?_c('ActionInput',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\t\t\tcontent: _vm.errors.expireDate,\n\t\t\t\t\t\tshow: _vm.errors.expireDate,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t}),expression:\"{\\n\\t\\t\\t\\t\\t\\tcontent: errors.expireDate,\\n\\t\\t\\t\\t\\t\\tshow: errors.expireDate,\\n\\t\\t\\t\\t\\t\\ttrigger: 'manual',\\n\\t\\t\\t\\t\\t\\tdefaultContainer: '#app-sidebar'\\n\\t\\t\\t\\t\\t}\",modifiers:{\"auto\":true}}],ref:\"expireDate\",staticClass:\"share-link-expire-date\",class:{ error: _vm.errors.expireDate},attrs:{\"disabled\":_vm.saving,\"lang\":_vm.lang,\"value\":_vm.share.expireDate,\"value-type\":\"format\",\"icon\":\"icon-calendar-dark\",\"type\":\"date\",\"disabled-date\":_vm.disabledDate},on:{\"update:value\":_vm.onExpirationChange}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a date'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('ActionCheckbox',{attrs:{\"checked\":_vm.hasNote,\"disabled\":_vm.saving},on:{\"update:checked\":function($event){_vm.hasNote=$event},\"uncheck\":function($event){return _vm.queueUpdate('note')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Note to recipient'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.hasNote)?_c('ActionTextEditable',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\t\t\tcontent: _vm.errors.note,\n\t\t\t\t\t\tshow: _vm.errors.note,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t}),expression:\"{\\n\\t\\t\\t\\t\\t\\tcontent: errors.note,\\n\\t\\t\\t\\t\\t\\tshow: errors.note,\\n\\t\\t\\t\\t\\t\\ttrigger: 'manual',\\n\\t\\t\\t\\t\\t\\tdefaultContainer: '#app-sidebar'\\n\\t\\t\\t\\t\\t}\",modifiers:{\"auto\":true}}],ref:\"note\",class:{ error: _vm.errors.note},attrs:{\"disabled\":_vm.saving,\"placeholder\":_vm.t('files_sharing', 'Enter a note for the share recipient'),\"value\":_vm.share.newNote || _vm.share.note,\"icon\":\"icon-edit\"},on:{\"update:value\":_vm.onNoteChange,\"submit\":_vm.onNoteSubmit}}):_vm._e()]:_vm._e(),_vm._v(\" \"),_c('ActionSeparator'),_vm._v(\" \"),_vm._l((_vm.externalLinkActions),function(action){return _c('ExternalShareAction',{key:action.id,attrs:{\"id\":action.id,\"action\":action,\"file-info\":_vm.fileInfo,\"share\":_vm.share}})}),_vm._v(\" \"),_vm._l((_vm.externalLegacyLinkActions),function(ref,index){\n\t\t\t\t\tvar icon = ref.icon;\n\t\t\t\t\tvar url = ref.url;\n\t\t\t\t\tvar name = ref.name;\nreturn _c('ActionLink',{key:index,attrs:{\"href\":url(_vm.shareLink),\"icon\":icon,\"target\":\"_blank\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(name)+\"\\n\\t\\t\\t\")])}),_vm._v(\" \"),(_vm.share.canDelete)?_c('ActionButton',{attrs:{\"icon\":\"icon-close\",\"disabled\":_vm.saving},on:{\"click\":function($event){$event.preventDefault();return _vm.onDelete.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Unshare'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(!_vm.isEmailShareType && _vm.canReshare)?_c('ActionButton',{staticClass:\"new-share-link\",attrs:{\"icon\":\"icon-add\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onNewLinkShare.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Add another link'))+\"\\n\\t\\t\\t\")]):_vm._e()]:(_vm.canReshare)?_c('ActionButton',{staticClass:\"new-share-link\",attrs:{\"icon\":_vm.loading ? 'icon-loading-small' : 'icon-add'},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onNewLinkShare.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Create a new share link'))+\"\\n\\t\\t\")]):_vm._e()],2):_c('div',{staticClass:\"icon-loading-small sharing-entry__loading\"})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingLinkList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingLinkList.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<ul v-if=\"canLinkShare\" class=\"sharing-link-list\">\n\t\t<!-- If no link shares, show the add link default entry -->\n\t\t<SharingEntryLink v-if=\"!hasLinkShares && canReshare\"\n\t\t\t:can-reshare=\"canReshare\"\n\t\t\t:file-info=\"fileInfo\"\n\t\t\t@add:share=\"addShare\" />\n\n\t\t<!-- Else we display the list -->\n\t\t<template v-if=\"hasShares\">\n\t\t\t<!-- using shares[index] to work with .sync -->\n\t\t\t<SharingEntryLink v-for=\"(share, index) in shares\"\n\t\t\t\t:key=\"share.id\"\n\t\t\t\t:can-reshare=\"canReshare\"\n\t\t\t\t:share.sync=\"shares[index]\"\n\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t@add:share=\"addShare(...arguments)\"\n\t\t\t\t@update:share=\"awaitForShare(...arguments)\"\n\t\t\t\t@remove:share=\"removeShare\" />\n\t\t</template>\n\t</ul>\n</template>\n\n<script>\n// eslint-disable-next-line no-unused-vars\nimport Share from '../models/Share'\nimport ShareTypes from '../mixins/ShareTypes'\nimport SharingEntryLink from '../components/SharingEntryLink'\n\nexport default {\n\tname: 'SharingLinkList',\n\n\tcomponents: {\n\t\tSharingEntryLink,\n\t},\n\n\tmixins: [ShareTypes],\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\tshares: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\trequired: true,\n\t\t},\n\t\tcanReshare: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tcanLinkShare: OC.getCapabilities().files_sharing.public.enabled,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Do we have link shares?\n\t\t * Using this to still show the `new link share`\n\t\t * button regardless of mail shares\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\thasLinkShares() {\n\t\t\treturn this.shares.filter(share => share.type === this.SHARE_TYPES.SHARE_TYPE_LINK).length > 0\n\t\t},\n\n\t\t/**\n\t\t * Do we have any link or email shares?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasShares() {\n\t\t\treturn this.shares.length > 0\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Add a new share into the link shares list\n\t\t * and return the newly created share component\n\t\t *\n\t\t * @param {Share} share the share to add to the array\n\t\t * @param {Function} resolve a function to run after the share is added and its component initialized\n\t\t */\n\t\taddShare(share, resolve) {\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.shares.unshift(share)\n\t\t\tthis.awaitForShare(share, resolve)\n\t\t},\n\n\t\t/**\n\t\t * Await for next tick and render after the list updated\n\t\t * Then resolve with the matched vue component of the\n\t\t * provided share object\n\t\t *\n\t\t * @param {Share} share newly created share\n\t\t * @param {Function} resolve a function to execute after\n\t\t */\n\t\tawaitForShare(share, resolve) {\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tconst newShare = this.$children.find(component => component.share === share)\n\t\t\t\tif (newShare) {\n\t\t\t\t\tresolve(newShare)\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Remove a share from the shares list\n\t\t *\n\t\t * @param {Share} share the share to remove\n\t\t */\n\t\tremoveShare(share) {\n\t\t\tconst index = this.shares.findIndex(item => item === share)\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.shares.splice(index, 1)\n\t\t},\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./SharingLinkList.vue?vue&type=template&id=8be1a6a2&\"\nimport script from \"./SharingLinkList.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingLinkList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.canLinkShare)?_c('ul',{staticClass:\"sharing-link-list\"},[(!_vm.hasLinkShares && _vm.canReshare)?_c('SharingEntryLink',{attrs:{\"can-reshare\":_vm.canReshare,\"file-info\":_vm.fileInfo},on:{\"add:share\":_vm.addShare}}):_vm._e(),_vm._v(\" \"),(_vm.hasShares)?_vm._l((_vm.shares),function(share,index){return _c('SharingEntryLink',{key:share.id,attrs:{\"can-reshare\":_vm.canReshare,\"share\":_vm.shares[index],\"file-info\":_vm.fileInfo},on:{\"update:share\":[function($event){return _vm.$set(_vm.shares, index, $event)},function($event){return _vm.awaitForShare.apply(void 0, arguments)}],\"add:share\":function($event){return _vm.addShare.apply(void 0, arguments)},\"remove:share\":_vm.removeShare}})}):_vm._e()],2):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<li class=\"sharing-entry\">\n\t\t<Avatar class=\"sharing-entry__avatar\"\n\t\t\t:is-no-user=\"share.type !== SHARE_TYPES.SHARE_TYPE_USER\"\n\t\t\t:user=\"share.shareWith\"\n\t\t\t:display-name=\"share.shareWithDisplayName\"\n\t\t\t:tooltip-message=\"share.type === SHARE_TYPES.SHARE_TYPE_USER ? share.shareWith : ''\"\n\t\t\t:menu-position=\"'left'\"\n\t\t\t:url=\"share.shareWithAvatar\" />\n\t\t<component :is=\"share.shareWithLink ? 'a' : 'div'\"\n\t\t\tv-tooltip.auto=\"tooltip\"\n\t\t\t:href=\"share.shareWithLink\"\n\t\t\tclass=\"sharing-entry__desc\">\n\t\t\t<span>{{ title }}<span v-if=\"!isUnique\" class=\"sharing-entry__desc-unique\"> ({{ share.shareWithDisplayNameUnique }})</span></span>\n\t\t\t<p v-if=\"hasStatus\">\n\t\t\t\t<span>{{ share.status.icon || '' }}</span>\n\t\t\t\t<span>{{ share.status.message || '' }}</span>\n\t\t\t</p>\n\t\t</component>\n\t\t<Actions menu-align=\"right\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\t@close=\"onMenuClose\">\n\t\t\t<template v-if=\"share.canEdit\">\n\t\t\t\t<!-- edit permission -->\n\t\t\t\t<ActionCheckbox ref=\"canEdit\"\n\t\t\t\t\t:checked.sync=\"canEdit\"\n\t\t\t\t\t:value=\"permissionsEdit\"\n\t\t\t\t\t:disabled=\"saving || !canSetEdit\">\n\t\t\t\t\t{{ t('files_sharing', 'Allow editing') }}\n\t\t\t\t</ActionCheckbox>\n\n\t\t\t\t<!-- create permission -->\n\t\t\t\t<ActionCheckbox v-if=\"isFolder\"\n\t\t\t\t\tref=\"canCreate\"\n\t\t\t\t\t:checked.sync=\"canCreate\"\n\t\t\t\t\t:value=\"permissionsCreate\"\n\t\t\t\t\t:disabled=\"saving || !canSetCreate\">\n\t\t\t\t\t{{ t('files_sharing', 'Allow creating') }}\n\t\t\t\t</ActionCheckbox>\n\n\t\t\t\t<!-- delete permission -->\n\t\t\t\t<ActionCheckbox v-if=\"isFolder\"\n\t\t\t\t\tref=\"canDelete\"\n\t\t\t\t\t:checked.sync=\"canDelete\"\n\t\t\t\t\t:value=\"permissionsDelete\"\n\t\t\t\t\t:disabled=\"saving || !canSetDelete\">\n\t\t\t\t\t{{ t('files_sharing', 'Allow deleting') }}\n\t\t\t\t</ActionCheckbox>\n\n\t\t\t\t<!-- reshare permission -->\n\t\t\t\t<ActionCheckbox v-if=\"config.isResharingAllowed\"\n\t\t\t\t\tref=\"canReshare\"\n\t\t\t\t\t:checked.sync=\"canReshare\"\n\t\t\t\t\t:value=\"permissionsShare\"\n\t\t\t\t\t:disabled=\"saving || !canSetReshare\">\n\t\t\t\t\t{{ t('files_sharing', 'Allow resharing') }}\n\t\t\t\t</ActionCheckbox>\n\n\t\t\t\t<!-- expiration date -->\n\t\t\t\t<ActionCheckbox :checked.sync=\"hasExpirationDate\"\n\t\t\t\t\t:disabled=\"config.isDefaultInternalExpireDateEnforced || saving\"\n\t\t\t\t\t@uncheck=\"onExpirationDisable\">\n\t\t\t\t\t{{ config.isDefaultInternalExpireDateEnforced\n\t\t\t\t\t\t? t('files_sharing', 'Expiration date enforced')\n\t\t\t\t\t\t: t('files_sharing', 'Set expiration date') }}\n\t\t\t\t</ActionCheckbox>\n\t\t\t\t<ActionInput v-if=\"hasExpirationDate\"\n\t\t\t\t\tref=\"expireDate\"\n\t\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\t\tcontent: errors.expireDate,\n\t\t\t\t\t\tshow: errors.expireDate,\n\t\t\t\t\t\ttrigger: 'manual'\n\t\t\t\t\t}\"\n\t\t\t\t\t:class=\"{ error: errors.expireDate}\"\n\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t:lang=\"lang\"\n\t\t\t\t\t:value=\"share.expireDate\"\n\t\t\t\t\tvalue-type=\"format\"\n\t\t\t\t\ticon=\"icon-calendar-dark\"\n\t\t\t\t\ttype=\"date\"\n\t\t\t\t\t:disabled-date=\"disabledDate\"\n\t\t\t\t\t@update:value=\"onExpirationChange\">\n\t\t\t\t\t{{ t('files_sharing', 'Enter a date') }}\n\t\t\t\t</ActionInput>\n\n\t\t\t\t<!-- note -->\n\t\t\t\t<template v-if=\"canHaveNote\">\n\t\t\t\t\t<ActionCheckbox :checked.sync=\"hasNote\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t@uncheck=\"queueUpdate('note')\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Note to recipient') }}\n\t\t\t\t\t</ActionCheckbox>\n\t\t\t\t\t<ActionTextEditable v-if=\"hasNote\"\n\t\t\t\t\t\tref=\"note\"\n\t\t\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\t\t\tcontent: errors.note,\n\t\t\t\t\t\t\tshow: errors.note,\n\t\t\t\t\t\t\ttrigger: 'manual'\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\t:class=\"{ error: errors.note}\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:value=\"share.newNote || share.note\"\n\t\t\t\t\t\ticon=\"icon-edit\"\n\t\t\t\t\t\t@update:value=\"onNoteChange\"\n\t\t\t\t\t\t@submit=\"onNoteSubmit\" />\n\t\t\t\t</template>\n\t\t\t</template>\n\n\t\t\t<ActionButton v-if=\"share.canDelete\"\n\t\t\t\ticon=\"icon-close\"\n\t\t\t\t:disabled=\"saving\"\n\t\t\t\t@click.prevent=\"onDelete\">\n\t\t\t\t{{ t('files_sharing', 'Unshare') }}\n\t\t\t</ActionButton>\n\t\t</Actions>\n\t</li>\n</template>\n\n<script>\nimport Avatar from '@nextcloud/vue/dist/Components/Avatar'\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport ActionCheckbox from '@nextcloud/vue/dist/Components/ActionCheckbox'\nimport ActionInput from '@nextcloud/vue/dist/Components/ActionInput'\nimport ActionTextEditable from '@nextcloud/vue/dist/Components/ActionTextEditable'\nimport Tooltip from '@nextcloud/vue/dist/Directives/Tooltip'\n\nimport SharesMixin from '../mixins/SharesMixin'\n\nexport default {\n\tname: 'SharingEntry',\n\n\tcomponents: {\n\t\tActions,\n\t\tActionButton,\n\t\tActionCheckbox,\n\t\tActionInput,\n\t\tActionTextEditable,\n\t\tAvatar,\n\t},\n\n\tdirectives: {\n\t\tTooltip,\n\t},\n\n\tmixins: [SharesMixin],\n\n\tdata() {\n\t\treturn {\n\t\t\tpermissionsEdit: OC.PERMISSION_UPDATE,\n\t\t\tpermissionsCreate: OC.PERMISSION_CREATE,\n\t\t\tpermissionsDelete: OC.PERMISSION_DELETE,\n\t\t\tpermissionsRead: OC.PERMISSION_READ,\n\t\t\tpermissionsShare: OC.PERMISSION_SHARE,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\ttitle() {\n\t\t\tlet title = this.share.shareWithDisplayName\n\t\t\tif (this.share.type === this.SHARE_TYPES.SHARE_TYPE_GROUP) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'group')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_ROOM) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'conversation')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'remote')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'remote group')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_GUEST) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'guest')})`\n\t\t\t}\n\t\t\treturn title\n\t\t},\n\n\t\ttooltip() {\n\t\t\tif (this.share.owner !== this.share.uidFileOwner) {\n\t\t\t\tconst data = {\n\t\t\t\t\t// todo: strong or italic?\n\t\t\t\t\t// but the t function escape any html from the data :/\n\t\t\t\t\tuser: this.share.shareWithDisplayName,\n\t\t\t\t\towner: this.share.ownerDisplayName,\n\t\t\t\t}\n\n\t\t\t\tif (this.share.type === this.SHARE_TYPES.SHARE_TYPE_GROUP) {\n\t\t\t\t\treturn t('files_sharing', 'Shared with the group {user} by {owner}', data)\n\t\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_ROOM) {\n\t\t\t\t\treturn t('files_sharing', 'Shared with the conversation {user} by {owner}', data)\n\t\t\t\t}\n\n\t\t\t\treturn t('files_sharing', 'Shared with {user} by {owner}', data)\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\tcanHaveNote() {\n\t\t\treturn !this.isRemote\n\t\t},\n\n\t\tisRemote() {\n\t\t\treturn this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE\n\t\t\t\t|| this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP\n\t\t},\n\n\t\t/**\n\t\t * Can the sharer set whether the sharee can edit the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetEdit() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.sharePermissions & OC.PERMISSION_UPDATE) || this.canEdit\n\t\t},\n\n\t\t/**\n\t\t * Can the sharer set whether the sharee can create the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetCreate() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.sharePermissions & OC.PERMISSION_CREATE) || this.canCreate\n\t\t},\n\n\t\t/**\n\t\t * Can the sharer set whether the sharee can delete the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetDelete() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.sharePermissions & OC.PERMISSION_DELETE) || this.canDelete\n\t\t},\n\n\t\t/**\n\t\t * Can the sharer set whether the sharee can reshare the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetReshare() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.sharePermissions & OC.PERMISSION_SHARE) || this.canReshare\n\t\t},\n\n\t\t/**\n\t\t * Can the sharee edit the shared file ?\n\t\t */\n\t\tcanEdit: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasUpdatePermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updatePermissions({ isEditChecked: checked })\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Can the sharee create the shared file ?\n\t\t */\n\t\tcanCreate: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasCreatePermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updatePermissions({ isCreateChecked: checked })\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Can the sharee delete the shared file ?\n\t\t */\n\t\tcanDelete: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasDeletePermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updatePermissions({ isDeleteChecked: checked })\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Can the sharee reshare the file ?\n\t\t */\n\t\tcanReshare: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasSharePermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updatePermissions({ isReshareChecked: checked })\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Is this share readable\n\t\t * Needed for some federated shares that might have been added from file drop links\n\t\t */\n\t\thasRead: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasReadPermission\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Is the current share a folder ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisFolder() {\n\t\t\treturn this.fileInfo.type === 'dir'\n\t\t},\n\n\t\t/**\n\t\t * Does the current share have an expiration date\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasExpirationDate: {\n\t\t\tget() {\n\t\t\t\treturn this.config.isDefaultInternalExpireDateEnforced || !!this.share.expireDate\n\t\t\t},\n\t\t\tset(enabled) {\n\t\t\t\tthis.share.expireDate = enabled\n\t\t\t\t\t? this.config.defaultInternalExpirationDateString !== ''\n\t\t\t\t\t\t? this.config.defaultInternalExpirationDateString\n\t\t\t\t\t\t: moment().format('YYYY-MM-DD')\n\t\t\t\t\t: ''\n\t\t\t},\n\t\t},\n\n\t\tdateMaxEnforced() {\n\t\t\tif (!this.isRemote) {\n\t\t\t\treturn this.config.isDefaultInternalExpireDateEnforced\n\t\t\t\t\t&& moment().add(1 + this.config.defaultInternalExpireDate, 'days')\n\t\t\t} else {\n\t\t\t\treturn this.config.isDefaultRemoteExpireDateEnforced\n\t\t\t\t\t&& moment().add(1 + this.config.defaultRemoteExpireDate, 'days')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @return {boolean}\n\t\t */\n\t\thasStatus() {\n\t\t\tif (this.share.type !== this.SHARE_TYPES.SHARE_TYPE_USER) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\treturn (typeof this.share.status === 'object' && !Array.isArray(this.share.status))\n\t\t},\n\n\t},\n\n\tmethods: {\n\t\tupdatePermissions({ isEditChecked = this.canEdit, isCreateChecked = this.canCreate, isDeleteChecked = this.canDelete, isReshareChecked = this.canReshare } = {}) {\n\t\t\t// calc permissions if checked\n\t\t\tconst permissions = 0\n\t\t\t\t| (this.hasRead ? this.permissionsRead : 0)\n\t\t\t\t| (isCreateChecked ? this.permissionsCreate : 0)\n\t\t\t\t| (isDeleteChecked ? this.permissionsDelete : 0)\n\t\t\t\t| (isEditChecked ? this.permissionsEdit : 0)\n\t\t\t\t| (isReshareChecked ? this.permissionsShare : 0)\n\n\t\t\tthis.share.permissions = permissions\n\t\t\tthis.queueUpdate('permissions')\n\t\t},\n\n\t\t/**\n\t\t * Save potential changed data on menu close\n\t\t */\n\t\tonMenuClose() {\n\t\t\tthis.onNoteSubmit()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t\t&-unique {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntry.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntry.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntry.vue?vue&type=style&index=0&id=dc8e346e&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntry.vue?vue&type=style&index=0&id=dc8e346e&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntry.vue?vue&type=template&id=dc8e346e&scoped=true&\"\nimport script from \"./SharingEntry.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntry.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntry.vue?vue&type=style&index=0&id=dc8e346e&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"dc8e346e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{staticClass:\"sharing-entry\"},[_c('Avatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"is-no-user\":_vm.share.type !== _vm.SHARE_TYPES.SHARE_TYPE_USER,\"user\":_vm.share.shareWith,\"display-name\":_vm.share.shareWithDisplayName,\"tooltip-message\":_vm.share.type === _vm.SHARE_TYPES.SHARE_TYPE_USER ? _vm.share.shareWith : '',\"menu-position\":'left',\"url\":_vm.share.shareWithAvatar}}),_vm._v(\" \"),_c(_vm.share.shareWithLink ? 'a' : 'div',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.tooltip),expression:\"tooltip\",modifiers:{\"auto\":true}}],tag:\"component\",staticClass:\"sharing-entry__desc\",attrs:{\"href\":_vm.share.shareWithLink}},[_c('span',[_vm._v(_vm._s(_vm.title)),(!_vm.isUnique)?_c('span',{staticClass:\"sharing-entry__desc-unique\"},[_vm._v(\" (\"+_vm._s(_vm.share.shareWithDisplayNameUnique)+\")\")]):_vm._e()]),_vm._v(\" \"),(_vm.hasStatus)?_c('p',[_c('span',[_vm._v(_vm._s(_vm.share.status.icon || ''))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.share.status.message || ''))])]):_vm._e()]),_vm._v(\" \"),_c('Actions',{staticClass:\"sharing-entry__actions\",attrs:{\"menu-align\":\"right\"},on:{\"close\":_vm.onMenuClose}},[(_vm.share.canEdit)?[_c('ActionCheckbox',{ref:\"canEdit\",attrs:{\"checked\":_vm.canEdit,\"value\":_vm.permissionsEdit,\"disabled\":_vm.saving || !_vm.canSetEdit},on:{\"update:checked\":function($event){_vm.canEdit=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow editing'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),(_vm.isFolder)?_c('ActionCheckbox',{ref:\"canCreate\",attrs:{\"checked\":_vm.canCreate,\"value\":_vm.permissionsCreate,\"disabled\":_vm.saving || !_vm.canSetCreate},on:{\"update:checked\":function($event){_vm.canCreate=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow creating'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isFolder)?_c('ActionCheckbox',{ref:\"canDelete\",attrs:{\"checked\":_vm.canDelete,\"value\":_vm.permissionsDelete,\"disabled\":_vm.saving || !_vm.canSetDelete},on:{\"update:checked\":function($event){_vm.canDelete=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow deleting'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.config.isResharingAllowed)?_c('ActionCheckbox',{ref:\"canReshare\",attrs:{\"checked\":_vm.canReshare,\"value\":_vm.permissionsShare,\"disabled\":_vm.saving || !_vm.canSetReshare},on:{\"update:checked\":function($event){_vm.canReshare=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow resharing'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('ActionCheckbox',{attrs:{\"checked\":_vm.hasExpirationDate,\"disabled\":_vm.config.isDefaultInternalExpireDateEnforced || _vm.saving},on:{\"update:checked\":function($event){_vm.hasExpirationDate=$event},\"uncheck\":_vm.onExpirationDisable}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.config.isDefaultInternalExpireDateEnforced\n\t\t\t\t\t? _vm.t('files_sharing', 'Expiration date enforced')\n\t\t\t\t\t: _vm.t('files_sharing', 'Set expiration date'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),(_vm.hasExpirationDate)?_c('ActionInput',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\t\tcontent: _vm.errors.expireDate,\n\t\t\t\t\tshow: _vm.errors.expireDate,\n\t\t\t\t\ttrigger: 'manual'\n\t\t\t\t}),expression:\"{\\n\\t\\t\\t\\t\\tcontent: errors.expireDate,\\n\\t\\t\\t\\t\\tshow: errors.expireDate,\\n\\t\\t\\t\\t\\ttrigger: 'manual'\\n\\t\\t\\t\\t}\",modifiers:{\"auto\":true}}],ref:\"expireDate\",class:{ error: _vm.errors.expireDate},attrs:{\"disabled\":_vm.saving,\"lang\":_vm.lang,\"value\":_vm.share.expireDate,\"value-type\":\"format\",\"icon\":\"icon-calendar-dark\",\"type\":\"date\",\"disabled-date\":_vm.disabledDate},on:{\"update:value\":_vm.onExpirationChange}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a date'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.canHaveNote)?[_c('ActionCheckbox',{attrs:{\"checked\":_vm.hasNote,\"disabled\":_vm.saving},on:{\"update:checked\":function($event){_vm.hasNote=$event},\"uncheck\":function($event){return _vm.queueUpdate('note')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Note to recipient'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.hasNote)?_c('ActionTextEditable',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\t\t\tcontent: _vm.errors.note,\n\t\t\t\t\t\tshow: _vm.errors.note,\n\t\t\t\t\t\ttrigger: 'manual'\n\t\t\t\t\t}),expression:\"{\\n\\t\\t\\t\\t\\t\\tcontent: errors.note,\\n\\t\\t\\t\\t\\t\\tshow: errors.note,\\n\\t\\t\\t\\t\\t\\ttrigger: 'manual'\\n\\t\\t\\t\\t\\t}\",modifiers:{\"auto\":true}}],ref:\"note\",class:{ error: _vm.errors.note},attrs:{\"disabled\":_vm.saving,\"value\":_vm.share.newNote || _vm.share.note,\"icon\":\"icon-edit\"},on:{\"update:value\":_vm.onNoteChange,\"submit\":_vm.onNoteSubmit}}):_vm._e()]:_vm._e()]:_vm._e(),_vm._v(\" \"),(_vm.share.canDelete)?_c('ActionButton',{attrs:{\"icon\":\"icon-close\",\"disabled\":_vm.saving},on:{\"click\":function($event){$event.preventDefault();return _vm.onDelete.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Unshare'))+\"\\n\\t\\t\")]):_vm._e()],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<ul class=\"sharing-sharee-list\">\n\t\t<SharingEntry v-for=\"share in shares\"\n\t\t\t:key=\"share.id\"\n\t\t\t:file-info=\"fileInfo\"\n\t\t\t:share=\"share\"\n\t\t\t:is-unique=\"isUnique(share)\"\n\t\t\t@remove:share=\"removeShare\" />\n\t</ul>\n</template>\n\n<script>\n// eslint-disable-next-line no-unused-vars\nimport Share from '../models/Share'\nimport SharingEntry from '../components/SharingEntry'\nimport ShareTypes from '../mixins/ShareTypes'\n\nexport default {\n\tname: 'SharingList',\n\n\tcomponents: {\n\t\tSharingEntry,\n\t},\n\n\tmixins: [ShareTypes],\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\tshares: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\thasShares() {\n\t\t\treturn this.shares.length === 0\n\t\t},\n\t\tisUnique() {\n\t\t\treturn (share) => {\n\t\t\t\treturn [...this.shares].filter((item) => {\n\t\t\t\t\treturn share.type === this.SHARE_TYPES.SHARE_TYPE_USER && share.shareWithDisplayName === item.shareWithDisplayName\n\t\t\t\t}).length <= 1\n\t\t\t}\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Remove a share from the shares list\n\t\t *\n\t\t * @param {Share} share the share to remove\n\t\t */\n\t\tremoveShare(share) {\n\t\t\tconst index = this.shares.findIndex(item => item === share)\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.shares.splice(index, 1)\n\t\t},\n\t},\n}\n</script>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingList.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SharingList.vue?vue&type=template&id=0b29d4c0&\"\nimport script from \"./SharingList.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',{staticClass:\"sharing-sharee-list\"},_vm._l((_vm.shares),function(share){return _c('SharingEntry',{key:share.id,attrs:{\"file-info\":_vm.fileInfo,\"share\":share,\"is-unique\":_vm.isUnique(share)},on:{\"remove:share\":_vm.removeShare}})}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div :class=\"{ 'icon-loading': loading }\">\n\t\t<!-- error message -->\n\t\t<div v-if=\"error\" class=\"emptycontent\" :class=\"{ emptyContentWithSections: sections.length > 0 }\">\n\t\t\t<div class=\"icon icon-error\" />\n\t\t\t<h2>{{ error }}</h2>\n\t\t</div>\n\n\t\t<!-- shares content -->\n\t\t<template v-else>\n\t\t\t<!-- shared with me information -->\n\t\t\t<SharingEntrySimple v-if=\"isSharedWithMe\" v-bind=\"sharedWithMe\" class=\"sharing-entry__reshare\">\n\t\t\t\t<template #avatar>\n\t\t\t\t\t<Avatar :user=\"sharedWithMe.user\"\n\t\t\t\t\t\t:display-name=\"sharedWithMe.displayName\"\n\t\t\t\t\t\tclass=\"sharing-entry__avatar\"\n\t\t\t\t\t\ttooltip-message=\"\" />\n\t\t\t\t</template>\n\t\t\t</SharingEntrySimple>\n\n\t\t\t<!-- add new share input -->\n\t\t\t<SharingInput v-if=\"!loading\"\n\t\t\t\t:can-reshare=\"canReshare\"\n\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t:link-shares=\"linkShares\"\n\t\t\t\t:reshare=\"reshare\"\n\t\t\t\t:shares=\"shares\"\n\t\t\t\t@add:share=\"addShare\" />\n\n\t\t\t<!-- link shares list -->\n\t\t\t<SharingLinkList v-if=\"!loading\"\n\t\t\t\tref=\"linkShareList\"\n\t\t\t\t:can-reshare=\"canReshare\"\n\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t:shares=\"linkShares\" />\n\n\t\t\t<!-- other shares list -->\n\t\t\t<SharingList v-if=\"!loading\"\n\t\t\t\tref=\"shareList\"\n\t\t\t\t:shares=\"shares\"\n\t\t\t\t:file-info=\"fileInfo\" />\n\n\t\t\t<!-- inherited shares -->\n\t\t\t<SharingInherited v-if=\"canReshare && !loading\" :file-info=\"fileInfo\" />\n\n\t\t\t<!-- internal link copy -->\n\t\t\t<SharingEntryInternal :file-info=\"fileInfo\" />\n\n\t\t\t<!-- projects -->\n\t\t\t<CollectionList v-if=\"fileInfo\"\n\t\t\t\t:id=\"`${fileInfo.id}`\"\n\t\t\t\ttype=\"file\"\n\t\t\t\t:name=\"fileInfo.name\" />\n\t\t</template>\n\n\t\t<!-- additionnal entries, use it with cautious -->\n\t\t<div v-for=\"(section, index) in sections\"\n\t\t\t:ref=\"'section-' + index\"\n\t\t\t:key=\"index\"\n\t\t\tclass=\"sharingTab__additionalContent\">\n\t\t\t<component :is=\"section($refs['section-'+index], fileInfo)\" :file-info=\"fileInfo\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { CollectionList } from 'nextcloud-vue-collections'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport Avatar from '@nextcloud/vue/dist/Components/Avatar'\nimport axios from '@nextcloud/axios'\n\nimport Config from '../services/ConfigService'\nimport { shareWithTitle } from '../utils/SharedWithMe'\nimport Share from '../models/Share'\nimport ShareTypes from '../mixins/ShareTypes'\nimport SharingEntryInternal from '../components/SharingEntryInternal'\nimport SharingEntrySimple from '../components/SharingEntrySimple'\nimport SharingInput from '../components/SharingInput'\n\nimport SharingInherited from './SharingInherited'\nimport SharingLinkList from './SharingLinkList'\nimport SharingList from './SharingList'\n\nexport default {\n\tname: 'SharingTab',\n\n\tcomponents: {\n\t\tAvatar,\n\t\tCollectionList,\n\t\tSharingEntryInternal,\n\t\tSharingEntrySimple,\n\t\tSharingInherited,\n\t\tSharingInput,\n\t\tSharingLinkList,\n\t\tSharingList,\n\t},\n\n\tmixins: [ShareTypes],\n\n\tdata() {\n\t\treturn {\n\t\t\tconfig: new Config(),\n\n\t\t\terror: '',\n\t\t\texpirationInterval: null,\n\t\t\tloading: true,\n\n\t\t\tfileInfo: null,\n\n\t\t\t// reshare Share object\n\t\t\treshare: null,\n\t\t\tsharedWithMe: {},\n\t\t\tshares: [],\n\t\t\tlinkShares: [],\n\n\t\t\tsections: OCA.Sharing.ShareTabSections.getSections(),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Is this share shared with me?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisSharedWithMe() {\n\t\t\treturn Object.keys(this.sharedWithMe).length > 0\n\t\t},\n\n\t\tcanReshare() {\n\t\t\treturn !!(this.fileInfo.permissions & OC.PERMISSION_SHARE)\n\t\t\t\t|| !!(this.reshare && this.reshare.hasSharePermission && this.config.isResharingAllowed)\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Update current fileInfo and fetch new data\n\t\t *\n\t\t * @param {object} fileInfo the current file FileInfo\n\t\t */\n\t\tasync update(fileInfo) {\n\t\t\tthis.fileInfo = fileInfo\n\t\t\tthis.resetState()\n\t\t\tthis.getShares()\n\t\t},\n\n\t\t/**\n\t\t * Get the existing shares infos\n\t\t */\n\t\tasync getShares() {\n\t\t\ttry {\n\t\t\t\tthis.loading = true\n\n\t\t\t\t// init params\n\t\t\t\tconst shareUrl = generateOcsUrl('apps/files_sharing/api/v1/shares')\n\t\t\t\tconst format = 'json'\n\t\t\t\t// TODO: replace with proper getFUllpath implementation of our own FileInfo model\n\t\t\t\tconst path = (this.fileInfo.path + '/' + this.fileInfo.name).replace('//', '/')\n\n\t\t\t\t// fetch shares\n\t\t\t\tconst fetchShares = axios.get(shareUrl, {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat,\n\t\t\t\t\t\tpath,\n\t\t\t\t\t\treshares: true,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tconst fetchSharedWithMe = axios.get(shareUrl, {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat,\n\t\t\t\t\t\tpath,\n\t\t\t\t\t\tshared_with_me: true,\n\t\t\t\t\t},\n\t\t\t\t})\n\n\t\t\t\t// wait for data\n\t\t\t\tconst [shares, sharedWithMe] = await Promise.all([fetchShares, fetchSharedWithMe])\n\t\t\t\tthis.loading = false\n\n\t\t\t\t// process results\n\t\t\t\tthis.processSharedWithMe(sharedWithMe)\n\t\t\t\tthis.processShares(shares)\n\t\t\t} catch (error) {\n\t\t\t\tif (error.response.data?.ocs?.meta?.message) {\n\t\t\t\t\tthis.error = error.response.data.ocs.meta.message\n\t\t\t\t} else {\n\t\t\t\t\tthis.error = t('files_sharing', 'Unable to load the shares list')\n\t\t\t\t}\n\t\t\t\tthis.loading = false\n\t\t\t\tconsole.error('Error loading the shares list', error)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Reset the current view to its default state\n\t\t */\n\t\tresetState() {\n\t\t\tclearInterval(this.expirationInterval)\n\t\t\tthis.loading = true\n\t\t\tthis.error = ''\n\t\t\tthis.sharedWithMe = {}\n\t\t\tthis.shares = []\n\t\t\tthis.linkShares = []\n\t\t},\n\n\t\t/**\n\t\t * Update sharedWithMe.subtitle with the appropriate\n\t\t * expiration time left\n\t\t *\n\t\t * @param {Share} share the sharedWith Share object\n\t\t */\n\t\tupdateExpirationSubtitle(share) {\n\t\t\tconst expiration = moment(share.expireDate).unix()\n\t\t\tthis.$set(this.sharedWithMe, 'subtitle', t('files_sharing', 'Expires {relativetime}', {\n\t\t\t\trelativetime: OC.Util.relativeModifiedDate(expiration * 1000),\n\t\t\t}))\n\n\t\t\t// share have expired\n\t\t\tif (moment().unix() > expiration) {\n\t\t\t\tclearInterval(this.expirationInterval)\n\t\t\t\t// TODO: clear ui if share is expired\n\t\t\t\tthis.$set(this.sharedWithMe, 'subtitle', t('files_sharing', 'this share just expired.'))\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Process the current shares data\n\t\t * and init shares[]\n\t\t *\n\t\t * @param {object} share the share ocs api request data\n\t\t * @param {object} share.data the request data\n\t\t */\n\t\tprocessShares({ data }) {\n\t\t\tif (data.ocs && data.ocs.data && data.ocs.data.length > 0) {\n\t\t\t\t// create Share objects and sort by newest\n\t\t\t\tconst shares = data.ocs.data\n\t\t\t\t\t.map(share => new Share(share))\n\t\t\t\t\t.sort((a, b) => b.createdTime - a.createdTime)\n\n\t\t\t\tthis.linkShares = shares.filter(share => share.type === this.SHARE_TYPES.SHARE_TYPE_LINK || share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL)\n\t\t\t\tthis.shares = shares.filter(share => share.type !== this.SHARE_TYPES.SHARE_TYPE_LINK && share.type !== this.SHARE_TYPES.SHARE_TYPE_EMAIL)\n\n\t\t\t\tconsole.debug('Processed', this.linkShares.length, 'link share(s)')\n\t\t\t\tconsole.debug('Processed', this.shares.length, 'share(s)')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Process the sharedWithMe share data\n\t\t * and init sharedWithMe\n\t\t *\n\t\t * @param {object} share the share ocs api request data\n\t\t * @param {object} share.data the request data\n\t\t */\n\t\tprocessSharedWithMe({ data }) {\n\t\t\tif (data.ocs && data.ocs.data && data.ocs.data[0]) {\n\t\t\t\tconst share = new Share(data)\n\t\t\t\tconst title = shareWithTitle(share)\n\t\t\t\tconst displayName = share.ownerDisplayName\n\t\t\t\tconst user = share.owner\n\n\t\t\t\tthis.sharedWithMe = {\n\t\t\t\t\tdisplayName,\n\t\t\t\t\ttitle,\n\t\t\t\t\tuser,\n\t\t\t\t}\n\t\t\t\tthis.reshare = share\n\n\t\t\t\t// If we have an expiration date, use it as subtitle\n\t\t\t\t// Refresh the status every 10s and clear if expired\n\t\t\t\tif (share.expireDate && moment(share.expireDate).unix() > moment().unix()) {\n\t\t\t\t\t// first update\n\t\t\t\t\tthis.updateExpirationSubtitle(share)\n\t\t\t\t\t// interval update\n\t\t\t\t\tthis.expirationInterval = setInterval(this.updateExpirationSubtitle, 10000, share)\n\t\t\t\t}\n\t\t\t} else if (this.fileInfo && this.fileInfo.shareOwnerId !== undefined ? this.fileInfo.shareOwnerId !== OC.currentUser : false) {\n\t\t\t\t// Fallback to compare owner and current user.\n\t\t\t\tthis.sharedWithMe = {\n\t\t\t\t\tdisplayName: this.fileInfo.shareOwner,\n\t\t\t\t\ttitle: t(\n\t\t\t\t\t\t'files_sharing',\n\t\t\t\t\t\t'Shared with you by {owner}',\n\t\t\t\t\t\t{ owner: this.fileInfo.shareOwner },\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t{ escape: false }\n\t\t\t\t\t),\n\t\t\t\t\tuser: this.fileInfo.shareOwnerId,\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Add a new share into the shares list\n\t\t * and return the newly created share component\n\t\t *\n\t\t * @param {Share} share the share to add to the array\n\t\t * @param {Function} [resolve] a function to run after the share is added and its component initialized\n\t\t */\n\t\taddShare(share, resolve = () => {}) {\n\t\t\t// only catching share type MAIL as link shares are added differently\n\t\t\t// meaning: not from the ShareInput\n\t\t\tif (share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\tthis.linkShares.unshift(share)\n\t\t\t} else {\n\t\t\t\tthis.shares.unshift(share)\n\t\t\t}\n\t\t\tthis.awaitForShare(share, resolve)\n\t\t},\n\n\t\t/**\n\t\t * Await for next tick and render after the list updated\n\t\t * Then resolve with the matched vue component of the\n\t\t * provided share object\n\t\t *\n\t\t * @param {Share} share newly created share\n\t\t * @param {Function} resolve a function to execute after\n\t\t */\n\t\tawaitForShare(share, resolve) {\n\t\t\tlet listComponent = this.$refs.shareList\n\t\t\t// Only mail shares comes from the input, link shares\n\t\t\t// are managed internally in the SharingLinkList component\n\t\t\tif (share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\tlistComponent = this.$refs.linkShareList\n\t\t\t}\n\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tconst newShare = listComponent.$children.find(component => component.share === share)\n\t\t\t\tif (newShare) {\n\t\t\t\t\tresolve(newShare)\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.emptyContentWithSections {\n\tmargin: 1rem auto;\n}\n</style>\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { Type as ShareTypes } from '@nextcloud/sharing'\n\nconst shareWithTitle = function(share) {\n\tif (share.type === ShareTypes.SHARE_TYPE_GROUP) {\n\t\treturn t(\n\t\t\t'files_sharing',\n\t\t\t'Shared with you and the group {group} by {owner}',\n\t\t\t{\n\t\t\t\tgroup: share.shareWithDisplayName,\n\t\t\t\towner: share.ownerDisplayName,\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{ escape: false }\n\t\t)\n\t} else if (share.type === ShareTypes.SHARE_TYPE_CIRCLE) {\n\t\treturn t(\n\t\t\t'files_sharing',\n\t\t\t'Shared with you and {circle} by {owner}',\n\t\t\t{\n\t\t\t\tcircle: share.shareWithDisplayName,\n\t\t\t\towner: share.ownerDisplayName,\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{ escape: false }\n\t\t)\n\t} else if (share.type === ShareTypes.SHARE_TYPE_ROOM) {\n\t\tif (share.shareWithDisplayName) {\n\t\t\treturn t(\n\t\t\t\t'files_sharing',\n\t\t\t\t'Shared with you and the conversation {conversation} by {owner}',\n\t\t\t\t{\n\t\t\t\t\tconversation: share.shareWithDisplayName,\n\t\t\t\t\towner: share.ownerDisplayName,\n\t\t\t\t},\n\t\t\t\tundefined,\n\t\t\t\t{ escape: false }\n\t\t\t)\n\t\t} else {\n\t\t\treturn t(\n\t\t\t\t'files_sharing',\n\t\t\t\t'Shared with you in a conversation by {owner}',\n\t\t\t\t{\n\t\t\t\t\towner: share.ownerDisplayName,\n\t\t\t\t},\n\t\t\t\tundefined,\n\t\t\t\t{ escape: false }\n\t\t\t)\n\t\t}\n\t} else {\n\t\treturn t(\n\t\t\t'files_sharing',\n\t\t\t'Shared with you by {owner}',\n\t\t\t{ owner: share.ownerDisplayName },\n\t\t\tundefined,\n\t\t\t{ escape: false }\n\t\t)\n\t}\n}\n\nexport { shareWithTitle }\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingTab.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingTab.vue?vue&type=style&index=0&id=b6bc0cd2&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingTab.vue?vue&type=style&index=0&id=b6bc0cd2&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingTab.vue?vue&type=template&id=b6bc0cd2&scoped=true&\"\nimport script from \"./SharingTab.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingTab.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingTab.vue?vue&type=style&index=0&id=b6bc0cd2&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 \"b6bc0cd2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:{ 'icon-loading': _vm.loading }},[(_vm.error)?_c('div',{staticClass:\"emptycontent\",class:{ emptyContentWithSections: _vm.sections.length > 0 }},[_c('div',{staticClass:\"icon icon-error\"}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.error))])]):[(_vm.isSharedWithMe)?_c('SharingEntrySimple',_vm._b({staticClass:\"sharing-entry__reshare\",scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('Avatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"user\":_vm.sharedWithMe.user,\"display-name\":_vm.sharedWithMe.displayName,\"tooltip-message\":\"\"}})]},proxy:true}],null,false,1643724538)},'SharingEntrySimple',_vm.sharedWithMe,false)):_vm._e(),_vm._v(\" \"),(!_vm.loading)?_c('SharingInput',{attrs:{\"can-reshare\":_vm.canReshare,\"file-info\":_vm.fileInfo,\"link-shares\":_vm.linkShares,\"reshare\":_vm.reshare,\"shares\":_vm.shares},on:{\"add:share\":_vm.addShare}}):_vm._e(),_vm._v(\" \"),(!_vm.loading)?_c('SharingLinkList',{ref:\"linkShareList\",attrs:{\"can-reshare\":_vm.canReshare,\"file-info\":_vm.fileInfo,\"shares\":_vm.linkShares}}):_vm._e(),_vm._v(\" \"),(!_vm.loading)?_c('SharingList',{ref:\"shareList\",attrs:{\"shares\":_vm.shares,\"file-info\":_vm.fileInfo}}):_vm._e(),_vm._v(\" \"),(_vm.canReshare && !_vm.loading)?_c('SharingInherited',{attrs:{\"file-info\":_vm.fileInfo}}):_vm._e(),_vm._v(\" \"),_c('SharingEntryInternal',{attrs:{\"file-info\":_vm.fileInfo}}),_vm._v(\" \"),(_vm.fileInfo)?_c('CollectionList',{attrs:{\"id\":(\"\" + (_vm.fileInfo.id)),\"type\":\"file\",\"name\":_vm.fileInfo.name}}):_vm._e()],_vm._v(\" \"),_vm._l((_vm.sections),function(section,index){return _c('div',{key:index,ref:'section-' + index,refInFor:true,staticClass:\"sharingTab__additionalContent\"},[_c(section(_vm.$refs['section-'+index], _vm.fileInfo),{tag:\"component\",attrs:{\"file-info\":_vm.fileInfo}})],1)})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class ShareSearch {\n\n\t_state\n\n\tconstructor() {\n\t\t// init empty state\n\t\tthis._state = {}\n\n\t\t// init default values\n\t\tthis._state.results = []\n\t\tconsole.debug('OCA.Sharing.ShareSearch initialized')\n\t}\n\n\t/**\n\t * Get the state\n\t *\n\t * @readonly\n\t * @memberof ShareSearch\n\t * @return {object} the data state\n\t */\n\tget state() {\n\t\treturn this._state\n\t}\n\n\t/**\n\t * Register a new result\n\t * Mostly used by the guests app.\n\t * We should consider deprecation and add results via php ?\n\t *\n\t * @param {object} result entry to append\n\t * @param {string} [result.user] entry user\n\t * @param {string} result.displayName entry first line\n\t * @param {string} [result.desc] entry second line\n\t * @param {string} [result.icon] entry icon\n\t * @param {Function} result.handler function to run on entry selection\n\t * @param {Function} [result.condition] condition to add entry or not\n\t * @return {boolean}\n\t */\n\taddNewResult(result) {\n\t\tif (result.displayName.trim() !== ''\n\t\t\t&& typeof result.handler === 'function') {\n\t\t\tthis._state.results.push(result)\n\t\t\treturn true\n\t\t}\n\t\tconsole.error('Invalid search result provided', result)\n\t\treturn false\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class ExternalLinkActions {\n\n\t_state\n\n\tconstructor() {\n\t\t// init empty state\n\t\tthis._state = {}\n\n\t\t// init default values\n\t\tthis._state.actions = []\n\t\tconsole.debug('OCA.Sharing.ExternalLinkActions initialized')\n\t}\n\n\t/**\n\t * Get the state\n\t *\n\t * @readonly\n\t * @memberof ExternalLinkActions\n\t * @return {object} the data state\n\t */\n\tget state() {\n\t\treturn this._state\n\t}\n\n\t/**\n\t * Register a new action for the link share\n\t * Mostly used by the social sharing app.\n\t *\n\t * @param {object} action new action component to register\n\t * @return {boolean}\n\t */\n\tregisterAction(action) {\n\t\tconsole.warn('OCA.Sharing.ExternalLinkActions is deprecated, use OCA.Sharing.ExternalShareAction instead')\n\n\t\tif (typeof action === 'object' && action.icon && action.name && action.url) {\n\t\t\tthis._state.actions.push(action)\n\t\t\treturn true\n\t\t}\n\t\tconsole.error('Invalid action provided', action)\n\t\treturn false\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class ExternalShareActions {\n\n\t_state\n\n\tconstructor() {\n\t\t// init empty state\n\t\tthis._state = {}\n\n\t\t// init default values\n\t\tthis._state.actions = []\n\t\tconsole.debug('OCA.Sharing.ExternalShareActions initialized')\n\t}\n\n\t/**\n\t * Get the state\n\t *\n\t * @readonly\n\t * @memberof ExternalLinkActions\n\t * @return {object} the data state\n\t */\n\tget state() {\n\t\treturn this._state\n\t}\n\n\t/**\n\t * Register a new option/entry for the a given share type\n\t *\n\t * @param {object} action new action component to register\n\t * @param {string} action.id unique action id\n\t * @param {Function} action.data data to bind the component to\n\t * @param {Array} action.shareType list of \\@nextcloud/sharing.Types.SHARE_XXX to be mounted on\n\t * @param {object} action.handlers list of listeners\n\t * @return {boolean}\n\t */\n\tregisterAction(action) {\n\t\t// Validate action\n\t\tif (typeof action !== 'object'\n\t\t\t|| typeof action.id !== 'string'\n\t\t\t|| typeof action.data !== 'function' // () => {disabled: true}\n\t\t\t|| !Array.isArray(action.shareType) // [\\@nextcloud/sharing.Types.SHARE_TYPE_LINK, ...]\n\t\t\t|| typeof action.handlers !== 'object' // {click: () => {}, ...}\n\t\t\t|| !Object.values(action.handlers).every(handler => typeof handler === 'function')) {\n\t\t\tconsole.error('Invalid action provided', action)\n\t\t\treturn false\n\t\t}\n\n\t\t// Check duplicates\n\t\tconst hasDuplicate = this._state.actions.findIndex(check => check.id === action.id) > -1\n\t\tif (hasDuplicate) {\n\t\t\tconsole.error(`An action with the same id ${action.id} already exists`, action)\n\t\t\treturn false\n\t\t}\n\n\t\tthis._state.actions.push(action)\n\t\treturn true\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class TabSections {\n\n\t_sections\n\n\tconstructor() {\n\t\tthis._sections = []\n\t}\n\n\t/**\n\t * @param {registerSectionCallback} section To be called to mount the section to the sharing sidebar\n\t */\n\tregisterSection(section) {\n\t\tthis._sections.push(section)\n\t}\n\n\tgetSections() {\n\t\treturn this._sections\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport VueClipboard from 'vue-clipboard2'\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n'\n\nimport SharingTab from './views/SharingTab'\nimport ShareSearch from './services/ShareSearch'\nimport ExternalLinkActions from './services/ExternalLinkActions'\nimport ExternalShareActions from './services/ExternalShareActions'\nimport TabSections from './services/TabSections'\n\n// Init Sharing Tab Service\nif (!window.OCA.Sharing) {\n\twindow.OCA.Sharing = {}\n}\nObject.assign(window.OCA.Sharing, { ShareSearch: new ShareSearch() })\nObject.assign(window.OCA.Sharing, { ExternalLinkActions: new ExternalLinkActions() })\nObject.assign(window.OCA.Sharing, { ExternalShareActions: new ExternalShareActions() })\nObject.assign(window.OCA.Sharing, { ShareTabSections: new TabSections() })\n\nVue.prototype.t = t\nVue.prototype.n = n\nVue.use(VueClipboard)\n\n// Init Sharing tab component\nconst View = Vue.extend(SharingTab)\nlet TabInstance = null\n\nwindow.addEventListener('DOMContentLoaded', function() {\n\tif (OCA.Files && OCA.Files.Sidebar) {\n\t\tOCA.Files.Sidebar.registerTab(new OCA.Files.Sidebar.Tab({\n\t\t\tid: 'sharing',\n\t\t\tname: t('files_sharing', 'Sharing'),\n\t\t\ticon: 'icon-share',\n\n\t\t\tasync mount(el, fileInfo, context) {\n\t\t\t\tif (TabInstance) {\n\t\t\t\t\tTabInstance.$destroy()\n\t\t\t\t}\n\t\t\t\tTabInstance = new View({\n\t\t\t\t\t// Better integration with vue parent component\n\t\t\t\t\tparent: context,\n\t\t\t\t})\n\t\t\t\t// Only mount after we have all the info we need\n\t\t\t\tawait TabInstance.update(fileInfo)\n\t\t\t\tTabInstance.$mount(el)\n\t\t\t},\n\t\t\tupdate(fileInfo) {\n\t\t\t\tTabInstance.update(fileInfo)\n\t\t\t},\n\t\t\tdestroy() {\n\t\t\t\tTabInstance.$destroy()\n\t\t\t\tTabInstance = null\n\t\t\t},\n\t\t}))\n\t}\n})\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".error[data-v-ea414898] .action-checkbox__label:before{border:1px solid var(--color-error)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharePermissionsEditor.vue\"],\"names\":[],\"mappings\":\"AAiSC,wDACC,mCAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.error {\\n\\t::v-deep .action-checkbox__label:before {\\n\\t\\tborder: 1px solid var(--color-error);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry[data-v-dc8e346e]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-dc8e346e]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-dc8e346e]{color:var(--color-text-maxcontrast)}.sharing-entry__desc-unique[data-v-dc8e346e]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-dc8e346e]{margin-left:auto}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntry.vue\"],\"names\":[],\"mappings\":\"AAsZA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAED,6CACC,mCAAA,CAGF,yCACC,gBAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\theight: 44px;\\n\\t&__desc {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: space-between;\\n\\t\\tpadding: 8px;\\n\\t\\tline-height: 1.2em;\\n\\t\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t\\t&-unique {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\t&__actions {\\n\\t\\tmargin-left: auto;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry[data-v-29845767]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-29845767]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-29845767]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-29845767]{margin-left:auto}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryInherited.vue\"],\"names\":[],\"mappings\":\"AAgGA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAGF,yCACC,gBAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\theight: 44px;\\n\\t&__desc {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: space-between;\\n\\t\\tpadding: 8px;\\n\\t\\tline-height: 1.2em;\\n\\t\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\t&__actions {\\n\\t\\tmargin-left: auto;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry__internal .avatar-external[data-v-739d8480]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}.sharing-entry__internal .icon-checkmark-color[data-v-739d8480]{opacity:1}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryInternal.vue\"],\"names\":[],\"mappings\":\"AA0GC,2DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA,CAED,gEACC,SAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.sharing-entry__internal {\\n\\t.avatar-external {\\n\\t\\twidth: 32px;\\n\\t\\theight: 32px;\\n\\t\\tline-height: 32px;\\n\\t\\tfont-size: 18px;\\n\\t\\tbackground-color: var(--color-text-maxcontrast);\\n\\t\\tborder-radius: 50%;\\n\\t\\tflex-shrink: 0;\\n\\t}\\n\\t.icon-checkmark-color {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry[data-v-16656e50]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-16656e50]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em;overflow:hidden}.sharing-entry__desc p[data-v-16656e50]{color:var(--color-text-maxcontrast)}.sharing-entry__title[data-v-16656e50]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.sharing-entry:not(.sharing-entry--share) .sharing-entry__actions .new-share-link[data-v-16656e50]{border-top:1px solid var(--color-border)}.sharing-entry[data-v-16656e50] .avatar-link-share{background-color:var(--color-primary)}.sharing-entry .sharing-entry__action--public-upload[data-v-16656e50]{border-bottom:1px solid var(--color-border)}.sharing-entry__loading[data-v-16656e50]{width:44px;height:44px;margin:0;padding:14px;margin-left:auto}.sharing-entry .action-item[data-v-16656e50]{margin-left:auto}.sharing-entry .action-item~.action-item[data-v-16656e50],.sharing-entry .action-item~.sharing-entry__loading[data-v-16656e50]{margin-left:0}.sharing-entry .icon-checkmark-color[data-v-16656e50]{opacity:1}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryLink.vue\"],\"names\":[],\"mappings\":\"AAy2BA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,eAAA,CAEA,wCACC,mCAAA,CAGF,uCACC,sBAAA,CACA,eAAA,CACA,kBAAA,CAIA,mGACC,wCAAA,CAIF,oDACC,qCAAA,CAGD,sEACC,2CAAA,CAGD,yCACC,UAAA,CACA,WAAA,CACA,QAAA,CACA,YAAA,CACA,gBAAA,CAKD,6CACC,gBAAA,CACA,+HAEC,aAAA,CAIF,sDACC,SAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tmin-height: 44px;\\n\\t&__desc {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: space-between;\\n\\t\\tpadding: 8px;\\n\\t\\tline-height: 1.2em;\\n\\t\\toverflow: hidden;\\n\\n\\t\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\t&__title {\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\toverflow: hidden;\\n\\t\\twhite-space: nowrap;\\n\\t}\\n\\n\\t&:not(.sharing-entry--share) &__actions {\\n\\t\\t.new-share-link {\\n\\t\\t\\tborder-top: 1px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t::v-deep .avatar-link-share {\\n\\t\\tbackground-color: var(--color-primary);\\n\\t}\\n\\n\\t.sharing-entry__action--public-upload {\\n\\t\\tborder-bottom: 1px solid var(--color-border);\\n\\t}\\n\\n\\t&__loading {\\n\\t\\twidth: 44px;\\n\\t\\theight: 44px;\\n\\t\\tmargin: 0;\\n\\t\\tpadding: 14px;\\n\\t\\tmargin-left: auto;\\n\\t}\\n\\n\\t// put menus to the left\\n\\t// but only the first one\\n\\t.action-item {\\n\\t\\tmargin-left: auto;\\n\\t\\t~ .action-item,\\n\\t\\t~ .sharing-entry__loading {\\n\\t\\t\\tmargin-left: 0;\\n\\t\\t}\\n\\t}\\n\\n\\t.icon-checkmark-color {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry[data-v-3483f0f7]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-3483f0f7]{padding:8px;line-height:1.2em;position:relative;flex:1 1;min-width:0}.sharing-entry__desc p[data-v-3483f0f7]{color:var(--color-text-maxcontrast)}.sharing-entry__title[data-v-3483f0f7]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:inherit}.sharing-entry__actions[data-v-3483f0f7]{margin-left:auto !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntrySimple.vue\"],\"names\":[],\"mappings\":\"AA2FA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,WAAA,CACA,iBAAA,CACA,iBAAA,CACA,QAAA,CACA,WAAA,CACA,wCACC,mCAAA,CAGF,uCACC,kBAAA,CACA,sBAAA,CACA,eAAA,CACA,iBAAA,CAED,yCACC,2BAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tmin-height: 44px;\\n\\t&__desc {\\n\\t\\tpadding: 8px;\\n\\t\\tline-height: 1.2em;\\n\\t\\tposition: relative;\\n\\t\\tflex: 1 1;\\n\\t\\tmin-width: 0;\\n\\t\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\t&__title {\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\toverflow: hidden;\\n\\t\\tmax-width: inherit;\\n\\t}\\n\\t&__actions {\\n\\t\\tmargin-left: auto !important;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-input{width:100%;margin:10px 0}.sharing-input .multiselect__option span[lookup] .avatardiv{background-image:var(--icon-search-white);background-repeat:no-repeat;background-position:center;background-color:var(--color-text-maxcontrast) !important}.sharing-input .multiselect__option span[lookup] .avatardiv div{display:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingInput.vue\"],\"names\":[],\"mappings\":\"AA0gBA,eACC,UAAA,CACA,aAAA,CAKE,4DACC,yCAAA,CACA,2BAAA,CACA,0BAAA,CACA,yDAAA,CACA,gEACC,YAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.sharing-input {\\n\\twidth: 100%;\\n\\tmargin: 10px 0;\\n\\n\\t// properly style the lookup entry\\n\\t.multiselect__option {\\n\\t\\tspan[lookup] {\\n\\t\\t\\t.avatardiv {\\n\\t\\t\\t\\tbackground-image: var(--icon-search-white);\\n\\t\\t\\t\\tbackground-repeat: no-repeat;\\n\\t\\t\\t\\tbackground-position: center;\\n\\t\\t\\t\\tbackground-color: var(--color-text-maxcontrast) !important;\\n\\t\\t\\t\\tdiv {\\n\\t\\t\\t\\t\\tdisplay: none;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry__inherited .avatar-shared[data-v-7a52663c]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/views/SharingInherited.vue\"],\"names\":[],\"mappings\":\"AA8JC,0DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.sharing-entry__inherited {\\n\\t.avatar-shared {\\n\\t\\twidth: 32px;\\n\\t\\theight: 32px;\\n\\t\\tline-height: 32px;\\n\\t\\tfont-size: 18px;\\n\\t\\tbackground-color: var(--color-text-maxcontrast);\\n\\t\\tborder-radius: 50%;\\n\\t\\tflex-shrink: 0;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".emptyContentWithSections[data-v-b6bc0cd2]{margin:1rem auto}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/views/SharingTab.vue\"],\"names\":[],\"mappings\":\"AAyWA,2CACC,gBAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.emptyContentWithSections {\\n\\tmargin: 1rem auto;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(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 = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 7870;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t7870: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(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(function(id) { return 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], function() { return __webpack_require__(21883); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","Config","document","getElementsByClassName","dataset","allowPublicUpload","getElementById","value","OC","appConfig","core","federatedCloudShareDoc","expireDateString","this","isDefaultExpireDateEnabled","date","window","moment","utc","expireAfterDays","defaultExpireDate","add","format","isDefaultInternalExpireDateEnabled","defaultInternalExpireDate","isDefaultRemoteExpireDateEnabled","defaultRemoteExpireDate","enforcePasswordForPublicLink","enableLinkPasswordByDefault","defaultExpireDateEnforced","defaultExpireDateEnabled","defaultInternalExpireDateEnforced","defaultRemoteExpireDateEnforced","defaultInternalExpireDateEnabled","remoteShareAllowed","capabilities","getCapabilities","undefined","files_sharing","sharebymail","public","enabled","resharingAllowed","password","enforced","sharee","always_show_unique","allowGroupSharing","parseInt","config","password_policy","Share","ocsData","ocs","data","hide_download","mail_send","_share","id","share_type","permissions","uid_owner","displayname_owner","share_with","share_with_displayname","share_with_displayname_unique","share_with_link","share_with_avatar","uid_file_owner","displayname_file_owner","stime","expiration","token","note","label","state","password_expiration_time","passwordExpirationTime","send_password_by_talk","sendPasswordByTalk","path","item_type","mimetype","file_source","file_target","file_parent","PERMISSION_READ","PERMISSION_CREATE","PERMISSION_DELETE","PERMISSION_UPDATE","PERMISSION_SHARE","can_edit","can_delete","via_fileid","via_path","parent","storage_id","storage","item_source","status","SHARE_TYPES","ShareTypes","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","_h","$createElement","_c","_self","staticClass","_t","_v","directives","name","rawName","expression","_s","title","subtitle","_e","$slots","attrs","ariaExpandedValue","t","internalLinkSubtitle","scopedSlots","_u","key","fn","proxy","ref","internalLink","copied","copySuccess","on","$event","preventDefault","copyLink","apply","arguments","clipboardTooltip","passwordSet","passwordPolicy","api","generate","axios","request","console","info","Array","fill","reduce","prev","curr","charAt","Math","floor","random","length","shareUrl","generateOcsUrl","methods","createShare","shareType","shareWith","publicUpload","expireDate","error","errorMessage","response","meta","message","Notification","showTemporary","type","deleteShare","updateShare","properties","Error","canReshare","loading","inputPlaceholder","asyncFind","addShare","noResultText","mixins","SharesRequests","props","fileInfo","Object","default","required","share","isUnique","Boolean","errors","saving","open","updateQueue","PQueue","concurrency","reactiveState","computed","hasNote","get","set","dateTomorrow","lang","weekdaysShort","dayNamesShort","monthsShort","monthNamesShort","formatLocale","firstDayOfWeek","firstDay","weekdaysMin","monthFormat","isShareOwner","owner","getCurrentUser","uid","checkShare","trim","expirationDate","isValid","onExpirationChange","queueUpdate","onExpirationDisable","onNoteChange","$set","onNoteSubmit","newNote","$delete","onDelete","debug","$emit","propertyNames","map","p","toString","updatedShare","indexOf","onSyncError","property","propertyEl","$refs","$el","focusable","querySelector","focus","debounceQueueUpdate","debounce","disabledDate","dateMoment","isBefore","dateMaxEnforced","isSameOrAfter","shareWithDisplayName","initiator","ownerDisplayName","viaPath","viaFileid","viaFileTargetUrl","folder","viaFolderName","mainTitle","subTitle","showInheritedShares","showInheritedSharesIcon","stopPropagation","toggleInheritedShares","toggleTooltip","_l","is","_g","_b","tag","action","handlers","text","ATOMIC_PERMISSIONS","NONE","READ","UPDATE","CREATE","DELETE","SHARE","BUNDLED_PERMISSIONS","READ_ONLY","UPLOAD_AND_UPDATE","FILE_DROP","ALL","hasPermissions","initialPermissionSet","permissionsToCheck","permissionsSetIsValid","permissionsSet","togglePermissions","permissionsToToggle","permissionsToSubtract","subtractPermissions","permissionsToAdd","addPermissions","permissionSet","isFolder","shareHasPermissions","atomicPermissions","toggleSharePermissions","fileHasCreatePermission","isPublicUploadEnabled","showCustomPermissionsForm","class","sharePermissionsSetIsValid","canToggleSharePermissions","sharePermissionEqual","bundledPermissions","randomFormName","setSharePermissions","sharePermissionsIsBundle","sharePermissionsSummary","isEmailShareType","shareLink","pending","pendingPassword","pendingExpirationDate","onMenuClose","canEdit","content","show","trigger","defaultContainer","modifiers","newLabel","onLabelChange","onLabelSubmit","hideDownload","isPasswordProtected","onPasswordDisable","hasUnsavedPassword","newPassword","onPasswordChange","onPasswordSubmit","isPasswordProtectedByTalk","canTogglePasswordProtectedByTalkAvailable","onPasswordProtectedByTalkChange","hasExpirationDate","isDefaultExpireDateEnforced","index","icon","url","onNewLinkShare","isPasswordPolicyEnabled","minLength","model","callback","$$v","onCancel","hasLinkShares","shares","awaitForShare","removeShare","SHARE_TYPE_USER","shareWithAvatar","shareWithLink","shareWithDisplayNameUnique","permissionsEdit","canSetEdit","canCreate","permissionsCreate","canSetCreate","canDelete","permissionsDelete","canSetDelete","permissionsShare","canSetReshare","isDefaultInternalExpireDateEnforced","group","escape","circle","conversation","emptyContentWithSections","sections","sharedWithMe","user","displayName","linkShares","reshare","section","refInFor","ShareSearch","_state","results","result","handler","push","ExternalLinkActions","actions","warn","ExternalShareActions","isArray","values","every","findIndex","check","TabSections","_sections","OCA","Sharing","assign","ShareTabSections","Vue","n","VueClipboard","View","SharingTab","TabInstance","addEventListener","Files","Sidebar","registerTab","Tab","mount","el","context","$destroy","update","$mount","destroy","___CSS_LOADER_EXPORT___","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","call","m","amdD","amdO","O","chunkIds","priority","notFulfilled","Infinity","i","fulfilled","j","keys","splice","r","getter","__esModule","d","a","definition","o","defineProperty","enumerable","g","globalThis","Function","e","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","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_trashbin-files_trashbin.js b/dist/files_trashbin-files_trashbin.js
index 4f701d11ea5..bb5f4a7ddff 100644
--- a/dist/files_trashbin-files_trashbin.js
+++ b/dist/files_trashbin-files_trashbin.js
@@ -1,3 +1,3 @@
/*! For license information please see files_trashbin-files_trashbin.js.LICENSE.txt */
-!function(){var e,i={6564:function(){OCA.Trashbin={},OCA.Trashbin.App={_initialized:!1,client:null,initialize:function(e){if(!this._initialized){this._initialized=!0,this.client=new OC.Files.Client({host:OC.getHost(),port:OC.getPort(),root:OC.linkToRemoteBase("dav")+"/trashbin/"+OC.getCurrentUser().uid,useHTTPS:"https"===OC.getProtocol()});var i=OC.Util.History.parseUrlQuery();this.fileList=new OCA.Trashbin.FileList($("#app-content-trashbin"),{fileActions:this._createFileActions(),detailsViewEnabled:!1,scrollTo:i.scrollto,config:OCA.Files.App.getFilesConfig(),multiSelectMenu:[{name:"restore",displayName:t("files_trashbin","Restore"),iconClass:"icon-history"},{name:"delete",displayName:t("files_trashbin","Delete permanently"),iconClass:"icon-delete"}],client:this.client,shown:!0})}},_createFileActions:function(){var e=this.client,i=new OCA.Files.FileActions;return i.register("dir","Open",OC.PERMISSION_READ,"",(function(e,t){var i=t.fileList.getCurrentDirectory();t.fileList.changeDirectory(OC.joinPaths(i,e))})),i.setDefault("dir","Open"),i.registerAction({name:"Restore",displayName:t("files_trashbin","Restore"),type:OCA.Files.FileActions.TYPE_INLINE,mime:"all",permissions:OC.PERMISSION_READ,iconClass:"icon-history",actionHandler:function(i,n){var r=n.fileList,a=r.findFileEl(i);r.showFileBusyState(a,!0);var s=n.fileList.getCurrentDirectory();e.move(OC.joinPaths("trash",s,i),OC.joinPaths("restore",i),!0).then(r._removeCallback.bind(r,[i]),(function(){r.showFileBusyState(a,!1),OC.Notification.show(t("files_trashbin","Error while restoring file from trash bin"))}))}}),i.registerAction({name:"Delete",displayName:t("files_trashbin","Delete permanently"),mime:"all",permissions:OC.PERMISSION_READ,iconClass:"icon-delete",render:function(e,n,r){var a=i._makeActionLink(e,r);return a.attr("original-title",t("files_trashbin","Delete permanently")),a.children("img").attr("alt",t("files_trashbin","Delete permanently")),r.$file.find("td:last").append(a),a},actionHandler:function(i,n){var r=n.fileList;$(".tipsy").remove();var a=r.findFileEl(i);r.showFileBusyState(a,!0);var s=n.fileList.getCurrentDirectory();e.remove(OC.joinPaths("trash",s,i)).then(r._removeCallback.bind(r,[i]),(function(){r.showFileBusyState(a,!1),OC.Notification.show(t("files_trashbin","Error while removing file from trash bin"))}))}}),i}},window.addEventListener("DOMContentLoaded",(function(){$("#app-content-trashbin").one("show",(function(){OCA.Trashbin.App.initialize($("#app-content-trashbin"))}))}))},92832:function(){!function(){var e=new RegExp(/^(.+)\.d[0-9]+$/),i="{http://nextcloud.org/ns}trashbin-filename",n="{http://nextcloud.org/ns}trashbin-deletion-time",r="{http://nextcloud.org/ns}trashbin-original-location",a="{http://nextcloud.org/ns}trashbin-title";function s(t){t=OC.basename(t);var i=e.exec(t);return i&&i.length>1&&(t=i[1]),t}var o=function(e,t){this.client=t.client,this.initialize(e,t)};o.prototype=_.extend({},OCA.Files.FileList.prototype,{id:"trashbin",appName:t("files_trashbin","Deleted files"),client:null,initialize:function(){this.client.addFileInfoParser((function(e,t){var s=e.propStat[0].properties,o=s[r],l=s[a];return{displayName:s[i],mtime:1e3*parseInt(s[n],10),hasPreview:!0,path:o,extraData:l}}));var e=OCA.Files.FileList.prototype.initialize.apply(this,arguments);return this.$el.find(".undelete").click("click",_.bind(this._onClickRestoreSelected,this)),this.setSort("mtime","desc"),this.breadcrumb._makeCrumbs=function(){for(var e=OCA.Files.BreadCrumb.prototype._makeCrumbs.apply(this,[].concat(Array.prototype.slice.call(arguments),["icon-delete no-hover"])),t=1;t<e.length;t++)e[t].name=s(e[t].name);return e},OC.Plugins.attach("OCA.Trashbin.FileList",this),e},getDirectoryPermissions:function(){return OC.PERMISSION_READ|OC.PERMISSION_DELETE},_setCurrentDir:function(e){OCA.Files.FileList.prototype._setCurrentDir.apply(this,arguments);var t=OC.basename(e);""!==t&&this.setPageTitle(s(t))},_createRow:function(){var e=OCA.Files.FileList.prototype._createRow.apply(this,arguments);return e.find("td.filesize").remove(),e},getAjaxUrl:function(e,t){var i="";return t&&(i="?"+OC.buildQueryString(t)),OC.filePath("files_trashbin","ajax",e+".php")+i},setupUploadEvents:function(){},linkTo:function(e){return OC.linkTo("files","index.php")+"?view=trashbin&dir="+encodeURIComponent(e).replace(/%2F/g,"/")},elementToFile:function(e){var t=OCA.Files.FileList.prototype.elementToFile(e);return"/"===this.getCurrentDirectory()&&(t.displayName=s(t.name)),delete t.size,t},updateEmptyContent:function(){var e=this.$fileList.find("tr:first").exists();this.$el.find("#emptycontent").toggleClass("hidden",e),this.$el.find("#filestable th").toggleClass("hidden",!e)},_removeCallback:function(e){for(var t,i=0;i<e.length;i++)t=this.remove(OC.basename(e[i]),{updateSummary:!1}),this.fileSummary.remove({type:t.attr("data-type"),size:t.attr("data-size")});this.fileSummary.update(),this.updateEmptyContent()},_onClickRestoreSelected:function(e){e.preventDefault();for(var i=this,n=_.pluck(this.getSelectedFiles(),"name"),r=0;r<n.length;r++){var a=this.findFileEl(n[r]);this.showFileBusyState(a,!0)}this.fileMultiSelectMenu.toggleLoading("restore",!0);var s=n.map((function(e){return i.client.move(OC.joinPaths("trash",i.getCurrentDirectory(),e),OC.joinPaths("restore",e),!0).then((function(){i._removeCallback([e])}))}));return Promise.all(s).then((function(){i.fileMultiSelectMenu.toggleLoading("restore",!1)}),(function(){OC.Notification.show(t("files_trashbin","Error while restoring files from trash bin"))}))},_onClickDeleteSelected:function(e){e.preventDefault();for(var i=this,n=this.$el.find(".select-all").is(":checked"),r=_.pluck(this.getSelectedFiles(),"name"),a=0;a<r.length;a++){var s=this.findFileEl(r[a]);this.showFileBusyState(s,!0)}if(n)return this.client.remove(OC.joinPaths("trash",this.getCurrentDirectory())).then((function(){i.hideMask(),i.setFiles([])}),(function(){OC.Notification.show(t("files_trashbin","Error while emptying trash bin"))}));this.fileMultiSelectMenu.toggleLoading("delete",!0);var o=r.map((function(e){return i.client.remove(OC.joinPaths("trash",i.getCurrentDirectory(),e)).then((function(){i._removeCallback([e])}))}));return Promise.all(o).then((function(){i.fileMultiSelectMenu.toggleLoading("delete",!1)}),(function(){OC.Notification.show(t("files_trashbin","Error while removing files from trash bin"))}))},_onClickFile:function(e){var t=$(this).parent().parent().data("mime");return"httpd/unix-directory"!==t&&e.preventDefault(),OCA.Files.FileList.prototype._onClickFile.apply(this,arguments)},generatePreviewUrl:function(e){return OC.generateUrl("/apps/files_trashbin/preview?")+$.param(e)},getDownloadUrl:function(){return"#"},getDefaultActionUrl:function(){return"#"},updateStorageStatistics:function(){},isSelectedDeletable:function(){return!0},_getWebdavProperties:function(){return[i,n,r,a].concat(this.filesClient.getPropfindProperties())},reload:function(){this._selectedFiles={},this._selectionSummary.clear(),this.$el.find(".select-all").prop("checked",!1),this.showMask(),this._reloadCall&&this._reloadCall.abort(),this._reloadCall=this.client.getFolderContents("trash/"+this.getCurrentDirectory(),{includeParent:!1,properties:this._getWebdavProperties()});var e=this.reloadCallback.bind(this);return this._reloadCall.then(e,e)},reloadCallback:function(e,i){return delete this._reloadCall,this.hideMask(),!(401===e||(403===e?(this.changeDirectory("/"),OC.Notification.show(t("files","This operation is forbidden")),1):500===e?(this.changeDirectory("/"),OC.Notification.show(t("files","This directory is unavailable, please check the logs or contact the administrator")),1):404===e?(this.changeDirectory("/"),1):(0===e||this.setFiles(i),0)))}}),OCA.Trashbin.FileList=o}()},69845:function(e,t,i){"use strict";i(6564),i(92832);var n=i(93379),r=i.n(n),a=i(7795),s=i.n(a),o=i(90569),l=i.n(o),c=i(3565),h=i.n(c),u=i(19216),f=i.n(u),d=i(44589),p=i.n(d),m=i(81412),C={};C.styleTagTransform=p(),C.setAttributes=h(),C.insert=l().bind(null,"head"),C.domAPI=s(),C.insertStyleElement=f(),r()(m.Z,C),m.Z&&m.Z.locals&&m.Z.locals,window.OCA.Trashbin=OCA.Trashbin},81412:function(e,t,i){"use strict";var n=i(87537),r=i.n(n),a=i(23645),s=i.n(a)()(r());s.push([e.id,"#app-content-trashbin tbody tr[data-type=file] td a.name,#app-content-trashbin tbody tr[data-type=file] td a.name span.nametext,#app-content-trashbin tbody tr[data-type=file] td a.name span.nametext span{cursor:default}#app-content-trashbin .summary :last-child{padding:0}#app-content-trashbin #filestable .summary .filesize{display:none}","",{version:3,sources:["webpack://./apps/files_trashbin/src/trash.scss"],names:[],mappings:"AASA,4MAGC,cAAA,CAGD,2CACC,SAAA,CAED,qDACC,YAAA",sourcesContent:['/*\n * Copyright (c) 2014\n *\n * This file is licensed under the Affero General Public License version 3\n * or later.\n *\n * See the COPYING-README file.\n *\n */\n#app-content-trashbin tbody tr[data-type="file"] td a.name,\n#app-content-trashbin tbody tr[data-type="file"] td a.name span.nametext,\n#app-content-trashbin tbody tr[data-type="file"] td a.name span.nametext span {\n\tcursor: default;\n}\n\n#app-content-trashbin .summary :last-child {\n\tpadding: 0;\n}\n#app-content-trashbin #filestable .summary .filesize {\n\tdisplay: none;\n}\n\n'],sourceRoot:""}]),t.Z=s}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var a=n[e]={id:e,loaded:!1,exports:{}};return i[e].call(a.exports,a,a.exports,r),a.loaded=!0,a.exports}r.m=i,r.amdD=function(){throw new Error("define cannot be used indirect")},r.amdO={},e=[],r.O=function(t,i,n,a){if(!i){var s=1/0;for(h=0;h<e.length;h++){i=e[h][0],n=e[h][1],a=e[h][2];for(var o=!0,l=0;l<i.length;l++)(!1&a||s>=a)&&Object.keys(r.O).every((function(e){return r.O[e](i[l])}))?i.splice(l--,1):(o=!1,a<s&&(s=a));if(o){e.splice(h--,1);var c=n();void 0!==c&&(t=c)}}return t}a=a||0;for(var h=e.length;h>0&&e[h-1][2]>a;h--)e[h]=e[h-1];e[h]=[i,n,a]},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,{a:t}),t},r.d=function(e,t){for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},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=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},r.j=2325,function(){r.b=document.baseURI||self.location.href;var e={2325:0};r.O.j=function(t){return 0===e[t]};var t=function(t,i){var n,a,s=i[0],o=i[1],l=i[2],c=0;if(s.some((function(t){return 0!==e[t]}))){for(n in o)r.o(o,n)&&(r.m[n]=o[n]);if(l)var h=l(r)}for(t&&t(i);c<s.length;c++)a=s[c],r.o(e,a)&&e[a]&&e[a][0](),e[a]=0;return r.O(h)},i=self.webpackChunknextcloud=self.webpackChunknextcloud||[];i.forEach(t.bind(null,0)),i.push=t.bind(null,i.push.bind(i))}(),r.nc=void 0;var a=r.O(void 0,[7874],(function(){return r(69845)}));a=r.O(a)}();
-//# sourceMappingURL=files_trashbin-files_trashbin.js.map?v=613cafee6a312487efc7 \ No newline at end of file
+!function(){var e,i={6564:function(){OCA.Trashbin={},OCA.Trashbin.App={_initialized:!1,client:null,initialize:function(e){if(!this._initialized){this._initialized=!0,this.client=new OC.Files.Client({host:OC.getHost(),port:OC.getPort(),root:OC.linkToRemoteBase("dav")+"/trashbin/"+OC.getCurrentUser().uid,useHTTPS:"https"===OC.getProtocol()});var i=OC.Util.History.parseUrlQuery();this.fileList=new OCA.Trashbin.FileList($("#app-content-trashbin"),{fileActions:this._createFileActions(),detailsViewEnabled:!1,scrollTo:i.scrollto,config:OCA.Files.App.getFilesConfig(),multiSelectMenu:[{name:"restore",displayName:t("files_trashbin","Restore"),iconClass:"icon-history"},{name:"delete",displayName:t("files_trashbin","Delete permanently"),iconClass:"icon-delete"}],client:this.client,shown:!0})}},_createFileActions:function(){var e=this.client,i=new OCA.Files.FileActions;return i.register("dir","Open",OC.PERMISSION_READ,"",(function(e,t){var i=t.fileList.getCurrentDirectory();t.fileList.changeDirectory(OC.joinPaths(i,e))})),i.setDefault("dir","Open"),i.registerAction({name:"Restore",displayName:t("files_trashbin","Restore"),type:OCA.Files.FileActions.TYPE_INLINE,mime:"all",permissions:OC.PERMISSION_READ,iconClass:"icon-history",actionHandler:function(i,n){var r=n.fileList,a=r.findFileEl(i);r.showFileBusyState(a,!0);var s=n.fileList.getCurrentDirectory();e.move(OC.joinPaths("trash",s,i),OC.joinPaths("restore",i),!0).then(r._removeCallback.bind(r,[i]),(function(){r.showFileBusyState(a,!1),OC.Notification.show(t("files_trashbin","Error while restoring file from trash bin"))}))}}),i.registerAction({name:"Delete",displayName:t("files_trashbin","Delete permanently"),mime:"all",permissions:OC.PERMISSION_READ,iconClass:"icon-delete",render:function(e,n,r){var a=i._makeActionLink(e,r);return a.attr("original-title",t("files_trashbin","Delete permanently")),a.children("img").attr("alt",t("files_trashbin","Delete permanently")),r.$file.find("td:last").append(a),a},actionHandler:function(i,n){var r=n.fileList;$(".tipsy").remove();var a=r.findFileEl(i);r.showFileBusyState(a,!0);var s=n.fileList.getCurrentDirectory();e.remove(OC.joinPaths("trash",s,i)).then(r._removeCallback.bind(r,[i]),(function(){r.showFileBusyState(a,!1),OC.Notification.show(t("files_trashbin","Error while removing file from trash bin"))}))}}),i}},window.addEventListener("DOMContentLoaded",(function(){$("#app-content-trashbin").one("show",(function(){OCA.Trashbin.App.initialize($("#app-content-trashbin"))}))}))},92832:function(){!function(){var e=new RegExp(/^(.+)\.d[0-9]+$/),i="{http://nextcloud.org/ns}trashbin-filename",n="{http://nextcloud.org/ns}trashbin-deletion-time",r="{http://nextcloud.org/ns}trashbin-original-location",a="{http://nextcloud.org/ns}trashbin-title";function s(t){t=OC.basename(t);var i=e.exec(t);return i&&i.length>1&&(t=i[1]),t}var o=function(e,t){this.client=t.client,this.initialize(e,t)};o.prototype=_.extend({},OCA.Files.FileList.prototype,{id:"trashbin",appName:t("files_trashbin","Deleted files"),client:null,initialize:function(){this.client.addFileInfoParser((function(e,t){var s=e.propStat[0].properties,o=s[r],l=s[a];return{displayName:s[i],mtime:1e3*parseInt(s[n],10),hasPreview:!0,path:o,extraData:l}}));var e=OCA.Files.FileList.prototype.initialize.apply(this,arguments);return this.$el.find(".undelete").click("click",_.bind(this._onClickRestoreSelected,this)),this.setSort("mtime","desc"),this.breadcrumb._makeCrumbs=function(){for(var e=OCA.Files.BreadCrumb.prototype._makeCrumbs.apply(this,[].concat(Array.prototype.slice.call(arguments),["icon-delete no-hover"])),t=1;t<e.length;t++)e[t].name=s(e[t].name);return e},OC.Plugins.attach("OCA.Trashbin.FileList",this),e},getDirectoryPermissions:function(){return OC.PERMISSION_READ|OC.PERMISSION_DELETE},_setCurrentDir:function(e){OCA.Files.FileList.prototype._setCurrentDir.apply(this,arguments);var t=OC.basename(e);""!==t&&this.setPageTitle(s(t))},_createRow:function(){var e=OCA.Files.FileList.prototype._createRow.apply(this,arguments);return e.find("td.filesize").remove(),e},getAjaxUrl:function(e,t){var i="";return t&&(i="?"+OC.buildQueryString(t)),OC.filePath("files_trashbin","ajax",e+".php")+i},setupUploadEvents:function(){},linkTo:function(e){return OC.linkTo("files","index.php")+"?view=trashbin&dir="+encodeURIComponent(e).replace(/%2F/g,"/")},elementToFile:function(e){var t=OCA.Files.FileList.prototype.elementToFile(e);return"/"===this.getCurrentDirectory()&&(t.displayName=s(t.name)),delete t.size,t},updateEmptyContent:function(){var e=this.$fileList.find("tr:first").exists();this.$el.find(".emptyfilelist.emptycontent").toggleClass("hidden",e),this.$el.find(".files-filestable th").toggleClass("hidden",!e)},_removeCallback:function(e){for(var t,i=0;i<e.length;i++)t=this.remove(OC.basename(e[i]),{updateSummary:!1}),this.fileSummary.remove({type:t.attr("data-type"),size:t.attr("data-size")});this.fileSummary.update(),this.updateEmptyContent()},_onClickRestoreSelected:function(e){e.preventDefault();for(var i=this,n=_.pluck(this.getSelectedFiles(),"name"),r=0;r<n.length;r++){var a=this.findFileEl(n[r]);this.showFileBusyState(a,!0)}this.fileMultiSelectMenu.toggleLoading("restore",!0);var s=n.map((function(e){return i.client.move(OC.joinPaths("trash",i.getCurrentDirectory(),e),OC.joinPaths("restore",e),!0).then((function(){i._removeCallback([e])}))}));return Promise.all(s).then((function(){i.fileMultiSelectMenu.toggleLoading("restore",!1)}),(function(){OC.Notification.show(t("files_trashbin","Error while restoring files from trash bin"))}))},_onClickDeleteSelected:function(e){e.preventDefault();for(var i=this,n=this.$el.find(".select-all").is(":checked"),r=_.pluck(this.getSelectedFiles(),"name"),a=0;a<r.length;a++){var s=this.findFileEl(r[a]);this.showFileBusyState(s,!0)}if(n)return this.client.remove(OC.joinPaths("trash",this.getCurrentDirectory())).then((function(){i.hideMask(),i.setFiles([])}),(function(){OC.Notification.show(t("files_trashbin","Error while emptying trash bin"))}));this.fileMultiSelectMenu.toggleLoading("delete",!0);var o=r.map((function(e){return i.client.remove(OC.joinPaths("trash",i.getCurrentDirectory(),e)).then((function(){i._removeCallback([e])}))}));return Promise.all(o).then((function(){i.fileMultiSelectMenu.toggleLoading("delete",!1)}),(function(){OC.Notification.show(t("files_trashbin","Error while removing files from trash bin"))}))},_onClickFile:function(e){var t=$(this).parent().parent().data("mime");return"httpd/unix-directory"!==t&&e.preventDefault(),OCA.Files.FileList.prototype._onClickFile.apply(this,arguments)},generatePreviewUrl:function(e){return OC.generateUrl("/apps/files_trashbin/preview?")+$.param(e)},getDownloadUrl:function(){return"#"},getDefaultActionUrl:function(){return"#"},updateStorageStatistics:function(){},isSelectedDeletable:function(){return!0},_getWebdavProperties:function(){return[i,n,r,a].concat(this.filesClient.getPropfindProperties())},reload:function(){this._selectedFiles={},this._selectionSummary.clear(),this.$el.find(".select-all").prop("checked",!1),this.showMask(),this._reloadCall&&this._reloadCall.abort(),this._reloadCall=this.client.getFolderContents("trash/"+this.getCurrentDirectory(),{includeParent:!1,properties:this._getWebdavProperties()});var e=this.reloadCallback.bind(this);return this._reloadCall.then(e,e)},reloadCallback:function(e,i){return delete this._reloadCall,this.hideMask(),!(401===e||(403===e?(this.changeDirectory("/"),OC.Notification.show(t("files","This operation is forbidden")),1):500===e?(this.changeDirectory("/"),OC.Notification.show(t("files","This directory is unavailable, please check the logs or contact the administrator")),1):404===e?(this.changeDirectory("/"),1):(0===e||this.setFiles(i),0)))}}),OCA.Trashbin.FileList=o}()},69845:function(e,t,i){"use strict";i(6564),i(92832);var n=i(93379),r=i.n(n),a=i(7795),s=i.n(a),o=i(90569),l=i.n(o),c=i(3565),h=i.n(c),u=i(19216),f=i.n(u),d=i(44589),p=i.n(d),m=i(81412),C={};C.styleTagTransform=p(),C.setAttributes=h(),C.insert=l().bind(null,"head"),C.domAPI=s(),C.insertStyleElement=f(),r()(m.Z,C),m.Z&&m.Z.locals&&m.Z.locals,window.OCA.Trashbin=OCA.Trashbin},81412:function(e,t,i){"use strict";var n=i(87537),r=i.n(n),a=i(23645),s=i.n(a)()(r());s.push([e.id,"#app-content-trashbin tbody tr[data-type=file] td a.name,#app-content-trashbin tbody tr[data-type=file] td a.name span.nametext,#app-content-trashbin tbody tr[data-type=file] td a.name span.nametext span{cursor:default}#app-content-trashbin .summary :last-child{padding:0}#app-content-trashbin .files-filestable .summary .filesize{display:none}","",{version:3,sources:["webpack://./apps/files_trashbin/src/trash.scss"],names:[],mappings:"AASA,4MAGC,cAAA,CAGD,2CACC,SAAA,CAED,2DACC,YAAA",sourcesContent:['/*\n * Copyright (c) 2014\n *\n * This file is licensed under the Affero General Public License version 3\n * or later.\n *\n * See the COPYING-README file.\n *\n */\n#app-content-trashbin tbody tr[data-type="file"] td a.name,\n#app-content-trashbin tbody tr[data-type="file"] td a.name span.nametext,\n#app-content-trashbin tbody tr[data-type="file"] td a.name span.nametext span {\n\tcursor: default;\n}\n\n#app-content-trashbin .summary :last-child {\n\tpadding: 0;\n}\n#app-content-trashbin .files-filestable .summary .filesize {\n\tdisplay: none;\n}\n\n'],sourceRoot:""}]),t.Z=s}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var a=n[e]={id:e,loaded:!1,exports:{}};return i[e].call(a.exports,a,a.exports,r),a.loaded=!0,a.exports}r.m=i,r.amdD=function(){throw new Error("define cannot be used indirect")},r.amdO={},e=[],r.O=function(t,i,n,a){if(!i){var s=1/0;for(h=0;h<e.length;h++){i=e[h][0],n=e[h][1],a=e[h][2];for(var o=!0,l=0;l<i.length;l++)(!1&a||s>=a)&&Object.keys(r.O).every((function(e){return r.O[e](i[l])}))?i.splice(l--,1):(o=!1,a<s&&(s=a));if(o){e.splice(h--,1);var c=n();void 0!==c&&(t=c)}}return t}a=a||0;for(var h=e.length;h>0&&e[h-1][2]>a;h--)e[h]=e[h-1];e[h]=[i,n,a]},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,{a:t}),t},r.d=function(e,t){for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},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=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},r.j=2325,function(){r.b=document.baseURI||self.location.href;var e={2325:0};r.O.j=function(t){return 0===e[t]};var t=function(t,i){var n,a,s=i[0],o=i[1],l=i[2],c=0;if(s.some((function(t){return 0!==e[t]}))){for(n in o)r.o(o,n)&&(r.m[n]=o[n]);if(l)var h=l(r)}for(t&&t(i);c<s.length;c++)a=s[c],r.o(e,a)&&e[a]&&e[a][0](),e[a]=0;return r.O(h)},i=self.webpackChunknextcloud=self.webpackChunknextcloud||[];i.forEach(t.bind(null,0)),i.push=t.bind(null,i.push.bind(i))}(),r.nc=void 0;var a=r.O(void 0,[7874],(function(){return r(69845)}));a=r.O(a)}();
+//# sourceMappingURL=files_trashbin-files_trashbin.js.map?v=aad1490fd0f037f1f828 \ No newline at end of file
diff --git a/dist/files_trashbin-files_trashbin.js.map b/dist/files_trashbin-files_trashbin.js.map
index 0a6a1f66027..b21ff706e1c 100644
--- a/dist/files_trashbin-files_trashbin.js.map
+++ b/dist/files_trashbin-files_trashbin.js.map
@@ -1 +1 @@
-{"version":3,"file":"files_trashbin-files_trashbin.js?v=613cafee6a312487efc7","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/files_trashbin/src/app.js","webpack:///nextcloud/apps/files_trashbin/src/filelist.js","webpack://nextcloud/./apps/files_trashbin/src/trash.scss?cfe4","webpack:///nextcloud/apps/files_trashbin/src/files_trashbin.js","webpack:///nextcloud/apps/files_trashbin/src/trash.scss","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/amd define","webpack:///nextcloud/webpack/runtime/amd options","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(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(function(key) { return __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 (c) 2014\n *\n * @author Abijeet <abijeetpatro@gmail.com>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nOCA.Trashbin = {}\n/**\n * @namespace OCA.Trashbin.App\n */\nOCA.Trashbin.App = {\n\t_initialized: false,\n\t/** @type {OC.Files.Client} */\n\tclient: null,\n\n\tinitialize($el) {\n\t\tif (this._initialized) {\n\t\t\treturn\n\t\t}\n\t\tthis._initialized = true\n\n\t\tthis.client = new OC.Files.Client({\n\t\t\thost: OC.getHost(),\n\t\t\tport: OC.getPort(),\n\t\t\troot: OC.linkToRemoteBase('dav') + '/trashbin/' + OC.getCurrentUser().uid,\n\t\t\tuseHTTPS: OC.getProtocol() === 'https',\n\t\t})\n\t\tconst urlParams = OC.Util.History.parseUrlQuery()\n\t\tthis.fileList = new OCA.Trashbin.FileList(\n\t\t\t$('#app-content-trashbin'), {\n\t\t\t\tfileActions: this._createFileActions(),\n\t\t\t\tdetailsViewEnabled: false,\n\t\t\t\tscrollTo: urlParams.scrollto,\n\t\t\t\tconfig: OCA.Files.App.getFilesConfig(),\n\t\t\t\tmultiSelectMenu: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'restore',\n\t\t\t\t\t\tdisplayName: t('files_trashbin', 'Restore'),\n\t\t\t\t\t\ticonClass: 'icon-history',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'delete',\n\t\t\t\t\t\tdisplayName: t('files_trashbin', 'Delete permanently'),\n\t\t\t\t\t\ticonClass: 'icon-delete',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tclient: this.client,\n\t\t\t\t// The file list is created when a \"show\" event is handled, so\n\t\t\t\t// it should be marked as \"shown\" like it would have been done\n\t\t\t\t// if handling the event with the file list already created.\n\t\t\t\tshown: true,\n\t\t\t}\n\t\t)\n\t},\n\n\t_createFileActions() {\n\t\tconst client = this.client\n\t\tconst fileActions = new OCA.Files.FileActions()\n\t\tfileActions.register('dir', 'Open', OC.PERMISSION_READ, '', function(filename, context) {\n\t\t\tconst dir = context.fileList.getCurrentDirectory()\n\t\t\tcontext.fileList.changeDirectory(OC.joinPaths(dir, filename))\n\t\t})\n\n\t\tfileActions.setDefault('dir', 'Open')\n\n\t\tfileActions.registerAction({\n\t\t\tname: 'Restore',\n\t\t\tdisplayName: t('files_trashbin', 'Restore'),\n\t\t\ttype: OCA.Files.FileActions.TYPE_INLINE,\n\t\t\tmime: 'all',\n\t\t\tpermissions: OC.PERMISSION_READ,\n\t\t\ticonClass: 'icon-history',\n\t\t\tactionHandler(filename, context) {\n\t\t\t\tconst fileList = context.fileList\n\t\t\t\tconst tr = fileList.findFileEl(filename)\n\t\t\t\tfileList.showFileBusyState(tr, true)\n\t\t\t\tconst dir = context.fileList.getCurrentDirectory()\n\t\t\t\tclient.move(OC.joinPaths('trash', dir, filename), OC.joinPaths('restore', filename), true)\n\t\t\t\t\t.then(\n\t\t\t\t\t\tfileList._removeCallback.bind(fileList, [filename]),\n\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\tfileList.showFileBusyState(tr, false)\n\t\t\t\t\t\t\tOC.Notification.show(t('files_trashbin', 'Error while restoring file from trash bin'))\n\t\t\t\t\t\t}\n\t\t\t\t\t)\n\t\t\t},\n\t\t})\n\n\t\tfileActions.registerAction({\n\t\t\tname: 'Delete',\n\t\t\tdisplayName: t('files_trashbin', 'Delete permanently'),\n\t\t\tmime: 'all',\n\t\t\tpermissions: OC.PERMISSION_READ,\n\t\t\ticonClass: 'icon-delete',\n\t\t\trender(actionSpec, isDefault, context) {\n\t\t\t\tconst $actionLink = fileActions._makeActionLink(actionSpec, context)\n\t\t\t\t$actionLink.attr('original-title', t('files_trashbin', 'Delete permanently'))\n\t\t\t\t$actionLink.children('img').attr('alt', t('files_trashbin', 'Delete permanently'))\n\t\t\t\tcontext.$file.find('td:last').append($actionLink)\n\t\t\t\treturn $actionLink\n\t\t\t},\n\t\t\tactionHandler(filename, context) {\n\t\t\t\tconst fileList = context.fileList\n\t\t\t\t$('.tipsy').remove()\n\t\t\t\tconst tr = fileList.findFileEl(filename)\n\t\t\t\tfileList.showFileBusyState(tr, true)\n\t\t\t\tconst dir = context.fileList.getCurrentDirectory()\n\t\t\t\tclient.remove(OC.joinPaths('trash', dir, filename))\n\t\t\t\t\t.then(\n\t\t\t\t\t\tfileList._removeCallback.bind(fileList, [filename]),\n\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\tfileList.showFileBusyState(tr, false)\n\t\t\t\t\t\t\tOC.Notification.show(t('files_trashbin', 'Error while removing file from trash bin'))\n\t\t\t\t\t\t}\n\t\t\t\t\t)\n\t\t\t},\n\t\t})\n\t\treturn fileActions\n\t},\n}\n\nwindow.addEventListener('DOMContentLoaded', function() {\n\t$('#app-content-trashbin').one('show', function() {\n\t\tconst App = OCA.Trashbin.App\n\t\tApp.initialize($('#app-content-trashbin'))\n\t\t// force breadcrumb init\n\t\t// App.fileList.changeDirectory(App.fileList.getCurrentDirectory(), false, true);\n\t})\n})\n","/**\n * Copyright (c) 2014\n *\n * @author Azul <azul@riseup.net>\n * @author Gary Kim <gary@garykim.dev>\n * @author Jan C. Borchardt <hey@jancborchardt.net>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\n(function() {\n\tvar DELETED_REGEXP = new RegExp(/^(.+)\\.d[0-9]+$/)\n\tvar FILENAME_PROP = '{http://nextcloud.org/ns}trashbin-filename'\n\tvar DELETION_TIME_PROP = '{http://nextcloud.org/ns}trashbin-deletion-time'\n\tvar TRASHBIN_ORIGINAL_LOCATION = '{http://nextcloud.org/ns}trashbin-original-location'\n\tvar TRASHBIN_TITLE = '{http://nextcloud.org/ns}trashbin-title'\n\n\t/**\n\t * Convert a file name in the format filename.d12345 to the real file name.\n\t * This will use basename.\n\t * The name will not be changed if it has no \".d12345\" suffix.\n\t * @param {String} name file name\n\t * @returns {String} converted file name\n\t */\n\tfunction getDeletedFileName(name) {\n\t\tname = OC.basename(name)\n\t\tvar match = DELETED_REGEXP.exec(name)\n\t\tif (match && match.length > 1) {\n\t\t\tname = match[1]\n\t\t}\n\t\treturn name\n\t}\n\n\t/**\n\t * @class OCA.Trashbin.FileList\n\t * @augments OCA.Files.FileList\n\t * @classdesc List of deleted files\n\t *\n\t * @param $el container element with existing markup for the #controls\n\t * and a table\n\t * @param [options] map of options\n\t */\n\tvar FileList = function($el, options) {\n\t\tthis.client = options.client\n\t\tthis.initialize($el, options)\n\t}\n\tFileList.prototype = _.extend({}, OCA.Files.FileList.prototype,\n\t\t/** @lends OCA.Trashbin.FileList.prototype */ {\n\t\tid: 'trashbin',\n\t\tappName: t('files_trashbin', 'Deleted files'),\n\t\t/** @type {OC.Files.Client} */\n\t\tclient: null,\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tinitialize: function() {\n\t\t\tthis.client.addFileInfoParser(function(response, data) {\n\t\t\t\tvar props = response.propStat[0].properties\n\t\t\t\tvar path = props[TRASHBIN_ORIGINAL_LOCATION]\n\t\t\t\tvar title = props[TRASHBIN_TITLE]\n\t\t\t\treturn {\n\t\t\t\t\tdisplayName: props[FILENAME_PROP],\n\t\t\t\t\tmtime: parseInt(props[DELETION_TIME_PROP], 10) * 1000,\n\t\t\t\t\thasPreview: true,\n\t\t\t\t\tpath: path,\n\t\t\t\t\textraData: title\n\t\t\t\t}\n\t\t\t})\n\n\t\t\tvar result = OCA.Files.FileList.prototype.initialize.apply(this, arguments)\n\t\t\tthis.$el.find('.undelete').click('click', _.bind(this._onClickRestoreSelected, this))\n\n\t\t\t// Sort by most recently deleted first\n\t\t\tthis.setSort('mtime', 'desc')\n\n\t\t\t/**\n\t\t\t * Override crumb making to add \"Deleted Files\" entry\n\t\t\t * and convert files with \".d\" extensions to a more\n\t\t\t * user friendly name.\n\t\t\t */\n\t\t\t\tthis.breadcrumb._makeCrumbs = function() {\n\t\t\t\t\tvar parts = OCA.Files.BreadCrumb.prototype._makeCrumbs.apply(this, [...arguments, 'icon-delete no-hover'])\n\t\t\t\t\tfor (var i = 1; i < parts.length; i++) {\n\t\t\t\t\t\tparts[i].name = getDeletedFileName(parts[i].name)\n\t\t\t\t\t}\n\t\t\t\t\treturn parts\n\t\t\t\t}\n\n\t\t\t\tOC.Plugins.attach('OCA.Trashbin.FileList', this)\n\t\t\t\treturn result\n\t\t\t},\n\n\t\t\t/**\n\t\t * Override to only return read permissions\n\t\t */\n\t\t\tgetDirectoryPermissions: function() {\n\t\t\t\treturn OC.PERMISSION_READ | OC.PERMISSION_DELETE\n\t\t\t},\n\n\t\t\t_setCurrentDir: function(targetDir) {\n\t\t\t\tOCA.Files.FileList.prototype._setCurrentDir.apply(this, arguments)\n\n\t\t\t\tvar baseDir = OC.basename(targetDir)\n\t\t\t\tif (baseDir !== '') {\n\t\t\t\t\tthis.setPageTitle(getDeletedFileName(baseDir))\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t_createRow: function() {\n\t\t\t// FIXME: MEGAHACK until we find a better solution\n\t\t\t\tvar tr = OCA.Files.FileList.prototype._createRow.apply(this, arguments)\n\t\t\t\ttr.find('td.filesize').remove()\n\t\t\t\treturn tr\n\t\t\t},\n\n\t\t\tgetAjaxUrl: function(action, params) {\n\t\t\t\tvar q = ''\n\t\t\t\tif (params) {\n\t\t\t\t\tq = '?' + OC.buildQueryString(params)\n\t\t\t\t}\n\t\t\t\treturn OC.filePath('files_trashbin', 'ajax', action + '.php') + q\n\t\t\t},\n\n\t\t\tsetupUploadEvents: function() {\n\t\t\t// override and do nothing\n\t\t\t},\n\n\t\t\tlinkTo: function(dir) {\n\t\t\t\treturn OC.linkTo('files', 'index.php') + '?view=trashbin&dir=' + encodeURIComponent(dir).replace(/%2F/g, '/')\n\t\t\t},\n\n\t\t\telementToFile: function($el) {\n\t\t\t\tvar fileInfo = OCA.Files.FileList.prototype.elementToFile($el)\n\t\t\t\tif (this.getCurrentDirectory() === '/') {\n\t\t\t\t\tfileInfo.displayName = getDeletedFileName(fileInfo.name)\n\t\t\t\t}\n\t\t\t\t// no size available\n\t\t\t\tdelete fileInfo.size\n\t\t\t\treturn fileInfo\n\t\t\t},\n\n\t\t\tupdateEmptyContent: function() {\n\t\t\t\tvar exists = this.$fileList.find('tr:first').exists()\n\t\t\t\tthis.$el.find('#emptycontent').toggleClass('hidden', exists)\n\t\t\t\tthis.$el.find('#filestable th').toggleClass('hidden', !exists)\n\t\t\t},\n\n\t\t\t_removeCallback: function(files) {\n\t\t\t\tvar $el\n\t\t\t\tfor (var i = 0; i < files.length; i++) {\n\t\t\t\t\t$el = this.remove(OC.basename(files[i]), { updateSummary: false })\n\t\t\t\t\tthis.fileSummary.remove({ type: $el.attr('data-type'), size: $el.attr('data-size') })\n\t\t\t\t}\n\t\t\t\tthis.fileSummary.update()\n\t\t\t\tthis.updateEmptyContent()\n\t\t\t},\n\n\t\t\t_onClickRestoreSelected: function(event) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tvar self = this\n\t\t\t\tvar files = _.pluck(this.getSelectedFiles(), 'name')\n\t\t\t\tfor (var i = 0; i < files.length; i++) {\n\t\t\t\t\tvar tr = this.findFileEl(files[i])\n\t\t\t\t\tthis.showFileBusyState(tr, true)\n\t\t\t\t}\n\n\t\t\t\tthis.fileMultiSelectMenu.toggleLoading('restore', true)\n\t\t\t\tvar restorePromises = files.map(function(file) {\n\t\t\t\t\treturn self.client.move(OC.joinPaths('trash', self.getCurrentDirectory(), file), OC.joinPaths('restore', file), true)\n\t\t\t\t\t\t.then(\n\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\tself._removeCallback([file])\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t)\n\t\t\t\t})\n\t\t\t\treturn Promise.all(restorePromises).then(\n\t\t\t\t\tfunction() {\n\t\t\t\t\t\tself.fileMultiSelectMenu.toggleLoading('restore', false)\n\t\t\t\t\t},\n\t\t\t\t\tfunction() {\n\t\t\t\t\t\tOC.Notification.show(t('files_trashbin', 'Error while restoring files from trash bin'))\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t},\n\n\t\t\t_onClickDeleteSelected: function(event) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tvar self = this\n\t\t\t\tvar allFiles = this.$el.find('.select-all').is(':checked')\n\t\t\t\tvar files = _.pluck(this.getSelectedFiles(), 'name')\n\t\t\t\tfor (var i = 0; i < files.length; i++) {\n\t\t\t\t\tvar tr = this.findFileEl(files[i])\n\t\t\t\t\tthis.showFileBusyState(tr, true)\n\t\t\t\t}\n\n\t\t\t\tif (allFiles) {\n\t\t\t\t\treturn this.client.remove(OC.joinPaths('trash', this.getCurrentDirectory()))\n\t\t\t\t\t\t.then(\n\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\tself.hideMask()\n\t\t\t\t\t\t\t\tself.setFiles([])\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\tOC.Notification.show(t('files_trashbin', 'Error while emptying trash bin'))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t)\n\t\t\t\t} else {\n\t\t\t\t\tthis.fileMultiSelectMenu.toggleLoading('delete', true)\n\t\t\t\t\tvar deletePromises = files.map(function(file) {\n\t\t\t\t\t\treturn self.client.remove(OC.joinPaths('trash', self.getCurrentDirectory(), file))\n\t\t\t\t\t\t\t.then(\n\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\tself._removeCallback([file])\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t)\n\t\t\t\t\t})\n\t\t\t\t\treturn Promise.all(deletePromises).then(\n\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\tself.fileMultiSelectMenu.toggleLoading('delete', false)\n\t\t\t\t\t\t},\n\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\tOC.Notification.show(t('files_trashbin', 'Error while removing files from trash bin'))\n\t\t\t\t\t\t}\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t_onClickFile: function(event) {\n\t\t\t\tvar mime = $(this).parent().parent().data('mime')\n\t\t\t\tif (mime !== 'httpd/unix-directory') {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t}\n\t\t\t\treturn OCA.Files.FileList.prototype._onClickFile.apply(this, arguments)\n\t\t\t},\n\n\t\t\tgeneratePreviewUrl: function(urlSpec) {\n\t\t\t\treturn OC.generateUrl('/apps/files_trashbin/preview?') + $.param(urlSpec)\n\t\t\t},\n\n\t\t\tgetDownloadUrl: function() {\n\t\t\t// no downloads\n\t\t\t\treturn '#'\n\t\t\t},\n\n\t\t\tgetDefaultActionUrl: function() {\n\t\t\t// no default action\n\t\t\t\treturn '#'\n\t\t\t},\n\n\t\t\tupdateStorageStatistics: function() {\n\t\t\t// no op because the trashbin doesn't have\n\t\t\t// storage info like free space / used space\n\t\t\t},\n\n\t\t\tisSelectedDeletable: function() {\n\t\t\t\treturn true\n\t\t\t},\n\n\t\t\t/**\n\t\t * Returns list of webdav properties to request\n\t\t */\n\t\t\t_getWebdavProperties: function() {\n\t\t\t\treturn [FILENAME_PROP, DELETION_TIME_PROP, TRASHBIN_ORIGINAL_LOCATION, TRASHBIN_TITLE].concat(this.filesClient.getPropfindProperties())\n\t\t\t},\n\n\t\t\t/**\n\t\t * Reloads the file list using ajax call\n\t\t *\n\t\t * @returns ajax call object\n\t\t */\n\t\t\treload: function() {\n\t\t\t\tthis._selectedFiles = {}\n\t\t\t\tthis._selectionSummary.clear()\n\t\t\t\tthis.$el.find('.select-all').prop('checked', false)\n\t\t\t\tthis.showMask()\n\t\t\t\tif (this._reloadCall) {\n\t\t\t\t\tthis._reloadCall.abort()\n\t\t\t\t}\n\t\t\t\tthis._reloadCall = this.client.getFolderContents(\n\t\t\t\t\t'trash/' + this.getCurrentDirectory(), {\n\t\t\t\t\t\tincludeParent: false,\n\t\t\t\t\t\tproperties: this._getWebdavProperties()\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t\tvar callBack = this.reloadCallback.bind(this)\n\t\t\t\treturn this._reloadCall.then(callBack, callBack)\n\t\t\t},\n\t\t\treloadCallback: function(status, result) {\n\t\t\t\tdelete this._reloadCall\n\t\t\t\tthis.hideMask()\n\n\t\t\t\tif (status === 401) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\t// Firewall Blocked request?\n\t\t\t\tif (status === 403) {\n\t\t\t\t// Go home\n\t\t\t\t\tthis.changeDirectory('/')\n\t\t\t\t\tOC.Notification.show(t('files', 'This operation is forbidden'))\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\t// Did share service die or something else fail?\n\t\t\t\tif (status === 500) {\n\t\t\t\t// Go home\n\t\t\t\t\tthis.changeDirectory('/')\n\t\t\t\t\tOC.Notification.show(t('files', 'This directory is unavailable, please check the logs or contact the administrator'))\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\tif (status === 404) {\n\t\t\t\t// go back home\n\t\t\t\t\tthis.changeDirectory('/')\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\t// aborted ?\n\t\t\t\tif (status === 0) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\n\t\t\t\tthis.setFiles(result)\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t})\n\n\tOCA.Trashbin.FileList = FileList\n})()\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./trash.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./trash.scss\";\n export default content && content.locals ? content.locals : undefined;\n","/**\n * @copyright Copyright (c) 2016 Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport './app'\nimport './filelist'\nimport './trash.scss'\n\nwindow.OCA.Trashbin = OCA.Trashbin\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#app-content-trashbin tbody tr[data-type=file] td a.name,#app-content-trashbin tbody tr[data-type=file] td a.name span.nametext,#app-content-trashbin tbody tr[data-type=file] td a.name span.nametext span{cursor:default}#app-content-trashbin .summary :last-child{padding:0}#app-content-trashbin #filestable .summary .filesize{display:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_trashbin/src/trash.scss\"],\"names\":[],\"mappings\":\"AASA,4MAGC,cAAA,CAGD,2CACC,SAAA,CAED,qDACC,YAAA\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2014\\n *\\n * This file is licensed under the Affero General Public License version 3\\n * or later.\\n *\\n * See the COPYING-README file.\\n *\\n */\\n#app-content-trashbin tbody tr[data-type=\\\"file\\\"] td a.name,\\n#app-content-trashbin tbody tr[data-type=\\\"file\\\"] td a.name span.nametext,\\n#app-content-trashbin tbody tr[data-type=\\\"file\\\"] td a.name span.nametext span {\\n\\tcursor: default;\\n}\\n\\n#app-content-trashbin .summary :last-child {\\n\\tpadding: 0;\\n}\\n#app-content-trashbin #filestable .summary .filesize {\\n\\tdisplay: none;\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(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 = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 2325;","__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\t2325: 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 = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(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(function(id) { return 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], function() { return __webpack_require__(69845); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","OCA","Trashbin","App","_initialized","client","initialize","$el","this","OC","Files","Client","host","getHost","port","getPort","root","linkToRemoteBase","getCurrentUser","uid","useHTTPS","getProtocol","urlParams","Util","History","parseUrlQuery","fileList","FileList","$","fileActions","_createFileActions","detailsViewEnabled","scrollTo","scrollto","config","getFilesConfig","multiSelectMenu","name","displayName","t","iconClass","shown","FileActions","register","PERMISSION_READ","filename","context","dir","getCurrentDirectory","changeDirectory","joinPaths","setDefault","registerAction","type","TYPE_INLINE","mime","permissions","actionHandler","tr","findFileEl","showFileBusyState","move","then","_removeCallback","bind","Notification","show","render","actionSpec","isDefault","$actionLink","_makeActionLink","attr","children","$file","find","append","remove","window","addEventListener","one","DELETED_REGEXP","RegExp","FILENAME_PROP","DELETION_TIME_PROP","TRASHBIN_ORIGINAL_LOCATION","TRASHBIN_TITLE","getDeletedFileName","basename","match","exec","length","options","prototype","_","extend","id","appName","addFileInfoParser","response","data","props","propStat","properties","path","title","mtime","parseInt","hasPreview","extraData","result","apply","arguments","click","_onClickRestoreSelected","setSort","breadcrumb","_makeCrumbs","parts","BreadCrumb","i","Plugins","attach","getDirectoryPermissions","PERMISSION_DELETE","_setCurrentDir","targetDir","baseDir","setPageTitle","_createRow","getAjaxUrl","action","params","q","buildQueryString","filePath","setupUploadEvents","linkTo","encodeURIComponent","replace","elementToFile","fileInfo","size","updateEmptyContent","exists","$fileList","toggleClass","files","updateSummary","fileSummary","update","event","preventDefault","self","pluck","getSelectedFiles","fileMultiSelectMenu","toggleLoading","restorePromises","map","file","Promise","all","_onClickDeleteSelected","allFiles","is","hideMask","setFiles","deletePromises","_onClickFile","parent","generatePreviewUrl","urlSpec","generateUrl","param","getDownloadUrl","getDefaultActionUrl","updateStorageStatistics","isSelectedDeletable","_getWebdavProperties","concat","filesClient","getPropfindProperties","reload","_selectedFiles","_selectionSummary","clear","prop","showMask","_reloadCall","abort","getFolderContents","includeParent","callBack","reloadCallback","status","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","obj","hasOwnProperty","Symbol","toStringTag","value","nmd","paths","b","document","baseURI","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"files_trashbin-files_trashbin.js?v=aad1490fd0f037f1f828","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/files_trashbin/src/app.js","webpack:///nextcloud/apps/files_trashbin/src/filelist.js","webpack://nextcloud/./apps/files_trashbin/src/trash.scss?cfe4","webpack:///nextcloud/apps/files_trashbin/src/files_trashbin.js","webpack:///nextcloud/apps/files_trashbin/src/trash.scss","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/amd define","webpack:///nextcloud/webpack/runtime/amd options","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(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(function(key) { return __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 (c) 2014\n *\n * @author Abijeet <abijeetpatro@gmail.com>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nOCA.Trashbin = {}\n/**\n * @namespace OCA.Trashbin.App\n */\nOCA.Trashbin.App = {\n\t_initialized: false,\n\t/** @type {OC.Files.Client} */\n\tclient: null,\n\n\tinitialize($el) {\n\t\tif (this._initialized) {\n\t\t\treturn\n\t\t}\n\t\tthis._initialized = true\n\n\t\tthis.client = new OC.Files.Client({\n\t\t\thost: OC.getHost(),\n\t\t\tport: OC.getPort(),\n\t\t\troot: OC.linkToRemoteBase('dav') + '/trashbin/' + OC.getCurrentUser().uid,\n\t\t\tuseHTTPS: OC.getProtocol() === 'https',\n\t\t})\n\t\tconst urlParams = OC.Util.History.parseUrlQuery()\n\t\tthis.fileList = new OCA.Trashbin.FileList(\n\t\t\t$('#app-content-trashbin'), {\n\t\t\t\tfileActions: this._createFileActions(),\n\t\t\t\tdetailsViewEnabled: false,\n\t\t\t\tscrollTo: urlParams.scrollto,\n\t\t\t\tconfig: OCA.Files.App.getFilesConfig(),\n\t\t\t\tmultiSelectMenu: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'restore',\n\t\t\t\t\t\tdisplayName: t('files_trashbin', 'Restore'),\n\t\t\t\t\t\ticonClass: 'icon-history',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'delete',\n\t\t\t\t\t\tdisplayName: t('files_trashbin', 'Delete permanently'),\n\t\t\t\t\t\ticonClass: 'icon-delete',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tclient: this.client,\n\t\t\t\t// The file list is created when a \"show\" event is handled, so\n\t\t\t\t// it should be marked as \"shown\" like it would have been done\n\t\t\t\t// if handling the event with the file list already created.\n\t\t\t\tshown: true,\n\t\t\t}\n\t\t)\n\t},\n\n\t_createFileActions() {\n\t\tconst client = this.client\n\t\tconst fileActions = new OCA.Files.FileActions()\n\t\tfileActions.register('dir', 'Open', OC.PERMISSION_READ, '', function(filename, context) {\n\t\t\tconst dir = context.fileList.getCurrentDirectory()\n\t\t\tcontext.fileList.changeDirectory(OC.joinPaths(dir, filename))\n\t\t})\n\n\t\tfileActions.setDefault('dir', 'Open')\n\n\t\tfileActions.registerAction({\n\t\t\tname: 'Restore',\n\t\t\tdisplayName: t('files_trashbin', 'Restore'),\n\t\t\ttype: OCA.Files.FileActions.TYPE_INLINE,\n\t\t\tmime: 'all',\n\t\t\tpermissions: OC.PERMISSION_READ,\n\t\t\ticonClass: 'icon-history',\n\t\t\tactionHandler(filename, context) {\n\t\t\t\tconst fileList = context.fileList\n\t\t\t\tconst tr = fileList.findFileEl(filename)\n\t\t\t\tfileList.showFileBusyState(tr, true)\n\t\t\t\tconst dir = context.fileList.getCurrentDirectory()\n\t\t\t\tclient.move(OC.joinPaths('trash', dir, filename), OC.joinPaths('restore', filename), true)\n\t\t\t\t\t.then(\n\t\t\t\t\t\tfileList._removeCallback.bind(fileList, [filename]),\n\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\tfileList.showFileBusyState(tr, false)\n\t\t\t\t\t\t\tOC.Notification.show(t('files_trashbin', 'Error while restoring file from trash bin'))\n\t\t\t\t\t\t}\n\t\t\t\t\t)\n\t\t\t},\n\t\t})\n\n\t\tfileActions.registerAction({\n\t\t\tname: 'Delete',\n\t\t\tdisplayName: t('files_trashbin', 'Delete permanently'),\n\t\t\tmime: 'all',\n\t\t\tpermissions: OC.PERMISSION_READ,\n\t\t\ticonClass: 'icon-delete',\n\t\t\trender(actionSpec, isDefault, context) {\n\t\t\t\tconst $actionLink = fileActions._makeActionLink(actionSpec, context)\n\t\t\t\t$actionLink.attr('original-title', t('files_trashbin', 'Delete permanently'))\n\t\t\t\t$actionLink.children('img').attr('alt', t('files_trashbin', 'Delete permanently'))\n\t\t\t\tcontext.$file.find('td:last').append($actionLink)\n\t\t\t\treturn $actionLink\n\t\t\t},\n\t\t\tactionHandler(filename, context) {\n\t\t\t\tconst fileList = context.fileList\n\t\t\t\t$('.tipsy').remove()\n\t\t\t\tconst tr = fileList.findFileEl(filename)\n\t\t\t\tfileList.showFileBusyState(tr, true)\n\t\t\t\tconst dir = context.fileList.getCurrentDirectory()\n\t\t\t\tclient.remove(OC.joinPaths('trash', dir, filename))\n\t\t\t\t\t.then(\n\t\t\t\t\t\tfileList._removeCallback.bind(fileList, [filename]),\n\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\tfileList.showFileBusyState(tr, false)\n\t\t\t\t\t\t\tOC.Notification.show(t('files_trashbin', 'Error while removing file from trash bin'))\n\t\t\t\t\t\t}\n\t\t\t\t\t)\n\t\t\t},\n\t\t})\n\t\treturn fileActions\n\t},\n}\n\nwindow.addEventListener('DOMContentLoaded', function() {\n\t$('#app-content-trashbin').one('show', function() {\n\t\tconst App = OCA.Trashbin.App\n\t\tApp.initialize($('#app-content-trashbin'))\n\t\t// force breadcrumb init\n\t\t// App.fileList.changeDirectory(App.fileList.getCurrentDirectory(), false, true);\n\t})\n})\n","/**\n * Copyright (c) 2014\n *\n * @author Azul <azul@riseup.net>\n * @author Gary Kim <gary@garykim.dev>\n * @author Jan C. Borchardt <hey@jancborchardt.net>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\n(function() {\n\tvar DELETED_REGEXP = new RegExp(/^(.+)\\.d[0-9]+$/)\n\tvar FILENAME_PROP = '{http://nextcloud.org/ns}trashbin-filename'\n\tvar DELETION_TIME_PROP = '{http://nextcloud.org/ns}trashbin-deletion-time'\n\tvar TRASHBIN_ORIGINAL_LOCATION = '{http://nextcloud.org/ns}trashbin-original-location'\n\tvar TRASHBIN_TITLE = '{http://nextcloud.org/ns}trashbin-title'\n\n\t/**\n\t * Convert a file name in the format filename.d12345 to the real file name.\n\t * This will use basename.\n\t * The name will not be changed if it has no \".d12345\" suffix.\n\t * @param {String} name file name\n\t * @returns {String} converted file name\n\t */\n\tfunction getDeletedFileName(name) {\n\t\tname = OC.basename(name)\n\t\tvar match = DELETED_REGEXP.exec(name)\n\t\tif (match && match.length > 1) {\n\t\t\tname = match[1]\n\t\t}\n\t\treturn name\n\t}\n\n\t/**\n\t * @class OCA.Trashbin.FileList\n\t * @augments OCA.Files.FileList\n\t * @classdesc List of deleted files\n\t *\n\t * @param $el container element with existing markup for the .files-controls\n\t * and a table\n\t * @param [options] map of options\n\t */\n\tvar FileList = function($el, options) {\n\t\tthis.client = options.client\n\t\tthis.initialize($el, options)\n\t}\n\tFileList.prototype = _.extend({}, OCA.Files.FileList.prototype,\n\t\t/** @lends OCA.Trashbin.FileList.prototype */ {\n\t\tid: 'trashbin',\n\t\tappName: t('files_trashbin', 'Deleted files'),\n\t\t/** @type {OC.Files.Client} */\n\t\tclient: null,\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tinitialize: function() {\n\t\t\tthis.client.addFileInfoParser(function(response, data) {\n\t\t\t\tvar props = response.propStat[0].properties\n\t\t\t\tvar path = props[TRASHBIN_ORIGINAL_LOCATION]\n\t\t\t\tvar title = props[TRASHBIN_TITLE]\n\t\t\t\treturn {\n\t\t\t\t\tdisplayName: props[FILENAME_PROP],\n\t\t\t\t\tmtime: parseInt(props[DELETION_TIME_PROP], 10) * 1000,\n\t\t\t\t\thasPreview: true,\n\t\t\t\t\tpath: path,\n\t\t\t\t\textraData: title\n\t\t\t\t}\n\t\t\t})\n\n\t\t\tvar result = OCA.Files.FileList.prototype.initialize.apply(this, arguments)\n\t\t\tthis.$el.find('.undelete').click('click', _.bind(this._onClickRestoreSelected, this))\n\n\t\t\t// Sort by most recently deleted first\n\t\t\tthis.setSort('mtime', 'desc')\n\n\t\t\t/**\n\t\t\t * Override crumb making to add \"Deleted Files\" entry\n\t\t\t * and convert files with \".d\" extensions to a more\n\t\t\t * user friendly name.\n\t\t\t */\n\t\t\t\tthis.breadcrumb._makeCrumbs = function() {\n\t\t\t\t\tvar parts = OCA.Files.BreadCrumb.prototype._makeCrumbs.apply(this, [...arguments, 'icon-delete no-hover'])\n\t\t\t\t\tfor (var i = 1; i < parts.length; i++) {\n\t\t\t\t\t\tparts[i].name = getDeletedFileName(parts[i].name)\n\t\t\t\t\t}\n\t\t\t\t\treturn parts\n\t\t\t\t}\n\n\t\t\t\tOC.Plugins.attach('OCA.Trashbin.FileList', this)\n\t\t\t\treturn result\n\t\t\t},\n\n\t\t\t/**\n\t\t * Override to only return read permissions\n\t\t */\n\t\t\tgetDirectoryPermissions: function() {\n\t\t\t\treturn OC.PERMISSION_READ | OC.PERMISSION_DELETE\n\t\t\t},\n\n\t\t\t_setCurrentDir: function(targetDir) {\n\t\t\t\tOCA.Files.FileList.prototype._setCurrentDir.apply(this, arguments)\n\n\t\t\t\tvar baseDir = OC.basename(targetDir)\n\t\t\t\tif (baseDir !== '') {\n\t\t\t\t\tthis.setPageTitle(getDeletedFileName(baseDir))\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t_createRow: function() {\n\t\t\t// FIXME: MEGAHACK until we find a better solution\n\t\t\t\tvar tr = OCA.Files.FileList.prototype._createRow.apply(this, arguments)\n\t\t\t\ttr.find('td.filesize').remove()\n\t\t\t\treturn tr\n\t\t\t},\n\n\t\t\tgetAjaxUrl: function(action, params) {\n\t\t\t\tvar q = ''\n\t\t\t\tif (params) {\n\t\t\t\t\tq = '?' + OC.buildQueryString(params)\n\t\t\t\t}\n\t\t\t\treturn OC.filePath('files_trashbin', 'ajax', action + '.php') + q\n\t\t\t},\n\n\t\t\tsetupUploadEvents: function() {\n\t\t\t// override and do nothing\n\t\t\t},\n\n\t\t\tlinkTo: function(dir) {\n\t\t\t\treturn OC.linkTo('files', 'index.php') + '?view=trashbin&dir=' + encodeURIComponent(dir).replace(/%2F/g, '/')\n\t\t\t},\n\n\t\t\telementToFile: function($el) {\n\t\t\t\tvar fileInfo = OCA.Files.FileList.prototype.elementToFile($el)\n\t\t\t\tif (this.getCurrentDirectory() === '/') {\n\t\t\t\t\tfileInfo.displayName = getDeletedFileName(fileInfo.name)\n\t\t\t\t}\n\t\t\t\t// no size available\n\t\t\t\tdelete fileInfo.size\n\t\t\t\treturn fileInfo\n\t\t\t},\n\n\t\t\tupdateEmptyContent: function() {\n\t\t\t\tvar exists = this.$fileList.find('tr:first').exists()\n\t\t\t\tthis.$el.find('.emptyfilelist.emptycontent').toggleClass('hidden', exists)\n\t\t\t\tthis.$el.find('.files-filestable th').toggleClass('hidden', !exists)\n\t\t\t},\n\n\t\t\t_removeCallback: function(files) {\n\t\t\t\tvar $el\n\t\t\t\tfor (var i = 0; i < files.length; i++) {\n\t\t\t\t\t$el = this.remove(OC.basename(files[i]), { updateSummary: false })\n\t\t\t\t\tthis.fileSummary.remove({ type: $el.attr('data-type'), size: $el.attr('data-size') })\n\t\t\t\t}\n\t\t\t\tthis.fileSummary.update()\n\t\t\t\tthis.updateEmptyContent()\n\t\t\t},\n\n\t\t\t_onClickRestoreSelected: function(event) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tvar self = this\n\t\t\t\tvar files = _.pluck(this.getSelectedFiles(), 'name')\n\t\t\t\tfor (var i = 0; i < files.length; i++) {\n\t\t\t\t\tvar tr = this.findFileEl(files[i])\n\t\t\t\t\tthis.showFileBusyState(tr, true)\n\t\t\t\t}\n\n\t\t\t\tthis.fileMultiSelectMenu.toggleLoading('restore', true)\n\t\t\t\tvar restorePromises = files.map(function(file) {\n\t\t\t\t\treturn self.client.move(OC.joinPaths('trash', self.getCurrentDirectory(), file), OC.joinPaths('restore', file), true)\n\t\t\t\t\t\t.then(\n\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\tself._removeCallback([file])\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t)\n\t\t\t\t})\n\t\t\t\treturn Promise.all(restorePromises).then(\n\t\t\t\t\tfunction() {\n\t\t\t\t\t\tself.fileMultiSelectMenu.toggleLoading('restore', false)\n\t\t\t\t\t},\n\t\t\t\t\tfunction() {\n\t\t\t\t\t\tOC.Notification.show(t('files_trashbin', 'Error while restoring files from trash bin'))\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t},\n\n\t\t\t_onClickDeleteSelected: function(event) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tvar self = this\n\t\t\t\tvar allFiles = this.$el.find('.select-all').is(':checked')\n\t\t\t\tvar files = _.pluck(this.getSelectedFiles(), 'name')\n\t\t\t\tfor (var i = 0; i < files.length; i++) {\n\t\t\t\t\tvar tr = this.findFileEl(files[i])\n\t\t\t\t\tthis.showFileBusyState(tr, true)\n\t\t\t\t}\n\n\t\t\t\tif (allFiles) {\n\t\t\t\t\treturn this.client.remove(OC.joinPaths('trash', this.getCurrentDirectory()))\n\t\t\t\t\t\t.then(\n\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\tself.hideMask()\n\t\t\t\t\t\t\t\tself.setFiles([])\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\tOC.Notification.show(t('files_trashbin', 'Error while emptying trash bin'))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t)\n\t\t\t\t} else {\n\t\t\t\t\tthis.fileMultiSelectMenu.toggleLoading('delete', true)\n\t\t\t\t\tvar deletePromises = files.map(function(file) {\n\t\t\t\t\t\treturn self.client.remove(OC.joinPaths('trash', self.getCurrentDirectory(), file))\n\t\t\t\t\t\t\t.then(\n\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\tself._removeCallback([file])\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t)\n\t\t\t\t\t})\n\t\t\t\t\treturn Promise.all(deletePromises).then(\n\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\tself.fileMultiSelectMenu.toggleLoading('delete', false)\n\t\t\t\t\t\t},\n\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\tOC.Notification.show(t('files_trashbin', 'Error while removing files from trash bin'))\n\t\t\t\t\t\t}\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t_onClickFile: function(event) {\n\t\t\t\tvar mime = $(this).parent().parent().data('mime')\n\t\t\t\tif (mime !== 'httpd/unix-directory') {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t}\n\t\t\t\treturn OCA.Files.FileList.prototype._onClickFile.apply(this, arguments)\n\t\t\t},\n\n\t\t\tgeneratePreviewUrl: function(urlSpec) {\n\t\t\t\treturn OC.generateUrl('/apps/files_trashbin/preview?') + $.param(urlSpec)\n\t\t\t},\n\n\t\t\tgetDownloadUrl: function() {\n\t\t\t// no downloads\n\t\t\t\treturn '#'\n\t\t\t},\n\n\t\t\tgetDefaultActionUrl: function() {\n\t\t\t// no default action\n\t\t\t\treturn '#'\n\t\t\t},\n\n\t\t\tupdateStorageStatistics: function() {\n\t\t\t// no op because the trashbin doesn't have\n\t\t\t// storage info like free space / used space\n\t\t\t},\n\n\t\t\tisSelectedDeletable: function() {\n\t\t\t\treturn true\n\t\t\t},\n\n\t\t\t/**\n\t\t * Returns list of webdav properties to request\n\t\t */\n\t\t\t_getWebdavProperties: function() {\n\t\t\t\treturn [FILENAME_PROP, DELETION_TIME_PROP, TRASHBIN_ORIGINAL_LOCATION, TRASHBIN_TITLE].concat(this.filesClient.getPropfindProperties())\n\t\t\t},\n\n\t\t\t/**\n\t\t * Reloads the file list using ajax call\n\t\t *\n\t\t * @returns ajax call object\n\t\t */\n\t\t\treload: function() {\n\t\t\t\tthis._selectedFiles = {}\n\t\t\t\tthis._selectionSummary.clear()\n\t\t\t\tthis.$el.find('.select-all').prop('checked', false)\n\t\t\t\tthis.showMask()\n\t\t\t\tif (this._reloadCall) {\n\t\t\t\t\tthis._reloadCall.abort()\n\t\t\t\t}\n\t\t\t\tthis._reloadCall = this.client.getFolderContents(\n\t\t\t\t\t'trash/' + this.getCurrentDirectory(), {\n\t\t\t\t\t\tincludeParent: false,\n\t\t\t\t\t\tproperties: this._getWebdavProperties()\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t\tvar callBack = this.reloadCallback.bind(this)\n\t\t\t\treturn this._reloadCall.then(callBack, callBack)\n\t\t\t},\n\t\t\treloadCallback: function(status, result) {\n\t\t\t\tdelete this._reloadCall\n\t\t\t\tthis.hideMask()\n\n\t\t\t\tif (status === 401) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\t// Firewall Blocked request?\n\t\t\t\tif (status === 403) {\n\t\t\t\t// Go home\n\t\t\t\t\tthis.changeDirectory('/')\n\t\t\t\t\tOC.Notification.show(t('files', 'This operation is forbidden'))\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\t// Did share service die or something else fail?\n\t\t\t\tif (status === 500) {\n\t\t\t\t// Go home\n\t\t\t\t\tthis.changeDirectory('/')\n\t\t\t\t\tOC.Notification.show(t('files', 'This directory is unavailable, please check the logs or contact the administrator'))\n\t\t\t\t\treturn false\n\t\t\t\t}\n\n\t\t\t\tif (status === 404) {\n\t\t\t\t// go back home\n\t\t\t\t\tthis.changeDirectory('/')\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\t// aborted ?\n\t\t\t\tif (status === 0) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\n\t\t\t\tthis.setFiles(result)\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t})\n\n\tOCA.Trashbin.FileList = FileList\n})()\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./trash.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js!./trash.scss\";\n export default content && content.locals ? content.locals : undefined;\n","/**\n * @copyright Copyright (c) 2016 Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport './app'\nimport './filelist'\nimport './trash.scss'\n\nwindow.OCA.Trashbin = OCA.Trashbin\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#app-content-trashbin tbody tr[data-type=file] td a.name,#app-content-trashbin tbody tr[data-type=file] td a.name span.nametext,#app-content-trashbin tbody tr[data-type=file] td a.name span.nametext span{cursor:default}#app-content-trashbin .summary :last-child{padding:0}#app-content-trashbin .files-filestable .summary .filesize{display:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_trashbin/src/trash.scss\"],\"names\":[],\"mappings\":\"AASA,4MAGC,cAAA,CAGD,2CACC,SAAA,CAED,2DACC,YAAA\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2014\\n *\\n * This file is licensed under the Affero General Public License version 3\\n * or later.\\n *\\n * See the COPYING-README file.\\n *\\n */\\n#app-content-trashbin tbody tr[data-type=\\\"file\\\"] td a.name,\\n#app-content-trashbin tbody tr[data-type=\\\"file\\\"] td a.name span.nametext,\\n#app-content-trashbin tbody tr[data-type=\\\"file\\\"] td a.name span.nametext span {\\n\\tcursor: default;\\n}\\n\\n#app-content-trashbin .summary :last-child {\\n\\tpadding: 0;\\n}\\n#app-content-trashbin .files-filestable .summary .filesize {\\n\\tdisplay: none;\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(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 = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 2325;","__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\t2325: 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 = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(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(function(id) { return 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], function() { return __webpack_require__(69845); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","OCA","Trashbin","App","_initialized","client","initialize","$el","this","OC","Files","Client","host","getHost","port","getPort","root","linkToRemoteBase","getCurrentUser","uid","useHTTPS","getProtocol","urlParams","Util","History","parseUrlQuery","fileList","FileList","$","fileActions","_createFileActions","detailsViewEnabled","scrollTo","scrollto","config","getFilesConfig","multiSelectMenu","name","displayName","t","iconClass","shown","FileActions","register","PERMISSION_READ","filename","context","dir","getCurrentDirectory","changeDirectory","joinPaths","setDefault","registerAction","type","TYPE_INLINE","mime","permissions","actionHandler","tr","findFileEl","showFileBusyState","move","then","_removeCallback","bind","Notification","show","render","actionSpec","isDefault","$actionLink","_makeActionLink","attr","children","$file","find","append","remove","window","addEventListener","one","DELETED_REGEXP","RegExp","FILENAME_PROP","DELETION_TIME_PROP","TRASHBIN_ORIGINAL_LOCATION","TRASHBIN_TITLE","getDeletedFileName","basename","match","exec","length","options","prototype","_","extend","id","appName","addFileInfoParser","response","data","props","propStat","properties","path","title","mtime","parseInt","hasPreview","extraData","result","apply","arguments","click","_onClickRestoreSelected","setSort","breadcrumb","_makeCrumbs","parts","BreadCrumb","i","Plugins","attach","getDirectoryPermissions","PERMISSION_DELETE","_setCurrentDir","targetDir","baseDir","setPageTitle","_createRow","getAjaxUrl","action","params","q","buildQueryString","filePath","setupUploadEvents","linkTo","encodeURIComponent","replace","elementToFile","fileInfo","size","updateEmptyContent","exists","$fileList","toggleClass","files","updateSummary","fileSummary","update","event","preventDefault","self","pluck","getSelectedFiles","fileMultiSelectMenu","toggleLoading","restorePromises","map","file","Promise","all","_onClickDeleteSelected","allFiles","is","hideMask","setFiles","deletePromises","_onClickFile","parent","generatePreviewUrl","urlSpec","generateUrl","param","getDownloadUrl","getDefaultActionUrl","updateStorageStatistics","isSelectedDeletable","_getWebdavProperties","concat","filesClient","getPropfindProperties","reload","_selectedFiles","_selectionSummary","clear","prop","showMask","_reloadCall","abort","getFolderContents","includeParent","callBack","reloadCallback","status","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","obj","hasOwnProperty","Symbol","toStringTag","value","nmd","paths","b","document","baseURI","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/dist/systemtags-systemtags.js b/dist/systemtags-systemtags.js
index 384f3a12f05..d2fa2f99e71 100644
--- a/dist/systemtags-systemtags.js
+++ b/dist/systemtags-systemtags.js
@@ -1,3 +1,3 @@
/*! For license information please see systemtags-systemtags.js.LICENSE.txt */
-!function(){var e,i={30213:function(){OCA.SystemTags||(OCA.SystemTags={}),OCA.SystemTags.App={initFileList:function(e){if(this._fileList)return this._fileList;var i=new URL(window.location.href).searchParams.get("tags"),s=i?i.split(",").map(parseInt):[];return this._fileList=new OCA.SystemTags.FileList(e,{id:"systemtags",fileActions:this._createFileActions(),config:OCA.Files.App.getFilesConfig(),shown:!0,systemTagIds:s}),this._fileList.appName=t("systemtags","Tags"),this._fileList},removeFileList:function(){this._fileList&&this._fileList.$fileList.empty()},_createFileActions:function(){var t=new OCA.Files.FileActions;return t.registerDefaultActions(),t.merge(OCA.Files.fileActions),this._globalActionsInitialized||(this._onActionsUpdated=_.bind(this._onActionsUpdated,this),OCA.Files.fileActions.on("setDefault.app-systemtags",this._onActionsUpdated),OCA.Files.fileActions.on("registerAction.app-systemtags",this._onActionsUpdated),this._globalActionsInitialized=!0),t.register("dir","Open",OC.PERMISSION_READ,"",(function(t,e){OCA.Files.App.setActiveView("files",{silent:!0}),OCA.Files.App.fileList.changeDirectory(OC.joinPaths(e.$file.attr("data-path"),t),!0,!0)})),t.setDefault("dir","Open"),t},_onActionsUpdated:function(t){this._fileList&&(t.action?this._fileList.fileActions.registerAction(t.action):t.defaultAction&&this._fileList.fileActions.setDefault(t.defaultAction.mime,t.defaultAction.name))},destroy:function(){OCA.Files.fileActions.off("setDefault.app-systemtags",this._onActionsUpdated),OCA.Files.fileActions.off("registerAction.app-systemtags",this._onActionsUpdated),this.removeFileList(),this._fileList=null,delete this._globalActionsInitialized}},window.addEventListener("DOMContentLoaded",(function(){$("#app-content-systemtagsfilter").on("show",(function(t){OCA.SystemTags.App.initFileList($(t.target))})),$("#app-content-systemtagsfilter").on("hide",(function(){OCA.SystemTags.App.removeFileList()}))}))},22609:function(){OCA.SystemTags=_.extend({},OCA.SystemTags),OCA.SystemTags||(OCA.SystemTags={}),OCA.SystemTags.FilesPlugin={ignoreLists:["trashbin","files.public"],attach:function(t){if(!(this.ignoreLists.indexOf(t.id)>=0||OCA.SystemTags.View)){var e=new OCA.SystemTags.SystemTagsInfoView;t.registerDetailView(e),OCA.SystemTags.View=e}}},OC.Plugins.register("OCA.Files.FileList",OCA.SystemTags.FilesPlugin)},19294:function(t,e,i){"use strict";i(30213),i(99641),i(22609),i(36670);var s=i(93379),n=i.n(s),l=i(7795),o=i.n(l),a=i(90569),r=i.n(a),c=i(3565),d=i.n(c),f=i(19216),u=i.n(f),h=i(44589),g=i.n(h),p=i(79891),m={};m.styleTagTransform=g(),m.setAttributes=d(),m.insert=r().bind(null,"head"),m.domAPI=o(),m.insertStyleElement=u(),n()(p.Z,m),p.Z&&p.Z.locals&&p.Z.locals,window.OCA.SystemTags=OCA.SystemTags},99641:function(){var e;(e=function(t,e){this.initialize(t,e)}).prototype=_.extend({},OCA.Files.FileList.prototype,{id:"systemtagsfilter",appName:t("systemtags","Tagged files"),_systemTagIds:[],_lastUsedTags:[],_clientSideSort:!0,_allowSelection:!1,_filterField:null,initialize:function(t,e){if(OCA.Files.FileList.prototype.initialize.apply(this,arguments),!this.initialized){e&&e.systemTagIds&&(this._systemTagIds=e.systemTagIds),OC.Plugins.attach("OCA.SystemTags.FileList",this);var i=this.$el.find("#controls").empty();_.defer(_.bind(this._getLastUsedTags,this)),this._initFilterField(i)}},destroy:function(){this.$filterField.remove(),OCA.Files.FileList.prototype.destroy.apply(this,arguments)},_getLastUsedTags:function(){var t=this;$.ajax({type:"GET",url:OC.generateUrl("/apps/systemtags/lastused"),success:function(e){t._lastUsedTags=e}})},_initFilterField:function(e){var i=this;return this.$filterField=$('<input type="hidden" name="tags"/>'),this.$filterField.val(this._systemTagIds.join(",")),e.append(this.$filterField),this.$filterField.select2({placeholder:t("systemtags","Select tags to filter by"),allowClear:!1,multiple:!0,toggleSelect:!0,separator:",",query:_.bind(this._queryTagsAutocomplete,this),id:function(t){return t.id},initSelection:function(t,e){var s=$(t).val().trim();if(s){var n=s.split(","),l=[];OC.SystemTags.collection.fetch({success:function(){_.each(n,(function(t){var e=OC.SystemTags.collection.get(t);_.isUndefined(e)||l.push(e.toJSON())})),e(l),i._onTagsChanged({target:t})}})}else e([])},formatResult:function(t){return OC.SystemTags.getDescriptiveTag(t)},formatSelection:function(t){return OC.SystemTags.getDescriptiveTag(t)[0].outerHTML},sortResults:function(t){return t.sort((function(t,e){var s=i._lastUsedTags.indexOf(t.id),n=i._lastUsedTags.indexOf(e.id);return s!==n?-1===n?-1:-1===s?1:s<n?-1:1:OC.Util.naturalSortCompare(t.name,e.name)})),t},escapeMarkup:function(t){return t},formatNoMatches:function(){return t("systemtags","No tags found")}}),this.$filterField.on("change",_.bind(this._onTagsChanged,this)),this.$filterField},_queryTagsAutocomplete:function(t){OC.SystemTags.collection.fetch({success:function(){var e=OC.SystemTags.collection.filterByName(t.term);t.callback({results:_.invoke(e,"toJSON")})}})},_onUrlChanged:function(t){if(t.dir){var e=_.filter(t.dir.split("/"),(function(t){return""!==t.trim()}));this.$filterField.select2("val",e||[]),this._systemTagIds=e,this.reload()}},_onTagsChanged:function(t){var e=$(t.target).val().trim();this._systemTagIds=""!==e?e.split(","):[],this.$el.trigger($.Event("changeDirectory",{dir:this._systemTagIds.join("/")})),this.reload()},updateEmptyContent:function(){var e=this.getCurrentDirectory();"/"===e?(this._systemTagIds.length?this.$el.find("#emptycontent").html('<div class="icon-systemtags"></div><h2>'+t("systemtags","No files found for the selected tags")+"</h2>"):this.$el.find("#emptycontent").html('<div class="icon-systemtags"></div><h2>'+t("systemtags","Please select tags to filter by")+"</h2>"),this.$el.find("#emptycontent").toggleClass("hidden",!this.isEmpty),this.$el.find("#filestable thead th").toggleClass("hidden",this.isEmpty)):OCA.Files.FileList.prototype.updateEmptyContent.apply(this,arguments)},getDirectoryPermissions:function(){return OC.PERMISSION_READ|OC.PERMISSION_DELETE},updateStorageStatistics:function(){},reload:function(){if(this._setCurrentDir("/",!1),!this._systemTagIds.length)return this.updateEmptyContent(),this.setFiles([]),$.Deferred().resolve();this._selectedFiles={},this._selectionSummary.clear(),this._currentFileModel&&this._currentFileModel.off(),this._currentFileModel=null,this.$el.find(".select-all").prop("checked",!1),this.showMask(),this._reloadCall=this.filesClient.getFilteredFiles({systemTagIds:this._systemTagIds},{properties:this._getWebdavProperties()}),this._detailsView&&this._updateDetailsView(null);var t=this.reloadCallback.bind(this);return this._reloadCall.then(t,t)},reloadCallback:function(t,e){return e&&e.unshift({}),OCA.Files.FileList.prototype.reloadCallback.call(this,t,e)}}),OCA.SystemTags.FileList=e},36670:function(){!function(t){function e(t){var e=t.toJSON();return OC.isUserAdmin()||e.canAssign||(e.locked=!0),e}var i=t.Files.DetailFileInfoView.extend({_rendered:!1,className:"systemTagsInfoView",name:"systemTags",id:"systemTagsInfoView",_inputView:null,initialize:function(t){var i=this;t=t||{},this._inputView=new OC.SystemTags.SystemTagsInputField({multiple:!0,allowActions:!0,allowCreate:!0,isAdmin:OC.isUserAdmin(),initSelection:function(t,s){s(i.selectedTagsCollection.map(e))}}),this.selectedTagsCollection=new OC.SystemTags.SystemTagsMappingCollection([],{objectType:"files"}),this._inputView.collection.on("change:name",this._onTagRenamedGlobally,this),this._inputView.collection.on("remove",this._onTagDeletedGlobally,this),this._inputView.on("select",this._onSelectTag,this),this._inputView.on("deselect",this._onDeselectTag,this)},_onSelectTag:function(t){this.selectedTagsCollection.create(t.toJSON())},_onDeselectTag:function(t){this.selectedTagsCollection.get(t).destroy()},_onTagRenamedGlobally:function(t){var e=this.selectedTagsCollection.get(t.id);e&&e.set(t.toJSON())},_onTagDeletedGlobally:function(t){this.selectedTagsCollection.remove(t)},setFileInfo:function(t){var i=this;this._rendered||this.render(),t&&(this.selectedTagsCollection.setObjectId(t.id),this.selectedTagsCollection.fetch({success:function(t){t.fetched=!0;var s=t.map(e);i._inputView.setData(s),s.length>0&&i.show()}})),this.hide()},render:function(){this.$el.append(this._inputView.$el),this._inputView.render()},isVisible:function(){return!this.$el.hasClass("hidden")},show:function(){this.$el.removeClass("hidden")},hide:function(){this.$el.addClass("hidden")},toggle:function(){this.$el.toggleClass("hidden")},openDropdown:function(){this.$el.find(".systemTagsInputField").select2("open")},remove:function(){this._inputView.remove()}});t.SystemTags.SystemTagsInfoView=i}(OCA)},79891:function(t,e,i){"use strict";var s=i(87537),n=i.n(s),l=i(23645),o=i.n(l)()(n());o.push([t.id,"#app-content-systemtagsfilter .select2-container{width:30%;margin-left:10px}#app-sidebar .app-sidebar-header__action .tag-label{cursor:pointer;padding:13px 0;display:flex;color:var(--color-text-light);position:relative;margin-top:-20px}","",{version:3,sources:["webpack://./apps/systemtags/src/css/systemtagsfilelist.scss"],names:[],mappings:"AASA,iDACC,SAAA,CACA,gBAAA,CAGD,oDACC,cAAA,CACA,cAAA,CACA,YAAA,CACA,6BAAA,CACA,iBAAA,CACA,gBAAA",sourcesContent:["/*\n * Copyright (c) 2016\n *\n * This file is licensed under the Affero General Public License version 3\n * or later.\n *\n * See the COPYING-README file.\n *\n */\n#app-content-systemtagsfilter .select2-container {\n\twidth: 30%;\n\tmargin-left: 10px;\n}\n\n#app-sidebar .app-sidebar-header__action .tag-label {\n\tcursor: pointer;\n\tpadding: 13px 0;\n\tdisplay: flex;\n\tcolor: var(--color-text-light);\n\tposition: relative;\n\tmargin-top: -20px;\n}\n"],sourceRoot:""}]),e.Z=o}},s={};function n(t){var e=s[t];if(void 0!==e)return e.exports;var l=s[t]={id:t,loaded:!1,exports:{}};return i[t].call(l.exports,l,l.exports,n),l.loaded=!0,l.exports}n.m=i,n.amdD=function(){throw new Error("define cannot be used indirect")},n.amdO={},e=[],n.O=function(t,i,s,l){if(!i){var o=1/0;for(d=0;d<e.length;d++){i=e[d][0],s=e[d][1],l=e[d][2];for(var a=!0,r=0;r<i.length;r++)(!1&l||o>=l)&&Object.keys(n.O).every((function(t){return n.O[t](i[r])}))?i.splice(r--,1):(a=!1,l<o&&(o=l));if(a){e.splice(d--,1);var c=s();void 0!==c&&(t=c)}}return t}l=l||0;for(var d=e.length;d>0&&e[d-1][2]>l;d--)e[d]=e[d-1];e[d]=[i,s,l]},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,{a:e}),e},n.d=function(t,e){for(var i in e)n.o(e,i)&&!n.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.nmd=function(t){return t.paths=[],t.children||(t.children=[]),t},n.j=9698,function(){n.b=document.baseURI||self.location.href;var t={9698:0};n.O.j=function(e){return 0===t[e]};var e=function(e,i){var s,l,o=i[0],a=i[1],r=i[2],c=0;if(o.some((function(e){return 0!==t[e]}))){for(s in a)n.o(a,s)&&(n.m[s]=a[s]);if(r)var d=r(n)}for(e&&e(i);c<o.length;c++)l=o[c],n.o(t,l)&&t[l]&&t[l][0](),t[l]=0;return n.O(d)},i=self.webpackChunknextcloud=self.webpackChunknextcloud||[];i.forEach(e.bind(null,0)),i.push=e.bind(null,i.push.bind(i))}(),n.nc=void 0;var l=n.O(void 0,[7874],(function(){return n(19294)}));l=n.O(l)}();
-//# sourceMappingURL=systemtags-systemtags.js.map?v=09ca34ac12845f496bce \ No newline at end of file
+!function(){var e,i={30213:function(){OCA.SystemTags||(OCA.SystemTags={}),OCA.SystemTags.App={initFileList:function(e){if(this._fileList)return this._fileList;var i=new URL(window.location.href).searchParams.get("tags"),s=i?i.split(",").map(parseInt):[];return this._fileList=new OCA.SystemTags.FileList(e,{id:"systemtags",fileActions:this._createFileActions(),config:OCA.Files.App.getFilesConfig(),shown:!0,systemTagIds:s}),this._fileList.appName=t("systemtags","Tags"),this._fileList},removeFileList:function(){this._fileList&&this._fileList.$fileList.empty()},_createFileActions:function(){var t=new OCA.Files.FileActions;return t.registerDefaultActions(),t.merge(OCA.Files.fileActions),this._globalActionsInitialized||(this._onActionsUpdated=_.bind(this._onActionsUpdated,this),OCA.Files.fileActions.on("setDefault.app-systemtags",this._onActionsUpdated),OCA.Files.fileActions.on("registerAction.app-systemtags",this._onActionsUpdated),this._globalActionsInitialized=!0),t.register("dir","Open",OC.PERMISSION_READ,"",(function(t,e){OCA.Files.App.setActiveView("files",{silent:!0}),OCA.Files.App.fileList.changeDirectory(OC.joinPaths(e.$file.attr("data-path"),t),!0,!0)})),t.setDefault("dir","Open"),t},_onActionsUpdated:function(t){this._fileList&&(t.action?this._fileList.fileActions.registerAction(t.action):t.defaultAction&&this._fileList.fileActions.setDefault(t.defaultAction.mime,t.defaultAction.name))},destroy:function(){OCA.Files.fileActions.off("setDefault.app-systemtags",this._onActionsUpdated),OCA.Files.fileActions.off("registerAction.app-systemtags",this._onActionsUpdated),this.removeFileList(),this._fileList=null,delete this._globalActionsInitialized}},window.addEventListener("DOMContentLoaded",(function(){$("#app-content-systemtagsfilter").on("show",(function(t){OCA.SystemTags.App.initFileList($(t.target))})),$("#app-content-systemtagsfilter").on("hide",(function(){OCA.SystemTags.App.removeFileList()}))}))},22609:function(){OCA.SystemTags=_.extend({},OCA.SystemTags),OCA.SystemTags||(OCA.SystemTags={}),OCA.SystemTags.FilesPlugin={ignoreLists:["trashbin","files.public"],attach:function(t){if(!(this.ignoreLists.indexOf(t.id)>=0||OCA.SystemTags.View)){var e=new OCA.SystemTags.SystemTagsInfoView;t.registerDetailView(e),OCA.SystemTags.View=e}}},OC.Plugins.register("OCA.Files.FileList",OCA.SystemTags.FilesPlugin)},19294:function(t,e,i){"use strict";i(30213),i(99641),i(22609),i(36670);var s=i(93379),n=i.n(s),l=i(7795),o=i.n(l),a=i(90569),r=i.n(a),c=i(3565),d=i.n(c),f=i(19216),u=i.n(f),h=i(44589),g=i.n(h),p=i(79891),m={};m.styleTagTransform=g(),m.setAttributes=d(),m.insert=r().bind(null,"head"),m.domAPI=o(),m.insertStyleElement=u(),n()(p.Z,m),p.Z&&p.Z.locals&&p.Z.locals,window.OCA.SystemTags=OCA.SystemTags},99641:function(){var e;(e=function(t,e){this.initialize(t,e)}).prototype=_.extend({},OCA.Files.FileList.prototype,{id:"systemtagsfilter",appName:t("systemtags","Tagged files"),_systemTagIds:[],_lastUsedTags:[],_clientSideSort:!0,_allowSelection:!1,_filterField:null,initialize:function(t,e){if(OCA.Files.FileList.prototype.initialize.apply(this,arguments),!this.initialized){e&&e.systemTagIds&&(this._systemTagIds=e.systemTagIds),OC.Plugins.attach("OCA.SystemTags.FileList",this);var i=this.$el.find(".files-controls").empty();_.defer(_.bind(this._getLastUsedTags,this)),this._initFilterField(i)}},destroy:function(){this.$filterField.remove(),OCA.Files.FileList.prototype.destroy.apply(this,arguments)},_getLastUsedTags:function(){var t=this;$.ajax({type:"GET",url:OC.generateUrl("/apps/systemtags/lastused"),success:function(e){t._lastUsedTags=e}})},_initFilterField:function(e){var i=this;return this.$filterField=$('<input type="hidden" name="tags"/>'),this.$filterField.val(this._systemTagIds.join(",")),e.append(this.$filterField),this.$filterField.select2({placeholder:t("systemtags","Select tags to filter by"),allowClear:!1,multiple:!0,toggleSelect:!0,separator:",",query:_.bind(this._queryTagsAutocomplete,this),id:function(t){return t.id},initSelection:function(t,e){var s=$(t).val().trim();if(s){var n=s.split(","),l=[];OC.SystemTags.collection.fetch({success:function(){_.each(n,(function(t){var e=OC.SystemTags.collection.get(t);_.isUndefined(e)||l.push(e.toJSON())})),e(l),i._onTagsChanged({target:t})}})}else e([])},formatResult:function(t){return OC.SystemTags.getDescriptiveTag(t)},formatSelection:function(t){return OC.SystemTags.getDescriptiveTag(t)[0].outerHTML},sortResults:function(t){return t.sort((function(t,e){var s=i._lastUsedTags.indexOf(t.id),n=i._lastUsedTags.indexOf(e.id);return s!==n?-1===n?-1:-1===s?1:s<n?-1:1:OC.Util.naturalSortCompare(t.name,e.name)})),t},escapeMarkup:function(t){return t},formatNoMatches:function(){return t("systemtags","No tags found")}}),this.$filterField.on("change",_.bind(this._onTagsChanged,this)),this.$filterField},_queryTagsAutocomplete:function(t){OC.SystemTags.collection.fetch({success:function(){var e=OC.SystemTags.collection.filterByName(t.term);t.callback({results:_.invoke(e,"toJSON")})}})},_onUrlChanged:function(t){if(t.dir){var e=_.filter(t.dir.split("/"),(function(t){return""!==t.trim()}));this.$filterField.select2("val",e||[]),this._systemTagIds=e,this.reload()}},_onTagsChanged:function(t){var e=$(t.target).val().trim();this._systemTagIds=""!==e?e.split(","):[],this.$el.trigger($.Event("changeDirectory",{dir:this._systemTagIds.join("/")})),this.reload()},updateEmptyContent:function(){var e=this.getCurrentDirectory();"/"===e?(this._systemTagIds.length?this.$el.find(".emptyfilelist.emptycontent").html('<div class="icon-systemtags"></div><h2>'+t("systemtags","No files found for the selected tags")+"</h2>"):this.$el.find(".emptyfilelist.emptycontent").html('<div class="icon-systemtags"></div><h2>'+t("systemtags","Please select tags to filter by")+"</h2>"),this.$el.find(".emptyfilelist.emptycontent").toggleClass("hidden",!this.isEmpty),this.$el.find(".files-filestable thead th").toggleClass("hidden",this.isEmpty)):OCA.Files.FileList.prototype.updateEmptyContent.apply(this,arguments)},getDirectoryPermissions:function(){return OC.PERMISSION_READ|OC.PERMISSION_DELETE},updateStorageStatistics:function(){},reload:function(){if(this._setCurrentDir("/",!1),!this._systemTagIds.length)return this.updateEmptyContent(),this.setFiles([]),$.Deferred().resolve();this._selectedFiles={},this._selectionSummary.clear(),this._currentFileModel&&this._currentFileModel.off(),this._currentFileModel=null,this.$el.find(".select-all").prop("checked",!1),this.showMask(),this._reloadCall=this.filesClient.getFilteredFiles({systemTagIds:this._systemTagIds},{properties:this._getWebdavProperties()}),this._detailsView&&this._updateDetailsView(null);var t=this.reloadCallback.bind(this);return this._reloadCall.then(t,t)},reloadCallback:function(t,e){return e&&e.unshift({}),OCA.Files.FileList.prototype.reloadCallback.call(this,t,e)}}),OCA.SystemTags.FileList=e},36670:function(){!function(t){function e(t){var e=t.toJSON();return OC.isUserAdmin()||e.canAssign||(e.locked=!0),e}var i=t.Files.DetailFileInfoView.extend({_rendered:!1,className:"systemTagsInfoView",name:"systemTags",id:"systemTagsInfoView",_inputView:null,initialize:function(t){var i=this;t=t||{},this._inputView=new OC.SystemTags.SystemTagsInputField({multiple:!0,allowActions:!0,allowCreate:!0,isAdmin:OC.isUserAdmin(),initSelection:function(t,s){s(i.selectedTagsCollection.map(e))}}),this.selectedTagsCollection=new OC.SystemTags.SystemTagsMappingCollection([],{objectType:"files"}),this._inputView.collection.on("change:name",this._onTagRenamedGlobally,this),this._inputView.collection.on("remove",this._onTagDeletedGlobally,this),this._inputView.on("select",this._onSelectTag,this),this._inputView.on("deselect",this._onDeselectTag,this)},_onSelectTag:function(t){this.selectedTagsCollection.create(t.toJSON())},_onDeselectTag:function(t){this.selectedTagsCollection.get(t).destroy()},_onTagRenamedGlobally:function(t){var e=this.selectedTagsCollection.get(t.id);e&&e.set(t.toJSON())},_onTagDeletedGlobally:function(t){this.selectedTagsCollection.remove(t)},setFileInfo:function(t){var i=this;this._rendered||this.render(),t&&(this.selectedTagsCollection.setObjectId(t.id),this.selectedTagsCollection.fetch({success:function(t){t.fetched=!0;var s=t.map(e);i._inputView.setData(s),s.length>0&&i.show()}})),this.hide()},render:function(){this.$el.append(this._inputView.$el),this._inputView.render()},isVisible:function(){return!this.$el.hasClass("hidden")},show:function(){this.$el.removeClass("hidden")},hide:function(){this.$el.addClass("hidden")},toggle:function(){this.$el.toggleClass("hidden")},openDropdown:function(){this.$el.find(".systemTagsInputField").select2("open")},remove:function(){this._inputView.remove()}});t.SystemTags.SystemTagsInfoView=i}(OCA)},79891:function(t,e,i){"use strict";var s=i(87537),n=i.n(s),l=i(23645),o=i.n(l)()(n());o.push([t.id,"#app-content-systemtagsfilter .select2-container{width:30%;margin-left:10px}#app-sidebar .app-sidebar-header__action .tag-label{cursor:pointer;padding:13px 0;display:flex;color:var(--color-text-light);position:relative;margin-top:-20px}","",{version:3,sources:["webpack://./apps/systemtags/src/css/systemtagsfilelist.scss"],names:[],mappings:"AASA,iDACC,SAAA,CACA,gBAAA,CAGD,oDACC,cAAA,CACA,cAAA,CACA,YAAA,CACA,6BAAA,CACA,iBAAA,CACA,gBAAA",sourcesContent:["/*\n * Copyright (c) 2016\n *\n * This file is licensed under the Affero General Public License version 3\n * or later.\n *\n * See the COPYING-README file.\n *\n */\n#app-content-systemtagsfilter .select2-container {\n\twidth: 30%;\n\tmargin-left: 10px;\n}\n\n#app-sidebar .app-sidebar-header__action .tag-label {\n\tcursor: pointer;\n\tpadding: 13px 0;\n\tdisplay: flex;\n\tcolor: var(--color-text-light);\n\tposition: relative;\n\tmargin-top: -20px;\n}\n"],sourceRoot:""}]),e.Z=o}},s={};function n(t){var e=s[t];if(void 0!==e)return e.exports;var l=s[t]={id:t,loaded:!1,exports:{}};return i[t].call(l.exports,l,l.exports,n),l.loaded=!0,l.exports}n.m=i,n.amdD=function(){throw new Error("define cannot be used indirect")},n.amdO={},e=[],n.O=function(t,i,s,l){if(!i){var o=1/0;for(d=0;d<e.length;d++){i=e[d][0],s=e[d][1],l=e[d][2];for(var a=!0,r=0;r<i.length;r++)(!1&l||o>=l)&&Object.keys(n.O).every((function(t){return n.O[t](i[r])}))?i.splice(r--,1):(a=!1,l<o&&(o=l));if(a){e.splice(d--,1);var c=s();void 0!==c&&(t=c)}}return t}l=l||0;for(var d=e.length;d>0&&e[d-1][2]>l;d--)e[d]=e[d-1];e[d]=[i,s,l]},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,{a:e}),e},n.d=function(t,e){for(var i in e)n.o(e,i)&&!n.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.nmd=function(t){return t.paths=[],t.children||(t.children=[]),t},n.j=9698,function(){n.b=document.baseURI||self.location.href;var t={9698:0};n.O.j=function(e){return 0===t[e]};var e=function(e,i){var s,l,o=i[0],a=i[1],r=i[2],c=0;if(o.some((function(e){return 0!==t[e]}))){for(s in a)n.o(a,s)&&(n.m[s]=a[s]);if(r)var d=r(n)}for(e&&e(i);c<o.length;c++)l=o[c],n.o(t,l)&&t[l]&&t[l][0](),t[l]=0;return n.O(d)},i=self.webpackChunknextcloud=self.webpackChunknextcloud||[];i.forEach(e.bind(null,0)),i.push=e.bind(null,i.push.bind(i))}(),n.nc=void 0;var l=n.O(void 0,[7874],(function(){return n(19294)}));l=n.O(l)}();
+//# sourceMappingURL=systemtags-systemtags.js.map?v=b5490aeedeca63f0aa20 \ No newline at end of file
diff --git a/dist/systemtags-systemtags.js.map b/dist/systemtags-systemtags.js.map
index 32a8ef42727..a2b9fdf8f07 100644
--- a/dist/systemtags-systemtags.js.map
+++ b/dist/systemtags-systemtags.js.map
@@ -1 +1 @@
-{"version":3,"file":"systemtags-systemtags.js?v=09ca34ac12845f496bce","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/systemtags/src/app.js","webpack:///nextcloud/apps/systemtags/src/filesplugin.js","webpack://nextcloud/./apps/systemtags/src/css/systemtagsfilelist.scss?3cf4","webpack:///nextcloud/apps/systemtags/src/systemtags.js","webpack:///nextcloud/apps/systemtags/src/systemtagsfilelist.js","webpack:///nextcloud/apps/systemtags/src/systemtagsinfoview.js","webpack:///nextcloud/apps/systemtags/src/css/systemtagsfilelist.scss","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/amd define","webpack:///nextcloud/webpack/runtime/amd options","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(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(function(key) { return __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 (c) 2015 Vincent Petry <pvince81@owncloud.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n(function() {\n\tif (!OCA.SystemTags) {\n\t\t/**\n\t\t * @namespace\n\t\t */\n\t\tOCA.SystemTags = {}\n\t}\n\n\tOCA.SystemTags.App = {\n\n\t\tinitFileList($el) {\n\t\t\tif (this._fileList) {\n\t\t\t\treturn this._fileList\n\t\t\t}\n\n\t\t\tconst tagsParam = (new URL(window.location.href)).searchParams.get('tags')\n\t\t\tconst initialTags = tagsParam ? tagsParam.split(',').map(parseInt) : []\n\n\t\t\tthis._fileList = new OCA.SystemTags.FileList(\n\t\t\t\t$el,\n\t\t\t\t{\n\t\t\t\t\tid: 'systemtags',\n\t\t\t\t\tfileActions: this._createFileActions(),\n\t\t\t\t\tconfig: OCA.Files.App.getFilesConfig(),\n\t\t\t\t\t// The file list is created when a \"show\" event is handled,\n\t\t\t\t\t// so it should be marked as \"shown\" like it would have been\n\t\t\t\t\t// done if handling the event with the file list already\n\t\t\t\t\t// created.\n\t\t\t\t\tshown: true,\n\t\t\t\t\tsystemTagIds: initialTags,\n\t\t\t\t}\n\t\t\t)\n\n\t\t\tthis._fileList.appName = t('systemtags', 'Tags')\n\t\t\treturn this._fileList\n\t\t},\n\n\t\tremoveFileList() {\n\t\t\tif (this._fileList) {\n\t\t\t\tthis._fileList.$fileList.empty()\n\t\t\t}\n\t\t},\n\n\t\t_createFileActions() {\n\t\t\t// inherit file actions from the files app\n\t\t\tconst fileActions = new OCA.Files.FileActions()\n\t\t\t// note: not merging the legacy actions because legacy apps are not\n\t\t\t// compatible with the sharing overview and need to be adapted first\n\t\t\tfileActions.registerDefaultActions()\n\t\t\tfileActions.merge(OCA.Files.fileActions)\n\n\t\t\tif (!this._globalActionsInitialized) {\n\t\t\t\t// in case actions are registered later\n\t\t\t\tthis._onActionsUpdated = _.bind(this._onActionsUpdated, this)\n\t\t\t\tOCA.Files.fileActions.on('setDefault.app-systemtags', this._onActionsUpdated)\n\t\t\t\tOCA.Files.fileActions.on('registerAction.app-systemtags', this._onActionsUpdated)\n\t\t\t\tthis._globalActionsInitialized = true\n\t\t\t}\n\n\t\t\t// when the user clicks on a folder, redirect to the corresponding\n\t\t\t// folder in the files app instead of opening it directly\n\t\t\tfileActions.register('dir', 'Open', OC.PERMISSION_READ, '', function(filename, context) {\n\t\t\t\tOCA.Files.App.setActiveView('files', { silent: true })\n\t\t\t\tOCA.Files.App.fileList.changeDirectory(OC.joinPaths(context.$file.attr('data-path'), filename), true, true)\n\t\t\t})\n\t\t\tfileActions.setDefault('dir', 'Open')\n\t\t\treturn fileActions\n\t\t},\n\n\t\t_onActionsUpdated(ev) {\n\t\t\tif (!this._fileList) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (ev.action) {\n\t\t\t\tthis._fileList.fileActions.registerAction(ev.action)\n\t\t\t} else if (ev.defaultAction) {\n\t\t\t\tthis._fileList.fileActions.setDefault(\n\t\t\t\t\tev.defaultAction.mime,\n\t\t\t\t\tev.defaultAction.name\n\t\t\t\t)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Destroy the app\n\t\t */\n\t\tdestroy() {\n\t\t\tOCA.Files.fileActions.off('setDefault.app-systemtags', this._onActionsUpdated)\n\t\t\tOCA.Files.fileActions.off('registerAction.app-systemtags', this._onActionsUpdated)\n\t\t\tthis.removeFileList()\n\t\t\tthis._fileList = null\n\t\t\tdelete this._globalActionsInitialized\n\t\t},\n\t}\n\n})()\n\nwindow.addEventListener('DOMContentLoaded', function() {\n\t$('#app-content-systemtagsfilter').on('show', function(e) {\n\t\tOCA.SystemTags.App.initFileList($(e.target))\n\t})\n\t$('#app-content-systemtagsfilter').on('hide', function() {\n\t\tOCA.SystemTags.App.removeFileList()\n\t})\n})\n","/**\n * Copyright (c) 2015 Vincent Petry <pvince81@owncloud.com>\n *\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n(function() {\n\tOCA.SystemTags = _.extend({}, OCA.SystemTags)\n\tif (!OCA.SystemTags) {\n\t\t/**\n\t\t * @namespace\n\t\t */\n\t\tOCA.SystemTags = {}\n\t}\n\n\t/**\n\t * @namespace\n\t */\n\tOCA.SystemTags.FilesPlugin = {\n\t\tignoreLists: [\n\t\t\t'trashbin',\n\t\t\t'files.public',\n\t\t],\n\n\t\tattach(fileList) {\n\t\t\tif (this.ignoreLists.indexOf(fileList.id) >= 0) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// only create and attach once\n\t\t\t// FIXME: this should likely be done on a different code path now\n\t\t\t// for the sidebar to only have it registered once\n\t\t\tif (!OCA.SystemTags.View) {\n\t\t\t\tconst systemTagsInfoView = new OCA.SystemTags.SystemTagsInfoView()\n\t\t\t\tfileList.registerDetailView(systemTagsInfoView)\n\t\t\t\tOCA.SystemTags.View = systemTagsInfoView\n\t\t\t}\n\t\t},\n\t}\n\n})()\n\nOC.Plugins.register('OCA.Files.FileList', OCA.SystemTags.FilesPlugin)\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./systemtagsfilelist.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./systemtagsfilelist.scss\";\n export default content && content.locals ? content.locals : undefined;\n","/**\n * @copyright Copyright (c) 2016 Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport './app'\nimport './systemtagsfilelist'\nimport './filesplugin'\nimport './systemtagsinfoview'\nimport './css/systemtagsfilelist.scss'\n\nwindow.OCA.SystemTags = OCA.SystemTags\n","/**\n * Copyright (c) 2016 Vincent Petry <pvince81@owncloud.com>\n *\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n(function() {\n\t/**\n\t * @class OCA.SystemTags.FileList\n\t * @augments OCA.Files.FileList\n\t *\n\t * @classdesc SystemTags file list.\n\t * Contains a list of files filtered by system tags.\n\t *\n\t * @param {object} $el container element with existing markup for the #controls and a table\n\t * @param {Array} [options] map of options, see other parameters\n\t * @param {Array.<string>} [options.systemTagIds] array of system tag ids to\n\t * filter by\n\t */\n\tconst FileList = function($el, options) {\n\t\tthis.initialize($el, options)\n\t}\n\tFileList.prototype = _.extend(\n\t\t{},\n\t\tOCA.Files.FileList.prototype,\n\t\t/** @lends OCA.SystemTags.FileList.prototype */ {\n\t\t\tid: 'systemtagsfilter',\n\t\t\tappName: t('systemtags', 'Tagged files'),\n\n\t\t\t/**\n\t\t\t * Array of system tag ids to filter by\n\t\t\t *\n\t\t\t * @type {Array.<string>}\n\t\t\t */\n\t\t\t_systemTagIds: [],\n\t\t\t_lastUsedTags: [],\n\n\t\t\t_clientSideSort: true,\n\t\t\t_allowSelection: false,\n\n\t\t\t_filterField: null,\n\n\t\t\t/**\n\t\t\t * @private\n\t\t\t * @param {object} $el container element\n\t\t\t * @param {object} [options] map of options, see other parameters\n\t\t\t */\n\t\t\tinitialize($el, options) {\n\t\t\t\tOCA.Files.FileList.prototype.initialize.apply(this, arguments)\n\t\t\t\tif (this.initialized) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tif (options && options.systemTagIds) {\n\t\t\t\t\tthis._systemTagIds = options.systemTagIds\n\t\t\t\t}\n\n\t\t\t\tOC.Plugins.attach('OCA.SystemTags.FileList', this)\n\n\t\t\t\tconst $controls = this.$el.find('#controls').empty()\n\n\t\t\t\t_.defer(_.bind(this._getLastUsedTags, this))\n\t\t\t\tthis._initFilterField($controls)\n\t\t\t},\n\n\t\t\tdestroy() {\n\t\t\t\tthis.$filterField.remove()\n\n\t\t\t\tOCA.Files.FileList.prototype.destroy.apply(this, arguments)\n\t\t\t},\n\n\t\t\t_getLastUsedTags() {\n\t\t\t\tconst self = this\n\t\t\t\t$.ajax({\n\t\t\t\t\ttype: 'GET',\n\t\t\t\t\turl: OC.generateUrl('/apps/systemtags/lastused'),\n\t\t\t\t\tsuccess(response) {\n\t\t\t\t\t\tself._lastUsedTags = response\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t},\n\n\t\t\t_initFilterField($container) {\n\t\t\t\tconst self = this\n\t\t\t\tthis.$filterField = $('<input type=\"hidden\" name=\"tags\"/>')\n\t\t\t\tthis.$filterField.val(this._systemTagIds.join(','))\n\t\t\t\t$container.append(this.$filterField)\n\t\t\t\tthis.$filterField.select2({\n\t\t\t\t\tplaceholder: t('systemtags', 'Select tags to filter by'),\n\t\t\t\t\tallowClear: false,\n\t\t\t\t\tmultiple: true,\n\t\t\t\t\ttoggleSelect: true,\n\t\t\t\t\tseparator: ',',\n\t\t\t\t\tquery: _.bind(this._queryTagsAutocomplete, this),\n\n\t\t\t\t\tid(tag) {\n\t\t\t\t\t\treturn tag.id\n\t\t\t\t\t},\n\n\t\t\t\t\tinitSelection(element, callback) {\n\t\t\t\t\t\tconst val = $(element)\n\t\t\t\t\t\t\t.val()\n\t\t\t\t\t\t\t.trim()\n\t\t\t\t\t\tif (val) {\n\t\t\t\t\t\t\tconst tagIds = val.split(',')\n\t\t\t\t\t\t\tconst tags = []\n\n\t\t\t\t\t\t\tOC.SystemTags.collection.fetch({\n\t\t\t\t\t\t\t\tsuccess() {\n\t\t\t\t\t\t\t\t\t_.each(tagIds, function(tagId) {\n\t\t\t\t\t\t\t\t\t\tconst tag = OC.SystemTags.collection.get(\n\t\t\t\t\t\t\t\t\t\t\ttagId\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\tif (!_.isUndefined(tag)) {\n\t\t\t\t\t\t\t\t\t\t\ttags.push(tag.toJSON())\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\tcallback(tags)\n\t\t\t\t\t\t\t\t\tself._onTagsChanged({ target: element })\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// eslint-disable-next-line n/no-callback-literal\n\t\t\t\t\t\t\tcallback([])\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\n\t\t\t\t\tformatResult(tag) {\n\t\t\t\t\t\treturn OC.SystemTags.getDescriptiveTag(tag)\n\t\t\t\t\t},\n\n\t\t\t\t\tformatSelection(tag) {\n\t\t\t\t\t\treturn OC.SystemTags.getDescriptiveTag(tag)[0]\n\t\t\t\t\t\t\t.outerHTML\n\t\t\t\t\t},\n\n\t\t\t\t\tsortResults(results) {\n\t\t\t\t\t\tresults.sort(function(a, b) {\n\t\t\t\t\t\t\tconst aLastUsed = self._lastUsedTags.indexOf(a.id)\n\t\t\t\t\t\t\tconst bLastUsed = self._lastUsedTags.indexOf(b.id)\n\n\t\t\t\t\t\t\tif (aLastUsed !== bLastUsed) {\n\t\t\t\t\t\t\t\tif (bLastUsed === -1) {\n\t\t\t\t\t\t\t\t\treturn -1\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (aLastUsed === -1) {\n\t\t\t\t\t\t\t\t\treturn 1\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn aLastUsed < bLastUsed ? -1 : 1\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Both not found\n\t\t\t\t\t\t\treturn OC.Util.naturalSortCompare(a.name, b.name)\n\t\t\t\t\t\t})\n\t\t\t\t\t\treturn results\n\t\t\t\t\t},\n\n\t\t\t\t\tescapeMarkup(m) {\n\t\t\t\t\t\t// prevent double markup escape\n\t\t\t\t\t\treturn m\n\t\t\t\t\t},\n\t\t\t\t\tformatNoMatches() {\n\t\t\t\t\t\treturn t('systemtags', 'No tags found')\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tthis.$filterField.on(\n\t\t\t\t\t'change',\n\t\t\t\t\t_.bind(this._onTagsChanged, this)\n\t\t\t\t)\n\t\t\t\treturn this.$filterField\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Autocomplete function for dropdown results\n\t\t\t *\n\t\t\t * @param {object} query select2 query object\n\t\t\t */\n\t\t\t_queryTagsAutocomplete(query) {\n\t\t\t\tOC.SystemTags.collection.fetch({\n\t\t\t\t\tsuccess() {\n\t\t\t\t\t\tconst results = OC.SystemTags.collection.filterByName(\n\t\t\t\t\t\t\tquery.term\n\t\t\t\t\t\t)\n\n\t\t\t\t\t\tquery.callback({\n\t\t\t\t\t\t\tresults: _.invoke(results, 'toJSON'),\n\t\t\t\t\t\t})\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Event handler for when the URL changed\n\t\t\t *\n\t\t\t * @param {Event} e the urlchanged event\n\t\t\t */\n\t\t\t_onUrlChanged(e) {\n\t\t\t\tif (e.dir) {\n\t\t\t\t\tconst tags = _.filter(e.dir.split('/'), function(val) {\n\t\t\t\t\t\treturn val.trim() !== ''\n\t\t\t\t\t})\n\t\t\t\t\tthis.$filterField.select2('val', tags || [])\n\t\t\t\t\tthis._systemTagIds = tags\n\t\t\t\t\tthis.reload()\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t_onTagsChanged(ev) {\n\t\t\t\tconst val = $(ev.target)\n\t\t\t\t\t.val()\n\t\t\t\t\t.trim()\n\t\t\t\tif (val !== '') {\n\t\t\t\t\tthis._systemTagIds = val.split(',')\n\t\t\t\t} else {\n\t\t\t\t\tthis._systemTagIds = []\n\t\t\t\t}\n\n\t\t\t\tthis.$el.trigger(\n\t\t\t\t\t$.Event('changeDirectory', {\n\t\t\t\t\t\tdir: this._systemTagIds.join('/'),\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t\tthis.reload()\n\t\t\t},\n\n\t\t\tupdateEmptyContent() {\n\t\t\t\tconst dir = this.getCurrentDirectory()\n\t\t\t\tif (dir === '/') {\n\t\t\t\t\t// root has special permissions\n\t\t\t\t\tif (!this._systemTagIds.length) {\n\t\t\t\t\t\t// no tags selected\n\t\t\t\t\t\tthis.$el\n\t\t\t\t\t\t\t.find('#emptycontent')\n\t\t\t\t\t\t\t.html(\n\t\t\t\t\t\t\t\t'<div class=\"icon-systemtags\"></div>'\n\t\t\t\t\t\t\t\t\t+ '<h2>'\n\t\t\t\t\t\t\t\t\t+ t(\n\t\t\t\t\t\t\t\t\t\t'systemtags',\n\t\t\t\t\t\t\t\t\t\t'Please select tags to filter by'\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t+ '</h2>'\n\t\t\t\t\t\t\t)\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// tags selected but no results\n\t\t\t\t\t\tthis.$el\n\t\t\t\t\t\t\t.find('#emptycontent')\n\t\t\t\t\t\t\t.html(\n\t\t\t\t\t\t\t\t'<div class=\"icon-systemtags\"></div>'\n\t\t\t\t\t\t\t\t\t+ '<h2>'\n\t\t\t\t\t\t\t\t\t+ t(\n\t\t\t\t\t\t\t\t\t\t'systemtags',\n\t\t\t\t\t\t\t\t\t\t'No files found for the selected tags'\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t+ '</h2>'\n\t\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\tthis.$el\n\t\t\t\t\t\t.find('#emptycontent')\n\t\t\t\t\t\t.toggleClass('hidden', !this.isEmpty)\n\t\t\t\t\tthis.$el\n\t\t\t\t\t\t.find('#filestable thead th')\n\t\t\t\t\t\t.toggleClass('hidden', this.isEmpty)\n\t\t\t\t} else {\n\t\t\t\t\tOCA.Files.FileList.prototype.updateEmptyContent.apply(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\targuments\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tgetDirectoryPermissions() {\n\t\t\t\treturn OC.PERMISSION_READ | OC.PERMISSION_DELETE\n\t\t\t},\n\n\t\t\tupdateStorageStatistics() {\n\t\t\t\t// no op because it doesn't have\n\t\t\t\t// storage info like free space / used space\n\t\t\t},\n\n\t\t\treload() {\n\t\t\t\t// there is only root\n\t\t\t\tthis._setCurrentDir('/', false)\n\n\t\t\t\tif (!this._systemTagIds.length) {\n\t\t\t\t\t// don't reload\n\t\t\t\t\tthis.updateEmptyContent()\n\t\t\t\t\tthis.setFiles([])\n\t\t\t\t\treturn $.Deferred().resolve()\n\t\t\t\t}\n\n\t\t\t\tthis._selectedFiles = {}\n\t\t\t\tthis._selectionSummary.clear()\n\t\t\t\tif (this._currentFileModel) {\n\t\t\t\t\tthis._currentFileModel.off()\n\t\t\t\t}\n\t\t\t\tthis._currentFileModel = null\n\t\t\t\tthis.$el.find('.select-all').prop('checked', false)\n\t\t\t\tthis.showMask()\n\t\t\t\tthis._reloadCall = this.filesClient.getFilteredFiles(\n\t\t\t\t\t{\n\t\t\t\t\t\tsystemTagIds: this._systemTagIds,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tproperties: this._getWebdavProperties(),\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t\tif (this._detailsView) {\n\t\t\t\t\t// close sidebar\n\t\t\t\t\tthis._updateDetailsView(null)\n\t\t\t\t}\n\t\t\t\tconst callBack = this.reloadCallback.bind(this)\n\t\t\t\treturn this._reloadCall.then(callBack, callBack)\n\t\t\t},\n\n\t\t\treloadCallback(status, result) {\n\t\t\t\tif (result) {\n\t\t\t\t\t// prepend empty dir info because original handler\n\t\t\t\t\tresult.unshift({})\n\t\t\t\t}\n\n\t\t\t\treturn OCA.Files.FileList.prototype.reloadCallback.call(\n\t\t\t\t\tthis,\n\t\t\t\t\tstatus,\n\t\t\t\t\tresult\n\t\t\t\t)\n\t\t\t},\n\t\t}\n\t)\n\n\tOCA.SystemTags.FileList = FileList\n})()\n","/**\n * Copyright (c) 2015\n *\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n(function(OCA) {\n\n\t/**\n\t * @param {any} model -\n\t */\n\tfunction modelToSelection(model) {\n\t\tconst data = model.toJSON()\n\t\tif (!OC.isUserAdmin() && !data.canAssign) {\n\t\t\tdata.locked = true\n\t\t}\n\t\treturn data\n\t}\n\n\t/**\n\t * @class OCA.SystemTags.SystemTagsInfoView\n\t * @classdesc\n\t *\n\t * Displays a file's system tags\n\t *\n\t */\n\tconst SystemTagsInfoView = OCA.Files.DetailFileInfoView.extend(\n\t\t/** @lends OCA.SystemTags.SystemTagsInfoView.prototype */ {\n\n\t\t\t_rendered: false,\n\n\t\t\tclassName: 'systemTagsInfoView',\n\t\t\tname: 'systemTags',\n\n\t\t\t/* required by the new files sidebar to check if the view is unique */\n\t\t\tid: 'systemTagsInfoView',\n\n\t\t\t/**\n\t\t\t * @type {OC.SystemTags.SystemTagsInputField}\n\t\t\t */\n\t\t\t_inputView: null,\n\n\t\t\tinitialize(options) {\n\t\t\t\tconst self = this\n\t\t\t\toptions = options || {}\n\n\t\t\t\tthis._inputView = new OC.SystemTags.SystemTagsInputField({\n\t\t\t\t\tmultiple: true,\n\t\t\t\t\tallowActions: true,\n\t\t\t\t\tallowCreate: true,\n\t\t\t\t\tisAdmin: OC.isUserAdmin(),\n\t\t\t\t\tinitSelection(element, callback) {\n\t\t\t\t\t\tcallback(self.selectedTagsCollection.map(modelToSelection))\n\t\t\t\t\t},\n\t\t\t\t})\n\n\t\t\t\tthis.selectedTagsCollection = new OC.SystemTags.SystemTagsMappingCollection([], { objectType: 'files' })\n\n\t\t\t\tthis._inputView.collection.on('change:name', this._onTagRenamedGlobally, this)\n\t\t\t\tthis._inputView.collection.on('remove', this._onTagDeletedGlobally, this)\n\n\t\t\t\tthis._inputView.on('select', this._onSelectTag, this)\n\t\t\t\tthis._inputView.on('deselect', this._onDeselectTag, this)\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Event handler whenever a tag was selected\n\t\t\t *\n\t\t\t * @param {object} tag the tag to create\n\t\t\t */\n\t\t\t_onSelectTag(tag) {\n\t\t\t// create a mapping entry for this tag\n\t\t\t\tthis.selectedTagsCollection.create(tag.toJSON())\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Event handler whenever a tag gets deselected.\n\t\t\t * Removes the selected tag from the mapping collection.\n\t\t\t *\n\t\t\t * @param {string} tagId tag id\n\t\t\t */\n\t\t\t_onDeselectTag(tagId) {\n\t\t\t\tthis.selectedTagsCollection.get(tagId).destroy()\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Event handler whenever a tag was renamed globally.\n\t\t\t *\n\t\t\t * This will automatically adjust the tag mapping collection to\n\t\t\t * container the new name.\n\t\t\t *\n\t\t\t * @param {OC.Backbone.Model} changedTag tag model that has changed\n\t\t\t */\n\t\t\t_onTagRenamedGlobally(changedTag) {\n\t\t\t// also rename it in the selection, if applicable\n\t\t\t\tconst selectedTagMapping = this.selectedTagsCollection.get(changedTag.id)\n\t\t\t\tif (selectedTagMapping) {\n\t\t\t\t\tselectedTagMapping.set(changedTag.toJSON())\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Event handler whenever a tag was deleted globally.\n\t\t\t *\n\t\t\t * This will automatically adjust the tag mapping collection to\n\t\t\t * container the new name.\n\t\t\t *\n\t\t\t * @param {OC.Backbone.Model} tagId tag model that has changed\n\t\t\t */\n\t\t\t_onTagDeletedGlobally(tagId) {\n\t\t\t// also rename it in the selection, if applicable\n\t\t\t\tthis.selectedTagsCollection.remove(tagId)\n\t\t\t},\n\n\t\t\tsetFileInfo(fileInfo) {\n\t\t\t\tconst self = this\n\t\t\t\tif (!this._rendered) {\n\t\t\t\t\tthis.render()\n\t\t\t\t}\n\n\t\t\t\tif (fileInfo) {\n\t\t\t\t\tthis.selectedTagsCollection.setObjectId(fileInfo.id)\n\t\t\t\t\tthis.selectedTagsCollection.fetch({\n\t\t\t\t\t\tsuccess(collection) {\n\t\t\t\t\t\t\tcollection.fetched = true\n\n\t\t\t\t\t\t\tconst appliedTags = collection.map(modelToSelection)\n\t\t\t\t\t\t\tself._inputView.setData(appliedTags)\n\t\t\t\t\t\t\tif (appliedTags.length > 0) {\n\t\t\t\t\t\t\t\tself.show()\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}\n\n\t\t\t\tthis.hide()\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Renders this details view\n\t\t\t */\n\t\t\trender() {\n\t\t\t\tthis.$el.append(this._inputView.$el)\n\t\t\t\tthis._inputView.render()\n\t\t\t},\n\n\t\t\tisVisible() {\n\t\t\t\treturn !this.$el.hasClass('hidden')\n\t\t\t},\n\n\t\t\tshow() {\n\t\t\t\tthis.$el.removeClass('hidden')\n\t\t\t},\n\n\t\t\thide() {\n\t\t\t\tthis.$el.addClass('hidden')\n\t\t\t},\n\n\t\t\ttoggle() {\n\t\t\t\tthis.$el.toggleClass('hidden')\n\t\t\t},\n\n\t\t\topenDropdown() {\n\t\t\t\tthis.$el.find('.systemTagsInputField').select2('open')\n\t\t\t},\n\n\t\t\tremove() {\n\t\t\t\tthis._inputView.remove()\n\t\t\t},\n\t\t})\n\n\tOCA.SystemTags.SystemTagsInfoView = SystemTagsInfoView\n\n})(OCA)\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#app-content-systemtagsfilter .select2-container{width:30%;margin-left:10px}#app-sidebar .app-sidebar-header__action .tag-label{cursor:pointer;padding:13px 0;display:flex;color:var(--color-text-light);position:relative;margin-top:-20px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/systemtags/src/css/systemtagsfilelist.scss\"],\"names\":[],\"mappings\":\"AASA,iDACC,SAAA,CACA,gBAAA,CAGD,oDACC,cAAA,CACA,cAAA,CACA,YAAA,CACA,6BAAA,CACA,iBAAA,CACA,gBAAA\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2016\\n *\\n * This file is licensed under the Affero General Public License version 3\\n * or later.\\n *\\n * See the COPYING-README file.\\n *\\n */\\n#app-content-systemtagsfilter .select2-container {\\n\\twidth: 30%;\\n\\tmargin-left: 10px;\\n}\\n\\n#app-sidebar .app-sidebar-header__action .tag-label {\\n\\tcursor: pointer;\\n\\tpadding: 13px 0;\\n\\tdisplay: flex;\\n\\tcolor: var(--color-text-light);\\n\\tposition: relative;\\n\\tmargin-top: -20px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(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 = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 9698;","__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\t9698: 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 = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(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(function(id) { return 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], function() { return __webpack_require__(19294); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","OCA","SystemTags","App","initFileList","$el","this","_fileList","tagsParam","URL","window","location","href","searchParams","get","initialTags","split","map","parseInt","FileList","id","fileActions","_createFileActions","config","Files","getFilesConfig","shown","systemTagIds","appName","t","removeFileList","$fileList","empty","FileActions","registerDefaultActions","merge","_globalActionsInitialized","_onActionsUpdated","_","bind","on","register","OC","PERMISSION_READ","filename","context","setActiveView","silent","fileList","changeDirectory","joinPaths","$file","attr","setDefault","ev","action","registerAction","defaultAction","mime","name","destroy","off","addEventListener","$","e","target","extend","FilesPlugin","ignoreLists","attach","indexOf","View","systemTagsInfoView","SystemTagsInfoView","registerDetailView","Plugins","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","initialize","prototype","_systemTagIds","_lastUsedTags","_clientSideSort","_allowSelection","_filterField","apply","arguments","initialized","$controls","find","defer","_getLastUsedTags","_initFilterField","$filterField","remove","self","ajax","type","url","generateUrl","success","response","$container","val","join","append","select2","placeholder","allowClear","multiple","toggleSelect","separator","query","_queryTagsAutocomplete","tag","initSelection","element","callback","trim","tagIds","tags","collection","fetch","each","tagId","isUndefined","push","toJSON","_onTagsChanged","formatResult","getDescriptiveTag","formatSelection","outerHTML","sortResults","results","sort","a","b","aLastUsed","bLastUsed","Util","naturalSortCompare","escapeMarkup","m","formatNoMatches","filterByName","term","invoke","_onUrlChanged","dir","filter","reload","trigger","Event","updateEmptyContent","getCurrentDirectory","length","html","toggleClass","isEmpty","getDirectoryPermissions","PERMISSION_DELETE","updateStorageStatistics","_setCurrentDir","setFiles","Deferred","resolve","_selectedFiles","_selectionSummary","clear","_currentFileModel","prop","showMask","_reloadCall","filesClient","getFilteredFiles","properties","_getWebdavProperties","_detailsView","_updateDetailsView","callBack","reloadCallback","then","status","result","unshift","call","modelToSelection","model","data","isUserAdmin","canAssign","locked","DetailFileInfoView","_rendered","className","_inputView","SystemTagsInputField","allowActions","allowCreate","isAdmin","selectedTagsCollection","SystemTagsMappingCollection","objectType","_onTagRenamedGlobally","_onTagDeletedGlobally","_onSelectTag","_onDeselectTag","create","changedTag","selectedTagMapping","set","setFileInfo","fileInfo","render","setObjectId","fetched","appliedTags","setData","show","hide","isVisible","hasClass","removeClass","addClass","toggle","openDropdown","___CSS_LOADER_EXPORT___","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","amdD","Error","amdO","O","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","definition","o","defineProperty","enumerable","g","globalThis","Function","obj","hasOwnProperty","Symbol","toStringTag","value","nmd","paths","children","document","baseURI","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"systemtags-systemtags.js?v=b5490aeedeca63f0aa20","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/systemtags/src/app.js","webpack:///nextcloud/apps/systemtags/src/filesplugin.js","webpack://nextcloud/./apps/systemtags/src/css/systemtagsfilelist.scss?3cf4","webpack:///nextcloud/apps/systemtags/src/systemtags.js","webpack:///nextcloud/apps/systemtags/src/systemtagsfilelist.js","webpack:///nextcloud/apps/systemtags/src/systemtagsinfoview.js","webpack:///nextcloud/apps/systemtags/src/css/systemtagsfilelist.scss","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/amd define","webpack:///nextcloud/webpack/runtime/amd options","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(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(function(key) { return __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 (c) 2015 Vincent Petry <pvince81@owncloud.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n(function() {\n\tif (!OCA.SystemTags) {\n\t\t/**\n\t\t * @namespace\n\t\t */\n\t\tOCA.SystemTags = {}\n\t}\n\n\tOCA.SystemTags.App = {\n\n\t\tinitFileList($el) {\n\t\t\tif (this._fileList) {\n\t\t\t\treturn this._fileList\n\t\t\t}\n\n\t\t\tconst tagsParam = (new URL(window.location.href)).searchParams.get('tags')\n\t\t\tconst initialTags = tagsParam ? tagsParam.split(',').map(parseInt) : []\n\n\t\t\tthis._fileList = new OCA.SystemTags.FileList(\n\t\t\t\t$el,\n\t\t\t\t{\n\t\t\t\t\tid: 'systemtags',\n\t\t\t\t\tfileActions: this._createFileActions(),\n\t\t\t\t\tconfig: OCA.Files.App.getFilesConfig(),\n\t\t\t\t\t// The file list is created when a \"show\" event is handled,\n\t\t\t\t\t// so it should be marked as \"shown\" like it would have been\n\t\t\t\t\t// done if handling the event with the file list already\n\t\t\t\t\t// created.\n\t\t\t\t\tshown: true,\n\t\t\t\t\tsystemTagIds: initialTags,\n\t\t\t\t}\n\t\t\t)\n\n\t\t\tthis._fileList.appName = t('systemtags', 'Tags')\n\t\t\treturn this._fileList\n\t\t},\n\n\t\tremoveFileList() {\n\t\t\tif (this._fileList) {\n\t\t\t\tthis._fileList.$fileList.empty()\n\t\t\t}\n\t\t},\n\n\t\t_createFileActions() {\n\t\t\t// inherit file actions from the files app\n\t\t\tconst fileActions = new OCA.Files.FileActions()\n\t\t\t// note: not merging the legacy actions because legacy apps are not\n\t\t\t// compatible with the sharing overview and need to be adapted first\n\t\t\tfileActions.registerDefaultActions()\n\t\t\tfileActions.merge(OCA.Files.fileActions)\n\n\t\t\tif (!this._globalActionsInitialized) {\n\t\t\t\t// in case actions are registered later\n\t\t\t\tthis._onActionsUpdated = _.bind(this._onActionsUpdated, this)\n\t\t\t\tOCA.Files.fileActions.on('setDefault.app-systemtags', this._onActionsUpdated)\n\t\t\t\tOCA.Files.fileActions.on('registerAction.app-systemtags', this._onActionsUpdated)\n\t\t\t\tthis._globalActionsInitialized = true\n\t\t\t}\n\n\t\t\t// when the user clicks on a folder, redirect to the corresponding\n\t\t\t// folder in the files app instead of opening it directly\n\t\t\tfileActions.register('dir', 'Open', OC.PERMISSION_READ, '', function(filename, context) {\n\t\t\t\tOCA.Files.App.setActiveView('files', { silent: true })\n\t\t\t\tOCA.Files.App.fileList.changeDirectory(OC.joinPaths(context.$file.attr('data-path'), filename), true, true)\n\t\t\t})\n\t\t\tfileActions.setDefault('dir', 'Open')\n\t\t\treturn fileActions\n\t\t},\n\n\t\t_onActionsUpdated(ev) {\n\t\t\tif (!this._fileList) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (ev.action) {\n\t\t\t\tthis._fileList.fileActions.registerAction(ev.action)\n\t\t\t} else if (ev.defaultAction) {\n\t\t\t\tthis._fileList.fileActions.setDefault(\n\t\t\t\t\tev.defaultAction.mime,\n\t\t\t\t\tev.defaultAction.name\n\t\t\t\t)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Destroy the app\n\t\t */\n\t\tdestroy() {\n\t\t\tOCA.Files.fileActions.off('setDefault.app-systemtags', this._onActionsUpdated)\n\t\t\tOCA.Files.fileActions.off('registerAction.app-systemtags', this._onActionsUpdated)\n\t\t\tthis.removeFileList()\n\t\t\tthis._fileList = null\n\t\t\tdelete this._globalActionsInitialized\n\t\t},\n\t}\n\n})()\n\nwindow.addEventListener('DOMContentLoaded', function() {\n\t$('#app-content-systemtagsfilter').on('show', function(e) {\n\t\tOCA.SystemTags.App.initFileList($(e.target))\n\t})\n\t$('#app-content-systemtagsfilter').on('hide', function() {\n\t\tOCA.SystemTags.App.removeFileList()\n\t})\n})\n","/**\n * Copyright (c) 2015 Vincent Petry <pvince81@owncloud.com>\n *\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n(function() {\n\tOCA.SystemTags = _.extend({}, OCA.SystemTags)\n\tif (!OCA.SystemTags) {\n\t\t/**\n\t\t * @namespace\n\t\t */\n\t\tOCA.SystemTags = {}\n\t}\n\n\t/**\n\t * @namespace\n\t */\n\tOCA.SystemTags.FilesPlugin = {\n\t\tignoreLists: [\n\t\t\t'trashbin',\n\t\t\t'files.public',\n\t\t],\n\n\t\tattach(fileList) {\n\t\t\tif (this.ignoreLists.indexOf(fileList.id) >= 0) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// only create and attach once\n\t\t\t// FIXME: this should likely be done on a different code path now\n\t\t\t// for the sidebar to only have it registered once\n\t\t\tif (!OCA.SystemTags.View) {\n\t\t\t\tconst systemTagsInfoView = new OCA.SystemTags.SystemTagsInfoView()\n\t\t\t\tfileList.registerDetailView(systemTagsInfoView)\n\t\t\t\tOCA.SystemTags.View = systemTagsInfoView\n\t\t\t}\n\t\t},\n\t}\n\n})()\n\nOC.Plugins.register('OCA.Files.FileList', OCA.SystemTags.FilesPlugin)\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./systemtagsfilelist.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./systemtagsfilelist.scss\";\n export default content && content.locals ? content.locals : undefined;\n","/**\n * @copyright Copyright (c) 2016 Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport './app'\nimport './systemtagsfilelist'\nimport './filesplugin'\nimport './systemtagsinfoview'\nimport './css/systemtagsfilelist.scss'\n\nwindow.OCA.SystemTags = OCA.SystemTags\n","/**\n * Copyright (c) 2016 Vincent Petry <pvince81@owncloud.com>\n *\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n(function() {\n\t/**\n\t * @class OCA.SystemTags.FileList\n\t * @augments OCA.Files.FileList\n\t *\n\t * @classdesc SystemTags file list.\n\t * Contains a list of files filtered by system tags.\n\t *\n\t * @param {object} $el container element with existing markup for the .files-controls and a table\n\t * @param {Array} [options] map of options, see other parameters\n\t * @param {Array.<string>} [options.systemTagIds] array of system tag ids to\n\t * filter by\n\t */\n\tconst FileList = function($el, options) {\n\t\tthis.initialize($el, options)\n\t}\n\tFileList.prototype = _.extend(\n\t\t{},\n\t\tOCA.Files.FileList.prototype,\n\t\t/** @lends OCA.SystemTags.FileList.prototype */ {\n\t\t\tid: 'systemtagsfilter',\n\t\t\tappName: t('systemtags', 'Tagged files'),\n\n\t\t\t/**\n\t\t\t * Array of system tag ids to filter by\n\t\t\t *\n\t\t\t * @type {Array.<string>}\n\t\t\t */\n\t\t\t_systemTagIds: [],\n\t\t\t_lastUsedTags: [],\n\n\t\t\t_clientSideSort: true,\n\t\t\t_allowSelection: false,\n\n\t\t\t_filterField: null,\n\n\t\t\t/**\n\t\t\t * @private\n\t\t\t * @param {object} $el container element\n\t\t\t * @param {object} [options] map of options, see other parameters\n\t\t\t */\n\t\t\tinitialize($el, options) {\n\t\t\t\tOCA.Files.FileList.prototype.initialize.apply(this, arguments)\n\t\t\t\tif (this.initialized) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tif (options && options.systemTagIds) {\n\t\t\t\t\tthis._systemTagIds = options.systemTagIds\n\t\t\t\t}\n\n\t\t\t\tOC.Plugins.attach('OCA.SystemTags.FileList', this)\n\n\t\t\t\tconst $controls = this.$el.find('.files-controls').empty()\n\n\t\t\t\t_.defer(_.bind(this._getLastUsedTags, this))\n\t\t\t\tthis._initFilterField($controls)\n\t\t\t},\n\n\t\t\tdestroy() {\n\t\t\t\tthis.$filterField.remove()\n\n\t\t\t\tOCA.Files.FileList.prototype.destroy.apply(this, arguments)\n\t\t\t},\n\n\t\t\t_getLastUsedTags() {\n\t\t\t\tconst self = this\n\t\t\t\t$.ajax({\n\t\t\t\t\ttype: 'GET',\n\t\t\t\t\turl: OC.generateUrl('/apps/systemtags/lastused'),\n\t\t\t\t\tsuccess(response) {\n\t\t\t\t\t\tself._lastUsedTags = response\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t},\n\n\t\t\t_initFilterField($container) {\n\t\t\t\tconst self = this\n\t\t\t\tthis.$filterField = $('<input type=\"hidden\" name=\"tags\"/>')\n\t\t\t\tthis.$filterField.val(this._systemTagIds.join(','))\n\t\t\t\t$container.append(this.$filterField)\n\t\t\t\tthis.$filterField.select2({\n\t\t\t\t\tplaceholder: t('systemtags', 'Select tags to filter by'),\n\t\t\t\t\tallowClear: false,\n\t\t\t\t\tmultiple: true,\n\t\t\t\t\ttoggleSelect: true,\n\t\t\t\t\tseparator: ',',\n\t\t\t\t\tquery: _.bind(this._queryTagsAutocomplete, this),\n\n\t\t\t\t\tid(tag) {\n\t\t\t\t\t\treturn tag.id\n\t\t\t\t\t},\n\n\t\t\t\t\tinitSelection(element, callback) {\n\t\t\t\t\t\tconst val = $(element)\n\t\t\t\t\t\t\t.val()\n\t\t\t\t\t\t\t.trim()\n\t\t\t\t\t\tif (val) {\n\t\t\t\t\t\t\tconst tagIds = val.split(',')\n\t\t\t\t\t\t\tconst tags = []\n\n\t\t\t\t\t\t\tOC.SystemTags.collection.fetch({\n\t\t\t\t\t\t\t\tsuccess() {\n\t\t\t\t\t\t\t\t\t_.each(tagIds, function(tagId) {\n\t\t\t\t\t\t\t\t\t\tconst tag = OC.SystemTags.collection.get(\n\t\t\t\t\t\t\t\t\t\t\ttagId\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\tif (!_.isUndefined(tag)) {\n\t\t\t\t\t\t\t\t\t\t\ttags.push(tag.toJSON())\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\tcallback(tags)\n\t\t\t\t\t\t\t\t\tself._onTagsChanged({ target: element })\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// eslint-disable-next-line n/no-callback-literal\n\t\t\t\t\t\t\tcallback([])\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\n\t\t\t\t\tformatResult(tag) {\n\t\t\t\t\t\treturn OC.SystemTags.getDescriptiveTag(tag)\n\t\t\t\t\t},\n\n\t\t\t\t\tformatSelection(tag) {\n\t\t\t\t\t\treturn OC.SystemTags.getDescriptiveTag(tag)[0]\n\t\t\t\t\t\t\t.outerHTML\n\t\t\t\t\t},\n\n\t\t\t\t\tsortResults(results) {\n\t\t\t\t\t\tresults.sort(function(a, b) {\n\t\t\t\t\t\t\tconst aLastUsed = self._lastUsedTags.indexOf(a.id)\n\t\t\t\t\t\t\tconst bLastUsed = self._lastUsedTags.indexOf(b.id)\n\n\t\t\t\t\t\t\tif (aLastUsed !== bLastUsed) {\n\t\t\t\t\t\t\t\tif (bLastUsed === -1) {\n\t\t\t\t\t\t\t\t\treturn -1\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (aLastUsed === -1) {\n\t\t\t\t\t\t\t\t\treturn 1\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn aLastUsed < bLastUsed ? -1 : 1\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Both not found\n\t\t\t\t\t\t\treturn OC.Util.naturalSortCompare(a.name, b.name)\n\t\t\t\t\t\t})\n\t\t\t\t\t\treturn results\n\t\t\t\t\t},\n\n\t\t\t\t\tescapeMarkup(m) {\n\t\t\t\t\t\t// prevent double markup escape\n\t\t\t\t\t\treturn m\n\t\t\t\t\t},\n\t\t\t\t\tformatNoMatches() {\n\t\t\t\t\t\treturn t('systemtags', 'No tags found')\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tthis.$filterField.on(\n\t\t\t\t\t'change',\n\t\t\t\t\t_.bind(this._onTagsChanged, this)\n\t\t\t\t)\n\t\t\t\treturn this.$filterField\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Autocomplete function for dropdown results\n\t\t\t *\n\t\t\t * @param {object} query select2 query object\n\t\t\t */\n\t\t\t_queryTagsAutocomplete(query) {\n\t\t\t\tOC.SystemTags.collection.fetch({\n\t\t\t\t\tsuccess() {\n\t\t\t\t\t\tconst results = OC.SystemTags.collection.filterByName(\n\t\t\t\t\t\t\tquery.term\n\t\t\t\t\t\t)\n\n\t\t\t\t\t\tquery.callback({\n\t\t\t\t\t\t\tresults: _.invoke(results, 'toJSON'),\n\t\t\t\t\t\t})\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Event handler for when the URL changed\n\t\t\t *\n\t\t\t * @param {Event} e the urlchanged event\n\t\t\t */\n\t\t\t_onUrlChanged(e) {\n\t\t\t\tif (e.dir) {\n\t\t\t\t\tconst tags = _.filter(e.dir.split('/'), function(val) {\n\t\t\t\t\t\treturn val.trim() !== ''\n\t\t\t\t\t})\n\t\t\t\t\tthis.$filterField.select2('val', tags || [])\n\t\t\t\t\tthis._systemTagIds = tags\n\t\t\t\t\tthis.reload()\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t_onTagsChanged(ev) {\n\t\t\t\tconst val = $(ev.target)\n\t\t\t\t\t.val()\n\t\t\t\t\t.trim()\n\t\t\t\tif (val !== '') {\n\t\t\t\t\tthis._systemTagIds = val.split(',')\n\t\t\t\t} else {\n\t\t\t\t\tthis._systemTagIds = []\n\t\t\t\t}\n\n\t\t\t\tthis.$el.trigger(\n\t\t\t\t\t$.Event('changeDirectory', {\n\t\t\t\t\t\tdir: this._systemTagIds.join('/'),\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t\tthis.reload()\n\t\t\t},\n\n\t\t\tupdateEmptyContent() {\n\t\t\t\tconst dir = this.getCurrentDirectory()\n\t\t\t\tif (dir === '/') {\n\t\t\t\t\t// root has special permissions\n\t\t\t\t\tif (!this._systemTagIds.length) {\n\t\t\t\t\t\t// no tags selected\n\t\t\t\t\t\tthis.$el\n\t\t\t\t\t\t\t.find('.emptyfilelist.emptycontent')\n\t\t\t\t\t\t\t.html(\n\t\t\t\t\t\t\t\t'<div class=\"icon-systemtags\"></div>'\n\t\t\t\t\t\t\t\t\t+ '<h2>'\n\t\t\t\t\t\t\t\t\t+ t(\n\t\t\t\t\t\t\t\t\t\t'systemtags',\n\t\t\t\t\t\t\t\t\t\t'Please select tags to filter by'\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t+ '</h2>'\n\t\t\t\t\t\t\t)\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// tags selected but no results\n\t\t\t\t\t\tthis.$el\n\t\t\t\t\t\t\t.find('.emptyfilelist.emptycontent')\n\t\t\t\t\t\t\t.html(\n\t\t\t\t\t\t\t\t'<div class=\"icon-systemtags\"></div>'\n\t\t\t\t\t\t\t\t\t+ '<h2>'\n\t\t\t\t\t\t\t\t\t+ t(\n\t\t\t\t\t\t\t\t\t\t'systemtags',\n\t\t\t\t\t\t\t\t\t\t'No files found for the selected tags'\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t+ '</h2>'\n\t\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\tthis.$el\n\t\t\t\t\t\t.find('.emptyfilelist.emptycontent')\n\t\t\t\t\t\t.toggleClass('hidden', !this.isEmpty)\n\t\t\t\t\tthis.$el\n\t\t\t\t\t\t.find('.files-filestable thead th')\n\t\t\t\t\t\t.toggleClass('hidden', this.isEmpty)\n\t\t\t\t} else {\n\t\t\t\t\tOCA.Files.FileList.prototype.updateEmptyContent.apply(\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\targuments\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tgetDirectoryPermissions() {\n\t\t\t\treturn OC.PERMISSION_READ | OC.PERMISSION_DELETE\n\t\t\t},\n\n\t\t\tupdateStorageStatistics() {\n\t\t\t\t// no op because it doesn't have\n\t\t\t\t// storage info like free space / used space\n\t\t\t},\n\n\t\t\treload() {\n\t\t\t\t// there is only root\n\t\t\t\tthis._setCurrentDir('/', false)\n\n\t\t\t\tif (!this._systemTagIds.length) {\n\t\t\t\t\t// don't reload\n\t\t\t\t\tthis.updateEmptyContent()\n\t\t\t\t\tthis.setFiles([])\n\t\t\t\t\treturn $.Deferred().resolve()\n\t\t\t\t}\n\n\t\t\t\tthis._selectedFiles = {}\n\t\t\t\tthis._selectionSummary.clear()\n\t\t\t\tif (this._currentFileModel) {\n\t\t\t\t\tthis._currentFileModel.off()\n\t\t\t\t}\n\t\t\t\tthis._currentFileModel = null\n\t\t\t\tthis.$el.find('.select-all').prop('checked', false)\n\t\t\t\tthis.showMask()\n\t\t\t\tthis._reloadCall = this.filesClient.getFilteredFiles(\n\t\t\t\t\t{\n\t\t\t\t\t\tsystemTagIds: this._systemTagIds,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tproperties: this._getWebdavProperties(),\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t\tif (this._detailsView) {\n\t\t\t\t\t// close sidebar\n\t\t\t\t\tthis._updateDetailsView(null)\n\t\t\t\t}\n\t\t\t\tconst callBack = this.reloadCallback.bind(this)\n\t\t\t\treturn this._reloadCall.then(callBack, callBack)\n\t\t\t},\n\n\t\t\treloadCallback(status, result) {\n\t\t\t\tif (result) {\n\t\t\t\t\t// prepend empty dir info because original handler\n\t\t\t\t\tresult.unshift({})\n\t\t\t\t}\n\n\t\t\t\treturn OCA.Files.FileList.prototype.reloadCallback.call(\n\t\t\t\t\tthis,\n\t\t\t\t\tstatus,\n\t\t\t\t\tresult\n\t\t\t\t)\n\t\t\t},\n\t\t}\n\t)\n\n\tOCA.SystemTags.FileList = FileList\n})()\n","/**\n * Copyright (c) 2015\n *\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n(function(OCA) {\n\n\t/**\n\t * @param {any} model -\n\t */\n\tfunction modelToSelection(model) {\n\t\tconst data = model.toJSON()\n\t\tif (!OC.isUserAdmin() && !data.canAssign) {\n\t\t\tdata.locked = true\n\t\t}\n\t\treturn data\n\t}\n\n\t/**\n\t * @class OCA.SystemTags.SystemTagsInfoView\n\t * @classdesc\n\t *\n\t * Displays a file's system tags\n\t *\n\t */\n\tconst SystemTagsInfoView = OCA.Files.DetailFileInfoView.extend(\n\t\t/** @lends OCA.SystemTags.SystemTagsInfoView.prototype */ {\n\n\t\t\t_rendered: false,\n\n\t\t\tclassName: 'systemTagsInfoView',\n\t\t\tname: 'systemTags',\n\n\t\t\t/* required by the new files sidebar to check if the view is unique */\n\t\t\tid: 'systemTagsInfoView',\n\n\t\t\t/**\n\t\t\t * @type {OC.SystemTags.SystemTagsInputField}\n\t\t\t */\n\t\t\t_inputView: null,\n\n\t\t\tinitialize(options) {\n\t\t\t\tconst self = this\n\t\t\t\toptions = options || {}\n\n\t\t\t\tthis._inputView = new OC.SystemTags.SystemTagsInputField({\n\t\t\t\t\tmultiple: true,\n\t\t\t\t\tallowActions: true,\n\t\t\t\t\tallowCreate: true,\n\t\t\t\t\tisAdmin: OC.isUserAdmin(),\n\t\t\t\t\tinitSelection(element, callback) {\n\t\t\t\t\t\tcallback(self.selectedTagsCollection.map(modelToSelection))\n\t\t\t\t\t},\n\t\t\t\t})\n\n\t\t\t\tthis.selectedTagsCollection = new OC.SystemTags.SystemTagsMappingCollection([], { objectType: 'files' })\n\n\t\t\t\tthis._inputView.collection.on('change:name', this._onTagRenamedGlobally, this)\n\t\t\t\tthis._inputView.collection.on('remove', this._onTagDeletedGlobally, this)\n\n\t\t\t\tthis._inputView.on('select', this._onSelectTag, this)\n\t\t\t\tthis._inputView.on('deselect', this._onDeselectTag, this)\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Event handler whenever a tag was selected\n\t\t\t *\n\t\t\t * @param {object} tag the tag to create\n\t\t\t */\n\t\t\t_onSelectTag(tag) {\n\t\t\t// create a mapping entry for this tag\n\t\t\t\tthis.selectedTagsCollection.create(tag.toJSON())\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Event handler whenever a tag gets deselected.\n\t\t\t * Removes the selected tag from the mapping collection.\n\t\t\t *\n\t\t\t * @param {string} tagId tag id\n\t\t\t */\n\t\t\t_onDeselectTag(tagId) {\n\t\t\t\tthis.selectedTagsCollection.get(tagId).destroy()\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Event handler whenever a tag was renamed globally.\n\t\t\t *\n\t\t\t * This will automatically adjust the tag mapping collection to\n\t\t\t * container the new name.\n\t\t\t *\n\t\t\t * @param {OC.Backbone.Model} changedTag tag model that has changed\n\t\t\t */\n\t\t\t_onTagRenamedGlobally(changedTag) {\n\t\t\t// also rename it in the selection, if applicable\n\t\t\t\tconst selectedTagMapping = this.selectedTagsCollection.get(changedTag.id)\n\t\t\t\tif (selectedTagMapping) {\n\t\t\t\t\tselectedTagMapping.set(changedTag.toJSON())\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Event handler whenever a tag was deleted globally.\n\t\t\t *\n\t\t\t * This will automatically adjust the tag mapping collection to\n\t\t\t * container the new name.\n\t\t\t *\n\t\t\t * @param {OC.Backbone.Model} tagId tag model that has changed\n\t\t\t */\n\t\t\t_onTagDeletedGlobally(tagId) {\n\t\t\t// also rename it in the selection, if applicable\n\t\t\t\tthis.selectedTagsCollection.remove(tagId)\n\t\t\t},\n\n\t\t\tsetFileInfo(fileInfo) {\n\t\t\t\tconst self = this\n\t\t\t\tif (!this._rendered) {\n\t\t\t\t\tthis.render()\n\t\t\t\t}\n\n\t\t\t\tif (fileInfo) {\n\t\t\t\t\tthis.selectedTagsCollection.setObjectId(fileInfo.id)\n\t\t\t\t\tthis.selectedTagsCollection.fetch({\n\t\t\t\t\t\tsuccess(collection) {\n\t\t\t\t\t\t\tcollection.fetched = true\n\n\t\t\t\t\t\t\tconst appliedTags = collection.map(modelToSelection)\n\t\t\t\t\t\t\tself._inputView.setData(appliedTags)\n\t\t\t\t\t\t\tif (appliedTags.length > 0) {\n\t\t\t\t\t\t\t\tself.show()\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}\n\n\t\t\t\tthis.hide()\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Renders this details view\n\t\t\t */\n\t\t\trender() {\n\t\t\t\tthis.$el.append(this._inputView.$el)\n\t\t\t\tthis._inputView.render()\n\t\t\t},\n\n\t\t\tisVisible() {\n\t\t\t\treturn !this.$el.hasClass('hidden')\n\t\t\t},\n\n\t\t\tshow() {\n\t\t\t\tthis.$el.removeClass('hidden')\n\t\t\t},\n\n\t\t\thide() {\n\t\t\t\tthis.$el.addClass('hidden')\n\t\t\t},\n\n\t\t\ttoggle() {\n\t\t\t\tthis.$el.toggleClass('hidden')\n\t\t\t},\n\n\t\t\topenDropdown() {\n\t\t\t\tthis.$el.find('.systemTagsInputField').select2('open')\n\t\t\t},\n\n\t\t\tremove() {\n\t\t\t\tthis._inputView.remove()\n\t\t\t},\n\t\t})\n\n\tOCA.SystemTags.SystemTagsInfoView = SystemTagsInfoView\n\n})(OCA)\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#app-content-systemtagsfilter .select2-container{width:30%;margin-left:10px}#app-sidebar .app-sidebar-header__action .tag-label{cursor:pointer;padding:13px 0;display:flex;color:var(--color-text-light);position:relative;margin-top:-20px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/systemtags/src/css/systemtagsfilelist.scss\"],\"names\":[],\"mappings\":\"AASA,iDACC,SAAA,CACA,gBAAA,CAGD,oDACC,cAAA,CACA,cAAA,CACA,YAAA,CACA,6BAAA,CACA,iBAAA,CACA,gBAAA\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2016\\n *\\n * This file is licensed under the Affero General Public License version 3\\n * or later.\\n *\\n * See the COPYING-README file.\\n *\\n */\\n#app-content-systemtagsfilter .select2-container {\\n\\twidth: 30%;\\n\\tmargin-left: 10px;\\n}\\n\\n#app-sidebar .app-sidebar-header__action .tag-label {\\n\\tcursor: pointer;\\n\\tpadding: 13px 0;\\n\\tdisplay: flex;\\n\\tcolor: var(--color-text-light);\\n\\tposition: relative;\\n\\tmargin-top: -20px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(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 = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 9698;","__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\t9698: 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 = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(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(function(id) { return 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], function() { return __webpack_require__(19294); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","OCA","SystemTags","App","initFileList","$el","this","_fileList","tagsParam","URL","window","location","href","searchParams","get","initialTags","split","map","parseInt","FileList","id","fileActions","_createFileActions","config","Files","getFilesConfig","shown","systemTagIds","appName","t","removeFileList","$fileList","empty","FileActions","registerDefaultActions","merge","_globalActionsInitialized","_onActionsUpdated","_","bind","on","register","OC","PERMISSION_READ","filename","context","setActiveView","silent","fileList","changeDirectory","joinPaths","$file","attr","setDefault","ev","action","registerAction","defaultAction","mime","name","destroy","off","addEventListener","$","e","target","extend","FilesPlugin","ignoreLists","attach","indexOf","View","systemTagsInfoView","SystemTagsInfoView","registerDetailView","Plugins","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","initialize","prototype","_systemTagIds","_lastUsedTags","_clientSideSort","_allowSelection","_filterField","apply","arguments","initialized","$controls","find","defer","_getLastUsedTags","_initFilterField","$filterField","remove","self","ajax","type","url","generateUrl","success","response","$container","val","join","append","select2","placeholder","allowClear","multiple","toggleSelect","separator","query","_queryTagsAutocomplete","tag","initSelection","element","callback","trim","tagIds","tags","collection","fetch","each","tagId","isUndefined","push","toJSON","_onTagsChanged","formatResult","getDescriptiveTag","formatSelection","outerHTML","sortResults","results","sort","a","b","aLastUsed","bLastUsed","Util","naturalSortCompare","escapeMarkup","m","formatNoMatches","filterByName","term","invoke","_onUrlChanged","dir","filter","reload","trigger","Event","updateEmptyContent","getCurrentDirectory","length","html","toggleClass","isEmpty","getDirectoryPermissions","PERMISSION_DELETE","updateStorageStatistics","_setCurrentDir","setFiles","Deferred","resolve","_selectedFiles","_selectionSummary","clear","_currentFileModel","prop","showMask","_reloadCall","filesClient","getFilteredFiles","properties","_getWebdavProperties","_detailsView","_updateDetailsView","callBack","reloadCallback","then","status","result","unshift","call","modelToSelection","model","data","isUserAdmin","canAssign","locked","DetailFileInfoView","_rendered","className","_inputView","SystemTagsInputField","allowActions","allowCreate","isAdmin","selectedTagsCollection","SystemTagsMappingCollection","objectType","_onTagRenamedGlobally","_onTagDeletedGlobally","_onSelectTag","_onDeselectTag","create","changedTag","selectedTagMapping","set","setFileInfo","fileInfo","render","setObjectId","fetched","appliedTags","setData","show","hide","isVisible","hasClass","removeClass","addClass","toggle","openDropdown","___CSS_LOADER_EXPORT___","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","amdD","Error","amdO","O","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","definition","o","defineProperty","enumerable","g","globalThis","Function","obj","hasOwnProperty","Symbol","toStringTag","value","nmd","paths","children","document","baseURI","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/tests/acceptance/features/bootstrap/FileListContext.php b/tests/acceptance/features/bootstrap/FileListContext.php
index ce2bd9971e0..12402c07cc0 100644
--- a/tests/acceptance/features/bootstrap/FileListContext.php
+++ b/tests/acceptance/features/bootstrap/FileListContext.php
@@ -92,7 +92,7 @@ class FileListContext implements Context, ActorAwareInterface {
* @return Locator
*/
public static function breadcrumbs($fileListAncestor) {
- return Locator::forThe()->css("#controls .breadcrumb")->
+ return Locator::forThe()->css(".files-controls .breadcrumb")->
descendantOf($fileListAncestor)->
describedAs("Breadcrumbs in file list");
}
@@ -101,7 +101,7 @@ class FileListContext implements Context, ActorAwareInterface {
* @return Locator
*/
public static function createMenuButton($fileListAncestor) {
- return Locator::forThe()->css("#controls .button.new")->
+ return Locator::forThe()->css(".files-controls .button.new")->
descendantOf($fileListAncestor)->
describedAs("Create menu button in file list");
}
@@ -186,7 +186,7 @@ class FileListContext implements Context, ActorAwareInterface {
* @return Locator
*/
public static function rowForFile($fileListAncestor, $fileName) {
- return Locator::forThe()->xpath("//*[@id = 'fileList']//span[contains(concat(' ', normalize-space(@class), ' '), ' nametext ') and normalize-space() = '$fileName']/ancestor::tr")->
+ return Locator::forThe()->xpath("//*[@class = 'files-fileList']//span[contains(concat(' ', normalize-space(@class), ' '), ' nametext ') and normalize-space() = '$fileName']/ancestor::tr")->
descendantOf($fileListAncestor)->
describedAs("Row for file $fileName in file list");
}