diff options
Diffstat (limited to 'apps/files')
28 files changed, 1151 insertions, 188 deletions
diff --git a/apps/files/css/files.css b/apps/files/css/files.css index 957d77a3e6a..b91dcf94b81 100644 --- a/apps/files/css/files.css +++ b/apps/files/css/files.css @@ -1 +1 @@ -.actions{padding:3px;height:100%;display:inline-block;float:left}.actions input,.actions button,.actions .button{margin:0;float:left}.actions .button a{color:#555}.actions .button a:hover,.actions .button a:focus{background-color:var(--color-background-hover)}.actions .button a:active{background-color:var(--color-primary-element-light)}.actions.creatable{position:relative;display:flex;flex:1 1}.actions.creatable .button:not(:last-child){margin-right:3px}.actions.hidden{display:none}#trash{margin-right:8px;float:right;z-index:1010;padding:10px;font-weight:normal}.newFileMenu .error,.newFileMenu .error+.icon-confirm,.files-fileList .error{color:var(--color-error);border-color:var(--color-error)}.files-filestable{position:relative;width:100%;min-width:250px;display:block;flex-direction:column}.emptycontent:not(.hidden)~.files-filestable{display:none}.files-filestable thead{position:-webkit-sticky;position:sticky;top:44px;z-index:60;display:block;background-color:var(--color-main-background-translucent)}.files-filestable tbody{display:table;width:100%}.files-filestable tbody tr[data-permissions="0"],.files-filestable tbody tr[data-permissions="16"]{background-color:var(--color-background-dark)}.files-filestable tbody tr[data-permissions="0"] td.filename .nametext .innernametext,.files-filestable tbody tr[data-permissions="16"] td.filename .nametext .innernametext{color:var(--color-text-maxcontrast)}.files-filestable tbody tr[data-e2eencrypted=true] .selection{pointer-events:none}.files-filestable.hidden{display:none}.app-files #app-content>.viewcontainer{min-height:0%;width:100%}.app-files #app-content{width:calc(100% - 300px);overflow-anchor:none}.file-drag,.file-drag .files-filestable tbody tr,.file-drag .files-filestable tbody tr:hover{background-color:var(--color-primary-element-light) !important}.app-files #app-content.dir-drop{background-color:var(--color-main-background) !important}.file-drag .files-filestable tbody tr,.file-drag .files-filestable tbody tr:hover{background-color:rgba(0,0,0,0) !important}.app-files #app-content.dir-drop .files-filestable tbody tr.dropping-to-dir{background-color:var(--color-primary-element-light) !important}.nav-icon-files{background-image:var(--icon-folder-dark)}.nav-icon-recent{background-image:var(--icon-recent-dark)}.nav-icon-favorites{background-image:var(--icon-starred-dark)}.nav-icon-sharingin,.nav-icon-sharingout,.nav-icon-pendingshares,.nav-icon-shareoverview{background-image:var(--icon-share-dark)}.nav-icon-sharinglinks{background-image:var(--icon-public-dark)}.nav-icon-extstoragemounts{background-image:var(--icon-external-dark)}.nav-icon-trashbin{background-image:var(--icon-delete-dark)}.nav-icon-trashbin-starred{background-image:var(--icon-delete-#ff0000)}.nav-icon-deletedshares{background-image:var(--icon-unshare-dark)}.nav-icon-favorites-starred{background-image:var(--icon-starred-yellow)}#app-navigation .nav-files a.nav-icon-files{width:auto}#app-navigation .nav-files a.new{width:40px;height:32px;padding:0 10px;margin:0;cursor:pointer}#app-navigation .nav-files a.new.hidden{display:none}#app-navigation .nav-files a.new.disabled{opacity:.3}.files-filestable tbody tr{height:51px}.files-filestable tbody tr:hover,.files-filestable tbody tr:focus,.files-filestable tbody .name:focus,.files-filestable tbody tr:hover .filename form,table tr.mouseOver td{background-color:var(--color-background-hover)}.files-filestable tbody tr:active,.files-filestable tbody tr.highlighted,.files-filestable tbody tr.highlighted .name:focus,.files-filestable tbody tr.selected,.files-filestable tbody tr.searchresult{background-color:var(--color-primary-element-light)}tbody a{color:var(--color-main-text)}span.conflict-path,span.extension,span.uploading,td.date{color:var(--color-text-maxcontrast)}span.conflict-path,span.extension{-webkit-transition:opacity 300ms;-moz-transition:opacity 300ms;-o-transition:opacity 300ms;transition:opacity 300ms;vertical-align:top}tr:hover span.conflict-path,tr:focus span.conflict-path,tr:hover span.extension,tr:focus span.extension{opacity:1;color:var(--color-text-maxcontrast)}table th,table th a{color:var(--color-text-maxcontrast)}table.multiselect th a{color:var(--color-main-text)}table th .columntitle{display:block;padding:15px;height:50px;box-sizing:border-box;-moz-box-sizing:border-box;vertical-align:middle}table th .columntitle:focus-visible{border-radius:2px}table.multiselect th .columntitle{display:inline-block;margin-right:-20px}table th .columntitle.name{padding-left:0;margin-left:44px}table.multiselect th .columntitle.name{margin-left:0}table th .sort-indicator{width:10px;height:8px;margin-left:5px;display:inline-block;vertical-align:text-bottom;opacity:.3}.sort-indicator.hidden,.multiselect .sort-indicator,table.multiselect th:hover .sort-indicator.hidden,table.multiselect th:focus .sort-indicator.hidden{visibility:hidden}.multiselect .sort,.multiselect .sort span{cursor:default}table th:hover .sort-indicator.hidden,table th:focus .sort-indicator.hidden{visibility:visible}table th,table td{border-bottom:1px solid var(--color-border);text-align:left;font-weight:normal}table td{padding:0 15px;font-style:normal;background-position:8px center;background-repeat:no-repeat}table th.column-name{position:relative;width:9999px;padding:0}.column-name-container{position:relative;height:50px}table th.column-selection{padding-top:2px}table th.column-size,table td.filesize{text-align:right}table th.column-mtime,table td.date,table th.column-last,table td.column-last{-moz-box-sizing:border-box;box-sizing:border-box;position:relative;min-width:130px}#app-content-recent,#app-content-favorites,#app-content-shareoverview,#app-content-sharingout,#app-content-sharingin,#app-content-sharinglinks,#app-content-deletedshares,#app-content-pendingshares{margin-top:22px}#app-content-recent thead,#app-content-favorites thead,#app-content-shareoverview thead,#app-content-sharingout thead,#app-content-sharingin thead,#app-content-sharinglinks thead,#app-content-deletedshares thead,#app-content-pendingshares thead{top:0}table.multiselect thead th{background-color:var(--color-main-background-translucent);font-weight:bold}#app-content.with-app-sidebar table.multiselect thead{margin-right:27%}table.multiselect .column-name{position:relative;width:9999px}table.multiselect .column-mtime>a{display:none}table td.selection,table th.selection,table td.fileaction{width:32px;text-align:center}table td.filename a.name,table td.filename p.name{display:flex;position:relative;-moz-box-sizing:border-box;box-sizing:border-box;height:50px;line-height:50px;padding:0}table td.filename .thumbnail-wrapper{width:0;min-width:50px;max-width:50px;height:50px}table td.filename .thumbnail-wrapper.icon-loading-small:after{z-index:10}table td.filename .thumbnail-wrapper.icon-loading-small .thumbnail{opacity:.2}table td.filename .thumbnail{display:inline-block;width:32px;height:32px;background-size:contain;background-position:center;background-repeat:no-repeat;margin-left:9px;margin-top:9px;border-radius:var(--border-radius);cursor:pointer;position:absolute;z-index:4}table td.filename p.name .thumbnail{cursor:default}table tr[data-has-preview=true] .thumbnail{border:1px solid var(--color-border)}table:not(.view-grid) td.filename input.filename{width:70% !important;margin-left:48px !important;cursor:text}table td.filename form{margin-top:-40px;position:relative;top:-6px}table td.filename a,table td.login,table td.logout,table td.download,table td.upload,table td.create,table td.delete{padding:3px 8px 8px 3px}table td.filename .nametext,.modified,.column-last>span:first-child{float:left;padding:15px 0}.modified,.column-last>span:first-child{position:relative;overflow:hidden;text-overflow:ellipsis;width:110px}table td.filename{max-width:0}table td.filename .nametext{width:0;flex-grow:1;display:flex;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;height:100%;z-index:10;padding:0 20px 0 0}table td.filename .system-tags{--min-size: 32px;display:flex;justify-content:center;align-items:center;flex:1 1 100%;min-width:calc(var(--min-size)*2);max-width:300px}table td.filename .system-tags .system-tags__tag{padding:5px 10px;border:1px solid;border-radius:var(--border-radius-pill);border-color:var(--color-border);color:var(--color-text-maxcontrast);height:var(--min-size);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:22px;text-align:center}table td.filename .system-tags .system-tags__tag--more{overflow:visible;text-overflow:initial}table td.filename .system-tags .system-tags__tag+.system-tags__tag{margin-left:5px}.hide-hidden-files .files-filestable .files-fileList tr.hidden-file,.hide-hidden-files .files-filestable .files-fileList tr.hidden-file.dragging{display:none !important}.files-fileList tr.animate-opacity{-webkit-transition:opacity 250ms;-moz-transition:opacity 250ms;-o-transition:opacity 250ms;transition:opacity 250ms}.files-fileList tr.dragging{opacity:.2}table td.filename .nametext .innernametext{text-overflow:ellipsis;overflow:hidden;position:relative;vertical-align:top}table td.filename .uploadtext{position:absolute;font-weight:normal;margin-left:50px;left:0;bottom:0;height:20px;padding:0 4px;padding-left:1px;font-size:11px;line-height:22px;color:var(--color-text-maxcontrast);text-overflow:ellipsis;white-space:nowrap}table td.selection{padding:0}.files-fileList tr td.selection>.selectCheckBox+label:before{opacity:.3;margin-right:0}.files-fileList tr:hover td.selection>.selectCheckBox+label:before,.files-fileList tr:focus td.selection>.selectCheckBox+label:before,.files-fileList tr td.selection>.selectCheckBox:checked+label:before,.files-fileList tr.selected td.selection>.selectCheckBox+label:before{opacity:1}.files-fileList tr.halfselected td.selection>.selectCheckBox+label:before{opacity:.5}.files-fileList tr td.selection>.selectCheckBox+label,.select-all+label{padding:16px}.files-fileList tr td.selection>.selectCheckBox:focus-visible+label,.select-all:focus-visible+label{background-color:var(--color-background-hover);border-radius:var(--border-radius-pill);outline:none !important;border:2px solid var(--color-primary-element) !important;padding:14px}.files-fileList tr td.selection>.selectCheckBox:focus-visible+label,.select-all:focus-visible+label{outline-offset:0px}.files-fileList tr td.filename{position:relative;width:100%;padding-left:0;padding-right:0;-webkit-transition:background-image 500ms;-moz-transition:background-image 500ms;-o-transition:background-image 500ms;transition:background-image 500ms}.files-fileList tr td.filename a.name label,.files-fileList tr td.filename p.name label{position:absolute;width:80%;height:50px}.files-fileList tr td.filename .favorite{display:inline-block;float:left}.files-fileList tr td.filename .favorite-mark{position:absolute;display:block;top:-8px;right:-8px;line-height:100%;text-align:center}.files-fileList tr td.filename .favorite-mark.permanent{background-color:var(--color-main-background);mask:var(--icon-star-rounded-white) no-repeat;mask-size:22px 22px;width:22px;height:22px;display:flex;align-content:center;justify-content:center}.files-fileList tr:hover td.filename .favorite-mark.permanent{background-color:var(--color-background-hover)}#uploadsize-message,#delete-confirm{display:none}.fileactions{z-index:50}.busy .fileactions,.busy .action{visibility:hidden}.bubble,#app-navigation .app-navigation-entry-menu{min-width:100px}.files-fileList .icon-loading-small{opacity:1 !important;display:inline !important}.files-fileList .action.action-share-notification span,.files-fileList a.name{cursor:default !important}.files-fileList a.name.disabled *{cursor:default}.files-fileList a.name.disabled a,.files-fileList a.name.disabled a *{cursor:pointer}.files-fileList a.name.disabled:focus{background:none}a.action>img{height:16px;width:16px;vertical-align:text-bottom}a.action.action-editlocally img.icon{filter:var(--background-invert-if-dark)}.selectedActions{position:relative;display:inline-block;vertical-align:middle}.selectedActions.hidden{display:none}.selectedActions a{display:inline;line-height:50px;padding:16px 5px}.selectedActions a.hidden{display:none}.selectedActions a img{position:relative;vertical-align:text-bottom;margin-bottom:-1px}.selectedActions .actions-selected .icon-more{margin-top:-3px}.files-fileList td a a.action{display:inline;padding:17px 8px;line-height:50px;opacity:.3}.files-fileList td a a.action.action-share{padding:17px 14px}.files-fileList td a a.action.action-share.permanent:not(.shared-style) .icon-shared+span{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}.files-fileList td a a.action.action-share .avatar{display:inline-block;vertical-align:middle}.files-fileList td a a.action.action-menu{padding-top:17px;padding-bottom:17px;padding-left:14px;padding-right:14px}.files-fileList td a a.action.no-permission:hover,.files-fileList td a a.action.no-permission:focus{opacity:.3}.files-fileList td a a.action.disabled:hover,.files-fileList td a a.action.disabled:focus,.files-fileList td a a.action.disabled img{opacity:.3}.files-fileList td a a.action.disabled.action-download{opacity:.7}.files-fileList td a a.action.disabled.action-download:hover,.files-fileList td a a.action.disabled.action-download:focus{opacity:.7}.files-fileList td a a.action:hover,.files-fileList td a a.action:focus{opacity:1}.files-fileList td a a.action:focus{background-color:var(--color-background-hover);border-radius:var(--border-radius-pill)}.files-fileList td a .fileActionsMenu a.action,.files-fileList td a a.action.action-share.shared-style{opacity:.7}.files-fileList td a .fileActionsMenu .action.permanent{opacity:1}.files-fileList .action.action-share.permanent.shared-style span:not(.icon){display:inline-block;max-width:70px;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;margin-left:6px}.files-fileList .remoteAddress .userDomain{margin-left:0 !important}.files-fileList .favorite-mark.permanent{opacity:1}.files-fileList .fileActionsMenu a.action:hover,.files-fileList .fileActionsMenu a.action:focus,.files-fileList a.action.action-share.shared-style:hover,.files-fileList a.action.action-share.shared-style:focus{opacity:1}.files-fileList tr a.action.disabled{background:none}.selectedActions a.download.disabled,.files-fileList tr a.action.action-download.disabled{color:#000}.files-fileList tr:hover a.action.disabled:hover *{cursor:default}.summary{color:var(--color-text-maxcontrast);height:330px}.files-filestable .summary .filesummary{width:100%;padding-left:101px}#body-public .summary{height:180px}.summary:hover,.summary:focus,.summary,table tr.summary td{background-color:rgba(0,0,0,0)}.summary td{border-bottom:none;vertical-align:top;padding-top:20px}.summary td:first-child{padding:0}.hiddeninfo{white-space:pre-line}table.dragshadow{width:auto;z-index:2000}table.dragshadow td.filename{padding-left:60px;padding-right:16px;height:36px;max-width:unset}table.dragshadow td.size{padding-right:8px}.mask{z-index:50;position:absolute;top:0;left:0;right:0;bottom:0;background-color:var(--color-main-background);background-repeat:no-repeat no-repeat;background-position:50%;opacity:.7;transition:opacity 100ms;-moz-transition:opacity 100ms;-o-transition:opacity 100ms;-ms-transition:opacity 100ms;-webkit-transition:opacity 100ms}.mask.transparent{opacity:0}.newFileMenu{font-weight:300;top:100%;left:-48px !important;margin-top:4px;min-width:100px;z-index:1001}.newFileMenu::after{left:61px !important}.files-controls{box-sizing:border-box;position:-webkit-sticky;position:sticky;height:50px;padding:0;margin:0;background-color:var(--color-main-background-translucent);z-index:62;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;top:0;padding-left:50px}.files-controls .actions>div>.button,.files-controls .actions>div button,.files-controls .actions>.button,.files-controls .actions button{box-sizing:border-box;display:inline-block;display:flex;height:44px;width:44px;padding:9px;align-items:center;justify-content:center}.files-controls .actions>div .button.hidden,.files-controls .actions .button.hidden{display:none}.viewer-mode #app-navigation+#app-content .files-controls{left:0}.files-filestable .filename .action .icon,.files-filestable .selectedActions a .icon,.files-filestable .filename .favorite-mark .icon,.files-controls .actions .button .icon{display:inline-block;vertical-align:middle;background-size:16px 16px}.files-filestable .filename .favorite-mark .icon-star{background-image:none}.files-filestable .filename .favorite-mark .icon-starred{background-image:var(--icon-starred-yellow) !important}.files-filestable .filename .action .icon.hidden,.files-filestable .selectedActions a .icon.hidden,.files-controls .actions .button .icon.hidden{display:none}.files-filestable .filename .action .icon.loading,.files-filestable .selectedActions a .icon.loading,.files-controls .actions .button .icon.loading{width:15px;height:15px}.app-files .actions .button.new{position:relative}.breadcrumb{align-items:center}.breadcrumb .icon-home{border-radius:var(--border-radius)}.breadcrumb .canDrop>a,.files-filestable tbody tr.canDrop{background-color:rgba(0,130,201,.3)}.dropzone-background{background-color:rgba(0,130,201,.3)}.dropzone-background :hover{box-shadow:none !important}.notCreatable{margin-left:12px;margin-right:44px;margin-top:12px;color:var(--color-main-text);overflow:auto;min-width:160px;height:54px}.notCreatable:not(.hidden){display:flex}.notCreatable .icon-alert-outline{top:-15px;position:relative;margin-right:4px}.quota-navigation-item{margin:0 !important;border:none;border-radius:0;background-color:rgba(0,0,0,0);z-index:1;height:44px;display:flex !important;flex-direction:column}.quota-navigation-item__text{height:30px}.quota-navigation-item[href="#"],.quota-navigation-item[href="#"] *{cursor:default !important}.quota-navigation-item__container{height:5px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) thead tr{display:block;border-bottom:1px solid var(--color-border);background-color:var(--color-main-background-translucent)}.files-filestable.view-grid:not(.hidden) thead tr th{width:auto;border:none}.files-filestable.view-grid:not(.hidden) tbody{display:grid;grid-template-columns:repeat(auto-fill, 160px);justify-content:space-around;row-gap:15px;margin:15px 0}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden){display:block;position:relative;height:190px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted{background-color:rgba(0,0,0,0)}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .fileactions{background-color:var(--color-background-hover)}.files-filestable.view-grid:not(.hidden) tbody td{display:inline;border-bottom:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper{min-width:0;max-width:none;position:absolute;width:160px;height:160px;padding:14px;top:0;left:0;z-index:-1}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail{width:calc(100% - 2 * 14px);height:calc(100% - 2 * 14px);background-size:contain;margin:0;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:center}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail .favorite-mark{left:auto;top:-11px;right:-11px}.files-filestable.view-grid:not(.hidden) tbody td.filename .uploadtext{width:100%;margin:0;top:0;bottom:auto;height:28px;padding-top:4px;padding-left:28px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name{height:100%;border-radius:var(--border-radius);overflow:hidden;cursor:pointer !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext{display:flex;height:44px;margin-top:146px;text-align:center;line-height:44px;padding:0}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext{display:inline-block;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:before{content:"";flex:1;min-width:14px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:after{content:"";flex:1;min-width:44px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .extension{display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .system-tags{display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions{height:initial;margin-top:146px;display:flex;align-items:center;position:absolute;right:0}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action{padding:14px;width:44px;height:44px;display:flex;align-items:center;justify-content:center}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action:not(.action-menu){display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden .action-share img{padding:6px;border-radius:50%}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-restore-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-comment-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename form{padding:3px 14px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) tbody td.filename form input.filename{width:100%;margin-left:0;cursor:text}.files-filestable.view-grid:not(.hidden) tbody td.filesize,.files-filestable.view-grid:not(.hidden) tbody td.date{display:none}.files-filestable.view-grid:not(.hidden) tbody td.selection,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark{position:absolute;top:-8px;left:-8px;display:flex;z-index:10}.files-filestable.view-grid:not(.hidden) tbody td.selection label,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label{width:44px;height:44px;display:inline-flex;padding:14px}.files-filestable.view-grid:not(.hidden) tbody td.selection label::before,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label::before{margin:0;width:14px;height:14px}.files-filestable.view-grid:not(.hidden) tbody td .popovermenu{left:0;width:150px;margin:0 5px}.files-filestable.view-grid:not(.hidden) tbody td .popovermenu .menuitem span:not(.icon){overflow:hidden;text-overflow:ellipsis}.files-filestable.view-grid:not(.hidden) tr.hidden-file td.filename .name .nametext .extension{display:block}.files-filestable.view-grid:not(.hidden) tfoot{display:grid}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden){display:inline-block;margin:0 auto;height:418px}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td{padding-top:50px}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td:first-child,.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td.date{display:none}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td .info{margin-left:0}#view-toggle{background-color:var(--color-main-background-translucent);border:none;margin:0;padding:22px;opacity:.5;float:right;right:var(--default-grid-baseline);top:var(--default-grid-baseline);z-index:100;position:sticky}#view-toggle:hover,#view-toggle:focus,#showgridview:focus+#view-toggle{opacity:1}#view-toggle:focus-visible,#showgridview:focus-visible+#view-toggle{box-shadow:inset 0 0 0 2px var(--color-primary-element) !important}#showgridview{position:fixed;top:0}#body-public .files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext{max-width:124px}#body-public .files-filestable.view-grid:not(.hidden) tbody td .popovermenu{left:-80px}#body-public #view-toggle{position:absolute;right:0;top:0}#gallery-button{display:none}#tag_multiple_files_container{overflow:hidden;background-color:#fff;border-radius:3px;position:relative;display:flex;flex-wrap:wrap;margin-bottom:10px}#tag_multiple_files_container h3{width:100%;padding:0 18px}#tag_multiple_files_container .systemTagsInputFieldContainer{flex:1 1 80%;min-width:0;margin:0 12px}/*# sourceMappingURL=files.css.map */ +.actions{padding:3px;height:100%;display:inline-block;float:left}.actions input,.actions button,.actions .button{margin:0;float:left}.actions .button a{color:#555}.actions .button a:hover,.actions .button a:focus{background-color:var(--color-background-hover)}.actions .button a:active{background-color:var(--color-primary-element-light)}.actions.creatable{position:relative;display:flex;flex:1 1}.actions.creatable .button:not(:last-child){margin-right:3px}.actions.hidden{display:none}#trash{margin-right:8px;float:right;z-index:1010;padding:10px;font-weight:normal}.newFileMenu .error,.newFileMenu .error+.icon-confirm,.files-fileList .error{color:var(--color-error);border-color:var(--color-error)}.files-filestable{position:relative;width:100%;min-width:250px;display:block;flex-direction:column}.emptycontent:not(.hidden)~.files-filestable{display:none}.files-filestable thead{position:-webkit-sticky;position:sticky;top:44px;z-index:60;display:block;background-color:var(--color-main-background-translucent)}.files-filestable tbody{display:table;width:100%}.files-filestable tbody tr[data-permissions="0"],.files-filestable tbody tr[data-permissions="16"]{background-color:var(--color-background-dark)}.files-filestable tbody tr[data-permissions="0"] td.filename .nametext .innernametext,.files-filestable tbody tr[data-permissions="16"] td.filename .nametext .innernametext{color:var(--color-text-maxcontrast)}.files-filestable tbody tr[data-e2eencrypted=true] .selection{pointer-events:none}.files-filestable.hidden{display:none}.app-files #app-content>.viewcontainer{min-height:0%;width:100%}.app-files #app-content{width:calc(100% - 300px);overflow-anchor:none}.file-drag,.file-drag .files-filestable tbody tr,.file-drag .files-filestable tbody tr:hover{background-color:var(--color-primary-element-light) !important}.app-files #app-content.dir-drop{background-color:var(--color-main-background) !important}.file-drag .files-filestable tbody tr,.file-drag .files-filestable tbody tr:hover{background-color:rgba(0,0,0,0) !important}.app-files #app-content.dir-drop .files-filestable tbody tr.dropping-to-dir{background-color:var(--color-primary-element-light) !important}.nav-icon-files{background-image:var(--icon-folder-dark)}.nav-icon-recent{background-image:var(--icon-recent-dark)}.nav-icon-favorites{background-image:var(--icon-starred-dark)}.nav-icon-sharingin,.nav-icon-sharingout,.nav-icon-pendingshares,.nav-icon-shareoverview{background-image:var(--icon-share-dark)}.nav-icon-sharinglinks{background-image:var(--icon-public-dark)}.nav-icon-extstoragemounts{background-image:var(--icon-external-dark)}.nav-icon-trashbin{background-image:var(--icon-delete-dark)}.nav-icon-trashbin-starred{background-image:var(--icon-delete-#ff0000)}.nav-icon-deletedshares{background-image:var(--icon-unshare-dark)}.nav-icon-favorites-starred{background-image:var(--icon-starred-yellow)}#app-navigation .nav-files a.nav-icon-files{width:auto}#app-navigation .nav-files a.new{width:40px;height:32px;padding:0 10px;margin:0;cursor:pointer}#app-navigation .nav-files a.new.hidden{display:none}#app-navigation .nav-files a.new.disabled{opacity:.3}.files-filestable tbody tr{height:51px}.files-filestable tbody tr:hover,.files-filestable tbody tr:focus,.files-filestable tbody .name:focus,.files-filestable tbody tr:hover .filename form,table tr.mouseOver td{background-color:var(--color-background-hover)}.files-filestable tbody tr:active,.files-filestable tbody tr.highlighted,.files-filestable tbody tr.highlighted .name:focus,.files-filestable tbody tr.selected,.files-filestable tbody tr.searchresult{background-color:var(--color-primary-element-light)}tbody a{color:var(--color-main-text)}span.conflict-path,span.extension,span.uploading,td.date{color:var(--color-text-maxcontrast)}span.conflict-path,span.extension{-webkit-transition:opacity 300ms;-moz-transition:opacity 300ms;-o-transition:opacity 300ms;transition:opacity 300ms;vertical-align:top}tr:hover span.conflict-path,tr:focus span.conflict-path,tr:hover span.extension,tr:focus span.extension{opacity:1;color:var(--color-text-maxcontrast)}table th,table th a{color:var(--color-text-maxcontrast)}table.multiselect th a{color:var(--color-main-text)}table th .columntitle{display:block;padding:15px;height:50px;box-sizing:border-box;-moz-box-sizing:border-box;vertical-align:middle}table th .columntitle:focus-visible{border-radius:2px}table.multiselect th .columntitle{display:inline-block;margin-right:-20px}table th .columntitle.name{padding-left:0;margin-left:44px}table.multiselect th .columntitle.name{margin-left:0}table th .sort-indicator{width:10px;height:8px;margin-left:5px;display:inline-block;vertical-align:text-bottom;opacity:.3}.sort-indicator.hidden,.multiselect .sort-indicator,table.multiselect th:hover .sort-indicator.hidden,table.multiselect th:focus .sort-indicator.hidden{visibility:hidden}.multiselect .sort,.multiselect .sort span{cursor:default}table th:hover .sort-indicator.hidden,table th:focus .sort-indicator.hidden{visibility:visible}table th,table td{border-bottom:1px solid var(--color-border);text-align:left;font-weight:normal}table td{padding:0 15px;font-style:normal;background-position:8px center;background-repeat:no-repeat}table th.column-name{position:relative;width:9999px;padding:0}.column-name-container{position:relative;height:50px}table th.column-selection{padding-top:2px}table th.column-size,table td.filesize{text-align:right}table th.column-mtime,table td.date,table th.column-last,table td.column-last{-moz-box-sizing:border-box;box-sizing:border-box;position:relative;min-width:130px}#app-content-recent,#app-content-favorites,#app-content-shareoverview,#app-content-sharingout,#app-content-sharingin,#app-content-sharinglinks,#app-content-deletedshares,#app-content-pendingshares{margin-top:22px}#app-content-recent thead,#app-content-favorites thead,#app-content-shareoverview thead,#app-content-sharingout thead,#app-content-sharingin thead,#app-content-sharinglinks thead,#app-content-deletedshares thead,#app-content-pendingshares thead{top:0}table.multiselect thead th{background-color:var(--color-main-background-translucent);font-weight:bold}#app-content.with-app-sidebar table.multiselect thead{margin-right:27%}table.multiselect .column-name{position:relative;width:9999px}table.multiselect .column-mtime>a{display:none}table td.selection,table th.selection,table td.fileaction{width:32px;text-align:center}table td.filename a.name,table td.filename p.name{display:flex;position:relative;-moz-box-sizing:border-box;box-sizing:border-box;height:50px;line-height:50px;padding:0}table td.filename .thumbnail-wrapper{width:0;min-width:50px;max-width:50px;height:50px}table td.filename .thumbnail-wrapper.icon-loading-small:after{z-index:10}table td.filename .thumbnail-wrapper.icon-loading-small .thumbnail{opacity:.2}table td.filename .thumbnail{display:inline-block;width:32px;height:32px;background-size:contain;background-position:center;background-repeat:no-repeat;margin-left:9px;margin-top:9px;border-radius:var(--border-radius);cursor:pointer;position:absolute;z-index:4}table td.filename p.name .thumbnail{cursor:default}table tr[data-has-preview=true] .thumbnail{border:1px solid var(--color-border)}table:not(.view-grid) td.filename input.filename{width:70% !important;margin-left:48px !important;cursor:text}table td.filename form{margin-top:-40px;position:relative;top:-6px}table td.filename a,table td.login,table td.logout,table td.download,table td.upload,table td.create,table td.delete{padding:3px 8px 8px 3px}table td.filename .nametext,.modified,.column-last>span:first-child{float:left;padding:15px 0}.modified,.column-last>span:first-child{position:relative;overflow:hidden;text-overflow:ellipsis;width:110px}table td.filename{max-width:0}table td.filename .nametext{width:0;flex-grow:1;display:flex;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;height:100%;z-index:10;padding:0 20px 0 0}table td.filename .system-tags{--min-size: 32px;display:flex;justify-content:center;align-items:center;min-width:calc(var(--min-size)*2);max-width:300px}table td.filename .system-tags .system-tags__tag{padding:5px 10px;border:1px solid;border-radius:var(--border-radius-pill);border-color:var(--color-border);color:var(--color-text-maxcontrast);height:var(--min-size);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:22px;text-align:center}table td.filename .system-tags .system-tags__tag--more{overflow:visible;text-overflow:initial}table td.filename .system-tags .system-tags__tag+.system-tags__tag{margin-left:5px}.hide-hidden-files .files-filestable .files-fileList tr.hidden-file,.hide-hidden-files .files-filestable .files-fileList tr.hidden-file.dragging{display:none !important}.files-fileList tr.animate-opacity{-webkit-transition:opacity 250ms;-moz-transition:opacity 250ms;-o-transition:opacity 250ms;transition:opacity 250ms}.files-fileList tr.dragging{opacity:.2}table td.filename .nametext .innernametext{text-overflow:ellipsis;overflow:hidden;position:relative;vertical-align:top}table td.filename .uploadtext{position:absolute;font-weight:normal;margin-left:50px;left:0;bottom:0;height:20px;padding:0 4px;padding-left:1px;font-size:11px;line-height:22px;color:var(--color-text-maxcontrast);text-overflow:ellipsis;white-space:nowrap}table td.selection{padding:0}.files-fileList tr td.selection>.selectCheckBox+label:before{opacity:.3;margin-right:0}.files-fileList tr:hover td.selection>.selectCheckBox+label:before,.files-fileList tr:focus td.selection>.selectCheckBox+label:before,.files-fileList tr td.selection>.selectCheckBox:checked+label:before,.files-fileList tr.selected td.selection>.selectCheckBox+label:before{opacity:1}.files-fileList tr.halfselected td.selection>.selectCheckBox+label:before{opacity:.5}.files-fileList tr td.selection>.selectCheckBox+label,.select-all+label{padding:16px}.files-fileList tr td.selection>.selectCheckBox:focus-visible+label,.select-all:focus-visible+label{background-color:var(--color-background-hover);border-radius:var(--border-radius-pill);outline:none !important;border:2px solid var(--color-primary-element) !important;padding:14px}.files-fileList tr td.selection>.selectCheckBox:focus-visible+label,.select-all:focus-visible+label{outline-offset:0px}.files-fileList tr td.filename{position:relative;width:100%;padding-left:0;padding-right:0;-webkit-transition:background-image 500ms;-moz-transition:background-image 500ms;-o-transition:background-image 500ms;transition:background-image 500ms}.files-fileList tr td.filename a.name label,.files-fileList tr td.filename p.name label{position:absolute;width:80%;height:50px}.files-fileList tr td.filename .favorite{display:inline-block;float:left}.files-fileList tr td.filename .favorite-mark{position:absolute;display:block;top:-8px;right:-8px;line-height:100%;text-align:center}.files-fileList tr td.filename .favorite-mark.permanent{background-color:var(--color-main-background);mask:var(--icon-star-rounded-white) no-repeat;mask-size:22px 22px;width:22px;height:22px;display:flex;align-content:center;justify-content:center}.files-fileList tr:hover td.filename .favorite-mark.permanent{background-color:var(--color-background-hover)}#uploadsize-message,#delete-confirm{display:none}.fileactions{z-index:50}.busy .fileactions,.busy .action{visibility:hidden}.bubble,#app-navigation .app-navigation-entry-menu{min-width:100px}.files-fileList .icon-loading-small{opacity:1 !important;display:inline !important}.files-fileList .action.action-share-notification span,.files-fileList a.name{cursor:default !important}.files-fileList a.name.disabled *{cursor:default}.files-fileList a.name.disabled a,.files-fileList a.name.disabled a *{cursor:pointer}.files-fileList a.name.disabled:focus{background:none}a.action>img{height:16px;width:16px;vertical-align:text-bottom}a.action.action-editlocally img.icon{filter:var(--background-invert-if-dark)}.selectedActions{position:relative;display:inline-block;vertical-align:middle}.selectedActions.hidden{display:none}.selectedActions a{display:inline;line-height:50px;padding:16px 5px}.selectedActions a.hidden{display:none}.selectedActions a img{position:relative;vertical-align:text-bottom;margin-bottom:-1px}.selectedActions .actions-selected .icon-more{margin-top:-3px}.files-fileList td a a.action{display:inline;padding:17px 8px;line-height:50px;opacity:.3}.files-fileList td a a.action.action-share{padding:17px 14px}.files-fileList td a a.action.action-share.permanent:not(.shared-style) .icon-shared+span{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}.files-fileList td a a.action.action-share .avatar{display:inline-block;vertical-align:middle}.files-fileList td a a.action.action-menu{padding-top:17px;padding-bottom:17px;padding-left:14px;padding-right:14px}.files-fileList td a a.action.no-permission:hover,.files-fileList td a a.action.no-permission:focus{opacity:.3}.files-fileList td a a.action.disabled:hover,.files-fileList td a a.action.disabled:focus,.files-fileList td a a.action.disabled img{opacity:.3}.files-fileList td a a.action.disabled.action-download{opacity:.7}.files-fileList td a a.action.disabled.action-download:hover,.files-fileList td a a.action.disabled.action-download:focus{opacity:.7}.files-fileList td a a.action:hover,.files-fileList td a a.action:focus{opacity:1}.files-fileList td a a.action:focus{background-color:var(--color-background-hover);border-radius:var(--border-radius-pill)}.files-fileList td a .fileActionsMenu a.action,.files-fileList td a a.action.action-share.shared-style{opacity:.7}.files-fileList td a .fileActionsMenu .action.permanent{opacity:1}.files-fileList .action.action-share.permanent.shared-style span:not(.icon){display:inline-block;max-width:70px;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;margin-left:6px}.files-fileList .remoteAddress .userDomain{margin-left:0 !important}.files-fileList .favorite-mark.permanent{opacity:1}.files-fileList .fileActionsMenu a.action:hover,.files-fileList .fileActionsMenu a.action:focus,.files-fileList a.action.action-share.shared-style:hover,.files-fileList a.action.action-share.shared-style:focus{opacity:1}.files-fileList tr a.action.disabled{background:none}.selectedActions a.download.disabled,.files-fileList tr a.action.action-download.disabled{color:#000}.files-fileList tr:hover a.action.disabled:hover *{cursor:default}.summary{color:var(--color-text-maxcontrast);height:330px}.files-filestable .summary .filesummary{width:100%;padding-left:101px}#body-public .summary{height:180px}.summary:hover,.summary:focus,.summary,table tr.summary td{background-color:rgba(0,0,0,0)}.summary td{border-bottom:none;vertical-align:top;padding-top:20px}.summary td:first-child{padding:0}.hiddeninfo{white-space:pre-line}table.dragshadow{width:auto;z-index:2000}table.dragshadow td.filename{padding-left:60px;padding-right:16px;height:36px;max-width:unset}table.dragshadow td.size{padding-right:8px}.mask{z-index:50;position:absolute;top:0;left:0;right:0;bottom:0;background-color:var(--color-main-background);background-repeat:no-repeat no-repeat;background-position:50%;opacity:.7;transition:opacity 100ms;-moz-transition:opacity 100ms;-o-transition:opacity 100ms;-ms-transition:opacity 100ms;-webkit-transition:opacity 100ms}.mask.transparent{opacity:0}.newFileMenu{font-weight:300;top:100%;left:-48px !important;margin-top:4px;min-width:100px;z-index:1001}.newFileMenu::after{left:61px !important}.files-controls{box-sizing:border-box;position:-webkit-sticky;position:sticky;height:50px;padding:0;margin:0;background-color:var(--color-main-background-translucent);z-index:62;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;top:0;padding-left:50px}.files-controls .actions>div>.button,.files-controls .actions>div button,.files-controls .actions>.button,.files-controls .actions button{box-sizing:border-box;display:inline-block;display:flex;height:44px;width:44px;padding:9px;align-items:center;justify-content:center}.files-controls .actions>div .button.hidden,.files-controls .actions .button.hidden{display:none}.viewer-mode #app-navigation+#app-content .files-controls{left:0}.files-filestable .filename .action .icon,.files-filestable .selectedActions a .icon,.files-filestable .filename .favorite-mark .icon,.files-controls .actions .button .icon{display:inline-block;vertical-align:middle;background-size:16px 16px}.files-filestable .filename .favorite-mark .icon-star{background-image:none}.files-filestable .filename .favorite-mark .icon-starred{background-image:var(--icon-starred-yellow) !important}.files-filestable .filename .action .icon.hidden,.files-filestable .selectedActions a .icon.hidden,.files-controls .actions .button .icon.hidden{display:none}.files-filestable .filename .action .icon.loading,.files-filestable .selectedActions a .icon.loading,.files-controls .actions .button .icon.loading{width:15px;height:15px}.app-files .actions .button.new{position:relative}.breadcrumb{align-items:center}.breadcrumb .icon-home{border-radius:var(--border-radius)}.breadcrumb .canDrop>a,.files-filestable tbody tr.canDrop{background-color:rgba(0,130,201,.3)}.dropzone-background{background-color:rgba(0,130,201,.3)}.dropzone-background :hover{box-shadow:none !important}.notCreatable{margin-left:12px;margin-right:44px;margin-top:12px;color:var(--color-main-text);overflow:auto;min-width:160px;height:54px}.notCreatable:not(.hidden){display:flex}.notCreatable .icon-alert-outline{top:-15px;position:relative;margin-right:4px}.quota-navigation-item{margin:0 !important;border:none;border-radius:0;background-color:rgba(0,0,0,0);z-index:1;height:44px;display:flex !important;flex-direction:column}.quota-navigation-item__text{height:30px}.quota-navigation-item[href="#"],.quota-navigation-item[href="#"] *{cursor:default !important}.quota-navigation-item__container{height:5px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) thead tr{display:block;border-bottom:1px solid var(--color-border);background-color:var(--color-main-background-translucent)}.files-filestable.view-grid:not(.hidden) thead tr th{width:auto;border:none}.files-filestable.view-grid:not(.hidden) tbody{display:grid;grid-template-columns:repeat(auto-fill, 160px);justify-content:space-around;row-gap:15px;margin:15px 0}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden){display:block;position:relative;height:190px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted{background-color:rgba(0,0,0,0)}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .fileactions{background-color:var(--color-background-hover)}.files-filestable.view-grid:not(.hidden) tbody td{display:inline;border-bottom:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper{min-width:0;max-width:none;position:absolute;width:160px;height:160px;padding:14px;top:0;left:0;z-index:-1}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail{width:calc(100% - 2 * 14px);height:calc(100% - 2 * 14px);background-size:contain;margin:0;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:center}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail .favorite-mark{left:auto;top:-11px;right:-11px}.files-filestable.view-grid:not(.hidden) tbody td.filename .uploadtext{width:100%;margin:0;top:0;bottom:auto;height:28px;padding-top:4px;padding-left:28px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name{height:100%;border-radius:var(--border-radius);overflow:hidden;cursor:pointer !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext{display:flex;height:44px;margin-top:146px;text-align:center;line-height:44px;padding:0}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext{display:inline-block;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:before{content:"";flex:1;min-width:14px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:after{content:"";flex:1;min-width:44px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .extension{display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .system-tags{display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions{height:initial;margin-top:146px;display:flex;align-items:center;position:absolute;right:0}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action{padding:14px;width:44px;height:44px;display:flex;align-items:center;justify-content:center}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action:not(.action-menu){display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden .action-share img{padding:6px;border-radius:50%}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-restore-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-comment-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename form{padding:3px 14px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) tbody td.filename form input.filename{width:100%;margin-left:0;cursor:text}.files-filestable.view-grid:not(.hidden) tbody td.filesize,.files-filestable.view-grid:not(.hidden) tbody td.date{display:none}.files-filestable.view-grid:not(.hidden) tbody td.selection,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark{position:absolute;top:-8px;left:-8px;display:flex;z-index:10}.files-filestable.view-grid:not(.hidden) tbody td.selection label,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label{width:44px;height:44px;display:inline-flex;padding:14px}.files-filestable.view-grid:not(.hidden) tbody td.selection label::before,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label::before{margin:0;width:14px;height:14px}.files-filestable.view-grid:not(.hidden) tbody td .popovermenu{left:0;width:150px;margin:0 5px}.files-filestable.view-grid:not(.hidden) tbody td .popovermenu .menuitem span:not(.icon){overflow:hidden;text-overflow:ellipsis}.files-filestable.view-grid:not(.hidden) tr.hidden-file td.filename .name .nametext .extension{display:block}.files-filestable.view-grid:not(.hidden) tfoot{display:grid}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden){display:inline-block;margin:0 auto;height:418px}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td{padding-top:50px}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td:first-child,.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td.date{display:none}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td .info{margin-left:0}#view-toggle{background-color:var(--color-main-background-translucent);border:none;margin:0;padding:22px;opacity:.5;float:right;right:var(--default-grid-baseline);top:var(--default-grid-baseline);z-index:100;position:sticky}#view-toggle:hover,#view-toggle:focus,#showgridview:focus+#view-toggle{opacity:1}#view-toggle:focus-visible,#showgridview:focus-visible+#view-toggle{box-shadow:inset 0 0 0 2px var(--color-primary-element) !important}#showgridview{position:fixed;top:0}#body-public .files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext{max-width:124px}#body-public .files-filestable.view-grid:not(.hidden) tbody td .popovermenu{left:-80px}#body-public #view-toggle{position:absolute;right:0;top:0}#gallery-button{display:none}#tag_multiple_files_container{overflow:hidden;background-color:#fff;border-radius:3px;position:relative;display:flex;flex-wrap:wrap;margin-bottom:10px}#tag_multiple_files_container h3{width:100%;padding:0 18px}#tag_multiple_files_container .systemTagsInputFieldContainer{flex:1 1 80%;min-width:0;margin:0 12px}/*# sourceMappingURL=files.css.map */ diff --git a/apps/files/css/files.css.map b/apps/files/css/files.css.map index 0da56c7206b..14c23a8f68d 100644 --- a/apps/files/css/files.css.map +++ b/apps/files/css/files.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["files.scss","../../../core/css/functions.scss"],"names":[],"mappings":"AAWA,SAEC,YACA,YACA,qBACA,WAED,oEACA,8BACA,kDAEC,+CAED,0BACC,oDAGD,mBACC,kBACA,aACA,SACA,4CACC,iBAIF,gBACC,aAGD,OACC,iBACA,YACA,aACA,aACA,mBAGD,6EAGC,yBACA,gCAID,kBACC,kBACA,WACA,gBACA,cACA,sBAEA,6CACC,aAGD,wBACC,wBACA,gBAEA,SAEA,WACA,cACA,0DAMD,wBACC,cACA,WAEA,mGAEC,8CAEA,6KACC,oCAKF,8DACC,oBAKH,yBACC,aAID,uCACC,cACA,WAGD,wBAGC,yBAEA,qBAGD,6FACC,+DAGD,iCACC,yDAGD,kFACC,0CAGD,4EACC,+DAID,gBCxEC,yCD2ED,iBC3EC,yCD8ED,oBC9EC,0CDiFD,yFCjFC,wCDuFD,uBCvFC,yCD0FD,2BC1FC,2CD6FD,mBC7FC,yCDgGD,2BChGC,4CDmGD,wBCnGC,0CDsGD,4BCtGC,4CD0GD,4CACC,WAGD,iCACC,WACA,YACA,eACA,SACA,eAGD,wCACC,aAGD,0CACC,WAGD,2BACC,YAED,4KAKC,+CAED,wMAKC,oDAGD,qCAEA,yDACC,oCAED,kCACC,iCACA,8BACA,4BACA,yBACA,mBAED,wGAIC,UACA,oCAGD,oBACC,oCAED,uBACC,6BAED,sBACC,cACA,aACA,YACA,sBACA,2BACA,sBACA,oCACC,kBAGF,kCACC,qBACA,mBAED,2BACC,eACA,iBAGD,uCACC,cAGD,yBACC,WACA,WACA,gBACA,qBACA,2BACA,WAED,wJAIC,kBAED,2CACC,eAED,4EAEC,mBAGD,kBAEC,4CACA,gBACA,mBAED,SACC,eACA,kBACA,+BACA,4BAED,qBACC,kBACA,aACA,UAGD,uBACC,kBACA,YAGD,0BACC,gBAED,uCACC,iBAED,8EAEC,2BACA,sBACA,kBAEA,gBAGD,qMAQC,gBACA,qPACC,MAIF,2BACC,0DACA,iBAGD,sDACC,iBAGD,+BACC,kBACA,aAED,kCACC,aAGD,0DAGC,WACA,kBAED,kDAEC,aACA,kBACA,2BACA,sBACA,YACA,iBACA,UAED,qCAEC,QACA,eACA,eACA,YAGA,8DACC,WAED,mEACC,WAGF,6BACC,qBACA,WACA,YACA,wBACA,2BACA,4BACA,gBACA,eACA,mCACA,eACA,kBACA,UAED,oCACC,eAID,2CACC,qCAGD,iDACC,qBACA,4BACA,YAED,uBACC,iBACA,kBACA,SAGD,6IACA,8FAEA,wCACC,kBACA,gBACA,uBACA,YAKA,kBACC,YACA,4BACC,QACA,YACA,aACA,gBACA,mBACA,uBACA,YACA,WACA,mBAID,+BACC,iBACA,aACA,uBACA,mBACA,cACA,kCACA,gBAEA,iDACC,iBACA,iBACA,wCACA,iCACA,oCACA,uBACA,mBACA,gBACA,uBACA,iBACA,kBAEA,uDACC,iBACA,sBAID,mEACC,gBAOL,iJAEC,wBAGD,mCACC,iCACA,8BACA,4BACA,yBAED,4BACC,WAGD,2CACC,uBACA,gBACA,kBACA,mBAKD,8BACC,kBACA,mBAEA,iBACA,OACA,SACA,YACA,cAEA,iBACA,eAEA,iBACA,oCACA,uBACA,mBAGD,mBACC,UAID,6DACC,WACA,eAID,iRAIC,UAID,0EACC,WAMA,wEACC,aAGD,oGACC,+CACA,wCACA,wBACA,yDACA,aAIF,oGAEC,mBAGD,+BACC,kBACA,WACA,eACA,gBACA,wJAGD,wFAEC,kBACA,UACA,YAGD,yCACC,qBACA,WAED,8CACC,kBACA,cACA,SACA,WACA,iBACA,kBACA,wDAEC,8CACA,8CACA,oBAEA,WACA,YACA,aACA,qBACA,uBAGF,8DACC,+CAGD,iDAGA,aACC,WAGD,iCACC,kBAID,mDAEC,gBAID,oCACC,qBACA,0BAGD,8EACC,0BAOA,kCACC,eAGD,sEACC,eAGD,sCACC,gBAIF,aACC,YACA,WACA,2BAGD,qCACC,wCAID,iBACI,kBACA,qBACA,sBAEJ,wBACI,aAEJ,mBACC,eACA,iBACA,iBAGD,0BACC,aAED,uBACC,kBACA,2BACA,mBAGD,8CACC,gBAIA,8BACC,eACA,iBACA,iBACA,WACA,2CACC,kBACA,0FAGC,kBACA,cACA,SACA,UACA,WACA,gBAED,mDACC,qBACA,sBAGF,0CACC,iBACA,oBACA,kBACA,mBAGA,oGACC,WAID,qIAEC,WAED,uDACC,WACA,0HACC,WAIH,wEACC,UAED,oCACC,+CACA,wCAGF,uGACC,WAED,wDACC,UAKF,4EACC,qBACA,eACA,gBACA,uBACA,sBACA,gBAGD,2CACC,yBAGD,yCACC,UAGD,kNAKC,UAGD,qCACC,gBAGD,0FAEC,WAGD,mDACC,eAGD,SACC,oCAGA,aAED,wCACC,WAEA,mBAKD,sBACC,aAED,2DAIC,+BAED,YACC,mBACA,mBACA,iBAED,wBACC,UAED,YACC,qBAGD,iBACC,WACA,aAED,6BACC,kBACA,mBACA,YAGA,gBAED,yBACC,kBAED,MACC,WACA,kBACA,MACA,OACA,QACA,SACA,8CACA,sCACA,wBACA,WACA,yBACA,8BACA,4BACA,6BACA,iCAED,kBACC,UAGD,aACC,gBACA,SACA,sBACA,eACA,gBACA,aAGA,oBACC,qBAKF,gBACC,sBACA,wBACA,gBACA,YACA,UACA,SACA,0DACA,WACA,yBACA,sBACA,qBACA,iBACA,aACA,MACA,kBAKE,0IACC,sBACA,qBACA,aACA,YACA,WACA,YACA,mBACA,uBAED,oFACC,aAQJ,0DACC,OAGD,6KAIC,qBACA,sBACA,0BAMA,sDACC,sBAED,yDACC,uDAIF,iJAGC,aAGD,oJAGC,WACA,YAGD,gCACC,kBAGD,YACC,mBAEA,uBACC,mCAIF,0DAEC,oCAED,qBACC,oCACA,4BACC,2BAIF,cACC,iBACA,kBACA,gBACA,6BACA,cACA,gBACA,YAEA,2BACC,aAGD,kCACC,UACA,kBACA,iBAIF,uBACC,oBACA,YACA,gBACA,+BACA,UACA,YACA,wBACA,sBAEA,6BACC,YAKA,oEACC,0BAIF,kCACC,WACA,mCAWA,kDACC,cACA,4CACA,0DACA,qDACC,WACA,YAMH,+CACC,aACA,+CACA,6BACA,aACA,cAGA,+DACC,cACA,kBACA,aACA,mCAEA,0fAKC,+BAEA,oxDAGC,+CAKH,kDACC,eACA,mBAGC,8EACC,YACA,eACA,kBACA,MAvDQ,MAwDR,OAxDQ,MAyDR,QAxDO,KAyDP,MACA,OACA,WAEA,yFACC,4BACA,6BACA,wBACA,SACA,mCACA,4BACA,2BAKA,wGACC,UACA,UACA,YAKH,uEACC,WACA,SACA,MACA,YAEA,YACA,gBAEA,kBAGD,iEACC,YACA,mCAIA,gBAKA,0BAEA,2EACC,aACA,YACA,iBACA,kBACA,iBACA,UAEA,0FACC,qBACA,kBACA,gBACA,uBACA,mBAED,kFACC,WACA,OACA,eAED,iFACC,WACA,OACA,eAID,sFACC,aAKF,8EACC,aAGD,8EACC,eACA,iBACA,aACA,mBACA,kBACA,QAEA,sFACC,QAxJK,KAyJL,WACA,YACA,aACA,mBACA,uBAGA,wGACC,aAQH,2GACC,yBAEA,6HACC,YACA,kBAIF,6GACC,yBAGD,6GACC,yBAIF,gEACC,iBACA,mCAEA,+EACC,WACA,cACA,YAMH,kHAEC,aAGD,sIAEC,kBACA,SACA,UACA,aACA,WAEA,kJACC,WACA,YACA,oBACA,QAzNO,KA0NP,kKACC,SACA,MA5NM,KA6NN,OA7NM,KAmOT,+DACC,OACA,YACA,aAGA,yFACC,gBACA,uBAMJ,+FACC,cAID,+CACC,aAEA,qEACC,qBACA,cAEA,aAEA,wEACC,iBAEA,iKAEC,aAGD,8EACI,cAQR,aACC,0DACA,YACA,SACA,aACA,WACA,YACA,mCACA,iCACA,YACA,gBAEA,uEAGC,UAGD,oEAEC,mEASF,cACC,eACA,MAOC,uGACC,gBAID,4EACC,WAKF,0BACC,kBACA,QACA,MAKF,gBACC,aAGD,8BACC,gBACA,sBACA,kBACA,kBACA,aACA,eACA,mBAEA,iCACC,WACA,eAGD,6DACC,aACA,YACA","file":"files.css"}
\ No newline at end of file +{"version":3,"sourceRoot":"","sources":["files.scss","../../../core/css/functions.scss"],"names":[],"mappings":"AAWA,SAEC,YACA,YACA,qBACA,WAED,oEACA,8BACA,kDAEC,+CAED,0BACC,oDAGD,mBACC,kBACA,aACA,SACA,4CACC,iBAIF,gBACC,aAGD,OACC,iBACA,YACA,aACA,aACA,mBAGD,6EAGC,yBACA,gCAID,kBACC,kBACA,WACA,gBACA,cACA,sBAEA,6CACC,aAGD,wBACC,wBACA,gBAEA,SAEA,WACA,cACA,0DAMD,wBACC,cACA,WAEA,mGAEC,8CAEA,6KACC,oCAKF,8DACC,oBAKH,yBACC,aAID,uCACC,cACA,WAGD,wBAGC,yBAEA,qBAGD,6FACC,+DAGD,iCACC,yDAGD,kFACC,0CAGD,4EACC,+DAID,gBCxEC,yCD2ED,iBC3EC,yCD8ED,oBC9EC,0CDiFD,yFCjFC,wCDuFD,uBCvFC,yCD0FD,2BC1FC,2CD6FD,mBC7FC,yCDgGD,2BChGC,4CDmGD,wBCnGC,0CDsGD,4BCtGC,4CD0GD,4CACC,WAGD,iCACC,WACA,YACA,eACA,SACA,eAGD,wCACC,aAGD,0CACC,WAGD,2BACC,YAED,4KAKC,+CAED,wMAKC,oDAGD,qCAEA,yDACC,oCAED,kCACC,iCACA,8BACA,4BACA,yBACA,mBAED,wGAIC,UACA,oCAGD,oBACC,oCAED,uBACC,6BAED,sBACC,cACA,aACA,YACA,sBACA,2BACA,sBACA,oCACC,kBAGF,kCACC,qBACA,mBAED,2BACC,eACA,iBAGD,uCACC,cAGD,yBACC,WACA,WACA,gBACA,qBACA,2BACA,WAED,wJAIC,kBAED,2CACC,eAED,4EAEC,mBAGD,kBAEC,4CACA,gBACA,mBAED,SACC,eACA,kBACA,+BACA,4BAED,qBACC,kBACA,aACA,UAGD,uBACC,kBACA,YAGD,0BACC,gBAED,uCACC,iBAED,8EAEC,2BACA,sBACA,kBAEA,gBAGD,qMAQC,gBACA,qPACC,MAIF,2BACC,0DACA,iBAGD,sDACC,iBAGD,+BACC,kBACA,aAED,kCACC,aAGD,0DAGC,WACA,kBAED,kDAEC,aACA,kBACA,2BACA,sBACA,YACA,iBACA,UAED,qCAEC,QACA,eACA,eACA,YAGA,8DACC,WAED,mEACC,WAGF,6BACC,qBACA,WACA,YACA,wBACA,2BACA,4BACA,gBACA,eACA,mCACA,eACA,kBACA,UAED,oCACC,eAID,2CACC,qCAGD,iDACC,qBACA,4BACA,YAED,uBACC,iBACA,kBACA,SAGD,6IACA,8FAEA,wCACC,kBACA,gBACA,uBACA,YAKA,kBACC,YACA,4BACC,QACA,YACA,aACA,gBACA,mBACA,uBACA,YACA,WACA,mBAID,+BACC,iBACA,aACA,uBACA,mBACA,kCACA,gBAEA,iDACC,iBACA,iBACA,wCACA,iCACA,oCACA,uBACA,mBACA,gBACA,uBACA,iBACA,kBAEA,uDACC,iBACA,sBAID,mEACC,gBAOL,iJAEC,wBAGD,mCACC,iCACA,8BACA,4BACA,yBAED,4BACC,WAGD,2CACC,uBACA,gBACA,kBACA,mBAKD,8BACC,kBACA,mBAEA,iBACA,OACA,SACA,YACA,cAEA,iBACA,eAEA,iBACA,oCACA,uBACA,mBAGD,mBACC,UAID,6DACC,WACA,eAID,iRAIC,UAID,0EACC,WAMA,wEACC,aAGD,oGACC,+CACA,wCACA,wBACA,yDACA,aAIF,oGAEC,mBAGD,+BACC,kBACA,WACA,eACA,gBACA,wJAGD,wFAEC,kBACA,UACA,YAGD,yCACC,qBACA,WAED,8CACC,kBACA,cACA,SACA,WACA,iBACA,kBACA,wDAEC,8CACA,8CACA,oBAEA,WACA,YACA,aACA,qBACA,uBAGF,8DACC,+CAGD,iDAGA,aACC,WAGD,iCACC,kBAID,mDAEC,gBAID,oCACC,qBACA,0BAGD,8EACC,0BAOA,kCACC,eAGD,sEACC,eAGD,sCACC,gBAIF,aACC,YACA,WACA,2BAGD,qCACC,wCAID,iBACI,kBACA,qBACA,sBAEJ,wBACI,aAEJ,mBACC,eACA,iBACA,iBAGD,0BACC,aAED,uBACC,kBACA,2BACA,mBAGD,8CACC,gBAIA,8BACC,eACA,iBACA,iBACA,WACA,2CACC,kBACA,0FAGC,kBACA,cACA,SACA,UACA,WACA,gBAED,mDACC,qBACA,sBAGF,0CACC,iBACA,oBACA,kBACA,mBAGA,oGACC,WAID,qIAEC,WAED,uDACC,WACA,0HACC,WAIH,wEACC,UAED,oCACC,+CACA,wCAGF,uGACC,WAED,wDACC,UAKF,4EACC,qBACA,eACA,gBACA,uBACA,sBACA,gBAGD,2CACC,yBAGD,yCACC,UAGD,kNAKC,UAGD,qCACC,gBAGD,0FAEC,WAGD,mDACC,eAGD,SACC,oCAGA,aAED,wCACC,WAEA,mBAKD,sBACC,aAED,2DAIC,+BAED,YACC,mBACA,mBACA,iBAED,wBACC,UAED,YACC,qBAGD,iBACC,WACA,aAED,6BACC,kBACA,mBACA,YAGA,gBAED,yBACC,kBAED,MACC,WACA,kBACA,MACA,OACA,QACA,SACA,8CACA,sCACA,wBACA,WACA,yBACA,8BACA,4BACA,6BACA,iCAED,kBACC,UAGD,aACC,gBACA,SACA,sBACA,eACA,gBACA,aAGA,oBACC,qBAKF,gBACC,sBACA,wBACA,gBACA,YACA,UACA,SACA,0DACA,WACA,yBACA,sBACA,qBACA,iBACA,aACA,MACA,kBAKE,0IACC,sBACA,qBACA,aACA,YACA,WACA,YACA,mBACA,uBAED,oFACC,aAQJ,0DACC,OAGD,6KAIC,qBACA,sBACA,0BAMA,sDACC,sBAED,yDACC,uDAIF,iJAGC,aAGD,oJAGC,WACA,YAGD,gCACC,kBAGD,YACC,mBAEA,uBACC,mCAIF,0DAEC,oCAED,qBACC,oCACA,4BACC,2BAIF,cACC,iBACA,kBACA,gBACA,6BACA,cACA,gBACA,YAEA,2BACC,aAGD,kCACC,UACA,kBACA,iBAIF,uBACC,oBACA,YACA,gBACA,+BACA,UACA,YACA,wBACA,sBAEA,6BACC,YAKA,oEACC,0BAIF,kCACC,WACA,mCAWA,kDACC,cACA,4CACA,0DACA,qDACC,WACA,YAMH,+CACC,aACA,+CACA,6BACA,aACA,cAGA,+DACC,cACA,kBACA,aACA,mCAEA,0fAKC,+BAEA,oxDAGC,+CAKH,kDACC,eACA,mBAGC,8EACC,YACA,eACA,kBACA,MAvDQ,MAwDR,OAxDQ,MAyDR,QAxDO,KAyDP,MACA,OACA,WAEA,yFACC,4BACA,6BACA,wBACA,SACA,mCACA,4BACA,2BAKA,wGACC,UACA,UACA,YAKH,uEACC,WACA,SACA,MACA,YAEA,YACA,gBAEA,kBAGD,iEACC,YACA,mCAIA,gBAKA,0BAEA,2EACC,aACA,YACA,iBACA,kBACA,iBACA,UAEA,0FACC,qBACA,kBACA,gBACA,uBACA,mBAED,kFACC,WACA,OACA,eAED,iFACC,WACA,OACA,eAID,sFACC,aAKF,8EACC,aAGD,8EACC,eACA,iBACA,aACA,mBACA,kBACA,QAEA,sFACC,QAxJK,KAyJL,WACA,YACA,aACA,mBACA,uBAGA,wGACC,aAQH,2GACC,yBAEA,6HACC,YACA,kBAIF,6GACC,yBAGD,6GACC,yBAIF,gEACC,iBACA,mCAEA,+EACC,WACA,cACA,YAMH,kHAEC,aAGD,sIAEC,kBACA,SACA,UACA,aACA,WAEA,kJACC,WACA,YACA,oBACA,QAzNO,KA0NP,kKACC,SACA,MA5NM,KA6NN,OA7NM,KAmOT,+DACC,OACA,YACA,aAGA,yFACC,gBACA,uBAMJ,+FACC,cAID,+CACC,aAEA,qEACC,qBACA,cAEA,aAEA,wEACC,iBAEA,iKAEC,aAGD,8EACI,cAQR,aACC,0DACA,YACA,SACA,aACA,WACA,YACA,mCACA,iCACA,YACA,gBAEA,uEAGC,UAGD,oEAEC,mEASF,cACC,eACA,MAOC,uGACC,gBAID,4EACC,WAKF,0BACC,kBACA,QACA,MAKF,gBACC,aAGD,8BACC,gBACA,sBACA,kBACA,kBACA,aACA,eACA,mBAEA,iCACC,WACA,eAGD,6DACC,aACA,YACA","file":"files.css"}
\ No newline at end of file diff --git a/apps/files/css/files.scss b/apps/files/css/files.scss index 0bd8495c9ac..0437ad79875 100644 --- a/apps/files/css/files.scss +++ b/apps/files/css/files.scss @@ -445,7 +445,6 @@ table { display: flex; justify-content: center; align-items: center; - flex: 1 1 100%; min-width: calc(var(--min-size) * 2); max-width: 300px; diff --git a/apps/files/css/merged.css b/apps/files/css/merged.css index c567f17a1c0..38574ea3b86 100644 --- a/apps/files/css/merged.css +++ b/apps/files/css/merged.css @@ -1 +1 @@ -.actions{padding:3px;height:100%;display:inline-block;float:left}.actions input,.actions button,.actions .button{margin:0;float:left}.actions .button a{color:#555}.actions .button a:hover,.actions .button a:focus{background-color:var(--color-background-hover)}.actions .button a:active{background-color:var(--color-primary-element-light)}.actions.creatable{position:relative;display:flex;flex:1 1}.actions.creatable .button:not(:last-child){margin-right:3px}.actions.hidden{display:none}#trash{margin-right:8px;float:right;z-index:1010;padding:10px;font-weight:normal}.newFileMenu .error,.newFileMenu .error+.icon-confirm,.files-fileList .error{color:var(--color-error);border-color:var(--color-error)}.files-filestable{position:relative;width:100%;min-width:250px;display:block;flex-direction:column}.emptycontent:not(.hidden)~.files-filestable{display:none}.files-filestable thead{position:-webkit-sticky;position:sticky;top:44px;z-index:60;display:block;background-color:var(--color-main-background-translucent)}.files-filestable tbody{display:table;width:100%}.files-filestable tbody tr[data-permissions="0"],.files-filestable tbody tr[data-permissions="16"]{background-color:var(--color-background-dark)}.files-filestable tbody tr[data-permissions="0"] td.filename .nametext .innernametext,.files-filestable tbody tr[data-permissions="16"] td.filename .nametext .innernametext{color:var(--color-text-maxcontrast)}.files-filestable tbody tr[data-e2eencrypted=true] .selection{pointer-events:none}.files-filestable.hidden{display:none}.app-files #app-content>.viewcontainer{min-height:0%;width:100%}.app-files #app-content{width:calc(100% - 300px);overflow-anchor:none}.file-drag,.file-drag .files-filestable tbody tr,.file-drag .files-filestable tbody tr:hover{background-color:var(--color-primary-element-light) !important}.app-files #app-content.dir-drop{background-color:var(--color-main-background) !important}.file-drag .files-filestable tbody tr,.file-drag .files-filestable tbody tr:hover{background-color:rgba(0,0,0,0) !important}.app-files #app-content.dir-drop .files-filestable tbody tr.dropping-to-dir{background-color:var(--color-primary-element-light) !important}.nav-icon-files{background-image:var(--icon-folder-dark)}.nav-icon-recent{background-image:var(--icon-recent-dark)}.nav-icon-favorites{background-image:var(--icon-starred-dark)}.nav-icon-sharingin,.nav-icon-sharingout,.nav-icon-pendingshares,.nav-icon-shareoverview{background-image:var(--icon-share-dark)}.nav-icon-sharinglinks{background-image:var(--icon-public-dark)}.nav-icon-extstoragemounts{background-image:var(--icon-external-dark)}.nav-icon-trashbin{background-image:var(--icon-delete-dark)}.nav-icon-trashbin-starred{background-image:var(--icon-delete-#ff0000)}.nav-icon-deletedshares{background-image:var(--icon-unshare-dark)}.nav-icon-favorites-starred{background-image:var(--icon-starred-yellow)}#app-navigation .nav-files a.nav-icon-files{width:auto}#app-navigation .nav-files a.new{width:40px;height:32px;padding:0 10px;margin:0;cursor:pointer}#app-navigation .nav-files a.new.hidden{display:none}#app-navigation .nav-files a.new.disabled{opacity:.3}.files-filestable tbody tr{height:51px}.files-filestable tbody tr:hover,.files-filestable tbody tr:focus,.files-filestable tbody .name:focus,.files-filestable tbody tr:hover .filename form,table tr.mouseOver td{background-color:var(--color-background-hover)}.files-filestable tbody tr:active,.files-filestable tbody tr.highlighted,.files-filestable tbody tr.highlighted .name:focus,.files-filestable tbody tr.selected,.files-filestable tbody tr.searchresult{background-color:var(--color-primary-element-light)}tbody a{color:var(--color-main-text)}span.conflict-path,span.extension,span.uploading,td.date{color:var(--color-text-maxcontrast)}span.conflict-path,span.extension{-webkit-transition:opacity 300ms;-moz-transition:opacity 300ms;-o-transition:opacity 300ms;transition:opacity 300ms;vertical-align:top}tr:hover span.conflict-path,tr:focus span.conflict-path,tr:hover span.extension,tr:focus span.extension{opacity:1;color:var(--color-text-maxcontrast)}table th,table th a{color:var(--color-text-maxcontrast)}table.multiselect th a{color:var(--color-main-text)}table th .columntitle{display:block;padding:15px;height:50px;box-sizing:border-box;-moz-box-sizing:border-box;vertical-align:middle}table th .columntitle:focus-visible{border-radius:2px}table.multiselect th .columntitle{display:inline-block;margin-right:-20px}table th .columntitle.name{padding-left:0;margin-left:44px}table.multiselect th .columntitle.name{margin-left:0}table th .sort-indicator{width:10px;height:8px;margin-left:5px;display:inline-block;vertical-align:text-bottom;opacity:.3}.sort-indicator.hidden,.multiselect .sort-indicator,table.multiselect th:hover .sort-indicator.hidden,table.multiselect th:focus .sort-indicator.hidden{visibility:hidden}.multiselect .sort,.multiselect .sort span{cursor:default}table th:hover .sort-indicator.hidden,table th:focus .sort-indicator.hidden{visibility:visible}table th,table td{border-bottom:1px solid var(--color-border);text-align:left;font-weight:normal}table td{padding:0 15px;font-style:normal;background-position:8px center;background-repeat:no-repeat}table th.column-name{position:relative;width:9999px;padding:0}.column-name-container{position:relative;height:50px}table th.column-selection{padding-top:2px}table th.column-size,table td.filesize{text-align:right}table th.column-mtime,table td.date,table th.column-last,table td.column-last{-moz-box-sizing:border-box;box-sizing:border-box;position:relative;min-width:130px}#app-content-recent,#app-content-favorites,#app-content-shareoverview,#app-content-sharingout,#app-content-sharingin,#app-content-sharinglinks,#app-content-deletedshares,#app-content-pendingshares{margin-top:22px}#app-content-recent thead,#app-content-favorites thead,#app-content-shareoverview thead,#app-content-sharingout thead,#app-content-sharingin thead,#app-content-sharinglinks thead,#app-content-deletedshares thead,#app-content-pendingshares thead{top:0}table.multiselect thead th{background-color:var(--color-main-background-translucent);font-weight:bold}#app-content.with-app-sidebar table.multiselect thead{margin-right:27%}table.multiselect .column-name{position:relative;width:9999px}table.multiselect .column-mtime>a{display:none}table td.selection,table th.selection,table td.fileaction{width:32px;text-align:center}table td.filename a.name,table td.filename p.name{display:flex;position:relative;-moz-box-sizing:border-box;box-sizing:border-box;height:50px;line-height:50px;padding:0}table td.filename .thumbnail-wrapper{width:0;min-width:50px;max-width:50px;height:50px}table td.filename .thumbnail-wrapper.icon-loading-small:after{z-index:10}table td.filename .thumbnail-wrapper.icon-loading-small .thumbnail{opacity:.2}table td.filename .thumbnail{display:inline-block;width:32px;height:32px;background-size:contain;background-position:center;background-repeat:no-repeat;margin-left:9px;margin-top:9px;border-radius:var(--border-radius);cursor:pointer;position:absolute;z-index:4}table td.filename p.name .thumbnail{cursor:default}table tr[data-has-preview=true] .thumbnail{border:1px solid var(--color-border)}table:not(.view-grid) td.filename input.filename{width:70% !important;margin-left:48px !important;cursor:text}table td.filename form{margin-top:-40px;position:relative;top:-6px}table td.filename a,table td.login,table td.logout,table td.download,table td.upload,table td.create,table td.delete{padding:3px 8px 8px 3px}table td.filename .nametext,.modified,.column-last>span:first-child{float:left;padding:15px 0}.modified,.column-last>span:first-child{position:relative;overflow:hidden;text-overflow:ellipsis;width:110px}table td.filename{max-width:0}table td.filename .nametext{width:0;flex-grow:1;display:flex;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;height:100%;z-index:10;padding:0 20px 0 0}table td.filename .system-tags{--min-size: 32px;display:flex;justify-content:center;align-items:center;flex:1 1 100%;min-width:calc(var(--min-size)*2);max-width:300px}table td.filename .system-tags .system-tags__tag{padding:5px 10px;border:1px solid;border-radius:var(--border-radius-pill);border-color:var(--color-border);color:var(--color-text-maxcontrast);height:var(--min-size);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:22px;text-align:center}table td.filename .system-tags .system-tags__tag--more{overflow:visible;text-overflow:initial}table td.filename .system-tags .system-tags__tag+.system-tags__tag{margin-left:5px}.hide-hidden-files .files-filestable .files-fileList tr.hidden-file,.hide-hidden-files .files-filestable .files-fileList tr.hidden-file.dragging{display:none !important}.files-fileList tr.animate-opacity{-webkit-transition:opacity 250ms;-moz-transition:opacity 250ms;-o-transition:opacity 250ms;transition:opacity 250ms}.files-fileList tr.dragging{opacity:.2}table td.filename .nametext .innernametext{text-overflow:ellipsis;overflow:hidden;position:relative;vertical-align:top}table td.filename .uploadtext{position:absolute;font-weight:normal;margin-left:50px;left:0;bottom:0;height:20px;padding:0 4px;padding-left:1px;font-size:11px;line-height:22px;color:var(--color-text-maxcontrast);text-overflow:ellipsis;white-space:nowrap}table td.selection{padding:0}.files-fileList tr td.selection>.selectCheckBox+label:before{opacity:.3;margin-right:0}.files-fileList tr:hover td.selection>.selectCheckBox+label:before,.files-fileList tr:focus td.selection>.selectCheckBox+label:before,.files-fileList tr td.selection>.selectCheckBox:checked+label:before,.files-fileList tr.selected td.selection>.selectCheckBox+label:before{opacity:1}.files-fileList tr.halfselected td.selection>.selectCheckBox+label:before{opacity:.5}.files-fileList tr td.selection>.selectCheckBox+label,.select-all+label{padding:16px}.files-fileList tr td.selection>.selectCheckBox:focus-visible+label,.select-all:focus-visible+label{background-color:var(--color-background-hover);border-radius:var(--border-radius-pill);outline:none !important;border:2px solid var(--color-primary-element) !important;padding:14px}.files-fileList tr td.selection>.selectCheckBox:focus-visible+label,.select-all:focus-visible+label{outline-offset:0px}.files-fileList tr td.filename{position:relative;width:100%;padding-left:0;padding-right:0;-webkit-transition:background-image 500ms;-moz-transition:background-image 500ms;-o-transition:background-image 500ms;transition:background-image 500ms}.files-fileList tr td.filename a.name label,.files-fileList tr td.filename p.name label{position:absolute;width:80%;height:50px}.files-fileList tr td.filename .favorite{display:inline-block;float:left}.files-fileList tr td.filename .favorite-mark{position:absolute;display:block;top:-8px;right:-8px;line-height:100%;text-align:center}.files-fileList tr td.filename .favorite-mark.permanent{background-color:var(--color-main-background);mask:var(--icon-star-rounded-white) no-repeat;mask-size:22px 22px;width:22px;height:22px;display:flex;align-content:center;justify-content:center}.files-fileList tr:hover td.filename .favorite-mark.permanent{background-color:var(--color-background-hover)}#uploadsize-message,#delete-confirm{display:none}.fileactions{z-index:50}.busy .fileactions,.busy .action{visibility:hidden}.bubble,#app-navigation .app-navigation-entry-menu{min-width:100px}.files-fileList .icon-loading-small{opacity:1 !important;display:inline !important}.files-fileList .action.action-share-notification span,.files-fileList a.name{cursor:default !important}.files-fileList a.name.disabled *{cursor:default}.files-fileList a.name.disabled a,.files-fileList a.name.disabled a *{cursor:pointer}.files-fileList a.name.disabled:focus{background:none}a.action>img{height:16px;width:16px;vertical-align:text-bottom}a.action.action-editlocally img.icon{filter:var(--background-invert-if-dark)}.selectedActions{position:relative;display:inline-block;vertical-align:middle}.selectedActions.hidden{display:none}.selectedActions a{display:inline;line-height:50px;padding:16px 5px}.selectedActions a.hidden{display:none}.selectedActions a img{position:relative;vertical-align:text-bottom;margin-bottom:-1px}.selectedActions .actions-selected .icon-more{margin-top:-3px}.files-fileList td a a.action{display:inline;padding:17px 8px;line-height:50px;opacity:.3}.files-fileList td a a.action.action-share{padding:17px 14px}.files-fileList td a a.action.action-share.permanent:not(.shared-style) .icon-shared+span{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}.files-fileList td a a.action.action-share .avatar{display:inline-block;vertical-align:middle}.files-fileList td a a.action.action-menu{padding-top:17px;padding-bottom:17px;padding-left:14px;padding-right:14px}.files-fileList td a a.action.no-permission:hover,.files-fileList td a a.action.no-permission:focus{opacity:.3}.files-fileList td a a.action.disabled:hover,.files-fileList td a a.action.disabled:focus,.files-fileList td a a.action.disabled img{opacity:.3}.files-fileList td a a.action.disabled.action-download{opacity:.7}.files-fileList td a a.action.disabled.action-download:hover,.files-fileList td a a.action.disabled.action-download:focus{opacity:.7}.files-fileList td a a.action:hover,.files-fileList td a a.action:focus{opacity:1}.files-fileList td a a.action:focus{background-color:var(--color-background-hover);border-radius:var(--border-radius-pill)}.files-fileList td a .fileActionsMenu a.action,.files-fileList td a a.action.action-share.shared-style{opacity:.7}.files-fileList td a .fileActionsMenu .action.permanent{opacity:1}.files-fileList .action.action-share.permanent.shared-style span:not(.icon){display:inline-block;max-width:70px;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;margin-left:6px}.files-fileList .remoteAddress .userDomain{margin-left:0 !important}.files-fileList .favorite-mark.permanent{opacity:1}.files-fileList .fileActionsMenu a.action:hover,.files-fileList .fileActionsMenu a.action:focus,.files-fileList a.action.action-share.shared-style:hover,.files-fileList a.action.action-share.shared-style:focus{opacity:1}.files-fileList tr a.action.disabled{background:none}.selectedActions a.download.disabled,.files-fileList tr a.action.action-download.disabled{color:#000}.files-fileList tr:hover a.action.disabled:hover *{cursor:default}.summary{color:var(--color-text-maxcontrast);height:330px}.files-filestable .summary .filesummary{width:100%;padding-left:101px}#body-public .summary{height:180px}.summary:hover,.summary:focus,.summary,table tr.summary td{background-color:rgba(0,0,0,0)}.summary td{border-bottom:none;vertical-align:top;padding-top:20px}.summary td:first-child{padding:0}.hiddeninfo{white-space:pre-line}table.dragshadow{width:auto;z-index:2000}table.dragshadow td.filename{padding-left:60px;padding-right:16px;height:36px;max-width:unset}table.dragshadow td.size{padding-right:8px}.mask{z-index:50;position:absolute;top:0;left:0;right:0;bottom:0;background-color:var(--color-main-background);background-repeat:no-repeat no-repeat;background-position:50%;opacity:.7;transition:opacity 100ms;-moz-transition:opacity 100ms;-o-transition:opacity 100ms;-ms-transition:opacity 100ms;-webkit-transition:opacity 100ms}.mask.transparent{opacity:0}.newFileMenu{font-weight:300;top:100%;left:-48px !important;margin-top:4px;min-width:100px;z-index:1001}.newFileMenu::after{left:61px !important}.files-controls{box-sizing:border-box;position:-webkit-sticky;position:sticky;height:50px;padding:0;margin:0;background-color:var(--color-main-background-translucent);z-index:62;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;top:0;padding-left:50px}.files-controls .actions>div>.button,.files-controls .actions>div button,.files-controls .actions>.button,.files-controls .actions button{box-sizing:border-box;display:inline-block;display:flex;height:44px;width:44px;padding:9px;align-items:center;justify-content:center}.files-controls .actions>div .button.hidden,.files-controls .actions .button.hidden{display:none}.viewer-mode #app-navigation+#app-content .files-controls{left:0}.files-filestable .filename .action .icon,.files-filestable .selectedActions a .icon,.files-filestable .filename .favorite-mark .icon,.files-controls .actions .button .icon{display:inline-block;vertical-align:middle;background-size:16px 16px}.files-filestable .filename .favorite-mark .icon-star{background-image:none}.files-filestable .filename .favorite-mark .icon-starred{background-image:var(--icon-starred-yellow) !important}.files-filestable .filename .action .icon.hidden,.files-filestable .selectedActions a .icon.hidden,.files-controls .actions .button .icon.hidden{display:none}.files-filestable .filename .action .icon.loading,.files-filestable .selectedActions a .icon.loading,.files-controls .actions .button .icon.loading{width:15px;height:15px}.app-files .actions .button.new{position:relative}.breadcrumb{align-items:center}.breadcrumb .icon-home{border-radius:var(--border-radius)}.breadcrumb .canDrop>a,.files-filestable tbody tr.canDrop{background-color:rgba(0,130,201,.3)}.dropzone-background{background-color:rgba(0,130,201,.3)}.dropzone-background :hover{box-shadow:none !important}.notCreatable{margin-left:12px;margin-right:44px;margin-top:12px;color:var(--color-main-text);overflow:auto;min-width:160px;height:54px}.notCreatable:not(.hidden){display:flex}.notCreatable .icon-alert-outline{top:-15px;position:relative;margin-right:4px}.quota-navigation-item{margin:0 !important;border:none;border-radius:0;background-color:rgba(0,0,0,0);z-index:1;height:44px;display:flex !important;flex-direction:column}.quota-navigation-item__text{height:30px}.quota-navigation-item[href="#"],.quota-navigation-item[href="#"] *{cursor:default !important}.quota-navigation-item__container{height:5px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) thead tr{display:block;border-bottom:1px solid var(--color-border);background-color:var(--color-main-background-translucent)}.files-filestable.view-grid:not(.hidden) thead tr th{width:auto;border:none}.files-filestable.view-grid:not(.hidden) tbody{display:grid;grid-template-columns:repeat(auto-fill, 160px);justify-content:space-around;row-gap:15px;margin:15px 0}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden){display:block;position:relative;height:190px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted{background-color:rgba(0,0,0,0)}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .fileactions{background-color:var(--color-background-hover)}.files-filestable.view-grid:not(.hidden) tbody td{display:inline;border-bottom:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper{min-width:0;max-width:none;position:absolute;width:160px;height:160px;padding:14px;top:0;left:0;z-index:-1}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail{width:calc(100% - 2 * 14px);height:calc(100% - 2 * 14px);background-size:contain;margin:0;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:center}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail .favorite-mark{left:auto;top:-11px;right:-11px}.files-filestable.view-grid:not(.hidden) tbody td.filename .uploadtext{width:100%;margin:0;top:0;bottom:auto;height:28px;padding-top:4px;padding-left:28px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name{height:100%;border-radius:var(--border-radius);overflow:hidden;cursor:pointer !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext{display:flex;height:44px;margin-top:146px;text-align:center;line-height:44px;padding:0}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext{display:inline-block;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:before{content:"";flex:1;min-width:14px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:after{content:"";flex:1;min-width:44px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .extension{display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .system-tags{display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions{height:initial;margin-top:146px;display:flex;align-items:center;position:absolute;right:0}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action{padding:14px;width:44px;height:44px;display:flex;align-items:center;justify-content:center}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action:not(.action-menu){display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden .action-share img{padding:6px;border-radius:50%}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-restore-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-comment-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename form{padding:3px 14px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) tbody td.filename form input.filename{width:100%;margin-left:0;cursor:text}.files-filestable.view-grid:not(.hidden) tbody td.filesize,.files-filestable.view-grid:not(.hidden) tbody td.date{display:none}.files-filestable.view-grid:not(.hidden) tbody td.selection,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark{position:absolute;top:-8px;left:-8px;display:flex;z-index:10}.files-filestable.view-grid:not(.hidden) tbody td.selection label,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label{width:44px;height:44px;display:inline-flex;padding:14px}.files-filestable.view-grid:not(.hidden) tbody td.selection label::before,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label::before{margin:0;width:14px;height:14px}.files-filestable.view-grid:not(.hidden) tbody td .popovermenu{left:0;width:150px;margin:0 5px}.files-filestable.view-grid:not(.hidden) tbody td .popovermenu .menuitem span:not(.icon){overflow:hidden;text-overflow:ellipsis}.files-filestable.view-grid:not(.hidden) tr.hidden-file td.filename .name .nametext .extension{display:block}.files-filestable.view-grid:not(.hidden) tfoot{display:grid}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden){display:inline-block;margin:0 auto;height:418px}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td{padding-top:50px}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td:first-child,.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td.date{display:none}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td .info{margin-left:0}#view-toggle{background-color:var(--color-main-background-translucent);border:none;margin:0;padding:22px;opacity:.5;float:right;right:var(--default-grid-baseline);top:var(--default-grid-baseline);z-index:100;position:sticky}#view-toggle:hover,#view-toggle:focus,#showgridview:focus+#view-toggle{opacity:1}#view-toggle:focus-visible,#showgridview:focus-visible+#view-toggle{box-shadow:inset 0 0 0 2px var(--color-primary-element) !important}#showgridview{position:fixed;top:0}#body-public .files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext{max-width:124px}#body-public .files-filestable.view-grid:not(.hidden) tbody td .popovermenu{left:-80px}#body-public #view-toggle{position:absolute;right:0;top:0}#gallery-button{display:none}#tag_multiple_files_container{overflow:hidden;background-color:#fff;border-radius:3px;position:relative;display:flex;flex-wrap:wrap;margin-bottom:10px}#tag_multiple_files_container h3{width:100%;padding:0 18px}#tag_multiple_files_container .systemTagsInputFieldContainer{flex:1 1 80%;min-width:0;margin:0 12px}#upload{box-sizing:border-box;height:36px;width:39px;padding:0 !important;margin-left:3px;overflow:hidden;vertical-align:top;position:relative;z-index:-20}#upload .icon-upload{position:relative;display:block;width:100%;height:44px;width:44px;margin:-5px -3px;cursor:pointer;z-index:10;opacity:.65}.file_upload_target{display:none}.file_upload_form{display:inline;float:left;margin:0;padding:0;cursor:pointer;overflow:visible}.uploadprogresswrapper,.uploadprogresswrapper *{box-sizing:border-box}.uploadprogresswrapper{display:inline-block;vertical-align:top;height:36px;margin-left:3px}.uploadprogresswrapper>input[type=button]{height:36px;margin-left:3px}#uploadprogressbar{border-color:var(--color-border-dark);border-radius:var(--border-radius-pill) 0 0 var(--border-radius-pill);border-right:0;position:relative;float:left;width:200px;height:44px;display:inline-block;text-align:center}#uploadprogressbar .ui-progressbar-value{margin-top:.1em}#uploadprogressbar .ui-progressbar-value.ui-widget-header.ui-corner-left{height:calc(100% + 2px);top:-1px;left:-1px;position:absolute;overflow:hidden;background-color:var(--color-primary-element)}#uploadprogressbar .label{top:8px;opacity:1;overflow:hidden;white-space:nowrap;font-weight:normal}#uploadprogressbar .label.inner{color:var(--color-primary-element-text);position:absolute;display:block;width:200px}#uploadprogressbar .label.outer{position:relative;color:var(--color-main-text)}#uploadprogressbar .desktop{display:block}#uploadprogressbar .mobile{display:none}#uploadprogressbar+.stop{border-top-left-radius:0;border-bottom-left-radius:0}.oc-dialog .fileexists{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-bottom:30px}.oc-dialog .fileexists .conflict .filename,.oc-dialog .fileexists .conflict .mtime,.oc-dialog .fileexists .conflict .size{-webkit-touch-callout:initial;-webkit-user-select:initial;-khtml-user-select:initial;-moz-user-select:initial;-ms-user-select:initial;user-select:initial}.oc-dialog .fileexists .conflict .message{color:#e9322d}.oc-dialog .fileexists table{width:100%}.oc-dialog .fileexists th{padding-left:0;padding-right:0}.oc-dialog .fileexists th input[type=checkbox]{margin-right:3px}.oc-dialog .fileexists th:first-child{width:225px}.oc-dialog .fileexists th label{font-weight:normal;color:var(--color-main-text)}.oc-dialog .fileexists th .count{margin-left:3px}.oc-dialog .fileexists .conflicts .template{display:none}.oc-dialog .fileexists .conflict{width:100%;height:85px}.oc-dialog .fileexists .conflict .filename{color:#777;word-break:break-all;clear:left}.oc-dialog .fileexists .icon{width:64px;height:64px;margin:0px 5px 5px 5px;background-repeat:no-repeat;background-size:64px 64px;float:left}.oc-dialog .fileexists .original,.oc-dialog .fileexists .replacement{float:left;width:50%}.oc-dialog .fileexists .conflicts{overflow-y:auto;max-height:225px}.oc-dialog .fileexists .conflict input[type=checkbox]{float:left}.oc-dialog .fileexists #allfileslabel{float:right}.oc-dialog .fileexists #allfiles{vertical-align:bottom;position:relative;top:-3px}.oc-dialog .fileexists #allfiles+span{vertical-align:bottom}.oc-dialog .oc-dialog-buttonrow{width:100%;text-align:right}.oc-dialog .oc-dialog-buttonrow .cancel{float:left}.highlightUploaded{-webkit-animation:highlightAnimation 2s 1;-moz-animation:highlightAnimation 2s 1;-o-animation:highlightAnimation 2s 1;animation:highlightAnimation 2s 1}@-webkit-keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@-moz-keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@-o-keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@media only screen and (max-width: 988px)and (min-width: 1025px),only screen and (max-width: 688px){.app-files #app-content.dir-drop{background-color:#fff !important}table th.column-size,table td.filesize,table th.column-mtime,table td.date{display:none}table td{padding:0}table.multiselect thead{padding-left:0}.fileList a.action.action-menu img{padding-left:0}.fileList .fileActionsMenu{margin-right:6px}.fileList a.action-share span:not(.icon):not(.avatar){position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}td.filename a.name .system-tags{display:none}#uploadprogressbar,#uploadprogressbar .label.inner{width:50px}#uploadprogressbar .desktop{display:none !important}#uploadprogressbar .mobile{display:block !important}table.dragshadow{z-index:1000}}@media only screen and (max-width: 480px){table th .selectedActions{float:right}table th .selectedActions>a span:not(.icon){display:none}table th .selectedActions a{padding:17px 14px}table.multiselect th .columntitle.name{margin-left:0}}.app-sidebar .detailFileInfoContainer{min-height:50px;padding:15px}.app-sidebar .detailFileInfoContainer>div{clear:both}.app-sidebar .mainFileInfoView .icon{display:inline-block;background-size:16px 16px}.app-sidebar .mainFileInfoView .permalink{padding:6px 10px;vertical-align:top;opacity:.6}.app-sidebar .mainFileInfoView .permalink:hover,.app-sidebar .mainFileInfoView .permalink:focus{opacity:1}.app-sidebar .mainFileInfoView .permalink-field>input{clear:both;width:90%}.app-sidebar .thumbnailContainer.large{margin-left:-15px;margin-right:-35px;margin-top:-15px}.app-sidebar .thumbnailContainer.large.portrait{margin:0}.app-sidebar .large .thumbnail{width:100%;display:block;background-repeat:no-repeat;background-position:center;background-size:100%;float:none;margin:0;height:auto}.app-sidebar .large .thumbnail .stretcher{content:"";display:block;padding-bottom:56.25%}.app-sidebar .large.portrait .thumbnail{background-position:50% top}.app-sidebar .large.portrait .thumbnail{background-size:contain}.app-sidebar .large.text{overflow-y:scroll;overflow-x:hidden;padding-top:14px;font-size:80%;margin-left:0}.app-sidebar .thumbnail{width:100%;min-height:75px;display:inline-block;float:left;margin-right:10px;background-size:contain;background-repeat:no-repeat}.app-sidebar .ellipsis{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.app-sidebar .fileName{font-size:16px;padding-top:13px;padding-bottom:3px}.app-sidebar .fileName h3{width:calc(100% - 42px);display:inline-block;padding:5px 0;margin:-5px 0}.app-sidebar .file-details{color:var(--color-text-maxcontrast)}.app-sidebar .action-favorite{vertical-align:sub;padding:10px;margin:-10px}.app-sidebar .action-favorite>span{opacity:.7 !important}.app-sidebar .detailList{float:left}.app-sidebar .close{position:absolute;top:0;right:0;opacity:.5;z-index:1;width:44px;height:44px}.whatsNewPopover{bottom:35px !important;left:15px !important;width:270px;z-index:700}.whatsNewPopover p{width:auto !important}.whatsNewPopover .caption{font-weight:bold;cursor:auto !important}.whatsNewPopover .icon-close{position:absolute;right:0}.whatsNewPopover::after{content:none}/*# sourceMappingURL=merged.css.map */ +.actions{padding:3px;height:100%;display:inline-block;float:left}.actions input,.actions button,.actions .button{margin:0;float:left}.actions .button a{color:#555}.actions .button a:hover,.actions .button a:focus{background-color:var(--color-background-hover)}.actions .button a:active{background-color:var(--color-primary-element-light)}.actions.creatable{position:relative;display:flex;flex:1 1}.actions.creatable .button:not(:last-child){margin-right:3px}.actions.hidden{display:none}#trash{margin-right:8px;float:right;z-index:1010;padding:10px;font-weight:normal}.newFileMenu .error,.newFileMenu .error+.icon-confirm,.files-fileList .error{color:var(--color-error);border-color:var(--color-error)}.files-filestable{position:relative;width:100%;min-width:250px;display:block;flex-direction:column}.emptycontent:not(.hidden)~.files-filestable{display:none}.files-filestable thead{position:-webkit-sticky;position:sticky;top:44px;z-index:60;display:block;background-color:var(--color-main-background-translucent)}.files-filestable tbody{display:table;width:100%}.files-filestable tbody tr[data-permissions="0"],.files-filestable tbody tr[data-permissions="16"]{background-color:var(--color-background-dark)}.files-filestable tbody tr[data-permissions="0"] td.filename .nametext .innernametext,.files-filestable tbody tr[data-permissions="16"] td.filename .nametext .innernametext{color:var(--color-text-maxcontrast)}.files-filestable tbody tr[data-e2eencrypted=true] .selection{pointer-events:none}.files-filestable.hidden{display:none}.app-files #app-content>.viewcontainer{min-height:0%;width:100%}.app-files #app-content{width:calc(100% - 300px);overflow-anchor:none}.file-drag,.file-drag .files-filestable tbody tr,.file-drag .files-filestable tbody tr:hover{background-color:var(--color-primary-element-light) !important}.app-files #app-content.dir-drop{background-color:var(--color-main-background) !important}.file-drag .files-filestable tbody tr,.file-drag .files-filestable tbody tr:hover{background-color:rgba(0,0,0,0) !important}.app-files #app-content.dir-drop .files-filestable tbody tr.dropping-to-dir{background-color:var(--color-primary-element-light) !important}.nav-icon-files{background-image:var(--icon-folder-dark)}.nav-icon-recent{background-image:var(--icon-recent-dark)}.nav-icon-favorites{background-image:var(--icon-starred-dark)}.nav-icon-sharingin,.nav-icon-sharingout,.nav-icon-pendingshares,.nav-icon-shareoverview{background-image:var(--icon-share-dark)}.nav-icon-sharinglinks{background-image:var(--icon-public-dark)}.nav-icon-extstoragemounts{background-image:var(--icon-external-dark)}.nav-icon-trashbin{background-image:var(--icon-delete-dark)}.nav-icon-trashbin-starred{background-image:var(--icon-delete-#ff0000)}.nav-icon-deletedshares{background-image:var(--icon-unshare-dark)}.nav-icon-favorites-starred{background-image:var(--icon-starred-yellow)}#app-navigation .nav-files a.nav-icon-files{width:auto}#app-navigation .nav-files a.new{width:40px;height:32px;padding:0 10px;margin:0;cursor:pointer}#app-navigation .nav-files a.new.hidden{display:none}#app-navigation .nav-files a.new.disabled{opacity:.3}.files-filestable tbody tr{height:51px}.files-filestable tbody tr:hover,.files-filestable tbody tr:focus,.files-filestable tbody .name:focus,.files-filestable tbody tr:hover .filename form,table tr.mouseOver td{background-color:var(--color-background-hover)}.files-filestable tbody tr:active,.files-filestable tbody tr.highlighted,.files-filestable tbody tr.highlighted .name:focus,.files-filestable tbody tr.selected,.files-filestable tbody tr.searchresult{background-color:var(--color-primary-element-light)}tbody a{color:var(--color-main-text)}span.conflict-path,span.extension,span.uploading,td.date{color:var(--color-text-maxcontrast)}span.conflict-path,span.extension{-webkit-transition:opacity 300ms;-moz-transition:opacity 300ms;-o-transition:opacity 300ms;transition:opacity 300ms;vertical-align:top}tr:hover span.conflict-path,tr:focus span.conflict-path,tr:hover span.extension,tr:focus span.extension{opacity:1;color:var(--color-text-maxcontrast)}table th,table th a{color:var(--color-text-maxcontrast)}table.multiselect th a{color:var(--color-main-text)}table th .columntitle{display:block;padding:15px;height:50px;box-sizing:border-box;-moz-box-sizing:border-box;vertical-align:middle}table th .columntitle:focus-visible{border-radius:2px}table.multiselect th .columntitle{display:inline-block;margin-right:-20px}table th .columntitle.name{padding-left:0;margin-left:44px}table.multiselect th .columntitle.name{margin-left:0}table th .sort-indicator{width:10px;height:8px;margin-left:5px;display:inline-block;vertical-align:text-bottom;opacity:.3}.sort-indicator.hidden,.multiselect .sort-indicator,table.multiselect th:hover .sort-indicator.hidden,table.multiselect th:focus .sort-indicator.hidden{visibility:hidden}.multiselect .sort,.multiselect .sort span{cursor:default}table th:hover .sort-indicator.hidden,table th:focus .sort-indicator.hidden{visibility:visible}table th,table td{border-bottom:1px solid var(--color-border);text-align:left;font-weight:normal}table td{padding:0 15px;font-style:normal;background-position:8px center;background-repeat:no-repeat}table th.column-name{position:relative;width:9999px;padding:0}.column-name-container{position:relative;height:50px}table th.column-selection{padding-top:2px}table th.column-size,table td.filesize{text-align:right}table th.column-mtime,table td.date,table th.column-last,table td.column-last{-moz-box-sizing:border-box;box-sizing:border-box;position:relative;min-width:130px}#app-content-recent,#app-content-favorites,#app-content-shareoverview,#app-content-sharingout,#app-content-sharingin,#app-content-sharinglinks,#app-content-deletedshares,#app-content-pendingshares{margin-top:22px}#app-content-recent thead,#app-content-favorites thead,#app-content-shareoverview thead,#app-content-sharingout thead,#app-content-sharingin thead,#app-content-sharinglinks thead,#app-content-deletedshares thead,#app-content-pendingshares thead{top:0}table.multiselect thead th{background-color:var(--color-main-background-translucent);font-weight:bold}#app-content.with-app-sidebar table.multiselect thead{margin-right:27%}table.multiselect .column-name{position:relative;width:9999px}table.multiselect .column-mtime>a{display:none}table td.selection,table th.selection,table td.fileaction{width:32px;text-align:center}table td.filename a.name,table td.filename p.name{display:flex;position:relative;-moz-box-sizing:border-box;box-sizing:border-box;height:50px;line-height:50px;padding:0}table td.filename .thumbnail-wrapper{width:0;min-width:50px;max-width:50px;height:50px}table td.filename .thumbnail-wrapper.icon-loading-small:after{z-index:10}table td.filename .thumbnail-wrapper.icon-loading-small .thumbnail{opacity:.2}table td.filename .thumbnail{display:inline-block;width:32px;height:32px;background-size:contain;background-position:center;background-repeat:no-repeat;margin-left:9px;margin-top:9px;border-radius:var(--border-radius);cursor:pointer;position:absolute;z-index:4}table td.filename p.name .thumbnail{cursor:default}table tr[data-has-preview=true] .thumbnail{border:1px solid var(--color-border)}table:not(.view-grid) td.filename input.filename{width:70% !important;margin-left:48px !important;cursor:text}table td.filename form{margin-top:-40px;position:relative;top:-6px}table td.filename a,table td.login,table td.logout,table td.download,table td.upload,table td.create,table td.delete{padding:3px 8px 8px 3px}table td.filename .nametext,.modified,.column-last>span:first-child{float:left;padding:15px 0}.modified,.column-last>span:first-child{position:relative;overflow:hidden;text-overflow:ellipsis;width:110px}table td.filename{max-width:0}table td.filename .nametext{width:0;flex-grow:1;display:flex;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;height:100%;z-index:10;padding:0 20px 0 0}table td.filename .system-tags{--min-size: 32px;display:flex;justify-content:center;align-items:center;min-width:calc(var(--min-size)*2);max-width:300px}table td.filename .system-tags .system-tags__tag{padding:5px 10px;border:1px solid;border-radius:var(--border-radius-pill);border-color:var(--color-border);color:var(--color-text-maxcontrast);height:var(--min-size);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:22px;text-align:center}table td.filename .system-tags .system-tags__tag--more{overflow:visible;text-overflow:initial}table td.filename .system-tags .system-tags__tag+.system-tags__tag{margin-left:5px}.hide-hidden-files .files-filestable .files-fileList tr.hidden-file,.hide-hidden-files .files-filestable .files-fileList tr.hidden-file.dragging{display:none !important}.files-fileList tr.animate-opacity{-webkit-transition:opacity 250ms;-moz-transition:opacity 250ms;-o-transition:opacity 250ms;transition:opacity 250ms}.files-fileList tr.dragging{opacity:.2}table td.filename .nametext .innernametext{text-overflow:ellipsis;overflow:hidden;position:relative;vertical-align:top}table td.filename .uploadtext{position:absolute;font-weight:normal;margin-left:50px;left:0;bottom:0;height:20px;padding:0 4px;padding-left:1px;font-size:11px;line-height:22px;color:var(--color-text-maxcontrast);text-overflow:ellipsis;white-space:nowrap}table td.selection{padding:0}.files-fileList tr td.selection>.selectCheckBox+label:before{opacity:.3;margin-right:0}.files-fileList tr:hover td.selection>.selectCheckBox+label:before,.files-fileList tr:focus td.selection>.selectCheckBox+label:before,.files-fileList tr td.selection>.selectCheckBox:checked+label:before,.files-fileList tr.selected td.selection>.selectCheckBox+label:before{opacity:1}.files-fileList tr.halfselected td.selection>.selectCheckBox+label:before{opacity:.5}.files-fileList tr td.selection>.selectCheckBox+label,.select-all+label{padding:16px}.files-fileList tr td.selection>.selectCheckBox:focus-visible+label,.select-all:focus-visible+label{background-color:var(--color-background-hover);border-radius:var(--border-radius-pill);outline:none !important;border:2px solid var(--color-primary-element) !important;padding:14px}.files-fileList tr td.selection>.selectCheckBox:focus-visible+label,.select-all:focus-visible+label{outline-offset:0px}.files-fileList tr td.filename{position:relative;width:100%;padding-left:0;padding-right:0;-webkit-transition:background-image 500ms;-moz-transition:background-image 500ms;-o-transition:background-image 500ms;transition:background-image 500ms}.files-fileList tr td.filename a.name label,.files-fileList tr td.filename p.name label{position:absolute;width:80%;height:50px}.files-fileList tr td.filename .favorite{display:inline-block;float:left}.files-fileList tr td.filename .favorite-mark{position:absolute;display:block;top:-8px;right:-8px;line-height:100%;text-align:center}.files-fileList tr td.filename .favorite-mark.permanent{background-color:var(--color-main-background);mask:var(--icon-star-rounded-white) no-repeat;mask-size:22px 22px;width:22px;height:22px;display:flex;align-content:center;justify-content:center}.files-fileList tr:hover td.filename .favorite-mark.permanent{background-color:var(--color-background-hover)}#uploadsize-message,#delete-confirm{display:none}.fileactions{z-index:50}.busy .fileactions,.busy .action{visibility:hidden}.bubble,#app-navigation .app-navigation-entry-menu{min-width:100px}.files-fileList .icon-loading-small{opacity:1 !important;display:inline !important}.files-fileList .action.action-share-notification span,.files-fileList a.name{cursor:default !important}.files-fileList a.name.disabled *{cursor:default}.files-fileList a.name.disabled a,.files-fileList a.name.disabled a *{cursor:pointer}.files-fileList a.name.disabled:focus{background:none}a.action>img{height:16px;width:16px;vertical-align:text-bottom}a.action.action-editlocally img.icon{filter:var(--background-invert-if-dark)}.selectedActions{position:relative;display:inline-block;vertical-align:middle}.selectedActions.hidden{display:none}.selectedActions a{display:inline;line-height:50px;padding:16px 5px}.selectedActions a.hidden{display:none}.selectedActions a img{position:relative;vertical-align:text-bottom;margin-bottom:-1px}.selectedActions .actions-selected .icon-more{margin-top:-3px}.files-fileList td a a.action{display:inline;padding:17px 8px;line-height:50px;opacity:.3}.files-fileList td a a.action.action-share{padding:17px 14px}.files-fileList td a a.action.action-share.permanent:not(.shared-style) .icon-shared+span{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}.files-fileList td a a.action.action-share .avatar{display:inline-block;vertical-align:middle}.files-fileList td a a.action.action-menu{padding-top:17px;padding-bottom:17px;padding-left:14px;padding-right:14px}.files-fileList td a a.action.no-permission:hover,.files-fileList td a a.action.no-permission:focus{opacity:.3}.files-fileList td a a.action.disabled:hover,.files-fileList td a a.action.disabled:focus,.files-fileList td a a.action.disabled img{opacity:.3}.files-fileList td a a.action.disabled.action-download{opacity:.7}.files-fileList td a a.action.disabled.action-download:hover,.files-fileList td a a.action.disabled.action-download:focus{opacity:.7}.files-fileList td a a.action:hover,.files-fileList td a a.action:focus{opacity:1}.files-fileList td a a.action:focus{background-color:var(--color-background-hover);border-radius:var(--border-radius-pill)}.files-fileList td a .fileActionsMenu a.action,.files-fileList td a a.action.action-share.shared-style{opacity:.7}.files-fileList td a .fileActionsMenu .action.permanent{opacity:1}.files-fileList .action.action-share.permanent.shared-style span:not(.icon){display:inline-block;max-width:70px;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;margin-left:6px}.files-fileList .remoteAddress .userDomain{margin-left:0 !important}.files-fileList .favorite-mark.permanent{opacity:1}.files-fileList .fileActionsMenu a.action:hover,.files-fileList .fileActionsMenu a.action:focus,.files-fileList a.action.action-share.shared-style:hover,.files-fileList a.action.action-share.shared-style:focus{opacity:1}.files-fileList tr a.action.disabled{background:none}.selectedActions a.download.disabled,.files-fileList tr a.action.action-download.disabled{color:#000}.files-fileList tr:hover a.action.disabled:hover *{cursor:default}.summary{color:var(--color-text-maxcontrast);height:330px}.files-filestable .summary .filesummary{width:100%;padding-left:101px}#body-public .summary{height:180px}.summary:hover,.summary:focus,.summary,table tr.summary td{background-color:rgba(0,0,0,0)}.summary td{border-bottom:none;vertical-align:top;padding-top:20px}.summary td:first-child{padding:0}.hiddeninfo{white-space:pre-line}table.dragshadow{width:auto;z-index:2000}table.dragshadow td.filename{padding-left:60px;padding-right:16px;height:36px;max-width:unset}table.dragshadow td.size{padding-right:8px}.mask{z-index:50;position:absolute;top:0;left:0;right:0;bottom:0;background-color:var(--color-main-background);background-repeat:no-repeat no-repeat;background-position:50%;opacity:.7;transition:opacity 100ms;-moz-transition:opacity 100ms;-o-transition:opacity 100ms;-ms-transition:opacity 100ms;-webkit-transition:opacity 100ms}.mask.transparent{opacity:0}.newFileMenu{font-weight:300;top:100%;left:-48px !important;margin-top:4px;min-width:100px;z-index:1001}.newFileMenu::after{left:61px !important}.files-controls{box-sizing:border-box;position:-webkit-sticky;position:sticky;height:50px;padding:0;margin:0;background-color:var(--color-main-background-translucent);z-index:62;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;top:0;padding-left:50px}.files-controls .actions>div>.button,.files-controls .actions>div button,.files-controls .actions>.button,.files-controls .actions button{box-sizing:border-box;display:inline-block;display:flex;height:44px;width:44px;padding:9px;align-items:center;justify-content:center}.files-controls .actions>div .button.hidden,.files-controls .actions .button.hidden{display:none}.viewer-mode #app-navigation+#app-content .files-controls{left:0}.files-filestable .filename .action .icon,.files-filestable .selectedActions a .icon,.files-filestable .filename .favorite-mark .icon,.files-controls .actions .button .icon{display:inline-block;vertical-align:middle;background-size:16px 16px}.files-filestable .filename .favorite-mark .icon-star{background-image:none}.files-filestable .filename .favorite-mark .icon-starred{background-image:var(--icon-starred-yellow) !important}.files-filestable .filename .action .icon.hidden,.files-filestable .selectedActions a .icon.hidden,.files-controls .actions .button .icon.hidden{display:none}.files-filestable .filename .action .icon.loading,.files-filestable .selectedActions a .icon.loading,.files-controls .actions .button .icon.loading{width:15px;height:15px}.app-files .actions .button.new{position:relative}.breadcrumb{align-items:center}.breadcrumb .icon-home{border-radius:var(--border-radius)}.breadcrumb .canDrop>a,.files-filestable tbody tr.canDrop{background-color:rgba(0,130,201,.3)}.dropzone-background{background-color:rgba(0,130,201,.3)}.dropzone-background :hover{box-shadow:none !important}.notCreatable{margin-left:12px;margin-right:44px;margin-top:12px;color:var(--color-main-text);overflow:auto;min-width:160px;height:54px}.notCreatable:not(.hidden){display:flex}.notCreatable .icon-alert-outline{top:-15px;position:relative;margin-right:4px}.quota-navigation-item{margin:0 !important;border:none;border-radius:0;background-color:rgba(0,0,0,0);z-index:1;height:44px;display:flex !important;flex-direction:column}.quota-navigation-item__text{height:30px}.quota-navigation-item[href="#"],.quota-navigation-item[href="#"] *{cursor:default !important}.quota-navigation-item__container{height:5px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) thead tr{display:block;border-bottom:1px solid var(--color-border);background-color:var(--color-main-background-translucent)}.files-filestable.view-grid:not(.hidden) thead tr th{width:auto;border:none}.files-filestable.view-grid:not(.hidden) tbody{display:grid;grid-template-columns:repeat(auto-fill, 160px);justify-content:space-around;row-gap:15px;margin:15px 0}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden){display:block;position:relative;height:190px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted{background-color:rgba(0,0,0,0)}.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):hover .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):focus .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden):active .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).selected .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).searchresult .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden) .name:focus .fileactions,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .thumbnail-wrapper,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .nametext,.files-filestable.view-grid:not(.hidden) tbody tr:not(.hidden).highlighted .fileactions{background-color:var(--color-background-hover)}.files-filestable.view-grid:not(.hidden) tbody td{display:inline;border-bottom:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper{min-width:0;max-width:none;position:absolute;width:160px;height:160px;padding:14px;top:0;left:0;z-index:-1}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail{width:calc(100% - 2 * 14px);height:calc(100% - 2 * 14px);background-size:contain;margin:0;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:center}.files-filestable.view-grid:not(.hidden) tbody td.filename .thumbnail-wrapper .thumbnail .favorite-mark{left:auto;top:-11px;right:-11px}.files-filestable.view-grid:not(.hidden) tbody td.filename .uploadtext{width:100%;margin:0;top:0;bottom:auto;height:28px;padding-top:4px;padding-left:28px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name{height:100%;border-radius:var(--border-radius);overflow:hidden;cursor:pointer !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext{display:flex;height:44px;margin-top:146px;text-align:center;line-height:44px;padding:0}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext{display:inline-block;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:before{content:"";flex:1;min-width:14px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext:after{content:"";flex:1;min-width:44px}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .extension{display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .system-tags{display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions{height:initial;margin-top:146px;display:flex;align-items:center;position:absolute;right:0}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action{padding:14px;width:44px;height:44px;display:flex;align-items:center;justify-content:center}.files-filestable.view-grid:not(.hidden) tbody td.filename .name .fileactions .action:not(.action-menu){display:none}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-share-container.hidden .action-share img{padding:6px;border-radius:50%}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-restore-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename .fileActionsMenu .action-comment-container.hidden{display:block !important}.files-filestable.view-grid:not(.hidden) tbody td.filename form{padding:3px 14px;border-radius:var(--border-radius)}.files-filestable.view-grid:not(.hidden) tbody td.filename form input.filename{width:100%;margin-left:0;cursor:text}.files-filestable.view-grid:not(.hidden) tbody td.filesize,.files-filestable.view-grid:not(.hidden) tbody td.date{display:none}.files-filestable.view-grid:not(.hidden) tbody td.selection,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark{position:absolute;top:-8px;left:-8px;display:flex;z-index:10}.files-filestable.view-grid:not(.hidden) tbody td.selection label,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label{width:44px;height:44px;display:inline-flex;padding:14px}.files-filestable.view-grid:not(.hidden) tbody td.selection label::before,.files-filestable.view-grid:not(.hidden) tbody td.filename .favorite-mark label::before{margin:0;width:14px;height:14px}.files-filestable.view-grid:not(.hidden) tbody td .popovermenu{left:0;width:150px;margin:0 5px}.files-filestable.view-grid:not(.hidden) tbody td .popovermenu .menuitem span:not(.icon){overflow:hidden;text-overflow:ellipsis}.files-filestable.view-grid:not(.hidden) tr.hidden-file td.filename .name .nametext .extension{display:block}.files-filestable.view-grid:not(.hidden) tfoot{display:grid}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden){display:inline-block;margin:0 auto;height:418px}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td{padding-top:50px}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td:first-child,.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td.date{display:none}.files-filestable.view-grid:not(.hidden) tfoot .summary:not(.hidden) td .info{margin-left:0}#view-toggle{background-color:var(--color-main-background-translucent);border:none;margin:0;padding:22px;opacity:.5;float:right;right:var(--default-grid-baseline);top:var(--default-grid-baseline);z-index:100;position:sticky}#view-toggle:hover,#view-toggle:focus,#showgridview:focus+#view-toggle{opacity:1}#view-toggle:focus-visible,#showgridview:focus-visible+#view-toggle{box-shadow:inset 0 0 0 2px var(--color-primary-element) !important}#showgridview{position:fixed;top:0}#body-public .files-filestable.view-grid:not(.hidden) tbody td.filename .name .nametext .innernametext{max-width:124px}#body-public .files-filestable.view-grid:not(.hidden) tbody td .popovermenu{left:-80px}#body-public #view-toggle{position:absolute;right:0;top:0}#gallery-button{display:none}#tag_multiple_files_container{overflow:hidden;background-color:#fff;border-radius:3px;position:relative;display:flex;flex-wrap:wrap;margin-bottom:10px}#tag_multiple_files_container h3{width:100%;padding:0 18px}#tag_multiple_files_container .systemTagsInputFieldContainer{flex:1 1 80%;min-width:0;margin:0 12px}#upload{box-sizing:border-box;height:36px;width:39px;padding:0 !important;margin-left:3px;overflow:hidden;vertical-align:top;position:relative;z-index:-20}#upload .icon-upload{position:relative;display:block;width:100%;height:44px;width:44px;margin:-5px -3px;cursor:pointer;z-index:10;opacity:.65}.file_upload_target{display:none}.file_upload_form{display:inline;float:left;margin:0;padding:0;cursor:pointer;overflow:visible}.uploadprogresswrapper,.uploadprogresswrapper *{box-sizing:border-box}.uploadprogresswrapper{display:inline-block;vertical-align:top;height:36px;margin-left:3px}.uploadprogresswrapper>input[type=button]{height:36px;margin-left:3px}#uploadprogressbar{border-color:var(--color-border-dark);border-radius:var(--border-radius-pill) 0 0 var(--border-radius-pill);border-right:0;position:relative;float:left;width:200px;height:44px;display:inline-block;text-align:center}#uploadprogressbar .ui-progressbar-value{margin-top:.1em}#uploadprogressbar .ui-progressbar-value.ui-widget-header.ui-corner-left{height:calc(100% + 2px);top:-1px;left:-1px;position:absolute;overflow:hidden;background-color:var(--color-primary-element)}#uploadprogressbar .label{top:8px;opacity:1;overflow:hidden;white-space:nowrap;font-weight:normal}#uploadprogressbar .label.inner{color:var(--color-primary-element-text);position:absolute;display:block;width:200px}#uploadprogressbar .label.outer{position:relative;color:var(--color-main-text)}#uploadprogressbar .desktop{display:block}#uploadprogressbar .mobile{display:none}#uploadprogressbar+.stop{border-top-left-radius:0;border-bottom-left-radius:0}.oc-dialog .fileexists{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-bottom:30px}.oc-dialog .fileexists .conflict .filename,.oc-dialog .fileexists .conflict .mtime,.oc-dialog .fileexists .conflict .size{-webkit-touch-callout:initial;-webkit-user-select:initial;-khtml-user-select:initial;-moz-user-select:initial;-ms-user-select:initial;user-select:initial}.oc-dialog .fileexists .conflict .message{color:#e9322d}.oc-dialog .fileexists table{width:100%}.oc-dialog .fileexists th{padding-left:0;padding-right:0}.oc-dialog .fileexists th input[type=checkbox]{margin-right:3px}.oc-dialog .fileexists th:first-child{width:225px}.oc-dialog .fileexists th label{font-weight:normal;color:var(--color-main-text)}.oc-dialog .fileexists th .count{margin-left:3px}.oc-dialog .fileexists .conflicts .template{display:none}.oc-dialog .fileexists .conflict{width:100%;height:85px}.oc-dialog .fileexists .conflict .filename{color:#777;word-break:break-all;clear:left}.oc-dialog .fileexists .icon{width:64px;height:64px;margin:0px 5px 5px 5px;background-repeat:no-repeat;background-size:64px 64px;float:left}.oc-dialog .fileexists .original,.oc-dialog .fileexists .replacement{float:left;width:50%}.oc-dialog .fileexists .conflicts{overflow-y:auto;max-height:225px}.oc-dialog .fileexists .conflict input[type=checkbox]{float:left}.oc-dialog .fileexists #allfileslabel{float:right}.oc-dialog .fileexists #allfiles{vertical-align:bottom;position:relative;top:-3px}.oc-dialog .fileexists #allfiles+span{vertical-align:bottom}.oc-dialog .oc-dialog-buttonrow{width:100%;text-align:right}.oc-dialog .oc-dialog-buttonrow .cancel{float:left}.highlightUploaded{-webkit-animation:highlightAnimation 2s 1;-moz-animation:highlightAnimation 2s 1;-o-animation:highlightAnimation 2s 1;animation:highlightAnimation 2s 1}@-webkit-keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@-moz-keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@-o-keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@keyframes highlightAnimation{0%{background-color:#ffff8c}100%{background-color:rgba(0,0,0,0)}}@media only screen and (max-width: 988px)and (min-width: 1025px),only screen and (max-width: 688px){.app-files #app-content.dir-drop{background-color:#fff !important}table th.column-size,table td.filesize,table th.column-mtime,table td.date{display:none}table td{padding:0}table.multiselect thead{padding-left:0}.fileList a.action.action-menu img{padding-left:0}.fileList .fileActionsMenu{margin-right:6px}.fileList a.action-share span:not(.icon):not(.avatar){position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}td.filename a.name .system-tags{display:none}#uploadprogressbar,#uploadprogressbar .label.inner{width:50px}#uploadprogressbar .desktop{display:none !important}#uploadprogressbar .mobile{display:block !important}table.dragshadow{z-index:1000}}@media only screen and (max-width: 480px){table th .selectedActions{float:right}table th .selectedActions>a span:not(.icon){display:none}table th .selectedActions a{padding:17px 14px}table.multiselect th .columntitle.name{margin-left:0}}.app-sidebar .detailFileInfoContainer{min-height:50px;padding:15px}.app-sidebar .detailFileInfoContainer>div{clear:both}.app-sidebar .mainFileInfoView .icon{display:inline-block;background-size:16px 16px}.app-sidebar .mainFileInfoView .permalink{padding:6px 10px;vertical-align:top;opacity:.6}.app-sidebar .mainFileInfoView .permalink:hover,.app-sidebar .mainFileInfoView .permalink:focus{opacity:1}.app-sidebar .mainFileInfoView .permalink-field>input{clear:both;width:90%}.app-sidebar .thumbnailContainer.large{margin-left:-15px;margin-right:-35px;margin-top:-15px}.app-sidebar .thumbnailContainer.large.portrait{margin:0}.app-sidebar .large .thumbnail{width:100%;display:block;background-repeat:no-repeat;background-position:center;background-size:100%;float:none;margin:0;height:auto}.app-sidebar .large .thumbnail .stretcher{content:"";display:block;padding-bottom:56.25%}.app-sidebar .large.portrait .thumbnail{background-position:50% top}.app-sidebar .large.portrait .thumbnail{background-size:contain}.app-sidebar .large.text{overflow-y:scroll;overflow-x:hidden;padding-top:14px;font-size:80%;margin-left:0}.app-sidebar .thumbnail{width:100%;min-height:75px;display:inline-block;float:left;margin-right:10px;background-size:contain;background-repeat:no-repeat}.app-sidebar .ellipsis{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.app-sidebar .fileName{font-size:16px;padding-top:13px;padding-bottom:3px}.app-sidebar .fileName h3{width:calc(100% - 42px);display:inline-block;padding:5px 0;margin:-5px 0}.app-sidebar .file-details{color:var(--color-text-maxcontrast)}.app-sidebar .action-favorite{vertical-align:sub;padding:10px;margin:-10px}.app-sidebar .action-favorite>span{opacity:.7 !important}.app-sidebar .detailList{float:left}.app-sidebar .close{position:absolute;top:0;right:0;opacity:.5;z-index:1;width:44px;height:44px}.whatsNewPopover{bottom:35px !important;left:15px !important;width:270px;z-index:700}.whatsNewPopover p{width:auto !important}.whatsNewPopover .caption{font-weight:bold;cursor:auto !important}.whatsNewPopover .icon-close{position:absolute;right:0}.whatsNewPopover::after{content:none}/*# sourceMappingURL=merged.css.map */ diff --git a/apps/files/css/merged.css.map b/apps/files/css/merged.css.map index 91abbce0af1..06281821a75 100644 --- a/apps/files/css/merged.css.map +++ b/apps/files/css/merged.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["files.scss","../../../core/css/functions.scss","upload.scss","mobile.scss","detailsView.scss","../../../core/css/whatsnew.scss"],"names":[],"mappings":"AAWA,SAEC,YACA,YACA,qBACA,WAED,oEACA,8BACA,kDAEC,+CAED,0BACC,oDAGD,mBACC,kBACA,aACA,SACA,4CACC,iBAIF,gBACC,aAGD,OACC,iBACA,YACA,aACA,aACA,mBAGD,6EAGC,yBACA,gCAID,kBACC,kBACA,WACA,gBACA,cACA,sBAEA,6CACC,aAGD,wBACC,wBACA,gBAEA,SAEA,WACA,cACA,0DAMD,wBACC,cACA,WAEA,mGAEC,8CAEA,6KACC,oCAKF,8DACC,oBAKH,yBACC,aAID,uCACC,cACA,WAGD,wBAGC,yBAEA,qBAGD,6FACC,+DAGD,iCACC,yDAGD,kFACC,0CAGD,4EACC,+DAID,gBCxEC,yCD2ED,iBC3EC,yCD8ED,oBC9EC,0CDiFD,yFCjFC,wCDuFD,uBCvFC,yCD0FD,2BC1FC,2CD6FD,mBC7FC,yCDgGD,2BChGC,4CDmGD,wBCnGC,0CDsGD,4BCtGC,4CD0GD,4CACC,WAGD,iCACC,WACA,YACA,eACA,SACA,eAGD,wCACC,aAGD,0CACC,WAGD,2BACC,YAED,4KAKC,+CAED,wMAKC,oDAGD,qCAEA,yDACC,oCAED,kCACC,iCACA,8BACA,4BACA,yBACA,mBAED,wGAIC,UACA,oCAGD,oBACC,oCAED,uBACC,6BAED,sBACC,cACA,aACA,YACA,sBACA,2BACA,sBACA,oCACC,kBAGF,kCACC,qBACA,mBAED,2BACC,eACA,iBAGD,uCACC,cAGD,yBACC,WACA,WACA,gBACA,qBACA,2BACA,WAED,wJAIC,kBAED,2CACC,eAED,4EAEC,mBAGD,kBAEC,4CACA,gBACA,mBAED,SACC,eACA,kBACA,+BACA,4BAED,qBACC,kBACA,aACA,UAGD,uBACC,kBACA,YAGD,0BACC,gBAED,uCACC,iBAED,8EAEC,2BACA,sBACA,kBAEA,gBAGD,qMAQC,gBACA,qPACC,MAIF,2BACC,0DACA,iBAGD,sDACC,iBAGD,+BACC,kBACA,aAED,kCACC,aAGD,0DAGC,WACA,kBAED,kDAEC,aACA,kBACA,2BACA,sBACA,YACA,iBACA,UAED,qCAEC,QACA,eACA,eACA,YAGA,8DACC,WAED,mEACC,WAGF,6BACC,qBACA,WACA,YACA,wBACA,2BACA,4BACA,gBACA,eACA,mCACA,eACA,kBACA,UAED,oCACC,eAID,2CACC,qCAGD,iDACC,qBACA,4BACA,YAED,uBACC,iBACA,kBACA,SAGD,6IACA,8FAEA,wCACC,kBACA,gBACA,uBACA,YAKA,kBACC,YACA,4BACC,QACA,YACA,aACA,gBACA,mBACA,uBACA,YACA,WACA,mBAID,+BACC,iBACA,aACA,uBACA,mBACA,cACA,kCACA,gBAEA,iDACC,iBACA,iBACA,wCACA,iCACA,oCACA,uBACA,mBACA,gBACA,uBACA,iBACA,kBAEA,uDACC,iBACA,sBAID,mEACC,gBAOL,iJAEC,wBAGD,mCACC,iCACA,8BACA,4BACA,yBAED,4BACC,WAGD,2CACC,uBACA,gBACA,kBACA,mBAKD,8BACC,kBACA,mBAEA,iBACA,OACA,SACA,YACA,cAEA,iBACA,eAEA,iBACA,oCACA,uBACA,mBAGD,mBACC,UAID,6DACC,WACA,eAID,iRAIC,UAID,0EACC,WAMA,wEACC,aAGD,oGACC,+CACA,wCACA,wBACA,yDACA,aAIF,oGAEC,mBAGD,+BACC,kBACA,WACA,eACA,gBACA,wJAGD,wFAEC,kBACA,UACA,YAGD,yCACC,qBACA,WAED,8CACC,kBACA,cACA,SACA,WACA,iBACA,kBACA,wDAEC,8CACA,8CACA,oBAEA,WACA,YACA,aACA,qBACA,uBAGF,8DACC,+CAGD,iDAGA,aACC,WAGD,iCACC,kBAID,mDAEC,gBAID,oCACC,qBACA,0BAGD,8EACC,0BAOA,kCACC,eAGD,sEACC,eAGD,sCACC,gBAIF,aACC,YACA,WACA,2BAGD,qCACC,wCAID,iBACI,kBACA,qBACA,sBAEJ,wBACI,aAEJ,mBACC,eACA,iBACA,iBAGD,0BACC,aAED,uBACC,kBACA,2BACA,mBAGD,8CACC,gBAIA,8BACC,eACA,iBACA,iBACA,WACA,2CACC,kBACA,0FAGC,kBACA,cACA,SACA,UACA,WACA,gBAED,mDACC,qBACA,sBAGF,0CACC,iBACA,oBACA,kBACA,mBAGA,oGACC,WAID,qIAEC,WAED,uDACC,WACA,0HACC,WAIH,wEACC,UAED,oCACC,+CACA,wCAGF,uGACC,WAED,wDACC,UAKF,4EACC,qBACA,eACA,gBACA,uBACA,sBACA,gBAGD,2CACC,yBAGD,yCACC,UAGD,kNAKC,UAGD,qCACC,gBAGD,0FAEC,WAGD,mDACC,eAGD,SACC,oCAGA,aAED,wCACC,WAEA,mBAKD,sBACC,aAED,2DAIC,+BAED,YACC,mBACA,mBACA,iBAED,wBACC,UAED,YACC,qBAGD,iBACC,WACA,aAED,6BACC,kBACA,mBACA,YAGA,gBAED,yBACC,kBAED,MACC,WACA,kBACA,MACA,OACA,QACA,SACA,8CACA,sCACA,wBACA,WACA,yBACA,8BACA,4BACA,6BACA,iCAED,kBACC,UAGD,aACC,gBACA,SACA,sBACA,eACA,gBACA,aAGA,oBACC,qBAKF,gBACC,sBACA,wBACA,gBACA,YACA,UACA,SACA,0DACA,WACA,yBACA,sBACA,qBACA,iBACA,aACA,MACA,kBAKE,0IACC,sBACA,qBACA,aACA,YACA,WACA,YACA,mBACA,uBAED,oFACC,aAQJ,0DACC,OAGD,6KAIC,qBACA,sBACA,0BAMA,sDACC,sBAED,yDACC,uDAIF,iJAGC,aAGD,oJAGC,WACA,YAGD,gCACC,kBAGD,YACC,mBAEA,uBACC,mCAIF,0DAEC,oCAED,qBACC,oCACA,4BACC,2BAIF,cACC,iBACA,kBACA,gBACA,6BACA,cACA,gBACA,YAEA,2BACC,aAGD,kCACC,UACA,kBACA,iBAIF,uBACC,oBACA,YACA,gBACA,+BACA,UACA,YACA,wBACA,sBAEA,6BACC,YAKA,oEACC,0BAIF,kCACC,WACA,mCAWA,kDACC,cACA,4CACA,0DACA,qDACC,WACA,YAMH,+CACC,aACA,+CACA,6BACA,aACA,cAGA,+DACC,cACA,kBACA,aACA,mCAEA,0fAKC,+BAEA,oxDAGC,+CAKH,kDACC,eACA,mBAGC,8EACC,YACA,eACA,kBACA,MAvDQ,MAwDR,OAxDQ,MAyDR,QAxDO,KAyDP,MACA,OACA,WAEA,yFACC,4BACA,6BACA,wBACA,SACA,mCACA,4BACA,2BAKA,wGACC,UACA,UACA,YAKH,uEACC,WACA,SACA,MACA,YAEA,YACA,gBAEA,kBAGD,iEACC,YACA,mCAIA,gBAKA,0BAEA,2EACC,aACA,YACA,iBACA,kBACA,iBACA,UAEA,0FACC,qBACA,kBACA,gBACA,uBACA,mBAED,kFACC,WACA,OACA,eAED,iFACC,WACA,OACA,eAID,sFACC,aAKF,8EACC,aAGD,8EACC,eACA,iBACA,aACA,mBACA,kBACA,QAEA,sFACC,QAxJK,KAyJL,WACA,YACA,aACA,mBACA,uBAGA,wGACC,aAQH,2GACC,yBAEA,6HACC,YACA,kBAIF,6GACC,yBAGD,6GACC,yBAIF,gEACC,iBACA,mCAEA,+EACC,WACA,cACA,YAMH,kHAEC,aAGD,sIAEC,kBACA,SACA,UACA,aACA,WAEA,kJACC,WACA,YACA,oBACA,QAzNO,KA0NP,kKACC,SACA,MA5NM,KA6NN,OA7NM,KAmOT,+DACC,OACA,YACA,aAGA,yFACC,gBACA,uBAMJ,+FACC,cAID,+CACC,aAEA,qEACC,qBACA,cAEA,aAEA,wEACC,iBAEA,iKAEC,aAGD,8EACI,cAQR,aACC,0DACA,YACA,SACA,aACA,WACA,YACA,mCACA,iCACA,YACA,gBAEA,uEAGC,UAGD,oEAEC,mEASF,cACC,eACA,MAOC,uGACC,gBAID,4EACC,WAKF,0BACC,kBACA,QACA,MAKF,gBACC,aAGD,8BACC,gBACA,sBACA,kBACA,kBACA,aACA,eACA,mBAEA,iCACC,WACA,eAGD,6DACC,aACA,YACA,cEh2CF,QACC,sBACA,YACA,WACA,qBACA,gBACA,gBACA,mBACA,kBACA,YAED,qBACC,kBACA,cACA,WACA,YACA,WACA,iBACA,eACA,WACA,YAED,iCACA,+FAEA,gDACC,sBAGD,uBACC,qBACA,mBACA,YACA,gBAED,0CACC,YACA,gBAED,mBACC,sCACA,sEACA,eACA,kBACA,WACA,YACA,YACA,qBACA,kBAEA,yCACC,gBAGF,yEACC,wBACA,SACA,UACA,kBACA,gBACA,8CAED,0BACC,QACA,UACA,gBACA,mBACA,mBAED,gCACC,wCACA,kBACA,cACA,YAED,gCACC,kBACA,6BAED,4BACC,cAED,2BACC,aAGD,yBACC,yBACA,4BAGD,uBACC,2BACA,yBACA,wBACA,sBACA,qBACA,iBACA,mBAGD,0HAGC,8BACA,4BACA,2BACA,yBACA,wBACA,oBAED,0CACC,cAED,6BACC,WAED,0BACC,eACA,gBAED,+CACC,iBAED,sCACC,YAED,gCACC,mBACA,6BAED,iCACC,gBAED,4CACC,aAED,iCACC,WACA,YAED,2CACC,WACA,qBACA,WAED,6BACC,WACA,YACA,uBACA,4BACA,0BACA,WAGD,qEAEC,WACA,UAED,kCACC,gBACA,iBAED,sDACC,WAED,sCACC,YAED,iCACC,sBACA,kBACA,SAED,sCACC,sBAGD,gCACC,WACA,iBAEA,wCACC,WAIF,mBACC,0CACA,uCACA,qCACA,kCAGD,sCACE,4BACA,qCAEF,mCACE,4BACA,qCAEF,iCACE,4BACA,qCAEF,8BACE,4BACA,qCC3MF,oGAEA,iCACC,iCAGD,2EAIC,aAID,SACC,UAID,wBACC,eAGD,mCACC,eAGD,2BACC,iBAID,sDACC,kBACA,cACA,SACA,UACA,WACA,gBAID,gCACC,aAKD,mDACC,WAGD,4BACC,wBAED,2BACC,yBAID,iBACC,cAID,0CAEC,0BACC,YAED,4CACC,aAID,4BACC,kBAID,uCACC,eCvFF,sCACC,gBACA,aAGD,0CACC,WAID,qCACC,qBACA,0BAGD,0CACC,iBACA,mBACA,WAEA,gGAEC,UAGF,sDACC,WACA,UAGD,uCACC,kBACA,mBACA,iBAGD,gDACC,SAGD,+BACC,WACA,cACA,4BACA,2BACA,qBACA,WACA,SACA,YAGD,0CACC,WACA,cACA,sBAGD,wCACC,4BAGD,wCACC,wBAGD,yBACC,kBACA,kBACA,iBACA,cACA,cAGD,wBACC,WACA,gBACA,qBACA,WACA,kBACA,wBACA,4BAGD,uBACC,mBACA,uBACA,gBAGD,uBACC,eACA,iBACA,mBAGD,0BACC,wBACA,qBACA,cACA,cAGD,2BACC,oCAGD,8BACC,mBACA,aACA,aAGD,mCACC,sBAGD,yBACC,WAGD,oBACC,kBACA,MACA,QACA,WACA,UACA,WACA,YCxHD,iBACE,uBACA,qBACA,YACA,YAGF,mBACE,sBAGF,0BACE,iBACA,uBAGF,6BACE,kBACA,QAGF,wBACE","file":"merged.css"}
\ No newline at end of file +{"version":3,"sourceRoot":"","sources":["files.scss","../../../core/css/functions.scss","upload.scss","mobile.scss","detailsView.scss","../../../core/css/whatsnew.scss"],"names":[],"mappings":"AAWA,SAEC,YACA,YACA,qBACA,WAED,oEACA,8BACA,kDAEC,+CAED,0BACC,oDAGD,mBACC,kBACA,aACA,SACA,4CACC,iBAIF,gBACC,aAGD,OACC,iBACA,YACA,aACA,aACA,mBAGD,6EAGC,yBACA,gCAID,kBACC,kBACA,WACA,gBACA,cACA,sBAEA,6CACC,aAGD,wBACC,wBACA,gBAEA,SAEA,WACA,cACA,0DAMD,wBACC,cACA,WAEA,mGAEC,8CAEA,6KACC,oCAKF,8DACC,oBAKH,yBACC,aAID,uCACC,cACA,WAGD,wBAGC,yBAEA,qBAGD,6FACC,+DAGD,iCACC,yDAGD,kFACC,0CAGD,4EACC,+DAID,gBCxEC,yCD2ED,iBC3EC,yCD8ED,oBC9EC,0CDiFD,yFCjFC,wCDuFD,uBCvFC,yCD0FD,2BC1FC,2CD6FD,mBC7FC,yCDgGD,2BChGC,4CDmGD,wBCnGC,0CDsGD,4BCtGC,4CD0GD,4CACC,WAGD,iCACC,WACA,YACA,eACA,SACA,eAGD,wCACC,aAGD,0CACC,WAGD,2BACC,YAED,4KAKC,+CAED,wMAKC,oDAGD,qCAEA,yDACC,oCAED,kCACC,iCACA,8BACA,4BACA,yBACA,mBAED,wGAIC,UACA,oCAGD,oBACC,oCAED,uBACC,6BAED,sBACC,cACA,aACA,YACA,sBACA,2BACA,sBACA,oCACC,kBAGF,kCACC,qBACA,mBAED,2BACC,eACA,iBAGD,uCACC,cAGD,yBACC,WACA,WACA,gBACA,qBACA,2BACA,WAED,wJAIC,kBAED,2CACC,eAED,4EAEC,mBAGD,kBAEC,4CACA,gBACA,mBAED,SACC,eACA,kBACA,+BACA,4BAED,qBACC,kBACA,aACA,UAGD,uBACC,kBACA,YAGD,0BACC,gBAED,uCACC,iBAED,8EAEC,2BACA,sBACA,kBAEA,gBAGD,qMAQC,gBACA,qPACC,MAIF,2BACC,0DACA,iBAGD,sDACC,iBAGD,+BACC,kBACA,aAED,kCACC,aAGD,0DAGC,WACA,kBAED,kDAEC,aACA,kBACA,2BACA,sBACA,YACA,iBACA,UAED,qCAEC,QACA,eACA,eACA,YAGA,8DACC,WAED,mEACC,WAGF,6BACC,qBACA,WACA,YACA,wBACA,2BACA,4BACA,gBACA,eACA,mCACA,eACA,kBACA,UAED,oCACC,eAID,2CACC,qCAGD,iDACC,qBACA,4BACA,YAED,uBACC,iBACA,kBACA,SAGD,6IACA,8FAEA,wCACC,kBACA,gBACA,uBACA,YAKA,kBACC,YACA,4BACC,QACA,YACA,aACA,gBACA,mBACA,uBACA,YACA,WACA,mBAID,+BACC,iBACA,aACA,uBACA,mBACA,kCACA,gBAEA,iDACC,iBACA,iBACA,wCACA,iCACA,oCACA,uBACA,mBACA,gBACA,uBACA,iBACA,kBAEA,uDACC,iBACA,sBAID,mEACC,gBAOL,iJAEC,wBAGD,mCACC,iCACA,8BACA,4BACA,yBAED,4BACC,WAGD,2CACC,uBACA,gBACA,kBACA,mBAKD,8BACC,kBACA,mBAEA,iBACA,OACA,SACA,YACA,cAEA,iBACA,eAEA,iBACA,oCACA,uBACA,mBAGD,mBACC,UAID,6DACC,WACA,eAID,iRAIC,UAID,0EACC,WAMA,wEACC,aAGD,oGACC,+CACA,wCACA,wBACA,yDACA,aAIF,oGAEC,mBAGD,+BACC,kBACA,WACA,eACA,gBACA,wJAGD,wFAEC,kBACA,UACA,YAGD,yCACC,qBACA,WAED,8CACC,kBACA,cACA,SACA,WACA,iBACA,kBACA,wDAEC,8CACA,8CACA,oBAEA,WACA,YACA,aACA,qBACA,uBAGF,8DACC,+CAGD,iDAGA,aACC,WAGD,iCACC,kBAID,mDAEC,gBAID,oCACC,qBACA,0BAGD,8EACC,0BAOA,kCACC,eAGD,sEACC,eAGD,sCACC,gBAIF,aACC,YACA,WACA,2BAGD,qCACC,wCAID,iBACI,kBACA,qBACA,sBAEJ,wBACI,aAEJ,mBACC,eACA,iBACA,iBAGD,0BACC,aAED,uBACC,kBACA,2BACA,mBAGD,8CACC,gBAIA,8BACC,eACA,iBACA,iBACA,WACA,2CACC,kBACA,0FAGC,kBACA,cACA,SACA,UACA,WACA,gBAED,mDACC,qBACA,sBAGF,0CACC,iBACA,oBACA,kBACA,mBAGA,oGACC,WAID,qIAEC,WAED,uDACC,WACA,0HACC,WAIH,wEACC,UAED,oCACC,+CACA,wCAGF,uGACC,WAED,wDACC,UAKF,4EACC,qBACA,eACA,gBACA,uBACA,sBACA,gBAGD,2CACC,yBAGD,yCACC,UAGD,kNAKC,UAGD,qCACC,gBAGD,0FAEC,WAGD,mDACC,eAGD,SACC,oCAGA,aAED,wCACC,WAEA,mBAKD,sBACC,aAED,2DAIC,+BAED,YACC,mBACA,mBACA,iBAED,wBACC,UAED,YACC,qBAGD,iBACC,WACA,aAED,6BACC,kBACA,mBACA,YAGA,gBAED,yBACC,kBAED,MACC,WACA,kBACA,MACA,OACA,QACA,SACA,8CACA,sCACA,wBACA,WACA,yBACA,8BACA,4BACA,6BACA,iCAED,kBACC,UAGD,aACC,gBACA,SACA,sBACA,eACA,gBACA,aAGA,oBACC,qBAKF,gBACC,sBACA,wBACA,gBACA,YACA,UACA,SACA,0DACA,WACA,yBACA,sBACA,qBACA,iBACA,aACA,MACA,kBAKE,0IACC,sBACA,qBACA,aACA,YACA,WACA,YACA,mBACA,uBAED,oFACC,aAQJ,0DACC,OAGD,6KAIC,qBACA,sBACA,0BAMA,sDACC,sBAED,yDACC,uDAIF,iJAGC,aAGD,oJAGC,WACA,YAGD,gCACC,kBAGD,YACC,mBAEA,uBACC,mCAIF,0DAEC,oCAED,qBACC,oCACA,4BACC,2BAIF,cACC,iBACA,kBACA,gBACA,6BACA,cACA,gBACA,YAEA,2BACC,aAGD,kCACC,UACA,kBACA,iBAIF,uBACC,oBACA,YACA,gBACA,+BACA,UACA,YACA,wBACA,sBAEA,6BACC,YAKA,oEACC,0BAIF,kCACC,WACA,mCAWA,kDACC,cACA,4CACA,0DACA,qDACC,WACA,YAMH,+CACC,aACA,+CACA,6BACA,aACA,cAGA,+DACC,cACA,kBACA,aACA,mCAEA,0fAKC,+BAEA,oxDAGC,+CAKH,kDACC,eACA,mBAGC,8EACC,YACA,eACA,kBACA,MAvDQ,MAwDR,OAxDQ,MAyDR,QAxDO,KAyDP,MACA,OACA,WAEA,yFACC,4BACA,6BACA,wBACA,SACA,mCACA,4BACA,2BAKA,wGACC,UACA,UACA,YAKH,uEACC,WACA,SACA,MACA,YAEA,YACA,gBAEA,kBAGD,iEACC,YACA,mCAIA,gBAKA,0BAEA,2EACC,aACA,YACA,iBACA,kBACA,iBACA,UAEA,0FACC,qBACA,kBACA,gBACA,uBACA,mBAED,kFACC,WACA,OACA,eAED,iFACC,WACA,OACA,eAID,sFACC,aAKF,8EACC,aAGD,8EACC,eACA,iBACA,aACA,mBACA,kBACA,QAEA,sFACC,QAxJK,KAyJL,WACA,YACA,aACA,mBACA,uBAGA,wGACC,aAQH,2GACC,yBAEA,6HACC,YACA,kBAIF,6GACC,yBAGD,6GACC,yBAIF,gEACC,iBACA,mCAEA,+EACC,WACA,cACA,YAMH,kHAEC,aAGD,sIAEC,kBACA,SACA,UACA,aACA,WAEA,kJACC,WACA,YACA,oBACA,QAzNO,KA0NP,kKACC,SACA,MA5NM,KA6NN,OA7NM,KAmOT,+DACC,OACA,YACA,aAGA,yFACC,gBACA,uBAMJ,+FACC,cAID,+CACC,aAEA,qEACC,qBACA,cAEA,aAEA,wEACC,iBAEA,iKAEC,aAGD,8EACI,cAQR,aACC,0DACA,YACA,SACA,aACA,WACA,YACA,mCACA,iCACA,YACA,gBAEA,uEAGC,UAGD,oEAEC,mEASF,cACC,eACA,MAOC,uGACC,gBAID,4EACC,WAKF,0BACC,kBACA,QACA,MAKF,gBACC,aAGD,8BACC,gBACA,sBACA,kBACA,kBACA,aACA,eACA,mBAEA,iCACC,WACA,eAGD,6DACC,aACA,YACA,cE/1CF,QACC,sBACA,YACA,WACA,qBACA,gBACA,gBACA,mBACA,kBACA,YAED,qBACC,kBACA,cACA,WACA,YACA,WACA,iBACA,eACA,WACA,YAED,iCACA,+FAEA,gDACC,sBAGD,uBACC,qBACA,mBACA,YACA,gBAED,0CACC,YACA,gBAED,mBACC,sCACA,sEACA,eACA,kBACA,WACA,YACA,YACA,qBACA,kBAEA,yCACC,gBAGF,yEACC,wBACA,SACA,UACA,kBACA,gBACA,8CAED,0BACC,QACA,UACA,gBACA,mBACA,mBAED,gCACC,wCACA,kBACA,cACA,YAED,gCACC,kBACA,6BAED,4BACC,cAED,2BACC,aAGD,yBACC,yBACA,4BAGD,uBACC,2BACA,yBACA,wBACA,sBACA,qBACA,iBACA,mBAGD,0HAGC,8BACA,4BACA,2BACA,yBACA,wBACA,oBAED,0CACC,cAED,6BACC,WAED,0BACC,eACA,gBAED,+CACC,iBAED,sCACC,YAED,gCACC,mBACA,6BAED,iCACC,gBAED,4CACC,aAED,iCACC,WACA,YAED,2CACC,WACA,qBACA,WAED,6BACC,WACA,YACA,uBACA,4BACA,0BACA,WAGD,qEAEC,WACA,UAED,kCACC,gBACA,iBAED,sDACC,WAED,sCACC,YAED,iCACC,sBACA,kBACA,SAED,sCACC,sBAGD,gCACC,WACA,iBAEA,wCACC,WAIF,mBACC,0CACA,uCACA,qCACA,kCAGD,sCACE,4BACA,qCAEF,mCACE,4BACA,qCAEF,iCACE,4BACA,qCAEF,8BACE,4BACA,qCC3MF,oGAEA,iCACC,iCAGD,2EAIC,aAID,SACC,UAID,wBACC,eAGD,mCACC,eAGD,2BACC,iBAID,sDACC,kBACA,cACA,SACA,UACA,WACA,gBAID,gCACC,aAKD,mDACC,WAGD,4BACC,wBAED,2BACC,yBAID,iBACC,cAID,0CAEC,0BACC,YAED,4CACC,aAID,4BACC,kBAID,uCACC,eCvFF,sCACC,gBACA,aAGD,0CACC,WAID,qCACC,qBACA,0BAGD,0CACC,iBACA,mBACA,WAEA,gGAEC,UAGF,sDACC,WACA,UAGD,uCACC,kBACA,mBACA,iBAGD,gDACC,SAGD,+BACC,WACA,cACA,4BACA,2BACA,qBACA,WACA,SACA,YAGD,0CACC,WACA,cACA,sBAGD,wCACC,4BAGD,wCACC,wBAGD,yBACC,kBACA,kBACA,iBACA,cACA,cAGD,wBACC,WACA,gBACA,qBACA,WACA,kBACA,wBACA,4BAGD,uBACC,mBACA,uBACA,gBAGD,uBACC,eACA,iBACA,mBAGD,0BACC,wBACA,qBACA,cACA,cAGD,2BACC,oCAGD,8BACC,mBACA,aACA,aAGD,mCACC,sBAGD,yBACC,WAGD,oBACC,kBACA,MACA,QACA,WACA,UACA,WACA,YCxHD,iBACE,uBACA,qBACA,YACA,YAGF,mBACE,sBAGF,0BACE,iBACA,uBAGF,6BACE,kBACA,QAGF,wBACE","file":"merged.css"}
\ No newline at end of file diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js index 442fdec9322..6b964981a47 100644 --- a/apps/files/js/filelist.js +++ b/apps/files/js/filelist.js @@ -666,7 +666,7 @@ * @param {string} [tabId] optional tab id to select */ showDetailsView: function(fileName, tabId) { - console.warn('showDetailsView is deprecated! Use OCA.Files.Sidebar.activeTab. It will be removed in nextcloud 20.'); + OC.debug && console.warn('showDetailsView is deprecated! Use OCA.Files.Sidebar.activeTab. It will be removed in nextcloud 20.'); this._updateDetailsView(fileName); if (tabId) { OCA.Files.Sidebar.setActiveTab(tabId); @@ -3879,7 +3879,7 @@ * Register a tab view to be added to all views */ registerTabView: function(tabView) { - console.warn('registerTabView is deprecated! It will be removed in nextcloud 20.'); + OC.debug && console.warn('registerTabView is deprecated! It will be removed in nextcloud 20.'); const enabled = tabView.canDisplay || undefined if (tabView.id) { OCA.Files.Sidebar.registerTab(new OCA.Files.Sidebar.Tab({ @@ -3905,7 +3905,7 @@ * Register a detail view to be added to all views */ registerDetailView: function(detailView) { - console.warn('registerDetailView is deprecated! It will be removed in nextcloud 20.'); + OC.debug && console.warn('registerDetailView is deprecated! It will be removed in nextcloud 20.'); if (detailView.el) { OCA.Files.Sidebar.registerSecondaryView(detailView) } diff --git a/apps/files/js/files.js b/apps/files/js/files.js index b0c38248183..1788ebe9d3f 100644 --- a/apps/files/js/files.js +++ b/apps/files/js/files.js @@ -281,7 +281,7 @@ * @deprecated used OCA.Files.FileList.generatePreviewUrl instead */ generatePreviewUrl: function(urlSpec) { - console.warn('DEPRECATED: please use generatePreviewUrl() from an OCA.Files.FileList instance'); + OC.debug && console.warn('DEPRECATED: please use generatePreviewUrl() from an OCA.Files.FileList instance'); return OCA.Files.App.fileList.generatePreviewUrl(urlSpec); }, @@ -290,7 +290,7 @@ * @deprecated used OCA.Files.FileList.lazyLoadPreview instead */ lazyLoadPreview : function(path, mime, ready, width, height, etag) { - console.warn('DEPRECATED: please use lazyLoadPreview() from an OCA.Files.FileList instance'); + OC.debug && console.warn('DEPRECATED: please use lazyLoadPreview() from an OCA.Files.FileList instance'); return FileList.lazyLoadPreview({ path: path, mime: mime, diff --git a/apps/files/l10n/ko.js b/apps/files/l10n/ko.js index a541a59f219..678636a1891 100644 --- a/apps/files/l10n/ko.js +++ b/apps/files/l10n/ko.js @@ -24,7 +24,7 @@ OC.L10N.register( "File could not be uploaded" : "파일을 업로드할 수 없음", "Uploading …" : "업로드 중…", "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize}/{totalSize}({bitrate})", - "Uploading that item is not supported" : "이 항목의 업로드를 지원하지 않습니다", + "Uploading that item is not supported" : "이 항목의 업로드를 지원하지 않습니다.", "Target folder does not exist any more" : "대상 폴더가 더 이상 존재하지 않습니다", "Operation is blocked by access control" : "접근 설정에 의해 동작이 차단됨", "Error when assembling chunks, status code {status}" : "조각을 모으는 중 오류 발생, 상태 코드 {status}", @@ -33,6 +33,7 @@ OC.L10N.register( "Move" : "이동", "Copy" : "복사", "Choose target folder" : "폴더 선택", + "Edit locally" : "로컬에서 편집", "Open" : "열기", "Delete file" : "파일 삭제", "Delete folder" : "폴더 삭제", @@ -41,7 +42,7 @@ OC.L10N.register( "Could not load info for file \"{file}\"" : "파일 \"{file}\"의 정보를 가져올 수 없음", "Files" : "파일", "Details" : "자세한 정보", - "Please select tag(s) to add to the selection" : "선택한 항목에 추가할 태그를 고르세요", + "Please select tag(s) to add to the selection" : "선택한 항목에 추가할 태그를 고르세요.", "Apply tag(s) to selection" : "선택한 항목에 태그 적용하기", "Select directory \"{dirName}\"" : "디렉터리 \"{dirName}\" 선택", "Select file \"{fileName}\"" : "파일 \"{fileName}\" 선택", @@ -57,6 +58,7 @@ OC.L10N.register( "Could not copy \"{file}\"" : "\"{file}\"을(를) 복사할 수 없음", "Copied {origin} inside {destination}" : "{origin}을(를) {destination}(으)로 복사함", "Copied {origin} and {nbfiles} other files inside {destination}" : "{origin} 및 다른 파일 {nbfiles}개를 {destination}(으)로 복사함", + "Failed to redirect to client" : "클라이언트로 리디렉션 하는데 실패함", "{newName} already exists" : "{newName}이(가) 이미 존재함", "Could not rename \"{fileName}\", it does not exist any more" : "\"{fileName}\"의 이름을 변경할 수 없음, 더 이상 존재하지 않음", "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "폴더 \"{dir}\" 내에 파일 \"{targetName}\"이(가) 이미 있습니다. 다른 이름을 사용하십시오.", @@ -67,7 +69,7 @@ OC.L10N.register( "Could not fetch file details \"{file}\"" : "\"{file}\"의 세부사항을 불러올 수 없음", "Error deleting file \"{fileName}\"." : "파일 \"{fileName}\"을(를) 삭제할 수 없습니다.", "No search results in other folders for {tag}{filter}{endtag}" : "다른 폴더에 {tag}{filter}{endtag} 검색 결과가 없음", - "Enter more than two characters to search in other folders" : "여러 폴더에서 검색하기 위해 2글자 이상 입력하십시오", + "Enter more than two characters to search in other folders" : "다른 폴더에서 검색하기 위해 2글자 이상 입력하세요.", "Name" : "이름", "Size" : "크기", "Modified" : "수정됨", @@ -75,9 +77,10 @@ OC.L10N.register( "_%n file_::_%n files_" : ["파일 %n개"], "{dirs} and {files}" : "{dirs} 그리고 {files}", "_including %n hidden_::_including %n hidden_" : ["%n개의 숨겨진 파일 포함"], - "You do not have permission to upload or create files here" : "여기에 파일을 업로드하거나 만들 권한이 없습니다", + "You do not have permission to upload or create files here" : "여기에 파일을 업로드하거나 만들 권한이 없습니다.", "_Uploading %n file_::_Uploading %n files_" : ["파일 %n개 업로드 중"], "New file/folder menu" : "새 파일/폴더 메뉴", + "Select file range" : "파일 범위 선택", "{used} of {quota} used" : "{quota} 중 {used} 사용함", "{used} used" : "{used} 사용함", "\"{name}\" is an invalid file name." : "\"{name}\"은(는) 잘못된 파일 이름입니다.", @@ -88,22 +91,25 @@ OC.L10N.register( "Group folder \"{mountPoint}\" is full, files cannot be updated or synced anymore!" : "그룹 폴더 \"{mountPoint}\"이(가) 가득 찼습니다. 파일을 더 이상 업데이트하거나 동기화할 수 없습니다!", "External storage \"{mountPoint}\" is full, files cannot be updated or synced anymore!" : "외부 저장소 \"{mountPoint}\"이(가) 가득 찼습니다. 파일을 더 이상 업데이트하거나 동기화할 수 없습니다!", "Your storage is full, files cannot be updated or synced anymore!" : "저장 공간이 가득 찼습니다. 파일을 업데이트하거나 동기화할 수 없습니다!", - "Storage of {owner} is almost full ({usedSpacePercent}%)." : "{owner}의 저장 공간이 거의 가득 찼습니다({usedSpacePercent}%)", - "Group folder \"{mountPoint}\" is almost full ({usedSpacePercent}%)." : "그룹 폴더 \"{mountPoint}\"이(가) 거의 가득 찼습니다({usedSpacePercent}%)", - "External storage \"{mountPoint}\" is almost full ({usedSpacePercent}%)." : "외부 저장소 \"{mountPoint}\"이(가) 거의 가득 찼습니다({usedSpacePercent}%)", - "Your storage is almost full ({usedSpacePercent}%)." : "저장 공간이 거의 가득 찼습니다({usedSpacePercent}%)", + "Storage of {owner} is almost full ({usedSpacePercent}%)." : "{owner}의 저장 공간이 거의 가득 찼습니다. ({usedSpacePercent}%)", + "Group folder \"{mountPoint}\" is almost full ({usedSpacePercent}%)." : "그룹 폴더 \"{mountPoint}\"이(가) 거의 가득 찼습니다. ({usedSpacePercent}%)", + "External storage \"{mountPoint}\" is almost full ({usedSpacePercent}%)." : "외부 저장소 \"{mountPoint}\"이(가) 거의 가득 찼습니다. ({usedSpacePercent}%)", + "Your storage is almost full ({usedSpacePercent}%)." : "저장 공간이 거의 가득 찼습니다. ({usedSpacePercent}%)", "_matches \"{filter}\"_::_match \"{filter}\"_" : ["'{filter}'와(과) 일치"], "View in folder" : "폴더에서 보기", + "Direct link was copied (only works for users who have access to this file/folder)" : "직접 링크를 복사했습니다. (이 파일 및 폴더에 접근할 수 있는 사용자에게만 작동)", "Path" : "경로", "_%n byte_::_%n bytes_" : ["%n 바이트"], "Favorited" : "즐겨찾기에 추가됨", "Favorite" : "즐겨찾기", "Copy direct link (only works for users who have access to this file/folder)" : "직접 링크 복사(이 파일/폴더에 접근 권한이 있는 사람만)", - "You can only favorite a single file or folder at a time" : "한번에 한 파일 혹은 한 폴더만 즐겨찾기로 지정할 수 있습니다", + "You can only favorite a single file or folder at a time" : "한번에 한 파일 혹은 한 폴더만 즐겨찾기로 지정할 수 있습니다.", "New folder" : "새 폴더", "Create new folder" : "새 폴더 생성", "Upload file" : "파일 업로드", "Recent" : "최근", + "This file has the tag {tag}" : "이 파일에 {tag} 태그가 있음", + "This file has the tags {firstTags} and {lastTag}" : "이 파일에 {firstTags}와 {lastTag} 태그가 있음", "Not favorited" : "즐겨찾기에 없음", "Remove from favorites" : "즐겨찾기에서 삭제", "Add to favorites" : "즐겨찾기에 추가", @@ -121,27 +127,27 @@ OC.L10N.register( "Moved by {user}" : "{user} 님이 이동함", "\"remote user\"" : "\"원격 사용자\"", "You created {file}" : "{file}을(를) 만듦", - "You created an encrypted file in {file}" : "{file}에 암호화된 파일을 생성했습니다", + "You created an encrypted file in {file}" : "{file}에 암호화된 파일을 생성했습니다.", "{user} created {file}" : "{user} 님이 {file}을(를) 만듦", - "{user} created an encrypted file in {file}" : "{user}이(가) {file}에 암호화된 파일을 생성했습니다", + "{user} created an encrypted file in {file}" : "{user}님이 {file}에 암호화된 파일을 생성", "{file} was created in a public folder" : "공유 폴더에 {file}이(가) 생성됨", "You changed {file}" : "{file}을(를) 변경함", - "You changed an encrypted file in {file}" : "{file}에 암호화된 파일을 변경했습니다", + "You changed an encrypted file in {file}" : "{file}에 암호화된 파일을 변경했습니다.", "{user} changed {file}" : "{user} 님이 {file}을(를) 변경함", - "{user} changed an encrypted file in {file}" : "{user}이(가) {file}에 암호화된 파일을 변경했습니다", + "{user} changed an encrypted file in {file}" : "{user}님이 {file}에 암호화된 파일을 변경", "You deleted {file}" : "{file}을(를) 삭제함", - "You deleted an encrypted file in {file}" : "{file}에 암호화된 파일을 제거했습니다", + "You deleted an encrypted file in {file}" : "{file}에 암호화된 파일을 제거했습니다.", "{user} deleted {file}" : "{user} 님이 {file}을(를) 삭제함", - "{user} deleted an encrypted file in {file}" : "{user}이(가) {file}에 암호화된 파일을 제거했습니다", + "{user} deleted an encrypted file in {file}" : "{user}님이 {file}에 암호화된 파일을 제거", "You restored {file}" : "내가 {file}을(를) 복원함", "{user} restored {file}" : "{user} 님이 {file}을(를) 복원함", "You renamed {oldfile} (hidden) to {newfile} (hidden)" : "{oldfile} (숨겨짐)을(를) {newfile} (숨겨짐)(으)로 이름을 바꿈", "You renamed {oldfile} (hidden) to {newfile}" : "{oldfile} (숨겨짐)을(를) {newfile}(으)로 이름을 바꿈", "You renamed {oldfile} to {newfile} (hidden)" : "{oldfile}을(를) {newfile} (숨겨짐)(으)로 이름을 바꿈", "You renamed {oldfile} to {newfile}" : "{oldfile}을(를) {newfile}(으)로 이름을 바꿈", - "{user} renamed {oldfile} (hidden) to {newfile} (hidden)" : "{user}이(가) {oldfile} (숨겨짐)을(를) {newfile} (숨겨짐)(으)로 이름을 바꿈", - "{user} renamed {oldfile} (hidden) to {newfile}" : "{user}이(가) {oldfile} (숨겨짐)을(를) {newfile}(으)로 이름을 바꿈", - "{user} renamed {oldfile} to {newfile} (hidden)" : "{user}이(가) {oldfile}을(를) {newfile} (숨겨짐)(으)로 이름을 바꿈", + "{user} renamed {oldfile} (hidden) to {newfile} (hidden)" : "{user}님이 {oldfile} (숨겨짐)을(를) {newfile} (숨겨짐)(으)로 이름을 바꿈", + "{user} renamed {oldfile} (hidden) to {newfile}" : "{user}님이 {oldfile} (숨겨짐)을(를) {newfile}(으)로 이름을 바꿈", + "{user} renamed {oldfile} to {newfile} (hidden)" : "{user}님이 {oldfile}을(를) {newfile} (숨겨짐)(으)로 이름을 바꿈", "{user} renamed {oldfile} to {newfile}" : "{user} 님이 {oldfile}을(를) {newfile}(으)로 이름을 바꿈", "You moved {oldfile} to {newfile}" : "{oldfile}을(를) {newfile}(으)로 이동함", "{user} moved {oldfile} to {newfile}" : "{user} 님이 {oldfile}을(를) {newfile}(으)로 이동함", @@ -162,7 +168,26 @@ OC.L10N.register( "The ownership transfer of {path} from {user} has completed." : "{user}(으)로부터 {path}의 소유권을 받았습니다.", "in %s" : "%s", "File Management" : "파일 관리", + "Reload current directory" : "이 경로를 새로고침", + "Go to the \"{dir}\" directory" : "\"{dir}\" 경로로 이동", + "Select the row for {displayName}" : "{displayName}을 위한 행을 선택", + "Open folder {name}" : "{name} 폴더 열기", + "Download file {name}" : "{name} 파일 다운로드", + "\"{displayName}\" action executed successfully" : "\"{displayName}\" 작업을 성공적으로 실행함", + "\"{displayName}\" action failed" : "\"{displayName}\" 작업을 실패함", + "Total rows summary" : "총 행 요약", "Select all" : "모두 선택", + "Unselect all" : "모두 선택 해제", + "\"{displayName}\" failed on some elements " : "\"{displayName}\" 이 일부 요소들에서 실패함", + "\"{displayName}\" batch action executed successfully" : "\"{displayName}\" 일괄 작업을 성공적으로 실행함", + "ascending" : "오름차순", + "descending" : "내림차순", + "Sort list by {column} ({direction})" : "{column} ({direction})으로 목록 정렬", + "This list is not fully rendered for performances reasons. The files will be rendered as you navigate through the list." : "이 목록은 성능 상의 이유로 완전히 표시되지 않았습니다. 목록을 탐색하면 파일이 표시됩니다.", + "Storage informations" : "저장소 정보", + "{usedQuotaByte} used" : "{usedQuotaByte} 사용", + "{relative}% used" : "{relative}% 사용", + "Could not refresh storage stats" : "저장소 정보를 새로고칠 수 없음", "Transfer ownership of a file or folder" : "파일이나 폴더의 소유권 이전", "Choose file or folder to transfer" : "이전할 파일이나 폴더 고르기", "Change" : "변경", @@ -174,14 +199,24 @@ OC.L10N.register( "Unknown error" : "알 수 없는 오류", "Ownership transfer request sent" : "소유권 이전 요청이 전송됨", "Cannot transfer ownership of a file or folder you do not own" : "내가 소유하지 않은 파일이나 폴더의 소유권을 이전할 수 없음", + "Select file or folder to link to" : "링크할 파일이나 폴더 선택", + "Loading current folder" : "현재 폴더를 불러오는 중", "No files in here" : "여기에 파일 없음", + "No files or folders have been deleted yet" : "아직 삭제된 파일이나 폴더가 없습니다.", + "Go to the previous folder" : "이전 폴더로 이동", "Go back" : "뒤로 가기", + "Open the files app settings" : "파일 앱 설정을 열기", "Files settings" : "파일 설정", + "File cannot be accessed" : "파일에 접근할 수 없음", + "You might not have have permissions to view it, ask the sender to share it" : "이것을 볼 권한이 없는 것 같습니다, 보낸 이에게 공유를 요청하세요.", "Show hidden files" : "숨김 파일 보이기", + "Crop image previews" : "이미지 미리보기 확대", "Additional settings" : "고급 설정", "WebDAV" : "WebDAV", "Copy to clipboard" : "클립보드로 복사", - "Use this address to access your Files via WebDAV" : "이 주소를 사용하여 WebDAV를 통해 내 파일에 접근하십시오", + "Use this address to access your Files via WebDAV" : "이 주소를 사용하여 WebDAV를 통해 내 파일에 접근하세요.", + "Clipboard is not available" : "클립보드를 사용할 수 없습니다.", + "WebDAV URL copied to clipboard" : "WebDAV URL이 클립보드에 복사됨", "Unable to change the favourite state of the file" : "파일의 즐겨찾기 상태를 변경할 수 없음", "Error while loading the file data" : "파일 데이터를 불러오는 중 오류 발생", "Pick a template for {name}" : "{name}을(를) 위한 템플릿 선택", @@ -191,8 +226,10 @@ OC.L10N.register( "Blank" : "여백", "Unable to create new file from template" : "템플릿으로 새 파일을 만들 수 없음", "Delete permanently" : "영구히 삭제", + "Open folder {displayName}" : "{displayName} 폴더 열기", "Set up templates folder" : "템플릿 폴더 설정", "Templates" : "템플릿", + "Create new templates folder" : "새로운 템플릿 폴더 만들기", "Unable to initialize the templates directory" : "템플릿 디렉터리를 설정할 수 없음", "Toggle grid view" : "모눈 보기 전환", "Upload some content or sync with your devices!" : "파일을 업로드하거나 장치와 동기화하십시오!", @@ -215,6 +252,7 @@ OC.L10N.register( "Cancel" : "취소", "%s used" : "%s 사용함", "%1$s of %2$s used" : "%2$s 중 %1$s 사용됨", - "Deleted files" : "삭제된 파일" + "Deleted files" : "삭제된 파일", + "Search for an account" : "계정 검색" }, "nplurals=1; plural=0;"); diff --git a/apps/files/l10n/ko.json b/apps/files/l10n/ko.json index 5e9d348fd5e..2ce8390cab1 100644 --- a/apps/files/l10n/ko.json +++ b/apps/files/l10n/ko.json @@ -22,7 +22,7 @@ "File could not be uploaded" : "파일을 업로드할 수 없음", "Uploading …" : "업로드 중…", "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize}/{totalSize}({bitrate})", - "Uploading that item is not supported" : "이 항목의 업로드를 지원하지 않습니다", + "Uploading that item is not supported" : "이 항목의 업로드를 지원하지 않습니다.", "Target folder does not exist any more" : "대상 폴더가 더 이상 존재하지 않습니다", "Operation is blocked by access control" : "접근 설정에 의해 동작이 차단됨", "Error when assembling chunks, status code {status}" : "조각을 모으는 중 오류 발생, 상태 코드 {status}", @@ -31,6 +31,7 @@ "Move" : "이동", "Copy" : "복사", "Choose target folder" : "폴더 선택", + "Edit locally" : "로컬에서 편집", "Open" : "열기", "Delete file" : "파일 삭제", "Delete folder" : "폴더 삭제", @@ -39,7 +40,7 @@ "Could not load info for file \"{file}\"" : "파일 \"{file}\"의 정보를 가져올 수 없음", "Files" : "파일", "Details" : "자세한 정보", - "Please select tag(s) to add to the selection" : "선택한 항목에 추가할 태그를 고르세요", + "Please select tag(s) to add to the selection" : "선택한 항목에 추가할 태그를 고르세요.", "Apply tag(s) to selection" : "선택한 항목에 태그 적용하기", "Select directory \"{dirName}\"" : "디렉터리 \"{dirName}\" 선택", "Select file \"{fileName}\"" : "파일 \"{fileName}\" 선택", @@ -55,6 +56,7 @@ "Could not copy \"{file}\"" : "\"{file}\"을(를) 복사할 수 없음", "Copied {origin} inside {destination}" : "{origin}을(를) {destination}(으)로 복사함", "Copied {origin} and {nbfiles} other files inside {destination}" : "{origin} 및 다른 파일 {nbfiles}개를 {destination}(으)로 복사함", + "Failed to redirect to client" : "클라이언트로 리디렉션 하는데 실패함", "{newName} already exists" : "{newName}이(가) 이미 존재함", "Could not rename \"{fileName}\", it does not exist any more" : "\"{fileName}\"의 이름을 변경할 수 없음, 더 이상 존재하지 않음", "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "폴더 \"{dir}\" 내에 파일 \"{targetName}\"이(가) 이미 있습니다. 다른 이름을 사용하십시오.", @@ -65,7 +67,7 @@ "Could not fetch file details \"{file}\"" : "\"{file}\"의 세부사항을 불러올 수 없음", "Error deleting file \"{fileName}\"." : "파일 \"{fileName}\"을(를) 삭제할 수 없습니다.", "No search results in other folders for {tag}{filter}{endtag}" : "다른 폴더에 {tag}{filter}{endtag} 검색 결과가 없음", - "Enter more than two characters to search in other folders" : "여러 폴더에서 검색하기 위해 2글자 이상 입력하십시오", + "Enter more than two characters to search in other folders" : "다른 폴더에서 검색하기 위해 2글자 이상 입력하세요.", "Name" : "이름", "Size" : "크기", "Modified" : "수정됨", @@ -73,9 +75,10 @@ "_%n file_::_%n files_" : ["파일 %n개"], "{dirs} and {files}" : "{dirs} 그리고 {files}", "_including %n hidden_::_including %n hidden_" : ["%n개의 숨겨진 파일 포함"], - "You do not have permission to upload or create files here" : "여기에 파일을 업로드하거나 만들 권한이 없습니다", + "You do not have permission to upload or create files here" : "여기에 파일을 업로드하거나 만들 권한이 없습니다.", "_Uploading %n file_::_Uploading %n files_" : ["파일 %n개 업로드 중"], "New file/folder menu" : "새 파일/폴더 메뉴", + "Select file range" : "파일 범위 선택", "{used} of {quota} used" : "{quota} 중 {used} 사용함", "{used} used" : "{used} 사용함", "\"{name}\" is an invalid file name." : "\"{name}\"은(는) 잘못된 파일 이름입니다.", @@ -86,22 +89,25 @@ "Group folder \"{mountPoint}\" is full, files cannot be updated or synced anymore!" : "그룹 폴더 \"{mountPoint}\"이(가) 가득 찼습니다. 파일을 더 이상 업데이트하거나 동기화할 수 없습니다!", "External storage \"{mountPoint}\" is full, files cannot be updated or synced anymore!" : "외부 저장소 \"{mountPoint}\"이(가) 가득 찼습니다. 파일을 더 이상 업데이트하거나 동기화할 수 없습니다!", "Your storage is full, files cannot be updated or synced anymore!" : "저장 공간이 가득 찼습니다. 파일을 업데이트하거나 동기화할 수 없습니다!", - "Storage of {owner} is almost full ({usedSpacePercent}%)." : "{owner}의 저장 공간이 거의 가득 찼습니다({usedSpacePercent}%)", - "Group folder \"{mountPoint}\" is almost full ({usedSpacePercent}%)." : "그룹 폴더 \"{mountPoint}\"이(가) 거의 가득 찼습니다({usedSpacePercent}%)", - "External storage \"{mountPoint}\" is almost full ({usedSpacePercent}%)." : "외부 저장소 \"{mountPoint}\"이(가) 거의 가득 찼습니다({usedSpacePercent}%)", - "Your storage is almost full ({usedSpacePercent}%)." : "저장 공간이 거의 가득 찼습니다({usedSpacePercent}%)", + "Storage of {owner} is almost full ({usedSpacePercent}%)." : "{owner}의 저장 공간이 거의 가득 찼습니다. ({usedSpacePercent}%)", + "Group folder \"{mountPoint}\" is almost full ({usedSpacePercent}%)." : "그룹 폴더 \"{mountPoint}\"이(가) 거의 가득 찼습니다. ({usedSpacePercent}%)", + "External storage \"{mountPoint}\" is almost full ({usedSpacePercent}%)." : "외부 저장소 \"{mountPoint}\"이(가) 거의 가득 찼습니다. ({usedSpacePercent}%)", + "Your storage is almost full ({usedSpacePercent}%)." : "저장 공간이 거의 가득 찼습니다. ({usedSpacePercent}%)", "_matches \"{filter}\"_::_match \"{filter}\"_" : ["'{filter}'와(과) 일치"], "View in folder" : "폴더에서 보기", + "Direct link was copied (only works for users who have access to this file/folder)" : "직접 링크를 복사했습니다. (이 파일 및 폴더에 접근할 수 있는 사용자에게만 작동)", "Path" : "경로", "_%n byte_::_%n bytes_" : ["%n 바이트"], "Favorited" : "즐겨찾기에 추가됨", "Favorite" : "즐겨찾기", "Copy direct link (only works for users who have access to this file/folder)" : "직접 링크 복사(이 파일/폴더에 접근 권한이 있는 사람만)", - "You can only favorite a single file or folder at a time" : "한번에 한 파일 혹은 한 폴더만 즐겨찾기로 지정할 수 있습니다", + "You can only favorite a single file or folder at a time" : "한번에 한 파일 혹은 한 폴더만 즐겨찾기로 지정할 수 있습니다.", "New folder" : "새 폴더", "Create new folder" : "새 폴더 생성", "Upload file" : "파일 업로드", "Recent" : "최근", + "This file has the tag {tag}" : "이 파일에 {tag} 태그가 있음", + "This file has the tags {firstTags} and {lastTag}" : "이 파일에 {firstTags}와 {lastTag} 태그가 있음", "Not favorited" : "즐겨찾기에 없음", "Remove from favorites" : "즐겨찾기에서 삭제", "Add to favorites" : "즐겨찾기에 추가", @@ -119,27 +125,27 @@ "Moved by {user}" : "{user} 님이 이동함", "\"remote user\"" : "\"원격 사용자\"", "You created {file}" : "{file}을(를) 만듦", - "You created an encrypted file in {file}" : "{file}에 암호화된 파일을 생성했습니다", + "You created an encrypted file in {file}" : "{file}에 암호화된 파일을 생성했습니다.", "{user} created {file}" : "{user} 님이 {file}을(를) 만듦", - "{user} created an encrypted file in {file}" : "{user}이(가) {file}에 암호화된 파일을 생성했습니다", + "{user} created an encrypted file in {file}" : "{user}님이 {file}에 암호화된 파일을 생성", "{file} was created in a public folder" : "공유 폴더에 {file}이(가) 생성됨", "You changed {file}" : "{file}을(를) 변경함", - "You changed an encrypted file in {file}" : "{file}에 암호화된 파일을 변경했습니다", + "You changed an encrypted file in {file}" : "{file}에 암호화된 파일을 변경했습니다.", "{user} changed {file}" : "{user} 님이 {file}을(를) 변경함", - "{user} changed an encrypted file in {file}" : "{user}이(가) {file}에 암호화된 파일을 변경했습니다", + "{user} changed an encrypted file in {file}" : "{user}님이 {file}에 암호화된 파일을 변경", "You deleted {file}" : "{file}을(를) 삭제함", - "You deleted an encrypted file in {file}" : "{file}에 암호화된 파일을 제거했습니다", + "You deleted an encrypted file in {file}" : "{file}에 암호화된 파일을 제거했습니다.", "{user} deleted {file}" : "{user} 님이 {file}을(를) 삭제함", - "{user} deleted an encrypted file in {file}" : "{user}이(가) {file}에 암호화된 파일을 제거했습니다", + "{user} deleted an encrypted file in {file}" : "{user}님이 {file}에 암호화된 파일을 제거", "You restored {file}" : "내가 {file}을(를) 복원함", "{user} restored {file}" : "{user} 님이 {file}을(를) 복원함", "You renamed {oldfile} (hidden) to {newfile} (hidden)" : "{oldfile} (숨겨짐)을(를) {newfile} (숨겨짐)(으)로 이름을 바꿈", "You renamed {oldfile} (hidden) to {newfile}" : "{oldfile} (숨겨짐)을(를) {newfile}(으)로 이름을 바꿈", "You renamed {oldfile} to {newfile} (hidden)" : "{oldfile}을(를) {newfile} (숨겨짐)(으)로 이름을 바꿈", "You renamed {oldfile} to {newfile}" : "{oldfile}을(를) {newfile}(으)로 이름을 바꿈", - "{user} renamed {oldfile} (hidden) to {newfile} (hidden)" : "{user}이(가) {oldfile} (숨겨짐)을(를) {newfile} (숨겨짐)(으)로 이름을 바꿈", - "{user} renamed {oldfile} (hidden) to {newfile}" : "{user}이(가) {oldfile} (숨겨짐)을(를) {newfile}(으)로 이름을 바꿈", - "{user} renamed {oldfile} to {newfile} (hidden)" : "{user}이(가) {oldfile}을(를) {newfile} (숨겨짐)(으)로 이름을 바꿈", + "{user} renamed {oldfile} (hidden) to {newfile} (hidden)" : "{user}님이 {oldfile} (숨겨짐)을(를) {newfile} (숨겨짐)(으)로 이름을 바꿈", + "{user} renamed {oldfile} (hidden) to {newfile}" : "{user}님이 {oldfile} (숨겨짐)을(를) {newfile}(으)로 이름을 바꿈", + "{user} renamed {oldfile} to {newfile} (hidden)" : "{user}님이 {oldfile}을(를) {newfile} (숨겨짐)(으)로 이름을 바꿈", "{user} renamed {oldfile} to {newfile}" : "{user} 님이 {oldfile}을(를) {newfile}(으)로 이름을 바꿈", "You moved {oldfile} to {newfile}" : "{oldfile}을(를) {newfile}(으)로 이동함", "{user} moved {oldfile} to {newfile}" : "{user} 님이 {oldfile}을(를) {newfile}(으)로 이동함", @@ -160,7 +166,26 @@ "The ownership transfer of {path} from {user} has completed." : "{user}(으)로부터 {path}의 소유권을 받았습니다.", "in %s" : "%s", "File Management" : "파일 관리", + "Reload current directory" : "이 경로를 새로고침", + "Go to the \"{dir}\" directory" : "\"{dir}\" 경로로 이동", + "Select the row for {displayName}" : "{displayName}을 위한 행을 선택", + "Open folder {name}" : "{name} 폴더 열기", + "Download file {name}" : "{name} 파일 다운로드", + "\"{displayName}\" action executed successfully" : "\"{displayName}\" 작업을 성공적으로 실행함", + "\"{displayName}\" action failed" : "\"{displayName}\" 작업을 실패함", + "Total rows summary" : "총 행 요약", "Select all" : "모두 선택", + "Unselect all" : "모두 선택 해제", + "\"{displayName}\" failed on some elements " : "\"{displayName}\" 이 일부 요소들에서 실패함", + "\"{displayName}\" batch action executed successfully" : "\"{displayName}\" 일괄 작업을 성공적으로 실행함", + "ascending" : "오름차순", + "descending" : "내림차순", + "Sort list by {column} ({direction})" : "{column} ({direction})으로 목록 정렬", + "This list is not fully rendered for performances reasons. The files will be rendered as you navigate through the list." : "이 목록은 성능 상의 이유로 완전히 표시되지 않았습니다. 목록을 탐색하면 파일이 표시됩니다.", + "Storage informations" : "저장소 정보", + "{usedQuotaByte} used" : "{usedQuotaByte} 사용", + "{relative}% used" : "{relative}% 사용", + "Could not refresh storage stats" : "저장소 정보를 새로고칠 수 없음", "Transfer ownership of a file or folder" : "파일이나 폴더의 소유권 이전", "Choose file or folder to transfer" : "이전할 파일이나 폴더 고르기", "Change" : "변경", @@ -172,14 +197,24 @@ "Unknown error" : "알 수 없는 오류", "Ownership transfer request sent" : "소유권 이전 요청이 전송됨", "Cannot transfer ownership of a file or folder you do not own" : "내가 소유하지 않은 파일이나 폴더의 소유권을 이전할 수 없음", + "Select file or folder to link to" : "링크할 파일이나 폴더 선택", + "Loading current folder" : "현재 폴더를 불러오는 중", "No files in here" : "여기에 파일 없음", + "No files or folders have been deleted yet" : "아직 삭제된 파일이나 폴더가 없습니다.", + "Go to the previous folder" : "이전 폴더로 이동", "Go back" : "뒤로 가기", + "Open the files app settings" : "파일 앱 설정을 열기", "Files settings" : "파일 설정", + "File cannot be accessed" : "파일에 접근할 수 없음", + "You might not have have permissions to view it, ask the sender to share it" : "이것을 볼 권한이 없는 것 같습니다, 보낸 이에게 공유를 요청하세요.", "Show hidden files" : "숨김 파일 보이기", + "Crop image previews" : "이미지 미리보기 확대", "Additional settings" : "고급 설정", "WebDAV" : "WebDAV", "Copy to clipboard" : "클립보드로 복사", - "Use this address to access your Files via WebDAV" : "이 주소를 사용하여 WebDAV를 통해 내 파일에 접근하십시오", + "Use this address to access your Files via WebDAV" : "이 주소를 사용하여 WebDAV를 통해 내 파일에 접근하세요.", + "Clipboard is not available" : "클립보드를 사용할 수 없습니다.", + "WebDAV URL copied to clipboard" : "WebDAV URL이 클립보드에 복사됨", "Unable to change the favourite state of the file" : "파일의 즐겨찾기 상태를 변경할 수 없음", "Error while loading the file data" : "파일 데이터를 불러오는 중 오류 발생", "Pick a template for {name}" : "{name}을(를) 위한 템플릿 선택", @@ -189,8 +224,10 @@ "Blank" : "여백", "Unable to create new file from template" : "템플릿으로 새 파일을 만들 수 없음", "Delete permanently" : "영구히 삭제", + "Open folder {displayName}" : "{displayName} 폴더 열기", "Set up templates folder" : "템플릿 폴더 설정", "Templates" : "템플릿", + "Create new templates folder" : "새로운 템플릿 폴더 만들기", "Unable to initialize the templates directory" : "템플릿 디렉터리를 설정할 수 없음", "Toggle grid view" : "모눈 보기 전환", "Upload some content or sync with your devices!" : "파일을 업로드하거나 장치와 동기화하십시오!", @@ -213,6 +250,7 @@ "Cancel" : "취소", "%s used" : "%s 사용함", "%1$s of %2$s used" : "%2$s 중 %1$s 사용됨", - "Deleted files" : "삭제된 파일" + "Deleted files" : "삭제된 파일", + "Search for an account" : "계정 검색" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files/l10n/uk.js b/apps/files/l10n/uk.js index db9d6a3b43e..81b451a44a6 100644 --- a/apps/files/l10n/uk.js +++ b/apps/files/l10n/uk.js @@ -124,24 +124,24 @@ OC.L10N.register( "Changed by {user}" : "Змінено користувачем {user}", "Deleted by {user}" : "Вилучено користувачем {user}", "Restored by {user}" : "Відновлено користувачем {user}", - "Renamed by {user}" : "Перейменовано користувачем {user}", + "Renamed by {user}" : "Перейменовано {user}", "Moved by {user}" : "Переміщено користувачем {user}", "\"remote user\"" : "\"віддалений користувач\"", "You created {file}" : "Ви створили {file}", "You created an encrypted file in {file}" : "Ви створили зашифрований файл у {file}", - "{user} created {file}" : "Користувач {user} створив файл {file}", + "{user} created {file}" : "{user} створив(-ла) файл {file}", "{user} created an encrypted file in {file}" : "{user} створив зашифрований файл у {file}", "{file} was created in a public folder" : "Файл {file} створено у публічному каталозі", "You changed {file}" : "Ви змінили файл {file}", "You changed an encrypted file in {file}" : "Ви змінили зашифрований файл у {file}", - "{user} changed {file}" : "Користувач {user} змінив(-ла) файл {file}", + "{user} changed {file}" : "{user} змінив(-ла) файл {file}", "{user} changed an encrypted file in {file}" : "{user} змінив(-ла) зашифрований файл {file}", "You deleted {file}" : "Ви вилучили {file}", "You deleted an encrypted file in {file}" : "Ви вилучити зашифрований файл у {file}", - "{user} deleted {file}" : "Користувач {user} вилучив {file}", + "{user} deleted {file}" : "{user} вилучив(-ла) {file}", "{user} deleted an encrypted file in {file}" : "{user} вилучив зашифрований файл у {file}", "You restored {file}" : "Ви відновили {file}", - "{user} restored {file}" : "Користувач {user} відновив {file}", + "{user} restored {file}" : "{user} відновив(-ла) {file}", "You renamed {oldfile} (hidden) to {newfile} (hidden)" : "Ви перейменували файл {oldfile} (прихований) на {newfile} (прихований)", "You renamed {oldfile} (hidden) to {newfile}" : "Ви перейменували файл {oldfile} (прихований) на {newfile}", "You renamed {oldfile} to {newfile} (hidden)" : "Ви перейменували файл {oldfile} на {newfile} (прихований)", @@ -149,9 +149,9 @@ OC.L10N.register( "{user} renamed {oldfile} (hidden) to {newfile} (hidden)" : "{user} перейменував {oldfile} (прихований) у {newfile} (прихований)", "{user} renamed {oldfile} (hidden) to {newfile}" : "{user} перейменував {oldfile} (прихований) у {newfile}", "{user} renamed {oldfile} to {newfile} (hidden)" : "{user} перейменував {oldfile} у {newfile} (прихований)", - "{user} renamed {oldfile} to {newfile}" : "Користувач {user} перейменував {oldfile} у {newfile}", + "{user} renamed {oldfile} to {newfile}" : "{user} перейменував(-ла) {oldfile} у {newfile}", "You moved {oldfile} to {newfile}" : "Ви перемістили {oldfile} до {newfile}", - "{user} moved {oldfile} to {newfile}" : "Користувач {user} перемістив {oldfile} до {newfile}", + "{user} moved {oldfile} to {newfile}" : "{user} перемістив(-ла) {oldfile} до {newfile}", "A file has been added to or removed from your <strong>favorites</strong>" : "Файл було додано або вилучено з ваших <strong>вподобаних</strong> документів", "A file or folder has been <strong>changed</strong>" : "Файл або каталог було <strong> змінено </strong>", "A favorite file or folder has been <strong>changed</strong>" : "Вподобаний файли або каталог було <strong>змінено</strong>", @@ -212,7 +212,7 @@ OC.L10N.register( "You might not have have permissions to view it, ask the sender to share it" : "Ймовірно у вас відсутні права на перегляд. Попросіть відправника поділитися доступом.", "Show hidden files" : "Показувати приховані файли", "Crop image previews" : "Попередній перегляд перед кадруванням", - "Additional settings" : "Додаткові", + "Additional settings" : "Додатково", "WebDAV" : "WebDAV", "Copy to clipboard" : "Копіювати до буферу обміну", "Use this address to access your Files via WebDAV" : "Адреса для доступу до файлів за допомогою протоколу WebDAV", diff --git a/apps/files/l10n/uk.json b/apps/files/l10n/uk.json index b746cd21cd5..45fa9fecacb 100644 --- a/apps/files/l10n/uk.json +++ b/apps/files/l10n/uk.json @@ -122,24 +122,24 @@ "Changed by {user}" : "Змінено користувачем {user}", "Deleted by {user}" : "Вилучено користувачем {user}", "Restored by {user}" : "Відновлено користувачем {user}", - "Renamed by {user}" : "Перейменовано користувачем {user}", + "Renamed by {user}" : "Перейменовано {user}", "Moved by {user}" : "Переміщено користувачем {user}", "\"remote user\"" : "\"віддалений користувач\"", "You created {file}" : "Ви створили {file}", "You created an encrypted file in {file}" : "Ви створили зашифрований файл у {file}", - "{user} created {file}" : "Користувач {user} створив файл {file}", + "{user} created {file}" : "{user} створив(-ла) файл {file}", "{user} created an encrypted file in {file}" : "{user} створив зашифрований файл у {file}", "{file} was created in a public folder" : "Файл {file} створено у публічному каталозі", "You changed {file}" : "Ви змінили файл {file}", "You changed an encrypted file in {file}" : "Ви змінили зашифрований файл у {file}", - "{user} changed {file}" : "Користувач {user} змінив(-ла) файл {file}", + "{user} changed {file}" : "{user} змінив(-ла) файл {file}", "{user} changed an encrypted file in {file}" : "{user} змінив(-ла) зашифрований файл {file}", "You deleted {file}" : "Ви вилучили {file}", "You deleted an encrypted file in {file}" : "Ви вилучити зашифрований файл у {file}", - "{user} deleted {file}" : "Користувач {user} вилучив {file}", + "{user} deleted {file}" : "{user} вилучив(-ла) {file}", "{user} deleted an encrypted file in {file}" : "{user} вилучив зашифрований файл у {file}", "You restored {file}" : "Ви відновили {file}", - "{user} restored {file}" : "Користувач {user} відновив {file}", + "{user} restored {file}" : "{user} відновив(-ла) {file}", "You renamed {oldfile} (hidden) to {newfile} (hidden)" : "Ви перейменували файл {oldfile} (прихований) на {newfile} (прихований)", "You renamed {oldfile} (hidden) to {newfile}" : "Ви перейменували файл {oldfile} (прихований) на {newfile}", "You renamed {oldfile} to {newfile} (hidden)" : "Ви перейменували файл {oldfile} на {newfile} (прихований)", @@ -147,9 +147,9 @@ "{user} renamed {oldfile} (hidden) to {newfile} (hidden)" : "{user} перейменував {oldfile} (прихований) у {newfile} (прихований)", "{user} renamed {oldfile} (hidden) to {newfile}" : "{user} перейменував {oldfile} (прихований) у {newfile}", "{user} renamed {oldfile} to {newfile} (hidden)" : "{user} перейменував {oldfile} у {newfile} (прихований)", - "{user} renamed {oldfile} to {newfile}" : "Користувач {user} перейменував {oldfile} у {newfile}", + "{user} renamed {oldfile} to {newfile}" : "{user} перейменував(-ла) {oldfile} у {newfile}", "You moved {oldfile} to {newfile}" : "Ви перемістили {oldfile} до {newfile}", - "{user} moved {oldfile} to {newfile}" : "Користувач {user} перемістив {oldfile} до {newfile}", + "{user} moved {oldfile} to {newfile}" : "{user} перемістив(-ла) {oldfile} до {newfile}", "A file has been added to or removed from your <strong>favorites</strong>" : "Файл було додано або вилучено з ваших <strong>вподобаних</strong> документів", "A file or folder has been <strong>changed</strong>" : "Файл або каталог було <strong> змінено </strong>", "A favorite file or folder has been <strong>changed</strong>" : "Вподобаний файли або каталог було <strong>змінено</strong>", @@ -210,7 +210,7 @@ "You might not have have permissions to view it, ask the sender to share it" : "Ймовірно у вас відсутні права на перегляд. Попросіть відправника поділитися доступом.", "Show hidden files" : "Показувати приховані файли", "Crop image previews" : "Попередній перегляд перед кадруванням", - "Additional settings" : "Додаткові", + "Additional settings" : "Додатково", "WebDAV" : "WebDAV", "Copy to clipboard" : "Копіювати до буферу обміну", "Use this address to access your Files via WebDAV" : "Адреса для доступу до файлів за допомогою протоколу WebDAV", diff --git a/apps/files/l10n/zh_CN.js b/apps/files/l10n/zh_CN.js index 79a869c04fb..d85a211d2e0 100644 --- a/apps/files/l10n/zh_CN.js +++ b/apps/files/l10n/zh_CN.js @@ -11,18 +11,18 @@ OC.L10N.register( "Home" : "首页", "Close" : "关闭", "Favorites" : "收藏", - "Could not create folder \"{dir}\"" : "无法创建文件夹 \"{dir}\"", + "Could not create folder \"{dir}\"" : "无法创建文件夹“{dir}”", "This will stop your current uploads." : "这会终止您当前的上传。", "Upload cancelled." : "上传已取消。", - "Processing files …" : "正在处理文件……", - "…" : "……", + "Processing files …" : "正在处理文件 ...", + "…" : "...", "Unable to upload {filename} as it is a directory or has 0 bytes" : "无法上传 {filename},因为它是一个目录或者是大小为 0 的空文件", "Not enough free space, you are uploading {size1} but only {size2} is left" : "可用空间不足,您上传的文件大小为 {size1} ,但可用空间仅剩 {size2}", - "Target folder \"{dir}\" does not exist any more" : "目标目录 \"{dir}\" 不存在", + "Target folder \"{dir}\" does not exist any more" : "目标文件夹“{dir}”不存在", "Not enough free space" : "可用空间不足", "An unknown error has occurred" : "发生了未知错误。", "File could not be uploaded" : "文件无法上传", - "Uploading …" : "正在上传...", + "Uploading …" : "正在上传 ...", "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} / {totalSize} ({bitrate})", "Uploading that item is not supported" : "不支持上传此项目", "Target folder does not exist any more" : "目标文件夹已不存在", @@ -39,35 +39,35 @@ OC.L10N.register( "Delete folder" : "删除文件夹", "Disconnect storage" : "断开与存储空间的连接", "Leave this share" : "离开这个共享", - "Could not load info for file \"{file}\"" : "无法加载文件 \"{file}\" 的信息", + "Could not load info for file \"{file}\"" : "无法加载文件“{file}”的信息", "Files" : "文件", "Details" : "详细信息", "Please select tag(s) to add to the selection" : "请选择要添加到所选项目的标签", "Apply tag(s) to selection" : "将标签应用到所选项目", - "Select directory \"{dirName}\"" : "选择目录 \"{dirName}\"", - "Select file \"{fileName}\"" : "选择文件 \"{dirName}\"", + "Select directory \"{dirName}\"" : "选择目录“{dirName}”", + "Select file \"{fileName}\"" : "选择文件“{dirName}”", "Pending" : "等待", "Unable to determine date" : "无法确定日期", "This operation is forbidden" : "该操作被禁止", "This directory is unavailable, please check the logs or contact the administrator" : "此目录不可用,请检查日志或联系管理员", "Storage is temporarily not available" : "存储空间暂时不可用", - "Could not move \"{file}\", target exists" : "无法移动 \"{file}\",目标已存在", - "Could not move \"{file}\"" : "无法移动 \"{file}\"", + "Could not move \"{file}\", target exists" : "无法移动“{file}”,目标已存在", + "Could not move \"{file}\"" : "无法移动“{file}”", "copy" : "复制", "Could not copy \"{file}\", target exists" : "无法复制“{file}”,目标已存在", - "Could not copy \"{file}\"" : "无法复制 \"{file}\"", + "Could not copy \"{file}\"" : "无法复制“{file}”", "Copied {origin} inside {destination}" : "在 {destination} 内复制 {origin}", "Copied {origin} and {nbfiles} other files inside {destination}" : "在 {destination} 内复制了 {origin} 和 {nbfiles} 个其他文件", "Failed to redirect to client" : "重定向到客户端失败", "{newName} already exists" : "{newName} 已经存在", - "Could not rename \"{fileName}\", it does not exist any more" : "无法重命名 \"{fileName}\",此文件已经不存在", - "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "文件夹 \"{dir}\" 中已经存在 \"{targetName}\"。请尝试其他的名称。", - "Could not rename \"{fileName}\"" : "无法重命名 \"{fileName}\"", - "Could not create file \"{file}\"" : "无法创建文件 \"{file}\"", - "Could not create file \"{file}\" because it already exists" : "无法创建文件 \"{file}\",因为它已经存在", - "Could not create folder \"{dir}\" because it already exists" : "无法创建文件夹 \"{dir}\",因为它已经存在", - "Could not fetch file details \"{file}\"" : "无法获取文件详细信息 “{file}”", - "Error deleting file \"{fileName}\"." : "删除文件 \"{fileName}\" 时出错。", + "Could not rename \"{fileName}\", it does not exist any more" : "无法重命名“{fileName}”,此文件已经不存在", + "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "文件夹“{dir}”中已经存在“{targetName}”。请尝试其它名称。", + "Could not rename \"{fileName}\"" : "无法重命名“{fileName}”", + "Could not create file \"{file}\"" : "无法创建文件“{file}”", + "Could not create file \"{file}\" because it already exists" : "无法创建文件“{file}”,因为它已经存在", + "Could not create folder \"{dir}\" because it already exists" : "无法创建文件夹“{dir}”,因为它已经存在", + "Could not fetch file details \"{file}\"" : "无法获取文件详细信息“{file}”", + "Error deleting file \"{fileName}\"." : "删除文件“{fileName}”时出错。", "No search results in other folders for {tag}{filter}{endtag}" : "在其它的文件夹里没有关于 {tag}{filter}{endtag} 的搜索结果", "Enter more than two characters to search in other folders" : "输入至少三个字符,以搜索其他文件夹", "Name" : "名称", @@ -84,21 +84,21 @@ OC.L10N.register( "{used}%" : "{used}%", "{used} of {quota} used" : "已使用 {used} / {quota}", "{used} used" : "已使用 {used} 存储空间", - "\"{name}\" is an invalid file name." : "\"{name}\" 是一个无效的文件名。", + "\"{name}\" is an invalid file name." : "“{name}”是一个无效的文件名。", "File name cannot be empty." : "文件名不能为空。", - "\"/\" is not allowed inside a file name." : "文件名不能包含“/”", - "\"{name}\" is not an allowed filetype" : "\"{name}\" 不是允许的文件类型", + "\"/\" is not allowed inside a file name." : "文件名不能包含“/”。", + "\"{name}\" is not an allowed filetype" : "“{name}”不是允许的文件类型", "Storage of {owner} is full, files cannot be updated or synced anymore!" : "{owner} 的存储已满,无法再更新或同步文件了!", - "Group folder \"{mountPoint}\" is full, files cannot be updated or synced anymore!" : "群组文件夹 “{mountPoint}” 已满,无法再更新或同步文件!", - "External storage \"{mountPoint}\" is full, files cannot be updated or synced anymore!" : "外部存储器 \"{mountPoint}\" 已满,无法再更新或同步文件!", - "Your storage is full, files cannot be updated or synced anymore!" : "你的存储已满,无法再更新或同步文件!", + "Group folder \"{mountPoint}\" is full, files cannot be updated or synced anymore!" : "群组文件夹“{mountPoint}”已满,无法再更新或同步文件!", + "External storage \"{mountPoint}\" is full, files cannot be updated or synced anymore!" : "外部存储器“{mountPoint}”已满,无法再更新或同步文件!", + "Your storage is full, files cannot be updated or synced anymore!" : "您的的存储已满,无法继续更新或同步文件!", "Storage of {owner} is almost full ({usedSpacePercent}%)." : "{owner} 的存储空间几乎已满 ({usedSpacePercent}%)。", - "Group folder \"{mountPoint}\" is almost full ({usedSpacePercent}%)." : "组文件夹 \"{mountPoint}\" 的存储空间几乎已满 ({usedSpacePercent}%)。", - "External storage \"{mountPoint}\" is almost full ({usedSpacePercent}%)." : "外部存储 \"{mountPoint}\" 的存储空间几乎已满 ({usedSpacePercent}%)。", + "Group folder \"{mountPoint}\" is almost full ({usedSpacePercent}%)." : "组文件夹“{mountPoint}”的存储空间几乎已满 ({usedSpacePercent}%)。", + "External storage \"{mountPoint}\" is almost full ({usedSpacePercent}%)." : "外部存储“{mountPoint}”的存储空间几乎已满 ({usedSpacePercent}%)。", "Your storage is almost full ({usedSpacePercent}%)." : "您的存储空间几乎已满({usedSpacePercent}%)", - "_matches \"{filter}\"_::_match \"{filter}\"_" : ["匹配 \"{filter}\""], + "_matches \"{filter}\"_::_match \"{filter}\"_" : ["匹配“{filter}”"], "View in folder" : "在文件夹中查看", - "Direct link was copied (only works for users who have access to this file/folder)" : "已复制直链(仅对有权访问此文件/文件夹的人有效)", + "Direct link was copied (only works for users who have access to this file/folder)" : "已复制直链(仅适用于有权访问此文件/文件夹的用户)", "Path" : "路径", "_%n byte_::_%n bytes_" : ["%n 字节"], "Favorited" : "已收藏", @@ -126,7 +126,7 @@ OC.L10N.register( "Restored by {user}" : "由 {user} 恢复", "Renamed by {user}" : "由 {user} 重命名", "Moved by {user}" : "由 {user} 移动", - "\"remote user\"" : "\"远程用户\"", + "\"remote user\"" : "“远程用户”", "You created {file}" : "您创建了 {file}", "You created an encrypted file in {file}" : "您在 {file} 创建了一个加密文件", "{user} created {file}" : "{user} 创建了 {file}", @@ -142,49 +142,49 @@ OC.L10N.register( "{user} deleted an encrypted file in {file}" : "{user} 在 {file} 删除了加密文件", "You restored {file}" : "您恢复了{file}", "{user} restored {file}" : "{user} 恢复了 {file}", - "You renamed {oldfile} (hidden) to {newfile} (hidden)" : "你将 {oldfile} (隐藏的) 重命名为了 {newfile} (隐藏的)", - "You renamed {oldfile} (hidden) to {newfile}" : "你将 {oldfile} (隐藏的) 重命名为了 {newfile}", - "You renamed {oldfile} to {newfile} (hidden)" : "你将 {oldfile} 重命名为了 {newfile} (隐藏的)", + "You renamed {oldfile} (hidden) to {newfile} (hidden)" : "您将 {oldfile}(隐藏)重命名为 {newfile}(隐藏)", + "You renamed {oldfile} (hidden) to {newfile}" : "您将 {oldfile}(隐藏)重命名为 {newfile}", + "You renamed {oldfile} to {newfile} (hidden)" : "您将 {oldfile} 重命名为了 {newfile}(隐藏)", "You renamed {oldfile} to {newfile}" : "您将 {oldfile} 改名为 {newfile}", - "{user} renamed {oldfile} (hidden) to {newfile} (hidden)" : "{user} 将 {oldfile} (隐藏的) 重命名为了 {newfile} (隐藏的)", - "{user} renamed {oldfile} (hidden) to {newfile}" : "{user} 将 {oldfile} (隐藏的) 重命名为了 {newfile}", - "{user} renamed {oldfile} to {newfile} (hidden)" : "{user} 将 {oldfile} 重命名为了 {newfile} (隐藏的)", + "{user} renamed {oldfile} (hidden) to {newfile} (hidden)" : "{user} 将 {oldfile}(隐藏)重命名为 {newfile}(隐藏)", + "{user} renamed {oldfile} (hidden) to {newfile}" : "{user} 将 {oldfile}(隐藏)重命名为 {newfile}", + "{user} renamed {oldfile} to {newfile} (hidden)" : "{user} 将 {oldfile} 重命名为 {newfile}(隐藏)", "{user} renamed {oldfile} to {newfile}" : "{user} 将 {oldfile} 改名为 {newfile}", - "You moved {oldfile} to {newfile}" : "你将 {oldfile} 移动到了 {newfile}", + "You moved {oldfile} to {newfile}" : "您将 {oldfile} 移动到了 {newfile}", "{user} moved {oldfile} to {newfile}" : "{user} 将 {oldfile} 移动到了 {newfile}", - "A file has been added to or removed from your <strong>favorites</strong>" : "文件已经添加或删除到您的 <strong>收藏夹</strong> 中", - "A file or folder has been <strong>changed</strong>" : "文件/文件夹已经 <strong>修改</strong>", - "A favorite file or folder has been <strong>changed</strong>" : "一个文件或文件夹已<strong>修改</strong>。", + "A file has been added to or removed from your <strong>favorites</strong>" : "文件已经添加或删除到您的<strong>收藏夹</strong> 中", + "A file or folder has been <strong>changed</strong>" : "文件或文件夹已经被<strong>修改</strong>", + "A favorite file or folder has been <strong>changed</strong>" : "一个收藏的文件或文件夹已经被<strong>修改</strong>", "All files" : "全部文件", "Upload (max. %s)" : "上传 (最大 %s)", "Accept" : "接受", "Reject" : "拒绝", - "Incoming ownership transfer from {user}" : "来自{user}的所有权转移", - "Do you want to accept {path}?\n\nNote: The transfer process after accepting may take up to 1 hour." : "您要接受{path}吗?\n\n注意:接受后转移过程可能长达1小时。", + "Incoming ownership transfer from {user}" : "来自 {user} 的所有权转移", + "Do you want to accept {path}?\n\nNote: The transfer process after accepting may take up to 1 hour." : "您要接受 {path} 吗?\n\n注意:接受后转移过程可能长达1小时。", "Ownership transfer failed" : "所有权转移失败", - "Your ownership transfer of {path} to {user} failed." : "您{path}的所有权向{user}转移失败。", - "The ownership transfer of {path} from {user} failed." : "来自{user}的{path}的所有权转移失败。", + "Your ownership transfer of {path} to {user} failed." : "您 {path} 的所有权向 {user} 转移失败。", + "The ownership transfer of {path} from {user} failed." : "来自 {user} 的 {path} 的所有权转移失败。", "Ownership transfer done" : "所有权转移完成", - "Your ownership transfer of {path} to {user} has completed." : "您的{path}向{user}的所有权转移已完成。", - "The ownership transfer of {path} from {user} has completed." : "来自{user}的{path}的所有权转移已完成。", + "Your ownership transfer of {path} to {user} has completed." : "您的 {path} 向 {user} 的所有权转移已完成。", + "The ownership transfer of {path} from {user} has completed." : "来自 {user} 的 {path} 的所有权转移已完成。", "in %s" : "在 %s", "File Management" : "文件管理", "Reload current directory" : "重新载入当前目录", - "Go to the \"{dir}\" directory" : "转到 \"{dir}\" 目录", + "Go to the \"{dir}\" directory" : "前往“{dir}”目录", "Select the row for {displayName}" : "选择 {displayName} 的行", "Open folder {name}" : "打开文件夹 {name}", "Download file {name}" : "下载文件 {name}", - "\"{displayName}\" action executed successfully" : "\"{displayName}\" 操作执行成功", - "\"{displayName}\" action failed" : "\"{displayName}\" 操作执行失败", + "\"{displayName}\" action executed successfully" : "“{displayName}”操作执行成功", + "\"{displayName}\" action failed" : "“{displayName}”操作执行失败", "Total rows summary" : "总行摘要", "Select all" : "全部选择", "Unselect all" : "取消全选", "\"{displayName}\" failed on some elements " : "“{displayName}”在某些元素上失败", - "\"{displayName}\" batch action executed successfully" : "批量操作 \"{displayName}\" 运行成功", + "\"{displayName}\" batch action executed successfully" : "批量操作“{displayName}”运行成功", "ascending" : "升序", "descending" : "降序", "Sort list by {column} ({direction})" : "按 {column} ({direction}) 排序列表", - "This list is not fully rendered for performances reasons. The files will be rendered as you navigate through the list." : "该列表因为性能原因没有完全加载。文件将会在您浏览列表的时候加载。", + "This list is not fully rendered for performances reasons. The files will be rendered as you navigate through the list." : "因为性能原因,该列表没有完全加载。这些文件将会在您浏览列表的时候加载。", "Storage informations" : "存储信息", "{usedQuotaByte} used" : "{usedQuotaByte} 已使用", "{relative}% used" : "{relative}% 已使用", @@ -216,7 +216,7 @@ OC.L10N.register( "WebDAV" : "WebDAV", "Copy to clipboard" : "复制到剪贴板", "Use this address to access your Files via WebDAV" : "使用此地址通过 WebDAV 访问您的文件", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "如果您启用了两步验证,您必须点击此处来创建和使用一个新的应用程序密码。", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "如果启用两步验证,您必须点击此处来创建和使用一个新的应用程序密码。", "Clipboard is not available" : "剪贴板不可用", "WebDAV URL copied to clipboard" : "WebDAV 链接已复制到剪贴板", "Unable to change the favourite state of the file" : "无法修改文件的收藏状态", @@ -238,7 +238,7 @@ OC.L10N.register( "Upload some content or sync with your devices!" : "上传一些内容或与您的设备同步!", "No entries found in this folder" : "在此文件夹中找不到项目", "Upload too large" : "上传文件过大", - "The files you are trying to upload exceed the maximum size for file uploads on this server." : "正在上传的文件超过了此服务器允许上传的最大容量限制", + "The files you are trying to upload exceed the maximum size for file uploads on this server." : "您尝试上传的文件大小超过了服务器的限制。", "No favorites yet" : "暂无收藏", "Files and folders you mark as favorite will show up here" : "收藏的文件和文件夹会在这里显示", "Shares" : "共享", diff --git a/apps/files/l10n/zh_CN.json b/apps/files/l10n/zh_CN.json index 1b622750b22..a95cbd1548c 100644 --- a/apps/files/l10n/zh_CN.json +++ b/apps/files/l10n/zh_CN.json @@ -9,18 +9,18 @@ "Home" : "首页", "Close" : "关闭", "Favorites" : "收藏", - "Could not create folder \"{dir}\"" : "无法创建文件夹 \"{dir}\"", + "Could not create folder \"{dir}\"" : "无法创建文件夹“{dir}”", "This will stop your current uploads." : "这会终止您当前的上传。", "Upload cancelled." : "上传已取消。", - "Processing files …" : "正在处理文件……", - "…" : "……", + "Processing files …" : "正在处理文件 ...", + "…" : "...", "Unable to upload {filename} as it is a directory or has 0 bytes" : "无法上传 {filename},因为它是一个目录或者是大小为 0 的空文件", "Not enough free space, you are uploading {size1} but only {size2} is left" : "可用空间不足,您上传的文件大小为 {size1} ,但可用空间仅剩 {size2}", - "Target folder \"{dir}\" does not exist any more" : "目标目录 \"{dir}\" 不存在", + "Target folder \"{dir}\" does not exist any more" : "目标文件夹“{dir}”不存在", "Not enough free space" : "可用空间不足", "An unknown error has occurred" : "发生了未知错误。", "File could not be uploaded" : "文件无法上传", - "Uploading …" : "正在上传...", + "Uploading …" : "正在上传 ...", "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} / {totalSize} ({bitrate})", "Uploading that item is not supported" : "不支持上传此项目", "Target folder does not exist any more" : "目标文件夹已不存在", @@ -37,35 +37,35 @@ "Delete folder" : "删除文件夹", "Disconnect storage" : "断开与存储空间的连接", "Leave this share" : "离开这个共享", - "Could not load info for file \"{file}\"" : "无法加载文件 \"{file}\" 的信息", + "Could not load info for file \"{file}\"" : "无法加载文件“{file}”的信息", "Files" : "文件", "Details" : "详细信息", "Please select tag(s) to add to the selection" : "请选择要添加到所选项目的标签", "Apply tag(s) to selection" : "将标签应用到所选项目", - "Select directory \"{dirName}\"" : "选择目录 \"{dirName}\"", - "Select file \"{fileName}\"" : "选择文件 \"{dirName}\"", + "Select directory \"{dirName}\"" : "选择目录“{dirName}”", + "Select file \"{fileName}\"" : "选择文件“{dirName}”", "Pending" : "等待", "Unable to determine date" : "无法确定日期", "This operation is forbidden" : "该操作被禁止", "This directory is unavailable, please check the logs or contact the administrator" : "此目录不可用,请检查日志或联系管理员", "Storage is temporarily not available" : "存储空间暂时不可用", - "Could not move \"{file}\", target exists" : "无法移动 \"{file}\",目标已存在", - "Could not move \"{file}\"" : "无法移动 \"{file}\"", + "Could not move \"{file}\", target exists" : "无法移动“{file}”,目标已存在", + "Could not move \"{file}\"" : "无法移动“{file}”", "copy" : "复制", "Could not copy \"{file}\", target exists" : "无法复制“{file}”,目标已存在", - "Could not copy \"{file}\"" : "无法复制 \"{file}\"", + "Could not copy \"{file}\"" : "无法复制“{file}”", "Copied {origin} inside {destination}" : "在 {destination} 内复制 {origin}", "Copied {origin} and {nbfiles} other files inside {destination}" : "在 {destination} 内复制了 {origin} 和 {nbfiles} 个其他文件", "Failed to redirect to client" : "重定向到客户端失败", "{newName} already exists" : "{newName} 已经存在", - "Could not rename \"{fileName}\", it does not exist any more" : "无法重命名 \"{fileName}\",此文件已经不存在", - "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "文件夹 \"{dir}\" 中已经存在 \"{targetName}\"。请尝试其他的名称。", - "Could not rename \"{fileName}\"" : "无法重命名 \"{fileName}\"", - "Could not create file \"{file}\"" : "无法创建文件 \"{file}\"", - "Could not create file \"{file}\" because it already exists" : "无法创建文件 \"{file}\",因为它已经存在", - "Could not create folder \"{dir}\" because it already exists" : "无法创建文件夹 \"{dir}\",因为它已经存在", - "Could not fetch file details \"{file}\"" : "无法获取文件详细信息 “{file}”", - "Error deleting file \"{fileName}\"." : "删除文件 \"{fileName}\" 时出错。", + "Could not rename \"{fileName}\", it does not exist any more" : "无法重命名“{fileName}”,此文件已经不存在", + "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "文件夹“{dir}”中已经存在“{targetName}”。请尝试其它名称。", + "Could not rename \"{fileName}\"" : "无法重命名“{fileName}”", + "Could not create file \"{file}\"" : "无法创建文件“{file}”", + "Could not create file \"{file}\" because it already exists" : "无法创建文件“{file}”,因为它已经存在", + "Could not create folder \"{dir}\" because it already exists" : "无法创建文件夹“{dir}”,因为它已经存在", + "Could not fetch file details \"{file}\"" : "无法获取文件详细信息“{file}”", + "Error deleting file \"{fileName}\"." : "删除文件“{fileName}”时出错。", "No search results in other folders for {tag}{filter}{endtag}" : "在其它的文件夹里没有关于 {tag}{filter}{endtag} 的搜索结果", "Enter more than two characters to search in other folders" : "输入至少三个字符,以搜索其他文件夹", "Name" : "名称", @@ -82,21 +82,21 @@ "{used}%" : "{used}%", "{used} of {quota} used" : "已使用 {used} / {quota}", "{used} used" : "已使用 {used} 存储空间", - "\"{name}\" is an invalid file name." : "\"{name}\" 是一个无效的文件名。", + "\"{name}\" is an invalid file name." : "“{name}”是一个无效的文件名。", "File name cannot be empty." : "文件名不能为空。", - "\"/\" is not allowed inside a file name." : "文件名不能包含“/”", - "\"{name}\" is not an allowed filetype" : "\"{name}\" 不是允许的文件类型", + "\"/\" is not allowed inside a file name." : "文件名不能包含“/”。", + "\"{name}\" is not an allowed filetype" : "“{name}”不是允许的文件类型", "Storage of {owner} is full, files cannot be updated or synced anymore!" : "{owner} 的存储已满,无法再更新或同步文件了!", - "Group folder \"{mountPoint}\" is full, files cannot be updated or synced anymore!" : "群组文件夹 “{mountPoint}” 已满,无法再更新或同步文件!", - "External storage \"{mountPoint}\" is full, files cannot be updated or synced anymore!" : "外部存储器 \"{mountPoint}\" 已满,无法再更新或同步文件!", - "Your storage is full, files cannot be updated or synced anymore!" : "你的存储已满,无法再更新或同步文件!", + "Group folder \"{mountPoint}\" is full, files cannot be updated or synced anymore!" : "群组文件夹“{mountPoint}”已满,无法再更新或同步文件!", + "External storage \"{mountPoint}\" is full, files cannot be updated or synced anymore!" : "外部存储器“{mountPoint}”已满,无法再更新或同步文件!", + "Your storage is full, files cannot be updated or synced anymore!" : "您的的存储已满,无法继续更新或同步文件!", "Storage of {owner} is almost full ({usedSpacePercent}%)." : "{owner} 的存储空间几乎已满 ({usedSpacePercent}%)。", - "Group folder \"{mountPoint}\" is almost full ({usedSpacePercent}%)." : "组文件夹 \"{mountPoint}\" 的存储空间几乎已满 ({usedSpacePercent}%)。", - "External storage \"{mountPoint}\" is almost full ({usedSpacePercent}%)." : "外部存储 \"{mountPoint}\" 的存储空间几乎已满 ({usedSpacePercent}%)。", + "Group folder \"{mountPoint}\" is almost full ({usedSpacePercent}%)." : "组文件夹“{mountPoint}”的存储空间几乎已满 ({usedSpacePercent}%)。", + "External storage \"{mountPoint}\" is almost full ({usedSpacePercent}%)." : "外部存储“{mountPoint}”的存储空间几乎已满 ({usedSpacePercent}%)。", "Your storage is almost full ({usedSpacePercent}%)." : "您的存储空间几乎已满({usedSpacePercent}%)", - "_matches \"{filter}\"_::_match \"{filter}\"_" : ["匹配 \"{filter}\""], + "_matches \"{filter}\"_::_match \"{filter}\"_" : ["匹配“{filter}”"], "View in folder" : "在文件夹中查看", - "Direct link was copied (only works for users who have access to this file/folder)" : "已复制直链(仅对有权访问此文件/文件夹的人有效)", + "Direct link was copied (only works for users who have access to this file/folder)" : "已复制直链(仅适用于有权访问此文件/文件夹的用户)", "Path" : "路径", "_%n byte_::_%n bytes_" : ["%n 字节"], "Favorited" : "已收藏", @@ -124,7 +124,7 @@ "Restored by {user}" : "由 {user} 恢复", "Renamed by {user}" : "由 {user} 重命名", "Moved by {user}" : "由 {user} 移动", - "\"remote user\"" : "\"远程用户\"", + "\"remote user\"" : "“远程用户”", "You created {file}" : "您创建了 {file}", "You created an encrypted file in {file}" : "您在 {file} 创建了一个加密文件", "{user} created {file}" : "{user} 创建了 {file}", @@ -140,49 +140,49 @@ "{user} deleted an encrypted file in {file}" : "{user} 在 {file} 删除了加密文件", "You restored {file}" : "您恢复了{file}", "{user} restored {file}" : "{user} 恢复了 {file}", - "You renamed {oldfile} (hidden) to {newfile} (hidden)" : "你将 {oldfile} (隐藏的) 重命名为了 {newfile} (隐藏的)", - "You renamed {oldfile} (hidden) to {newfile}" : "你将 {oldfile} (隐藏的) 重命名为了 {newfile}", - "You renamed {oldfile} to {newfile} (hidden)" : "你将 {oldfile} 重命名为了 {newfile} (隐藏的)", + "You renamed {oldfile} (hidden) to {newfile} (hidden)" : "您将 {oldfile}(隐藏)重命名为 {newfile}(隐藏)", + "You renamed {oldfile} (hidden) to {newfile}" : "您将 {oldfile}(隐藏)重命名为 {newfile}", + "You renamed {oldfile} to {newfile} (hidden)" : "您将 {oldfile} 重命名为了 {newfile}(隐藏)", "You renamed {oldfile} to {newfile}" : "您将 {oldfile} 改名为 {newfile}", - "{user} renamed {oldfile} (hidden) to {newfile} (hidden)" : "{user} 将 {oldfile} (隐藏的) 重命名为了 {newfile} (隐藏的)", - "{user} renamed {oldfile} (hidden) to {newfile}" : "{user} 将 {oldfile} (隐藏的) 重命名为了 {newfile}", - "{user} renamed {oldfile} to {newfile} (hidden)" : "{user} 将 {oldfile} 重命名为了 {newfile} (隐藏的)", + "{user} renamed {oldfile} (hidden) to {newfile} (hidden)" : "{user} 将 {oldfile}(隐藏)重命名为 {newfile}(隐藏)", + "{user} renamed {oldfile} (hidden) to {newfile}" : "{user} 将 {oldfile}(隐藏)重命名为 {newfile}", + "{user} renamed {oldfile} to {newfile} (hidden)" : "{user} 将 {oldfile} 重命名为 {newfile}(隐藏)", "{user} renamed {oldfile} to {newfile}" : "{user} 将 {oldfile} 改名为 {newfile}", - "You moved {oldfile} to {newfile}" : "你将 {oldfile} 移动到了 {newfile}", + "You moved {oldfile} to {newfile}" : "您将 {oldfile} 移动到了 {newfile}", "{user} moved {oldfile} to {newfile}" : "{user} 将 {oldfile} 移动到了 {newfile}", - "A file has been added to or removed from your <strong>favorites</strong>" : "文件已经添加或删除到您的 <strong>收藏夹</strong> 中", - "A file or folder has been <strong>changed</strong>" : "文件/文件夹已经 <strong>修改</strong>", - "A favorite file or folder has been <strong>changed</strong>" : "一个文件或文件夹已<strong>修改</strong>。", + "A file has been added to or removed from your <strong>favorites</strong>" : "文件已经添加或删除到您的<strong>收藏夹</strong> 中", + "A file or folder has been <strong>changed</strong>" : "文件或文件夹已经被<strong>修改</strong>", + "A favorite file or folder has been <strong>changed</strong>" : "一个收藏的文件或文件夹已经被<strong>修改</strong>", "All files" : "全部文件", "Upload (max. %s)" : "上传 (最大 %s)", "Accept" : "接受", "Reject" : "拒绝", - "Incoming ownership transfer from {user}" : "来自{user}的所有权转移", - "Do you want to accept {path}?\n\nNote: The transfer process after accepting may take up to 1 hour." : "您要接受{path}吗?\n\n注意:接受后转移过程可能长达1小时。", + "Incoming ownership transfer from {user}" : "来自 {user} 的所有权转移", + "Do you want to accept {path}?\n\nNote: The transfer process after accepting may take up to 1 hour." : "您要接受 {path} 吗?\n\n注意:接受后转移过程可能长达1小时。", "Ownership transfer failed" : "所有权转移失败", - "Your ownership transfer of {path} to {user} failed." : "您{path}的所有权向{user}转移失败。", - "The ownership transfer of {path} from {user} failed." : "来自{user}的{path}的所有权转移失败。", + "Your ownership transfer of {path} to {user} failed." : "您 {path} 的所有权向 {user} 转移失败。", + "The ownership transfer of {path} from {user} failed." : "来自 {user} 的 {path} 的所有权转移失败。", "Ownership transfer done" : "所有权转移完成", - "Your ownership transfer of {path} to {user} has completed." : "您的{path}向{user}的所有权转移已完成。", - "The ownership transfer of {path} from {user} has completed." : "来自{user}的{path}的所有权转移已完成。", + "Your ownership transfer of {path} to {user} has completed." : "您的 {path} 向 {user} 的所有权转移已完成。", + "The ownership transfer of {path} from {user} has completed." : "来自 {user} 的 {path} 的所有权转移已完成。", "in %s" : "在 %s", "File Management" : "文件管理", "Reload current directory" : "重新载入当前目录", - "Go to the \"{dir}\" directory" : "转到 \"{dir}\" 目录", + "Go to the \"{dir}\" directory" : "前往“{dir}”目录", "Select the row for {displayName}" : "选择 {displayName} 的行", "Open folder {name}" : "打开文件夹 {name}", "Download file {name}" : "下载文件 {name}", - "\"{displayName}\" action executed successfully" : "\"{displayName}\" 操作执行成功", - "\"{displayName}\" action failed" : "\"{displayName}\" 操作执行失败", + "\"{displayName}\" action executed successfully" : "“{displayName}”操作执行成功", + "\"{displayName}\" action failed" : "“{displayName}”操作执行失败", "Total rows summary" : "总行摘要", "Select all" : "全部选择", "Unselect all" : "取消全选", "\"{displayName}\" failed on some elements " : "“{displayName}”在某些元素上失败", - "\"{displayName}\" batch action executed successfully" : "批量操作 \"{displayName}\" 运行成功", + "\"{displayName}\" batch action executed successfully" : "批量操作“{displayName}”运行成功", "ascending" : "升序", "descending" : "降序", "Sort list by {column} ({direction})" : "按 {column} ({direction}) 排序列表", - "This list is not fully rendered for performances reasons. The files will be rendered as you navigate through the list." : "该列表因为性能原因没有完全加载。文件将会在您浏览列表的时候加载。", + "This list is not fully rendered for performances reasons. The files will be rendered as you navigate through the list." : "因为性能原因,该列表没有完全加载。这些文件将会在您浏览列表的时候加载。", "Storage informations" : "存储信息", "{usedQuotaByte} used" : "{usedQuotaByte} 已使用", "{relative}% used" : "{relative}% 已使用", @@ -214,7 +214,7 @@ "WebDAV" : "WebDAV", "Copy to clipboard" : "复制到剪贴板", "Use this address to access your Files via WebDAV" : "使用此地址通过 WebDAV 访问您的文件", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "如果您启用了两步验证,您必须点击此处来创建和使用一个新的应用程序密码。", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "如果启用两步验证,您必须点击此处来创建和使用一个新的应用程序密码。", "Clipboard is not available" : "剪贴板不可用", "WebDAV URL copied to clipboard" : "WebDAV 链接已复制到剪贴板", "Unable to change the favourite state of the file" : "无法修改文件的收藏状态", @@ -236,7 +236,7 @@ "Upload some content or sync with your devices!" : "上传一些内容或与您的设备同步!", "No entries found in this folder" : "在此文件夹中找不到项目", "Upload too large" : "上传文件过大", - "The files you are trying to upload exceed the maximum size for file uploads on this server." : "正在上传的文件超过了此服务器允许上传的最大容量限制", + "The files you are trying to upload exceed the maximum size for file uploads on this server." : "您尝试上传的文件大小超过了服务器的限制。", "No favorites yet" : "暂无收藏", "Files and folders you mark as favorite will show up here" : "收藏的文件和文件夹会在这里显示", "Shares" : "共享", diff --git a/apps/files/src/actions/deleteAction.spec.ts b/apps/files/src/actions/deleteAction.spec.ts index 1046fa6dad7..af7722008b6 100644 --- a/apps/files/src/actions/deleteAction.spec.ts +++ b/apps/files/src/actions/deleteAction.spec.ts @@ -25,8 +25,8 @@ import { File, Folder, Permission } from '@nextcloud/files' import { FileAction } from '../services/FileAction' import * as eventBus from '@nextcloud/event-bus' import axios from '@nextcloud/axios' -import type { Navigation } from '../services/Navigation' import logger from '../logger' +import type { Navigation } from '../services/Navigation' const view = { id: 'files', @@ -44,6 +44,7 @@ describe('Delete action conditions tests', () => { expect(action.id).toBe('delete') expect(action.displayName([], view)).toBe('Delete') expect(action.iconSvgInline([], view)).toBe('SvgMock') + expect(action.default).toBe(false) expect(action.order).toBe(100) }) diff --git a/apps/files/src/actions/downloadAction.spec.ts b/apps/files/src/actions/downloadAction.spec.ts index 5d75754c50c..a9b51b39510 100644 --- a/apps/files/src/actions/downloadAction.spec.ts +++ b/apps/files/src/actions/downloadAction.spec.ts @@ -39,6 +39,7 @@ describe('Download action conditions tests', () => { expect(action.id).toBe('download') expect(action.displayName([], view)).toBe('Download') expect(action.iconSvgInline([], view)).toBe('SvgMock') + expect(action.default).toBe(false) expect(action.order).toBe(30) }) }) diff --git a/apps/files/src/actions/editLocallyAction.spec.ts b/apps/files/src/actions/editLocallyAction.spec.ts new file mode 100644 index 00000000000..3582c0d9138 --- /dev/null +++ b/apps/files/src/actions/editLocallyAction.spec.ts @@ -0,0 +1,163 @@ +/** + * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license AGPL-3.0-or-later + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +import { action } from './editLocallyAction' +import { expect } from '@jest/globals' +import { File, Permission } from '@nextcloud/files' +import { FileAction } from '../services/FileAction' +import * as ncDialogs from '@nextcloud/dialogs' +import axios from '@nextcloud/axios' +import type { Navigation } from '../services/Navigation' + +const view = { + id: 'files', + name: 'Files', +} as Navigation + +describe('Edit locally action conditions tests', () => { + test('Default values', () => { + expect(action).toBeInstanceOf(FileAction) + expect(action.id).toBe('edit-locally') + expect(action.displayName([], view)).toBe('Edit locally') + expect(action.iconSvgInline([], view)).toBe('SvgMock') + expect(action.default).toBe(true) + expect(action.order).toBe(25) + }) +}) + +describe('Edit locally action enabled tests', () => { + test('Enabled for file with UPDATE permission', () => { + const file = new File({ + id: 1, + source: 'https://cloud.domain.com/remote.php/dav/files/admin/foobar.txt', + owner: 'admin', + mime: 'text/plain', + permissions: Permission.ALL, + }) + + expect(action.enabled).toBeDefined() + expect(action.enabled!([file], view)).toBe(true) + }) + + test('Disabled for non-dav ressources', () => { + const file = new File({ + id: 1, + source: 'https://domain.com/data/foobar.txt', + owner: 'admin', + mime: 'text/plain', + }) + + expect(action.enabled).toBeDefined() + expect(action.enabled!([file], view)).toBe(false) + }) + + test('Disabled if more than one node', () => { + const file1 = new File({ + id: 1, + source: 'https://cloud.domain.com/remote.php/dav/files/admin/foo.txt', + owner: 'admin', + mime: 'text/plain', + permissions: Permission.ALL, + }) + const file2 = new File({ + id: 1, + source: 'https://cloud.domain.com/remote.php/dav/files/admin/bar.txt', + owner: 'admin', + mime: 'text/plain', + permissions: Permission.ALL, + }) + + expect(action.enabled).toBeDefined() + expect(action.enabled!([file1, file2], view)).toBe(false) + }) + + test('Disabled for files', () => { + const file = new File({ + id: 1, + source: 'https://cloud.domain.com/remote.php/dav/files/admin/Foo/', + owner: 'admin', + mime: 'text/plain', + }) + + expect(action.enabled).toBeDefined() + expect(action.enabled!([file], view)).toBe(false) + }) + + test('Disabled without UPDATE permissions', () => { + const file = new File({ + id: 1, + source: 'https://cloud.domain.com/remote.php/dav/files/admin/foobar.txt', + owner: 'admin', + mime: 'text/plain', + permissions: Permission.READ, + }) + + expect(action.enabled).toBeDefined() + expect(action.enabled!([file], view)).toBe(false) + }) +}) + +describe('Edit locally action execute tests', () => { + test('Edit locally opens proper URL', async () => { + jest.spyOn(axios, 'post').mockImplementation(async () => ({ data: { ocs: { data: { token: 'foobar' } } } })) + jest.spyOn(ncDialogs, 'showError') + + const file = new File({ + id: 1, + source: 'http://localhost/remote.php/dav/files/admin/foobar.txt', + owner: 'admin', + mime: 'text/plain', + permissions: Permission.UPDATE, + }) + + const exec = await action.exec(file, view, '/') + + // Silent action + expect(exec).toBe(null) + expect(axios.post).toBeCalledTimes(1) + expect(axios.post).toBeCalledWith('http://localhost/ocs/v2.php/apps/files/api/v1/openlocaleditor?format=json', { path: '/foobar.txt' }) + expect(ncDialogs.showError).toBeCalledTimes(0) + expect(window.location.href).toBe('nc://open/test@localhost/foobar.txt?token=foobar') + }) + + test('Edit locally fails and show error', async () => { + jest.spyOn(axios, 'post').mockImplementation(async () => ({})) + jest.spyOn(ncDialogs, 'showError').mockImplementation(async () => ({})) + + const file = new File({ + id: 1, + source: 'http://localhost/remote.php/dav/files/admin/foobar.txt', + owner: 'admin', + mime: 'text/plain', + permissions: Permission.UPDATE, + }) + + const exec = await action.exec(file, view, '/') + + // Silent action + expect(exec).toBe(null) + expect(axios.post).toBeCalledTimes(1) + expect(axios.post).toBeCalledWith('http://localhost/ocs/v2.php/apps/files/api/v1/openlocaleditor?format=json', { path: '/foobar.txt' }) + expect(ncDialogs.showError).toBeCalledTimes(1) + expect(ncDialogs.showError).toBeCalledWith('Failed to redirect to client') + expect(window.location.href).toBe('http://localhost/') + }) +}) diff --git a/apps/files/src/actions/editLocallyAction.ts b/apps/files/src/actions/editLocallyAction.ts new file mode 100644 index 00000000000..ad7e805ec2e --- /dev/null +++ b/apps/files/src/actions/editLocallyAction.ts @@ -0,0 +1,74 @@ +/** + * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license AGPL-3.0-or-later + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +import { encodePath } from '@nextcloud/paths' +import { Permission, type Node } from '@nextcloud/files' +import { translate as t } from '@nextcloud/l10n' +import axios from '@nextcloud/axios' +import DevicesSvg from '@mdi/svg/svg/devices.svg?raw' + +import { generateOcsUrl } from '@nextcloud/router' +import { getCurrentUser } from '@nextcloud/auth' +import { registerFileAction, FileAction } from '../services/FileAction' +import { showError } from '@nextcloud/dialogs' + +const openLocalClient = async function(path: string) { + const link = generateOcsUrl('apps/files/api/v1') + '/openlocaleditor?format=json' + + try { + const result = await axios.post(link, { path }) + const uid = getCurrentUser()?.uid + let url = `nc://open/${uid}@` + window.location.host + encodePath(path) + url += '?token=' + result.data.ocs.data.token + + window.location.href = url + } catch (error) { + showError(t('files', 'Failed to redirect to client')) + } +} + +export const action = new FileAction({ + id: 'edit-locally', + displayName: () => t('files', 'Edit locally'), + iconSvgInline: () => DevicesSvg, + + // Only works on single files + enabled(nodes: Node[]) { + // Only works on single node + if (nodes.length !== 1) { + return false + } + + return (nodes[0].permissions & Permission.UPDATE) !== 0 + }, + + async exec(node: Node) { + openLocalClient(node.path) + return null + }, + + default: true, + order: 25, +}) + +if (!/Android|iPhone|iPad|iPod/i.test(navigator.userAgent)) { + registerFileAction(action) +} diff --git a/apps/files/src/actions/favoriteAction.spec.ts b/apps/files/src/actions/favoriteAction.spec.ts new file mode 100644 index 00000000000..144c3a51dc8 --- /dev/null +++ b/apps/files/src/actions/favoriteAction.spec.ts @@ -0,0 +1,391 @@ +/** + * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license AGPL-3.0-or-later + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +import * as favoriteAction from './favoriteAction' +import { action } from './favoriteAction' +import { expect } from '@jest/globals' +import { File, Folder, Permission } from '@nextcloud/files' +import { FileAction } from '../services/FileAction' +import * as eventBus from '@nextcloud/event-bus' +import axios from '@nextcloud/axios' +import type { Navigation } from '../services/Navigation' +import logger from '../logger' + +const view = { + id: 'files', + name: 'Files', +} as Navigation + +const favoriteView = { + id: 'favorites', + name: 'Favorites', +} as Navigation + +global.window.OC = { + TAG_FAVORITE: '_$!<Favorite>!$_', +} + +describe('Favorite action conditions tests', () => { + test('Default values', () => { + const file = new File({ + id: 1, + source: 'https://cloud.domain.com/remote.php/dav/files/admin/foobar.txt', + owner: 'admin', + mime: 'text/plain', + }) + + expect(action).toBeInstanceOf(FileAction) + expect(action.id).toBe('favorite') + expect(action.displayName([file], view)).toBe('Add to favorites') + expect(action.iconSvgInline([], view)).toBe('SvgMock') + expect(action.default).toBe(false) + expect(action.order).toBe(-50) + }) + + test('Display name is Remove from favorites if already in favorites', () => { + const file = new File({ + id: 1, + source: 'https://cloud.domain.com/remote.php/dav/files/admin/foobar.txt', + owner: 'admin', + mime: 'text/plain', + attributes: { + favorite: 1, + }, + }) + + expect(action.displayName([file], view)).toBe('Remove from favorites') + }) + + test('Display name for multiple state files', () => { + const file1 = new File({ + id: 1, + source: 'https://cloud.domain.com/remote.php/dav/files/admin/foobar.txt', + owner: 'admin', + mime: 'text/plain', + permissions: Permission.ALL, + attributes: { + favorite: 1, + }, + }) + const file2 = new File({ + id: 1, + source: 'https://cloud.domain.com/remote.php/dav/files/admin/foobar.txt', + owner: 'admin', + mime: 'text/plain', + permissions: Permission.ALL, + attributes: { + favorite: 0, + }, + }) + const file3 = new File({ + id: 1, + source: 'https://cloud.domain.com/remote.php/dav/files/admin/foobar.txt', + owner: 'admin', + mime: 'text/plain', + permissions: Permission.ALL, + attributes: { + favorite: 1, + }, + }) + + expect(action.displayName([file1, file2, file3], view)).toBe('Add to favorites') + expect(action.displayName([file1, file2], view)).toBe('Add to favorites') + expect(action.displayName([file2, file3], view)).toBe('Add to favorites') + expect(action.displayName([file1, file3], view)).toBe('Remove from favorites') + }) +}) + +describe('Favorite action enabled tests', () => { + test('Enabled for dav file', () => { + const file = new File({ + id: 1, + source: 'https://cloud.domain.com/remote.php/dav/files/admin/foobar.txt', + owner: 'admin', + mime: 'text/plain', + }) + + expect(action.enabled).toBeDefined() + expect(action.enabled!([file], view)).toBe(true) + }) + + test('Disabled for non-dav ressources', () => { + const file = new File({ + id: 1, + source: 'https://domain.com/data/foobar.txt', + owner: 'admin', + mime: 'text/plain', + }) + + expect(action.enabled).toBeDefined() + expect(action.enabled!([file], view)).toBe(false) + }) +}) + +describe('Favorite action execute tests', () => { + afterEach(() => { + jest.spyOn(axios, 'post').mockRestore() + }) + + test('Favorite triggers tag addition', async () => { + jest.spyOn(axios, 'post') + jest.spyOn(eventBus, 'emit') + + const file = new File({ + id: 1, + source: 'http://localhost/remote.php/dav/files/admin/foobar.txt', + owner: 'admin', + mime: 'text/plain', + }) + + const exec = await action.exec(file, view, '/') + + expect(exec).toBe(true) + + // Check POST request + expect(axios.post).toBeCalledTimes(1) + expect(axios.post).toBeCalledWith('/index.php/apps/files/api/v1/files/foobar.txt', { tags: ['_$!<Favorite>!$_'] }) + + // Check node change propagation + expect(file.attributes.favorite).toBe(1) + expect(eventBus.emit).toBeCalledTimes(1) + expect(eventBus.emit).toBeCalledWith('files:favorites:added', file) + }) + + test('Favorite triggers tag removal', async () => { + jest.spyOn(axios, 'post') + jest.spyOn(eventBus, 'emit') + + const file = new File({ + id: 1, + source: 'http://localhost/remote.php/dav/files/admin/foobar.txt', + owner: 'admin', + mime: 'text/plain', + attributes: { + favorite: 1, + }, + }) + + const exec = await action.exec(file, view, '/') + + expect(exec).toBe(true) + + // Check POST request + expect(axios.post).toBeCalledTimes(1) + expect(axios.post).toBeCalledWith('/index.php/apps/files/api/v1/files/foobar.txt', { tags: [] }) + + // Check node change propagation + expect(file.attributes.favorite).toBe(0) + expect(eventBus.emit).toBeCalledTimes(1) + expect(eventBus.emit).toBeCalledWith('files:favorites:removed', file) + }) + + test('Favorite triggers node removal if favorite view and root dir', async () => { + jest.spyOn(axios, 'post') + jest.spyOn(eventBus, 'emit') + + const file = new File({ + id: 1, + source: 'http://localhost/remote.php/dav/files/admin/foobar.txt', + owner: 'admin', + mime: 'text/plain', + attributes: { + favorite: 1, + }, + }) + + const exec = await action.exec(file, favoriteView, '/') + + expect(exec).toBe(true) + + // Check POST request + expect(axios.post).toBeCalledTimes(1) + expect(axios.post).toBeCalledWith('/index.php/apps/files/api/v1/files/foobar.txt', { tags: [] }) + + // Check node change propagation + expect(file.attributes.favorite).toBe(0) + expect(eventBus.emit).toBeCalledTimes(2) + expect(eventBus.emit).toHaveBeenNthCalledWith(1, 'files:node:deleted', file) + expect(eventBus.emit).toHaveBeenNthCalledWith(2, 'files:favorites:removed', file) + }) + + test('Favorite does NOT triggers node removal if favorite view but NOT root dir', async () => { + jest.spyOn(axios, 'post') + jest.spyOn(eventBus, 'emit') + + const file = new File({ + id: 1, + source: 'http://localhost/remote.php/dav/files/admin/Foo/Bar/foobar.txt', + root: '/files/admin', + owner: 'admin', + mime: 'text/plain', + attributes: { + favorite: 1, + }, + }) + + const exec = await action.exec(file, favoriteView, '/') + + expect(exec).toBe(true) + + // Check POST request + expect(axios.post).toBeCalledTimes(1) + expect(axios.post).toBeCalledWith('/index.php/apps/files/api/v1/files/Foo/Bar/foobar.txt', { tags: [] }) + + // Check node change propagation + expect(file.attributes.favorite).toBe(0) + expect(eventBus.emit).toBeCalledTimes(1) + expect(eventBus.emit).toBeCalledWith('files:favorites:removed', file) + }) + + test('Favorite fails and show error', async () => { + const error = new Error('Mock error') + jest.spyOn(axios, 'post').mockImplementation(() => { throw new Error('Mock error') }) + jest.spyOn(logger, 'error').mockImplementation(() => jest.fn()) + + const file = new File({ + id: 1, + source: 'http://localhost/remote.php/dav/files/admin/foobar.txt', + owner: 'admin', + mime: 'text/plain', + attributes: { + favorite: 0, + }, + }) + + const exec = await action.exec(file, view, '/') + + expect(exec).toBe(false) + + // Check POST request + expect(axios.post).toBeCalledTimes(1) + expect(axios.post).toBeCalledWith('/index.php/apps/files/api/v1/files/foobar.txt', { tags: ['_$!<Favorite>!$_'] }) + + // Check node change propagation + expect(logger.error).toBeCalledTimes(1) + expect(logger.error).toBeCalledWith('Error while adding a file to favourites', { error, source: file.source, node: file }) + expect(file.attributes.favorite).toBe(0) + expect(eventBus.emit).toBeCalledTimes(0) + }) + + test('Removing from favorites fails and show error', async () => { + const error = new Error('Mock error') + jest.spyOn(axios, 'post').mockImplementation(() => { throw error }) + jest.spyOn(logger, 'error').mockImplementation(() => jest.fn()) + + const file = new File({ + id: 1, + source: 'http://localhost/remote.php/dav/files/admin/foobar.txt', + owner: 'admin', + mime: 'text/plain', + attributes: { + favorite: 1, + }, + }) + + const exec = await action.exec(file, view, '/') + + expect(exec).toBe(false) + + // Check POST request + expect(axios.post).toBeCalledTimes(1) + expect(axios.post).toBeCalledWith('/index.php/apps/files/api/v1/files/foobar.txt', { tags: [] }) + + // Check node change propagation + expect(logger.error).toBeCalledTimes(1) + expect(logger.error).toBeCalledWith('Error while removing a file from favourites', { error, source: file.source, node: file }) + expect(file.attributes.favorite).toBe(1) + expect(eventBus.emit).toBeCalledTimes(0) + }) +}) + +describe('Favorite action batch execute tests', () => { + test('Favorite action batch execute with mixed files', async () => { + jest.spyOn(favoriteAction, 'favoriteNode') + jest.spyOn(axios, 'post') + + const file1 = new File({ + id: 1, + source: 'https://cloud.domain.com/remote.php/dav/files/admin/foo.txt', + owner: 'admin', + mime: 'text/plain', + permissions: Permission.ALL, + attributes: { + favorite: 1, + }, + }) + const file2 = new File({ + id: 1, + source: 'https://cloud.domain.com/remote.php/dav/files/admin/bar.txt', + owner: 'admin', + mime: 'text/plain', + permissions: Permission.ALL, + attributes: { + favorite: 0, + }, + }) + + // Mixed states triggers favorite action + const exec = await action.execBatch!([file1, file2], view, '/') + expect(exec).toStrictEqual([true, true]) + expect([file1, file2].every(file => file.attributes.favorite === 1)).toBe(true) + + expect(favoriteAction.favoriteNode).toBeCalledTimes(2) + expect(axios.post).toBeCalledTimes(2) + expect(axios.post).toHaveBeenNthCalledWith(1, '/index.php/apps/files/api/v1/files/foo.txt', { tags: ['_$!<Favorite>!$_'] }) + expect(axios.post).toHaveBeenNthCalledWith(2, '/index.php/apps/files/api/v1/files/bar.txt', { tags: ['_$!<Favorite>!$_'] }) + }) + + test('Remove from favorite action batch execute with favorites only files', async () => { + jest.spyOn(favoriteAction, 'favoriteNode') + jest.spyOn(axios, 'post') + + const file1 = new File({ + id: 1, + source: 'https://cloud.domain.com/remote.php/dav/files/admin/foo.txt', + owner: 'admin', + mime: 'text/plain', + permissions: Permission.ALL, + attributes: { + favorite: 1, + }, + }) + const file2 = new File({ + id: 1, + source: 'https://cloud.domain.com/remote.php/dav/files/admin/bar.txt', + owner: 'admin', + mime: 'text/plain', + permissions: Permission.ALL, + attributes: { + favorite: 1, + }, + }) + + // Mixed states triggers favorite action + const exec = await action.execBatch!([file1, file2], view, '/') + expect(exec).toStrictEqual([true, true]) + expect([file1, file2].every(file => file.attributes.favorite === 0)).toBe(true) + + expect(favoriteAction.favoriteNode).toBeCalledTimes(2) + expect(axios.post).toBeCalledTimes(2) + expect(axios.post).toHaveBeenNthCalledWith(1, '/index.php/apps/files/api/v1/files/foo.txt', { tags: [] }) + expect(axios.post).toHaveBeenNthCalledWith(2, '/index.php/apps/files/api/v1/files/bar.txt', { tags: [] }) + }) +}) diff --git a/apps/files/src/actions/favoriteAction.ts b/apps/files/src/actions/favoriteAction.ts new file mode 100644 index 00000000000..5b9ba7f95e6 --- /dev/null +++ b/apps/files/src/actions/favoriteAction.ts @@ -0,0 +1,99 @@ +/** + * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license AGPL-3.0-or-later + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +import { emit } from '@nextcloud/event-bus' +import { translate as t } from '@nextcloud/l10n' +import axios from '@nextcloud/axios' +import Star from '@mdi/svg/svg/star.svg?raw' +import type { Node } from '@nextcloud/files' + +import { generateUrl } from '@nextcloud/router' +import { registerFileAction, FileAction } from '../services/FileAction' +import logger from '../logger.js' +import type { Navigation } from '../services/Navigation' + +// If any of the nodes is not favorited, we display the favorite action. +const shouldFavorite = (nodes: Node[]): boolean => { + return nodes.some(node => node.attributes.favorite !== 1) +} + +export const favoriteNode = async (node: Node, view: Navigation, willFavorite: boolean): Promise<boolean> => { + try { + // TODO: migrate to webdav tags plugin + const url = generateUrl('/apps/files/api/v1/files') + node.path + await axios.post(url, { + tags: willFavorite + ? [window.OC.TAG_FAVORITE] + : [], + }) + + // Let's delete if we are in the favourites view + // AND if it is removed from the user favorites + // AND it's in the root of the favorites view + if (view.id === 'favorites' && !willFavorite && node.dirname === '/') { + emit('files:node:deleted', node) + } + + // Update the node webdav attribute + node.attributes.favorite = willFavorite ? 1 : 0 + + // Dispatch event to whoever is interested + if (willFavorite) { + emit('files:favorites:added', node) + } else { + emit('files:favorites:removed', node) + } + + return true + } catch (error) { + const action = willFavorite ? 'adding a file to favourites' : 'removing a file from favourites' + logger.error('Error while ' + action, { error, source: node.source, node }) + return false + } +} + +export const action = new FileAction({ + id: 'favorite', + displayName(nodes: Node[]) { + return shouldFavorite(nodes) + ? t('files', 'Add to favorites') + : t('files', 'Remove from favorites') + }, + iconSvgInline: () => Star, + + enabled(nodes: Node[]) { + // We can only favorite nodes within files + return !nodes.some(node => !node.root?.startsWith?.('/files')) + }, + + async exec(node: Node, view: Navigation) { + const willFavorite = shouldFavorite([node]) + return await favoriteNode(node, view, willFavorite) + }, + async execBatch(nodes: Node[], view: Navigation) { + const willFavorite = shouldFavorite(nodes) + return Promise.all(nodes.map(async node => await favoriteNode(node, view, willFavorite))) + }, + + order: -50, +}) + +registerFileAction(action) diff --git a/apps/files/src/actions/openFolderAction.spec.ts b/apps/files/src/actions/openFolderAction.spec.ts index 07502be2eed..140b6722608 100644 --- a/apps/files/src/actions/openFolderAction.spec.ts +++ b/apps/files/src/actions/openFolderAction.spec.ts @@ -21,7 +21,7 @@ */ import { action } from './openFolderAction' import { expect } from '@jest/globals' -import { File, Folder, Permission } from '@nextcloud/files' +import { File, Folder, Node, Permission } from '@nextcloud/files' import { FileAction } from '../services/FileAction' import type { Navigation } from '../services/Navigation' @@ -139,8 +139,7 @@ describe('Open folder action execute tests', () => { const goToRouteMock = jest.fn() window.OCP = { Files: { Router: { goToRoute: goToRouteMock } } } - // @ts-ignore null as Node - const exec = await action.exec(null, view, '/') + const exec = await action.exec(null as unknown as Node, view, '/') expect(exec).toBe(false) expect(goToRouteMock).toBeCalledTimes(0) }) diff --git a/apps/files/src/actions/renameAction.spec.ts b/apps/files/src/actions/renameAction.spec.ts new file mode 100644 index 00000000000..ae2cfcec7eb --- /dev/null +++ b/apps/files/src/actions/renameAction.spec.ts @@ -0,0 +1,111 @@ +/** + * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license AGPL-3.0-or-later + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +import { action } from './renameAction' +import { expect } from '@jest/globals' +import { File, Permission } from '@nextcloud/files' +import { FileAction } from '../services/FileAction' +import * as eventBus from '@nextcloud/event-bus' +import type { Navigation } from '../services/Navigation' + +const view = { + id: 'files', + name: 'Files', +} as Navigation + +describe('Rename action conditions tests', () => { + test('Default values', () => { + expect(action).toBeInstanceOf(FileAction) + expect(action.id).toBe('rename') + expect(action.displayName([], view)).toBe('Rename') + expect(action.iconSvgInline([], view)).toBe('SvgMock') + expect(action.default).toBe(false) + expect(action.order).toBe(10) + }) +}) + +describe('Rename action enabled tests', () => { + test('Enabled for node with UPDATE permission', () => { + const file = new File({ + id: 1, + source: 'https://cloud.domain.com/remote.php/dav/files/admin/foobar.txt', + owner: 'admin', + mime: 'text/plain', + permissions: Permission.UPDATE, + }) + + expect(action.enabled).toBeDefined() + expect(action.enabled!([file], view)).toBe(true) + }) + + test('Disabled for node without UPDATE permission', () => { + const file = new File({ + id: 1, + source: 'https://cloud.domain.com/remote.php/dav/files/admin/foobar.txt', + owner: 'admin', + mime: 'text/plain', + permissions: Permission.READ, + }) + + expect(action.enabled).toBeDefined() + expect(action.enabled!([file], view)).toBe(false) + }) + + test('Disabled if more than one node', () => { + window.OCA = { Files: { Sidebar: {} } } + + const file1 = new File({ + id: 1, + source: 'https://cloud.domain.com/remote.php/dav/files/admin/foo.txt', + owner: 'admin', + mime: 'text/plain', + }) + const file2 = new File({ + id: 1, + source: 'https://cloud.domain.com/remote.php/dav/files/admin/bar.txt', + owner: 'admin', + mime: 'text/plain', + }) + + expect(action.enabled).toBeDefined() + expect(action.enabled!([file1, file2], view)).toBe(false) + }) +}) + +describe('Rename action exec tests', () => { + test('Rename', async () => { + jest.spyOn(eventBus, 'emit') + + const file = new File({ + id: 1, + source: 'https://cloud.domain.com/remote.php/dav/files/admin/foobar.txt', + owner: 'admin', + mime: 'text/plain', + }) + + const exec = await action.exec(file, view, '/') + + // Silent action + expect(exec).toBe(null) + expect(eventBus.emit).toBeCalledTimes(1) + expect(eventBus.emit).toHaveBeenCalledWith('files:node:rename', file) + }) +}) diff --git a/apps/files/src/actions/renameAction.ts b/apps/files/src/actions/renameAction.ts new file mode 100644 index 00000000000..02aaaa6d3b4 --- /dev/null +++ b/apps/files/src/actions/renameAction.ts @@ -0,0 +1,51 @@ +/** + * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license AGPL-3.0-or-later + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +import { Permission, type Node } from '@nextcloud/files' +import { translate as t } from '@nextcloud/l10n' +import PencilSvg from '@mdi/svg/svg/pencil.svg?raw' + +import { emit } from '@nextcloud/event-bus' +import { registerFileAction, FileAction } from '../services/FileAction' + +export const ACTION_DETAILS = 'details' + +export const action = new FileAction({ + id: 'rename', + displayName: () => t('files', 'Rename'), + iconSvgInline: () => PencilSvg, + + enabled: (nodes: Node[]) => { + return nodes.length > 0 && nodes + .map(node => node.permissions) + .every(permission => (permission & Permission.UPDATE) !== 0) + }, + + async exec(node: Node) { + // Renaming is a built-in feature of the files app + emit('files:node:rename', node) + return null + }, + + order: 10, +}) + +registerFileAction(action) diff --git a/apps/files/src/actions/sidebarAction.spec.ts b/apps/files/src/actions/sidebarAction.spec.ts index cdf878459db..f6594090c53 100644 --- a/apps/files/src/actions/sidebarAction.spec.ts +++ b/apps/files/src/actions/sidebarAction.spec.ts @@ -42,7 +42,7 @@ describe('Open sidebar action conditions tests', () => { }) }) -describe('Open folder action enabled tests', () => { +describe('Open sidebar action enabled tests', () => { test('Enabled for ressources within user root folder', () => { window.OCA = { Files: { Sidebar: {} } } diff --git a/apps/files/src/actions/sidebarAction.ts b/apps/files/src/actions/sidebarAction.ts index d0baf611992..4766d2e90df 100644 --- a/apps/files/src/actions/sidebarAction.ts +++ b/apps/files/src/actions/sidebarAction.ts @@ -65,4 +65,3 @@ export const action = new FileAction({ }) registerFileAction(action) - diff --git a/apps/files/src/components/SidebarTab.vue b/apps/files/src/components/SidebarTab.vue index 0a6432b47b6..78c050048f1 100644 --- a/apps/files/src/components/SidebarTab.vue +++ b/apps/files/src/components/SidebarTab.vue @@ -1,4 +1,3 @@ - <!-- - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com> - diff --git a/apps/files/src/services/FileAction.ts b/apps/files/src/services/FileAction.ts index 6b2e3750a24..03cc957e1e5 100644 --- a/apps/files/src/services/FileAction.ts +++ b/apps/files/src/services/FileAction.ts @@ -110,7 +110,7 @@ export class FileAction { } get default() { - return this._action.default + return this._action.default === true } get inline() { diff --git a/apps/files/src/services/RouterService.ts b/apps/files/src/services/RouterService.ts index 978e009514e..55033f9c79c 100644 --- a/apps/files/src/services/RouterService.ts +++ b/apps/files/src/services/RouterService.ts @@ -19,14 +19,13 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * */ -import type { Route } from 'vue-router'; -import type VueRouter from 'vue-router'; -import type { Dictionary } from 'vue-router/types/router'; -import type { Location } from 'vue-router/types/router'; +import type { Route } from 'vue-router' +import type VueRouter from 'vue-router' +import type { Dictionary, Location } from 'vue-router/types/router' export default class RouterService { - private _router: VueRouter; + private _router: VueRouter constructor(router: VueRouter) { this._router = router @@ -34,12 +33,12 @@ export default class RouterService { /** * Trigger a route change on the files app - * + * * @param path the url path, eg: '/trashbin?dir=/Deleted' * @param replace replace the current history * @see https://router.vuejs.org/guide/essentials/navigation.html#navigate-to-a-different-location */ - goTo(path: string, replace: boolean = false): Promise<Route> { + goTo(path: string, replace = false): Promise<Route> { return this._router.push({ path, replace, @@ -68,4 +67,5 @@ export default class RouterService { replace, } as Location) } + } diff --git a/apps/files/src/views/Navigation.cy.ts b/apps/files/src/views/Navigation.cy.ts index c9a7ca98ee1..97f1f8ee7b8 100644 --- a/apps/files/src/views/Navigation.cy.ts +++ b/apps/files/src/views/Navigation.cy.ts @@ -161,7 +161,7 @@ describe('Quota rendering', () => { // TODO: remove when @nextcloud/l10n 2.0 is released // https://github.com/nextcloud/nextcloud-l10n/pull/542 cy.stub(L10n, 'translate', (app, text, vars = {}, number) => { - cy.log({app, text, vars, number}) + cy.log({ app, text, vars, number }) return text.replace(/%n/g, '' + number).replace(/{([^{}]*)}/g, (match, key) => { return vars[key] }) |