diff options
159 files changed, 732 insertions, 460 deletions
diff --git a/apps/dav/l10n/gl.js b/apps/dav/l10n/gl.js index 6159f311993..5719fcf1a5d 100644 --- a/apps/dav/l10n/gl.js +++ b/apps/dav/l10n/gl.js @@ -77,6 +77,7 @@ OC.L10N.register( "Contacts and groups" : "Contactos e grupos", "WebDAV" : "WebDAV", "WebDAV endpoint" : "Terminación WebDAV", + "Availability" : "Dispoñibilidade", "to" : "para", "Monday" : "luns", "Tuesday" : "martes", diff --git a/apps/dav/l10n/gl.json b/apps/dav/l10n/gl.json index bb11ce4a5d6..3980e81a75d 100644 --- a/apps/dav/l10n/gl.json +++ b/apps/dav/l10n/gl.json @@ -75,6 +75,7 @@ "Contacts and groups" : "Contactos e grupos", "WebDAV" : "WebDAV", "WebDAV endpoint" : "Terminación WebDAV", + "Availability" : "Dispoñibilidade", "to" : "para", "Monday" : "luns", "Tuesday" : "martes", diff --git a/apps/files/css/detailsView.css b/apps/files/css/detailsView.css index 46c2eeabe36..972c40726ef 100644 --- a/apps/files/css/detailsView.css +++ b/apps/files/css/detailsView.css @@ -28,14 +28,12 @@ .app-sidebar .thumbnailContainer.large { margin-left: -15px; - margin-right: -35px; - /* 15 + 20 for the close button */ + margin-right: -35px; /* 15 + 20 for the close button */ margin-top: -15px; } .app-sidebar .thumbnailContainer.large.portrait { - margin: 0; - /* if we don't fit the image anyway we give it back the margin */ + margin: 0; /* if we don't fit the image anyway we give it back the margin */ } .app-sidebar .large .thumbnail { @@ -52,8 +50,7 @@ .app-sidebar .large .thumbnail .stretcher { content: ""; display: block; - padding-bottom: 56.25%; - /* sets height of .thumbnail to 9/16 of the width */ + padding-bottom: 56.25%; /* sets height of .thumbnail to 9/16 of the width */ } .app-sidebar .large.portrait .thumbnail { @@ -95,8 +92,7 @@ } .app-sidebar .fileName h3 { - width: calc(100% - 42px); - /* 36px is the with of the copy link icon, but this breaks so we add some more to be sure */ + width: calc(100% - 42px); /* 36px is the with of the copy link icon, but this breaks so we add some more to be sure */ display: inline-block; padding: 5px 0; margin: -5px 0; diff --git a/apps/files/css/detailsView.css.map b/apps/files/css/detailsView.css.map index 30726744caf..d406f8f18c1 100644 --- a/apps/files/css/detailsView.css.map +++ b/apps/files/css/detailsView.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["detailsView.scss"],"names":[],"mappings":"AAAA;EACC;EACA;;;AAGD;EACC;;;AAID;EACC;EACA;;;AAGD;EACC;EACA;EACA;;AAEA;EAEC;;;AAGF;EACC;EACA;;;AAGD;EACC;EACA;AAAqB;EACrB;;;AAGD;EACC;AAAW;;;AAGZ;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;AAAwB;;;AAGzB;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;AAA0B;EAC1B;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA","file":"detailsView.css"}
\ No newline at end of file +{"version":3,"sourceRoot":"","sources":["detailsView.scss"],"names":[],"mappings":"AAAA;EACC;EACA;;;AAGD;EACC;;;AAID;EACC;EACA;;;AAGD;EACC;EACA;EACA;;AAEA;EAEC;;;AAGF;EACC;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA","file":"detailsView.css"}
\ No newline at end of file diff --git a/apps/files/css/files.css b/apps/files/css/files.css index 318c34bad2e..8696d5f7707 100644 --- a/apps/files/css/files.css +++ b/apps/files/css/files.css @@ -378,8 +378,7 @@ table td { table th.column-name { position: relative; - width: 9999px; - /* not really sure why this works better than 100% … table styling */ + width: 9999px; /* not really sure why this works better than 100% … table styling */ padding: 0; } @@ -437,8 +436,7 @@ table.multiselect thead th { table.multiselect .column-name { position: relative; - width: 9999px; - /* when we use 100%, the styling breaks on mobile … table styling */ + width: 9999px; /* when we use 100%, the styling breaks on mobile … table styling */ } table.multiselect .column-mtime > a { @@ -455,8 +453,7 @@ table td.fileaction { table td.filename a.name, table td.filename p.name { display: flex; - position: relative; - /* Firefox needs to explicitly have this default set … */ + position: relative; /* Firefox needs to explicitly have this default set … */ -moz-box-sizing: border-box; box-sizing: border-box; height: 50px; @@ -934,8 +931,7 @@ table.dragshadow td.size { padding: 0; margin: 0; background-color: var(--color-main-background-translucent); - z-index: 62; - /* must be above the filelist sticky header and texteditor menubar */ + z-index: 62; /* must be above the filelist sticky header and texteditor menubar */ -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; diff --git a/apps/files/css/files.css.map b/apps/files/css/files.css.map index 7d2b67d9e2f..ea917aa36b4 100644 --- a/apps/files/css/files.css.map +++ b/apps/files/css/files.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["../../../core/css/variables.scss","files.scss","../../../core/css/functions.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBA;AAAA;AAAA;AA4BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ADxCA;AACA;EACC;EACA;EACA;EACA;;;AAED;EAAoD;EAAU;;;AAC9D;EAAqB;;;AACrB;AAAA;EAEC;;;AAED;EACC;;;AAGD;EACC;EACA;EACA;;AACA;EACC;;;AAIF;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAGD;AAAA;AAAA;EAGC;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;AAiBA;AAAA;AAAA;;AAfA;EACC;;AAGD;EACC;EACA;EAEA;EAEA;EACA;EACA;;AAMD;EACC;EACA;;AAEA;AAAA;EAEC;;AAEA;AAAA;EACC;;AAKF;EACC;;;AAKH;EACC;;;AAGD;AACA;EACC;EACA;;;AAGD;EAGC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;AACA;ACvEC;EAEA;;;ADwED;AC1EC;EAEA;;;AD2ED;AC7EC;EAEA;;;AD8ED;AAAA;AAAA;AAAA;AChFC;EAEA;;;ADoFD;ACtFC;EAEA;;;ADuFD;ACzFC;EAEA;;;AD0FD;AC5FC;EAEA;;;AD6FD;AC/FC;EAEA;;;ADgGD;AClGC;EAEA;;;ADmGD;ACrGC;EAEA;;;ADuGD;EACC;;;AAED;AACA;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAED;AAAA;AAAA;AAAA;AAAA;EAKC;;;AAED;AAAA;AAAA;AAAA;AAAA;EAKC;;;AAGD;EAAU;;;AAEV;EACC;;;AAED;EACC;EACA;EACA;EACA;EACA;;;AAED;AAAA;AAAA;AAAA;EAIC;EACA;;;AAGD;EACC;;;AAED;EACC;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;;AAGF;EACC;EACA;;;AAED;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAED;AAAA;AAAA;AAAA;EAIC;;;AAED;EACC;;;AAED;AAAA;EAEC;;;AAGD;AAAA;EAEC;EACA;EACA;;;AAED;EACC;EACA;EACA;EACA;;;AAED;EACC;EACA;AAAe;EACf;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAED;EACC;;;AAED;AAAA;EAEC;EACA;EACA;AACA;EACA;;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAQC;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;AAAe;;;AAEhB;EACC;;;AAGD;AAAA;AAAA;EAGC;EACA;;;AAED;AAAA;EAEC;EACA;AAAmB;EACnB;EACA;EACA;EACA;EACA;;;AAED;AACC;EACA;EACA;EACA;EACA;;;AAGA;EACC;;AAED;EACC;;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAED;EACC;;;AAID;EACC;;;AAGD;EACC;EACA;EACA;;;AAED;EACC;EACA;EACA;;;AAGD;EAA6H;;;AAC7H;EAAwE;EAAY;;;AAEpF;EACC;EACA;EACA;EACA;;;AAGD;AAEC;EACC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAKH;AAAA;EAEC;;;AAGD;EACC;EACA;EACA;EACA;;;AAED;EACC;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;AAEA;EACC;EACA;EAEA;EACA;EACA;EACA;EACA;EAEA;EACA;EAEA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;AACA;EACC;EACA;;;AAGD;AACA;AAAA;AAAA;AAAA;EAIC;;;AAGD;AACA;EACC;;;AAGD;AAGC;AAAA;EACC;;AAGD;AAAA;EACC;EACA;EACA;EACA;EACA;;;AAIF;AAAA;EAEC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EAA2C;EAAwC;EAAsC;;;AAG1H;AAAA;EAEC;EACA;EACA;;;AAGD;EACC;EACA;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EAAsC;;;AAEtC;AACA;EACC;;;AAGD;EACC;;;AAGD;AACA;AAAA;EAEC;;;AAGD;AACA;EACC;EACA;;;AAGD;EACC;;;AAGD;AAAA;AAAA;AAIC;EACC;;AAGD;EACC;;AAGD;EACC;;;AAIF;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;AACA;EACI;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACC;EACA;EACA;;;AAGD;EACC;;;AAED;EACC;EACA;EACA;;;AAGD;EACC;;;AAIA;EACC;EACA;EACA;EACA;;AACA;EACC;;AACA;AACC;AACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAGF;EACC;EACA;EACA;EACA;;AAGA;EACC;;AAID;AAAA;EAEC;;AAED;EACC;;AACA;EACC;;AAIH;EACC;;AAED;EACC;EACA;;AAGF;EACC;;AAED;EACC;;;AAKF;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;AAAA;AAAA;AAAA;EAKC;;;AAGD;EACC;;;AAGD;AAAA;EAEC;;;AAGD;EACC;;;AAGD;EACC;AACA;EAEA;;;AAED;EACC;AACA;EACA;;;AAED;AAAA;AAAA;AAGA;EACC;;;AAED;AAAA;AAAA;AAAA;EAIC;;;AAED;EACC;EACA;EACA;;;AAED;EACC;;;AAED;EACC;;;AAGD;EACC;EACA;;;AAED;EACC;EACA;EACA;AAEA;EACA;;;AAED;EACC;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAED;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;AAEA;;AACA;EACC;;;AAKF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAAa;EACb;EACA;EACA;EACA;EACA;EACA;EACA;;AAKE;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;;;AAMJ;AAEA;EACC;;;AAGD;AAAA;AAAA;AAAA;EAIC;EACA;EACA;;;AAMA;EACC;;AAED;EACC;;;AAIF;AAAA;AAAA;EAGC;;;AAGD;AAAA;AAAA;EAGC;EACA;;;AAGD;EACC;;;AAGD;EACC;;AAEA;EACC;;;AAIF;AAAA;EAEC;;;AAED;EACC;;AACA;EACC;;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EACC;EACA;EACA;;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAKA;EACC;;AAIF;EACC;EACA;;;AAIF;AACA;AAIC;AAaA;AAqOA;;AAhPC;EACC;EACA;EACA;;AACA;EACC;EACA;;AAMH;EACC;EACA;EACA;EACA;EACA;;AAGA;EACC;EACA;EACA;EACA;;AAEA;AAAA;EAKC;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGC;;AAKH;EACC;EACA;AAoJA;AA8BA;;AA/KC;EACC;EACA;EACA;EACA,OAvDQ;EAwDR,QAxDQ;EAyDR,SAxDO;EAyDP;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;AAAA;AAAA;;AAGA;EACC,SA1EK;EA2EL;EACA;EACA;;AAKH;EACC;EACA;EACA;EACA;EAEA;EACA;EAEA;;AAGD;EACC;EACA;EAIA;EAKA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;AAoBA;;AAlBA;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;AAID;EACC;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC,SApJK;EAqJL;EACA;EACA;EACA;EACA;;AAGA;EACC;;AAQH;EACC;;AAEA;EACC;EACA;;AAIF;EACC;;AAGD;EACC;;AAIF;EACC;EACA;;AAEA;EACC;EACA;EACA;;AAMH;EAEC;;AAGD;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA,SAxNO;;AAyNP;EACC;EACA,OA3NM;EA4NN,QA5NM;;AAkOT;EACC;EACA;EACA;AAEA;;AACA;EACC;EACA;;AAMJ;EACC;;AAID;EACC;;AAEA;EACC;EACA;EAEA;;AAEA;EACC;;AAEA;EAEC;;AAGD;EACI;;;AAOR;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAGC;;AAGD;EAEC;;;AAIF;AAAA;AAAA;AAAA;AAAA;AAKA;EACC;EACA;;;AAGD;AACA;AAaC;;AAZA;AACC;AAKA;;AAJA;EACC;;AAID;EACC;;AAKF;EACC;EACA;EACA;;;AAIF;AACA;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAGD;EACC;EACA;EACA","file":"files.css"}
\ No newline at end of file +{"version":3,"sourceRoot":"","sources":["../../../core/css/variables.scss","files.scss","../../../core/css/functions.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBA;AAAA;AAAA;AA4BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ADxCA;AACA;EACC;EACA;EACA;EACA;;;AAED;EAAoD;EAAU;;;AAC9D;EAAqB;;;AACrB;AAAA;EAEC;;;AAED;EACC;;;AAGD;EACC;EACA;EACA;;AACA;EACC;;;AAIF;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAGD;AAAA;AAAA;EAGC;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;AAiBA;AAAA;AAAA;;AAfA;EACC;;AAGD;EACC;EACA;EAEA;EAEA;EACA;EACA;;AAMD;EACC;EACA;;AAEA;AAAA;EAEC;;AAEA;AAAA;EACC;;AAKF;EACC;;;AAKH;EACC;;;AAGD;AACA;EACC;EACA;;;AAGD;EAGC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;AACA;ACvEC;EAEA;;;ADwED;AC1EC;EAEA;;;AD2ED;AC7EC;EAEA;;;AD8ED;AAAA;AAAA;AAAA;AChFC;EAEA;;;ADoFD;ACtFC;EAEA;;;ADuFD;ACzFC;EAEA;;;AD0FD;AC5FC;EAEA;;;AD6FD;AC/FC;EAEA;;;ADgGD;AClGC;EAEA;;;ADmGD;ACrGC;EAEA;;;ADuGD;EACC;;;AAED;AACA;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAED;AAAA;AAAA;AAAA;AAAA;EAKC;;;AAED;AAAA;AAAA;AAAA;AAAA;EAKC;;;AAGD;EAAU;;;AAEV;EACC;;;AAED;EACC;EACA;EACA;EACA;EACA;;;AAED;AAAA;AAAA;AAAA;EAIC;EACA;;;AAGD;EACC;;;AAED;EACC;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;;AAGF;EACC;EACA;;;AAED;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAED;AAAA;AAAA;AAAA;EAIC;;;AAED;EACC;;;AAED;AAAA;EAEC;;;AAGD;AAAA;EAEC;EACA;EACA;;;AAED;EACC;EACA;EACA;EACA;;;AAED;EACC;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAED;EACC;;;AAED;AAAA;EAEC;EACA;EACA;AACA;EACA;;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAQC;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;;;AAED;EACC;;;AAGD;AAAA;AAAA;EAGC;EACA;;;AAED;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAED;AACC;EACA;EACA;EACA;EACA;;;AAGA;EACC;;AAED;EACC;;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAED;EACC;;;AAID;EACC;;;AAGD;EACC;EACA;EACA;;;AAED;EACC;EACA;EACA;;;AAGD;EAA6H;;;AAC7H;EAAwE;EAAY;;;AAEpF;EACC;EACA;EACA;EACA;;;AAGD;AAEC;EACC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAKH;AAAA;EAEC;;;AAGD;EACC;EACA;EACA;EACA;;;AAED;EACC;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;AAEA;EACC;EACA;EAEA;EACA;EACA;EACA;EACA;EAEA;EACA;EAEA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;AACA;EACC;EACA;;;AAGD;AACA;AAAA;AAAA;AAAA;EAIC;;;AAGD;AACA;EACC;;;AAGD;AAGC;AAAA;EACC;;AAGD;AAAA;EACC;EACA;EACA;EACA;EACA;;;AAIF;AAAA;EAEC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EAA2C;EAAwC;EAAsC;;;AAG1H;AAAA;EAEC;EACA;EACA;;;AAGD;EACC;EACA;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EAAsC;;;AAEtC;AACA;EACC;;;AAGD;EACC;;;AAGD;AACA;AAAA;EAEC;;;AAGD;AACA;EACC;EACA;;;AAGD;EACC;;;AAGD;AAAA;AAAA;AAIC;EACC;;AAGD;EACC;;AAGD;EACC;;;AAIF;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;AACA;EACI;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACC;EACA;EACA;;;AAGD;EACC;;;AAED;EACC;EACA;EACA;;;AAGD;EACC;;;AAIA;EACC;EACA;EACA;EACA;;AACA;EACC;;AACA;AACC;AACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAGF;EACC;EACA;EACA;EACA;;AAGA;EACC;;AAID;AAAA;EAEC;;AAED;EACC;;AACA;EACC;;AAIH;EACC;;AAED;EACC;EACA;;AAGF;EACC;;AAED;EACC;;;AAKF;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;AAAA;AAAA;AAAA;EAKC;;;AAGD;EACC;;;AAGD;AAAA;EAEC;;;AAGD;EACC;;;AAGD;EACC;AACA;EAEA;;;AAED;EACC;AACA;EACA;;;AAED;AAAA;AAAA;AAGA;EACC;;;AAED;AAAA;AAAA;AAAA;EAIC;;;AAED;EACC;EACA;EACA;;;AAED;EACC;;;AAED;EACC;;;AAGD;EACC;EACA;;;AAED;EACC;EACA;EACA;AAEA;EACA;;;AAED;EACC;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAED;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;AAEA;;AACA;EACC;;;AAKF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAKE;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;;;AAMJ;AAEA;EACC;;;AAGD;AAAA;AAAA;AAAA;EAIC;EACA;EACA;;;AAMA;EACC;;AAED;EACC;;;AAIF;AAAA;AAAA;EAGC;;;AAGD;AAAA;AAAA;EAGC;EACA;;;AAGD;EACC;;;AAGD;EACC;;AAEA;EACC;;;AAIF;AAAA;EAEC;;;AAED;EACC;;AACA;EACC;;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EACC;EACA;EACA;;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAKA;EACC;;AAIF;EACC;EACA;;;AAIF;AACA;AAIC;AAaA;AAqOA;;AAhPC;EACC;EACA;EACA;;AACA;EACC;EACA;;AAMH;EACC;EACA;EACA;EACA;EACA;;AAGA;EACC;EACA;EACA;EACA;;AAEA;AAAA;EAKC;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGC;;AAKH;EACC;EACA;AAoJA;AA8BA;;AA/KC;EACC;EACA;EACA;EACA,OAvDQ;EAwDR,QAxDQ;EAyDR,SAxDO;EAyDP;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;AAAA;AAAA;;AAGA;EACC,SA1EK;EA2EL;EACA;EACA;;AAKH;EACC;EACA;EACA;EACA;EAEA;EACA;EAEA;;AAGD;EACC;EACA;EAIA;EAKA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;AAoBA;;AAlBA;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;AAID;EACC;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC,SApJK;EAqJL;EACA;EACA;EACA;EACA;;AAGA;EACC;;AAQH;EACC;;AAEA;EACC;EACA;;AAIF;EACC;;AAGD;EACC;;AAIF;EACC;EACA;;AAEA;EACC;EACA;EACA;;AAMH;EAEC;;AAGD;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA,SAxNO;;AAyNP;EACC;EACA,OA3NM;EA4NN,QA5NM;;AAkOT;EACC;EACA;EACA;AAEA;;AACA;EACC;EACA;;AAMJ;EACC;;AAID;EACC;;AAEA;EACC;EACA;EAEA;;AAEA;EACC;;AAEA;EAEC;;AAGD;EACI;;;AAOR;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAGC;;AAGD;EAEC;;;AAIF;AAAA;AAAA;AAAA;AAAA;AAKA;EACC;EACA;;;AAGD;AACA;AAaC;;AAZA;AACC;AAKA;;AAJA;EACC;;AAID;EACC;;AAKF;EACC;EACA;EACA;;;AAIF;AACA;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAGD;EACC;EACA;EACA","file":"files.css"}
\ No newline at end of file diff --git a/apps/files/css/merged.css b/apps/files/css/merged.css index 3b595813654..38ac0c66b13 100644 --- a/apps/files/css/merged.css +++ b/apps/files/css/merged.css @@ -378,8 +378,7 @@ table td { table th.column-name { position: relative; - width: 9999px; - /* not really sure why this works better than 100% … table styling */ + width: 9999px; /* not really sure why this works better than 100% … table styling */ padding: 0; } @@ -437,8 +436,7 @@ table.multiselect thead th { table.multiselect .column-name { position: relative; - width: 9999px; - /* when we use 100%, the styling breaks on mobile … table styling */ + width: 9999px; /* when we use 100%, the styling breaks on mobile … table styling */ } table.multiselect .column-mtime > a { @@ -455,8 +453,7 @@ table td.fileaction { table td.filename a.name, table td.filename p.name { display: flex; - position: relative; - /* Firefox needs to explicitly have this default set … */ + position: relative; /* Firefox needs to explicitly have this default set … */ -moz-box-sizing: border-box; box-sizing: border-box; height: 50px; @@ -934,8 +931,7 @@ table.dragshadow td.size { padding: 0; margin: 0; background-color: var(--color-main-background-translucent); - z-index: 62; - /* must be above the filelist sticky header and texteditor menubar */ + z-index: 62; /* must be above the filelist sticky header and texteditor menubar */ -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; @@ -1356,8 +1352,7 @@ table.dragshadow td.size { box-sizing: border-box; height: 36px; width: 39px; - padding: 0 !important; - /* override default control bar button padding */ + padding: 0 !important; /* override default control bar button padding */ margin-left: 3px; overflow: hidden; vertical-align: top; @@ -1642,32 +1637,26 @@ table.dragshadow td.size { .app-files #app-content.dir-drop { background-color: rgb(255, 255, 255) !important; } - table th.column-size, -table td.filesize, -table th.column-mtime, -table td.date { + table td.filesize, + table th.column-mtime, + table td.date { display: none; } - /* remove padding to let border bottom fill the whole width*/ table td { padding: 0; } - /* remove shift for multiselect bar to account for missing navigation */ table.multiselect thead { padding-left: 0; } - .fileList a.action.action-menu img { padding-left: 0; } - .fileList .fileActionsMenu { margin-right: 6px; } - /* hide text of the share action on mobile */ /* .hidden-visually for accessbility */ .fileList a.action-share span:not(.icon):not(.avatar) { @@ -1678,21 +1667,17 @@ table td.date { height: 1px; overflow: hidden; } - /* shorten elements for mobile */ #uploadprogressbar, #uploadprogressbar .label.inner { width: 50px; } - /* hide desktop-only parts */ #uploadprogressbar .desktop { display: none !important; } - #uploadprogressbar .mobile { display: block !important; } - /* ensure that it is visible over #app-content */ table.dragshadow { z-index: 1000; @@ -1703,16 +1688,13 @@ table td.date { table th .selectedActions { float: right; } - table th .selectedActions > a span:not(.icon) { display: none; } - /* Increase touch area for the icons */ table th .selectedActions a { padding: 17px 14px; } - /* Remove the margin to reduce the overlap between the name and the icons */ table.multiselect th .columntitle.name { margin-left: 0; @@ -1748,14 +1730,12 @@ table td.date { .app-sidebar .thumbnailContainer.large { margin-left: -15px; - margin-right: -35px; - /* 15 + 20 for the close button */ + margin-right: -35px; /* 15 + 20 for the close button */ margin-top: -15px; } .app-sidebar .thumbnailContainer.large.portrait { - margin: 0; - /* if we don't fit the image anyway we give it back the margin */ + margin: 0; /* if we don't fit the image anyway we give it back the margin */ } .app-sidebar .large .thumbnail { @@ -1772,8 +1752,7 @@ table td.date { .app-sidebar .large .thumbnail .stretcher { content: ""; display: block; - padding-bottom: 56.25%; - /* sets height of .thumbnail to 9/16 of the width */ + padding-bottom: 56.25%; /* sets height of .thumbnail to 9/16 of the width */ } .app-sidebar .large.portrait .thumbnail { @@ -1815,8 +1794,7 @@ table td.date { } .app-sidebar .fileName h3 { - width: calc(100% - 42px); - /* 36px is the with of the copy link icon, but this breaks so we add some more to be sure */ + width: calc(100% - 42px); /* 36px is the with of the copy link icon, but this breaks so we add some more to be sure */ display: inline-block; padding: 5px 0; margin: -5px 0; diff --git a/apps/files/css/merged.css.map b/apps/files/css/merged.css.map index afa5c56656a..c4fe79c3b39 100644 --- a/apps/files/css/merged.css.map +++ b/apps/files/css/merged.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["../../../core/css/variables.scss","files.scss","../../../core/css/functions.scss","upload.scss","mobile.scss","detailsView.scss","../../../core/css/whatsnew.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBA;AAAA;AAAA;AA4BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ADxCA;AACA;EACC;EACA;EACA;EACA;;;AAED;EAAoD;EAAU;;;AAC9D;EAAqB;;;AACrB;AAAA;EAEC;;;AAED;EACC;;;AAGD;EACC;EACA;EACA;;AACA;EACC;;;AAIF;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAGD;AAAA;AAAA;EAGC;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;AAiBA;AAAA;AAAA;;AAfA;EACC;;AAGD;EACC;EACA;EAEA;EAEA;EACA;EACA;;AAMD;EACC;EACA;;AAEA;AAAA;EAEC;;AAEA;AAAA;EACC;;AAKF;EACC;;;AAKH;EACC;;;AAGD;AACA;EACC;EACA;;;AAGD;EAGC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;AACA;ACvEC;EAEA;;;ADwED;AC1EC;EAEA;;;AD2ED;AC7EC;EAEA;;;AD8ED;AAAA;AAAA;AAAA;AChFC;EAEA;;;ADoFD;ACtFC;EAEA;;;ADuFD;ACzFC;EAEA;;;AD0FD;AC5FC;EAEA;;;AD6FD;AC/FC;EAEA;;;ADgGD;AClGC;EAEA;;;ADmGD;ACrGC;EAEA;;;ADuGD;EACC;;;AAED;AACA;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAED;AAAA;AAAA;AAAA;AAAA;EAKC;;;AAED;AAAA;AAAA;AAAA;AAAA;EAKC;;;AAGD;EAAU;;;AAEV;EACC;;;AAED;EACC;EACA;EACA;EACA;EACA;;;AAED;AAAA;AAAA;AAAA;EAIC;EACA;;;AAGD;EACC;;;AAED;EACC;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;;AAGF;EACC;EACA;;;AAED;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAED;AAAA;AAAA;AAAA;EAIC;;;AAED;EACC;;;AAED;AAAA;EAEC;;;AAGD;AAAA;EAEC;EACA;EACA;;;AAED;EACC;EACA;EACA;EACA;;;AAED;EACC;EACA;AAAe;EACf;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAED;EACC;;;AAED;AAAA;EAEC;EACA;EACA;AACA;EACA;;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAQC;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;AAAe;;;AAEhB;EACC;;;AAGD;AAAA;AAAA;EAGC;EACA;;;AAED;AAAA;EAEC;EACA;AAAmB;EACnB;EACA;EACA;EACA;EACA;;;AAED;AACC;EACA;EACA;EACA;EACA;;;AAGA;EACC;;AAED;EACC;;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAED;EACC;;;AAID;EACC;;;AAGD;EACC;EACA;EACA;;;AAED;EACC;EACA;EACA;;;AAGD;EAA6H;;;AAC7H;EAAwE;EAAY;;;AAEpF;EACC;EACA;EACA;EACA;;;AAGD;AAEC;EACC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAKH;AAAA;EAEC;;;AAGD;EACC;EACA;EACA;EACA;;;AAED;EACC;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;AAEA;EACC;EACA;EAEA;EACA;EACA;EACA;EACA;EAEA;EACA;EAEA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;AACA;EACC;EACA;;;AAGD;AACA;AAAA;AAAA;AAAA;EAIC;;;AAGD;AACA;EACC;;;AAGD;AAGC;AAAA;EACC;;AAGD;AAAA;EACC;EACA;EACA;EACA;EACA;;;AAIF;AAAA;EAEC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EAA2C;EAAwC;EAAsC;;;AAG1H;AAAA;EAEC;EACA;EACA;;;AAGD;EACC;EACA;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EAAsC;;;AAEtC;AACA;EACC;;;AAGD;EACC;;;AAGD;AACA;AAAA;EAEC;;;AAGD;AACA;EACC;EACA;;;AAGD;EACC;;;AAGD;AAAA;AAAA;AAIC;EACC;;AAGD;EACC;;AAGD;EACC;;;AAIF;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;AACA;EACI;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACC;EACA;EACA;;;AAGD;EACC;;;AAED;EACC;EACA;EACA;;;AAGD;EACC;;;AAIA;EACC;EACA;EACA;EACA;;AACA;EACC;;AACA;AACC;AACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAGF;EACC;EACA;EACA;EACA;;AAGA;EACC;;AAID;AAAA;EAEC;;AAED;EACC;;AACA;EACC;;AAIH;EACC;;AAED;EACC;EACA;;AAGF;EACC;;AAED;EACC;;;AAKF;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;AAAA;AAAA;AAAA;EAKC;;;AAGD;EACC;;;AAGD;AAAA;EAEC;;;AAGD;EACC;;;AAGD;EACC;AACA;EAEA;;;AAED;EACC;AACA;EACA;;;AAED;AAAA;AAAA;AAGA;EACC;;;AAED;AAAA;AAAA;AAAA;EAIC;;;AAED;EACC;EACA;EACA;;;AAED;EACC;;;AAED;EACC;;;AAGD;EACC;EACA;;;AAED;EACC;EACA;EACA;AAEA;EACA;;;AAED;EACC;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAED;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;AAEA;;AACA;EACC;;;AAKF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAAa;EACb;EACA;EACA;EACA;EACA;EACA;EACA;;AAKE;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;;;AAMJ;AAEA;EACC;;;AAGD;AAAA;AAAA;AAAA;EAIC;EACA;EACA;;;AAMA;EACC;;AAED;EACC;;;AAIF;AAAA;AAAA;EAGC;;;AAGD;AAAA;AAAA;EAGC;EACA;;;AAGD;EACC;;;AAGD;EACC;;AAEA;EACC;;;AAIF;AAAA;EAEC;;;AAED;EACC;;AACA;EACC;;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EACC;EACA;EACA;;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAKA;EACC;;AAIF;EACC;EACA;;;AAIF;AACA;AAIC;AAaA;AAqOA;;AAhPC;EACC;EACA;EACA;;AACA;EACC;EACA;;AAMH;EACC;EACA;EACA;EACA;EACA;;AAGA;EACC;EACA;EACA;EACA;;AAEA;AAAA;EAKC;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGC;;AAKH;EACC;EACA;AAoJA;AA8BA;;AA/KC;EACC;EACA;EACA;EACA,OAvDQ;EAwDR,QAxDQ;EAyDR,SAxDO;EAyDP;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;AAAA;AAAA;;AAGA;EACC,SA1EK;EA2EL;EACA;EACA;;AAKH;EACC;EACA;EACA;EACA;EAEA;EACA;EAEA;;AAGD;EACC;EACA;EAIA;EAKA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;AAoBA;;AAlBA;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;AAID;EACC;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC,SApJK;EAqJL;EACA;EACA;EACA;EACA;;AAGA;EACC;;AAQH;EACC;;AAEA;EACC;EACA;;AAIF;EACC;;AAGD;EACC;;AAIF;EACC;EACA;;AAEA;EACC;EACA;EACA;;AAMH;EAEC;;AAGD;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA,SAxNO;;AAyNP;EACC;EACA,OA3NM;EA4NN,QA5NM;;AAkOT;EACC;EACA;EACA;AAEA;;AACA;EACC;EACA;;AAMJ;EACC;;AAID;EACC;;AAEA;EACC;EACA;EAEA;;AAEA;EACC;;AAEA;EAEC;;AAGD;EACI;;;AAOR;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAGC;;AAGD;EAEC;;;AAIF;AAAA;AAAA;AAAA;AAAA;AAKA;EACC;EACA;;;AAGD;AACA;AAaC;;AAZA;AACC;AAKA;;AAJA;EACC;;AAID;EACC;;AAKF;EACC;EACA;EACA;;;AAIF;AACA;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAGD;EACC;EACA;EACA;;;AEvyCF;EACC;EACA;EACA;EACA;AAAuB;EACvB;EACA;EACA;EACA;EACA;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAED;EAAsB;;;AACtB;EAAoB;EAAgB;EAAY;EAAU;EAAW;EAAgB;;;AAErF;EACC;;;AAGD;EACC;EACA;EACA;EACA;;;AAED;EACC;EACA;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;;;AAED;EACC;EACA;EACA;EACA;EACA;;;AAED;EACC;EACA;EACA;EACA;;;AAED;EACC;EACA;;;AAED;EACC;;;AAED;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;AAAA;AAAA;EAGC;EACA;EACA;EACA;EACA;EACA;;;AAED;EACC;;;AAED;EACC;;;AAED;EACC;EACA;;;AAED;EACC;;;AAED;EACC;;;AAED;EACC;EACA;;;AAED;EACC;;;AAED;EACC;;;AAED;EACC;EACA;;;AAED;EACC;EACA;EACA;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;AAAA;EAEC;EACA;;;AAED;EACC;EACA;;;AAED;EACC;;;AAED;EACC;;;AAED;EACC;EACA;EACA;;;AAED;EACC;;;AAGD;EACC;EACA;;AAEA;EACC;;;AAIF;EACC;EACA;EACA;EACA;;;AAGD;EACE;IAAK;;EACL;IAAO;;;AAET;EACE;IAAK;;EACL;IAAO;;;AAET;EACE;IAAK;;EACL;IAAO;;;AAET;EACE;IAAK;;EACL;IAAO;;;AHjNT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AIEA;AAAA;AAAA;AAIA;EAEA;IACC;;;EAGD;AAAA;AAAA;AAAA;IAIC;;;AAGD;EACA;IACC;;;AAGD;EACA;IACC;;;EAGD;IACC;;;EAGD;IACC;;;AAED;AACA;EACA;IACC;IACA;IACA;IACA;IACA;IACA;;;AAID;EACA;IACC;;;AAED;EACA;IACC;;;EAED;IACC;;;AAGD;EACA;IACC;;;AAID;AACC;EACA;IACC;;;EAED;IACC;;;AAGD;EACA;IACC;;;AAGD;EACA;IACC;;;AClFF;EACC;EACA;;;AAGD;EACC;;;AAID;EACC;EACA;;;AAGD;EACC;EACA;EACA;;AAEA;EAEC;;;AAGF;EACC;EACA;;;AAGD;EACC;EACA;AAAqB;EACrB;;;AAGD;EACC;AAAW;;;AAGZ;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;AAAwB;;;AAGzB;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;AAA0B;EAC1B;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AC/HD;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;EACE;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE","file":"merged.css"}
\ No newline at end of file +{"version":3,"sourceRoot":"","sources":["../../../core/css/variables.scss","files.scss","../../../core/css/functions.scss","upload.scss","mobile.scss","detailsView.scss","../../../core/css/whatsnew.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBA;AAAA;AAAA;AA4BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ADxCA;AACA;EACC;EACA;EACA;EACA;;;AAED;EAAoD;EAAU;;;AAC9D;EAAqB;;;AACrB;AAAA;EAEC;;;AAED;EACC;;;AAGD;EACC;EACA;EACA;;AACA;EACC;;;AAIF;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAGD;AAAA;AAAA;EAGC;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;AAiBA;AAAA;AAAA;;AAfA;EACC;;AAGD;EACC;EACA;EAEA;EAEA;EACA;EACA;;AAMD;EACC;EACA;;AAEA;AAAA;EAEC;;AAEA;AAAA;EACC;;AAKF;EACC;;;AAKH;EACC;;;AAGD;AACA;EACC;EACA;;;AAGD;EAGC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;AACA;ACvEC;EAEA;;;ADwED;AC1EC;EAEA;;;AD2ED;AC7EC;EAEA;;;AD8ED;AAAA;AAAA;AAAA;AChFC;EAEA;;;ADoFD;ACtFC;EAEA;;;ADuFD;ACzFC;EAEA;;;AD0FD;AC5FC;EAEA;;;AD6FD;AC/FC;EAEA;;;ADgGD;AClGC;EAEA;;;ADmGD;ACrGC;EAEA;;;ADuGD;EACC;;;AAED;AACA;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAED;AAAA;AAAA;AAAA;AAAA;EAKC;;;AAED;AAAA;AAAA;AAAA;AAAA;EAKC;;;AAGD;EAAU;;;AAEV;EACC;;;AAED;EACC;EACA;EACA;EACA;EACA;;;AAED;AAAA;AAAA;AAAA;EAIC;EACA;;;AAGD;EACC;;;AAED;EACC;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;;AAGF;EACC;EACA;;;AAED;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAED;AAAA;AAAA;AAAA;EAIC;;;AAED;EACC;;;AAED;AAAA;EAEC;;;AAGD;AAAA;EAEC;EACA;EACA;;;AAED;EACC;EACA;EACA;EACA;;;AAED;EACC;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAED;EACC;;;AAED;AAAA;EAEC;EACA;EACA;AACA;EACA;;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAQC;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;;;AAED;EACC;;;AAGD;AAAA;AAAA;EAGC;EACA;;;AAED;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAED;AACC;EACA;EACA;EACA;EACA;;;AAGA;EACC;;AAED;EACC;;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAED;EACC;;;AAID;EACC;;;AAGD;EACC;EACA;EACA;;;AAED;EACC;EACA;EACA;;;AAGD;EAA6H;;;AAC7H;EAAwE;EAAY;;;AAEpF;EACC;EACA;EACA;EACA;;;AAGD;AAEC;EACC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAKH;AAAA;EAEC;;;AAGD;EACC;EACA;EACA;EACA;;;AAED;EACC;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;AAEA;EACC;EACA;EAEA;EACA;EACA;EACA;EACA;EAEA;EACA;EAEA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;AACA;EACC;EACA;;;AAGD;AACA;AAAA;AAAA;AAAA;EAIC;;;AAGD;AACA;EACC;;;AAGD;AAGC;AAAA;EACC;;AAGD;AAAA;EACC;EACA;EACA;EACA;EACA;;;AAIF;AAAA;EAEC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EAA2C;EAAwC;EAAsC;;;AAG1H;AAAA;EAEC;EACA;EACA;;;AAGD;EACC;EACA;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EAAsC;;;AAEtC;AACA;EACC;;;AAGD;EACC;;;AAGD;AACA;AAAA;EAEC;;;AAGD;AACA;EACC;EACA;;;AAGD;EACC;;;AAGD;AAAA;AAAA;AAIC;EACC;;AAGD;EACC;;AAGD;EACC;;;AAIF;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;AACA;EACI;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACC;EACA;EACA;;;AAGD;EACC;;;AAED;EACC;EACA;EACA;;;AAGD;EACC;;;AAIA;EACC;EACA;EACA;EACA;;AACA;EACC;;AACA;AACC;AACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAGF;EACC;EACA;EACA;EACA;;AAGA;EACC;;AAID;AAAA;EAEC;;AAED;EACC;;AACA;EACC;;AAIH;EACC;;AAED;EACC;EACA;;AAGF;EACC;;AAED;EACC;;;AAKF;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;AAAA;AAAA;AAAA;EAKC;;;AAGD;EACC;;;AAGD;AAAA;EAEC;;;AAGD;EACC;;;AAGD;EACC;AACA;EAEA;;;AAED;EACC;AACA;EACA;;;AAED;AAAA;AAAA;AAGA;EACC;;;AAED;AAAA;AAAA;AAAA;EAIC;;;AAED;EACC;EACA;EACA;;;AAED;EACC;;;AAED;EACC;;;AAGD;EACC;EACA;;;AAED;EACC;EACA;EACA;AAEA;EACA;;;AAED;EACC;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAED;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;AAEA;;AACA;EACC;;;AAKF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAKE;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;;;AAMJ;AAEA;EACC;;;AAGD;AAAA;AAAA;AAAA;EAIC;EACA;EACA;;;AAMA;EACC;;AAED;EACC;;;AAIF;AAAA;AAAA;EAGC;;;AAGD;AAAA;AAAA;EAGC;EACA;;;AAGD;EACC;;;AAGD;EACC;;AAEA;EACC;;;AAIF;AAAA;EAEC;;;AAED;EACC;;AACA;EACC;;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EACC;EACA;EACA;;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAKA;EACC;;AAIF;EACC;EACA;;;AAIF;AACA;AAIC;AAaA;AAqOA;;AAhPC;EACC;EACA;EACA;;AACA;EACC;EACA;;AAMH;EACC;EACA;EACA;EACA;EACA;;AAGA;EACC;EACA;EACA;EACA;;AAEA;AAAA;EAKC;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGC;;AAKH;EACC;EACA;AAoJA;AA8BA;;AA/KC;EACC;EACA;EACA;EACA,OAvDQ;EAwDR,QAxDQ;EAyDR,SAxDO;EAyDP;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;AAAA;AAAA;;AAGA;EACC,SA1EK;EA2EL;EACA;EACA;;AAKH;EACC;EACA;EACA;EACA;EAEA;EACA;EAEA;;AAGD;EACC;EACA;EAIA;EAKA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;AAoBA;;AAlBA;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;AAID;EACC;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC,SApJK;EAqJL;EACA;EACA;EACA;EACA;;AAGA;EACC;;AAQH;EACC;;AAEA;EACC;EACA;;AAIF;EACC;;AAGD;EACC;;AAIF;EACC;EACA;;AAEA;EACC;EACA;EACA;;AAMH;EAEC;;AAGD;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA,SAxNO;;AAyNP;EACC;EACA,OA3NM;EA4NN,QA5NM;;AAkOT;EACC;EACA;EACA;AAEA;;AACA;EACC;EACA;;AAMJ;EACC;;AAID;EACC;;AAEA;EACC;EACA;EAEA;;AAEA;EACC;;AAEA;EAEC;;AAGD;EACI;;;AAOR;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAGC;;AAGD;EAEC;;;AAIF;AAAA;AAAA;AAAA;AAAA;AAKA;EACC;EACA;;;AAGD;AACA;AAaC;;AAZA;AACC;AAKA;;AAJA;EACC;;AAID;EACC;;AAKF;EACC;EACA;EACA;;;AAIF;AACA;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAGD;EACC;EACA;EACA;;;AEvyCF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAED;EAAsB;;;AACtB;EAAoB;EAAgB;EAAY;EAAU;EAAW;EAAgB;;;AAErF;EACC;;;AAGD;EACC;EACA;EACA;EACA;;;AAED;EACC;EACA;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;;;AAED;EACC;EACA;EACA;EACA;EACA;;;AAED;EACC;EACA;EACA;EACA;;;AAED;EACC;EACA;;;AAED;EACC;;;AAED;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;AAAA;AAAA;EAGC;EACA;EACA;EACA;EACA;EACA;;;AAED;EACC;;;AAED;EACC;;;AAED;EACC;EACA;;;AAED;EACC;;;AAED;EACC;;;AAED;EACC;EACA;;;AAED;EACC;;;AAED;EACC;;;AAED;EACC;EACA;;;AAED;EACC;EACA;EACA;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;AAAA;EAEC;EACA;;;AAED;EACC;EACA;;;AAED;EACC;;;AAED;EACC;;;AAED;EACC;EACA;EACA;;;AAED;EACC;;;AAGD;EACC;EACA;;AAEA;EACC;;;AAIF;EACC;EACA;EACA;EACA;;;AAGD;EACE;IAAK;;EACL;IAAO;;;AAET;EACE;IAAK;;EACL;IAAO;;;AAET;EACE;IAAK;;EACL;IAAO;;;AAET;EACE;IAAK;;EACL;IAAO;;;AHjNT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AIEA;AAAA;AAAA;AAIA;EAEA;IACC;;EAGD;AAAA;AAAA;AAAA;IAIC;;AAGD;EACA;IACC;;AAGD;EACA;IACC;;EAGD;IACC;;EAGD;IACC;;AAED;AACA;EACA;IACC;IACA;IACA;IACA;IACA;IACA;;AAID;EACA;IACC;;AAED;EACA;IACC;;EAED;IACC;;AAGD;EACA;IACC;;;AAID;AACC;EACA;IACC;;EAED;IACC;;AAGD;EACA;IACC;;AAGD;EACA;IACC;;;AClFF;EACC;EACA;;;AAGD;EACC;;;AAID;EACC;EACA;;;AAGD;EACC;EACA;EACA;;AAEA;EAEC;;;AAGF;EACC;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AC/HD;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;EACE;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE","file":"merged.css"}
\ No newline at end of file diff --git a/apps/files/css/mobile.css b/apps/files/css/mobile.css index 1cd122d60ec..a7e2ca2b099 100644 --- a/apps/files/css/mobile.css +++ b/apps/files/css/mobile.css @@ -27,32 +27,26 @@ .app-files #app-content.dir-drop { background-color: rgb(255, 255, 255) !important; } - table th.column-size, -table td.filesize, -table th.column-mtime, -table td.date { + table td.filesize, + table th.column-mtime, + table td.date { display: none; } - /* remove padding to let border bottom fill the whole width*/ table td { padding: 0; } - /* remove shift for multiselect bar to account for missing navigation */ table.multiselect thead { padding-left: 0; } - .fileList a.action.action-menu img { padding-left: 0; } - .fileList .fileActionsMenu { margin-right: 6px; } - /* hide text of the share action on mobile */ /* .hidden-visually for accessbility */ .fileList a.action-share span:not(.icon):not(.avatar) { @@ -63,21 +57,17 @@ table td.date { height: 1px; overflow: hidden; } - /* shorten elements for mobile */ #uploadprogressbar, #uploadprogressbar .label.inner { width: 50px; } - /* hide desktop-only parts */ #uploadprogressbar .desktop { display: none !important; } - #uploadprogressbar .mobile { display: block !important; } - /* ensure that it is visible over #app-content */ table.dragshadow { z-index: 1000; @@ -88,16 +78,13 @@ table td.date { table th .selectedActions { float: right; } - table th .selectedActions > a span:not(.icon) { display: none; } - /* Increase touch area for the icons */ table th .selectedActions a { padding: 17px 14px; } - /* Remove the margin to reduce the overlap between the name and the icons */ table.multiselect th .columntitle.name { margin-left: 0; diff --git a/apps/files/css/mobile.css.map b/apps/files/css/mobile.css.map index 11729879c85..0ca9bdaa893 100644 --- a/apps/files/css/mobile.css.map +++ b/apps/files/css/mobile.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["../../../core/css/variables.scss","mobile.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACEA;AAAA;AAAA;AAIA;EAEA;IACC;;;EAGD;AAAA;AAAA;AAAA;IAIC;;;AAGD;EACA;IACC;;;AAGD;EACA;IACC;;;EAGD;IACC;;;EAGD;IACC;;;AAED;AACA;EACA;IACC;IACA;IACA;IACA;IACA;IACA;;;AAID;EACA;IACC;;;AAED;EACA;IACC;;;EAED;IACC;;;AAGD;EACA;IACC;;;AAID;AACC;EACA;IACC;;;EAED;IACC;;;AAGD;EACA;IACC;;;AAGD;EACA;IACC","file":"mobile.css"}
\ No newline at end of file +{"version":3,"sourceRoot":"","sources":["../../../core/css/variables.scss","mobile.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACEA;AAAA;AAAA;AAIA;EAEA;IACC;;EAGD;AAAA;AAAA;AAAA;IAIC;;AAGD;EACA;IACC;;AAGD;EACA;IACC;;EAGD;IACC;;EAGD;IACC;;AAED;AACA;EACA;IACC;IACA;IACA;IACA;IACA;IACA;;AAID;EACA;IACC;;AAED;EACA;IACC;;EAED;IACC;;AAGD;EACA;IACC;;;AAID;AACC;EACA;IACC;;EAED;IACC;;AAGD;EACA;IACC;;AAGD;EACA;IACC","file":"mobile.css"}
\ No newline at end of file diff --git a/apps/files/css/upload.css b/apps/files/css/upload.css index efe99b4129f..7074ba2827d 100644 --- a/apps/files/css/upload.css +++ b/apps/files/css/upload.css @@ -2,8 +2,7 @@ box-sizing: border-box; height: 36px; width: 39px; - padding: 0 !important; - /* override default control bar button padding */ + padding: 0 !important; /* override default control bar button padding */ margin-left: 3px; overflow: hidden; vertical-align: top; diff --git a/apps/files/css/upload.css.map b/apps/files/css/upload.css.map index 718462f2607..a15557f66b1 100644 --- a/apps/files/css/upload.css.map +++ b/apps/files/css/upload.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["upload.scss"],"names":[],"mappings":"AAAA;EACC;EACA;EACA;EACA;AAAuB;EACvB;EACA;EACA;EACA;EACA;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAED;EAAsB;;;AACtB;EAAoB;EAAgB;EAAY;EAAU;EAAW;EAAgB;;;AAErF;EACC;;;AAGD;EACC;EACA;EACA;EACA;;;AAED;EACC;EACA;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;;;AAED;EACC;EACA;EACA;EACA;EACA;;;AAED;EACC;EACA;EACA;EACA;;;AAED;EACC;EACA;;;AAED;EACC;;;AAED;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;AAAA;AAAA;EAGC;EACA;EACA;EACA;EACA;EACA;;;AAED;EACC;;;AAED;EACC;;;AAED;EACC;EACA;;;AAED;EACC;;;AAED;EACC;;;AAED;EACC;EACA;;;AAED;EACC;;;AAED;EACC;;;AAED;EACC;EACA;;;AAED;EACC;EACA;EACA;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;AAAA;EAEC;EACA;;;AAED;EACC;EACA;;;AAED;EACC;;;AAED;EACC;;;AAED;EACC;EACA;EACA;;;AAED;EACC;;;AAGD;EACC;EACA;;AAEA;EACC;;;AAIF;EACC;EACA;EACA;EACA;;;AAGD;EACE;IAAK;;EACL;IAAO;;;AAET;EACE;IAAK;;EACL;IAAO;;;AAET;EACE;IAAK;;EACL;IAAO;;;AAET;EACE;IAAK;;EACL;IAAO","file":"upload.css"}
\ No newline at end of file +{"version":3,"sourceRoot":"","sources":["upload.scss"],"names":[],"mappings":"AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAED;EAAsB;;;AACtB;EAAoB;EAAgB;EAAY;EAAU;EAAW;EAAgB;;;AAErF;EACC;;;AAGD;EACC;EACA;EACA;EACA;;;AAED;EACC;EACA;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;;;AAED;EACC;EACA;EACA;EACA;EACA;;;AAED;EACC;EACA;EACA;EACA;;;AAED;EACC;EACA;;;AAED;EACC;;;AAED;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;AAAA;AAAA;EAGC;EACA;EACA;EACA;EACA;EACA;;;AAED;EACC;;;AAED;EACC;;;AAED;EACC;EACA;;;AAED;EACC;;;AAED;EACC;;;AAED;EACC;EACA;;;AAED;EACC;;;AAED;EACC;;;AAED;EACC;EACA;;;AAED;EACC;EACA;EACA;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;AAAA;EAEC;EACA;;;AAED;EACC;EACA;;;AAED;EACC;;;AAED;EACC;;;AAED;EACC;EACA;EACA;;;AAED;EACC;;;AAGD;EACC;EACA;;AAEA;EACC;;;AAIF;EACC;EACA;EACA;EACA;;;AAGD;EACE;IAAK;;EACL;IAAO;;;AAET;EACE;IAAK;;EACL;IAAO;;;AAET;EACE;IAAK;;EACL;IAAO;;;AAET;EACE;IAAK;;EACL;IAAO","file":"upload.css"}
\ No newline at end of file diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js index 96273b325cb..1eed1902b29 100644 --- a/apps/files/js/filelist.js +++ b/apps/files/js/filelist.js @@ -1421,15 +1421,15 @@ hidden = false; } tr = this._renderRow(fileData, {updateSummary: false, silent: true, hidden: hidden}); - if (tr.attr('data-e2eencrypted') === 'true') { - tr.toggleClass('selected', false); - tr.find('td.selection > .selectCheckBox:visible').prop('checked', false); - } this.$fileList.append(tr); if (isAllSelected || this._selectedFiles[fileData.id]) { tr.addClass('selected'); tr.find('.selectCheckBox').prop('checked', true); } + if (tr.attr('data-e2eencrypted') === 'true') { + tr.toggleClass('selected', false); + tr.find('td.selection > .selectCheckBox:visible').prop('checked', false); + } if (animate) { tr.addClass('appear transparent'); } diff --git a/apps/files_external/lib/Lib/Auth/PublicKey/RSA.php b/apps/files_external/lib/Lib/Auth/PublicKey/RSA.php index 2d17b4e9698..d45db03b2da 100644 --- a/apps/files_external/lib/Lib/Auth/PublicKey/RSA.php +++ b/apps/files_external/lib/Lib/Auth/PublicKey/RSA.php @@ -60,7 +60,11 @@ class RSA extends AuthMechanism { $auth = new RSACrypt(); $auth->setPassword($this->config->getSystemValue('secret', '')); if (!$auth->loadKey($storage->getBackendOption('private_key'))) { - throw new \RuntimeException('unable to load private key'); + // Add fallback routine for a time where secret was not enforced to be exists + $auth->setPassword(''); + if (!$auth->loadKey($storage->getBackendOption('private_key'))) { + throw new \RuntimeException('unable to load private key'); + } } $storage->setBackendOption('public_key_auth', $auth); } diff --git a/apps/files_external/lib/Lib/Auth/PublicKey/RSAPrivateKey.php b/apps/files_external/lib/Lib/Auth/PublicKey/RSAPrivateKey.php index 886d16965f4..7d04aaaf057 100644 --- a/apps/files_external/lib/Lib/Auth/PublicKey/RSAPrivateKey.php +++ b/apps/files_external/lib/Lib/Auth/PublicKey/RSAPrivateKey.php @@ -58,7 +58,11 @@ class RSAPrivateKey extends AuthMechanism { $auth = new RSACrypt(); $auth->setPassword($this->config->getSystemValue('secret', '')); if (!$auth->loadKey($storage->getBackendOption('private_key'))) { - throw new \RuntimeException('unable to load private key'); + // Add fallback routine for a time where secret was not enforced to be exists + $auth->setPassword(''); + if (!$auth->loadKey($storage->getBackendOption('private_key'))) { + throw new \RuntimeException('unable to load private key'); + } } $storage->setBackendOption('public_key_auth', $auth); } diff --git a/apps/files_sharing/css/mobile.css b/apps/files_sharing/css/mobile.css index 96b9736b6ac..c9e3e95acad 100644 --- a/apps/files_sharing/css/mobile.css +++ b/apps/files_sharing/css/mobile.css @@ -25,41 +25,34 @@ #header.share-file { position: absolute !important; } - /* hide size and date columns */ table th.column-size, -table td.filesize, -table th.column-mtime, -table td.date { + table td.filesize, + table th.column-mtime, + table td.date { display: none; } - /* restrict length of displayed filename to prevent overflow */ table td.filename .nametext { max-width: 75% !important; } - /* on mobile, show single shared image at full width without margin */ #imgframe { width: 100%; padding: 0; } - /* some margin for the file type icon */ #imgframe .publicpreview { margin-top: 32px; } - /* some padding for better clickability */ .files-fileList a.action img { padding: 0 6px 0 12px; } - /* hide text of the actions on mobile */ .files-fileList a.action:not(.menuitem) span { display: none; } - /* ellipsis on file names */ .nametext { width: 60%; @@ -67,16 +60,13 @@ table td.date { overflow: hidden; text-overflow: ellipsis; } - #header .menutoggle { padding-right: 14px; background-position: center; } - .note { padding: 0 20px; } - .emptycontent { margin-top: 10vh; } diff --git a/apps/files_sharing/css/mobile.css.map b/apps/files_sharing/css/mobile.css.map index ab822b947db..a099f82901e 100644 --- a/apps/files_sharing/css/mobile.css.map +++ b/apps/files_sharing/css/mobile.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["../../../core/css/variables.scss","mobile.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACEA;AAEA;EACA;IACC;;;AAGD;EACA;AAAA;AAAA;AAAA;IAIC;;;AAGD;EACA;IACC;;;AAGD;EACA;IACC;IACA;;;AAED;EACA;IACC;;;AAGD;EACA;IACC;;;AAED;EACA;IACC;;;AAGD;EACA;IACC;IACA;IACA;IACA;;;EAGD;IACI;IACA;;;EAEJ;IACC;;;EAGD;IACC","file":"mobile.css"}
\ No newline at end of file +{"version":3,"sourceRoot":"","sources":["../../../core/css/variables.scss","mobile.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACEA;AAEA;EACA;IACC;;AAGD;EACA;AAAA;AAAA;AAAA;IAIC;;AAGD;EACA;IACC;;AAGD;EACA;IACC;IACA;;AAED;EACA;IACC;;AAGD;EACA;IACC;;AAED;EACA;IACC;;AAGD;EACA;IACC;IACA;IACA;IACA;;EAGD;IACI;IACA;;EAEJ;IACC;;EAGD;IACC","file":"mobile.css"}
\ No newline at end of file diff --git a/apps/files_sharing/css/publicView.css b/apps/files_sharing/css/publicView.css index 6debc033ede..43d62b18997 100644 --- a/apps/files_sharing/css/publicView.css +++ b/apps/files_sharing/css/publicView.css @@ -294,41 +294,34 @@ thead { #header.share-file { position: absolute !important; } - /* hide size and date columns */ table th.column-size, -table td.filesize, -table th.column-mtime, -table td.date { + table td.filesize, + table th.column-mtime, + table td.date { display: none; } - /* restrict length of displayed filename to prevent overflow */ table td.filename .nametext { max-width: 75% !important; } - /* on mobile, show single shared image at full width without margin */ #imgframe { width: 100%; padding: 0; } - /* some margin for the file type icon */ #imgframe .publicpreview { margin-top: 32px; } - /* some padding for better clickability */ .files-fileList a.action img { padding: 0 6px 0 12px; } - /* hide text of the actions on mobile */ .files-fileList a.action:not(.menuitem) span { display: none; } - /* ellipsis on file names */ .nametext { width: 60%; @@ -336,16 +329,13 @@ table td.date { overflow: hidden; text-overflow: ellipsis; } - #header .menutoggle { padding-right: 14px; background-position: center; } - .note { padding: 0 20px; } - .emptycontent { margin-top: 10vh; } diff --git a/apps/files_sharing/css/publicView.css.map b/apps/files_sharing/css/publicView.css.map index c196ee11a5a..04d50bba210 100644 --- a/apps/files_sharing/css/publicView.css.map +++ b/apps/files_sharing/css/publicView.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["../../../core/css/variables.scss","public.scss","mobile.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACMA;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACI;;;AAGJ;EACC;;;AAGD;EACC;EACA;EACA;;;AAGD;EAEI;;;AAGJ;EACI;;;AAGJ;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAID;EACC;;;AAGD;AACA;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;AACA;EACC;;;AAED;AAAA;AAAA;EAGC;EACA;;;AAED;AAAA;AAAA;AAGC;EACA;;;AAGD;EACC;;;AAIA;EACC;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;AAAA;EAEC;EACA;EACA;;;AAGD;EACC;EACA;EACA;;AACA;EACC;EACA;;;AAIF;EACC;EACA;;;AAKD;EAII;IACC;;;AAQL;EAGG;IACC;;;ADzQJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AEEA;AAEA;EACA;IACC;;;AAGD;EACA;AAAA;AAAA;AAAA;IAIC;;;AAGD;EACA;IACC;;;AAGD;EACA;IACC;IACA;;;AAED;EACA;IACC;;;AAGD;EACA;IACC;;;AAED;EACA;IACC;;;AAGD;EACA;IACC;IACA;IACA;IACA;;;EAGD;IACI;IACA;;;EAEJ;IACC;;;EAGD;IACC","file":"publicView.css"}
\ No newline at end of file +{"version":3,"sourceRoot":"","sources":["../../../core/css/variables.scss","public.scss","mobile.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACMA;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACI;;;AAGJ;EACC;;;AAGD;EACC;EACA;EACA;;;AAGD;EAEI;;;AAGJ;EACI;;;AAGJ;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAID;EACC;;;AAGD;AACA;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;AACA;EACC;;;AAED;AAAA;AAAA;EAGC;EACA;;;AAED;AAAA;AAAA;AAGC;EACA;;;AAGD;EACC;;;AAIA;EACC;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;AAAA;EAEC;EACA;EACA;;;AAGD;EACC;EACA;EACA;;AACA;EACC;EACA;;;AAIF;EACC;EACA;;;AAKD;EAII;IACC;;;AAQL;EAGG;IACC;;;ADzQJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AEEA;AAEA;EACA;IACC;;AAGD;EACA;AAAA;AAAA;AAAA;IAIC;;AAGD;EACA;IACC;;AAGD;EACA;IACC;IACA;;AAED;EACA;IACC;;AAGD;EACA;IACC;;AAED;EACA;IACC;;AAGD;EACA;IACC;IACA;IACA;IACA;;EAGD;IACI;IACA;;EAEJ;IACC;;EAGD;IACC","file":"publicView.css"}
\ No newline at end of file diff --git a/apps/files_sharing/l10n/ar.js b/apps/files_sharing/l10n/ar.js index 9da3a844055..c3f1dbaac0f 100644 --- a/apps/files_sharing/l10n/ar.js +++ b/apps/files_sharing/l10n/ar.js @@ -168,11 +168,11 @@ OC.L10N.register( "Added by {initiator}" : "تمت الإضافة بواسطة {initator}", "Via “{folder}”" : "عبر “{folder}”", "Internal link" : "الرابط الداخلي", - "Link copied" : "نُسِخ الرابط", "Cannot copy, please copy the link manually" : "لا يمكن النسخ ، يرجى نسخ الرابط يدويًا", "Copy to clipboard" : "نسخ الرابط", "Only works for users with access to this folder" : "يعمل فقط للمستخدمين الذين لديهم حق الوصول إلى هذا المجلد", "Only works for users with access to this file" : "يعمل فقط للمستخدمين الذين لديهم حق الوصول إلى هذا الملف", + "Link copied" : "نُسِخ الرابط", "Please enter the following required information before creating the share" : "الرجاء إدخال المعلومات المطلوبة التالية قبل إنشاء المشاركة", "Password protection (enforced)" : "حماية كلمة المرور (الزامي)", "Password protection" : "الحماية بكلمة السر", diff --git a/apps/files_sharing/l10n/ar.json b/apps/files_sharing/l10n/ar.json index 2b49710d3c7..bf3e5ec7eb5 100644 --- a/apps/files_sharing/l10n/ar.json +++ b/apps/files_sharing/l10n/ar.json @@ -166,11 +166,11 @@ "Added by {initiator}" : "تمت الإضافة بواسطة {initator}", "Via “{folder}”" : "عبر “{folder}”", "Internal link" : "الرابط الداخلي", - "Link copied" : "نُسِخ الرابط", "Cannot copy, please copy the link manually" : "لا يمكن النسخ ، يرجى نسخ الرابط يدويًا", "Copy to clipboard" : "نسخ الرابط", "Only works for users with access to this folder" : "يعمل فقط للمستخدمين الذين لديهم حق الوصول إلى هذا المجلد", "Only works for users with access to this file" : "يعمل فقط للمستخدمين الذين لديهم حق الوصول إلى هذا الملف", + "Link copied" : "نُسِخ الرابط", "Please enter the following required information before creating the share" : "الرجاء إدخال المعلومات المطلوبة التالية قبل إنشاء المشاركة", "Password protection (enforced)" : "حماية كلمة المرور (الزامي)", "Password protection" : "الحماية بكلمة السر", diff --git a/apps/files_sharing/l10n/bg.js b/apps/files_sharing/l10n/bg.js index 0ba9c30cdec..99435f9ef18 100644 --- a/apps/files_sharing/l10n/bg.js +++ b/apps/files_sharing/l10n/bg.js @@ -181,11 +181,11 @@ OC.L10N.register( "Via “{folder}”" : "Чрез “{folder}”", "Internal link" : "Вътрешна връзка", "Copy internal link to clipboard" : "Копиране на вътрешна връзката в клипборда", - "Link copied" : "Връзката е копирана", "Cannot copy, please copy the link manually" : "Не може да се копира, моля, копирайте връзката ръчно", "Copy to clipboard" : "Копирай", "Only works for users with access to this folder" : "Работи само за потребители, които имат достъп до тази папка", "Only works for users with access to this file" : "Работи само за потребители, които имат достъп до този файл", + "Link copied" : "Връзката е копирана", "Copy public link to clipboard" : "Копиране на публична връзка в клипборда", "Please enter the following required information before creating the share" : "Моля, въведете следната необходима информация, преди да създадете споделянето", "Password protection (enforced)" : "Защита с парола (приложена)", diff --git a/apps/files_sharing/l10n/bg.json b/apps/files_sharing/l10n/bg.json index c1b4638eb03..2adda506bf6 100644 --- a/apps/files_sharing/l10n/bg.json +++ b/apps/files_sharing/l10n/bg.json @@ -179,11 +179,11 @@ "Via “{folder}”" : "Чрез “{folder}”", "Internal link" : "Вътрешна връзка", "Copy internal link to clipboard" : "Копиране на вътрешна връзката в клипборда", - "Link copied" : "Връзката е копирана", "Cannot copy, please copy the link manually" : "Не може да се копира, моля, копирайте връзката ръчно", "Copy to clipboard" : "Копирай", "Only works for users with access to this folder" : "Работи само за потребители, които имат достъп до тази папка", "Only works for users with access to this file" : "Работи само за потребители, които имат достъп до този файл", + "Link copied" : "Връзката е копирана", "Copy public link to clipboard" : "Копиране на публична връзка в клипборда", "Please enter the following required information before creating the share" : "Моля, въведете следната необходима информация, преди да създадете споделянето", "Password protection (enforced)" : "Защита с парола (приложена)", diff --git a/apps/files_sharing/l10n/ca.js b/apps/files_sharing/l10n/ca.js index 6046cc4b116..d89ce283500 100644 --- a/apps/files_sharing/l10n/ca.js +++ b/apps/files_sharing/l10n/ca.js @@ -181,11 +181,11 @@ OC.L10N.register( "Via “{folder}”" : "Mitjançant “{folder}”", "Internal link" : "Enllaç intern", "Copy internal link to clipboard" : "Copia l'enllaç intern al porta-retalls", - "Link copied" : "Enllaç copiat", "Cannot copy, please copy the link manually" : "No es pot copiar, si us plau, copieu l'enllaç manualment", "Copy to clipboard" : "Copia-ho al porta-papers", "Only works for users with access to this folder" : "Només funciona per a usuaris amb accés a aquesta carpeta", "Only works for users with access to this file" : "Només funciona per a usuaris amb accés a aquest fitxer", + "Link copied" : "Enllaç copiat", "Copy public link to clipboard" : "Copia l'enllaç públic al porta-retalls", "Please enter the following required information before creating the share" : "Introduïu la informació necessària següent abans de crear la compartició", "Password protection (enforced)" : "Protecció amb contrasenya (obligatòri)", diff --git a/apps/files_sharing/l10n/ca.json b/apps/files_sharing/l10n/ca.json index f89c88f3b3a..e01954bf712 100644 --- a/apps/files_sharing/l10n/ca.json +++ b/apps/files_sharing/l10n/ca.json @@ -179,11 +179,11 @@ "Via “{folder}”" : "Mitjançant “{folder}”", "Internal link" : "Enllaç intern", "Copy internal link to clipboard" : "Copia l'enllaç intern al porta-retalls", - "Link copied" : "Enllaç copiat", "Cannot copy, please copy the link manually" : "No es pot copiar, si us plau, copieu l'enllaç manualment", "Copy to clipboard" : "Copia-ho al porta-papers", "Only works for users with access to this folder" : "Només funciona per a usuaris amb accés a aquesta carpeta", "Only works for users with access to this file" : "Només funciona per a usuaris amb accés a aquest fitxer", + "Link copied" : "Enllaç copiat", "Copy public link to clipboard" : "Copia l'enllaç públic al porta-retalls", "Please enter the following required information before creating the share" : "Introduïu la informació necessària següent abans de crear la compartició", "Password protection (enforced)" : "Protecció amb contrasenya (obligatòri)", diff --git a/apps/files_sharing/l10n/cs.js b/apps/files_sharing/l10n/cs.js index ab3eba688b2..0f227c87c12 100644 --- a/apps/files_sharing/l10n/cs.js +++ b/apps/files_sharing/l10n/cs.js @@ -181,11 +181,11 @@ OC.L10N.register( "Via “{folder}”" : "Prostřednictvím „{folder}“", "Internal link" : "Interní odkaz", "Copy internal link to clipboard" : "Zkopírovat interní odkaz do schránky", - "Link copied" : "Odkaz zkopírován", "Cannot copy, please copy the link manually" : "Nedaří se zkopírovat, zkopírujte odkaz ručně", "Copy to clipboard" : "Zkopírovat do schránky", "Only works for users with access to this folder" : "Funguje pouze pro uživatele, kteří mají přístup k této složce", "Only works for users with access to this file" : "Funguje pouze pro uživatele, kteří mají přístup k tomuto souboru", + "Link copied" : "Odkaz zkopírován", "Copy public link to clipboard" : "Zkopírovat veřejný odkaz do schránky", "Please enter the following required information before creating the share" : "Před vytvořením sdílení zadejte následující potřebné informace", "Password protection (enforced)" : "Ochrana heslem (vynucená)", diff --git a/apps/files_sharing/l10n/cs.json b/apps/files_sharing/l10n/cs.json index 1b0fc367c01..ddeedf144c3 100644 --- a/apps/files_sharing/l10n/cs.json +++ b/apps/files_sharing/l10n/cs.json @@ -179,11 +179,11 @@ "Via “{folder}”" : "Prostřednictvím „{folder}“", "Internal link" : "Interní odkaz", "Copy internal link to clipboard" : "Zkopírovat interní odkaz do schránky", - "Link copied" : "Odkaz zkopírován", "Cannot copy, please copy the link manually" : "Nedaří se zkopírovat, zkopírujte odkaz ručně", "Copy to clipboard" : "Zkopírovat do schránky", "Only works for users with access to this folder" : "Funguje pouze pro uživatele, kteří mají přístup k této složce", "Only works for users with access to this file" : "Funguje pouze pro uživatele, kteří mají přístup k tomuto souboru", + "Link copied" : "Odkaz zkopírován", "Copy public link to clipboard" : "Zkopírovat veřejný odkaz do schránky", "Please enter the following required information before creating the share" : "Před vytvořením sdílení zadejte následující potřebné informace", "Password protection (enforced)" : "Ochrana heslem (vynucená)", diff --git a/apps/files_sharing/l10n/da.js b/apps/files_sharing/l10n/da.js index ca385f9180a..ebc2e21ae68 100644 --- a/apps/files_sharing/l10n/da.js +++ b/apps/files_sharing/l10n/da.js @@ -147,10 +147,10 @@ OC.L10N.register( "remote group" : "ekstern gruppe", "guest" : "Gæst", "Internal link" : "Internt link", - "Link copied" : "Link kopieret", "Copy to clipboard" : "Kopier til udklipsholder", "Only works for users with access to this folder" : "Virker kun for brugere med adgang til denne folder", "Only works for users with access to this file" : "Virker kun for brugere med adgang til denne fil", + "Link copied" : "Link kopieret", "Password protection" : "Password protection", "Enter a password" : "Enter a password", "Cancel" : "Annullér", diff --git a/apps/files_sharing/l10n/da.json b/apps/files_sharing/l10n/da.json index adf0281c836..7d2f4a98e90 100644 --- a/apps/files_sharing/l10n/da.json +++ b/apps/files_sharing/l10n/da.json @@ -145,10 +145,10 @@ "remote group" : "ekstern gruppe", "guest" : "Gæst", "Internal link" : "Internt link", - "Link copied" : "Link kopieret", "Copy to clipboard" : "Kopier til udklipsholder", "Only works for users with access to this folder" : "Virker kun for brugere med adgang til denne folder", "Only works for users with access to this file" : "Virker kun for brugere med adgang til denne fil", + "Link copied" : "Link kopieret", "Password protection" : "Password protection", "Enter a password" : "Enter a password", "Cancel" : "Annullér", diff --git a/apps/files_sharing/l10n/de.js b/apps/files_sharing/l10n/de.js index c3309f79c0e..d42682c2c4a 100644 --- a/apps/files_sharing/l10n/de.js +++ b/apps/files_sharing/l10n/de.js @@ -181,11 +181,11 @@ OC.L10N.register( "Via “{folder}”" : "Über “{folder}”", "Internal link" : "Interner Link", "Copy internal link to clipboard" : "Internen Link in die Zwischenablage kopieren", - "Link copied" : "Link kopiert", "Cannot copy, please copy the link manually" : "Kopieren fehlgeschlagen. Bitte kopiere den Link manuell.", "Copy to clipboard" : "In die Zwischenablage kopieren", "Only works for users with access to this folder" : "Funktioniert nur für Benutzer, die Zugriff auf diesen Ordner haben", "Only works for users with access to this file" : "Funktioniert nur für Benutzer, die Zugriff auf diese Datei haben", + "Link copied" : "Link kopiert", "Copy public link to clipboard" : "Öffentlichen Link in die Zwischenablage kopieren", "Please enter the following required information before creating the share" : "Bitte gib die benötigten Informationen ein bevor die Freigabe erstellt wird", "Password protection (enforced)" : "Passwortschutz (erzwungen)", diff --git a/apps/files_sharing/l10n/de.json b/apps/files_sharing/l10n/de.json index f4d7c4059d0..67f56412452 100644 --- a/apps/files_sharing/l10n/de.json +++ b/apps/files_sharing/l10n/de.json @@ -179,11 +179,11 @@ "Via “{folder}”" : "Über “{folder}”", "Internal link" : "Interner Link", "Copy internal link to clipboard" : "Internen Link in die Zwischenablage kopieren", - "Link copied" : "Link kopiert", "Cannot copy, please copy the link manually" : "Kopieren fehlgeschlagen. Bitte kopiere den Link manuell.", "Copy to clipboard" : "In die Zwischenablage kopieren", "Only works for users with access to this folder" : "Funktioniert nur für Benutzer, die Zugriff auf diesen Ordner haben", "Only works for users with access to this file" : "Funktioniert nur für Benutzer, die Zugriff auf diese Datei haben", + "Link copied" : "Link kopiert", "Copy public link to clipboard" : "Öffentlichen Link in die Zwischenablage kopieren", "Please enter the following required information before creating the share" : "Bitte gib die benötigten Informationen ein bevor die Freigabe erstellt wird", "Password protection (enforced)" : "Passwortschutz (erzwungen)", diff --git a/apps/files_sharing/l10n/de_DE.js b/apps/files_sharing/l10n/de_DE.js index 4653b056185..88f7275bdab 100644 --- a/apps/files_sharing/l10n/de_DE.js +++ b/apps/files_sharing/l10n/de_DE.js @@ -181,11 +181,11 @@ OC.L10N.register( "Via “{folder}”" : "Über “{folder}”", "Internal link" : "Interner Link", "Copy internal link to clipboard" : "Internen Link in die Zwischenablage kopieren", - "Link copied" : "Link kopiert", "Cannot copy, please copy the link manually" : "Kopieren fehlgeschlagen. Bitte kopieren Sie den Link manuell", "Copy to clipboard" : "In die Zwischenablage kopieren", "Only works for users with access to this folder" : "Funktioniert nur für Benutzer, die Zugriff auf diesen Ordner haben", "Only works for users with access to this file" : "Funktioniert nur für Benutzer, die Zugriff auf diese Datei haben", + "Link copied" : "Link kopiert", "Copy public link to clipboard" : "Öffentlichen Link in die Zwischenablage kopieren", "Please enter the following required information before creating the share" : "Bitte geben Sie die benötigten Informationen ein bevor die Freigabe erstellt wird", "Password protection (enforced)" : "Passwortschutz (erzwungen)", diff --git a/apps/files_sharing/l10n/de_DE.json b/apps/files_sharing/l10n/de_DE.json index 257f88246ad..23a9bfb7820 100644 --- a/apps/files_sharing/l10n/de_DE.json +++ b/apps/files_sharing/l10n/de_DE.json @@ -179,11 +179,11 @@ "Via “{folder}”" : "Über “{folder}”", "Internal link" : "Interner Link", "Copy internal link to clipboard" : "Internen Link in die Zwischenablage kopieren", - "Link copied" : "Link kopiert", "Cannot copy, please copy the link manually" : "Kopieren fehlgeschlagen. Bitte kopieren Sie den Link manuell", "Copy to clipboard" : "In die Zwischenablage kopieren", "Only works for users with access to this folder" : "Funktioniert nur für Benutzer, die Zugriff auf diesen Ordner haben", "Only works for users with access to this file" : "Funktioniert nur für Benutzer, die Zugriff auf diese Datei haben", + "Link copied" : "Link kopiert", "Copy public link to clipboard" : "Öffentlichen Link in die Zwischenablage kopieren", "Please enter the following required information before creating the share" : "Bitte geben Sie die benötigten Informationen ein bevor die Freigabe erstellt wird", "Password protection (enforced)" : "Passwortschutz (erzwungen)", diff --git a/apps/files_sharing/l10n/el.js b/apps/files_sharing/l10n/el.js index 0908bb9bb0b..6f4dc4d8fcd 100644 --- a/apps/files_sharing/l10n/el.js +++ b/apps/files_sharing/l10n/el.js @@ -173,11 +173,11 @@ OC.L10N.register( "Added by {initiator}" : "Προστέθηκε από {initiator}", "Via “{folder}”" : "Μέσω “{folder}”", "Internal link" : "Εσωτερικός σύνδεσμος", - "Link copied" : "Ο σύνδεσμος αντιγράφηκε", "Cannot copy, please copy the link manually" : "Δεν μπορεί να αντιγραφή, παρακαλώ αντιγράψτε χειροκίνητα", "Copy to clipboard" : "Αντιγραφή στο πρόχειρο", "Only works for users with access to this folder" : "Δουλεύει μόνο για χρήστες με πρόσβαση σε αυτό το φάκελο", "Only works for users with access to this file" : "Δουλεύει μόνο για χρήστες με πρόσβαση στο αρχείο", + "Link copied" : "Ο σύνδεσμος αντιγράφηκε", "Please enter the following required information before creating the share" : "Καταχωρίστε τις ακόλουθες απαιτούμενες πληροφορίες πριν δημιουργήσετε το κοινόχρηστο στοιχείο", "Password protection (enforced)" : "Προστασία με κωδικό (υποχρεωτικό)", "Password protection" : "Προστασία συνθηματικού", diff --git a/apps/files_sharing/l10n/el.json b/apps/files_sharing/l10n/el.json index 3a05cfa1142..5311d6fd005 100644 --- a/apps/files_sharing/l10n/el.json +++ b/apps/files_sharing/l10n/el.json @@ -171,11 +171,11 @@ "Added by {initiator}" : "Προστέθηκε από {initiator}", "Via “{folder}”" : "Μέσω “{folder}”", "Internal link" : "Εσωτερικός σύνδεσμος", - "Link copied" : "Ο σύνδεσμος αντιγράφηκε", "Cannot copy, please copy the link manually" : "Δεν μπορεί να αντιγραφή, παρακαλώ αντιγράψτε χειροκίνητα", "Copy to clipboard" : "Αντιγραφή στο πρόχειρο", "Only works for users with access to this folder" : "Δουλεύει μόνο για χρήστες με πρόσβαση σε αυτό το φάκελο", "Only works for users with access to this file" : "Δουλεύει μόνο για χρήστες με πρόσβαση στο αρχείο", + "Link copied" : "Ο σύνδεσμος αντιγράφηκε", "Please enter the following required information before creating the share" : "Καταχωρίστε τις ακόλουθες απαιτούμενες πληροφορίες πριν δημιουργήσετε το κοινόχρηστο στοιχείο", "Password protection (enforced)" : "Προστασία με κωδικό (υποχρεωτικό)", "Password protection" : "Προστασία συνθηματικού", diff --git a/apps/files_sharing/l10n/en_GB.js b/apps/files_sharing/l10n/en_GB.js index 912dc803774..411fd4607e3 100644 --- a/apps/files_sharing/l10n/en_GB.js +++ b/apps/files_sharing/l10n/en_GB.js @@ -181,11 +181,11 @@ OC.L10N.register( "Via “{folder}”" : "Via “{folder}”", "Internal link" : "Internal link", "Copy internal link to clipboard" : "Copy internal link to clipboard", - "Link copied" : "Link copied", "Cannot copy, please copy the link manually" : "Cannot copy, please copy the link manually", "Copy to clipboard" : "Copy to clipboard", "Only works for users with access to this folder" : "Only works for users with access to this folder", "Only works for users with access to this file" : "Only works for users with access to this file", + "Link copied" : "Link copied", "Copy public link to clipboard" : "Copy public link to clipboard", "Please enter the following required information before creating the share" : "Please enter the following required information before creating the share", "Password protection (enforced)" : "Password protection (enforced)", @@ -210,6 +210,8 @@ OC.L10N.register( "Share link" : "Share link", "Error, please enter proper password and/or expiration date" : "Error, please enter proper password and/or expiration date", "Error while creating the share" : "Error while creating the share", + "Share label saved" : "Share label saved", + "Share password saved" : "Share password saved", "Search for share recipients" : "Search for share recipients", "No recommendations. Start typing." : "No recommendations. Start typing.", "Resharing is not allowed" : "Resharing is not allowed", @@ -233,6 +235,9 @@ OC.L10N.register( "Error creating the share" : "Error creating the share", "Error updating the share: {errorMessage}" : "Error updating the share: {errorMessage}", "Error updating the share" : "Error updating the share", + "Share note saved" : "Share note saved", + "File \"{path}\" has been unshared" : "File \"{path}\" has been unshared", + "Folder \"{path}\" has been unshared" : "Folder \"{path}\" has been unshared", "Shared" : "Shared", "Share" : "Share", "Shared with" : "Shared with", diff --git a/apps/files_sharing/l10n/en_GB.json b/apps/files_sharing/l10n/en_GB.json index 5a4d94a880f..b3454ff14e7 100644 --- a/apps/files_sharing/l10n/en_GB.json +++ b/apps/files_sharing/l10n/en_GB.json @@ -179,11 +179,11 @@ "Via “{folder}”" : "Via “{folder}”", "Internal link" : "Internal link", "Copy internal link to clipboard" : "Copy internal link to clipboard", - "Link copied" : "Link copied", "Cannot copy, please copy the link manually" : "Cannot copy, please copy the link manually", "Copy to clipboard" : "Copy to clipboard", "Only works for users with access to this folder" : "Only works for users with access to this folder", "Only works for users with access to this file" : "Only works for users with access to this file", + "Link copied" : "Link copied", "Copy public link to clipboard" : "Copy public link to clipboard", "Please enter the following required information before creating the share" : "Please enter the following required information before creating the share", "Password protection (enforced)" : "Password protection (enforced)", @@ -208,6 +208,8 @@ "Share link" : "Share link", "Error, please enter proper password and/or expiration date" : "Error, please enter proper password and/or expiration date", "Error while creating the share" : "Error while creating the share", + "Share label saved" : "Share label saved", + "Share password saved" : "Share password saved", "Search for share recipients" : "Search for share recipients", "No recommendations. Start typing." : "No recommendations. Start typing.", "Resharing is not allowed" : "Resharing is not allowed", @@ -231,6 +233,9 @@ "Error creating the share" : "Error creating the share", "Error updating the share: {errorMessage}" : "Error updating the share: {errorMessage}", "Error updating the share" : "Error updating the share", + "Share note saved" : "Share note saved", + "File \"{path}\" has been unshared" : "File \"{path}\" has been unshared", + "Folder \"{path}\" has been unshared" : "Folder \"{path}\" has been unshared", "Shared" : "Shared", "Share" : "Share", "Shared with" : "Shared with", diff --git a/apps/files_sharing/l10n/eo.js b/apps/files_sharing/l10n/eo.js index 35648307d42..f44cc2b34f2 100644 --- a/apps/files_sharing/l10n/eo.js +++ b/apps/files_sharing/l10n/eo.js @@ -146,11 +146,11 @@ OC.L10N.register( "Shared with the conversation {user} by {owner}" : "Kunhavigita kun la konversacio {user} fare de {owner}", "Shared with {user} by {owner}" : "Kunhavigita kun {user} fare de {owner}", "Internal link" : "Interna ligilo", - "Link copied" : "Ligilo kopiita", "Cannot copy, please copy the link manually" : "Ne eblis kopii la ligilon; kopiu ĝin permane.", "Copy to clipboard" : "Kopii tondejen", "Only works for users with access to this folder" : "Nur validas por uzantoj, kiuj povas aliri al tiu dosierujo", "Only works for users with access to this file" : "Nur validas por uzantoj, kiuj povas aliri al tiu dosiero", + "Link copied" : "Ligilo kopiita", "Please enter the following required information before creating the share" : "Entajpu la jenajn neprajn informojn antaŭ ol krei la kunhavigon", "Password protection (enforced)" : "Pasvorta protekto (efektiva)", "Password protection" : "Protektita per pasvorto", diff --git a/apps/files_sharing/l10n/eo.json b/apps/files_sharing/l10n/eo.json index 7b67065f471..3a0f6adc776 100644 --- a/apps/files_sharing/l10n/eo.json +++ b/apps/files_sharing/l10n/eo.json @@ -144,11 +144,11 @@ "Shared with the conversation {user} by {owner}" : "Kunhavigita kun la konversacio {user} fare de {owner}", "Shared with {user} by {owner}" : "Kunhavigita kun {user} fare de {owner}", "Internal link" : "Interna ligilo", - "Link copied" : "Ligilo kopiita", "Cannot copy, please copy the link manually" : "Ne eblis kopii la ligilon; kopiu ĝin permane.", "Copy to clipboard" : "Kopii tondejen", "Only works for users with access to this folder" : "Nur validas por uzantoj, kiuj povas aliri al tiu dosierujo", "Only works for users with access to this file" : "Nur validas por uzantoj, kiuj povas aliri al tiu dosiero", + "Link copied" : "Ligilo kopiita", "Please enter the following required information before creating the share" : "Entajpu la jenajn neprajn informojn antaŭ ol krei la kunhavigon", "Password protection (enforced)" : "Pasvorta protekto (efektiva)", "Password protection" : "Protektita per pasvorto", diff --git a/apps/files_sharing/l10n/es.js b/apps/files_sharing/l10n/es.js index 27cd3f164b6..a03ec481506 100644 --- a/apps/files_sharing/l10n/es.js +++ b/apps/files_sharing/l10n/es.js @@ -181,11 +181,11 @@ OC.L10N.register( "Via “{folder}”" : "Vía \"{folder}\"", "Internal link" : "Enlace interno", "Copy internal link to clipboard" : "Copiar enlace interno al portapapeles", - "Link copied" : "Enlace copiado", "Cannot copy, please copy the link manually" : "No se ha podido copiar, por favor, copia el enlace manualmente", "Copy to clipboard" : "Copiar al portapapeles", "Only works for users with access to this folder" : "Sólo funciona para usuarios con acceso a esta carpeta", "Only works for users with access to this file" : "Sólo funciona para usuarios con acceso a este archivo", + "Link copied" : "Enlace copiado", "Copy public link to clipboard" : "Copiar enlace público al portapapeles", "Please enter the following required information before creating the share" : "Por favor, escriba la información necesaria antes de crear el recurso compartido", "Password protection (enforced)" : "Protección con contraseña (impuesta)", diff --git a/apps/files_sharing/l10n/es.json b/apps/files_sharing/l10n/es.json index a1a824bad87..b5e3cef356c 100644 --- a/apps/files_sharing/l10n/es.json +++ b/apps/files_sharing/l10n/es.json @@ -179,11 +179,11 @@ "Via “{folder}”" : "Vía \"{folder}\"", "Internal link" : "Enlace interno", "Copy internal link to clipboard" : "Copiar enlace interno al portapapeles", - "Link copied" : "Enlace copiado", "Cannot copy, please copy the link manually" : "No se ha podido copiar, por favor, copia el enlace manualmente", "Copy to clipboard" : "Copiar al portapapeles", "Only works for users with access to this folder" : "Sólo funciona para usuarios con acceso a esta carpeta", "Only works for users with access to this file" : "Sólo funciona para usuarios con acceso a este archivo", + "Link copied" : "Enlace copiado", "Copy public link to clipboard" : "Copiar enlace público al portapapeles", "Please enter the following required information before creating the share" : "Por favor, escriba la información necesaria antes de crear el recurso compartido", "Password protection (enforced)" : "Protección con contraseña (impuesta)", diff --git a/apps/files_sharing/l10n/es_AR.js b/apps/files_sharing/l10n/es_AR.js index 6d0405f3591..45c403c0d00 100644 --- a/apps/files_sharing/l10n/es_AR.js +++ b/apps/files_sharing/l10n/es_AR.js @@ -107,10 +107,10 @@ OC.L10N.register( "Unshare" : "No compartir", "group" : "grupo", "remote" : "remoto", - "Link copied" : "Link copiado", "Cannot copy, please copy the link manually" : "No es posible copiar, por favor copia el enlace manualmente", "Copy to clipboard" : "Copiar al portapapeles", "Only works for users with access to this folder" : "Solo funciona para usuarios con acceso a esta carpeta", + "Link copied" : "Link copiado", "Password protection" : "Protección con contraseña", "Enter a password" : "Ingrese una contraseña", "Cancel" : "Cancelar", diff --git a/apps/files_sharing/l10n/es_AR.json b/apps/files_sharing/l10n/es_AR.json index ba22861d26f..e49c2122ccd 100644 --- a/apps/files_sharing/l10n/es_AR.json +++ b/apps/files_sharing/l10n/es_AR.json @@ -105,10 +105,10 @@ "Unshare" : "No compartir", "group" : "grupo", "remote" : "remoto", - "Link copied" : "Link copiado", "Cannot copy, please copy the link manually" : "No es posible copiar, por favor copia el enlace manualmente", "Copy to clipboard" : "Copiar al portapapeles", "Only works for users with access to this folder" : "Solo funciona para usuarios con acceso a esta carpeta", + "Link copied" : "Link copiado", "Password protection" : "Protección con contraseña", "Enter a password" : "Ingrese una contraseña", "Cancel" : "Cancelar", diff --git a/apps/files_sharing/l10n/es_CO.js b/apps/files_sharing/l10n/es_CO.js index d4ef48df4e7..d8dab60e5b4 100644 --- a/apps/files_sharing/l10n/es_CO.js +++ b/apps/files_sharing/l10n/es_CO.js @@ -105,8 +105,8 @@ OC.L10N.register( "Unshare" : "Dejar de compartir", "group" : "grupo", "remote" : "remoto", - "Link copied" : "Enlace copiado", "Copy to clipboard" : "Copiar al portapapeles", + "Link copied" : "Enlace copiado", "Password protection" : "Protección con contraseña", "Enter a password" : "Ingresa una contraseña", "Cancel" : "Cancelar", diff --git a/apps/files_sharing/l10n/es_CO.json b/apps/files_sharing/l10n/es_CO.json index a896730f4ad..1b26b726521 100644 --- a/apps/files_sharing/l10n/es_CO.json +++ b/apps/files_sharing/l10n/es_CO.json @@ -103,8 +103,8 @@ "Unshare" : "Dejar de compartir", "group" : "grupo", "remote" : "remoto", - "Link copied" : "Enlace copiado", "Copy to clipboard" : "Copiar al portapapeles", + "Link copied" : "Enlace copiado", "Password protection" : "Protección con contraseña", "Enter a password" : "Ingresa una contraseña", "Cancel" : "Cancelar", diff --git a/apps/files_sharing/l10n/es_MX.js b/apps/files_sharing/l10n/es_MX.js index d4f01520991..c86c50af320 100644 --- a/apps/files_sharing/l10n/es_MX.js +++ b/apps/files_sharing/l10n/es_MX.js @@ -109,8 +109,8 @@ OC.L10N.register( "group" : "grupo", "remote" : "remoto", "guest" : "invitado", - "Link copied" : "Vinculo copiado", "Copy to clipboard" : "Copiar al portapapeles", + "Link copied" : "Vinculo copiado", "Password protection" : "Protección con contraseña", "Enter a password" : "Ingresa una contraseña", "Cancel" : "Cancelar", diff --git a/apps/files_sharing/l10n/es_MX.json b/apps/files_sharing/l10n/es_MX.json index 7b77c1ec3a8..0d29e8c421f 100644 --- a/apps/files_sharing/l10n/es_MX.json +++ b/apps/files_sharing/l10n/es_MX.json @@ -107,8 +107,8 @@ "group" : "grupo", "remote" : "remoto", "guest" : "invitado", - "Link copied" : "Vinculo copiado", "Copy to clipboard" : "Copiar al portapapeles", + "Link copied" : "Vinculo copiado", "Password protection" : "Protección con contraseña", "Enter a password" : "Ingresa una contraseña", "Cancel" : "Cancelar", diff --git a/apps/files_sharing/l10n/et_EE.js b/apps/files_sharing/l10n/et_EE.js index 6fd46f7e5f0..3dcb271fed8 100644 --- a/apps/files_sharing/l10n/et_EE.js +++ b/apps/files_sharing/l10n/et_EE.js @@ -137,9 +137,9 @@ OC.L10N.register( "remote group" : "Kauggrupp", "guest" : "külaline", "Internal link" : "Sisemine link", - "Link copied" : "Link kopeeritud", "Cannot copy, please copy the link manually" : "Ei saa kopeerida, palun kopeeri link käsitsi", "Copy to clipboard" : "Kopeeri lõikepuhvrisse", + "Link copied" : "Link kopeeritud", "Password protection (enforced)" : "Paroolikaitse (jõustatud)", "Password protection" : "Password protection", "Enter a password" : "Enter a password", diff --git a/apps/files_sharing/l10n/et_EE.json b/apps/files_sharing/l10n/et_EE.json index dfe90a4009d..5ee3672344a 100644 --- a/apps/files_sharing/l10n/et_EE.json +++ b/apps/files_sharing/l10n/et_EE.json @@ -135,9 +135,9 @@ "remote group" : "Kauggrupp", "guest" : "külaline", "Internal link" : "Sisemine link", - "Link copied" : "Link kopeeritud", "Cannot copy, please copy the link manually" : "Ei saa kopeerida, palun kopeeri link käsitsi", "Copy to clipboard" : "Kopeeri lõikepuhvrisse", + "Link copied" : "Link kopeeritud", "Password protection (enforced)" : "Paroolikaitse (jõustatud)", "Password protection" : "Password protection", "Enter a password" : "Enter a password", diff --git a/apps/files_sharing/l10n/eu.js b/apps/files_sharing/l10n/eu.js index 2206d8b0319..fa4bc49aa45 100644 --- a/apps/files_sharing/l10n/eu.js +++ b/apps/files_sharing/l10n/eu.js @@ -181,11 +181,11 @@ OC.L10N.register( "Via “{folder}”" : "“{folder}” bidez", "Internal link" : "Barneko esteka", "Copy internal link to clipboard" : "Kopiatu barne esteka arbelera", - "Link copied" : "Esteka kopiatu da", "Cannot copy, please copy the link manually" : "Ezin izan da kopiatu. Kopiatu esteka eskuz", "Copy to clipboard" : "Kopiatu arbelera", "Only works for users with access to this folder" : "Karpeta atzitu dezaketen erabiltzaileentzat bakarrik funtzionatzen du", "Only works for users with access to this file" : "Fitxategi hau atzitu dezaketen erabiltzaileentzat bakarrik funtzionatzen du", + "Link copied" : "Esteka kopiatu da", "Copy public link to clipboard" : "Kopiatu esteka publikoa arbelera", "Please enter the following required information before creating the share" : "Sartu ondorengo beharrezko informazioa partekatzea sortu aurretik", "Password protection (enforced)" : "Pasahitz bidez babestua (betearazita)", diff --git a/apps/files_sharing/l10n/eu.json b/apps/files_sharing/l10n/eu.json index af0a406031f..81f255e4255 100644 --- a/apps/files_sharing/l10n/eu.json +++ b/apps/files_sharing/l10n/eu.json @@ -179,11 +179,11 @@ "Via “{folder}”" : "“{folder}” bidez", "Internal link" : "Barneko esteka", "Copy internal link to clipboard" : "Kopiatu barne esteka arbelera", - "Link copied" : "Esteka kopiatu da", "Cannot copy, please copy the link manually" : "Ezin izan da kopiatu. Kopiatu esteka eskuz", "Copy to clipboard" : "Kopiatu arbelera", "Only works for users with access to this folder" : "Karpeta atzitu dezaketen erabiltzaileentzat bakarrik funtzionatzen du", "Only works for users with access to this file" : "Fitxategi hau atzitu dezaketen erabiltzaileentzat bakarrik funtzionatzen du", + "Link copied" : "Esteka kopiatu da", "Copy public link to clipboard" : "Kopiatu esteka publikoa arbelera", "Please enter the following required information before creating the share" : "Sartu ondorengo beharrezko informazioa partekatzea sortu aurretik", "Password protection (enforced)" : "Pasahitz bidez babestua (betearazita)", diff --git a/apps/files_sharing/l10n/fa.js b/apps/files_sharing/l10n/fa.js index 253b68048a0..666762ff547 100644 --- a/apps/files_sharing/l10n/fa.js +++ b/apps/files_sharing/l10n/fa.js @@ -164,11 +164,11 @@ OC.L10N.register( "Shared with {user} by {owner}" : "مشترک با {user} توسط {صاحب}", "Added by {initiator}" : "اضافه شده توسط {ابتکار}", "Internal link" : "پیوند داخلی", - "Link copied" : "پیوند کپی شد", "Cannot copy, please copy the link manually" : "کپی کردن امکان پذیر نیست ، لطفا پیوند را به صورت دستی کپی کنید", "Copy to clipboard" : "کپی به کلیپ بورد", "Only works for users with access to this folder" : "فقط برای کاربران دارای دسترسی به این پوشه کار می کند", "Only works for users with access to this file" : "فقط برای کاربران با دسترسی به این پرونده کار می کند", + "Link copied" : "پیوند کپی شد", "Please enter the following required information before creating the share" : "لطفا قبل از ایجاد اشتراک ، اطلاعات لازم را وارد کنید", "Password protection (enforced)" : "محافظت از رمز عبور (اجباری)", "Password protection" : "Password protection", diff --git a/apps/files_sharing/l10n/fa.json b/apps/files_sharing/l10n/fa.json index ad55fc63335..9533f64f865 100644 --- a/apps/files_sharing/l10n/fa.json +++ b/apps/files_sharing/l10n/fa.json @@ -162,11 +162,11 @@ "Shared with {user} by {owner}" : "مشترک با {user} توسط {صاحب}", "Added by {initiator}" : "اضافه شده توسط {ابتکار}", "Internal link" : "پیوند داخلی", - "Link copied" : "پیوند کپی شد", "Cannot copy, please copy the link manually" : "کپی کردن امکان پذیر نیست ، لطفا پیوند را به صورت دستی کپی کنید", "Copy to clipboard" : "کپی به کلیپ بورد", "Only works for users with access to this folder" : "فقط برای کاربران دارای دسترسی به این پوشه کار می کند", "Only works for users with access to this file" : "فقط برای کاربران با دسترسی به این پرونده کار می کند", + "Link copied" : "پیوند کپی شد", "Please enter the following required information before creating the share" : "لطفا قبل از ایجاد اشتراک ، اطلاعات لازم را وارد کنید", "Password protection (enforced)" : "محافظت از رمز عبور (اجباری)", "Password protection" : "Password protection", diff --git a/apps/files_sharing/l10n/fi.js b/apps/files_sharing/l10n/fi.js index 4aa005c63b9..07affc02e18 100644 --- a/apps/files_sharing/l10n/fi.js +++ b/apps/files_sharing/l10n/fi.js @@ -172,11 +172,11 @@ OC.L10N.register( "Via “{folder}”" : "“{folder}” kautta", "Internal link" : "Sisäinen linkki", "Copy internal link to clipboard" : "Kopioi sisäinen linkki leikepöydälle", - "Link copied" : "Linkki kopioitu", "Cannot copy, please copy the link manually" : "Kopioiminen ei onnistu. Kopioi linkki manuaalisesti", "Copy to clipboard" : "Kopioi leikepöydälle", "Only works for users with access to this folder" : "Toimii vain käyttäjille, joilla on oikeus tähän kansioon", "Only works for users with access to this file" : "Toimii vain käyttäjille, joilla on käyttöoikeus tähän tiedostoon", + "Link copied" : "Linkki kopioitu", "Copy public link to clipboard" : "Kopioi julkinen linkki leikepöydälle", "Please enter the following required information before creating the share" : "Anna seuraavat vaaditut tiedot, ennen kuin luot jaon", "Password protection (enforced)" : "Salasanasuojaus (pakotettu)", diff --git a/apps/files_sharing/l10n/fi.json b/apps/files_sharing/l10n/fi.json index bdf44a2c9f6..3fefbc1300d 100644 --- a/apps/files_sharing/l10n/fi.json +++ b/apps/files_sharing/l10n/fi.json @@ -170,11 +170,11 @@ "Via “{folder}”" : "“{folder}” kautta", "Internal link" : "Sisäinen linkki", "Copy internal link to clipboard" : "Kopioi sisäinen linkki leikepöydälle", - "Link copied" : "Linkki kopioitu", "Cannot copy, please copy the link manually" : "Kopioiminen ei onnistu. Kopioi linkki manuaalisesti", "Copy to clipboard" : "Kopioi leikepöydälle", "Only works for users with access to this folder" : "Toimii vain käyttäjille, joilla on oikeus tähän kansioon", "Only works for users with access to this file" : "Toimii vain käyttäjille, joilla on käyttöoikeus tähän tiedostoon", + "Link copied" : "Linkki kopioitu", "Copy public link to clipboard" : "Kopioi julkinen linkki leikepöydälle", "Please enter the following required information before creating the share" : "Anna seuraavat vaaditut tiedot, ennen kuin luot jaon", "Password protection (enforced)" : "Salasanasuojaus (pakotettu)", diff --git a/apps/files_sharing/l10n/fr.js b/apps/files_sharing/l10n/fr.js index a598cdab0a6..38265af79d6 100644 --- a/apps/files_sharing/l10n/fr.js +++ b/apps/files_sharing/l10n/fr.js @@ -181,11 +181,11 @@ OC.L10N.register( "Via “{folder}”" : "Via “{folder}”", "Internal link" : "Lien interne", "Copy internal link to clipboard" : "Copier le lien interne dans le presse-papiers", - "Link copied" : "Lien copié", "Cannot copy, please copy the link manually" : "Impossible de copier, merci de le copier manuellement", "Copy to clipboard" : "Copier dans le presse-papier", "Only works for users with access to this folder" : "Fonctionne uniquement pour les utilisateurs ayant accès à ce dossier", "Only works for users with access to this file" : "Fonctionne uniquement pour les utilisateurs ayant accès à ce fichier", + "Link copied" : "Lien copié", "Copy public link to clipboard" : "Copier le lien public dans le presse-papiers", "Please enter the following required information before creating the share" : "Veuillez entrer les informations requises suivantes avant de créer le partage.", "Password protection (enforced)" : "Protection par mot de passe (forcée)", @@ -210,6 +210,8 @@ OC.L10N.register( "Share link" : "Lien de partage", "Error, please enter proper password and/or expiration date" : "Erreur. Merci d'entrer un mot de passe valide et/ou une date d'expiration", "Error while creating the share" : "Erreur lors de la création du partage", + "Share label saved" : "Étiquette collaborative enregistrée", + "Share password saved" : "Mot de passe partagé enregistré", "Search for share recipients" : "Recherche les destinataires du partage", "No recommendations. Start typing." : "Aucune recommandation. Commencez à écrire.", "Resharing is not allowed" : "Le repartage n'est pas autorisé", @@ -233,6 +235,9 @@ OC.L10N.register( "Error creating the share" : "Erreur lors de la création du partage", "Error updating the share: {errorMessage}" : "Erreur à la mise à jour du partage\\: {errorMessage} ", "Error updating the share" : "Erreur lors de la mise à jour du partage", + "Share note saved" : "Note partagée enregistrée", + "File \"{path}\" has been unshared" : "Le partage du fichier \"{path}\" a été retiré", + "Folder \"{path}\" has been unshared" : "Le partage du dossier \"{path}\" a été retiré", "Shared" : "Partagé", "Share" : "Partager", "Shared with" : "Partagé avec", diff --git a/apps/files_sharing/l10n/fr.json b/apps/files_sharing/l10n/fr.json index 1f1e57d4d7f..d142fffc137 100644 --- a/apps/files_sharing/l10n/fr.json +++ b/apps/files_sharing/l10n/fr.json @@ -179,11 +179,11 @@ "Via “{folder}”" : "Via “{folder}”", "Internal link" : "Lien interne", "Copy internal link to clipboard" : "Copier le lien interne dans le presse-papiers", - "Link copied" : "Lien copié", "Cannot copy, please copy the link manually" : "Impossible de copier, merci de le copier manuellement", "Copy to clipboard" : "Copier dans le presse-papier", "Only works for users with access to this folder" : "Fonctionne uniquement pour les utilisateurs ayant accès à ce dossier", "Only works for users with access to this file" : "Fonctionne uniquement pour les utilisateurs ayant accès à ce fichier", + "Link copied" : "Lien copié", "Copy public link to clipboard" : "Copier le lien public dans le presse-papiers", "Please enter the following required information before creating the share" : "Veuillez entrer les informations requises suivantes avant de créer le partage.", "Password protection (enforced)" : "Protection par mot de passe (forcée)", @@ -208,6 +208,8 @@ "Share link" : "Lien de partage", "Error, please enter proper password and/or expiration date" : "Erreur. Merci d'entrer un mot de passe valide et/ou une date d'expiration", "Error while creating the share" : "Erreur lors de la création du partage", + "Share label saved" : "Étiquette collaborative enregistrée", + "Share password saved" : "Mot de passe partagé enregistré", "Search for share recipients" : "Recherche les destinataires du partage", "No recommendations. Start typing." : "Aucune recommandation. Commencez à écrire.", "Resharing is not allowed" : "Le repartage n'est pas autorisé", @@ -231,6 +233,9 @@ "Error creating the share" : "Erreur lors de la création du partage", "Error updating the share: {errorMessage}" : "Erreur à la mise à jour du partage\\: {errorMessage} ", "Error updating the share" : "Erreur lors de la mise à jour du partage", + "Share note saved" : "Note partagée enregistrée", + "File \"{path}\" has been unshared" : "Le partage du fichier \"{path}\" a été retiré", + "Folder \"{path}\" has been unshared" : "Le partage du dossier \"{path}\" a été retiré", "Shared" : "Partagé", "Share" : "Partager", "Shared with" : "Partagé avec", diff --git a/apps/files_sharing/l10n/gl.js b/apps/files_sharing/l10n/gl.js index e2aeb689ae5..e72e10be34d 100644 --- a/apps/files_sharing/l10n/gl.js +++ b/apps/files_sharing/l10n/gl.js @@ -162,11 +162,11 @@ OC.L10N.register( "Added by {initiator}" : "Engadido por {initiator}", "Via “{folder}”" : "A través de «{folder}»", "Internal link" : "Ligazón interna", - "Link copied" : "Ligazón copiada", "Cannot copy, please copy the link manually" : "Non foi posíbel copiala. Copie a ligazón manualmente", "Copy to clipboard" : "Copiar no portapapeis.", "Only works for users with access to this folder" : "Só funciona para usuarios con acceso a este cartafol", "Only works for users with access to this file" : "Só funciona para usuarios con acceso a este ficheiro", + "Link copied" : "Ligazón copiada", "Please enter the following required information before creating the share" : "Introduza a seguinte información necesaria antes de crear a compartición", "Password protection (enforced)" : "Protección con contrasinal (obrigado)", "Password protection" : "Protección por contrasinal", diff --git a/apps/files_sharing/l10n/gl.json b/apps/files_sharing/l10n/gl.json index 67e629137d4..e919cf612ce 100644 --- a/apps/files_sharing/l10n/gl.json +++ b/apps/files_sharing/l10n/gl.json @@ -160,11 +160,11 @@ "Added by {initiator}" : "Engadido por {initiator}", "Via “{folder}”" : "A través de «{folder}»", "Internal link" : "Ligazón interna", - "Link copied" : "Ligazón copiada", "Cannot copy, please copy the link manually" : "Non foi posíbel copiala. Copie a ligazón manualmente", "Copy to clipboard" : "Copiar no portapapeis.", "Only works for users with access to this folder" : "Só funciona para usuarios con acceso a este cartafol", "Only works for users with access to this file" : "Só funciona para usuarios con acceso a este ficheiro", + "Link copied" : "Ligazón copiada", "Please enter the following required information before creating the share" : "Introduza a seguinte información necesaria antes de crear a compartición", "Password protection (enforced)" : "Protección con contrasinal (obrigado)", "Password protection" : "Protección por contrasinal", diff --git a/apps/files_sharing/l10n/he.js b/apps/files_sharing/l10n/he.js index 466d57c06d4..cbbab97300f 100644 --- a/apps/files_sharing/l10n/he.js +++ b/apps/files_sharing/l10n/he.js @@ -162,11 +162,11 @@ OC.L10N.register( "Added by {initiator}" : "נוסף על ידי {initiator}", "Via “{folder}”" : "דרך „{folder}”", "Internal link" : "קישור פנימי", - "Link copied" : "הקישור הועתק", "Cannot copy, please copy the link manually" : "לא ניתן להעתיק, נא להעתיק את הקישור ידנית", "Copy to clipboard" : "העתקה ללוח הגזירים", "Only works for users with access to this folder" : "עובד רק עבור משתמשים עם גישה לתיקייה הזו", "Only works for users with access to this file" : "עובד רק עבור משתמשים עם גישה לקובץ הזה", + "Link copied" : "הקישור הועתק", "Please enter the following required information before creating the share" : "נא למלא את הפרטים הנחוצים הבאים בטרם יצירת השיתוף", "Password protection (enforced)" : "הגנה בססמה (נאכף)", "Password protection" : "Password protection", diff --git a/apps/files_sharing/l10n/he.json b/apps/files_sharing/l10n/he.json index 518704ec6d8..e16c5a883ba 100644 --- a/apps/files_sharing/l10n/he.json +++ b/apps/files_sharing/l10n/he.json @@ -160,11 +160,11 @@ "Added by {initiator}" : "נוסף על ידי {initiator}", "Via “{folder}”" : "דרך „{folder}”", "Internal link" : "קישור פנימי", - "Link copied" : "הקישור הועתק", "Cannot copy, please copy the link manually" : "לא ניתן להעתיק, נא להעתיק את הקישור ידנית", "Copy to clipboard" : "העתקה ללוח הגזירים", "Only works for users with access to this folder" : "עובד רק עבור משתמשים עם גישה לתיקייה הזו", "Only works for users with access to this file" : "עובד רק עבור משתמשים עם גישה לקובץ הזה", + "Link copied" : "הקישור הועתק", "Please enter the following required information before creating the share" : "נא למלא את הפרטים הנחוצים הבאים בטרם יצירת השיתוף", "Password protection (enforced)" : "הגנה בססמה (נאכף)", "Password protection" : "Password protection", diff --git a/apps/files_sharing/l10n/hr.js b/apps/files_sharing/l10n/hr.js index 1aa20eee822..4ce47ac0c94 100644 --- a/apps/files_sharing/l10n/hr.js +++ b/apps/files_sharing/l10n/hr.js @@ -167,11 +167,11 @@ OC.L10N.register( "Added by {initiator}" : "Dodao {initiator}", "Via “{folder}”" : "Putem „{folder}“", "Internal link" : "Interna poveznica", - "Link copied" : "Poveznica je kopirana", "Cannot copy, please copy the link manually" : "Kopiranje nije moguće, ručno kopirajte poveznicu", "Copy to clipboard" : "Kopiraj u međuspremnik", "Only works for users with access to this folder" : "Samo za korisnike koji smiju pristupiti ovoj mapi", "Only works for users with access to this file" : "Samo za korisnike koji smiju pristupiti ovoj datoteci", + "Link copied" : "Poveznica je kopirana", "Please enter the following required information before creating the share" : "Unesite sljedeće informacije prije stvaranja dijeljenja", "Password protection (enforced)" : "Zaštita zaporkom (provedeno)", "Password protection" : "Zaštita zaporkom", diff --git a/apps/files_sharing/l10n/hr.json b/apps/files_sharing/l10n/hr.json index 4bfe3a60a83..d15d5f89643 100644 --- a/apps/files_sharing/l10n/hr.json +++ b/apps/files_sharing/l10n/hr.json @@ -165,11 +165,11 @@ "Added by {initiator}" : "Dodao {initiator}", "Via “{folder}”" : "Putem „{folder}“", "Internal link" : "Interna poveznica", - "Link copied" : "Poveznica je kopirana", "Cannot copy, please copy the link manually" : "Kopiranje nije moguće, ručno kopirajte poveznicu", "Copy to clipboard" : "Kopiraj u međuspremnik", "Only works for users with access to this folder" : "Samo za korisnike koji smiju pristupiti ovoj mapi", "Only works for users with access to this file" : "Samo za korisnike koji smiju pristupiti ovoj datoteci", + "Link copied" : "Poveznica je kopirana", "Please enter the following required information before creating the share" : "Unesite sljedeće informacije prije stvaranja dijeljenja", "Password protection (enforced)" : "Zaštita zaporkom (provedeno)", "Password protection" : "Zaštita zaporkom", diff --git a/apps/files_sharing/l10n/hu.js b/apps/files_sharing/l10n/hu.js index bb8b7718404..aa1bfdfedaa 100644 --- a/apps/files_sharing/l10n/hu.js +++ b/apps/files_sharing/l10n/hu.js @@ -181,11 +181,11 @@ OC.L10N.register( "Via “{folder}”" : "A(z) „{folder}” mappán keretül", "Internal link" : "Belső hivatkozás", "Copy internal link to clipboard" : "Belső hivatkozás másolása a vágólapra", - "Link copied" : "Hivatkozás másolva", "Cannot copy, please copy the link manually" : "A másolás sikertelen, másolja kézzel a hivatkozást", "Copy to clipboard" : "Másolás a vágólapra", "Only works for users with access to this folder" : "Csak azoknál a felhasználóknál működik, akiknek hozzáférésük van ehhez a mappához", "Only works for users with access to this file" : "Csak azoknál a felhasználóknál működik, akiknek hozzáférésük van ehhez a fájlhoz", + "Link copied" : "Hivatkozás másolva", "Copy public link to clipboard" : "Nyilvános hivatkozás másolása a vágólapra", "Please enter the following required information before creating the share" : "A megosztás létrehozása előtt adja meg a következő szükséges információkat", "Password protection (enforced)" : "Jelszavas védelem (megkövetelve)", diff --git a/apps/files_sharing/l10n/hu.json b/apps/files_sharing/l10n/hu.json index eaf232af3e3..e4dd8acc8c2 100644 --- a/apps/files_sharing/l10n/hu.json +++ b/apps/files_sharing/l10n/hu.json @@ -179,11 +179,11 @@ "Via “{folder}”" : "A(z) „{folder}” mappán keretül", "Internal link" : "Belső hivatkozás", "Copy internal link to clipboard" : "Belső hivatkozás másolása a vágólapra", - "Link copied" : "Hivatkozás másolva", "Cannot copy, please copy the link manually" : "A másolás sikertelen, másolja kézzel a hivatkozást", "Copy to clipboard" : "Másolás a vágólapra", "Only works for users with access to this folder" : "Csak azoknál a felhasználóknál működik, akiknek hozzáférésük van ehhez a mappához", "Only works for users with access to this file" : "Csak azoknál a felhasználóknál működik, akiknek hozzáférésük van ehhez a fájlhoz", + "Link copied" : "Hivatkozás másolva", "Copy public link to clipboard" : "Nyilvános hivatkozás másolása a vágólapra", "Please enter the following required information before creating the share" : "A megosztás létrehozása előtt adja meg a következő szükséges információkat", "Password protection (enforced)" : "Jelszavas védelem (megkövetelve)", diff --git a/apps/files_sharing/l10n/is.js b/apps/files_sharing/l10n/is.js index 7c9e440bc92..692bc24cb3c 100644 --- a/apps/files_sharing/l10n/is.js +++ b/apps/files_sharing/l10n/is.js @@ -137,9 +137,9 @@ OC.L10N.register( "remote group" : "fjartengdur hópur", "guest" : "gestanotandi", "Internal link" : "Innri tengill", - "Link copied" : "Tengill afritaður", "Copy to clipboard" : "Afrita á klippispjald", "Only works for users with access to this folder" : "Vvirkar bara fyrir notendur sem eiga aðgang að þessari möppu", + "Link copied" : "Tengill afritaður", "Password protection (enforced)" : "Verndun með lykilorði (nauðsynleg)", "Password protection" : "Verndun með lykilorði", "Enter a password" : "Settu inn lykilorð", diff --git a/apps/files_sharing/l10n/is.json b/apps/files_sharing/l10n/is.json index d8455bde84a..db5f30e5720 100644 --- a/apps/files_sharing/l10n/is.json +++ b/apps/files_sharing/l10n/is.json @@ -135,9 +135,9 @@ "remote group" : "fjartengdur hópur", "guest" : "gestanotandi", "Internal link" : "Innri tengill", - "Link copied" : "Tengill afritaður", "Copy to clipboard" : "Afrita á klippispjald", "Only works for users with access to this folder" : "Vvirkar bara fyrir notendur sem eiga aðgang að þessari möppu", + "Link copied" : "Tengill afritaður", "Password protection (enforced)" : "Verndun með lykilorði (nauðsynleg)", "Password protection" : "Verndun með lykilorði", "Enter a password" : "Settu inn lykilorð", diff --git a/apps/files_sharing/l10n/it.js b/apps/files_sharing/l10n/it.js index 3d343549136..79244941612 100644 --- a/apps/files_sharing/l10n/it.js +++ b/apps/files_sharing/l10n/it.js @@ -178,11 +178,11 @@ OC.L10N.register( "Added by {initiator}" : "Aggiunto da {initiator}", "Via “{folder}”" : "Tramite “{folder}”", "Internal link" : "Collegamento interno", - "Link copied" : "Collegamento copiato", "Cannot copy, please copy the link manually" : "Impossibile copiare, copia il collegamento manualmente", "Copy to clipboard" : "Copia negli appunti", "Only works for users with access to this folder" : "Funziona solo per gli utenti con accesso a questa cartella", "Only works for users with access to this file" : "Funziona solo per gli utenti con accesso a questo file", + "Link copied" : "Collegamento copiato", "Please enter the following required information before creating the share" : "Digita le seguenti informazioni richieste prima di creare la condivisione", "Password protection (enforced)" : "Protezione con password (applicata)", "Password protection" : "Protezione con password", diff --git a/apps/files_sharing/l10n/it.json b/apps/files_sharing/l10n/it.json index cc460157a64..b9a850158e5 100644 --- a/apps/files_sharing/l10n/it.json +++ b/apps/files_sharing/l10n/it.json @@ -176,11 +176,11 @@ "Added by {initiator}" : "Aggiunto da {initiator}", "Via “{folder}”" : "Tramite “{folder}”", "Internal link" : "Collegamento interno", - "Link copied" : "Collegamento copiato", "Cannot copy, please copy the link manually" : "Impossibile copiare, copia il collegamento manualmente", "Copy to clipboard" : "Copia negli appunti", "Only works for users with access to this folder" : "Funziona solo per gli utenti con accesso a questa cartella", "Only works for users with access to this file" : "Funziona solo per gli utenti con accesso a questo file", + "Link copied" : "Collegamento copiato", "Please enter the following required information before creating the share" : "Digita le seguenti informazioni richieste prima di creare la condivisione", "Password protection (enforced)" : "Protezione con password (applicata)", "Password protection" : "Protezione con password", diff --git a/apps/files_sharing/l10n/ja.js b/apps/files_sharing/l10n/ja.js index 65f5a6a4412..d3aa84844b8 100644 --- a/apps/files_sharing/l10n/ja.js +++ b/apps/files_sharing/l10n/ja.js @@ -181,11 +181,11 @@ OC.L10N.register( "Via “{folder}”" : "“{folder}” 経由", "Internal link" : "内部リンク", "Copy internal link to clipboard" : "内部リンクをクリップボードにコピー", - "Link copied" : "リンクをコピーしました", "Cannot copy, please copy the link manually" : "コピーできませんでした。手動でリンクをコピーしてください。", "Copy to clipboard" : "クリップボードにコピー", "Only works for users with access to this folder" : "このフォルダーにアクセスできるユーザーにのみ機能します", "Only works for users with access to this file" : "このファイルへのアクセス権を持つユーザーに対してのみ機能します", + "Link copied" : "リンクをコピーしました", "Copy public link to clipboard" : "公開リンクをクリップボードにコピー", "Please enter the following required information before creating the share" : "共有を作成する前に、次の必要な情報を入力してください", "Password protection (enforced)" : "パスワード保護(強制)", diff --git a/apps/files_sharing/l10n/ja.json b/apps/files_sharing/l10n/ja.json index c027bfc86b2..2849c20e603 100644 --- a/apps/files_sharing/l10n/ja.json +++ b/apps/files_sharing/l10n/ja.json @@ -179,11 +179,11 @@ "Via “{folder}”" : "“{folder}” 経由", "Internal link" : "内部リンク", "Copy internal link to clipboard" : "内部リンクをクリップボードにコピー", - "Link copied" : "リンクをコピーしました", "Cannot copy, please copy the link manually" : "コピーできませんでした。手動でリンクをコピーしてください。", "Copy to clipboard" : "クリップボードにコピー", "Only works for users with access to this folder" : "このフォルダーにアクセスできるユーザーにのみ機能します", "Only works for users with access to this file" : "このファイルへのアクセス権を持つユーザーに対してのみ機能します", + "Link copied" : "リンクをコピーしました", "Copy public link to clipboard" : "公開リンクをクリップボードにコピー", "Please enter the following required information before creating the share" : "共有を作成する前に、次の必要な情報を入力してください", "Password protection (enforced)" : "パスワード保護(強制)", diff --git a/apps/files_sharing/l10n/ko.js b/apps/files_sharing/l10n/ko.js index 0feb9c757ea..f3c6a97ef0e 100644 --- a/apps/files_sharing/l10n/ko.js +++ b/apps/files_sharing/l10n/ko.js @@ -142,9 +142,9 @@ OC.L10N.register( "remote group" : "원격 그룹", "guest" : "손님", "Internal link" : "내부 링크", - "Link copied" : "링크 복사됨", "Copy to clipboard" : "클립보드로 복사", "Only works for users with access to this folder" : "이 폴더에 액세스하는 사용자에게만 해당됩니다.", + "Link copied" : "링크 복사됨", "Password protection" : "암호 보호", "Enter a password" : "Enter a password", "Cancel" : "취소", diff --git a/apps/files_sharing/l10n/ko.json b/apps/files_sharing/l10n/ko.json index cb49a13a46c..d899af4fa6b 100644 --- a/apps/files_sharing/l10n/ko.json +++ b/apps/files_sharing/l10n/ko.json @@ -140,9 +140,9 @@ "remote group" : "원격 그룹", "guest" : "손님", "Internal link" : "내부 링크", - "Link copied" : "링크 복사됨", "Copy to clipboard" : "클립보드로 복사", "Only works for users with access to this folder" : "이 폴더에 액세스하는 사용자에게만 해당됩니다.", + "Link copied" : "링크 복사됨", "Password protection" : "암호 보호", "Enter a password" : "Enter a password", "Cancel" : "취소", diff --git a/apps/files_sharing/l10n/lt_LT.js b/apps/files_sharing/l10n/lt_LT.js index bae45f05cbc..bff3f86485e 100644 --- a/apps/files_sharing/l10n/lt_LT.js +++ b/apps/files_sharing/l10n/lt_LT.js @@ -173,11 +173,11 @@ OC.L10N.register( "Via “{folder}”" : "Per \"{folder}\"", "Internal link" : "Vidinė nuoroda", "Copy internal link to clipboard" : "Kopijuoti vidinę nuorodą į iškarpinę", - "Link copied" : "Nuoroda nukopijuota", "Cannot copy, please copy the link manually" : "Nepavyksta nukopijuoti, nukopijuokite nuorodą rankiniu būdu", "Copy to clipboard" : "Kopijuoti į iškarpinę", "Only works for users with access to this folder" : "Veikia tik naudotojams, turintiems prieigą prie šio aplanko", "Only works for users with access to this file" : "Veikia tik naudotojams, turintiems prieigą prie šio failo", + "Link copied" : "Nuoroda nukopijuota", "Copy public link to clipboard" : "Kopijuoti viešąją nuorodą į iškarpinę", "Please enter the following required information before creating the share" : "Prieš sukurdami viešinį, įveskite šią reikiamą informaciją", "Password protection (enforced)" : "Apsauga slaptažodžiu (priverstinė)", diff --git a/apps/files_sharing/l10n/lt_LT.json b/apps/files_sharing/l10n/lt_LT.json index a7afd7572e9..1f1ed970317 100644 --- a/apps/files_sharing/l10n/lt_LT.json +++ b/apps/files_sharing/l10n/lt_LT.json @@ -171,11 +171,11 @@ "Via “{folder}”" : "Per \"{folder}\"", "Internal link" : "Vidinė nuoroda", "Copy internal link to clipboard" : "Kopijuoti vidinę nuorodą į iškarpinę", - "Link copied" : "Nuoroda nukopijuota", "Cannot copy, please copy the link manually" : "Nepavyksta nukopijuoti, nukopijuokite nuorodą rankiniu būdu", "Copy to clipboard" : "Kopijuoti į iškarpinę", "Only works for users with access to this folder" : "Veikia tik naudotojams, turintiems prieigą prie šio aplanko", "Only works for users with access to this file" : "Veikia tik naudotojams, turintiems prieigą prie šio failo", + "Link copied" : "Nuoroda nukopijuota", "Copy public link to clipboard" : "Kopijuoti viešąją nuorodą į iškarpinę", "Please enter the following required information before creating the share" : "Prieš sukurdami viešinį, įveskite šią reikiamą informaciją", "Password protection (enforced)" : "Apsauga slaptažodžiu (priverstinė)", diff --git a/apps/files_sharing/l10n/lv.js b/apps/files_sharing/l10n/lv.js index 6fbcaa68081..bc4f4bf2beb 100644 --- a/apps/files_sharing/l10n/lv.js +++ b/apps/files_sharing/l10n/lv.js @@ -154,9 +154,9 @@ OC.L10N.register( "remote" : "attālināti", "remote group" : "attālinātā grupa", "guest" : "viesis", - "Link copied" : "Saite nokopēta", "Copy to clipboard" : "Kopēt starpliktuvē", "Only works for users with access to this file" : "Darbojas tikai lietotājiem, kuriem ir piekļuve šai datnei", + "Link copied" : "Saite nokopēta", "Password protection" : "Password protection", "Enter a password" : "Enter a password", "Cancel" : "Atcelt", diff --git a/apps/files_sharing/l10n/lv.json b/apps/files_sharing/l10n/lv.json index 3efed7cf5eb..71a8ab406d0 100644 --- a/apps/files_sharing/l10n/lv.json +++ b/apps/files_sharing/l10n/lv.json @@ -152,9 +152,9 @@ "remote" : "attālināti", "remote group" : "attālinātā grupa", "guest" : "viesis", - "Link copied" : "Saite nokopēta", "Copy to clipboard" : "Kopēt starpliktuvē", "Only works for users with access to this file" : "Darbojas tikai lietotājiem, kuriem ir piekļuve šai datnei", + "Link copied" : "Saite nokopēta", "Password protection" : "Password protection", "Enter a password" : "Enter a password", "Cancel" : "Atcelt", diff --git a/apps/files_sharing/l10n/mk.js b/apps/files_sharing/l10n/mk.js index f6974608a13..2d8da57113e 100644 --- a/apps/files_sharing/l10n/mk.js +++ b/apps/files_sharing/l10n/mk.js @@ -181,11 +181,11 @@ OC.L10N.register( "Via “{folder}”" : "Преку “{folder}”", "Internal link" : "Внатрешен линк", "Copy internal link to clipboard" : "Копирај внатрешен линк во клипборд", - "Link copied" : "Линкот е копиран", "Cannot copy, please copy the link manually" : "Неможе да се копира, копирајте го линкот рачно", "Copy to clipboard" : "Копирај во клипборд", "Only works for users with access to this folder" : "Функционира само за корисници со пристап до оваа папка", "Only works for users with access to this file" : "Функционира само за корисници со пристап до оваа датотека", + "Link copied" : "Линкот е копиран", "Copy public link to clipboard" : "Копирај јавен линк во клипборд", "Please enter the following required information before creating the share" : "Внесете ги следниве потребни податоци пред да го креирате споделувањето", "Password protection (enforced)" : "Заштитено со лозинка (enforced)", @@ -210,6 +210,8 @@ OC.L10N.register( "Share link" : "Сподели линк", "Error, please enter proper password and/or expiration date" : "Грешка, внесете лозинка и/или рок на траење", "Error while creating the share" : "Грешка при креирање на споделување", + "Share label saved" : "Ознаката е зачувана", + "Share password saved" : "Лозинката е зачувана", "Search for share recipients" : "Пребарај за примачи на споделувањето", "No recommendations. Start typing." : "Нема препораки. Започнете со пишување.", "Resharing is not allowed" : "Повторно споделување не е дозволено", @@ -233,6 +235,9 @@ OC.L10N.register( "Error creating the share" : "Грешка при креирање на споделување", "Error updating the share: {errorMessage}" : "Грешка при ажурирање на споделувањето: {errorMessage}", "Error updating the share" : "Грешка при ажурирање на споделувањето", + "Share note saved" : "Забелешката е зачувана", + "File \"{path}\" has been unshared" : "Датотеката \"{path}\" повеќе не се споделува", + "Folder \"{path}\" has been unshared" : "Папката \"{path}\" повеќе не се споделува", "Shared" : "Споделен", "Share" : "Сподели", "Shared with" : "Споделено со", diff --git a/apps/files_sharing/l10n/mk.json b/apps/files_sharing/l10n/mk.json index 5da1a3cee11..81d2b5bf205 100644 --- a/apps/files_sharing/l10n/mk.json +++ b/apps/files_sharing/l10n/mk.json @@ -179,11 +179,11 @@ "Via “{folder}”" : "Преку “{folder}”", "Internal link" : "Внатрешен линк", "Copy internal link to clipboard" : "Копирај внатрешен линк во клипборд", - "Link copied" : "Линкот е копиран", "Cannot copy, please copy the link manually" : "Неможе да се копира, копирајте го линкот рачно", "Copy to clipboard" : "Копирај во клипборд", "Only works for users with access to this folder" : "Функционира само за корисници со пристап до оваа папка", "Only works for users with access to this file" : "Функционира само за корисници со пристап до оваа датотека", + "Link copied" : "Линкот е копиран", "Copy public link to clipboard" : "Копирај јавен линк во клипборд", "Please enter the following required information before creating the share" : "Внесете ги следниве потребни податоци пред да го креирате споделувањето", "Password protection (enforced)" : "Заштитено со лозинка (enforced)", @@ -208,6 +208,8 @@ "Share link" : "Сподели линк", "Error, please enter proper password and/or expiration date" : "Грешка, внесете лозинка и/или рок на траење", "Error while creating the share" : "Грешка при креирање на споделување", + "Share label saved" : "Ознаката е зачувана", + "Share password saved" : "Лозинката е зачувана", "Search for share recipients" : "Пребарај за примачи на споделувањето", "No recommendations. Start typing." : "Нема препораки. Започнете со пишување.", "Resharing is not allowed" : "Повторно споделување не е дозволено", @@ -231,6 +233,9 @@ "Error creating the share" : "Грешка при креирање на споделување", "Error updating the share: {errorMessage}" : "Грешка при ажурирање на споделувањето: {errorMessage}", "Error updating the share" : "Грешка при ажурирање на споделувањето", + "Share note saved" : "Забелешката е зачувана", + "File \"{path}\" has been unshared" : "Датотеката \"{path}\" повеќе не се споделува", + "Folder \"{path}\" has been unshared" : "Папката \"{path}\" повеќе не се споделува", "Shared" : "Споделен", "Share" : "Сподели", "Shared with" : "Споделено со", diff --git a/apps/files_sharing/l10n/nb.js b/apps/files_sharing/l10n/nb.js index 52debfb49ad..21e7246d74e 100644 --- a/apps/files_sharing/l10n/nb.js +++ b/apps/files_sharing/l10n/nb.js @@ -160,11 +160,11 @@ OC.L10N.register( "Added by {initiator}" : "Lagt til av {initiator}", "Via “{folder}”" : "Via “{folder}”", "Internal link" : "Intern lenke", - "Link copied" : "Lenke kopiert", "Cannot copy, please copy the link manually" : "Kan ikke kopiere, kopier lenken manuelt", "Copy to clipboard" : "Kopiert til utklippstavlen", "Only works for users with access to this folder" : "Virker kun for brukere med tilgang til mappen", "Only works for users with access to this file" : "Virker kun for brukere med tilgang til denne filen", + "Link copied" : "Lenke kopiert", "Password protection" : "Passordbeskyttelse", "Enter a password" : "Skriv inn et passord", "Create share" : "Opprett deling", diff --git a/apps/files_sharing/l10n/nb.json b/apps/files_sharing/l10n/nb.json index e9c80123409..9f7c35939e0 100644 --- a/apps/files_sharing/l10n/nb.json +++ b/apps/files_sharing/l10n/nb.json @@ -158,11 +158,11 @@ "Added by {initiator}" : "Lagt til av {initiator}", "Via “{folder}”" : "Via “{folder}”", "Internal link" : "Intern lenke", - "Link copied" : "Lenke kopiert", "Cannot copy, please copy the link manually" : "Kan ikke kopiere, kopier lenken manuelt", "Copy to clipboard" : "Kopiert til utklippstavlen", "Only works for users with access to this folder" : "Virker kun for brukere med tilgang til mappen", "Only works for users with access to this file" : "Virker kun for brukere med tilgang til denne filen", + "Link copied" : "Lenke kopiert", "Password protection" : "Passordbeskyttelse", "Enter a password" : "Skriv inn et passord", "Create share" : "Opprett deling", diff --git a/apps/files_sharing/l10n/nl.js b/apps/files_sharing/l10n/nl.js index ea8cb7b7fa5..3781fa3c0e3 100644 --- a/apps/files_sharing/l10n/nl.js +++ b/apps/files_sharing/l10n/nl.js @@ -174,11 +174,11 @@ OC.L10N.register( "Added by {initiator}" : "Toegevoegd door {initiator}", "Via “{folder}”" : "Via “{folder}”", "Internal link" : "Interne link", - "Link copied" : "Link gekopieerd", "Cannot copy, please copy the link manually" : "Kan niet kopiëren, kopieer de link handmatig", "Copy to clipboard" : "Kopiëren naar het klembord", "Only works for users with access to this folder" : "Dit werkt alleen voor gebruikers met toegang tot deze map", "Only works for users with access to this file" : "Dit werkt alleen voor gebruikers met toegang tot dit bestand", + "Link copied" : "Link gekopieerd", "Please enter the following required information before creating the share" : "Geef de volgend verplichte gegevens op voor het aanmaken van de deellink", "Password protection (enforced)" : "Wachtwoordbeveiliging (afgedwongen)", "Password protection" : "Wachtwoordbeveiliging", diff --git a/apps/files_sharing/l10n/nl.json b/apps/files_sharing/l10n/nl.json index 1ce4b3a2568..70709f40e00 100644 --- a/apps/files_sharing/l10n/nl.json +++ b/apps/files_sharing/l10n/nl.json @@ -172,11 +172,11 @@ "Added by {initiator}" : "Toegevoegd door {initiator}", "Via “{folder}”" : "Via “{folder}”", "Internal link" : "Interne link", - "Link copied" : "Link gekopieerd", "Cannot copy, please copy the link manually" : "Kan niet kopiëren, kopieer de link handmatig", "Copy to clipboard" : "Kopiëren naar het klembord", "Only works for users with access to this folder" : "Dit werkt alleen voor gebruikers met toegang tot deze map", "Only works for users with access to this file" : "Dit werkt alleen voor gebruikers met toegang tot dit bestand", + "Link copied" : "Link gekopieerd", "Please enter the following required information before creating the share" : "Geef de volgend verplichte gegevens op voor het aanmaken van de deellink", "Password protection (enforced)" : "Wachtwoordbeveiliging (afgedwongen)", "Password protection" : "Wachtwoordbeveiliging", diff --git a/apps/files_sharing/l10n/pl.js b/apps/files_sharing/l10n/pl.js index 2f2c3ec6daa..b9f4ea36000 100644 --- a/apps/files_sharing/l10n/pl.js +++ b/apps/files_sharing/l10n/pl.js @@ -181,11 +181,11 @@ OC.L10N.register( "Via “{folder}”" : "Przez “{folder}”", "Internal link" : "Link wewnętrzny", "Copy internal link to clipboard" : "Kopiuj link wewnętrzny do schowka", - "Link copied" : "Link skopiowany", "Cannot copy, please copy the link manually" : "Nie można skopiować, spróbuj skopiować link ręcznie", "Copy to clipboard" : "Kopiuj do schowka", "Only works for users with access to this folder" : "Działa tylko dla użytkowników mającym dostęp do tego katalogu", "Only works for users with access to this file" : "Działa tylko dla użytkowników mającym dostęp do tego pliku", + "Link copied" : "Link skopiowany", "Copy public link to clipboard" : "Kopiuj link publiczny do schowka", "Please enter the following required information before creating the share" : "Wprowadź następujące wymagane informacje przed udzieleniem dostępu", "Password protection (enforced)" : "Ochrona hasłem (wymuszona)", diff --git a/apps/files_sharing/l10n/pl.json b/apps/files_sharing/l10n/pl.json index 1adf0109869..11fbca60248 100644 --- a/apps/files_sharing/l10n/pl.json +++ b/apps/files_sharing/l10n/pl.json @@ -179,11 +179,11 @@ "Via “{folder}”" : "Przez “{folder}”", "Internal link" : "Link wewnętrzny", "Copy internal link to clipboard" : "Kopiuj link wewnętrzny do schowka", - "Link copied" : "Link skopiowany", "Cannot copy, please copy the link manually" : "Nie można skopiować, spróbuj skopiować link ręcznie", "Copy to clipboard" : "Kopiuj do schowka", "Only works for users with access to this folder" : "Działa tylko dla użytkowników mającym dostęp do tego katalogu", "Only works for users with access to this file" : "Działa tylko dla użytkowników mającym dostęp do tego pliku", + "Link copied" : "Link skopiowany", "Copy public link to clipboard" : "Kopiuj link publiczny do schowka", "Please enter the following required information before creating the share" : "Wprowadź następujące wymagane informacje przed udzieleniem dostępu", "Password protection (enforced)" : "Ochrona hasłem (wymuszona)", diff --git a/apps/files_sharing/l10n/pt_BR.js b/apps/files_sharing/l10n/pt_BR.js index 69dc5c70110..ce211d82a76 100644 --- a/apps/files_sharing/l10n/pt_BR.js +++ b/apps/files_sharing/l10n/pt_BR.js @@ -181,11 +181,11 @@ OC.L10N.register( "Via “{folder}”" : "Via “{folder}”", "Internal link" : "Link interno", "Copy internal link to clipboard" : "Copie o link interno para a área de transferência", - "Link copied" : "Link copiado", "Cannot copy, please copy the link manually" : "Não é possível copiar, copie o link manualmente", "Copy to clipboard" : "Copiar para a área de transferência", "Only works for users with access to this folder" : "Funciona apenas para usuários com acesso a esta pasta", "Only works for users with access to this file" : "Funciona apenas para usuários com acesso a este arquivo", + "Link copied" : "Link copiado", "Copy public link to clipboard" : "Copie o link público para a área de transferência", "Please enter the following required information before creating the share" : "Digite as seguintes informações necessárias antes de criar o compartilhamento", "Password protection (enforced)" : "Proteção por senha (imposta)", diff --git a/apps/files_sharing/l10n/pt_BR.json b/apps/files_sharing/l10n/pt_BR.json index 4543f9e76ac..43d9d657e17 100644 --- a/apps/files_sharing/l10n/pt_BR.json +++ b/apps/files_sharing/l10n/pt_BR.json @@ -179,11 +179,11 @@ "Via “{folder}”" : "Via “{folder}”", "Internal link" : "Link interno", "Copy internal link to clipboard" : "Copie o link interno para a área de transferência", - "Link copied" : "Link copiado", "Cannot copy, please copy the link manually" : "Não é possível copiar, copie o link manualmente", "Copy to clipboard" : "Copiar para a área de transferência", "Only works for users with access to this folder" : "Funciona apenas para usuários com acesso a esta pasta", "Only works for users with access to this file" : "Funciona apenas para usuários com acesso a este arquivo", + "Link copied" : "Link copiado", "Copy public link to clipboard" : "Copie o link público para a área de transferência", "Please enter the following required information before creating the share" : "Digite as seguintes informações necessárias antes de criar o compartilhamento", "Password protection (enforced)" : "Proteção por senha (imposta)", diff --git a/apps/files_sharing/l10n/pt_PT.js b/apps/files_sharing/l10n/pt_PT.js index 0e5087d688a..b989a3fb05d 100644 --- a/apps/files_sharing/l10n/pt_PT.js +++ b/apps/files_sharing/l10n/pt_PT.js @@ -115,10 +115,10 @@ OC.L10N.register( "remote" : "remoto", "remote group" : "grupo remoto", "guest" : "convidado", - "Link copied" : "Link copiado", "Cannot copy, please copy the link manually" : "Não foi possível copiar, copie a ligação manualmente", "Copy to clipboard" : "Copiar para área de transferência", "Only works for users with access to this folder" : "Apenas funciona para utilizadores com acesso a esta pasta", + "Link copied" : "Link copiado", "Password protection" : "Protegido por palavra-passe", "Enter a password" : "Insira uma palavra-passe", "Cancel" : "Cancelar", diff --git a/apps/files_sharing/l10n/pt_PT.json b/apps/files_sharing/l10n/pt_PT.json index c8029706cfc..0a095a69e5c 100644 --- a/apps/files_sharing/l10n/pt_PT.json +++ b/apps/files_sharing/l10n/pt_PT.json @@ -113,10 +113,10 @@ "remote" : "remoto", "remote group" : "grupo remoto", "guest" : "convidado", - "Link copied" : "Link copiado", "Cannot copy, please copy the link manually" : "Não foi possível copiar, copie a ligação manualmente", "Copy to clipboard" : "Copiar para área de transferência", "Only works for users with access to this folder" : "Apenas funciona para utilizadores com acesso a esta pasta", + "Link copied" : "Link copiado", "Password protection" : "Protegido por palavra-passe", "Enter a password" : "Insira uma palavra-passe", "Cancel" : "Cancelar", diff --git a/apps/files_sharing/l10n/ru.js b/apps/files_sharing/l10n/ru.js index d9ce361cafa..09297a562d1 100644 --- a/apps/files_sharing/l10n/ru.js +++ b/apps/files_sharing/l10n/ru.js @@ -181,11 +181,11 @@ OC.L10N.register( "Via “{folder}”" : "Через «{folder}»", "Internal link" : "Внутренняя ссылка", "Copy internal link to clipboard" : "Скопировать внутреннюю ссылку в буфер обмена", - "Link copied" : "Ссылка скопирована", "Cannot copy, please copy the link manually" : "Не удалось скопировать, выполните копирование вручную", "Copy to clipboard" : "Копировать в буфер обмена", "Only works for users with access to this folder" : "Только для пользователей с доступом к этой папке", "Only works for users with access to this file" : "Только для пользователей с доступом к этому файлу", + "Link copied" : "Ссылка скопирована", "Copy public link to clipboard" : "Скопировать общедоступную ссылку в буфер обмена", "Please enter the following required information before creating the share" : "Для создания общего ресурса требуется указать следующие данные", "Password protection (enforced)" : "Защита паролем (требуется системной)", diff --git a/apps/files_sharing/l10n/ru.json b/apps/files_sharing/l10n/ru.json index 6bf2e20ce8a..e5f677dcaec 100644 --- a/apps/files_sharing/l10n/ru.json +++ b/apps/files_sharing/l10n/ru.json @@ -179,11 +179,11 @@ "Via “{folder}”" : "Через «{folder}»", "Internal link" : "Внутренняя ссылка", "Copy internal link to clipboard" : "Скопировать внутреннюю ссылку в буфер обмена", - "Link copied" : "Ссылка скопирована", "Cannot copy, please copy the link manually" : "Не удалось скопировать, выполните копирование вручную", "Copy to clipboard" : "Копировать в буфер обмена", "Only works for users with access to this folder" : "Только для пользователей с доступом к этой папке", "Only works for users with access to this file" : "Только для пользователей с доступом к этому файлу", + "Link copied" : "Ссылка скопирована", "Copy public link to clipboard" : "Скопировать общедоступную ссылку в буфер обмена", "Please enter the following required information before creating the share" : "Для создания общего ресурса требуется указать следующие данные", "Password protection (enforced)" : "Защита паролем (требуется системной)", diff --git a/apps/files_sharing/l10n/sc.js b/apps/files_sharing/l10n/sc.js index 4234840ac17..afeb4fbe210 100644 --- a/apps/files_sharing/l10n/sc.js +++ b/apps/files_sharing/l10n/sc.js @@ -167,11 +167,11 @@ OC.L10N.register( "Added by {initiator}" : "Agiuntu dae {initiator}", "Via “{folder}”" : "Tràmite “{folder}”", "Internal link" : "Ligòngiu internu", - "Link copied" : "Ligòngiu copiadu", "Cannot copy, please copy the link manually" : "No at fatu a copiare, copia su ligòngiu a manu", "Copy to clipboard" : "Còpia in punta de billete", "Only works for users with access to this folder" : "Funtzionat isceti pro utentes cun atzessu a custa cartella", "Only works for users with access to this file" : "Funtzionat isceti pro utentes cun atzessu a custu archìviu", + "Link copied" : "Ligòngiu copiadu", "Please enter the following required information before creating the share" : "Inserta is informatziones rechertas in fatu in antis de creare sa cumpartzidura", "Password protection (enforced)" : "Bardiadura cun crae (posta)", "Password protection" : "Bardiadura cun crae", diff --git a/apps/files_sharing/l10n/sc.json b/apps/files_sharing/l10n/sc.json index cc6098d242e..4512435de9f 100644 --- a/apps/files_sharing/l10n/sc.json +++ b/apps/files_sharing/l10n/sc.json @@ -165,11 +165,11 @@ "Added by {initiator}" : "Agiuntu dae {initiator}", "Via “{folder}”" : "Tràmite “{folder}”", "Internal link" : "Ligòngiu internu", - "Link copied" : "Ligòngiu copiadu", "Cannot copy, please copy the link manually" : "No at fatu a copiare, copia su ligòngiu a manu", "Copy to clipboard" : "Còpia in punta de billete", "Only works for users with access to this folder" : "Funtzionat isceti pro utentes cun atzessu a custa cartella", "Only works for users with access to this file" : "Funtzionat isceti pro utentes cun atzessu a custu archìviu", + "Link copied" : "Ligòngiu copiadu", "Please enter the following required information before creating the share" : "Inserta is informatziones rechertas in fatu in antis de creare sa cumpartzidura", "Password protection (enforced)" : "Bardiadura cun crae (posta)", "Password protection" : "Bardiadura cun crae", diff --git a/apps/files_sharing/l10n/sk.js b/apps/files_sharing/l10n/sk.js index 3cb3b776025..5a8f5ba1be3 100644 --- a/apps/files_sharing/l10n/sk.js +++ b/apps/files_sharing/l10n/sk.js @@ -181,11 +181,11 @@ OC.L10N.register( "Via “{folder}”" : "Prostredníctvom „{folder}“", "Internal link" : "Interný odkaz", "Copy internal link to clipboard" : "Skopírovať interný odkaz do schránky", - "Link copied" : "Odkaz skopírovaný", "Cannot copy, please copy the link manually" : "Nedarí sa skopírovať, skopírujte prosím ručne.", "Copy to clipboard" : "Skopírovať do schránky", "Only works for users with access to this folder" : "Funguje len pre používateľov s prístupom k tomuto priečinku", "Only works for users with access to this file" : "Funguje iba pre pužívateľov, ktorí majú prístup k tomuto súboru", + "Link copied" : "Odkaz skopírovaný", "Copy public link to clipboard" : "Skopírovať verejný odkaz do schránky", "Please enter the following required information before creating the share" : "Pred vytvorením zdieľania zadajte následujúce potrebné informácie", "Password protection (enforced)" : "Ochrana heslom (vynúttená)", diff --git a/apps/files_sharing/l10n/sk.json b/apps/files_sharing/l10n/sk.json index 994e3fe6d50..48e8a2bce99 100644 --- a/apps/files_sharing/l10n/sk.json +++ b/apps/files_sharing/l10n/sk.json @@ -179,11 +179,11 @@ "Via “{folder}”" : "Prostredníctvom „{folder}“", "Internal link" : "Interný odkaz", "Copy internal link to clipboard" : "Skopírovať interný odkaz do schránky", - "Link copied" : "Odkaz skopírovaný", "Cannot copy, please copy the link manually" : "Nedarí sa skopírovať, skopírujte prosím ručne.", "Copy to clipboard" : "Skopírovať do schránky", "Only works for users with access to this folder" : "Funguje len pre používateľov s prístupom k tomuto priečinku", "Only works for users with access to this file" : "Funguje iba pre pužívateľov, ktorí majú prístup k tomuto súboru", + "Link copied" : "Odkaz skopírovaný", "Copy public link to clipboard" : "Skopírovať verejný odkaz do schránky", "Please enter the following required information before creating the share" : "Pred vytvorením zdieľania zadajte následujúce potrebné informácie", "Password protection (enforced)" : "Ochrana heslom (vynúttená)", diff --git a/apps/files_sharing/l10n/sl.js b/apps/files_sharing/l10n/sl.js index 227c42778ff..bcd77f86faa 100644 --- a/apps/files_sharing/l10n/sl.js +++ b/apps/files_sharing/l10n/sl.js @@ -170,11 +170,11 @@ OC.L10N.register( "Added by {initiator}" : "Dodano: {initiator}", "Via “{folder}”" : "Prek mape »{folder}«", "Internal link" : "Notranja povezava", - "Link copied" : "Povezava je kopirana", "Cannot copy, please copy the link manually" : "Povezave ni mogoče kopirati. Storite to ročno.", "Copy to clipboard" : "Kopiraj v odložišče", "Only works for users with access to this folder" : "Možnost deluje le za uporabnike, ki imajo dostop do te mape", "Only works for users with access to this file" : "Deluje le za uporabnike z dostopom do te datoteke", + "Link copied" : "Povezava je kopirana", "Please enter the following required information before creating the share" : "Vpisati je treba nekatere podrobnosti, preden je mogoče ustvariti mesto souporabe", "Password protection (enforced)" : "Zaščita z geslom (vsiljena)", "Password protection" : "Zaščita z geslom", diff --git a/apps/files_sharing/l10n/sl.json b/apps/files_sharing/l10n/sl.json index f319c7a6746..e0c17eb9399 100644 --- a/apps/files_sharing/l10n/sl.json +++ b/apps/files_sharing/l10n/sl.json @@ -168,11 +168,11 @@ "Added by {initiator}" : "Dodano: {initiator}", "Via “{folder}”" : "Prek mape »{folder}«", "Internal link" : "Notranja povezava", - "Link copied" : "Povezava je kopirana", "Cannot copy, please copy the link manually" : "Povezave ni mogoče kopirati. Storite to ročno.", "Copy to clipboard" : "Kopiraj v odložišče", "Only works for users with access to this folder" : "Možnost deluje le za uporabnike, ki imajo dostop do te mape", "Only works for users with access to this file" : "Deluje le za uporabnike z dostopom do te datoteke", + "Link copied" : "Povezava je kopirana", "Please enter the following required information before creating the share" : "Vpisati je treba nekatere podrobnosti, preden je mogoče ustvariti mesto souporabe", "Password protection (enforced)" : "Zaščita z geslom (vsiljena)", "Password protection" : "Zaščita z geslom", diff --git a/apps/files_sharing/l10n/sq.js b/apps/files_sharing/l10n/sq.js index 8029b32d6b2..c1a8d7688e3 100644 --- a/apps/files_sharing/l10n/sq.js +++ b/apps/files_sharing/l10n/sq.js @@ -108,9 +108,9 @@ OC.L10N.register( "conversation" : "bisedë", "remote" : "i largët", "guest" : "vizitor", - "Link copied" : "Linku u kopjua", "Copy to clipboard" : "Kopjo në dërrasë ", "Only works for users with access to this folder" : "Punon vetëm për përdoruesit që kanë qasje në këtë dosje", + "Link copied" : "Linku u kopjua", "Password protection" : "Password protection", "Enter a password" : "Fusni një fjalëkalim", "Cancel" : "Anullo", diff --git a/apps/files_sharing/l10n/sq.json b/apps/files_sharing/l10n/sq.json index aea19675972..f013ab858ae 100644 --- a/apps/files_sharing/l10n/sq.json +++ b/apps/files_sharing/l10n/sq.json @@ -106,9 +106,9 @@ "conversation" : "bisedë", "remote" : "i largët", "guest" : "vizitor", - "Link copied" : "Linku u kopjua", "Copy to clipboard" : "Kopjo në dërrasë ", "Only works for users with access to this folder" : "Punon vetëm për përdoruesit që kanë qasje në këtë dosje", + "Link copied" : "Linku u kopjua", "Password protection" : "Password protection", "Enter a password" : "Fusni një fjalëkalim", "Cancel" : "Anullo", diff --git a/apps/files_sharing/l10n/sr.js b/apps/files_sharing/l10n/sr.js index 8694ecdf959..02e4720060a 100644 --- a/apps/files_sharing/l10n/sr.js +++ b/apps/files_sharing/l10n/sr.js @@ -179,11 +179,11 @@ OC.L10N.register( "Added by {initiator}" : "Додао {initiator}", "Via “{folder}”" : "Преко „{folder}“", "Internal link" : "Интерна веза", - "Link copied" : "Веза ископирана", "Cannot copy, please copy the link manually" : "Не могу да копирам, копирајте везу ручно", "Copy to clipboard" : "Копирај у оставу", "Only works for users with access to this folder" : "Радиће само за кориснике са приступом овој фасцикли", "Only works for users with access to this file" : "Радиће само за кориснике са приступом овом фајлу", + "Link copied" : "Веза ископирана", "Please enter the following required information before creating the share" : "Молимо унесите ове неопходне информације пре креирања дељења", "Password protection (enforced)" : "Захтевана заштита лозинком", "Password protection" : "Заштита лозинком", diff --git a/apps/files_sharing/l10n/sr.json b/apps/files_sharing/l10n/sr.json index 77cefae54de..e6c88d7ce9d 100644 --- a/apps/files_sharing/l10n/sr.json +++ b/apps/files_sharing/l10n/sr.json @@ -177,11 +177,11 @@ "Added by {initiator}" : "Додао {initiator}", "Via “{folder}”" : "Преко „{folder}“", "Internal link" : "Интерна веза", - "Link copied" : "Веза ископирана", "Cannot copy, please copy the link manually" : "Не могу да копирам, копирајте везу ручно", "Copy to clipboard" : "Копирај у оставу", "Only works for users with access to this folder" : "Радиће само за кориснике са приступом овој фасцикли", "Only works for users with access to this file" : "Радиће само за кориснике са приступом овом фајлу", + "Link copied" : "Веза ископирана", "Please enter the following required information before creating the share" : "Молимо унесите ове неопходне информације пре креирања дељења", "Password protection (enforced)" : "Захтевана заштита лозинком", "Password protection" : "Заштита лозинком", diff --git a/apps/files_sharing/l10n/sv.js b/apps/files_sharing/l10n/sv.js index 741a157e708..020eb326cbf 100644 --- a/apps/files_sharing/l10n/sv.js +++ b/apps/files_sharing/l10n/sv.js @@ -181,11 +181,11 @@ OC.L10N.register( "Via “{folder}”" : "Via “{folder}”", "Internal link" : "Intern länk", "Copy internal link to clipboard" : "Kopiera intern länk till urklipp", - "Link copied" : "Länk kopierad", "Cannot copy, please copy the link manually" : "Kan inte kopiera, länken måste kopieras manuellt", "Copy to clipboard" : "Kopiera till urklipp", "Only works for users with access to this folder" : "Fungerar bara för användare med åtkomst till den här mappen", "Only works for users with access to this file" : "Fungerar bara för användare med åtkomst till den här mappen", + "Link copied" : "Länk kopierad", "Copy public link to clipboard" : "Kopiera publik länk till urklipp", "Please enter the following required information before creating the share" : "Ange följande obligatorisk information innan du skapar delningen", "Password protection (enforced)" : "Lösenordsskydd (obligatorisk)", diff --git a/apps/files_sharing/l10n/sv.json b/apps/files_sharing/l10n/sv.json index caee4541ea7..304dbe070ec 100644 --- a/apps/files_sharing/l10n/sv.json +++ b/apps/files_sharing/l10n/sv.json @@ -179,11 +179,11 @@ "Via “{folder}”" : "Via “{folder}”", "Internal link" : "Intern länk", "Copy internal link to clipboard" : "Kopiera intern länk till urklipp", - "Link copied" : "Länk kopierad", "Cannot copy, please copy the link manually" : "Kan inte kopiera, länken måste kopieras manuellt", "Copy to clipboard" : "Kopiera till urklipp", "Only works for users with access to this folder" : "Fungerar bara för användare med åtkomst till den här mappen", "Only works for users with access to this file" : "Fungerar bara för användare med åtkomst till den här mappen", + "Link copied" : "Länk kopierad", "Copy public link to clipboard" : "Kopiera publik länk till urklipp", "Please enter the following required information before creating the share" : "Ange följande obligatorisk information innan du skapar delningen", "Password protection (enforced)" : "Lösenordsskydd (obligatorisk)", diff --git a/apps/files_sharing/l10n/tr.js b/apps/files_sharing/l10n/tr.js index 0bf21796e49..7d96467c700 100644 --- a/apps/files_sharing/l10n/tr.js +++ b/apps/files_sharing/l10n/tr.js @@ -181,11 +181,11 @@ OC.L10N.register( "Via “{folder}”" : "“{folder}” ile", "Internal link" : "İç bağlantı", "Copy internal link to clipboard" : "İç bağlantıyı panoya kopyala", - "Link copied" : "Bağlantı kopyalandı", "Cannot copy, please copy the link manually" : "Kopyalanamadı. Lütfen bağlantıyı el ile kopyalayın", "Copy to clipboard" : "Panoya kopyala", "Only works for users with access to this folder" : "Yalnızca bu klasöre erişebilen kullanıcılar için geçerlidir", "Only works for users with access to this file" : "Yalnızca bu dosyaya erişebilen kullanıcılar için geçerlidir", + "Link copied" : "Bağlantı kopyalandı", "Copy public link to clipboard" : "Herkese açık bağlantıyı panoya kopyala", "Please enter the following required information before creating the share" : "Lütfen paylaşımı oluşturmadan önce aşağıdaki zorunlu bilgileri yazın", "Password protection (enforced)" : "Parola koruması (dayatılmış)", diff --git a/apps/files_sharing/l10n/tr.json b/apps/files_sharing/l10n/tr.json index 3b6f74d4a55..6f15b269046 100644 --- a/apps/files_sharing/l10n/tr.json +++ b/apps/files_sharing/l10n/tr.json @@ -179,11 +179,11 @@ "Via “{folder}”" : "“{folder}” ile", "Internal link" : "İç bağlantı", "Copy internal link to clipboard" : "İç bağlantıyı panoya kopyala", - "Link copied" : "Bağlantı kopyalandı", "Cannot copy, please copy the link manually" : "Kopyalanamadı. Lütfen bağlantıyı el ile kopyalayın", "Copy to clipboard" : "Panoya kopyala", "Only works for users with access to this folder" : "Yalnızca bu klasöre erişebilen kullanıcılar için geçerlidir", "Only works for users with access to this file" : "Yalnızca bu dosyaya erişebilen kullanıcılar için geçerlidir", + "Link copied" : "Bağlantı kopyalandı", "Copy public link to clipboard" : "Herkese açık bağlantıyı panoya kopyala", "Please enter the following required information before creating the share" : "Lütfen paylaşımı oluşturmadan önce aşağıdaki zorunlu bilgileri yazın", "Password protection (enforced)" : "Parola koruması (dayatılmış)", diff --git a/apps/files_sharing/l10n/uk.js b/apps/files_sharing/l10n/uk.js index 35ace02c721..af720685307 100644 --- a/apps/files_sharing/l10n/uk.js +++ b/apps/files_sharing/l10n/uk.js @@ -181,11 +181,11 @@ OC.L10N.register( "Via “{folder}”" : "Через “{folder}”", "Internal link" : "Внутрішнє посилання", "Copy internal link to clipboard" : "Копіювати внутрішнє посилання до буферу обміну", - "Link copied" : "Посилання скопійовано", "Cannot copy, please copy the link manually" : "Неможливо скопіювати, скопіюйте посилання вручну", "Copy to clipboard" : "Скопіювати до буферу обміну ", "Only works for users with access to this folder" : "Стосується користувачів, які мають доступ до цього каталогу", "Only works for users with access to this file" : "Стосується користувачів, які мають доступ до цього файлу", + "Link copied" : "Посилання скопійовано", "Copy public link to clipboard" : "Копіювати загальнодоступне посилання до буферу обміну", "Please enter the following required information before creating the share" : "Будь ласка, введіть таку інформацію перед наданням спільного доступу", "Password protection (enforced)" : "Захист паролем (обов'язково)", diff --git a/apps/files_sharing/l10n/uk.json b/apps/files_sharing/l10n/uk.json index 553780930da..0b7d94f308e 100644 --- a/apps/files_sharing/l10n/uk.json +++ b/apps/files_sharing/l10n/uk.json @@ -179,11 +179,11 @@ "Via “{folder}”" : "Через “{folder}”", "Internal link" : "Внутрішнє посилання", "Copy internal link to clipboard" : "Копіювати внутрішнє посилання до буферу обміну", - "Link copied" : "Посилання скопійовано", "Cannot copy, please copy the link manually" : "Неможливо скопіювати, скопіюйте посилання вручну", "Copy to clipboard" : "Скопіювати до буферу обміну ", "Only works for users with access to this folder" : "Стосується користувачів, які мають доступ до цього каталогу", "Only works for users with access to this file" : "Стосується користувачів, які мають доступ до цього файлу", + "Link copied" : "Посилання скопійовано", "Copy public link to clipboard" : "Копіювати загальнодоступне посилання до буферу обміну", "Please enter the following required information before creating the share" : "Будь ласка, введіть таку інформацію перед наданням спільного доступу", "Password protection (enforced)" : "Захист паролем (обов'язково)", diff --git a/apps/files_sharing/l10n/zh_CN.js b/apps/files_sharing/l10n/zh_CN.js index eb71986a378..11ca4520134 100644 --- a/apps/files_sharing/l10n/zh_CN.js +++ b/apps/files_sharing/l10n/zh_CN.js @@ -181,11 +181,11 @@ OC.L10N.register( "Via “{folder}”" : "通过 “{folder}”", "Internal link" : "内部链接", "Copy internal link to clipboard" : "复制内部链接到剪贴板", - "Link copied" : "已复制链接", "Cannot copy, please copy the link manually" : "无法复制,请手动复制链接", "Copy to clipboard" : "复制到剪贴板", "Only works for users with access to this folder" : "仅适用于有权限访问此文件夹的用户", "Only works for users with access to this file" : "仅适用于有权限访问此文件的用户", + "Link copied" : "已复制链接", "Copy public link to clipboard" : "复制公开链接到剪贴板", "Please enter the following required information before creating the share" : "请在创建共享前输入以下必填信息", "Password protection (enforced)" : "密码保护(强制)", diff --git a/apps/files_sharing/l10n/zh_CN.json b/apps/files_sharing/l10n/zh_CN.json index c9848de3a75..8bea8e318ba 100644 --- a/apps/files_sharing/l10n/zh_CN.json +++ b/apps/files_sharing/l10n/zh_CN.json @@ -179,11 +179,11 @@ "Via “{folder}”" : "通过 “{folder}”", "Internal link" : "内部链接", "Copy internal link to clipboard" : "复制内部链接到剪贴板", - "Link copied" : "已复制链接", "Cannot copy, please copy the link manually" : "无法复制,请手动复制链接", "Copy to clipboard" : "复制到剪贴板", "Only works for users with access to this folder" : "仅适用于有权限访问此文件夹的用户", "Only works for users with access to this file" : "仅适用于有权限访问此文件的用户", + "Link copied" : "已复制链接", "Copy public link to clipboard" : "复制公开链接到剪贴板", "Please enter the following required information before creating the share" : "请在创建共享前输入以下必填信息", "Password protection (enforced)" : "密码保护(强制)", diff --git a/apps/files_sharing/l10n/zh_HK.js b/apps/files_sharing/l10n/zh_HK.js index cb1f2e67bdc..3a1a9fe983a 100644 --- a/apps/files_sharing/l10n/zh_HK.js +++ b/apps/files_sharing/l10n/zh_HK.js @@ -181,11 +181,11 @@ OC.L10N.register( "Via “{folder}”" : "透過 “{folder}”", "Internal link" : "內部連結", "Copy internal link to clipboard" : "將內部連結複製到剪貼板", - "Link copied" : "連結已複製", "Cannot copy, please copy the link manually" : "無法複製,請手動複製連結", "Copy to clipboard" : "複製到剪貼板", "Only works for users with access to this folder" : "只對可以存取此資料夾的用戶生效", "Only works for users with access to this file" : "僅適用於有權存取此檔案的用戶", + "Link copied" : "連結已複製", "Copy public link to clipboard" : "將公共連結複製到剪貼簿", "Please enter the following required information before creating the share" : "創建分享之前,請輸入以下必填信息", "Password protection (enforced)" : "密碼保護(強制)", diff --git a/apps/files_sharing/l10n/zh_HK.json b/apps/files_sharing/l10n/zh_HK.json index 7095da690a9..ac6bd603ee8 100644 --- a/apps/files_sharing/l10n/zh_HK.json +++ b/apps/files_sharing/l10n/zh_HK.json @@ -179,11 +179,11 @@ "Via “{folder}”" : "透過 “{folder}”", "Internal link" : "內部連結", "Copy internal link to clipboard" : "將內部連結複製到剪貼板", - "Link copied" : "連結已複製", "Cannot copy, please copy the link manually" : "無法複製,請手動複製連結", "Copy to clipboard" : "複製到剪貼板", "Only works for users with access to this folder" : "只對可以存取此資料夾的用戶生效", "Only works for users with access to this file" : "僅適用於有權存取此檔案的用戶", + "Link copied" : "連結已複製", "Copy public link to clipboard" : "將公共連結複製到剪貼簿", "Please enter the following required information before creating the share" : "創建分享之前,請輸入以下必填信息", "Password protection (enforced)" : "密碼保護(強制)", diff --git a/apps/files_sharing/l10n/zh_TW.js b/apps/files_sharing/l10n/zh_TW.js index 5acba38cb43..45940677195 100644 --- a/apps/files_sharing/l10n/zh_TW.js +++ b/apps/files_sharing/l10n/zh_TW.js @@ -181,11 +181,11 @@ OC.L10N.register( "Via “{folder}”" : "透過「{folder}」", "Internal link" : "內部連結", "Copy internal link to clipboard" : "複製內部連結至剪貼簿", - "Link copied" : "連結已複製", "Cannot copy, please copy the link manually" : "無法複製,請手動複製連結", "Copy to clipboard" : "複製到剪貼簿", "Only works for users with access to this folder" : "僅對可存取此資料夾的使用者有效", "Only works for users with access to this file" : "僅對可存取此檔案的使用者有效", + "Link copied" : "連結已複製", "Copy public link to clipboard" : "複製公開連結至剪貼簿", "Please enter the following required information before creating the share" : "在建立分享前,請輸入以下的必要資訊", "Password protection (enforced)" : "密碼保護(強制)", @@ -210,6 +210,8 @@ OC.L10N.register( "Share link" : "分享連結", "Error, please enter proper password and/or expiration date" : "錯誤,請輸入正確的密碼及/或到期日", "Error while creating the share" : "建立分享時發生錯誤", + "Share label saved" : "分享標籤已儲存", + "Share password saved" : "分享密碼已儲存", "Search for share recipients" : "搜尋分享參與者", "No recommendations. Start typing." : "沒有建議。開始輸入。", "Resharing is not allowed" : "不允許重新分享", @@ -233,6 +235,9 @@ OC.L10N.register( "Error creating the share" : "建立分享時發生錯誤", "Error updating the share: {errorMessage}" : "更新分享時發生錯誤:{errorMessage}", "Error updating the share" : "更新分享時發生錯誤:", + "Share note saved" : "分享筆記已儲存", + "File \"{path}\" has been unshared" : "檔案「{path}」已取消分享", + "Folder \"{path}\" has been unshared" : "資料夾「{path}」已取消分享", "Shared" : "已分享", "Share" : "分享", "Shared with" : "分享給", diff --git a/apps/files_sharing/l10n/zh_TW.json b/apps/files_sharing/l10n/zh_TW.json index a6c977ef7a5..5bfe447e240 100644 --- a/apps/files_sharing/l10n/zh_TW.json +++ b/apps/files_sharing/l10n/zh_TW.json @@ -179,11 +179,11 @@ "Via “{folder}”" : "透過「{folder}」", "Internal link" : "內部連結", "Copy internal link to clipboard" : "複製內部連結至剪貼簿", - "Link copied" : "連結已複製", "Cannot copy, please copy the link manually" : "無法複製,請手動複製連結", "Copy to clipboard" : "複製到剪貼簿", "Only works for users with access to this folder" : "僅對可存取此資料夾的使用者有效", "Only works for users with access to this file" : "僅對可存取此檔案的使用者有效", + "Link copied" : "連結已複製", "Copy public link to clipboard" : "複製公開連結至剪貼簿", "Please enter the following required information before creating the share" : "在建立分享前,請輸入以下的必要資訊", "Password protection (enforced)" : "密碼保護(強制)", @@ -208,6 +208,8 @@ "Share link" : "分享連結", "Error, please enter proper password and/or expiration date" : "錯誤,請輸入正確的密碼及/或到期日", "Error while creating the share" : "建立分享時發生錯誤", + "Share label saved" : "分享標籤已儲存", + "Share password saved" : "分享密碼已儲存", "Search for share recipients" : "搜尋分享參與者", "No recommendations. Start typing." : "沒有建議。開始輸入。", "Resharing is not allowed" : "不允許重新分享", @@ -231,6 +233,9 @@ "Error creating the share" : "建立分享時發生錯誤", "Error updating the share: {errorMessage}" : "更新分享時發生錯誤:{errorMessage}", "Error updating the share" : "更新分享時發生錯誤:", + "Share note saved" : "分享筆記已儲存", + "File \"{path}\" has been unshared" : "檔案「{path}」已取消分享", + "Folder \"{path}\" has been unshared" : "資料夾「{path}」已取消分享", "Shared" : "已分享", "Share" : "分享", "Shared with" : "分享給", diff --git a/apps/files_sharing/lib/SharedStorage.php b/apps/files_sharing/lib/SharedStorage.php index b5c0da9c442..2c1ddf9af4a 100644 --- a/apps/files_sharing/lib/SharedStorage.php +++ b/apps/files_sharing/lib/SharedStorage.php @@ -52,7 +52,6 @@ use OCP\Files\IRootFolder; use OCP\Files\NotFoundException; use OCP\Files\Storage\IDisableEncryptionStorage; use OCP\Files\Storage\IStorage; -use OCP\IUserManager; use OCP\Lock\ILockingProvider; use OCP\Share\IShare; @@ -60,7 +59,6 @@ use OCP\Share\IShare; * Convert target path to source path and pass the function call to the correct storage provider */ class SharedStorage extends \OC\Files\Storage\Wrapper\Jail implements ISharedStorage, IDisableEncryptionStorage { - /** @var \OCP\Share\IShare */ private $superShare; @@ -90,7 +88,7 @@ class SharedStorage extends \OC\Files\Storage\Wrapper\Jail implements ISharedSto /** @var IStorage */ private $nonMaskedStorage; - private $options; + private array $mountOptions = []; /** @var boolean */ private $sharingDisabledForUser; @@ -553,7 +551,11 @@ class SharedStorage extends \OC\Files\Storage\Wrapper\Jail implements ISharedSto return parent::file_put_contents($path, $data); } + /** + * @return void + */ public function setMountOptions(array $options) { + /* Note: This value is never read */ $this->mountOptions = $options; } diff --git a/apps/files_sharing/src/components/SharingEntryInternal.vue b/apps/files_sharing/src/components/SharingEntryInternal.vue index 9912648357c..7ad5b35c49f 100644 --- a/apps/files_sharing/src/components/SharingEntryInternal.vue +++ b/apps/files_sharing/src/components/SharingEntryInternal.vue @@ -23,6 +23,7 @@ <script> import { generateUrl } from '@nextcloud/router' +import { showSuccess } from '@nextcloud/dialogs' import { NcActionButton } from '@nextcloud/vue' import SharingEntrySimple from './SharingEntrySimple' @@ -71,9 +72,10 @@ export default { */ clipboardTooltip() { if (this.copied) { - return this.copySuccess - ? t('files_sharing', 'Link copied') - : t('files_sharing', 'Cannot copy, please copy the link manually') + if (this.copySuccess) { + return '' + } + return t('files_sharing', 'Cannot copy, please copy the link manually') } return t('files_sharing', 'Copy to clipboard') }, @@ -90,6 +92,7 @@ export default { async copyLink() { try { await this.$copyText(this.internalLink) + showSuccess(t('files_sharing', 'Link copied')) // focus and show the tooltip (note: cannot set ref on NcActionLink) this.$refs.shareEntrySimple.$refs.actionsComponent.$el.focus() this.copySuccess = true diff --git a/apps/files_sharing/src/components/SharingEntryLink.vue b/apps/files_sharing/src/components/SharingEntryLink.vue index 930bae849c2..9b60e34b194 100644 --- a/apps/files_sharing/src/components/SharingEntryLink.vue +++ b/apps/files_sharing/src/components/SharingEntryLink.vue @@ -572,9 +572,10 @@ export default { */ clipboardTooltip() { if (this.copied) { - return this.copySuccess - ? t('files_sharing', 'Link copied') - : t('files_sharing', 'Cannot copy, please copy the link manually') + if (this.copySuccess) { + return '' + } + return t('files_sharing', 'Cannot copy, please copy the link manually') } return t('files_sharing', 'Copy to clipboard') }, @@ -781,6 +782,7 @@ export default { async copyLink() { try { await this.$copyText(this.shareLink) + showSuccess(t('files_sharing', 'Link copied')) // focus and show the tooltip this.$refs.copyButton.$el.focus() this.copySuccess = true diff --git a/apps/settings/css/settings.css b/apps/settings/css/settings.css index 4600d0ccaaa..53b037eab14 100644 --- a/apps/settings/css/settings.css +++ b/apps/settings/css/settings.css @@ -686,7 +686,6 @@ span.version { .store .section { width: 25%; } - .with-app-sidebar .store .section { width: 33%; } @@ -695,7 +694,6 @@ span.version { .store .section { width: 25%; } - .with-app-sidebar .store .section { width: 33%; } @@ -704,7 +702,6 @@ span.version { .store .section { width: 33%; } - .with-app-sidebar .store .section { width: 50%; } @@ -713,7 +710,6 @@ span.version { .store .section { width: 50%; } - .with-app-sidebar .store .section { width: 100%; } @@ -1273,8 +1269,7 @@ doesnotexist:-o-prefocus, .strengthify-wrapper { position: sticky; align-self: normal; background-color: var(--color-main-background); - z-index: 100; - /* above multiselect */ + z-index: 100; /* above multiselect */ top: 0; } #body-settings #app-content.user-list-grid .row#grid-header.sticky { diff --git a/apps/settings/css/settings.css.map b/apps/settings/css/settings.css.map index dda2fa9c696..999f450a450 100644 --- a/apps/settings/css/settings.css.map +++ b/apps/settings/css/settings.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["../../../core/css/variables.scss","settings.scss","../../../core/css/functions.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBA;AAAA;AAAA;AA4BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AD3CC;EACC;;;AAIF;AACA;EACC;;;AAGD;AACA;AC6CC;EAEA;;;AD3CD;ACyCC;EAEA;;;ADvCD;ACqCC;EAEA;;;ADnCD;ACiCC;EAEA;;;AD/BD;AC6BC;EAEA;;;AD3BD;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAIA;EACC;;AAEA;EACC;;AAIA;EACC;;AAKH;EACC;;AAGD;EACC;;AAED;EACC;;;AAKD;EACC;;;AAIF;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAEA;EACC;;AAIF;EACC;EACA;EACA;;AAGD;EACC;EACA;EACA;;;AAMF;EACC;;AACA;EACC;;AACA;EACC;;;AAKH;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAGC;EACA;EACA;;AAGD;EACC;EACA;;;AAIF;EACC;IACC;IACA;;;AAIF;EACC;IACC;IACA;;;AAIF;EACC;IACC;IACA;;;AAIF;EACC;EACA;;AAEA;EACC;;AAIA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAKD;EACC;EACA;EACA;EACA;EACA;;AAKH;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAIF;EACC;;AAGD;EACC;EACA;EACA;EACA;;;AAIF;AACA;AACA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EACC;EACA;EACA;;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAEC;EACA;;AAEA;EACC;;AAIF;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAIF;EACC;;AAGC;EAEC;EACA;;AAEA;EACC;;AAGD;EACC;;AAEA;EACC;;AAIF;EACC;EAEA;;AAEA;EACC;;;AAQN;EACC;;;AAIA;EACC;;AAGD;EACC;;;AAIF;AAAA;EAEC;;;AAGD;EACC;;;AAGD;EACC;;;AAIA;EACC;EACA;EACA;;AAGD;EACC;EACA;EACA;;;AAMD;EACC;;AAGD;EACC;;;AAKD;EACC;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;;AACA;EACC;;AAIF;EACC;EACA;EACA;;AAKA;EACC;EACA;;AAED;EACC;EACA;EACA;EACA;;AAIF;EACC;;AAGD;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAKH;AAGC;EACC;;AAGD;EACC;;AAGD;EACC;EACA;EACA;EACA;;;AAIF;AAGC;EACC;EACA;EACA;EACA;;AAGD;EACC;;;AAKD;AAAA;EAEC;;;AAKD;AAAA;EAEC;;;AAIF;EACC;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;;AAIF;AACA;EACC;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAKD;EACC;EACA;EACA;EACA;EACA;;AAGD;EACC;;AAEA;EACC;;AAIF;EACC;;AAGD;EAEC;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;;AAIF;EACC;;AAGD;EACC;EACA;;;AAIF;EACC;;;AAGD;AACA;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;AACC;;AACA;EACC;EACA;EACA;;AAGD;EACC;;AAIA;EACC;;AAIF;EACC;;AAGD;EACC;;AAGD;EACC;;;AAIF;EACC;EACA;EACA;;;AAGD;EACC;;;AAIA;EACC;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAIF;EACC;EACA;EACA;;;AAIA;EACC;;;AAMD;EACC;;AAGD;EACC;EACA;;AAGD;EACC;;AAGD;EACC;;AAGD;EACC;EACA;EACA;EACA;;AAGD;EACC;;AAGD;EACC;;;AAMA;AAAA;EAEC;EACA;EACA;EACA;EACA;;AAIF;EACC;EACA;;AAEA;AAAA;EAEC;;AAGD;EACC;;AAIF;EACC;;AAGD;EACC;;AAGD;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;;AAEA;EACC;;AAIF;EACC;EACA;;AAGD;AAAA;AAAA;AAAA;AAAA;EAKC;;;AAIF;EACC;IACC;;;EAED;IACC;;;AAIF;EACC;IACC;;;EAED;IACC;;;AAIF;EACC;IACC;;;EAED;IACC;;;AAIF;EACC;IACC;;;EAED;IACC;;;AAIF;EACC;IACC;;;AAIF;EACC;IACC;;;AAIF;AACA;EAEE;IACC;;;AAKH;EACC;IACC;;;AAIF;EACC;AACA;AAKA;;AAJA;EACC;;AAID;EACC;;AAEA;EACC;EACA;EACA;;;AAKH;EACC;EACA;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;AAEA;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAGD;EAyGC;EACA;EACA;AAkDA;;AAzJA;EACC;;AAGD;EACC;;AAGD;EACC;;AAGD;EACC,QAfgB;EAgBhB,SAjBiB;EAmBjB,cAlBgB;EAmBhB;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EAQC;;AAPA;EACC;EACA;EACA;EACA,YAjCe;;AAsChB;EACC;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;;AAKF;EACC;;AAEA;EACC;;AAIF;EACC;EACA;EACA;;AAGD;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;;AAEA;EACC;EACA;EACA;;AAKH;EACC;EACA;AACA;EACA;EACA;EACA;;AAOD;EACC;;AAGD;EACC;EACA;;AAEA;EACC;EACA;;AAGD;EACC;;AAKD;EACC;;AAGD;EACC;;AAGD;EACC;;AAEA;EACC;;AAKD;EACC;;AAKD;EACC;;AAMH;EACC;EACA;;AAEA;EACC;EACA;;AAGD;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAGD;EACC;;;AAQF;EACC;;;AAKH;AACA;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAOA;AAAA;AAAA;AAAA;EACC;;AAEA;AAAA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AAAA;EACC;EACA;EACA;EACA;EACA;;AAGD;AAAA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AAAA;EACC;;;AAMF;EACC;;AAGD;EACC;;AAGD;EACC;;AAGD;EACC;;AAGD;EACC;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;AACA;EACA;EACA;EACA;EACA;;;AAGD;AAEA;EACC;EACA;EACA;;;AAGD;AAAA;AAAA;EAGC;;;AAIA;EACC;EACA;EACA;;AAGD;AAAA;EAEC;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;;AAEA;EACC;;;AAIF;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;;;AAIA;EACC;EACA;;AAGD;EACC;;AAGD;EACC;EACA;;;AAKF;AACA;EACC;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAIA;EACC;EACA;;AAEA;EACC;;AAGD;EACC;;AAIF;EACC;EACA;;AAGD;EACC;;AAGD;EACC;;AAGD;EACC;;;AAKD;EACC;;AAGD;EACC;;;AAIF;EACC;;AAEA;EACC;EACA;;;AAIF;EACC;;;AAGD;EACC;EACA;EACA;;;AAID;AAKC;EACC;EACA;EACA;;AAEA;EAGC;EACA;EACA,YAbgB;EAchB;EACA;EACA;AACA;AAAA;EAEA,uBACE;EAOF;AAMA;AA4EA;;AAhFA;EACC;;AAID;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAOC,WAxCkB;;AA0ClB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;;AAKD;EAMC;;AAMD;AAAA;EAEC;EACA;;AAIF;AAAA;AAAA;EAGC,WAxEkB;;AA0ElB;AAAA;AAAA;EACC;EACA;EACA;;AAGD;AAAA;AAAA;EACC;;AAIF;EACC;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;;AAGD;EACC;EACA;;AAID;EACC;EACA;EACA;EACA;AAAc;EACd;;AAEA;EACC;;AAIF;EACC;EACA;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUC;EACA;EACA;EACA;EACA;;AAKD;EACC;;AAGD;EACC;;AAIF;EACC;;AAGD;AAAA;AAAA;EAGC;EACA;EACA;EACA;AAaA;AA+GA;;AA1HA;AAAA;AAAA;EACC;EACA;;AAIA;AAAA;AAAA;AAAA;AAAA;EACC;;AAKF;AAAA;AAAA;EACC;EACA;;AAGD;AAAA;AAAA;EACC;;AAKA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;;AAIF;AAAA;AAAA;AAAA;AAAA;AAEC;EACA;EACA;EACA;AACA;AAAA;AAAA;EAGA;EACA;EACA;EACA;;AAGD;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;EACC;EACA;EACA;EACA;;AAEA;AAAA;AAAA;EACC;EACA;EACA;;AAIF;AAAA;AAAA;EACC;EACA;;AAEA;AAAA;AAAA;EACC;;AAIF;AAAA;AAAA;EACC;EACA;EACA;;AAEA;AAAA;AAAA;EACC;;AAIF;AAAA;AAAA;EACC;EACA;;AAEA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;EACC;EACA;EACA;EACA;;AAEA;AAAA;AAAA;EACC;EACA;EACA;EACA;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGC;EACA;;AAKH;AAAA;AAAA;EACC;EACA;EACA;EACA;;AAEA;AAAA;AAAA;EACC;EACA;;AAMH;AAAA;AAAA;EACC;EACA;;AAKH;EACC;EACA;EACA;EACA;;AAGD;EACC;EACA;;;AAKH;EACI;;;AAGJ;EACE;IACE;;;AAGJ;EACE;IACE","file":"settings.css"}
\ No newline at end of file +{"version":3,"sourceRoot":"","sources":["../../../core/css/variables.scss","settings.scss","../../../core/css/functions.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBA;AAAA;AAAA;AA4BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AD3CC;EACC;;;AAIF;AACA;EACC;;;AAGD;AACA;AC6CC;EAEA;;;AD3CD;ACyCC;EAEA;;;ADvCD;ACqCC;EAEA;;;ADnCD;ACiCC;EAEA;;;AD/BD;AC6BC;EAEA;;;AD3BD;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAIA;EACC;;AAEA;EACC;;AAIA;EACC;;AAKH;EACC;;AAGD;EACC;;AAED;EACC;;;AAKD;EACC;;;AAIF;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAEA;EACC;;AAIF;EACC;EACA;EACA;;AAGD;EACC;EACA;EACA;;;AAMF;EACC;;AACA;EACC;;AACA;EACC;;;AAKH;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAGC;EACA;EACA;;AAGD;EACC;EACA;;;AAIF;EACC;IACC;IACA;;;AAIF;EACC;IACC;IACA;;;AAIF;EACC;IACC;IACA;;;AAIF;EACC;EACA;;AAEA;EACC;;AAIA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAKD;EACC;EACA;EACA;EACA;EACA;;AAKH;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAIF;EACC;;AAGD;EACC;EACA;EACA;EACA;;;AAIF;AACA;AACA;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAGD;EACC;EACA;EACA;;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAEC;EACA;;AAEA;EACC;;AAIF;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAIF;EACC;;AAGC;EAEC;EACA;;AAEA;EACC;;AAGD;EACC;;AAEA;EACC;;AAIF;EACC;EAEA;;AAEA;EACC;;;AAQN;EACC;;;AAIA;EACC;;AAGD;EACC;;;AAIF;AAAA;EAEC;;;AAGD;EACC;;;AAGD;EACC;;;AAIA;EACC;EACA;EACA;;AAGD;EACC;EACA;EACA;;;AAMD;EACC;;AAGD;EACC;;;AAKD;EACC;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;;AACA;EACC;;AAIF;EACC;EACA;EACA;;AAKA;EACC;EACA;;AAED;EACC;EACA;EACA;EACA;;AAIF;EACC;;AAGD;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAKH;AAGC;EACC;;AAGD;EACC;;AAGD;EACC;EACA;EACA;EACA;;;AAIF;AAGC;EACC;EACA;EACA;EACA;;AAGD;EACC;;;AAKD;AAAA;EAEC;;;AAKD;AAAA;EAEC;;;AAIF;EACC;EACA;EACA;;AAEA;EACC;;AAGD;EACC;;;AAIF;AACA;EACC;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAKD;EACC;EACA;EACA;EACA;EACA;;AAGD;EACC;;AAEA;EACC;;AAIF;EACC;;AAGD;EAEC;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;;AAIF;EACC;;AAGD;EACC;EACA;;;AAIF;EACC;;;AAGD;AACA;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;AACC;;AACA;EACC;EACA;EACA;;AAGD;EACC;;AAIA;EACC;;AAIF;EACC;;AAGD;EACC;;AAGD;EACC;;;AAIF;EACC;EACA;EACA;;;AAGD;EACC;;;AAIA;EACC;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAIF;EACC;EACA;EACA;;;AAIA;EACC;;;AAMD;EACC;;AAGD;EACC;EACA;;AAGD;EACC;;AAGD;EACC;;AAGD;EACC;EACA;EACA;EACA;;AAGD;EACC;;AAGD;EACC;;;AAMA;AAAA;EAEC;EACA;EACA;EACA;EACA;;AAIF;EACC;EACA;;AAEA;AAAA;EAEC;;AAGD;EACC;;AAIF;EACC;;AAGD;EACC;;AAGD;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;;AAEA;EACC;;AAIF;EACC;EACA;;AAGD;AAAA;AAAA;AAAA;AAAA;EAKC;;;AAIF;EACC;IACC;;EAED;IACC;;;AAIF;EACC;IACC;;EAED;IACC;;;AAIF;EACC;IACC;;EAED;IACC;;;AAIF;EACC;IACC;;EAED;IACC;;;AAIF;EACC;IACC;;;AAIF;EACC;IACC;;;AAIF;AACA;EAEE;IACC;;;AAKH;EACC;IACC;;;AAIF;EACC;AACA;AAKA;;AAJA;EACC;;AAID;EACC;;AAEA;EACC;EACA;EACA;;;AAKH;EACC;EACA;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;AAEA;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAGD;EAyGC;EACA;EACA;AAkDA;;AAzJA;EACC;;AAGD;EACC;;AAGD;EACC;;AAGD;EACC,QAfgB;EAgBhB,SAjBiB;EAmBjB,cAlBgB;EAmBhB;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EAQC;;AAPA;EACC;EACA;EACA;EACA,YAjCe;;AAsChB;EACC;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;;AAKF;EACC;;AAEA;EACC;;AAIF;EACC;EACA;EACA;;AAGD;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;;AAEA;EACC;EACA;EACA;;AAKH;EACC;EACA;AACA;EACA;EACA;EACA;;AAOD;EACC;;AAGD;EACC;EACA;;AAEA;EACC;EACA;;AAGD;EACC;;AAKD;EACC;;AAGD;EACC;;AAGD;EACC;;AAEA;EACC;;AAKD;EACC;;AAKD;EACC;;AAMH;EACC;EACA;;AAEA;EACC;EACA;;AAGD;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAGD;EACC;;;AAQF;EACC;;;AAKH;AACA;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAOA;AAAA;AAAA;AAAA;EACC;;AAEA;AAAA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AAAA;EACC;EACA;EACA;EACA;EACA;;AAGD;AAAA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AAAA;EACC;;;AAMF;EACC;;AAGD;EACC;;AAGD;EACC;;AAGD;EACC;;AAGD;EACC;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;AACA;EACA;EACA;EACA;EACA;;;AAGD;AAEA;EACC;EACA;EACA;;;AAGD;AAAA;AAAA;EAGC;;;AAIA;EACC;EACA;EACA;;AAGD;AAAA;EAEC;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;;AAEA;EACC;;;AAIF;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;;;AAIA;EACC;EACA;;AAGD;EACC;;AAGD;EACC;EACA;;;AAKF;AACA;EACC;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;;;AAIA;EACC;EACA;;AAEA;EACC;;AAGD;EACC;;AAIF;EACC;EACA;;AAGD;EACC;;AAGD;EACC;;AAGD;EACC;;;AAKD;EACC;;AAGD;EACC;;;AAIF;EACC;;AAEA;EACC;EACA;;;AAIF;EACC;;;AAGD;EACC;EACA;EACA;;;AAID;AAKC;EACC;EACA;EACA;;AAEA;EAGC;EACA;EACA,YAbgB;EAchB;EACA;EACA;AACA;AAAA;EAEA,uBACE;EAOF;AAMA;AA4EA;;AAhFA;EACC;;AAID;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAOC,WAxCkB;;AA0ClB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;;AAKD;EAMC;;AAMD;AAAA;EAEC;EACA;;AAIF;AAAA;AAAA;EAGC,WAxEkB;;AA0ElB;AAAA;AAAA;EACC;EACA;EACA;;AAGD;AAAA;AAAA;EACC;;AAIF;EACC;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;;AAGD;EACC;EACA;;AAID;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAIF;EACC;EACA;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUC;EACA;EACA;EACA;EACA;;AAKD;EACC;;AAGD;EACC;;AAIF;EACC;;AAGD;AAAA;AAAA;EAGC;EACA;EACA;EACA;AAaA;AA+GA;;AA1HA;AAAA;AAAA;EACC;EACA;;AAIA;AAAA;AAAA;AAAA;AAAA;EACC;;AAKF;AAAA;AAAA;EACC;EACA;;AAGD;AAAA;AAAA;EACC;;AAKA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;;AAIF;AAAA;AAAA;AAAA;AAAA;AAEC;EACA;EACA;EACA;AACA;AAAA;AAAA;EAGA;EACA;EACA;EACA;;AAGD;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;EACC;EACA;EACA;EACA;;AAEA;AAAA;AAAA;EACC;EACA;EACA;;AAIF;AAAA;AAAA;EACC;EACA;;AAEA;AAAA;AAAA;EACC;;AAIF;AAAA;AAAA;EACC;EACA;EACA;;AAEA;AAAA;AAAA;EACC;;AAIF;AAAA;AAAA;EACC;EACA;;AAEA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;EACC;EACA;EACA;EACA;;AAEA;AAAA;AAAA;EACC;EACA;EACA;EACA;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGC;EACA;;AAKH;AAAA;AAAA;EACC;EACA;EACA;EACA;;AAEA;AAAA;AAAA;EACC;EACA;;AAMH;AAAA;AAAA;EACC;EACA;;AAKH;EACC;EACA;EACA;EACA;;AAGD;EACC;EACA;;;AAKH;EACI;;;AAGJ;EACE;IACE;;;AAGJ;EACE;IACE","file":"settings.css"}
\ No newline at end of file diff --git a/apps/settings/l10n/gl.js b/apps/settings/l10n/gl.js index 1fad4bd56fd..aabdb600286 100644 --- a/apps/settings/l10n/gl.js +++ b/apps/settings/l10n/gl.js @@ -2,9 +2,12 @@ OC.L10N.register( "settings", { "Private" : "Privado", + "Only visible to people matched via phone number integration through Talk on mobile" : "Só son visibles para as persoas coincidentes mediante a integración do número de teléfono a través de Talk no móbil", "Local" : "Local", + "Only visible to people on this instance and guests" : "Só visible para as persoas desta instancia e os convidados", "Federated" : "Federado", "Only synchronize to trusted servers" : "Sincronizar só con servidores de confianza", + "Published" : "Publicado", "Synchronize to trusted servers and the global and public address book" : "Sincronizar con servidores de confianza e co caderno de enderezos global e público", "Verify" : "Verificar", "Verifying …" : "Verificando…", @@ -36,6 +39,7 @@ OC.L10N.register( "You changed your email address" : "Vostede cambiou o seu enderezo de correo", "Your email address was changed by an administrator" : "O seu enderezo de correo foi cambiado por un administrador", "You created app password \"{token}\"" : "Vostede creou o contrasinal da aplicación «{token}»", + "An administrator created app password \"{token}\"" : "Un administrador creou o contrasinal da aplicación \"{token}\"", "You deleted app password \"{token}\"" : "Vostede eliminou o contrasinal da aplicación «{token}»", "You renamed app password \"{token}\" to \"{newToken}\"" : "Vostede renomeou o contrasinal da aplicación «{token}» como «{newToken}»", "You granted filesystem access to app password \"{token}\"" : "Vostede concedeu acceso ao sistema de ficheiros ao contrasinal da aplicación «{token}»", @@ -46,14 +50,29 @@ OC.L10N.register( "Remote wipe was started on %1$s" : "Iniciouse a limpeza remota en %1$s", "Remote wipe has finished on %1$s" : "Rematou a limpeza remota en %1$s", "Your <strong>password</strong> or <strong>email</strong> was modified" : "Foi modificado o seu <strong>contrasinal</strong> ou o seu <strong>correo electrónico</strong>", + "Could not remove app." : "Non se puido eliminar a aplicación.", + "Could not update app." : "Non se puido actualizar a aplicación.", "Wrong password" : "Contrasinal incorrecto", + "Unable to change personal password" : "Non se puido cambiar o contrasinal persoal", "Saved" : "Gardado", "No user supplied" : "Non subministrado polo usuario", + "Unable to change password. Password too long." : "Non se puido cambiar o contrasinal. O contrasinal é demasiado longo.", "Authentication error" : "Produciuse un erro de autenticación", "Please provide an admin recovery password; otherwise, all user data will be lost." : "Forneza un contrasinal de recuperación de administrador; senón perderase toda a información do usuario.", "Wrong admin recovery password. Please check the password and try again." : "Contrasinal de recuperación do administrador incorrecto. Comprobe o contrasinal e ténteo de novo.", + "Backend does not support password change, but the user's encryption key was updated." : "O backend non admite o cambio de contrasinal, pero actualizouse a clave de cifrado do usuario.", + "installing and updating apps via the App Store or Federated Cloud Sharing" : "instalar e actualizar aplicacións a través da App Store ou Federated Cloud Sharing", "Federated Cloud Sharing" : "Nube federada compartida", "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL está utilizando unha versión obsoleta %1$s (%2$s). Actualice o seu sistema operativo, caso contrario características como %3$s non funcionarán de xeito fiábel.", + "Could not determine if TLS version of cURL is outdated or not because an error happened during the HTTPS request against https://nextcloud.com. Please check the Nextcloud log file for more details." : "Non se puido determinar se a versión TLS de cURL está desactualizada ou non porque se produciu un erro durante a solicitude HTTPS contra https://nextcloud.com. Consulte o ficheiro de rexistro de Nextcloud para obter máis detalles.", + "The PHP OPcache module is not loaded. For better performance it is recommended to load it into your PHP installation." : "O módulo PHP OPcache non está cargado. Para un mellor rendemento, recoméndase cargalo na súa instalación de PHP.", + "OPcache is disabled. For better performance, it is recommended to apply <code>opcache.enable=1</code> to your PHP configuration." : "OPcache está desactivado. Para un mellor rendemento, recoméndase aplicar <code>opcache.enable=1</code> á súa configuración de PHP.", + "OPcache is configured to remove code comments. With OPcache enabled, <code>opcache.save_comments=1</code> must be set for Nextcloud to function." : "OPcache está configurado para eliminar comentarios de código. Con OPcache activado, debe configurarse <code>opcache.save_comments=1</code> para que Nextcloud funcione.", + "Nextcloud is not allowed to use the OPcache API. With OPcache enabled, it is highly recommended to include all Nextcloud directories with <code>opcache.restrict_api</code> or unset this setting to disable OPcache API restrictions, to prevent errors during Nextcloud core or app upgrades." : "Nextcloud non pode usar a API OPcache. Con OPcache activado, é moi recomendable incluír todos os directorios de Nextcloud con <code>opcache.restrict_api</code> ou desactivar esta configuración para desactivar as restricións da API de OPcache, para evitar erros durante as actualizacións do núcleo de Nextcloud ou da aplicación.", + "Nextcloud is not allowed to use the OPcache API. It is highly recommended to include all Nextcloud directories with <code>opcache.restrict_api</code> or unset this setting to disable OPcache API restrictions, to prevent errors during Nextcloud core or app upgrades." : "Nextcloud non pode usar a API OPcache. É moi recomendable incluír todos os directorios de Nextcloud con <code>opcache.restrict_api</code> ou desactivar esta configuración para desactivar as restricións da API de OPcache, para evitar erros durante as actualizacións do núcleo de Nextcloud ou das aplicacións.", + "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be kept in the cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "O número máximo de chaves OPcache está case superado. Para garantir que todos os scripts poden manterse na caché, recoméndase aplicar <code>opcache.max_accelerated_files</code> á súa configuración de PHP cun valor superior a <code>%s</code>.", + "The OPcache buffer is nearly full. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.memory_consumption</code> to your PHP configuration with a value higher than <code>%s</code>." : "O búfer OPcache está case cheo. Para garantir que todos os scripts se poidan gardar na caché, recoméndase aplicar <code>opcache.memory_consumption</code> á súa configuración de PHP cun valor superior a <code>%s</code>.", + "The OPcache interned strings buffer is nearly full. To assure that repeating strings can be effectively cached, it is recommended to apply <code>opcache.interned_strings_buffer</code> to your PHP configuration with a value higher than <code>%s</code>." : "O búfer de cadeas internadas en OPcache está case cheo. Para asegurarse de que as cadeas que se repiten poidan almacenarse na caché de forma efectiva, recoméndase aplicar <code>opcache.interned_strings_buffer</code> á súa configuración de PHP cun valor superior a <code>%s</code>.", "Administrator documentation" : "Documentación do administrador", "User documentation" : "Documentación do usuario", "Invalid SMTP password." : "Contrasinal SMTP incorrecta.", @@ -62,12 +81,14 @@ OC.L10N.register( "If you received this email, the email configuration seems to be correct." : "Se vostede ten recibido este correo, a configuración do correo semella ser correcta. ", "Email could not be sent. Check your mail server log" : "Non foi posíbel enviar o correo. Comprobe o rexistro do servidor de correo", "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Ocorreu un problema ao enviar o correo. Revise a súa configuración. (Erro: %s)", + "You need to set your user email before being able to send test emails. Go to %s for that." : "Debes configurar o teu correo electrónico de usuario antes de poder enviar correos electrónicos de proba. Vaia a %spara iso.", "Invalid user" : "Usuario incorrecto", "Invalid mail address" : "Enderezo de correo incorrecto", "Settings saved" : "Axustes gardados", "Unable to change full name" : "Non é posíbel cambiar o nome completo", "Unable to change email address" : "Non é posíbel cambiar o enderezo de correo.", "Unable to set invalid phone number" : "Non é posíbel estabelecer un número de teléfono non válido", + "Unable to set invalid website" : "Non se puido establecer o sitio web non válido", "Some account data was invalid" : "Algúns datos da conta non eran válidos", "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Para poder verificar a súa conta de Twitter, publique o seguinte chío en Twitter (asegúrese de publicar sen ningún salto de liña):", "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Para poder verificar o seu sitio Web, engada o seguinte contido ao seu web-root en «.well-known/CloudIdVerificationCode.txt» (asegúrese de que o texto completo estea só nunha liña):", @@ -97,10 +118,12 @@ OC.L10N.register( "Personal" : "Persoal", "Administration" : "Administración", "Additional settings" : "Axustes adicionais", + "Administration privileges" : "Privilexios de administración", "Groupware" : "Software colaborativo", "Overview" : "Vista xeral", "Basic settings" : "Axustes básicos", "Sharing" : "Compartindo", + "Availability" : "Dispoñibilidade", "Calendar" : "Calendario", "Personal info" : "Información persoal", "Mobile & desktop" : "Móbil e escritorio", @@ -115,9 +138,17 @@ OC.L10N.register( "Verifying" : "Verificando", "A background job is pending that checks for user imported SSL certificates. Please check back later." : "Está pendente un traballo en segundo plano que comprobe os certificados SSL importados polo usuario. Volva comprobar máis adiante.", "There are some user imported SSL certificates present, that are not used anymore with Nextcloud 21. They can be imported on the command line via \"occ security:certificates:import\" command. Their paths inside the data directory are shown below." : "Hai algúns certificados SSL importados polo usuario, que xa non se usan con Nextcloud 21. Pódense importar coa liña de ordes mediante a orde «occ security:certificates:import». As súas rutas dentro do directorio de datos amosanse deseguido.", + "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Atopáronse UUID non válidos de usuarios ou grupos LDAP. Revisa a túa configuración de \"Anular detección de UUID\" na parte Experto da configuración LDAP e utiliza \"occ ldap:update-uuid\" para actualizalos.", "The old server-side-encryption format is enabled. We recommend disabling this." : "O antigo formato de cifrado de lado do servidor está activado. Recomendámoslle desactivalo.", + "MariaDB version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MariaDB 10.2 or higher." : "Utilízase a versión \"%s\" de MariaDB. Nextcloud 21 ou superior non admite esta versión e require MariaDB 10.2 ou superior.", + "MySQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MySQL 8.0 or MariaDB 10.2 or higher." : "Utilízase a versión de MySQL \"%s\". Nextcloud 21 e superior non admite esta versión e requiren MySQL 8.0 ou MariaDB 10.2 ou superior.", + "PostgreSQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require PostgreSQL 9.6 or higher." : "Utilízase a versión de PostgreSQL \"%s\". Nextcloud 21 ou superior non admite esta versión e require PostgreSQL 9.6 ou superior.", + "Profile information" : "Información do perfil", + "Profile picture, full name, email, phone number, address, website, Twitter, organisation, role, headline, biography, and whether your profile is enabled" : "Imaxe de perfil, nome completo, correo electrónico, número de teléfono, enderezo, sitio web, Twitter, organización, función, título, biografía e se o teu perfil está activado", "Nextcloud settings" : "Axustes do Nextcloud", + "Here you can decide which group can access certain sections of the administration settings." : "Aquí pode decidir que grupo pode acceder a determinadas seccións da configuración de administración.", "None" : "Ningún", + "Unable to modify setting" : "Non se puido modificar a configuración", "Two-Factor Authentication" : "Autenticación de dous factores", "Two-factor authentication can be enforced for all users and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "A autenticación de dous factores pode ser aplicada para todos os usuarios e grupos específicos. Se non tiveran configurado un provedor de dous factores, non podería acceder ao sistema.", "Enforce two-factor authentication" : "Obrigar a autenticación de dous factores", @@ -148,6 +179,7 @@ OC.L10N.register( "Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "As aplicacións destacadas están desenvolvidas por e dentro da comunidade. Ofrecen unha funcionalidade central e están preparadas para o seu uso en produción.", "Featured" : "Destacada", "Update to {update}" : "Actualizar a {update}", + "All apps are up-to-date." : "Todas as aplicacións están actualizadas.", "Results from other categories" : "Resultados doutras categorías", "No apps found for your version" : "Non se atoparon aplicacións para a súa versión", "Disable all" : "Desactivar todo", @@ -159,6 +191,7 @@ OC.L10N.register( "Rename" : "Renomear", "Revoke" : "Revogar", "Wipe device" : "Limpar o dispositivo", + "Revoking this token might prevent the wiping of your device if it has not started the wipe yet." : "A revogación deste token pode impedir a eliminación do teu dispositivo se aínda non iniciou a eliminación.", "Internet Explorer" : "Internet Explorer", "Edge" : "Edge", "Firefox" : "Firefox", @@ -167,6 +200,10 @@ OC.L10N.register( "Google Chrome for Android" : "Google Chrome para Android", "iPhone" : "iPhone", "iPad" : "iPad", + "{productName} iOS app" : "{productName} aplicación de iOS", + "{productName} Android app" : "{productName} aplicación de Android", + "{productName} Talk for iOS" : "{productName} Talk para iOS", + "{productName} Talk for Android" : "{productName} Talk para Android", "Sync client - {os}" : "Cliente de sincronización - {os}", "This session" : "Esta sesión", "Device" : "Dispositivo", @@ -191,12 +228,27 @@ OC.L10N.register( "Copied!" : "Copiado!", "Copy" : "Copiar", "Could not copy app password. Please copy it manually." : "Non foi posíbel copiar o contrasinal da app. Cópieo manualmente.", + "For the server to work properly, it's important to configure background jobs correctly. Cron is the recommended setting. Please see the documentation for more information." : "Para que o servidor funcione correctamente, é importante configurar correctamente os traballos en segundo plano. Cron é a configuración recomendada. Consulte a documentación para obter máis información.", + "Last job execution ran {time}. Something seems wrong." : "A última execución do traballo executouse o {time}. Algo parece funcionar mal.", + "Last job ran {relativeTime}." : "O último traballo executouse {relativeTime}.", + "Background job did not run yet!" : "O traballo en segundo plano aínda non se executou!", + "AJAX" : "AJAX", + "Execute one task with each page loaded. Use case: Single user instance." : "Executar unha tarefa con cada páxina cargada. Caso de uso: instancia de usuario único.", + "Webcron" : "Webcron", + "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP. Use case: Very small instance (1–5 users depending on the usage)." : "cron.php está rexistrado nun servizo webcron para chamar a cron.php cada 5 minutos a través de HTTP. Caso de uso: instancia moi pequena (de 1 a 5 usuarios segundo o uso).", + "Cron (Recommended)" : "Cron (Recomendado)", "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para executar isto necesitase a extensión POSIX de PHP. Vexa a {linkstart}documentación de PHP{linkend} para obter máis detalles. ", + "Use system cron service to call the cron.php file every 5 minutes. Recommended for all instances." : "Use o servizo cron do sistema para chamar ao ficheiro cron.php cada 5 minutos. Recomendado para todos os casos.", + "The cron.php needs to be executed by the system user \"{user}\"." : "O cron.php debe ser executado polo usuario do sistema \"{user}\".", + "Unable to update background job mode" : "Non se puido actualizar o modo de traballo en segundo plano", "Profile" : "Perfil", + "Enable or disable profile by default for new users." : "Activa ou desactiva o perfil por defecto para os novos usuarios.", "Enable" : "Activar", + "Unable to update profile default setting" : "Non se puido actualizar a configuración predeterminada do perfil", "Server-side encryption" : "Cifrado na parte do servidor", "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "O cifrado do lado do servidor fai posíbel cifrar os ficheiros que van ser enviados a este servidor. Isto leva algunhas limitacións como penalizacións no rendemento, así que actíveo só se é necesario.", "Enable server-side encryption" : "Activar o cifrado na parte do servidor", + "Please read carefully before activating server-side encryption:" : "Lea atentamente antes de activar o cifrado do servidor:", "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Una vez que o cifrado estea activado, todos os ficheiros enviados ao servidor dende ese punto en diante cifraranse en repouso no servidor. Só será posíbel desactivar o cifrado nunha data posterior se o módulo de cifrado activado admite esa función, e se cumpran todas as condicións previas (por exemplo, o estabelecemento dunha clave de recuperación).", "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "O cifrado por si só non garante a seguridade do sistema. Vexa a documentación para obter máis información sobre como funciona a aplicación de cifrado e os casos de uso admitidos.", "Be aware that encryption always increases the file size." : "Teña presente que o cifrado sempre incrementa o tamaño do ficheiro.", @@ -204,30 +256,85 @@ OC.L10N.register( "This is the final warning: Do you really want to enable encryption?" : "Esta é a advertencia final. Confirma que quere activar o cifrado?", "No encryption module loaded, please enable an encryption module in the app menu." : "Non hai cargado ningún módulo de cifrado, active un módulo de cifrado no menú de aplicacións.", "Select default encryption module:" : "Seleccionar o módulo predeterminado de cifrado:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run {command}" : "Debes migrar as túas claves de cifrado do cifrado antigo (ownCloud <= 8.0) ao novo. Activa o \"Módulo de cifrado predeterminado\" e executa {command}", + "Unable to update server side encryption config" : "Non se puido actualizar a configuración de cifrado do servidor", + "Rename group" : "Cambiar o nome do grupo", "Remove group" : "Retirar o grupo", "You are about to remove the group {group}. The users will NOT be deleted." : "Está a piques de retirar o grupo {group}. Os usuarios NON van seren eliminados.", "Please confirm the group removal " : "Confirme a retirada do grupo ", "Current password" : "Contrasinal actual", "New password" : "Novo contrasinal", "Change password" : "Cambiar o contrasinal", + "Your profile picture" : "A túa imaxe de perfil", + "Upload profile picture" : "Subir imaxe de perfil", + "Choose profile picture from files" : "Escolle a imaxe de perfil dende Ficheiros", + "Remove profile picture" : "Eliminar a imaxe de perfil", "png or jpg, max. 20 MB" : "png ou jpg, max. 20 MB", "Picture provided by original account" : "Imaxe fornecida pola conta orixinal ", "Cancel" : "Cancelar", + "Set as profile picture" : "Establecer como imaxe de perfil", + "Please note that it can take up to 24 hours for your profile picture to be updated everywhere." : "Ten en conta que pode tardar ata 24 horas en actualizar a túa foto de perfil en todas partes.", + "Choose your profile picture" : "Escolle a túa imaxe de perfil", + "Please select a valid png or jpg file" : "Seleccione un ficheiro png ou jpg válido", + "Error setting profile picture" : "Produciuse un erro ao configurar a imaxe de perfil", + "Error cropping profile picture" : "Produciuse un erro ao recortar a imaxe de perfil", + "Error saving profile picture" : "Produciuse un erro ao gardar a imaxe de perfil", + "Error removing profile picture" : "Produciuse un erro ao eliminar a imaxe de perfil", + "Your biography" : "A túa biografía", "Details" : "Detalles", "You are a member of the following groups:" : "Vostede é membro dos seguintes grupos: ", + "You are using <strong>{usage}</strong>" : "Estás usando <strong>{usage}</strong>", + "You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Estás usando <strong>{usage}</strong> de <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)", + "Your full name" : "O teu nome completo", + "Email options" : "Opcións de correo electrónico", + "Primary email for password reset and notifications" : "Correo electrónico principal para restablecer o contrasinal e notificacións", + "Remove primary email" : "Eliminar o correo electrónico principal", + "Delete email" : "Eliminar o correo electrónico", + "Unset as primary email" : "Desactivar como correo electrónico principal", + "This address is not confirmed" : "Este enderezo non está confirmado", + "Set as primary email" : "Establecer como correo electrónico principal", "Your email address" : "O seu enderezo de correo", + "Additional email address {index}" : "Enderezo de correo electrónico adicional {index}", + "Unable to delete primary email address" : "Non se puido eliminar o enderezo de correo electrónico principal", + "Unable to update primary email address" : "Non se puido actualizar o enderezo de correo electrónico principal", + "Unable to add additional email address" : "Non se puido engadir un enderezo de correo electrónico adicional", + "Unable to update additional email address" : "Non se puido actualizar o enderezo de correo electrónico adicional", + "Unable to delete additional email address" : "Non se puido eliminar o enderezo de correo electrónico adicional", "No email address set" : "Non hai un enderezo de correo definido", + "Additional emails" : "Correos electrónicos adicionais", + "Your handle" : "O teu apodo", + "Your headline" : "O teu titular", "Language" : "Idioma", "Help translate" : "Axude na tradución", + "Unable to update language" : "Non se puido actualizar o idioma", "No language set" : "Non foi estabelecido ningún idioma", "Locale" : "Configuración rexional", + "Week starts on {firstDayOfWeek}" : "A semana comeza o {firstDayOfWeek}", + "Unable to update locale" : "Non se puido actualizar a configuración rexional", + "No locale set" : "Non se definiu ningunha configuración rexional", + "Your location" : "A túa localización", + "Your organisation" : "A súa organización", "Your phone number" : "O seu número de teléfono", + "Edit your Profile visibility" : "Edita a visibilidade do teu Perfil", + "Enable Profile" : "Activar o Perfil", + "Unable to update profile enabled state" : "Non se puido actualizar o estado activado do perfil", + "The more restrictive setting of either visibility or scope is respected on your Profile. For example, if visibility is set to \"Show to everyone\" and scope is set to \"Private\", \"Private\" is respected." : "A configuración máis restritiva de visibilidade ou alcance é respectada no teu Perfil. Por exemplo, se a visibilidade está definida como \"Mostrar a todos\" e o ámbito está configurado como \"Privado\", respéctase \"Privado\".", + "{displayId}" : "{displayId}", + "Unable to update visibility of {displayId}" : "Non se puido actualizar a visibilidade de {displayId}", + "Your role" : "O teu cargo", "Your Twitter handle" : "O seu usuario do Twitter", "Your website" : "O seu sitio web", + "No {property} set" : "Non hai {property} definida", + "Unable to update {property}" : "Non se puido actualizar a {property}", + "Change scope level of {property}, current scope is {scope}" : "Cambiar o nivel de ámbito de {property}, o ámbito actual é {scope}", + "Unable to update federation scope of the primary {property}" : "Non se puido actualizar o ámbito de federación da {property} principal", + "Unable to update federation scope of additional {property}" : "Non se puido actualizar o ámbito da federación de {property} adicional", + "Add additional email" : "Engade correo electrónico adicional", "Add" : "Engadir", "You do not have permissions to see the details of this user" : "Vostede non ten permisos para ver os detalles deste usuario", "Add new password" : "Engadir un novo contrasinal", "Add new email address" : "Engadir un novo enderezo de correo", + "Add user to group" : "Engadir usuario ao grupo", "Set user as admin for" : "Estabelecer o usuario como administrador para", "Select user quota" : "Seleccionar a cota de usuario", "Delete user" : "Eliminar usuario", @@ -259,6 +366,7 @@ OC.L10N.register( "No users in here" : "Aquí non hai usuarios", "Default quota" : "Cota predeterminada", "Common languages" : "Idiomas habituais", + "Other languages" : "Outras linguas", "Password change is disabled because the master key is disabled" : "O cambio de contrasinal está desactivado porque a clave principal está desactivada", "Passwordless authentication requires a secure connection." : "A autenticación sen contrasinal require dunha conexión segura.", "Add WebAuthn device" : "Engadir un dispositivo WebAuthn", @@ -296,22 +404,34 @@ OC.L10N.register( "Profile picture" : "Imaxe do perfil", "About" : "Sobre", "Full name" : "Nome completo", + "Additional email" : "Correo electrónico adicional", "Headline" : "Titular", + "Organisation" : "Organización", "Phone number" : "Número de teléfono", "Role" : "Cargo", "Twitter" : "Twitter", + "Fediverse (e.g. Mastodon)" : "Fediverso (por exemplo, Mastodon)", "Website" : "Sitio web", + "Profile visibility" : "Visibilidade do perfil", + "Not available as this property is required for core functionality including file sharing and calendar invitations" : "Non dispoñible, xa que esta propiedade é necesaria para as funcións básicas, como compartir ficheiros e invitacións de calendario", + "Not available as federation has been disabled for your account, contact your system administrator if you have any questions" : "Non dispoñible porque a federación foi desactivada para a túa conta, ponte en contacto co administrador do sistema se tes algunha dúbida", + "Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions" : "Non está dispoñible xa que non se permite publicar datos específicos do usuario no servidor de busca, póñase en contacto co administrador do sistema se tes algunha dúbida", "Active apps" : "Aplcativos activos", "Disabled apps" : "Aplicacións desactivadas", "Updates" : "Actualizacións", "App bundles" : "Paquetes de aplicacións", "Featured apps" : "Aplis destacadas", + "Show to everyone" : "Mostrar a todos", + "Show to logged in users only" : "Mostrar só a usuarios que iniciaron sesión", "Hide" : "Agochar", "Download and enable" : "Descargar e activar", "Enable untested app" : "Activar a aplicación sen probar", + "The app will be downloaded from the App Store" : "A aplicación descargarase da Tenda de Aplicacións", "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Esta aplicación non está marcado como compatíbel coa súa versión do Nextcloud. Se continúa, poderá instalar a aplicación. Teña en conta que é probábel que a aplicación non funcione como se agarda.", "Never" : "Nunca", + "An error occurred during the request. Unable to proceed." : "Produciuse un erro durante a solicitude. Non se pode continuar.", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "A aplicación foi activada pero necesita ser actualizada. Vai ser redirixido cara a páxina de actualizarións en 5 segundos.", + "Error: This app cannot be enabled because it makes the server unstable" : "Erro: esta aplicación non se pode activar porque fai que o servidor sexa inestable", "Documentation" : "Documentación", "Forum" : "Foro", "Login" : "Acceso", @@ -333,6 +453,7 @@ OC.L10N.register( "SMTP Username" : "Nome de usuario SMTP", "SMTP Password" : "Contrasinal SMTP", "Save" : "Gardar", + "Test and verify email settings" : "Proba e verifica a configuración do correo electrónico", "Send email" : "Enviar o correo", "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "É importante para a seguridade e o bo funcionamento da súa instancia que todo estea configurado correctamente. Para axudarlle niso, imos facer algunhas comprobacións automáticas. Vexa a documentación ligada para obter máis información. ", "All checks passed." : "Pasáronse todas as verificacións.", @@ -342,15 +463,21 @@ OC.L10N.register( "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Volva verificar as <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">guías de instalación ↗</a>, e comprobe que non haxa erros ou avisos no <a href=\"%2$s\">rexistro</a>. ", "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Comprobe a seguridade do seu Nextcloud empregando o <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">noso escaneo de seguridade ↗</a>.", "Version" : "Versión", + "You need to enable the File sharing App." : "Debes activar a Aplicación Compartir ficheiros.", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador pode facer axustes finos do comportamento al compartir. Lea a documentación para obter máis más información.", "Allow apps to use the Share API" : "Permitir que as aplicacións empreguen a API para compartir", "Set default expiration date for shares" : "Estabeleza a data de caducidade predeterminada das comparticións", + "Expire after" : "Caduca tras", "day(s)" : "día(s)", "Enforce expiration date" : "Forzar a data de caducidade", + "Set default expiration date for shares to other servers" : "Establece a data de caducidade predeterminada para as accións compartidas con outros servidores", + "Allow users to share via link and emails" : "Permitir aos usuarios compartir mediante ligazóns e correos electrónicos", "Allow public uploads" : "Permitir os envíos públicos", "Always ask for a password" : "Pedir sempre un contrasinal", "Enforce password protection" : "Forzar a protección por contrasinal", + "Exclude groups from password requirements:" : "Excluír grupos dos requisitos de contrasinal:", "Set default expiration date" : "Definir a data predeterminada de caducidade", + "Exclude groups from creating link shares:" : "Excluír grupos da creación de ligazóns compartidas:", "Allow resharing" : "Permitir compartir", "Allow sharing with groups" : "Permitir compartir con grupos", "Restrict users to only share with users in their groups" : "Restrinxir os usuarios a compartir só cos usuarios dos seus grupos", @@ -358,6 +485,9 @@ OC.L10N.register( "These groups will still be able to receive shares, but not to initiate them." : "Estes grupos poderán recibir comparticións, mais non inicialas.", "Allow username autocompletion in share dialog" : "Permitir autocompletar o nome de usuario no diálogo de compartir", "Allow username autocompletion to users within the same groups" : "Permitir autocompletar o nome de usuario aos usuarios dos mesmos grupos", + "Allow username autocompletion to users based on phone number integration" : "Permitir o autocompletado do nome de usuario aos usuarios en función da integración do número de teléfono", + "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Se está activado o autocompletado \"mesmo grupo\" e a \"integración do número de teléfono\", unha coincidencia en calquera é suficiente para mostrar ao usuario.", + "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Permitir o autocompletado ao introducir o nome completo ou o enderezo de correo electrónico (ignorando a coincidencia que falta na axenda telefónica e estar no mesmo grupo)", "Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "Amosar o texto de exención de responsabilidade na páxina de envío de ligazóns publicas (amosarase só cando a lista de ficheiros estea agochada)", "This text will be shown on the public link upload page when the file list is hidden." : "Este texto amosarase na páxina de envío das ligazóns públicas cando a lista de ficheiros estea agochada.", "Default share permissions" : "Permisos predeterminados para compartir", @@ -368,6 +498,7 @@ OC.L10N.register( "Follow us on Mastodon" : "Síganos na Mastodon", "Check out our blog" : "Visite o noso blog ", "Subscribe to our newsletter" : "Subscríbase ao noso boletín", + "This community release of Nextcloud is unsupported and instant notifications are unavailable." : "Esta versión comunitaria de Nextcloud non é compatible e as notificacións instantáneas non están dispoñibles.", "Use a second factor besides your password to increase security for your account." : "Empregue un segundo factor ademais do seu contrasinal para aumentar a seguridade da súa conta.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : " Se usa aplicacións de terceiros para conectarse a Nextcloud, asegúrese de crear e configurar un contrasinal de aplicación para cada unha antes de activar a autenticación de segundo factor.", "Migration in progress. Please wait until the migration is finished" : "A migración está en proceso. Agarde a que remate.", @@ -380,7 +511,18 @@ OC.L10N.register( "Couldn't update app." : "Non foi posíbel actualizar a aplicación.", "Backend doesn't support password change, but the user's encryption key was updated." : "A infraestrutura non admite o cambio de contrasinal, mais a clave de cifrado do usuario foi actualizada.", "Could not determine if TLS version of cURL is outdated or not because an error happened during the HTTPS request against https://nextcloud.com. Please check the nextcloud log file for more details." : "Non foi posíbel determinar se a versión TLS de cURL está desactualizada ou non porque se produciu un erro durante a solicitude HTTPS contra https://nextcloud.com. Consulte o ficheiro de rexistro de Nextcloud para obter máis detalles.", + "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "O número máximo de chaves OPcache está case superado. Para garantir que todos os scripts se poidan gardar na caché, recoméndase aplicar <code>opcache.max_accelerated_files</code> á súa configuración de PHP cun valor superior a <code>%s</code>.", + "Admin privileges" : "Privilexios de administrador", "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "O revogado deste testemuño pode impedir a limpeza deste dispositivo se aínda non comezou.", + "Unable to update biography" : "Non se puido actualizar a biografía", + "Unable to update full name" : "Non se puido actualizar o nome completo", + "No full name set" : "Non se definiu ningún nome completo", + "Unable to update headline" : "Non se puido actualizar o titular", + "Unable to update organisation" : "Non se puido actualizar a organización", + "Unable to update role" : "Non se puido actualizar o cargo", + "Change scope level of {accountProperty}" : "Cambiar o nivel de ámbito de {accountProperty}", + "Unable to update federation scope of the primary {accountProperty}" : "Non se puido actualizar o ámbito de federación da {accountProperty} principal", + "Unable to update federation scope of additional {accountProperty}" : "Non se puido actualizar o ámbito da federación de {accountProperty} adicional", "Address" : "Enderezo", "Avatar" : "Avatar", "An error occured during the request. Unable to proceed." : "Produciuse un erro durante a solicitude. Non é posíbel continuar.", @@ -394,19 +536,26 @@ OC.L10N.register( "Some jobs didn’t execute since %s. Please consider switching to system cron." : "Dende %s non se executou ningún traballo. Considere cambiar ao cron do sistema.", "Last job ran %s." : "O último traballo executouse %s.", "Background job didn’t run yet!" : "O traballo en segundo plano aínda non se executou!", + "For the server to work properly, it's important to configure background jobs correctly. \"Cron\" is the recommended setting. Please see the documentation for more information." : "Para que o servidor funcione correctamente, é importante configurar correctamente os traballos en segundo plano. \"Cron\" é a configuración recomendada. Consulte a documentación para obter máis información.", "Pick background job setting" : "Escolla os axustes do traballo en segundo plano", "Recommended" : "Recomendado", "The cron.php needs to be executed by the system user \"%s\"." : "O cron.php debe ser executado polo usuario do sistema «%s»", "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Permitir autocompletar o nome de usuario cando se introduce o nome completo ou o enderezo de correo-e ignorando a coincidencia da lista de teléfonos que falta e está no mesmo grupo", + "Change privacy level of profile picture" : "Cambia o nivel de privacidade da imaxe de perfil", "Upload new" : "Novo envío", "Select from Files" : "Seleccionar dende Ficheiros", "Remove image" : "Retirar a imaxe", + "Please note that it can take up to 24 hours for the avatar to get updated everywhere." : "Ten en conta que o avatar pode tardar ata 24 horas en actualizarse en todas partes.", "Choose as profile picture" : "Seleccionar como imaxe do perfil", "You are using <strong>%s</strong>" : "Está usando <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Está usando <strong>%1$s</strong> de <strong>%2$s</strong> (<strong>%3$s%%)", + "Change privacy level of phone number" : "Cambia o nivel de privacidade do número de teléfono", + "Change privacy level of address" : "Cambia o nivel de privacidade do enderezo", "Your postal address" : "O seu enderezo postal", + "Change privacy level of website" : "Cambiar o nivel de privacidade do sitio web", "It can take up to 24 hours before the account is displayed as verified." : "Pode levar ata 24 horas antes de que a conta apareza como como verificada.", "Link https://…" : "Ligazón https://…", + "Change privacy level of Twitter profile" : "Cambia o nivel de privacidade do perfil de Twitter", "Twitter handle @…" : "Usuario do Twitter @…" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/settings/l10n/gl.json b/apps/settings/l10n/gl.json index 91ea7f982d5..c8279dc762e 100644 --- a/apps/settings/l10n/gl.json +++ b/apps/settings/l10n/gl.json @@ -1,8 +1,11 @@ { "translations": { "Private" : "Privado", + "Only visible to people matched via phone number integration through Talk on mobile" : "Só son visibles para as persoas coincidentes mediante a integración do número de teléfono a través de Talk no móbil", "Local" : "Local", + "Only visible to people on this instance and guests" : "Só visible para as persoas desta instancia e os convidados", "Federated" : "Federado", "Only synchronize to trusted servers" : "Sincronizar só con servidores de confianza", + "Published" : "Publicado", "Synchronize to trusted servers and the global and public address book" : "Sincronizar con servidores de confianza e co caderno de enderezos global e público", "Verify" : "Verificar", "Verifying …" : "Verificando…", @@ -34,6 +37,7 @@ "You changed your email address" : "Vostede cambiou o seu enderezo de correo", "Your email address was changed by an administrator" : "O seu enderezo de correo foi cambiado por un administrador", "You created app password \"{token}\"" : "Vostede creou o contrasinal da aplicación «{token}»", + "An administrator created app password \"{token}\"" : "Un administrador creou o contrasinal da aplicación \"{token}\"", "You deleted app password \"{token}\"" : "Vostede eliminou o contrasinal da aplicación «{token}»", "You renamed app password \"{token}\" to \"{newToken}\"" : "Vostede renomeou o contrasinal da aplicación «{token}» como «{newToken}»", "You granted filesystem access to app password \"{token}\"" : "Vostede concedeu acceso ao sistema de ficheiros ao contrasinal da aplicación «{token}»", @@ -44,14 +48,29 @@ "Remote wipe was started on %1$s" : "Iniciouse a limpeza remota en %1$s", "Remote wipe has finished on %1$s" : "Rematou a limpeza remota en %1$s", "Your <strong>password</strong> or <strong>email</strong> was modified" : "Foi modificado o seu <strong>contrasinal</strong> ou o seu <strong>correo electrónico</strong>", + "Could not remove app." : "Non se puido eliminar a aplicación.", + "Could not update app." : "Non se puido actualizar a aplicación.", "Wrong password" : "Contrasinal incorrecto", + "Unable to change personal password" : "Non se puido cambiar o contrasinal persoal", "Saved" : "Gardado", "No user supplied" : "Non subministrado polo usuario", + "Unable to change password. Password too long." : "Non se puido cambiar o contrasinal. O contrasinal é demasiado longo.", "Authentication error" : "Produciuse un erro de autenticación", "Please provide an admin recovery password; otherwise, all user data will be lost." : "Forneza un contrasinal de recuperación de administrador; senón perderase toda a información do usuario.", "Wrong admin recovery password. Please check the password and try again." : "Contrasinal de recuperación do administrador incorrecto. Comprobe o contrasinal e ténteo de novo.", + "Backend does not support password change, but the user's encryption key was updated." : "O backend non admite o cambio de contrasinal, pero actualizouse a clave de cifrado do usuario.", + "installing and updating apps via the App Store or Federated Cloud Sharing" : "instalar e actualizar aplicacións a través da App Store ou Federated Cloud Sharing", "Federated Cloud Sharing" : "Nube federada compartida", "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL está utilizando unha versión obsoleta %1$s (%2$s). Actualice o seu sistema operativo, caso contrario características como %3$s non funcionarán de xeito fiábel.", + "Could not determine if TLS version of cURL is outdated or not because an error happened during the HTTPS request against https://nextcloud.com. Please check the Nextcloud log file for more details." : "Non se puido determinar se a versión TLS de cURL está desactualizada ou non porque se produciu un erro durante a solicitude HTTPS contra https://nextcloud.com. Consulte o ficheiro de rexistro de Nextcloud para obter máis detalles.", + "The PHP OPcache module is not loaded. For better performance it is recommended to load it into your PHP installation." : "O módulo PHP OPcache non está cargado. Para un mellor rendemento, recoméndase cargalo na súa instalación de PHP.", + "OPcache is disabled. For better performance, it is recommended to apply <code>opcache.enable=1</code> to your PHP configuration." : "OPcache está desactivado. Para un mellor rendemento, recoméndase aplicar <code>opcache.enable=1</code> á súa configuración de PHP.", + "OPcache is configured to remove code comments. With OPcache enabled, <code>opcache.save_comments=1</code> must be set for Nextcloud to function." : "OPcache está configurado para eliminar comentarios de código. Con OPcache activado, debe configurarse <code>opcache.save_comments=1</code> para que Nextcloud funcione.", + "Nextcloud is not allowed to use the OPcache API. With OPcache enabled, it is highly recommended to include all Nextcloud directories with <code>opcache.restrict_api</code> or unset this setting to disable OPcache API restrictions, to prevent errors during Nextcloud core or app upgrades." : "Nextcloud non pode usar a API OPcache. Con OPcache activado, é moi recomendable incluír todos os directorios de Nextcloud con <code>opcache.restrict_api</code> ou desactivar esta configuración para desactivar as restricións da API de OPcache, para evitar erros durante as actualizacións do núcleo de Nextcloud ou da aplicación.", + "Nextcloud is not allowed to use the OPcache API. It is highly recommended to include all Nextcloud directories with <code>opcache.restrict_api</code> or unset this setting to disable OPcache API restrictions, to prevent errors during Nextcloud core or app upgrades." : "Nextcloud non pode usar a API OPcache. É moi recomendable incluír todos os directorios de Nextcloud con <code>opcache.restrict_api</code> ou desactivar esta configuración para desactivar as restricións da API de OPcache, para evitar erros durante as actualizacións do núcleo de Nextcloud ou das aplicacións.", + "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be kept in the cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "O número máximo de chaves OPcache está case superado. Para garantir que todos os scripts poden manterse na caché, recoméndase aplicar <code>opcache.max_accelerated_files</code> á súa configuración de PHP cun valor superior a <code>%s</code>.", + "The OPcache buffer is nearly full. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.memory_consumption</code> to your PHP configuration with a value higher than <code>%s</code>." : "O búfer OPcache está case cheo. Para garantir que todos os scripts se poidan gardar na caché, recoméndase aplicar <code>opcache.memory_consumption</code> á súa configuración de PHP cun valor superior a <code>%s</code>.", + "The OPcache interned strings buffer is nearly full. To assure that repeating strings can be effectively cached, it is recommended to apply <code>opcache.interned_strings_buffer</code> to your PHP configuration with a value higher than <code>%s</code>." : "O búfer de cadeas internadas en OPcache está case cheo. Para asegurarse de que as cadeas que se repiten poidan almacenarse na caché de forma efectiva, recoméndase aplicar <code>opcache.interned_strings_buffer</code> á súa configuración de PHP cun valor superior a <code>%s</code>.", "Administrator documentation" : "Documentación do administrador", "User documentation" : "Documentación do usuario", "Invalid SMTP password." : "Contrasinal SMTP incorrecta.", @@ -60,12 +79,14 @@ "If you received this email, the email configuration seems to be correct." : "Se vostede ten recibido este correo, a configuración do correo semella ser correcta. ", "Email could not be sent. Check your mail server log" : "Non foi posíbel enviar o correo. Comprobe o rexistro do servidor de correo", "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Ocorreu un problema ao enviar o correo. Revise a súa configuración. (Erro: %s)", + "You need to set your user email before being able to send test emails. Go to %s for that." : "Debes configurar o teu correo electrónico de usuario antes de poder enviar correos electrónicos de proba. Vaia a %spara iso.", "Invalid user" : "Usuario incorrecto", "Invalid mail address" : "Enderezo de correo incorrecto", "Settings saved" : "Axustes gardados", "Unable to change full name" : "Non é posíbel cambiar o nome completo", "Unable to change email address" : "Non é posíbel cambiar o enderezo de correo.", "Unable to set invalid phone number" : "Non é posíbel estabelecer un número de teléfono non válido", + "Unable to set invalid website" : "Non se puido establecer o sitio web non válido", "Some account data was invalid" : "Algúns datos da conta non eran válidos", "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Para poder verificar a súa conta de Twitter, publique o seguinte chío en Twitter (asegúrese de publicar sen ningún salto de liña):", "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Para poder verificar o seu sitio Web, engada o seguinte contido ao seu web-root en «.well-known/CloudIdVerificationCode.txt» (asegúrese de que o texto completo estea só nunha liña):", @@ -95,10 +116,12 @@ "Personal" : "Persoal", "Administration" : "Administración", "Additional settings" : "Axustes adicionais", + "Administration privileges" : "Privilexios de administración", "Groupware" : "Software colaborativo", "Overview" : "Vista xeral", "Basic settings" : "Axustes básicos", "Sharing" : "Compartindo", + "Availability" : "Dispoñibilidade", "Calendar" : "Calendario", "Personal info" : "Información persoal", "Mobile & desktop" : "Móbil e escritorio", @@ -113,9 +136,17 @@ "Verifying" : "Verificando", "A background job is pending that checks for user imported SSL certificates. Please check back later." : "Está pendente un traballo en segundo plano que comprobe os certificados SSL importados polo usuario. Volva comprobar máis adiante.", "There are some user imported SSL certificates present, that are not used anymore with Nextcloud 21. They can be imported on the command line via \"occ security:certificates:import\" command. Their paths inside the data directory are shown below." : "Hai algúns certificados SSL importados polo usuario, que xa non se usan con Nextcloud 21. Pódense importar coa liña de ordes mediante a orde «occ security:certificates:import». As súas rutas dentro do directorio de datos amosanse deseguido.", + "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Atopáronse UUID non válidos de usuarios ou grupos LDAP. Revisa a túa configuración de \"Anular detección de UUID\" na parte Experto da configuración LDAP e utiliza \"occ ldap:update-uuid\" para actualizalos.", "The old server-side-encryption format is enabled. We recommend disabling this." : "O antigo formato de cifrado de lado do servidor está activado. Recomendámoslle desactivalo.", + "MariaDB version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MariaDB 10.2 or higher." : "Utilízase a versión \"%s\" de MariaDB. Nextcloud 21 ou superior non admite esta versión e require MariaDB 10.2 ou superior.", + "MySQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MySQL 8.0 or MariaDB 10.2 or higher." : "Utilízase a versión de MySQL \"%s\". Nextcloud 21 e superior non admite esta versión e requiren MySQL 8.0 ou MariaDB 10.2 ou superior.", + "PostgreSQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require PostgreSQL 9.6 or higher." : "Utilízase a versión de PostgreSQL \"%s\". Nextcloud 21 ou superior non admite esta versión e require PostgreSQL 9.6 ou superior.", + "Profile information" : "Información do perfil", + "Profile picture, full name, email, phone number, address, website, Twitter, organisation, role, headline, biography, and whether your profile is enabled" : "Imaxe de perfil, nome completo, correo electrónico, número de teléfono, enderezo, sitio web, Twitter, organización, función, título, biografía e se o teu perfil está activado", "Nextcloud settings" : "Axustes do Nextcloud", + "Here you can decide which group can access certain sections of the administration settings." : "Aquí pode decidir que grupo pode acceder a determinadas seccións da configuración de administración.", "None" : "Ningún", + "Unable to modify setting" : "Non se puido modificar a configuración", "Two-Factor Authentication" : "Autenticación de dous factores", "Two-factor authentication can be enforced for all users and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "A autenticación de dous factores pode ser aplicada para todos os usuarios e grupos específicos. Se non tiveran configurado un provedor de dous factores, non podería acceder ao sistema.", "Enforce two-factor authentication" : "Obrigar a autenticación de dous factores", @@ -146,6 +177,7 @@ "Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "As aplicacións destacadas están desenvolvidas por e dentro da comunidade. Ofrecen unha funcionalidade central e están preparadas para o seu uso en produción.", "Featured" : "Destacada", "Update to {update}" : "Actualizar a {update}", + "All apps are up-to-date." : "Todas as aplicacións están actualizadas.", "Results from other categories" : "Resultados doutras categorías", "No apps found for your version" : "Non se atoparon aplicacións para a súa versión", "Disable all" : "Desactivar todo", @@ -157,6 +189,7 @@ "Rename" : "Renomear", "Revoke" : "Revogar", "Wipe device" : "Limpar o dispositivo", + "Revoking this token might prevent the wiping of your device if it has not started the wipe yet." : "A revogación deste token pode impedir a eliminación do teu dispositivo se aínda non iniciou a eliminación.", "Internet Explorer" : "Internet Explorer", "Edge" : "Edge", "Firefox" : "Firefox", @@ -165,6 +198,10 @@ "Google Chrome for Android" : "Google Chrome para Android", "iPhone" : "iPhone", "iPad" : "iPad", + "{productName} iOS app" : "{productName} aplicación de iOS", + "{productName} Android app" : "{productName} aplicación de Android", + "{productName} Talk for iOS" : "{productName} Talk para iOS", + "{productName} Talk for Android" : "{productName} Talk para Android", "Sync client - {os}" : "Cliente de sincronización - {os}", "This session" : "Esta sesión", "Device" : "Dispositivo", @@ -189,12 +226,27 @@ "Copied!" : "Copiado!", "Copy" : "Copiar", "Could not copy app password. Please copy it manually." : "Non foi posíbel copiar o contrasinal da app. Cópieo manualmente.", + "For the server to work properly, it's important to configure background jobs correctly. Cron is the recommended setting. Please see the documentation for more information." : "Para que o servidor funcione correctamente, é importante configurar correctamente os traballos en segundo plano. Cron é a configuración recomendada. Consulte a documentación para obter máis información.", + "Last job execution ran {time}. Something seems wrong." : "A última execución do traballo executouse o {time}. Algo parece funcionar mal.", + "Last job ran {relativeTime}." : "O último traballo executouse {relativeTime}.", + "Background job did not run yet!" : "O traballo en segundo plano aínda non se executou!", + "AJAX" : "AJAX", + "Execute one task with each page loaded. Use case: Single user instance." : "Executar unha tarefa con cada páxina cargada. Caso de uso: instancia de usuario único.", + "Webcron" : "Webcron", + "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP. Use case: Very small instance (1–5 users depending on the usage)." : "cron.php está rexistrado nun servizo webcron para chamar a cron.php cada 5 minutos a través de HTTP. Caso de uso: instancia moi pequena (de 1 a 5 usuarios segundo o uso).", + "Cron (Recommended)" : "Cron (Recomendado)", "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Para executar isto necesitase a extensión POSIX de PHP. Vexa a {linkstart}documentación de PHP{linkend} para obter máis detalles. ", + "Use system cron service to call the cron.php file every 5 minutes. Recommended for all instances." : "Use o servizo cron do sistema para chamar ao ficheiro cron.php cada 5 minutos. Recomendado para todos os casos.", + "The cron.php needs to be executed by the system user \"{user}\"." : "O cron.php debe ser executado polo usuario do sistema \"{user}\".", + "Unable to update background job mode" : "Non se puido actualizar o modo de traballo en segundo plano", "Profile" : "Perfil", + "Enable or disable profile by default for new users." : "Activa ou desactiva o perfil por defecto para os novos usuarios.", "Enable" : "Activar", + "Unable to update profile default setting" : "Non se puido actualizar a configuración predeterminada do perfil", "Server-side encryption" : "Cifrado na parte do servidor", "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "O cifrado do lado do servidor fai posíbel cifrar os ficheiros que van ser enviados a este servidor. Isto leva algunhas limitacións como penalizacións no rendemento, así que actíveo só se é necesario.", "Enable server-side encryption" : "Activar o cifrado na parte do servidor", + "Please read carefully before activating server-side encryption:" : "Lea atentamente antes de activar o cifrado do servidor:", "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Una vez que o cifrado estea activado, todos os ficheiros enviados ao servidor dende ese punto en diante cifraranse en repouso no servidor. Só será posíbel desactivar o cifrado nunha data posterior se o módulo de cifrado activado admite esa función, e se cumpran todas as condicións previas (por exemplo, o estabelecemento dunha clave de recuperación).", "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "O cifrado por si só non garante a seguridade do sistema. Vexa a documentación para obter máis información sobre como funciona a aplicación de cifrado e os casos de uso admitidos.", "Be aware that encryption always increases the file size." : "Teña presente que o cifrado sempre incrementa o tamaño do ficheiro.", @@ -202,30 +254,85 @@ "This is the final warning: Do you really want to enable encryption?" : "Esta é a advertencia final. Confirma que quere activar o cifrado?", "No encryption module loaded, please enable an encryption module in the app menu." : "Non hai cargado ningún módulo de cifrado, active un módulo de cifrado no menú de aplicacións.", "Select default encryption module:" : "Seleccionar o módulo predeterminado de cifrado:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run {command}" : "Debes migrar as túas claves de cifrado do cifrado antigo (ownCloud <= 8.0) ao novo. Activa o \"Módulo de cifrado predeterminado\" e executa {command}", + "Unable to update server side encryption config" : "Non se puido actualizar a configuración de cifrado do servidor", + "Rename group" : "Cambiar o nome do grupo", "Remove group" : "Retirar o grupo", "You are about to remove the group {group}. The users will NOT be deleted." : "Está a piques de retirar o grupo {group}. Os usuarios NON van seren eliminados.", "Please confirm the group removal " : "Confirme a retirada do grupo ", "Current password" : "Contrasinal actual", "New password" : "Novo contrasinal", "Change password" : "Cambiar o contrasinal", + "Your profile picture" : "A túa imaxe de perfil", + "Upload profile picture" : "Subir imaxe de perfil", + "Choose profile picture from files" : "Escolle a imaxe de perfil dende Ficheiros", + "Remove profile picture" : "Eliminar a imaxe de perfil", "png or jpg, max. 20 MB" : "png ou jpg, max. 20 MB", "Picture provided by original account" : "Imaxe fornecida pola conta orixinal ", "Cancel" : "Cancelar", + "Set as profile picture" : "Establecer como imaxe de perfil", + "Please note that it can take up to 24 hours for your profile picture to be updated everywhere." : "Ten en conta que pode tardar ata 24 horas en actualizar a túa foto de perfil en todas partes.", + "Choose your profile picture" : "Escolle a túa imaxe de perfil", + "Please select a valid png or jpg file" : "Seleccione un ficheiro png ou jpg válido", + "Error setting profile picture" : "Produciuse un erro ao configurar a imaxe de perfil", + "Error cropping profile picture" : "Produciuse un erro ao recortar a imaxe de perfil", + "Error saving profile picture" : "Produciuse un erro ao gardar a imaxe de perfil", + "Error removing profile picture" : "Produciuse un erro ao eliminar a imaxe de perfil", + "Your biography" : "A túa biografía", "Details" : "Detalles", "You are a member of the following groups:" : "Vostede é membro dos seguintes grupos: ", + "You are using <strong>{usage}</strong>" : "Estás usando <strong>{usage}</strong>", + "You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Estás usando <strong>{usage}</strong> de <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)", + "Your full name" : "O teu nome completo", + "Email options" : "Opcións de correo electrónico", + "Primary email for password reset and notifications" : "Correo electrónico principal para restablecer o contrasinal e notificacións", + "Remove primary email" : "Eliminar o correo electrónico principal", + "Delete email" : "Eliminar o correo electrónico", + "Unset as primary email" : "Desactivar como correo electrónico principal", + "This address is not confirmed" : "Este enderezo non está confirmado", + "Set as primary email" : "Establecer como correo electrónico principal", "Your email address" : "O seu enderezo de correo", + "Additional email address {index}" : "Enderezo de correo electrónico adicional {index}", + "Unable to delete primary email address" : "Non se puido eliminar o enderezo de correo electrónico principal", + "Unable to update primary email address" : "Non se puido actualizar o enderezo de correo electrónico principal", + "Unable to add additional email address" : "Non se puido engadir un enderezo de correo electrónico adicional", + "Unable to update additional email address" : "Non se puido actualizar o enderezo de correo electrónico adicional", + "Unable to delete additional email address" : "Non se puido eliminar o enderezo de correo electrónico adicional", "No email address set" : "Non hai un enderezo de correo definido", + "Additional emails" : "Correos electrónicos adicionais", + "Your handle" : "O teu apodo", + "Your headline" : "O teu titular", "Language" : "Idioma", "Help translate" : "Axude na tradución", + "Unable to update language" : "Non se puido actualizar o idioma", "No language set" : "Non foi estabelecido ningún idioma", "Locale" : "Configuración rexional", + "Week starts on {firstDayOfWeek}" : "A semana comeza o {firstDayOfWeek}", + "Unable to update locale" : "Non se puido actualizar a configuración rexional", + "No locale set" : "Non se definiu ningunha configuración rexional", + "Your location" : "A túa localización", + "Your organisation" : "A súa organización", "Your phone number" : "O seu número de teléfono", + "Edit your Profile visibility" : "Edita a visibilidade do teu Perfil", + "Enable Profile" : "Activar o Perfil", + "Unable to update profile enabled state" : "Non se puido actualizar o estado activado do perfil", + "The more restrictive setting of either visibility or scope is respected on your Profile. For example, if visibility is set to \"Show to everyone\" and scope is set to \"Private\", \"Private\" is respected." : "A configuración máis restritiva de visibilidade ou alcance é respectada no teu Perfil. Por exemplo, se a visibilidade está definida como \"Mostrar a todos\" e o ámbito está configurado como \"Privado\", respéctase \"Privado\".", + "{displayId}" : "{displayId}", + "Unable to update visibility of {displayId}" : "Non se puido actualizar a visibilidade de {displayId}", + "Your role" : "O teu cargo", "Your Twitter handle" : "O seu usuario do Twitter", "Your website" : "O seu sitio web", + "No {property} set" : "Non hai {property} definida", + "Unable to update {property}" : "Non se puido actualizar a {property}", + "Change scope level of {property}, current scope is {scope}" : "Cambiar o nivel de ámbito de {property}, o ámbito actual é {scope}", + "Unable to update federation scope of the primary {property}" : "Non se puido actualizar o ámbito de federación da {property} principal", + "Unable to update federation scope of additional {property}" : "Non se puido actualizar o ámbito da federación de {property} adicional", + "Add additional email" : "Engade correo electrónico adicional", "Add" : "Engadir", "You do not have permissions to see the details of this user" : "Vostede non ten permisos para ver os detalles deste usuario", "Add new password" : "Engadir un novo contrasinal", "Add new email address" : "Engadir un novo enderezo de correo", + "Add user to group" : "Engadir usuario ao grupo", "Set user as admin for" : "Estabelecer o usuario como administrador para", "Select user quota" : "Seleccionar a cota de usuario", "Delete user" : "Eliminar usuario", @@ -257,6 +364,7 @@ "No users in here" : "Aquí non hai usuarios", "Default quota" : "Cota predeterminada", "Common languages" : "Idiomas habituais", + "Other languages" : "Outras linguas", "Password change is disabled because the master key is disabled" : "O cambio de contrasinal está desactivado porque a clave principal está desactivada", "Passwordless authentication requires a secure connection." : "A autenticación sen contrasinal require dunha conexión segura.", "Add WebAuthn device" : "Engadir un dispositivo WebAuthn", @@ -294,22 +402,34 @@ "Profile picture" : "Imaxe do perfil", "About" : "Sobre", "Full name" : "Nome completo", + "Additional email" : "Correo electrónico adicional", "Headline" : "Titular", + "Organisation" : "Organización", "Phone number" : "Número de teléfono", "Role" : "Cargo", "Twitter" : "Twitter", + "Fediverse (e.g. Mastodon)" : "Fediverso (por exemplo, Mastodon)", "Website" : "Sitio web", + "Profile visibility" : "Visibilidade do perfil", + "Not available as this property is required for core functionality including file sharing and calendar invitations" : "Non dispoñible, xa que esta propiedade é necesaria para as funcións básicas, como compartir ficheiros e invitacións de calendario", + "Not available as federation has been disabled for your account, contact your system administrator if you have any questions" : "Non dispoñible porque a federación foi desactivada para a túa conta, ponte en contacto co administrador do sistema se tes algunha dúbida", + "Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions" : "Non está dispoñible xa que non se permite publicar datos específicos do usuario no servidor de busca, póñase en contacto co administrador do sistema se tes algunha dúbida", "Active apps" : "Aplcativos activos", "Disabled apps" : "Aplicacións desactivadas", "Updates" : "Actualizacións", "App bundles" : "Paquetes de aplicacións", "Featured apps" : "Aplis destacadas", + "Show to everyone" : "Mostrar a todos", + "Show to logged in users only" : "Mostrar só a usuarios que iniciaron sesión", "Hide" : "Agochar", "Download and enable" : "Descargar e activar", "Enable untested app" : "Activar a aplicación sen probar", + "The app will be downloaded from the App Store" : "A aplicación descargarase da Tenda de Aplicacións", "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Esta aplicación non está marcado como compatíbel coa súa versión do Nextcloud. Se continúa, poderá instalar a aplicación. Teña en conta que é probábel que a aplicación non funcione como se agarda.", "Never" : "Nunca", + "An error occurred during the request. Unable to proceed." : "Produciuse un erro durante a solicitude. Non se pode continuar.", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "A aplicación foi activada pero necesita ser actualizada. Vai ser redirixido cara a páxina de actualizarións en 5 segundos.", + "Error: This app cannot be enabled because it makes the server unstable" : "Erro: esta aplicación non se pode activar porque fai que o servidor sexa inestable", "Documentation" : "Documentación", "Forum" : "Foro", "Login" : "Acceso", @@ -331,6 +451,7 @@ "SMTP Username" : "Nome de usuario SMTP", "SMTP Password" : "Contrasinal SMTP", "Save" : "Gardar", + "Test and verify email settings" : "Proba e verifica a configuración do correo electrónico", "Send email" : "Enviar o correo", "It's important for the security and performance of your instance that everything is configured correctly. To help you with that we are doing some automatic checks. Please see the linked documentation for more information." : "É importante para a seguridade e o bo funcionamento da súa instancia que todo estea configurado correctamente. Para axudarlle niso, imos facer algunhas comprobacións automáticas. Vexa a documentación ligada para obter máis información. ", "All checks passed." : "Pasáronse todas as verificacións.", @@ -340,15 +461,21 @@ "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Volva verificar as <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">guías de instalación ↗</a>, e comprobe que non haxa erros ou avisos no <a href=\"%2$s\">rexistro</a>. ", "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Comprobe a seguridade do seu Nextcloud empregando o <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">noso escaneo de seguridade ↗</a>.", "Version" : "Versión", + "You need to enable the File sharing App." : "Debes activar a Aplicación Compartir ficheiros.", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Como administrador pode facer axustes finos do comportamento al compartir. Lea a documentación para obter máis más información.", "Allow apps to use the Share API" : "Permitir que as aplicacións empreguen a API para compartir", "Set default expiration date for shares" : "Estabeleza a data de caducidade predeterminada das comparticións", + "Expire after" : "Caduca tras", "day(s)" : "día(s)", "Enforce expiration date" : "Forzar a data de caducidade", + "Set default expiration date for shares to other servers" : "Establece a data de caducidade predeterminada para as accións compartidas con outros servidores", + "Allow users to share via link and emails" : "Permitir aos usuarios compartir mediante ligazóns e correos electrónicos", "Allow public uploads" : "Permitir os envíos públicos", "Always ask for a password" : "Pedir sempre un contrasinal", "Enforce password protection" : "Forzar a protección por contrasinal", + "Exclude groups from password requirements:" : "Excluír grupos dos requisitos de contrasinal:", "Set default expiration date" : "Definir a data predeterminada de caducidade", + "Exclude groups from creating link shares:" : "Excluír grupos da creación de ligazóns compartidas:", "Allow resharing" : "Permitir compartir", "Allow sharing with groups" : "Permitir compartir con grupos", "Restrict users to only share with users in their groups" : "Restrinxir os usuarios a compartir só cos usuarios dos seus grupos", @@ -356,6 +483,9 @@ "These groups will still be able to receive shares, but not to initiate them." : "Estes grupos poderán recibir comparticións, mais non inicialas.", "Allow username autocompletion in share dialog" : "Permitir autocompletar o nome de usuario no diálogo de compartir", "Allow username autocompletion to users within the same groups" : "Permitir autocompletar o nome de usuario aos usuarios dos mesmos grupos", + "Allow username autocompletion to users based on phone number integration" : "Permitir o autocompletado do nome de usuario aos usuarios en función da integración do número de teléfono", + "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Se está activado o autocompletado \"mesmo grupo\" e a \"integración do número de teléfono\", unha coincidencia en calquera é suficiente para mostrar ao usuario.", + "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Permitir o autocompletado ao introducir o nome completo ou o enderezo de correo electrónico (ignorando a coincidencia que falta na axenda telefónica e estar no mesmo grupo)", "Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "Amosar o texto de exención de responsabilidade na páxina de envío de ligazóns publicas (amosarase só cando a lista de ficheiros estea agochada)", "This text will be shown on the public link upload page when the file list is hidden." : "Este texto amosarase na páxina de envío das ligazóns públicas cando a lista de ficheiros estea agochada.", "Default share permissions" : "Permisos predeterminados para compartir", @@ -366,6 +496,7 @@ "Follow us on Mastodon" : "Síganos na Mastodon", "Check out our blog" : "Visite o noso blog ", "Subscribe to our newsletter" : "Subscríbase ao noso boletín", + "This community release of Nextcloud is unsupported and instant notifications are unavailable." : "Esta versión comunitaria de Nextcloud non é compatible e as notificacións instantáneas non están dispoñibles.", "Use a second factor besides your password to increase security for your account." : "Empregue un segundo factor ademais do seu contrasinal para aumentar a seguridade da súa conta.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : " Se usa aplicacións de terceiros para conectarse a Nextcloud, asegúrese de crear e configurar un contrasinal de aplicación para cada unha antes de activar a autenticación de segundo factor.", "Migration in progress. Please wait until the migration is finished" : "A migración está en proceso. Agarde a que remate.", @@ -378,7 +509,18 @@ "Couldn't update app." : "Non foi posíbel actualizar a aplicación.", "Backend doesn't support password change, but the user's encryption key was updated." : "A infraestrutura non admite o cambio de contrasinal, mais a clave de cifrado do usuario foi actualizada.", "Could not determine if TLS version of cURL is outdated or not because an error happened during the HTTPS request against https://nextcloud.com. Please check the nextcloud log file for more details." : "Non foi posíbel determinar se a versión TLS de cURL está desactualizada ou non porque se produciu un erro durante a solicitude HTTPS contra https://nextcloud.com. Consulte o ficheiro de rexistro de Nextcloud para obter máis detalles.", + "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "O número máximo de chaves OPcache está case superado. Para garantir que todos os scripts se poidan gardar na caché, recoméndase aplicar <code>opcache.max_accelerated_files</code> á súa configuración de PHP cun valor superior a <code>%s</code>.", + "Admin privileges" : "Privilexios de administrador", "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "O revogado deste testemuño pode impedir a limpeza deste dispositivo se aínda non comezou.", + "Unable to update biography" : "Non se puido actualizar a biografía", + "Unable to update full name" : "Non se puido actualizar o nome completo", + "No full name set" : "Non se definiu ningún nome completo", + "Unable to update headline" : "Non se puido actualizar o titular", + "Unable to update organisation" : "Non se puido actualizar a organización", + "Unable to update role" : "Non se puido actualizar o cargo", + "Change scope level of {accountProperty}" : "Cambiar o nivel de ámbito de {accountProperty}", + "Unable to update federation scope of the primary {accountProperty}" : "Non se puido actualizar o ámbito de federación da {accountProperty} principal", + "Unable to update federation scope of additional {accountProperty}" : "Non se puido actualizar o ámbito da federación de {accountProperty} adicional", "Address" : "Enderezo", "Avatar" : "Avatar", "An error occured during the request. Unable to proceed." : "Produciuse un erro durante a solicitude. Non é posíbel continuar.", @@ -392,19 +534,26 @@ "Some jobs didn’t execute since %s. Please consider switching to system cron." : "Dende %s non se executou ningún traballo. Considere cambiar ao cron do sistema.", "Last job ran %s." : "O último traballo executouse %s.", "Background job didn’t run yet!" : "O traballo en segundo plano aínda non se executou!", + "For the server to work properly, it's important to configure background jobs correctly. \"Cron\" is the recommended setting. Please see the documentation for more information." : "Para que o servidor funcione correctamente, é importante configurar correctamente os traballos en segundo plano. \"Cron\" é a configuración recomendada. Consulte a documentación para obter máis información.", "Pick background job setting" : "Escolla os axustes do traballo en segundo plano", "Recommended" : "Recomendado", "The cron.php needs to be executed by the system user \"%s\"." : "O cron.php debe ser executado polo usuario do sistema «%s»", "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Permitir autocompletar o nome de usuario cando se introduce o nome completo ou o enderezo de correo-e ignorando a coincidencia da lista de teléfonos que falta e está no mesmo grupo", + "Change privacy level of profile picture" : "Cambia o nivel de privacidade da imaxe de perfil", "Upload new" : "Novo envío", "Select from Files" : "Seleccionar dende Ficheiros", "Remove image" : "Retirar a imaxe", + "Please note that it can take up to 24 hours for the avatar to get updated everywhere." : "Ten en conta que o avatar pode tardar ata 24 horas en actualizarse en todas partes.", "Choose as profile picture" : "Seleccionar como imaxe do perfil", "You are using <strong>%s</strong>" : "Está usando <strong>%s</strong>", "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Está usando <strong>%1$s</strong> de <strong>%2$s</strong> (<strong>%3$s%%)", + "Change privacy level of phone number" : "Cambia o nivel de privacidade do número de teléfono", + "Change privacy level of address" : "Cambia o nivel de privacidade do enderezo", "Your postal address" : "O seu enderezo postal", + "Change privacy level of website" : "Cambiar o nivel de privacidade do sitio web", "It can take up to 24 hours before the account is displayed as verified." : "Pode levar ata 24 horas antes de que a conta apareza como como verificada.", "Link https://…" : "Ligazón https://…", + "Change privacy level of Twitter profile" : "Cambia o nivel de privacidade do perfil de Twitter", "Twitter handle @…" : "Usuario do Twitter @…" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/settings/src/router.js b/apps/settings/src/router.js index 121a9c90a2b..863bd49c32d 100644 --- a/apps/settings/src/router.js +++ b/apps/settings/src/router.js @@ -55,10 +55,26 @@ const router = new Router({ component: Users, props: true, name: 'users', + meta: { + title: () => { + return t('settings', 'Active users') + }, + }, children: [ { path: ':selectedGroup', name: 'group', + meta: { + title: (to) => { + if (to.params.selectedGroup === 'admin') { + return t('settings', 'Admins') + } + if (to.params.selectedGroup === 'disabled') { + return t('settings', 'Disabled users') + } + return decodeURIComponent(to.params.selectedGroup) + }, + }, component: Users, }, ], @@ -81,7 +97,8 @@ const router = new Router({ title: async (to) => { if (to.name === 'apps') { return t('settings', 'Your apps') - } else if (APPS_SECTION_ENUM[to.params.category]) { + } + if (APPS_SECTION_ENUM[to.params.category]) { return APPS_SECTION_ENUM[to.params.category] } await store.dispatch('getCategories') diff --git a/apps/theming/css/default.css b/apps/theming/css/default.css index bf139d0c830..3b732f1af3e 100644 --- a/apps/theming/css/default.css +++ b/apps/theming/css/default.css @@ -32,6 +32,7 @@ --color-box-shadow: rgba(var(--color-box-shadow-rgb), 0.5); --color-border: #ededed; --color-border-dark: #dbdbdb; + --color-border-maxcontrast: #949494; --font-face: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Cantarell, Ubuntu, 'Helvetica Neue', Arial, sans-serif, 'Noto Color Emoji', 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; --default-font-size: 15px; --animation-quick: 100ms; @@ -55,21 +56,21 @@ --background-invert-if-bright: invert(100%); --background-image-invert-if-bright: no; --primary-invert-if-bright: no; - --color-primary: #00639a; + --color-primary: #006aa3; --color-primary-default: #0082c9; --color-primary-text: #ffffff; - --color-primary-hover: #3282ae; - --color-primary-light: #e5eff4; - --color-primary-light-text: #00273d; - --color-primary-light-hover: #dbe4e9; + --color-primary-hover: #3287b5; + --color-primary-light: #e5f0f5; + --color-primary-light-text: #002a41; + --color-primary-light-hover: #dbe5ea; --color-primary-text-dark: #ededed; - --color-primary-element: #00639a; + --color-primary-element: #006aa3; --color-primary-element-default-hover: #329bd3; --color-primary-element-text: #ffffff; - --color-primary-element-hover: #3282ae; - --color-primary-element-light: #e5eff4; - --color-primary-element-light-text: #00273d; - --color-primary-element-light-hover: #dbe4e9; + --color-primary-element-hover: #3287b5; + --color-primary-element-light: #e5f0f5; + --color-primary-element-light-text: #002a41; + --color-primary-element-light-hover: #dbe5ea; --color-primary-element-text-dark: #ededed; --gradient-primary-background: linear-gradient(40deg, var(--color-primary) 0%, var(--color-primary-hover) 100%); --image-background-default: url('/apps/theming/img/background/kamil-porembinski-clouds.jpg'); diff --git a/apps/theming/l10n/fr.js b/apps/theming/l10n/fr.js index 6f394f9c1a1..631bfc3009d 100644 --- a/apps/theming/l10n/fr.js +++ b/apps/theming/l10n/fr.js @@ -10,7 +10,7 @@ OC.L10N.register( "The given privacy policy address is not a valid URL" : "L'adresse de la politique de confidentialité n'est pas une URL valide", "The given slogan is too long" : "Le slogan donné est trop long", "The given color is invalid" : "La couleur donnée est invalide", - "Disable-user-theming should be true or false" : "Désactiver le thème de l'utilisateur doit être vrai ou faux.", + "Disable-user-theming should be true or false" : "Désactiver le thème de l'utilisateur doit valoir vrai ou faux.", "Saved" : "Enregistré", "The file was uploaded" : "Le fichier a été téléversé", "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Le fichier téléversé dépasse la valeur upload_max_filesize située dans le fichier php.ini", diff --git a/apps/theming/l10n/fr.json b/apps/theming/l10n/fr.json index 4f35e88cbd2..de795ff49f8 100644 --- a/apps/theming/l10n/fr.json +++ b/apps/theming/l10n/fr.json @@ -8,7 +8,7 @@ "The given privacy policy address is not a valid URL" : "L'adresse de la politique de confidentialité n'est pas une URL valide", "The given slogan is too long" : "Le slogan donné est trop long", "The given color is invalid" : "La couleur donnée est invalide", - "Disable-user-theming should be true or false" : "Désactiver le thème de l'utilisateur doit être vrai ou faux.", + "Disable-user-theming should be true or false" : "Désactiver le thème de l'utilisateur doit valoir vrai ou faux.", "Saved" : "Enregistré", "The file was uploaded" : "Le fichier a été téléversé", "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Le fichier téléversé dépasse la valeur upload_max_filesize située dans le fichier php.ini", diff --git a/apps/theming/lib/Service/BackgroundService.php b/apps/theming/lib/Service/BackgroundService.php index a12d72109da..4879ad1cbad 100644 --- a/apps/theming/lib/Service/BackgroundService.php +++ b/apps/theming/lib/Service/BackgroundService.php @@ -46,7 +46,7 @@ class BackgroundService { // true when the background is bright and need dark icons public const THEMING_MODE_DARK = 'dark'; public const DEFAULT_COLOR = '#0082c9'; - public const DEFAULT_ACCESSIBLE_COLOR = '#00639a'; + public const DEFAULT_ACCESSIBLE_COLOR = '#006aa3'; public const BACKGROUND_SHIPPED = 'shipped'; public const BACKGROUND_CUSTOM = 'custom'; diff --git a/apps/theming/lib/Themes/DarkTheme.php b/apps/theming/lib/Themes/DarkTheme.php index ecd4c7d3fd6..588f8f5a8a6 100644 --- a/apps/theming/lib/Themes/DarkTheme.php +++ b/apps/theming/lib/Themes/DarkTheme.php @@ -91,6 +91,7 @@ class DarkTheme extends DefaultTheme implements ITheme { '--color-border' => $this->util->lighten($colorMainBackground, 7), '--color-border-dark' => $this->util->lighten($colorMainBackground, 14), + '--color-border-maxcontrast' => $this->util->lighten($colorMainBackground, 30), '--background-invert-if-dark' => 'invert(100%)', '--background-invert-if-bright' => 'no', diff --git a/apps/theming/lib/Themes/DefaultTheme.php b/apps/theming/lib/Themes/DefaultTheme.php index 1c967cd820e..cb4ed510068 100644 --- a/apps/theming/lib/Themes/DefaultTheme.php +++ b/apps/theming/lib/Themes/DefaultTheme.php @@ -157,6 +157,7 @@ class DefaultTheme implements ITheme { '--color-border' => $this->util->darken($colorMainBackground, 7), '--color-border-dark' => $this->util->darken($colorMainBackground, 14), + '--color-border-maxcontrast' => $this->util->darken($colorMainBackground, 42), '--font-face' => "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Cantarell, Ubuntu, 'Helvetica Neue', Arial, sans-serif, 'Noto Color Emoji', 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'", '--default-font-size' => '15px', diff --git a/build/integration/composer.json b/build/integration/composer.json index 89d8d46d7e0..45b125d5dd0 100644 --- a/build/integration/composer.json +++ b/build/integration/composer.json @@ -2,7 +2,7 @@ "require-dev": { "phpunit/phpunit": "^9", "dms/phpunit-arraysubset-asserts": "^0.4", - "behat/behat": "~3.11.0", + "behat/behat": "~3.12.0", "guzzlehttp/guzzle": "7.5.0", "jarnaiz/behat-junit-formatter": "^1.3", "sabre/dav": "4.4.0", diff --git a/build/integration/composer.lock b/build/integration/composer.lock index 6226448dd76..475f1e2930e 100644 --- a/build/integration/composer.lock +++ b/build/integration/composer.lock @@ -4,21 +4,21 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "a74acd4469dc8a86e5c8424449599eb7", + "content-hash": "c258447a785bb926461a14e209314e76", "packages": [], "packages-dev": [ { "name": "behat/behat", - "version": "v3.11.0", + "version": "v3.12.0", "source": { "type": "git", "url": "https://github.com/Behat/Behat.git", - "reference": "a19c72c78eb0cdf7b7c4dabfeec9eb3a282728fc" + "reference": "2f059c9172764ba1f1759b3679aca499b665330a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Behat/Behat/zipball/a19c72c78eb0cdf7b7c4dabfeec9eb3a282728fc", - "reference": "a19c72c78eb0cdf7b7c4dabfeec9eb3a282728fc", + "url": "https://api.github.com/repos/Behat/Behat/zipball/2f059c9172764ba1f1759b3679aca499b665330a", + "reference": "2f059c9172764ba1f1759b3679aca499b665330a", "shasum": "" }, "require": { @@ -36,6 +36,7 @@ }, "require-dev": { "herrera-io/box": "~1.6.1", + "phpspec/prophecy": "^1.15", "phpunit/phpunit": "^8.5 || ^9.0", "symfony/process": "^4.4 || ^5.0 || ^6.0", "vimeo/psalm": "^4.8" @@ -89,9 +90,9 @@ ], "support": { "issues": "https://github.com/Behat/Behat/issues", - "source": "https://github.com/Behat/Behat/tree/v3.11.0" + "source": "https://github.com/Behat/Behat/tree/v3.12.0" }, - "time": "2022-07-07T09:49:27+00:00" + "time": "2022-11-29T15:30:11+00:00" }, { "name": "behat/gherkin", @@ -3182,16 +3183,16 @@ }, { "name": "symfony/console", - "version": "v5.4.15", + "version": "v5.4.16", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "ea59bb0edfaf9f28d18d8791410ee0355f317669" + "reference": "8e9b9c8dfb33af6057c94e1b44846bee700dc5ef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/ea59bb0edfaf9f28d18d8791410ee0355f317669", - "reference": "ea59bb0edfaf9f28d18d8791410ee0355f317669", + "url": "https://api.github.com/repos/symfony/console/zipball/8e9b9c8dfb33af6057c94e1b44846bee700dc5ef", + "reference": "8e9b9c8dfb33af6057c94e1b44846bee700dc5ef", "shasum": "" }, "require": { @@ -3261,7 +3262,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.4.15" + "source": "https://github.com/symfony/console/tree/v5.4.16" }, "funding": [ { @@ -3277,20 +3278,20 @@ "type": "tidelift" } ], - "time": "2022-10-26T21:41:52+00:00" + "time": "2022-11-25T14:09:27+00:00" }, { "name": "symfony/dependency-injection", - "version": "v5.4.13", + "version": "v5.4.16", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "24cf522668845391c0542bc1de496366072a6d0e" + "reference": "a93e1863500940780fc1235f52d54397be2d14b3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/24cf522668845391c0542bc1de496366072a6d0e", - "reference": "24cf522668845391c0542bc1de496366072a6d0e", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/a93e1863500940780fc1235f52d54397be2d14b3", + "reference": "a93e1863500940780fc1235f52d54397be2d14b3", "shasum": "" }, "require": { @@ -3350,7 +3351,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v5.4.13" + "source": "https://github.com/symfony/dependency-injection/tree/v5.4.16" }, "funding": [ { @@ -3366,7 +3367,7 @@ "type": "tidelift" } ], - "time": "2022-08-30T19:10:13+00:00" + "time": "2022-11-25T07:33:13+00:00" }, { "name": "symfony/deprecation-contracts", @@ -3665,16 +3666,16 @@ }, { "name": "symfony/polyfill-ctype", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4" + "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", - "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", + "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", "shasum": "" }, "require": { @@ -3689,7 +3690,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -3727,7 +3728,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" }, "funding": [ { @@ -3743,20 +3744,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "433d05519ce6990bf3530fba6957499d327395c2" + "reference": "511a08c03c1960e08a883f4cffcacd219b758354" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/433d05519ce6990bf3530fba6957499d327395c2", - "reference": "433d05519ce6990bf3530fba6957499d327395c2", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354", + "reference": "511a08c03c1960e08a883f4cffcacd219b758354", "shasum": "" }, "require": { @@ -3768,7 +3769,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -3808,7 +3809,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0" }, "funding": [ { @@ -3824,20 +3825,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "219aa369ceff116e673852dce47c3a41794c14bd" + "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/219aa369ceff116e673852dce47c3a41794c14bd", - "reference": "219aa369ceff116e673852dce47c3a41794c14bd", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6", + "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6", "shasum": "" }, "require": { @@ -3849,7 +3850,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -3892,7 +3893,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0" }, "funding": [ { @@ -3908,20 +3909,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e" + "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", - "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", + "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", "shasum": "" }, "require": { @@ -3936,7 +3937,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -3975,7 +3976,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" }, "funding": [ { @@ -3991,20 +3992,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85" + "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/e440d35fa0286f77fb45b79a03fedbeda9307e85", - "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/9e8ecb5f92152187c4799efd3c96b78ccab18ff9", + "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9", "shasum": "" }, "require": { @@ -4013,7 +4014,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4054,7 +4055,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.27.0" }, "funding": [ { @@ -4070,20 +4071,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace" + "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/cfa0ae98841b9e461207c13ab093d76b0fa7bace", - "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", + "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", "shasum": "" }, "require": { @@ -4092,7 +4093,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4137,7 +4138,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" }, "funding": [ { @@ -4153,20 +4154,20 @@ "type": "tidelift" } ], - "time": "2022-05-10T07:21:04+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-php81", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "13f6d1271c663dc5ae9fb843a8f16521db7687a1" + "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/13f6d1271c663dc5ae9fb843a8f16521db7687a1", - "reference": "13f6d1271c663dc5ae9fb843a8f16521db7687a1", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/707403074c8ea6e2edaf8794b0157a0bfa52157a", + "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a", "shasum": "" }, "require": { @@ -4175,7 +4176,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4216,7 +4217,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.27.0" }, "funding": [ { @@ -4232,7 +4233,7 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/service-contracts", @@ -4580,16 +4581,16 @@ }, { "name": "symfony/yaml", - "version": "v5.4.14", + "version": "v5.4.16", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "e83fe9a72011f07c662da46a05603d66deeeb487" + "reference": "ebd37c71f62d5ec5f6e27de3e06fee492d4c6298" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/e83fe9a72011f07c662da46a05603d66deeeb487", - "reference": "e83fe9a72011f07c662da46a05603d66deeeb487", + "url": "https://api.github.com/repos/symfony/yaml/zipball/ebd37c71f62d5ec5f6e27de3e06fee492d4c6298", + "reference": "ebd37c71f62d5ec5f6e27de3e06fee492d4c6298", "shasum": "" }, "require": { @@ -4635,7 +4636,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v5.4.14" + "source": "https://github.com/symfony/yaml/tree/v5.4.16" }, "funding": [ { @@ -4651,7 +4652,7 @@ "type": "tidelift" } ], - "time": "2022-10-03T15:15:50+00:00" + "time": "2022-11-25T16:04:03+00:00" }, { "name": "theseer/tokenizer", diff --git a/core/Controller/WebAuthnController.php b/core/Controller/WebAuthnController.php index 1eab5c79be6..81e6daf51c7 100644 --- a/core/Controller/WebAuthnController.php +++ b/core/Controller/WebAuthnController.php @@ -7,6 +7,7 @@ declare(strict_types=1); * * @author Christoph Wurst <christoph@winzerhof-wurst.at> * @author Roeland Jago Douma <roeland@famdouma.nl> + * @author Richard Steinmetz <richard@steinmetz.cloud> * * @license GNU AGPL version 3 or any later version * @@ -29,6 +30,7 @@ namespace OC\Core\Controller; use OC\Authentication\Login\LoginData; use OC\Authentication\Login\WebAuthnChain; use OC\Authentication\WebAuthn\Manager; +use OC\URLGenerator; use OCP\AppFramework\Controller; use OCP\AppFramework\Http; use OCP\AppFramework\Http\JSONResponse; @@ -46,14 +48,16 @@ class WebAuthnController extends Controller { private ISession $session; private LoggerInterface $logger; private WebAuthnChain $webAuthnChain; + private UrlGenerator $urlGenerator; - public function __construct($appName, IRequest $request, Manager $webAuthnManger, ISession $session, LoggerInterface $logger, WebAuthnChain $webAuthnChain) { + public function __construct($appName, IRequest $request, Manager $webAuthnManger, ISession $session, LoggerInterface $logger, WebAuthnChain $webAuthnChain, URLGenerator $urlGenerator) { parent::__construct($appName, $request); $this->webAuthnManger = $webAuthnManger; $this->session = $session; $this->logger = $logger; $this->webAuthnChain = $webAuthnChain; + $this->urlGenerator = $urlGenerator; } /** @@ -106,6 +110,8 @@ class WebAuthnController extends Controller { ); $this->webAuthnChain->process($loginData); - return new JSONResponse([]); + return new JSONResponse([ + 'defaultRedirectUrl' => $this->urlGenerator->linkToDefaultPageUrl(), + ]); } } diff --git a/core/css/apps.css b/core/css/apps.css index ccd9e28b865..8acddbe81bc 100644 --- a/core/css/apps.css +++ b/core/css/apps.css @@ -331,8 +331,7 @@ kbd { background-color: var(--color-primary-light); } #app-navigation:not(.vue) > ul > li > ul > li.icon-loading-small:after { - left: 22px; - /* 44px / 2 */ + left: 22px; /* 44px / 2 */ } #app-navigation:not(.vue) > ul > li > ul > li > .app-navigation-entry-deleted { /* margin to keep active indicator visible */ @@ -380,8 +379,7 @@ kbd { border-radius: var(--border-radius-pill); color: var(--color-main-text); flex: 1 1 0px; - z-index: 100; - /* above the bullet to allow click*/ + z-index: 100; /* above the bullet to allow click*/ /* TODO: forbid using img as icon in menu? */ /* counter can also be inside the link */ } @@ -555,8 +553,7 @@ kbd { text-align: right; font-size: 9pt; line-height: 44px; - padding: 0 12px; - /* Same padding as all li > a in the app-navigation */ + padding: 0 12px; /* Same padding as all li > a in the app-navigation */ } #app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-counter.highlighted { padding: 0; @@ -572,8 +569,7 @@ kbd { padding-left: 5px; padding-right: 5px; display: block; - width: calc(100% - 1px); - /* Avoid border overlapping */ + width: calc(100% - 1px); /* Avoid border overlapping */ transition: opacity 250ms ease-in-out; opacity: 0; position: absolute; @@ -596,8 +592,7 @@ kbd { } #app-navigation:not(.vue) .app-navigation-entry-edit input[type=text] { width: 100%; - min-width: 0; - /* firefox hack: override auto */ + min-width: 0; /* firefox hack: override auto */ border-bottom-right-radius: 0; border-top-right-radius: 0; } @@ -646,8 +641,7 @@ kbd { } #app-navigation:not(.vue) .app-navigation-entry-edit, #app-navigation:not(.vue) .app-navigation-entry-deleted { - width: calc(100% - 1px); - /* Avoid border overlapping */ + width: calc(100% - 1px); /* Avoid border overlapping */ transition: transform 250ms ease-in-out, opacity 250ms ease-in-out, z-index 250ms ease-in-out; position: absolute; left: 0; @@ -689,11 +683,9 @@ kbd { border-top-left-radius: var(--border-radius-large); border-top-right-radius: var(--border-radius-large); } - #app-navigation { border-top-left-radius: var(--border-radius-large); } - #app-sidebar { border-top-right-radius: var(--border-radius-large); } @@ -1100,8 +1092,7 @@ kbd { .popovermenu li > .menuitem span[class*=" icon-"], .popovermenu li > .menuitem[class^=icon-], .popovermenu li > .menuitem[class*=" icon-"] { - min-width: 0; - /* Overwrite icons*/ + min-width: 0; /* Overwrite icons*/ min-height: 0; background-position: 14px center; background-size: 16px; @@ -1408,8 +1399,7 @@ kbd { .popovermenu li > a input, .popovermenu li > .menuitem input { min-width: 44px; - max-height: 40px; - /* twice the element margin-y */ + max-height: 40px; /* twice the element margin-y */ margin: 2px 0; flex: 1 1 auto; } diff --git a/core/css/apps.css.map b/core/css/apps.css.map index 4f7b7e3e6ae..dec69a18b46 100644 --- a/core/css/apps.css.map +++ b/core/css/apps.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["variables.scss","apps.scss","functions.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBA;AAAA;AAAA;AA4BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AD5BA;EACC;AACA;EACA;EACA;;;AAGD;EACC;IACC;IACA;;;AAKF;EACC;EACA;EACA;EAEA;;;AAGD;EAEC;EAEA;EACA;EACA;EACA;EACA;EACA;;;AAGD;AAEA;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;AACA;EACC;EACA;;;AAGD;EACC;;;AAGD;AAAA;EAEC;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAID;AAEA;EACC;;;AAGD;AACA;AACA;EAEC;EAEA,ODfkB;ECgBlB;EACA;EACA;EACA;EACA;EACA;EAAwD;EACxD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;AAkQA;AAAA;AAAA;AAiBA;AAAA;AAAA;AA6EA;AAAA;AAAA;AAmDA;AAAA;AAAA;AAsDA;AAAA;AAAA;AA2BA;AAAA;AAAA;AAeA;AAAA;AAAA;;AAlfA;EACC;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAIF;EACC;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAwIA;;AAtIA;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;AAwCA;AAMA;AAwBA;;AArEA;EACC;;AACA;EACC;;AAIF;AACC;EACA;;AAED;AACC;AACA;AAAA;EAEA;;AAKA;AAAA;AAAA;AAAA;EAEC;;AAGF;EACC;EACA;;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAKF;EACC;EACA;;AAMA;EAEC;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAKF;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;AAmBA;;AAfC;AAAA;AAAA;EAEC;EACA;;AAKD;AAAA;AAAA;AAAA;EAEC;EACA;;AAKF;EACC;AAAY;;AAGb;AACC;EACA;EACA;;AAGD;AACC;EACA;AACA;AAAA;EAEA;;AAMJ;AAAA;EAEC;EACA;AACA;AAQA;AA2CA;AAkBA;AAKA;;AAxEC;AAAA;AAAA;AAAA;AAEC;EACA;;AAIF;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAAc;AACd;AAgBA;;AAdA;AAAA;EACC;;AACA;AAAA;EACC;;AAGF;AAAA;EACC;EACA;EACA;EAEA;;AAID;AAAA;EACC;EACA;;AACA;AAAA;EACC;;AAKH;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;AACC;EACA;;AAKF;AAAA;EACC;;AAID;AAAA;EACC;EACA;;AAED;AAAA;EACC;EACA;;AAIH;EACC;;AAMD;AAAA;EAEC;EACA;EACA;EACA;EACA;;AACA;AAAA;AAAA;EAEC;EACA;;AAOF;AACC;AAAA;AAgDA;;AA9CA;EACC;EACA;EACA;EACA;EACA;EACA;AAEA;AAAA;EAEA;;AAEA;EACC;EACA;EACA;EACA;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;AC9XF;EAEA;ED8XE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAMD;EACC;;AAIA;EACC;;AAED;EACC;;AAED;EACC;;AAID;EACC;EACA;EACA;;AAQH;EACC;;AACA;EACC;EACA;EACA;;AAED;EACC;EACA;;AAED;EACC;EACA;EACA;EACA;;AAED;AACC;;AACA;AClcF;EAEA;;ADmcE;EAEC;EACA;;AAGF;EACC;EACA;EACA;EACA;EACA;AAAiB;;AAEjB;EACC;EACA;;AACA;EACC;EACA;EACA;EACA;;AASJ;EACC;EACA;EACA;EACA;AAAyB;EACzB;EACA;EACA;EACA;EACA;;AACA;AAAA;EAEC;EACA;;AAED;EACC;EACA;EACA;;AACA;AAEC;EACA;;AAGF;EACC;EACA;AAAc;EACd;EACA;;AAED;AAAA;EAEC;EACA;EACA;;AACA;AAAA;EACC;;AAED;AAAA;EACC;;AAED;AAAA;EACC;EACA;EACA;EACA;;AAQH;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;;AACA;EAEC;;AAQH;AAAA;EAEC;AAAyB;EACzB;EAGA;EACA;EACA;EACA;;AAMD;EACC;EACA;EACA;;AAGD;EACC;;AAGD;AAAA;EAEC;;;AAKF;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;;AAIF;EACC;IACC;IACA;;;EAED;IACC;;;EAED;IACC;;;AAIF;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAOA;EACC;EACA;EACA;EACA;EACA;EACA;AACA;AACA;AAKA;;AAJA;EACC;;AAID;EACC;EACA;EACA;AACA;AAAA;EAEA;AAEA;;AACA;AACC;EACA;;AACA;EACC;;;AAMJ;AACA;AAAA;AAAA;AAAA;AAIA;EACC;EACA,WDvnBmB;ECwnBnB,WDvnBmB;ECwnBnB;EACA;EACA;EACA,KD9nBe;EC+nBf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;;AAKF;AACA;AACA;EAEC;;AAGC;EACC;;;AAKH;EACC;EACA;EACA;EACA;AACA;EACA;EACA;EACA;AAEA;;AACA;EACC;;AAGD;EACC;EACA;;AAOE;EACC;EACA;EACA;;;AAOL;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;;AAEA;EACC;EACA;EACA;;AAED;EAEC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;;;AAKH;AACA;EACC;EACA;EACA;AAIA;;AAHA;EACC;;AAIA;EAEC;EACA;;;AAIH;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;;AAIF;AACA;EACC;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAMA;;AAJA;EACC;;AAID;EACC;;AAED;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;;AAED;EACC;;AAED;EAGC;EACA;EACA;;;AAIH;EACC;;AACA;EACC;;;AAIF;AAOC;AAAA;EACE;;;AAIH;AAAA;AAAA;EAGC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAmBA;AAUA;;AA3BA;AAAA;AAAA;EACC;EAKA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;AAAA;AAAA;EACC;EACA;EACA;;AACA;AAAA;AAAA;EACC;EACA;;AAIF;AAAA;AAAA;EACC;EACA;EACA;;AACA;AAAA;AAAA;EACC;EACA;;AAIF;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AACC;EACA;EACA;;AAED;AAAA;AAAA;EACC;EACA;AAuIA;;AArIA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGC;EACA,aA1FkB;EA2FlB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AA2CA;AAkBA;AAIA;AAAA;AAMA;AAyBA;AAKA;;AAnGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A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","file":"apps.css"}
\ No newline at end of file +{"version":3,"sourceRoot":"","sources":["variables.scss","apps.scss","functions.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBA;AAAA;AAAA;AA4BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AD5BA;EACC;AACA;EACA;EACA;;;AAGD;EACC;IACC;IACA;;;AAKF;EACC;EACA;EACA;EAEA;;;AAGD;EAEC;EAEA;EACA;EACA;EACA;EACA;EACA;;;AAGD;AAEA;EACC;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;;;AAGD;AACA;EACC;EACA;;;AAGD;EACC;;;AAGD;AAAA;EAEC;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAID;AAEA;EACC;;;AAGD;AACA;AACA;EAEC;EAEA,ODfkB;ECgBlB;EACA;EACA;EACA;EACA;EACA;EAAwD;EACxD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;AAkQA;AAAA;AAAA;AAiBA;AAAA;AAAA;AA6EA;AAAA;AAAA;AAmDA;AAAA;AAAA;AAsDA;AAAA;AAAA;AA2BA;AAAA;AAAA;AAeA;AAAA;AAAA;;AAlfA;EACC;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAIF;EACC;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAwIA;;AAtIA;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;AAwCA;AAMA;AAwBA;;AArEA;EACC;;AACA;EACC;;AAIF;AACC;EACA;;AAED;AACC;AACA;AAAA;EAEA;;AAKA;AAAA;AAAA;AAAA;EAEC;;AAGF;EACC;EACA;;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAKF;EACC;EACA;;AAMA;EAEC;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAKF;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;AAmBA;;AAfC;AAAA;AAAA;EAEC;EACA;;AAKD;AAAA;AAAA;AAAA;EAEC;EACA;;AAKF;EACC;;AAGD;AACC;EACA;EACA;;AAGD;AACC;EACA;AACA;AAAA;EAEA;;AAMJ;AAAA;EAEC;EACA;AACA;AAQA;AA2CA;AAkBA;AAKA;;AAxEC;AAAA;AAAA;AAAA;AAEC;EACA;;AAIF;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;AAgBA;;AAdA;AAAA;EACC;;AACA;AAAA;EACC;;AAGF;AAAA;EACC;EACA;EACA;EAEA;;AAID;AAAA;EACC;EACA;;AACA;AAAA;EACC;;AAKH;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;AACC;EACA;;AAKF;AAAA;EACC;;AAID;AAAA;EACC;EACA;;AAED;AAAA;EACC;EACA;;AAIH;EACC;;AAMD;AAAA;EAEC;EACA;EACA;EACA;EACA;;AACA;AAAA;AAAA;EAEC;EACA;;AAOF;AACC;AAAA;AAgDA;;AA9CA;EACC;EACA;EACA;EACA;EACA;EACA;AAEA;AAAA;EAEA;;AAEA;EACC;EACA;EACA;EACA;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;AC9XF;EAEA;ED8XE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAMD;EACC;;AAIA;EACC;;AAED;EACC;;AAED;EACC;;AAID;EACC;EACA;EACA;;AAQH;EACC;;AACA;EACC;EACA;EACA;;AAED;EACC;EACA;;AAED;EACC;EACA;EACA;EACA;;AAED;AACC;;AACA;AClcF;EAEA;;ADmcE;EAEC;EACA;;AAGF;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AACA;EACC;EACA;EACA;EACA;;AASJ;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;AAAA;EAEC;EACA;;AAED;EACC;EACA;EACA;;AACA;AAEC;EACA;;AAGF;EACC;EACA;EACA;EACA;;AAED;AAAA;EAEC;EACA;EACA;;AACA;AAAA;EACC;;AAED;AAAA;EACC;;AAED;AAAA;EACC;EACA;EACA;EACA;;AAQH;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;;AACA;EAEC;;AAQH;AAAA;EAEC;EACA;EAGA;EACA;EACA;EACA;;AAMD;EACC;EACA;EACA;;AAGD;EACC;;AAGD;AAAA;EAEC;;;AAKF;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;;AAIF;EACC;IACC;IACA;;EAED;IACC;;EAED;IACC;;;AAIF;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAOA;EACC;EACA;EACA;EACA;EACA;EACA;AACA;AACA;AAKA;;AAJA;EACC;;AAID;EACC;EACA;EACA;AACA;AAAA;EAEA;AAEA;;AACA;AACC;EACA;;AACA;EACC;;;AAMJ;AACA;AAAA;AAAA;AAAA;AAIA;EACC;EACA,WDvnBmB;ECwnBnB,WDvnBmB;ECwnBnB;EACA;EACA;EACA,KD9nBe;EC+nBf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;;AAKF;AACA;AACA;EAEC;;AAGC;EACC;;;AAKH;EACC;EACA;EACA;EACA;AACA;EACA;EACA;EACA;AAEA;;AACA;EACC;;AAGD;EACC;EACA;;AAOE;EACC;EACA;EACA;;;AAOL;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;;AAEA;EACC;EACA;EACA;;AAED;EAEC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;;;AAKH;AACA;EACC;EACA;EACA;AAIA;;AAHA;EACC;;AAIA;EAEC;EACA;;;AAIH;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;;AAIF;AACA;EACC;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAMA;;AAJA;EACC;;AAID;EACC;;AAED;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;;AAED;EACC;;AAED;EAGC;EACA;EACA;;;AAIH;EACC;;AACA;EACC;;;AAIF;AAOC;AAAA;EACE;;;AAIH;AAAA;AAAA;EAGC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAmBA;AAUA;;AA3BA;AAAA;AAAA;EACC;EAKA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;AAAA;AAAA;EACC;EACA;EACA;;AACA;AAAA;AAAA;EACC;EACA;;AAIF;AAAA;AAAA;EACC;EACA;EACA;;AACA;AAAA;AAAA;EACC;EACA;;AAIF;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AACC;EACA;EACA;;AAED;AAAA;AAAA;EACC;EACA;AAuIA;;AArIA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGC;EACA,aA1FkB;EA2FlB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AA2CA;AAkBA;AAIA;AAAA;AAMA;AAyBA;AAKA;;AAnGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA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","file":"apps.css"}
\ No newline at end of file diff --git a/core/css/header.css b/core/css/header.css index eb48529c608..637b5bc757a 100644 --- a/core/css/header.css +++ b/core/css/header.css @@ -267,8 +267,7 @@ /* User menu on the right */ } #settings #expand { - opacity: 1; - /* override icon opacity */ + opacity: 1; /* override icon opacity */ margin-right: 12px; /* Profile picture in header */ /* show triangle below user menu if active */ diff --git a/core/css/header.css.map b/core/css/header.css.map index d5d1a2abdb2..e28975f2866 100644 --- a/core/css/header.css.map +++ b/core/css/header.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["variables.scss","header.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBA;AACA;AAAA;EAEC;EACA;EACA;;AACA;AAAA;AAAA;AAAA;EACC;EACA;EACA;;;AAIF;AACA;AAAA;AAAA;EAGC;EACA;EACA;EACA;EACA;EACA,QDoEe;ECnEf;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;;AASF;AACC;AAqIA;;AAlIA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EAfD;EACA;EAgBC;EACA,KDyBc;ECxBd;EACA;AAMA;AAmBA;;AAvBA;EACC;;AAID;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EAEC;EAzCF;EACA;;AA6CC;EACC;EACA;EACA;EACA;;AAEC;EACC;EACA;EACA;EACA,QAlDuB;EAmDvB;EACA;EACA;EACA;EACA;EACA;;AACA;EAEC;;AAED;EAEC;;AAED;EACC;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAED;AAAA;EAEC;EACA;EACA;EACA;EACA;;AAML;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;AAGD;EACC;EACA;EACA;;AAGD;AAAA;EAEC;EACA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;;AAKA;AAAA;EAEC;EACA;;AACA;AAAA;EACC;EACA;EACA;EACA,ODzGY;EC0GZ;EACA;EACA;EACA;EACA;;AAEA;AAAA;EACC;;AAGD;AAAA;EACC;;;AAOL;AAEA;EACC;;;AAGD;AACA;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;AAEA;;AACA;EACC;AAAY;EACZ;AAqBA;AA2BA;;AA9CA;EAGC;;AAEA;AAAA;AAAA;AAAA;EAEC;EACA;EACA;;AAED;EACC;;AAED;EACC;;AAKF;EACC;EACA;EACA;AAMA;;AAJA;EACC;EACA;;AAGD;EACC;;AAIF;EACC;EACA;EACA;AAEA;;AACA;EACC;;AAKF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAIF;EACC;;;AAIF;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC,KDtPc;;;AC2PhB;AAGC;AAAA;EACC;EACA;;AAED;AAAA;AAAA;AAAA;EAEC;EACA;EACA","file":"header.css"}
\ No newline at end of file +{"version":3,"sourceRoot":"","sources":["variables.scss","header.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBA;AACA;AAAA;EAEC;EACA;EACA;;AACA;AAAA;AAAA;AAAA;EACC;EACA;EACA;;;AAIF;AACA;AAAA;AAAA;EAGC;EACA;EACA;EACA;EACA;EACA,QDoEe;ECnEf;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;;AASF;AACC;AAqIA;;AAlIA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EAfD;EACA;EAgBC;EACA,KDyBc;ECxBd;EACA;AAMA;AAmBA;;AAvBA;EACC;;AAID;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EAEC;EAzCF;EACA;;AA6CC;EACC;EACA;EACA;EACA;;AAEC;EACC;EACA;EACA;EACA,QAlDuB;EAmDvB;EACA;EACA;EACA;EACA;EACA;;AACA;EAEC;;AAED;EAEC;;AAED;EACC;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAED;AAAA;EAEC;EACA;EACA;EACA;EACA;;AAML;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;AAGD;EACC;EACA;EACA;;AAGD;AAAA;EAEC;EACA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;;AAKA;AAAA;EAEC;EACA;;AACA;AAAA;EACC;EACA;EACA;EACA,ODzGY;EC0GZ;EACA;EACA;EACA;EACA;;AAEA;AAAA;EACC;;AAGD;AAAA;EACC;;;AAOL;AAEA;EACC;;;AAGD;AACA;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;AAEA;;AACA;EACC;EACA;AAqBA;AA2BA;;AA9CA;EAGC;;AAEA;AAAA;AAAA;AAAA;EAEC;EACA;EACA;;AAED;EACC;;AAED;EACC;;AAKF;EACC;EACA;EACA;AAMA;;AAJA;EACC;EACA;;AAGD;EACC;;AAIF;EACC;EACA;EACA;AAEA;;AACA;EACC;;AAKF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAIF;EACC;;;AAIF;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC,KDtPc;;;AC2PhB;AAGC;AAAA;EACC;EACA;;AAED;AAAA;AAAA;AAAA;EAEC;EACA;EACA","file":"header.css"}
\ No newline at end of file diff --git a/core/css/inputs.css b/core/css/inputs.css index 964319cb55e..82e1a96ac7d 100644 --- a/core/css/inputs.css +++ b/core/css/inputs.css @@ -521,8 +521,7 @@ input[type=checkbox].radio:checked + label:before, input[type=checkbox].radio.ch } input[type=checkbox].radio:disabled + label:before, input[type=checkbox].checkbox:disabled + label:before, input[type=radio].radio:disabled + label:before, input[type=radio].checkbox:disabled + label:before { border: 1px solid var(--color-text-lighter); - background-color: var(--color-text-maxcontrast) !important; - /* override other status */ + background-color: var(--color-text-maxcontrast) !important; /* override other status */ } input[type=checkbox].radio:checked:disabled + label:before, input[type=checkbox].checkbox:checked:disabled + label:before, input[type=radio].radio:checked:disabled + label:before, input[type=radio].checkbox:checked:disabled + label:before { background-color: var(--color-text-maxcontrast); @@ -559,30 +558,24 @@ input[type=checkbox].radio--white:checked + label:before, input[type=checkbox].c border-color: #dbdbdb; } input[type=checkbox].radio--white:disabled + label:before, input[type=checkbox].checkbox--white:disabled + label:before, input[type=radio].radio--white:disabled + label:before, input[type=radio].checkbox--white:disabled + label:before { - background-color: #bababa !important; - /* override other status */ - border-color: rgba(255, 255, 255, 0.4) !important; - /* override other status */ + background-color: #bababa !important; /* override other status */ + border-color: rgba(255, 255, 255, 0.4) !important; /* override other status */ } input[type=checkbox].radio--white:checked:disabled + label:before, input[type=checkbox].checkbox--white:checked:disabled + label:before, input[type=radio].radio--white:checked:disabled + label:before, input[type=radio].checkbox--white:checked:disabled + label:before { box-shadow: inset 0px 0px 0px 2px var(--color-main-background); - border-color: rgba(255, 255, 255, 0.4) !important; - /* override other status */ + border-color: rgba(255, 255, 255, 0.4) !important; /* override other status */ background-color: #bababa; } input[type=checkbox].checkbox--white:checked + label:before, input[type=checkbox].checkbox--white:indeterminate + label:before, input[type=radio].checkbox--white:checked + label:before, input[type=radio].checkbox--white:indeterminate + label:before { - background-color: transparent !important; - /* Override default checked */ - border-color: #fff !important; - /* Override default checked */ + background-color: transparent !important; /* Override default checked */ + border-color: #fff !important; /* Override default checked */ background-image: url("../img/actions/checkbox-mark-white.svg"); } input[type=checkbox].checkbox--white:indeterminate + label:before, input[type=radio].checkbox--white:indeterminate + label:before { background-image: url("../img/actions/checkbox-mixed-white.svg"); } input[type=checkbox].checkbox--white:disabled + label:before, input[type=radio].checkbox--white:disabled + label:before { - opacity: 0.7; - /* No other choice for white background image */ + opacity: 0.7; /* No other choice for white background image */ } /* Select2 overriding. Merged to core with vendor stylesheet */ diff --git a/core/css/inputs.css.map b/core/css/inputs.css.map index d04696f5df2..16c0f8adab5 100644 --- a/core/css/inputs.css.map +++ b/core/css/inputs.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["variables.scss","inputs.scss","functions.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBA;AAAA;AAAA;AA4BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ADlCC;AACD;EACC;;;AAED;EACC;;;AAED;EACI;;;AAKJ;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;EAMC;EACA,YAVgB;EAWhB;;;AAGD;AAAA;AAAA;AAAA;AAAA;AAMA;EACI;;;AAGJ;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;EAMC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AA8BA;;AA5BC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;EACC;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;EACA;AAEA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGC;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;EACA;EACA;;;AAKH;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;;;AAGD;AACA;AAcC;AAAA;;AAbA;EACC;EACA;EAEA,QAjIe;;AAmIhB;EAIC;EACA;;AAID;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAED;EACC;;;AAIF;AACA;AAAA;AAAA;AAAA;AAAA;EAKC;EACA;EACA;EACA,YArKgB;EAsKhB;EACA;EACA;;AAEA;AAAA;AAAA;AAAA;AAAA;EACC;;;AAIF;AAAA;AAAA;AAAA;EAIC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;;;AAKA;AAAA;EACC;;AAIA;AAAA;EACC;;;AAKH;AACA;AAAA;AAAA;AAAA;EAIC;EACA;AAEA;;AACA;AAAA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AAAA;EACC;EACA;EACA;;;AAID;AACC;;AACA;EAEC;EACA;EACA;;;AAKH;AAEC;AAuBC;;AApBA;EACC;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA,QAlRc;EAmRd,OAnRc;EAoRd;EACA;EACA;;AACA;EACC;ACpPH;EAEA;;AD0PG;EACC;;AAID;EAGC;EACA;;AACA;EACC;;AAQH;EACC;EACA;AACA;EACA;;;AAOJ;AACA;AAAA;EAEC;;;AAED;AAAA;EAEC;;;AAGD;AAKC;AA8EC;;AA5EA;EAEC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAED;EAEC;;AAED;EACC;EACA;EACA,QAxBkB;EAyBlB,OAzBkB;EA0BlB;EACA;EACA;EACA;;AAED;EAEC;;AAED;EACC;EACA;EACA;EACA;;AAED;AAEA;AAAA;EAEC;EACA;EACA;;AAED;EACC;EACA;AAA4D;;AAE7D;EACC;;AAID;EACC;EACA;;AAED;EACC,eA/DkB;;AAmEnB;EACC;EACA,QArEkB;EAsElB,OAtEkB;EAuElB;EACA;;AAED;EACC;;AAED;EACC;;AAOD;EAEC;;AAED;EACC,cAzFyB;;AA2F1B;EACC;EACA;EACA;;AAED;EACC;AAAuE;EACvE;AAAiE;;AAElE;EACC;EACA;AAAiE;EACjE;;AAID;EAEC;AAA0C;EAC1C;AAAsD;EACtD;;AAED;EACC;;AAED;EACC;AAAc;;;AAMlB;AACA;EACC;EACA;;AACA;EACC;;AAED;EACC;EACA;EACA;;AACA;EACC;;AAGF;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;;AACA;EACC;;AACA;EACC;EACA;;AAIH;AAAA;AAAA;EAGC;EACA;EACA;EACA;EACA;EACA;;AAGA;EACC;;AAGF;EACE;EACA;;;AAMH;AAAA;AAAA;AAAA;EAEC;;;AAID;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAED;EACC;EACA;;AACA;EAIC;EACA;EACA;EACA;;AAED;EACC;;AAGF;EACC;EACA;EACA;EACA;;AACA;EACC;;;AAKJ;EACC;;AACA;EACC;EACA;;AACA;EACC;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAED;EACC;EACA;EACA;EACA;EACA;;AACA;EACC;;AAED;EAEC;EACA;;AAGF;EACC;EACA;EACA;;AACA;EACC;EACA;;AAGF;EAGC;;AAED;EACC;;;AAKH;AACA;EACC;EACA;;AACA;EACC;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAIH;EACC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACC;;AAED;EACC;EACA;;AACA;EACC;;;AAOL;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEC;EACC;;AAED;EACC;;AAGF;EACC;;AAED;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;;AAIF;AACA;EACC;IAEC;;EAED;IAEC;;EAED;IAGC;;EAED;IAEC;;;AAGF;EACC;EACA;EACA;;;AAKD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;AAAA;AAAA;EAGC;EACG","file":"inputs.css"}
\ No newline at end of file +{"version":3,"sourceRoot":"","sources":["variables.scss","inputs.scss","functions.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBA;AAAA;AAAA;AA4BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ADlCC;AACD;EACC;;;AAED;EACC;;;AAED;EACI;;;AAKJ;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;EAMC;EACA,YAVgB;EAWhB;;;AAGD;AAAA;AAAA;AAAA;AAAA;AAMA;EACI;;;AAGJ;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;EAMC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AA8BA;;AA5BC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;EACC;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;EACA;AAEA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGC;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;EACA;EACA;;;AAKH;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;;;AAGD;AACA;AAcC;AAAA;;AAbA;EACC;EACA;EAEA,QAjIe;;AAmIhB;EAIC;EACA;;AAID;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAED;EACC;;;AAIF;AACA;AAAA;AAAA;AAAA;AAAA;EAKC;EACA;EACA;EACA,YArKgB;EAsKhB;EACA;EACA;;AAEA;AAAA;AAAA;AAAA;AAAA;EACC;;;AAIF;AAAA;AAAA;AAAA;EAIC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;;;AAKA;AAAA;EACC;;AAIA;AAAA;EACC;;;AAKH;AACA;AAAA;AAAA;AAAA;EAIC;EACA;AAEA;;AACA;AAAA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AAAA;EACC;EACA;EACA;;;AAID;AACC;;AACA;EAEC;EACA;EACA;;;AAKH;AAEC;AAuBC;;AApBA;EACC;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA,QAlRc;EAmRd,OAnRc;EAoRd;EACA;EACA;;AACA;EACC;ACpPH;EAEA;;AD0PG;EACC;;AAID;EAGC;EACA;;AACA;EACC;;AAQH;EACC;EACA;AACA;EACA;;;AAOJ;AACA;AAAA;EAEC;;;AAED;AAAA;EAEC;;;AAGD;AAKC;AA8EC;;AA5EA;EAEC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAED;EAEC;;AAED;EACC;EACA;EACA,QAxBkB;EAyBlB,OAzBkB;EA0BlB;EACA;EACA;EACA;;AAED;EAEC;;AAED;EACC;EACA;EACA;EACA;;AAED;AAEA;AAAA;EAEC;EACA;EACA;;AAED;EACC;EACA;;AAED;EACC;;AAID;EACC;EACA;;AAED;EACC,eA/DkB;;AAmEnB;EACC;EACA,QArEkB;EAsElB,OAtEkB;EAuElB;EACA;;AAED;EACC;;AAED;EACC;;AAOD;EAEC;;AAED;EACC,cAzFyB;;AA2F1B;EACC;EACA;EACA;;AAED;EACC;EACA;;AAED;EACC;EACA;EACA;;AAID;EAEC;EACA;EACA;;AAED;EACC;;AAED;EACC;;;AAMJ;AACA;EACC;EACA;;AACA;EACC;;AAED;EACC;EACA;EACA;;AACA;EACC;;AAGF;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;;AACA;EACC;;AACA;EACC;EACA;;AAIH;AAAA;AAAA;EAGC;EACA;EACA;EACA;EACA;EACA;;AAGA;EACC;;AAGF;EACE;EACA;;;AAMH;AAAA;AAAA;AAAA;EAEC;;;AAID;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAED;EACC;EACA;;AACA;EAIC;EACA;EACA;EACA;;AAED;EACC;;AAGF;EACC;EACA;EACA;EACA;;AACA;EACC;;;AAKJ;EACC;;AACA;EACC;EACA;;AACA;EACC;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAED;EACC;EACA;EACA;EACA;EACA;;AACA;EACC;;AAED;EAEC;EACA;;AAGF;EACC;EACA;EACA;;AACA;EACC;EACA;;AAGF;EAGC;;AAED;EACC;;;AAKH;AACA;EACC;EACA;;AACA;EACC;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAIH;EACC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACC;;AAED;EACC;EACA;;AACA;EACC;;;AAOL;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEC;EACC;;AAED;EACC;;AAGF;EACC;;AAED;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;;AAIF;AACA;EACC;IAEC;;EAED;IAEC;;EAED;IAGC;;EAED;IAEC;;;AAGF;EACC;EACA;EACA;;;AAKD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;AAAA;AAAA;EAGC;EACG","file":"inputs.css"}
\ No newline at end of file diff --git a/core/css/mobile.css b/core/css/mobile.css index 82b3424b7af..abb0090bb22 100644 --- a/core/css/mobile.css +++ b/core/css/mobile.css @@ -26,39 +26,32 @@ margin-right: 10% !important; width: 80% !important; } - /* fix name autocomplete not showing on mobile */ .ui-autocomplete { z-index: 1000 !important; } - /* fix error display on smaller screens */ .error-wide { width: 100%; margin-left: 0 !important; box-sizing: border-box; } - /* APP SIDEBAR TOGGLE and SWIPE ----------------------------------------------*/ #app-navigation:not(.vue) { transform: translateX(-300px); position: fixed; height: var(--body-height); } - .snapjs-left #app-navigation { transform: translateX(0); } - #app-navigation:not(.hidden) + #app-content { margin-left: 0; } - .skip-navigation.skip-content { left: 3px; margin-left: 0; } - /* full width for message list on mobile */ .app-content-list { background: var(--color-main-background); @@ -75,7 +68,6 @@ .app-content-list.showdetails + .app-content-details { display: initial; } - /* Show app details page */ #app-content.showdetails #app-navigation-toggle { transform: translateX(-44px); @@ -96,7 +88,6 @@ #app-content.showdetails .app-content-list { transform: translateX(-100%); } - #app-navigation-toggle { position: fixed; display: inline-block !important; @@ -107,55 +98,44 @@ cursor: pointer; opacity: 0.6; } - #app-navigation-toggle:hover, -#app-navigation-toggle:focus { + #app-navigation-toggle:focus { opacity: 1; } - /* position controls for apps with app-navigation */ #app-navigation + #app-content .files-controls { padding-left: 44px; } - /* .viewer-mode is when text editor, PDF viewer, etc is open */ #body-user .app-files.viewer-mode .files-controls { padding-left: 0 !important; } - .app-files.viewer-mode #app-navigation-toggle { display: none !important; } - table.multiselect thead { left: 0 !important; } - /* prevent overflow in user management controls bar */ #usersearchform { display: none; } - #body-settings .files-controls { min-width: 1024px !important; } - /* do not show dates in filepicker */ #oc-dialog-filepicker-content .filelist .column-size, -#oc-dialog-filepicker-content .filelist .column-mtime, -#oc-dialog-filepicker-content .filelist .filesize, -#oc-dialog-filepicker-content .filelist .date { + #oc-dialog-filepicker-content .filelist .column-mtime, + #oc-dialog-filepicker-content .filelist .filesize, + #oc-dialog-filepicker-content .filelist .date { display: none; } - #oc-dialog-filepicker-content .filelist .filename { max-width: 100%; } - .snapjs-left table.multiselect thead { top: 44px; } - /* end of media query */ } @media only screen and (max-width: 480px) { @@ -166,7 +146,6 @@ #header .header-right > div > .menu::after { display: none !important; } - /* Arrow directly child of menutoggle */ #header .header-right > div { /* settings need a different offset, since they have a right padding */ diff --git a/core/css/mobile.css.map b/core/css/mobile.css.map index 3bef34f469e..e39c63c58a4 100644 --- a/core/css/mobile.css.map +++ b/core/css/mobile.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["variables.scss","mobile.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACEA;AAEC;EACA;IACC;IACA;;;AAGD;EACA;IACC;;;AAGD;EACA;IACC;IACA;IACA;;;AAGD;EACA;IACC;IACA;IACA;;;EAGA;IACC;;;EAIF;IACC;;;EAGD;IACC;IACA;;;AAGD;EACA;IACC;IACA;IAEA;IAEA;;EACA;IACC;;EAED;IACC;;EACA;IACC;;;AAKH;EAEC;IACC;;EAED;IACC;IACA;IACA,KDoCa;ICnCb;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;EAED;IACC;;;EAKF;IACC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;;EAED;AAAA;IAEC;;;AAGD;EACA;IACC;;;AAGD;EACA;IACC;;;EAED;IACC;;;EAGD;IACC;;;AAGD;EACA;IACC;;;EAED;IACC;;;AAGD;EACA;AAAA;AAAA;AAAA;IAIC;;;EAED;IACC;;;EAGD;IACC;;;AAGD;;AAGD;EACC;IACC;IACA;;EACA;IACC;;;AAGF;EACA;AAoBC;;EAlBC;IACC;;EAGF;IACC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;EAID;IACC","file":"mobile.css"}
\ No newline at end of file +{"version":3,"sourceRoot":"","sources":["variables.scss","mobile.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACEA;AAEC;EACA;IACC;IACA;;AAGD;EACA;IACC;;AAGD;EACA;IACC;IACA;IACA;;AAGD;EACA;IACC;IACA;IACA;;EAGA;IACC;;EAIF;IACC;;EAGD;IACC;IACA;;AAGD;EACA;IACC;IACA;IAEA;IAEA;;EACA;IACC;;EAED;IACC;;EACA;IACC;;AAKH;EAEC;IACC;;EAED;IACC;IACA;IACA,KDoCa;ICnCb;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;EAED;IACC;;EAKF;IACC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;EAED;AAAA;IAEC;;AAGD;EACA;IACC;;AAGD;EACA;IACC;;EAED;IACC;;EAGD;IACC;;AAGD;EACA;IACC;;EAED;IACC;;AAGD;EACA;AAAA;AAAA;AAAA;IAIC;;EAED;IACC;;EAGD;IACC;;AAGD;;AAGD;EACC;IACC;IACA;;EACA;IACC;;AAGF;EACA;AAoBC;;EAlBC;IACC;;EAGF;IACC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;EAID;IACC","file":"mobile.css"}
\ No newline at end of file diff --git a/core/css/server.css b/core/css/server.css index 0719ee5f415..c111590d4d0 100644 --- a/core/css/server.css +++ b/core/css/server.css @@ -1653,8 +1653,7 @@ input[type=checkbox].radio:checked + label:before, input[type=checkbox].radio.ch } input[type=checkbox].radio:disabled + label:before, input[type=checkbox].checkbox:disabled + label:before, input[type=radio].radio:disabled + label:before, input[type=radio].checkbox:disabled + label:before { border: 1px solid var(--color-text-lighter); - background-color: var(--color-text-maxcontrast) !important; - /* override other status */ + background-color: var(--color-text-maxcontrast) !important; /* override other status */ } input[type=checkbox].radio:checked:disabled + label:before, input[type=checkbox].checkbox:checked:disabled + label:before, input[type=radio].radio:checked:disabled + label:before, input[type=radio].checkbox:checked:disabled + label:before { background-color: var(--color-text-maxcontrast); @@ -1691,30 +1690,24 @@ input[type=checkbox].radio--white:checked + label:before, input[type=checkbox].c border-color: #dbdbdb; } input[type=checkbox].radio--white:disabled + label:before, input[type=checkbox].checkbox--white:disabled + label:before, input[type=radio].radio--white:disabled + label:before, input[type=radio].checkbox--white:disabled + label:before { - background-color: #bababa !important; - /* override other status */ - border-color: rgba(255, 255, 255, 0.4) !important; - /* override other status */ + background-color: #bababa !important; /* override other status */ + border-color: rgba(255, 255, 255, 0.4) !important; /* override other status */ } input[type=checkbox].radio--white:checked:disabled + label:before, input[type=checkbox].checkbox--white:checked:disabled + label:before, input[type=radio].radio--white:checked:disabled + label:before, input[type=radio].checkbox--white:checked:disabled + label:before { box-shadow: inset 0px 0px 0px 2px var(--color-main-background); - border-color: rgba(255, 255, 255, 0.4) !important; - /* override other status */ + border-color: rgba(255, 255, 255, 0.4) !important; /* override other status */ background-color: #bababa; } input[type=checkbox].checkbox--white:checked + label:before, input[type=checkbox].checkbox--white:indeterminate + label:before, input[type=radio].checkbox--white:checked + label:before, input[type=radio].checkbox--white:indeterminate + label:before { - background-color: transparent !important; - /* Override default checked */ - border-color: #fff !important; - /* Override default checked */ + background-color: transparent !important; /* Override default checked */ + border-color: #fff !important; /* Override default checked */ background-image: url("../img/actions/checkbox-mark-white.svg"); } input[type=checkbox].checkbox--white:indeterminate + label:before, input[type=radio].checkbox--white:indeterminate + label:before { background-image: url("../img/actions/checkbox-mixed-white.svg"); } input[type=checkbox].checkbox--white:disabled + label:before, input[type=radio].checkbox--white:disabled + label:before { - opacity: 0.7; - /* No other choice for white background image */ + opacity: 0.7; /* No other choice for white background image */ } /* Select2 overriding. Merged to core with vendor stylesheet */ @@ -2287,8 +2280,7 @@ label.infield { /* User menu on the right */ } #settings #expand { - opacity: 1; - /* override icon opacity */ + opacity: 1; /* override icon opacity */ margin-right: 12px; /* Profile picture in header */ /* show triangle below user menu if active */ @@ -2913,8 +2905,7 @@ kbd { background-color: var(--color-primary-light); } #app-navigation:not(.vue) > ul > li > ul > li.icon-loading-small:after { - left: 22px; - /* 44px / 2 */ + left: 22px; /* 44px / 2 */ } #app-navigation:not(.vue) > ul > li > ul > li > .app-navigation-entry-deleted { /* margin to keep active indicator visible */ @@ -2962,8 +2953,7 @@ kbd { border-radius: var(--border-radius-pill); color: var(--color-main-text); flex: 1 1 0px; - z-index: 100; - /* above the bullet to allow click*/ + z-index: 100; /* above the bullet to allow click*/ /* TODO: forbid using img as icon in menu? */ /* counter can also be inside the link */ } @@ -3137,8 +3127,7 @@ kbd { text-align: right; font-size: 9pt; line-height: 44px; - padding: 0 12px; - /* Same padding as all li > a in the app-navigation */ + padding: 0 12px; /* Same padding as all li > a in the app-navigation */ } #app-navigation:not(.vue) .app-navigation-entry-utils .app-navigation-entry-utils-counter.highlighted { padding: 0; @@ -3154,8 +3143,7 @@ kbd { padding-left: 5px; padding-right: 5px; display: block; - width: calc(100% - 1px); - /* Avoid border overlapping */ + width: calc(100% - 1px); /* Avoid border overlapping */ transition: opacity 250ms ease-in-out; opacity: 0; position: absolute; @@ -3178,8 +3166,7 @@ kbd { } #app-navigation:not(.vue) .app-navigation-entry-edit input[type=text] { width: 100%; - min-width: 0; - /* firefox hack: override auto */ + min-width: 0; /* firefox hack: override auto */ border-bottom-right-radius: 0; border-top-right-radius: 0; } @@ -3228,8 +3215,7 @@ kbd { } #app-navigation:not(.vue) .app-navigation-entry-edit, #app-navigation:not(.vue) .app-navigation-entry-deleted { - width: calc(100% - 1px); - /* Avoid border overlapping */ + width: calc(100% - 1px); /* Avoid border overlapping */ transition: transform 250ms ease-in-out, opacity 250ms ease-in-out, z-index 250ms ease-in-out; position: absolute; left: 0; @@ -3271,11 +3257,9 @@ kbd { border-top-left-radius: var(--border-radius-large); border-top-right-radius: var(--border-radius-large); } - #app-navigation { border-top-left-radius: var(--border-radius-large); } - #app-sidebar { border-top-right-radius: var(--border-radius-large); } @@ -3682,8 +3666,7 @@ kbd { .popovermenu li > .menuitem span[class*=" icon-"], .popovermenu li > .menuitem[class^=icon-], .popovermenu li > .menuitem[class*=" icon-"] { - min-width: 0; - /* Overwrite icons*/ + min-width: 0; /* Overwrite icons*/ min-height: 0; background-position: 14px center; background-size: 16px; @@ -3990,8 +3973,7 @@ kbd { .popovermenu li > a input, .popovermenu li > .menuitem input { min-width: 44px; - max-height: 40px; - /* twice the element margin-y */ + max-height: 40px; /* twice the element margin-y */ margin: 2px 0; flex: 1 1 auto; } @@ -4309,39 +4291,32 @@ kbd { margin-right: 10% !important; width: 80% !important; } - /* fix name autocomplete not showing on mobile */ .ui-autocomplete { z-index: 1000 !important; } - /* fix error display on smaller screens */ .error-wide { width: 100%; margin-left: 0 !important; box-sizing: border-box; } - /* APP SIDEBAR TOGGLE and SWIPE ----------------------------------------------*/ #app-navigation:not(.vue) { transform: translateX(-300px); position: fixed; height: var(--body-height); } - .snapjs-left #app-navigation { transform: translateX(0); } - #app-navigation:not(.hidden) + #app-content { margin-left: 0; } - .skip-navigation.skip-content { left: 3px; margin-left: 0; } - /* full width for message list on mobile */ .app-content-list { background: var(--color-main-background); @@ -4358,7 +4333,6 @@ kbd { .app-content-list.showdetails + .app-content-details { display: initial; } - /* Show app details page */ #app-content.showdetails #app-navigation-toggle { transform: translateX(-44px); @@ -4379,7 +4353,6 @@ kbd { #app-content.showdetails .app-content-list { transform: translateX(-100%); } - #app-navigation-toggle { position: fixed; display: inline-block !important; @@ -4390,55 +4363,44 @@ kbd { cursor: pointer; opacity: 0.6; } - #app-navigation-toggle:hover, -#app-navigation-toggle:focus { + #app-navigation-toggle:focus { opacity: 1; } - /* position controls for apps with app-navigation */ #app-navigation + #app-content .files-controls { padding-left: 44px; } - /* .viewer-mode is when text editor, PDF viewer, etc is open */ #body-user .app-files.viewer-mode .files-controls { padding-left: 0 !important; } - .app-files.viewer-mode #app-navigation-toggle { display: none !important; } - table.multiselect thead { left: 0 !important; } - /* prevent overflow in user management controls bar */ #usersearchform { display: none; } - #body-settings .files-controls { min-width: 1024px !important; } - /* do not show dates in filepicker */ #oc-dialog-filepicker-content .filelist .column-size, -#oc-dialog-filepicker-content .filelist .column-mtime, -#oc-dialog-filepicker-content .filelist .filesize, -#oc-dialog-filepicker-content .filelist .date { + #oc-dialog-filepicker-content .filelist .column-mtime, + #oc-dialog-filepicker-content .filelist .filesize, + #oc-dialog-filepicker-content .filelist .date { display: none; } - #oc-dialog-filepicker-content .filelist .filename { max-width: 100%; } - .snapjs-left table.multiselect thead { top: 44px; } - /* end of media query */ } @media only screen and (max-width: 480px) { @@ -4449,7 +4411,6 @@ kbd { #header .header-right > div > .menu::after { display: none !important; } - /* Arrow directly child of menutoggle */ #header .header-right > div { /* settings need a different offset, since they have a right padding */ diff --git a/core/css/server.css.map b/core/css/server.css.map index c565ee8245b..e110abbfdfc 100644 --- a/core/css/server.css.map +++ b/core/css/server.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["variables.scss","icons.scss","styles.scss","inputs.scss","functions.scss","header.scss","apps.scss","global.scss","fixes.scss","mobile.scss","tooltip.scss","../../node_modules/@nextcloud/dialogs/dist/index.css","public.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AC8IQ;AC9IR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkBA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;AACA;AAAA;EAEC;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;;AACA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;;AACA;EACC;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;AACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AACA;EACC;;;AAKH;AAEA;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;;;AAID;AAEA;EACC;EACA;;;AAID;AAEA;EACC;;;AAGD;AAEA;AAAA;EAEC;EACA;EACA;EACA;;AACA;AAAA;EACC;;AAED;AAAA;EACC;;AAED;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;EAEC;EACA;EACA;EACA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;;AAKH;AAEA;EACC;;;AAGD;AAEA;AAEA;AAEA;EACC;EACA;EACA;EACA;EACA;;;AAGD;AAEA;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC;;;AAED;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;AAIC;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;EACC;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAED;EACC;EACA;EACA;EACA;EACA;;;AAGD;AAEA;EACC;EACA;EACA;EACA;EACA;;;AAIA;EACC;;;AAKD;EACC;EACA;;AACA;EACC;EACA;EACA;;AAGF;EACC;EACA;;;AAIF;EACC;EACA;;AACA;EACC;;;AAIF;EACC;;;AAGD;AACA;AAEA;AAEA;AAEA;EACC;EACA;;AACA;EACC;EACA;;;AAIF;EACC;;;AAGD;EACC;;;AAIA;AAAA;EAGC;;;AAIF;EACC;EACA;EACA;;AAEA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;;;AAIA;EACC;;;AAKD;EACC;;;AAKD;EACC;;;AAKD;EACC;;;AAIF;EACC;;;AAGD;EACC;EACA;EACA;EACA;;AACA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;AAAA;EAGC;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAED;EACC;;AAEA;EACC;;AAED;EACC;;AAGF;EACC;;AAID;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;;AAGA;EACC;;AAGD;AAAA;AAAA;EAGC;EACA;EACA;;AAGD;AAAA;EAEC;EACA;;;AAMJ;EACC;EACA;;;AAID;AACA;EACC;EACA;EACA;EACA;AAwBA;;AAtBA;EACC;;AAGD;AAAA;AAAA;EAGC;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAIF;EACC;;AAGA;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;;AAGF;EACC;;AAGA;AAAA;AAAA;EAIC;EACA;EACA;;AAGD;EACC;;AAGD;EACC;;;AAMJ;AAGC;AAAA;EACC;EACA;EACA;;AACA;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAMJ;AACA;EACC;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAGA;EACC;;AAED;EACC;;AAED;EACC;EACA;;AAKH;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAGC;EACA;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;;AACA;EACC;EACA;;AAMH;EACC;EACA;EACA;EACA;AACA;AACA;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAED;AACC;EACA;EACA;;AAEC;EACC;EACA;;AACA;EACC;EACA;;AAIH;EACC;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;AAED;AAAA;AAAA;EAGC;;AAED;AAAA;EAEC;;AAGD;EACC;EACA;;AAED;EACC;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;AACA;EACC;;AACA;EACC;EACA;EACA;;AAED;EACC;;AAIH;EACC;;AAED;EACC;;AAED;EAIC;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA,SAhBS;EAiBT;EACA;EACA;;AAGA;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA,aA/BU;EAgCV;;AACA;EACC;;AAGF;EACC;EACA;;AAED;EACC;;AAON;EACC;;;AAIF;EACC;;;AAGD;EACC;EACA;;;AAGD;AAGC;EACC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;;AAGD;EAGC;;AAKD;EACC;;AAEA;EACC;;;AAMJ;AACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AACA;AAAA;EAEC;;AAIF;AACC;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAEA;EACC;EACA;EACA;EACA;;AAKH;EACC;EACA;EACA;EACA;AA8DA;;AA5DA;EACC;EACA;EACA;;AAGD;EACC;EACA;;AAEA;EACC;EACA;;AAGD;AACC;EACA;EACA;EACA;EACA;;AAED;EACC;;AAIF;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAED;EACC;;AAGD;EAGC;;AAIF;EACC;;AAEA;EACC;EACA;;AAGD;EACC;;AAKF;EACC;EACA;;AAED;EACC;;;AAMH;EACC;EACA;EACA;;;AAGD;AAEA;EACC;;;AAGD;AAGC;EACC;EACA;;AAED;EACC;EACA;EACA;EACA;;AAED;EACC;EACA;;AACA;EACC;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAGF;EACC;EACA;;;AAIF;AACA;EACC;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;;AACA;EACC;;AAIA;EACC;;AAIF;EACC;EACA;;AACA;EACC;EACA;EACA;EACA;;AACA;EACC;;AAGF;EACC;;AAIH;EACC;;AACA;EACC;;AAGF;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;AAEA;AAAA;AAAA;EAGC;;AAGF;EACC;EACA;;AAID;EACC;EACA;;AAEA;EACC;;AAGF;EACC;;AAEA;AAAA;AAAA;AAAA;AAAA;EAEC;;;AAKH;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;;AAIF;AAGC;EACC;EACA;;AAED;EACC;;;AAIF;AACA;EACC;;AAID;AAEA;EACC;EACA;EACA;EACA;;;AFvsCD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AGAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBA;AAAA;AAAA;AA4BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ADlCC;AACD;EACC;;;AAED;EACC;;;AAED;EACI;;;AAKJ;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;EAMC;EACA,YAVgB;EAWhB;;;AAGD;AAAA;AAAA;AAAA;AAAA;AAMA;EACI;;;AAGJ;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;EAMC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AA8BA;;AA5BC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;EACC;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;EACA;AAEA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGC;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;EACA;EACA;;;AAKH;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;;;AAGD;AACA;AAcC;AAAA;;AAbA;EACC;EACA;EAEA,QAjIe;;AAmIhB;EAIC;EACA;;AAID;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAED;EACC;;;AAIF;AACA;AAAA;AAAA;AAAA;AAAA;EAKC;EACA;EACA;EACA,YArKgB;EAsKhB;EACA;EACA;;AAEA;AAAA;AAAA;AAAA;AAAA;EACC;;;AAIF;AAAA;AAAA;AAAA;EAIC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;;;AAKA;AAAA;EACC;;AAIA;AAAA;EACC;;;AAKH;AACA;AAAA;AAAA;AAAA;EAIC;EACA;AAEA;;AACA;AAAA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AAAA;EACC;EACA;EACA;;;AAID;AACC;;AACA;EAEC;EACA;EACA;;;AAKH;AAEC;AAuBC;;AApBA;EACC;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA,QAlRc;EAmRd,OAnRc;EAoRd;EACA;EACA;;AACA;EACC;ACpPH;EAEA;;AD0PG;EACC;;AAID;EAGC;EACA;;AACA;EACC;;AAQH;EACC;EACA;AACA;EACA;;;AAOJ;AACA;AAAA;EAEC;;;AAED;AAAA;EAEC;;;AAGD;AAKC;AA8EC;;AA5EA;EAEC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAED;EAEC;;AAED;EACC;EACA;EACA,QAxBkB;EAyBlB,OAzBkB;EA0BlB;EACA;EACA;EACA;;AAED;EAEC;;AAED;EACC;EACA;EACA;EACA;;AAED;AAEA;AAAA;EAEC;EACA;EACA;;AAED;EACC;EACA;AAA4D;;AAE7D;EACC;;AAID;EACC;EACA;;AAED;EACC,eA/DkB;;AAmEnB;EACC;EACA,QArEkB;EAsElB,OAtEkB;EAuElB;EACA;;AAED;EACC;;AAED;EACC;;AAOD;EAEC;;AAED;EACC,cAzFyB;;AA2F1B;EACC;EACA;EACA;;AAED;EACC;AAAuE;EACvE;AAAiE;;AAElE;EACC;EACA;AAAiE;EACjE;;AAID;EAEC;AAA0C;EAC1C;AAAsD;EACtD;;AAED;EACC;;AAED;EACC;AAAc;;;AAMlB;AACA;EACC;EACA;;AACA;EACC;;AAED;EACC;EACA;EACA;;AACA;EACC;;AAGF;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;;AACA;EACC;;AACA;EACC;EACA;;AAIH;AAAA;AAAA;EAGC;EACA;EACA;EACA;EACA;EACA;;AAGA;EACC;;AAGF;EACE;EACA;;;AAMH;AAAA;AAAA;AAAA;EAEC;;;AAID;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAED;EACC;EACA;;AACA;EAIC;EACA;EACA;EACA;;AAED;EACC;;AAGF;EACC;EACA;EACA;EACA;;AACA;EACC;;;AAKJ;EACC;;AACA;EACC;EACA;;AACA;EACC;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAED;EACC;EACA;EACA;EACA;EACA;;AACA;EACC;;AAED;EAEC;EACA;;AAGF;EACC;EACA;EACA;;AACA;EACC;EACA;;AAGF;EAGC;;AAED;EACC;;;AAKH;AACA;EACC;EACA;;AACA;EACC;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAIH;EACC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACC;;AAED;EACC;EACA;;AACA;EACC;;;AAOL;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEC;EACC;;AAED;EACC;;AAGF;EACC;;AAED;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;;AAIF;AACA;EACC;IAEC;;EAED;IAEC;;EAED;IAGC;;EAED;IAEC;;;AAGF;EACC;EACA;EACA;;;AAKD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;AAAA;AAAA;EAGC;EACG;;;AH7xBJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AKAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBA;AACA;AAAA;EAEC;EACA;EACA;;AACA;AAAA;AAAA;AAAA;EACC;EACA;EACA;;;AAIF;AACA;AAAA;AAAA;EAGC;EACA;EACA;EACA;EACA;EACA,QLoEe;EKnEf;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;;AASF;AACC;AAqIA;;AAlIA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EAfD;EACA;EAgBC;EACA,KLyBc;EKxBd;EACA;AAMA;AAmBA;;AAvBA;EACC;;AAID;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EAEC;EAzCF;EACA;;AA6CC;EACC;EACA;EACA;EACA;;AAEC;EACC;EACA;EACA;EACA,QAlDuB;EAmDvB;EACA;EACA;EACA;EACA;EACA;;AACA;EAEC;;AAED;EAEC;;AAED;EACC;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAED;AAAA;EAEC;EACA;EACA;EACA;EACA;;AAML;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;AAGD;EACC;EACA;EACA;;AAGD;AAAA;EAEC;EACA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;;AAKA;AAAA;EAEC;EACA;;AACA;AAAA;EACC;EACA;EACA;EACA,OLzGY;EK0GZ;EACA;EACA;EACA;EACA;;AAEA;AAAA;EACC;;AAGD;AAAA;EACC;;;AAOL;AAEA;EACC;;;AAGD;AACA;AACA;EACC;EACA;EACA;EACA;EACA;E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;;AAIF;EACC;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAwIA;;AAtIA;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;AAwCA;AAMA;AAwBA;;AArEA;EACC;;AACA;EACC;;AAIF;AACC;EACA;;AAED;AACC;AACA;AAAA;EAEA;;AAKA;AAAA;AAAA;AAAA;EAEC;;AAGF;EACC;EACA;;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAKF;EACC;EACA;;AAMA;EAEC;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAKF;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;AAmBA;;AAfC;AAAA;AAAA;EAEC;EACA;;AAKD;AAAA;AAAA;AAAA;EAEC;EACA;;AAKF;EACC;AAAY;;AAGb;AACC;EACA;EACA;;AAGD;AACC;EACA;AACA;AAAA;EAEA;;AAMJ;AAAA;EAEC;EACA;AACA;AAQA;AA2CA;AAkBA;AAKA;;AAxEC;AAAA;AAAA;AAAA;AAEC;EACA;;AAIF;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAAc;AACd;AAgBA;;AAdA;AAAA;EACC;;AACA;AAAA;EACC;;AAGF;AAAA;EACC;EACA;EACA;EAEA;;AAID;AAAA;EACC;EACA;;AACA;AAAA;EACC;;AAKH;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;AACC;EACA;;AAKF;AAAA;EACC;;AAID;AAAA;EACC;EACA;;AAED;AAAA;EACC;EACA;;AAIH;EACC;;AAMD;AAAA;EAEC;EACA;EACA;EACA;EACA;;AACA;AAAA;AAAA;EAEC;EACA;;AAOF;AACC;AAAA;AAgDA;;AA9CA;EACC;EACA;EACA;EACA;EACA;EACA;AAEA;AAAA;EAEA;;AAEA;EACC;EACA;EACA;EACA;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;AF9XF;EAEA;EE8XE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAMD;EACC;;AAIA;EACC;;AAED;EACC;;AAED;EACC;;AAID;EACC;EACA;EACA;;AAQH;EACC;;AACA;EACC;EACA;EACA;;AAED;EACC;EACA;;AAED;EACC;EACA;EACA;EACA;;AAED;AACC;;AACA;AFlcF;EAEA;;AEmcE;EAEC;EACA;;AAGF;EACC;EACA;EACA;EACA;EACA;AAAiB;;AAEjB;EACC;EACA;;AACA;EACC;EACA;EACA;EACA;;AASJ;EACC;EACA;EACA;EACA;AAAyB;EACzB;EACA;EACA;EACA;EACA;;AACA;AAAA;EAEC;EACA;;AAED;EACC;EACA;EACA;;AACA;AAEC;EACA;;AAGF;EACC;EACA;AAAc;EACd;EACA;;AAED;AAAA;EAEC;EACA;EACA;;AACA;AAAA;EACC;;AAED;AAAA;EACC;;AAED;AAAA;EACC;EACA;EACA;EACA;;AAQH;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;;AACA;EAEC;;AAQH;AAAA;EAEC;AAAyB;EACzB;EAGA;EACA;EACA;EACA;;AAMD;EACC;EACA;EACA;;AAGD;EACC;;AAGD;AAAA;EAEC;;;AAKF;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;;AAIF;EACC;IACC;IACA;;;EAED;IACC;;;EAED;IACC;;;AAIF;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAOA;EACC;EACA;EACA;EACA;EACA;EACA;AACA;AACA;AAKA;;AAJA;EACC;;AAID;EACC;EACA;EACA;AACA;AAAA;EAEA;AAEA;;AACA;AACC;EACA;;AACA;EACC;;;AAMJ;AACA;AAAA;AAAA;AAAA;AAIA;EACC;EACA,WNvnBmB;EMwnBnB,WNvnBmB;EMwnBnB;EACA;EACA;EACA,KN9nBe;EM+nBf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;;AAKF;AACA;AACA;EAEC;;AAGC;EACC;;;AAKH;EACC;EACA;EACA;EACA;AACA;EACA;EACA;EACA;AAEA;;AACA;EACC;;AAGD;EACC;EACA;;AAOE;EACC;EACA;EACA;;;AAOL;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;;AAEA;EACC;EACA;EACA;;AAED;EAEC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;;;AAKH;AACA;EACC;EACA;EACA;AAIA;;AAHA;EACC;;AAIA;EAEC;EACA;;;AAIH;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;;AAIF;AACA;EACC;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAMA;;AAJA;EACC;;AAID;EACC;;AAED;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;;AAED;EACC;;AAED;EAGC;EACA;EACA;;;AAIH;EACC;;AACA;EACC;;;AAIF;AAOC;AAAA;EACE;;;AAIH;AAAA;AAAA;EAGC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAmBA;AAUA;;AA3BA;AAAA;AAAA;EACC;EAKA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;AAAA;AAAA;EACC;EACA;EACA;;AACA;AAAA;AAAA;EACC;EACA;;AAIF;AAAA;AAAA;EACC;EACA;EACA;;AACA;AAAA;AAAA;EACC;EACA;;AAIF;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AACC;EACA;EACA;;AAED;AAAA;AAAA;EACC;EACA;AAuIA;;AArIA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGC;EACA,aA1FkB;EA2FlB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AA2CA;AAkBA;AAIA;AAAA;AAMA;AAyBA;AAKA;;AAnGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAIC;AAAc;EACd;EACA;EACA,iBA9Ge;;AAgHhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEC;AAAA;EAEA;;AAOC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC,aA7He;;AAiIlB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAID;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC,OAzKe;EA0Kf;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;AACA;AAAA;EAEA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAIF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC,WA7MiB;EA8MjB;AAA0C;EAC1C;EACA;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAQA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAMD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAKJ;AAAA;AAAA;EACC;;AACA;AAAA;AAAA;EACC;;;AAOJ;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,WN1lCgB;EM2lChB,WN1lCgB;AM4lChB;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;;AAGC;AAAA;AAAA;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAIF;AAAA;AAAA;AAAA;EACC;;AAKH;EAGC;;AAEA;EACC;;AAIF;AAAA;EAEC;EACA;EACA;EACA;;AAQC;EAEC;;AAEA;EACC;;AAIH;EACC;EACA;EAEA;AAIA;;AAHA;EACC;;AAGD;EACC;;AAKH;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;;AACA;EACC;EAGA;;AAIH;EACC;;;AC92CF;AAAA;AAAA;AAIA;AAEA;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AChDD;AAEA;AACA;EACC;;;ARJD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ASEA;AAEC;EACA;IACC;IACA;;;AAGD;EACA;IACC;;;AAGD;EACA;IACC;IACA;IACA;;;AAGD;EACA;IACC;IACA;IACA;;;EAGA;IACC;;;EAIF;IACC;;;EAGD;IACC;IACA;;;AAGD;EACA;IACC;IACA;IAEA;IAEA;;EACA;IACC;;EAED;IACC;;EACA;IACC;;;AAKH;EAEC;IACC;;EAED;IACC;IACA;IACA,KToCa;ISnCb;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;EAED;IACC;;;EAKF;IACC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;;EAED;AAAA;IAEC;;;AAGD;EACA;IACC;;;AAGD;EACA;IACC;;;EAED;IACC;;;EAGD;IACC;;;AAGD;EACA;IACC;;;EAED;IACC;;;AAGD;EACA;AAAA;AAAA;AAAA;IAIC;;;EAED;IACC;;;EAGD;IACC;;;AAGD;;AAGD;EACC;IACC;IACA;;EACA;IACC;;;AAGF;EACA;AAoBC;;EAlBC;IACC;;EAGF;IACC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;EAID;IACC;;;AC/KH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;AA0CA;AAmBA;;AA5DA;EAGI;EACA;EACA;;AAEJ;EAEI;EACA;;AAEJ;EAEI;EACA;;AAEJ;EAEI;EACA;;AACA;EACI;EACA;EACA;EACA;EACA;;AAGR;EAEI;EACA;;AACA;EACI;EACA;EACA;EACA;EACA;;AAQJ;EACI;EACA;EACA;;AAGR;EACI;EACA;;AAEJ;EACI;EACA;;AAOA;EACI;EACA;EACA;;AAGR;EAEI;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;;;AAIR;EACI;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;;;ACzIJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAqBA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;;;AAEF;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;AACA;;;AAEF;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;;;AAEF;AAAA;EAEE;EACA;EACA;;;AAEF;AAAA;AAAA;AAAA;EAIE;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;AACA;AACE;;;AAEF;EACE;;;AAEF;ACjHA;AA0CC;AAmBA;;AA1DC;EACC;;AAIA;EACC;;AAED;EACC;EACA;EACA;;AAEA;EAGC;;AAID;EACC;;AAED;EACC;;AAED;EACC;;AAMJ;EAEC;;AAKD;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;;AAED;AAAA;AAAA;AAAA;EAIC;;AAID;EACC;EACA;EACA;EACA;EACA,QArEc;EAsEd;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;;AACA;EACC;EACA;EACA;AACA;EACA;EACA;EACA","file":"server.css"}
\ No newline at end of file +{"version":3,"sourceRoot":"","sources":["variables.scss","icons.scss","styles.scss","inputs.scss","functions.scss","header.scss","apps.scss","global.scss","fixes.scss","mobile.scss","tooltip.scss","../../node_modules/@nextcloud/dialogs/dist/index.css","public.scss"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AC8IQ;AC9IR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkBA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;AACA;AAAA;EAEC;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;;AACA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;;AACA;EACC;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;AACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AACA;EACC;;;AAKH;AAEA;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;;;AAID;AAEA;EACC;EACA;;;AAID;AAEA;EACC;;;AAGD;AAEA;AAAA;EAEC;EACA;EACA;EACA;;AACA;AAAA;EACC;;AAED;AAAA;EACC;;AAED;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;EAEC;EACA;EACA;EACA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;;AAKH;AAEA;EACC;;;AAGD;AAEA;AAEA;AAEA;EACC;EACA;EACA;EACA;EACA;;;AAGD;AAEA;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;;;AAGD;EACC;;;AAED;EACC;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGD;AAIC;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;EACC;;;AAIF;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;;;AAED;EACC;EACA;EACA;EACA;EACA;;;AAGD;AAEA;EACC;EACA;EACA;EACA;EACA;;;AAIA;EACC;;;AAKD;EACC;EACA;;AACA;EACC;EACA;EACA;;AAGF;EACC;EACA;;;AAIF;EACC;EACA;;AACA;EACC;;;AAIF;EACC;;;AAGD;AACA;AAEA;AAEA;AAEA;EACC;EACA;;AACA;EACC;EACA;;;AAIF;EACC;;;AAGD;EACC;;;AAIA;AAAA;EAGC;;;AAIF;EACC;EACA;EACA;;AAEA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;;;AAIA;EACC;;;AAKD;EACC;;;AAKD;EACC;;;AAKD;EACC;;;AAIF;EACC;;;AAGD;EACC;EACA;EACA;EACA;;AACA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;AAAA;EAGC;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAED;EACC;;AAEA;EACC;;AAED;EACC;;AAGF;EACC;;AAID;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;;AAGA;EACC;;AAGD;AAAA;AAAA;EAGC;EACA;EACA;;AAGD;AAAA;EAEC;EACA;;;AAMJ;EACC;EACA;;;AAID;AACA;EACC;EACA;EACA;EACA;AAwBA;;AAtBA;EACC;;AAGD;AAAA;AAAA;EAGC;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AAIF;EACC;;AAGA;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;;AAGF;EACC;;AAGA;AAAA;AAAA;EAIC;EACA;EACA;;AAGD;EACC;;AAGD;EACC;;;AAMJ;AAGC;AAAA;EACC;EACA;EACA;;AACA;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAMJ;AACA;EACC;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAEA;EACC;EACA;EACA;;AAGA;EACC;;AAED;EACC;;AAED;EACC;EACA;;AAKH;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAGC;EACA;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;;AACA;EACC;EACA;;AAMH;EACC;EACA;EACA;EACA;AACA;AACA;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAED;AACC;EACA;EACA;;AAEC;EACC;EACA;;AACA;EACC;EACA;;AAIH;EACC;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;AAED;AAAA;AAAA;EAGC;;AAED;AAAA;EAEC;;AAGD;EACC;EACA;;AAED;EACC;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;AACA;EACC;;AACA;EACC;EACA;EACA;;AAED;EACC;;AAIH;EACC;;AAED;EACC;;AAED;EAIC;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA,SAhBS;EAiBT;EACA;EACA;;AAGA;EACC;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA,aA/BU;EAgCV;;AACA;EACC;;AAGF;EACC;EACA;;AAED;EACC;;AAON;EACC;;;AAIF;EACC;;;AAGD;EACC;EACA;;;AAGD;AAGC;EACC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;;AAGD;EAGC;;AAKD;EACC;;AAEA;EACC;;;AAMJ;AACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AACA;AAAA;EAEC;;AAIF;AACC;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAEA;EACC;EACA;EACA;EACA;;AAKH;EACC;EACA;EACA;EACA;AA8DA;;AA5DA;EACC;EACA;EACA;;AAGD;EACC;EACA;;AAEA;EACC;EACA;;AAGD;AACC;EACA;EACA;EACA;EACA;;AAED;EACC;;AAIF;EACC;EACA;EACA;EACA;;AAEA;EACC;;AAED;EACC;;AAGD;EAGC;;AAIF;EACC;;AAEA;EACC;EACA;;AAGD;EACC;;AAKF;EACC;EACA;;AAED;EACC;;;AAMH;EACC;EACA;EACA;;;AAGD;AAEA;EACC;;;AAGD;AAGC;EACC;EACA;;AAED;EACC;EACA;EACA;EACA;;AAED;EACC;EACA;;AACA;EACC;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAGF;EACC;EACA;;;AAIF;AACA;EACC;;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;;AACA;EACC;;AAIA;EACC;;AAIF;EACC;EACA;;AACA;EACC;EACA;EACA;EACA;;AACA;EACC;;AAGF;EACC;;AAIH;EACC;;AACA;EACC;;AAGF;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;AAEA;AAAA;AAAA;EAGC;;AAGF;EACC;EACA;;AAID;EACC;EACA;;AAEA;EACC;;AAGF;EACC;;AAEA;AAAA;AAAA;AAAA;AAAA;EAEC;;;AAKH;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;;AAIF;AAGC;EACC;EACA;;AAED;EACC;;;AAIF;AACA;EACC;;AAID;AAEA;EACC;EACA;EACA;EACA;;;AFvsCD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AGAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAsBA;AAAA;AAAA;AA4BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ADlCC;AACD;EACC;;;AAED;EACC;;;AAED;EACI;;;AAKJ;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;EAMC;EACA,YAVgB;EAWhB;;;AAGD;AAAA;AAAA;AAAA;AAAA;AAMA;EACI;;;AAGJ;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;EAMC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AA8BA;;AA5BC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;EACC;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;EACA;EACA;EACA;AAEA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGC;EACA;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAED;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;EACA;EACA;;;AAKH;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;;;AAGD;AACA;AAcC;AAAA;;AAbA;EACC;EACA;EAEA,QAjIe;;AAmIhB;EAIC;EACA;;AAID;EACC;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAED;EACC;;;AAIF;AACA;AAAA;AAAA;AAAA;AAAA;EAKC;EACA;EACA;EACA,YArKgB;EAsKhB;EACA;EACA;;AAEA;AAAA;AAAA;AAAA;AAAA;EACC;;;AAIF;AAAA;AAAA;AAAA;EAIC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACC;;AAED;AAAA;AAAA;AAAA;EACC;;;AAIF;EACC;EACA;;;AAGD;EACC;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;;;AAKA;AAAA;EACC;;AAIA;AAAA;EACC;;;AAKH;AACA;AAAA;AAAA;AAAA;EAIC;EACA;AAEA;;AACA;AAAA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AAAA;EACC;EACA;EACA;;;AAID;AACC;;AACA;EAEC;EACA;EACA;;;AAKH;AAEC;AAuBC;;AApBA;EACC;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA,QAlRc;EAmRd,OAnRc;EAoRd;EACA;EACA;;AACA;EACC;ACpPH;EAEA;;AD0PG;EACC;;AAID;EAGC;EACA;;AACA;EACC;;AAQH;EACC;EACA;AACA;EACA;;;AAOJ;AACA;AAAA;EAEC;;;AAED;AAAA;EAEC;;;AAGD;AAKC;AA8EC;;AA5EA;EAEC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAED;EAEC;;AAED;EACC;EACA;EACA,QAxBkB;EAyBlB,OAzBkB;EA0BlB;EACA;EACA;EACA;;AAED;EAEC;;AAED;EACC;EACA;EACA;EACA;;AAED;AAEA;AAAA;EAEC;EACA;EACA;;AAED;EACC;EACA;;AAED;EACC;;AAID;EACC;EACA;;AAED;EACC,eA/DkB;;AAmEnB;EACC;EACA,QArEkB;EAsElB,OAtEkB;EAuElB;EACA;;AAED;EACC;;AAED;EACC;;AAOD;EAEC;;AAED;EACC,cAzFyB;;AA2F1B;EACC;EACA;EACA;;AAED;EACC;EACA;;AAED;EACC;EACA;EACA;;AAID;EAEC;EACA;EACA;;AAED;EACC;;AAED;EACC;;;AAMJ;AACA;EACC;EACA;;AACA;EACC;;AAED;EACC;EACA;EACA;;AACA;EACC;;AAGF;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;;AACA;EACC;;AACA;EACC;EACA;;AAIH;AAAA;AAAA;EAGC;EACA;EACA;EACA;EACA;EACA;;AAGA;EACC;;AAGF;EACE;EACA;;;AAMH;AAAA;AAAA;AAAA;EAEC;;;AAID;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAED;EACC;EACA;;AACA;EAIC;EACA;EACA;EACA;;AAED;EACC;;AAGF;EACC;EACA;EACA;EACA;;AACA;EACC;;;AAKJ;EACC;;AACA;EACC;EACA;;AACA;EACC;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAED;EACC;EACA;EACA;EACA;EACA;;AACA;EACC;;AAED;EAEC;EACA;;AAGF;EACC;EACA;EACA;;AACA;EACC;EACA;;AAGF;EAGC;;AAED;EACC;;;AAKH;AACA;EACC;EACA;;AACA;EACC;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;AAIH;EACC;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACC;;AAED;EACC;EACA;;AACA;EACC;;;AAOL;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEC;EACC;;AAED;EACC;;AAGF;EACC;;AAED;EACC;EACA;EACA;;AAED;EACC;EACA;EACA;;;AAIF;AACA;EACC;IAEC;;EAED;IAEC;;EAED;IAGC;;EAED;IAEC;;;AAGF;EACC;EACA;EACA;;;AAKD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;AAAA;AAAA;EAGC;EACG;;;AH7xBJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AKAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBA;AACA;AAAA;EAEC;EACA;EACA;;AACA;AAAA;AAAA;AAAA;EACC;EACA;EACA;;;AAIF;AACA;AAAA;AAAA;EAGC;EACA;EACA;EACA;EACA;EACA,QLoEe;EKnEf;EACA;;;AAGD;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;;AASF;AACC;AAqIA;;AAlIA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EAfD;EACA;EAgBC;EACA,KLyBc;EKxBd;EACA;AAMA;AAmBA;;AAvBA;EACC;;AAID;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EAEC;EAzCF;EACA;;AA6CC;EACC;EACA;EACA;EACA;;AAEC;EACC;EACA;EACA;EACA,QAlDuB;EAmDvB;EACA;EACA;EACA;EACA;EACA;;AACA;EAEC;;AAED;EAEC;;AAED;EACC;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;;AAED;AAAA;EAEC;EACA;EACA;EACA;EACA;;AAML;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;AAGD;EACC;EACA;EACA;;AAGD;AAAA;EAEC;EACA;;AAGD;EACC;EACA;EACA;;AAGD;EACC;EACA;;AAKA;AAAA;EAEC;EACA;;AACA;AAAA;EACC;EACA;EACA;EACA,OLzGY;EK0GZ;EACA;EACA;EACA;EACA;;AAEA;AAAA;EACC;;AAGD;AAAA;EACC;;;AAOL;AAEA;EACC;;;AAGD;AACA;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;;AAGD;EACC;EACA;EACA;EACA;EA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EACA;EACA;EACA;AAwIA;;AAtIA;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;AAwCA;AAMA;AAwBA;;AArEA;EACC;;AACA;EACC;;AAIF;AACC;EACA;;AAED;AACC;AACA;AAAA;EAEA;;AAKA;AAAA;AAAA;AAAA;EAEC;;AAGF;EACC;EACA;;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEC;;AAKF;EACC;EACA;;AAMA;EAEC;;AAIF;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;AAKF;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;AAmBA;;AAfC;AAAA;AAAA;EAEC;EACA;;AAKD;AAAA;AAAA;AAAA;EAEC;EACA;;AAKF;EACC;;AAGD;AACC;EACA;EACA;;AAGD;AACC;EACA;AACA;AAAA;EAEA;;AAMJ;AAAA;EAEC;EACA;AACA;AAQA;AA2CA;AAkBA;AAKA;;AAxEC;AAAA;AAAA;AAAA;AAEC;EACA;;AAIF;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;AAgBA;;AAdA;AAAA;EACC;;AACA;AAAA;EACC;;AAGF;AAAA;EACC;EACA;EACA;EAEA;;AAID;AAAA;EACC;EACA;;AACA;AAAA;EACC;;AAKH;AAAA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;AACC;EACA;;AAKF;AAAA;EACC;;AAID;AAAA;EACC;EACA;;AAED;AAAA;EACC;EACA;;AAIH;EACC;;AAMD;AAAA;EAEC;EACA;EACA;EACA;EACA;;AACA;AAAA;AAAA;EAEC;EACA;;AAOF;AACC;AAAA;AAgDA;;AA9CA;EACC;EACA;EACA;EACA;EACA;EACA;AAEA;AAAA;EAEA;;AAEA;EACC;EACA;EACA;EACA;;AAGF;EACC;EACA;EACA;EACA;EACA;EACA;AF9XF;EAEA;EE8XE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAMD;EACC;;AAIA;EACC;;AAED;EACC;;AAED;EACC;;AAID;EACC;EACA;EACA;;AAQH;EACC;;AACA;EACC;EACA;EACA;;AAED;EACC;EACA;;AAED;EACC;EACA;EACA;EACA;;AAED;AACC;;AACA;AFlcF;EAEA;;AEmcE;EAEC;EACA;;AAGF;EACC;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;;AACA;EACC;EACA;EACA;EACA;;AASJ;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;AAAA;EAEC;EACA;;AAED;EACC;EACA;EACA;;AACA;AAEC;EACA;;AAGF;EACC;EACA;EACA;EACA;;AAED;AAAA;EAEC;EACA;EACA;;AACA;AAAA;EACC;;AAED;AAAA;EACC;;AAED;AAAA;EACC;EACA;EACA;EACA;;AAQH;EACC;EACA;EACA;;AACA;EACC;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;EACA;EACA;EACA;;AACA;EAEC;;AAQH;AAAA;EAEC;EACA;EAGA;EACA;EACA;EACA;;AAMD;EACC;EACA;EACA;;AAGD;EACC;;AAGD;AAAA;EAEC;;;AAKF;AACA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;;AAIF;EACC;IACC;IACA;;EAED;IACC;;EAED;IACC;;;AAIF;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAOA;EACC;EACA;EACA;EACA;EACA;EACA;AACA;AACA;AAKA;;AAJA;EACC;;AAID;EACC;EACA;EACA;AACA;AAAA;EAEA;AAEA;;AACA;AACC;EACA;;AACA;EACC;;;AAMJ;AACA;AAAA;AAAA;AAAA;AAIA;EACC;EACA,WNvnBmB;EMwnBnB,WNvnBmB;EMwnBnB;EACA;EACA;EACA,KN9nBe;EM+nBf;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;;;AAKF;AACA;AACA;EAEC;;AAGC;EACC;;;AAKH;EACC;EACA;EACA;EACA;AACA;EACA;EACA;EACA;AAEA;;AACA;EACC;;AAGD;EACC;EACA;;AAOE;EACC;EACA;EACA;;;AAOL;EACC;EACA;EACA;EACA;EACA;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;;AAEA;EACC;EACA;EACA;;AAED;EAEC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;;;AAKH;AACA;EACC;EACA;EACA;AAIA;;AAHA;EACC;;AAIA;EAEC;EACA;;;AAIH;EACC;EACA;EACA;EACA;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;;;AAIF;AACA;EACC;EACA;;AAEA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAMA;;AAJA;EACC;;AAID;EACC;;AAED;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;;AAED;EACC;;AAED;EAGC;EACA;EACA;;;AAIH;EACC;;AACA;EACC;;;AAIF;AAOC;AAAA;EACE;;;AAIH;AAAA;AAAA;EAGC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAmBA;AAUA;;AA3BA;AAAA;AAAA;EACC;EAKA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;AAAA;AAAA;EACC;EACA;EACA;;AACA;AAAA;AAAA;EACC;EACA;;AAIF;AAAA;AAAA;EACC;EACA;EACA;;AACA;AAAA;AAAA;EACC;EACA;;AAIF;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AACC;EACA;EACA;;AAED;AAAA;AAAA;EACC;EACA;AAuIA;;AArIA;AAAA;AAAA;EACC;;AAGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGC;EACA,aA1FkB;EA2FlB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;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;EACA;EACA;EACA;;AAQC;EAEC;;AAEA;EACC;;AAIH;EACC;EACA;EAEA;AAIA;;AAHA;EACC;;AAGD;EACC;;AAKH;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;AAAA;EAEC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGD;EACC;EACA;;AACA;EACC;EAGA;;AAIH;EACC;;;AC92CF;AAAA;AAAA;AAIA;AAEA;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;EACA;EACA;EACA;EACA;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AChDD;AAEA;AACA;EACC;;;ARJD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ASEA;AAEC;EACA;IACC;IACA;;AAGD;EACA;IACC;;AAGD;EACA;IACC;IACA;IACA;;AAGD;EACA;IACC;IACA;IACA;;EAGA;IACC;;EAIF;IACC;;EAGD;IACC;IACA;;AAGD;EACA;IACC;IACA;IAEA;IAEA;;EACA;IACC;;EAED;IACC;;EACA;IACC;;AAKH;EAEC;IACC;;EAED;IACC;IACA;IACA,KToCa;ISnCb;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;EAED;IACC;;EAKF;IACC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;EAED;AAAA;IAEC;;AAGD;EACA;IACC;;AAGD;EACA;IACC;;EAED;IACC;;EAGD;IACC;;AAGD;EACA;IACC;;EAED;IACC;;AAGD;EACA;AAAA;AAAA;AAAA;IAIC;;EAED;IACC;;EAGD;IACC;;AAGD;;AAGD;EACC;IACC;IACA;;EACA;IACC;;AAGF;EACA;AAoBC;;EAlBC;IACC;;EAGF;IACC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;EAID;IACC;;;AC/KH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;AA0CA;AAmBA;;AA5DA;EAGI;EACA;EACA;;AAEJ;EAEI;EACA;;AAEJ;EAEI;EACA;;AAEJ;EAEI;EACA;;AACA;EACI;EACA;EACA;EACA;EACA;;AAGR;EAEI;EACA;;AACA;EACI;EACA;EACA;EACA;EACA;;AAQJ;EACI;EACA;EACA;;AAGR;EACI;EACA;;AAEJ;EACI;EACA;;AAOA;EACI;EACA;EACA;;AAGR;EAEI;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;;;AAIR;EACI;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;;;ACzIJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAqBA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;EACE;EACA;;;AAEF;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEF;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;AACA;;;AAEF;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;;;AAEF;AAAA;EAEE;EACA;EACA;;;AAEF;AAAA;AAAA;AAAA;EAIE;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAGF;AACA;AACE;;;AAEF;EACE;;;AAEF;ACjHA;AA0CC;AAmBA;;AA1DC;EACC;;AAIA;EACC;;AAED;EACC;EACA;EACA;;AAEA;EAGC;;AAID;EACC;;AAED;EACC;;AAED;EACC;;AAMJ;EAEC;;AAKD;EACC;;AAGD;EACC;EACA;EACA;EACA;EACA;;AAED;AAAA;AAAA;AAAA;EAIC;;AAID;EACC;EACA;EACA;EACA;EACA,QArEc;EAsEd;EACA;EACA;EACA;EACA;EACA;;AACA;EACC;EACA;;AACA;EACC;EACA;EACA;AACA;EACA;EACA;EACA","file":"server.css"}
\ No newline at end of file diff --git a/core/l10n/de_DE.js b/core/l10n/de_DE.js index db9d18e2759..6bfb341c7da 100644 --- a/core/l10n/de_DE.js +++ b/core/l10n/de_DE.js @@ -46,8 +46,8 @@ OC.L10N.register( "[%d / %d]: %s" : "[%d / %d]: %s", "Repair step:" : "Reparaturschritt:", "Repair info:" : "Reparaturinformation:", - "Repair warning:" : "Reperaturwarnung:", - "Repair error:" : "Reperaturfehler:", + "Repair warning:" : "Reparaturwarnung:", + "Repair error:" : "Reparaturfehler:", "Please use the command line updater because automatic updating is disabled in the config.php." : "Da automatische Updates in der config.php deaktivert sind, nutzen Sie bitte den Updater über die Kommandozeile.", "Turned on maintenance mode" : "Wartungsmodus eingeschaltet ", "Turned off maintenance mode" : "Wartungsmodus ausgeschaltet", diff --git a/core/l10n/de_DE.json b/core/l10n/de_DE.json index 3fa2580b6cc..5e2281b1143 100644 --- a/core/l10n/de_DE.json +++ b/core/l10n/de_DE.json @@ -44,8 +44,8 @@ "[%d / %d]: %s" : "[%d / %d]: %s", "Repair step:" : "Reparaturschritt:", "Repair info:" : "Reparaturinformation:", - "Repair warning:" : "Reperaturwarnung:", - "Repair error:" : "Reperaturfehler:", + "Repair warning:" : "Reparaturwarnung:", + "Repair error:" : "Reparaturfehler:", "Please use the command line updater because automatic updating is disabled in the config.php." : "Da automatische Updates in der config.php deaktivert sind, nutzen Sie bitte den Updater über die Kommandozeile.", "Turned on maintenance mode" : "Wartungsmodus eingeschaltet ", "Turned off maintenance mode" : "Wartungsmodus ausgeschaltet", diff --git a/core/l10n/gl.js b/core/l10n/gl.js index 2413d9110f9..880098d15b9 100644 --- a/core/l10n/gl.js +++ b/core/l10n/gl.js @@ -349,6 +349,7 @@ OC.L10N.register( "This %s instance is currently in maintenance mode, which may take a while." : "Esta instancia de %s atopase en modo de mantemento, isto pode levar un anaco.", "This page will refresh itself when the instance is available again." : "Esta páxina actualizarase automaticamente cando a instancia estea dispoñíbel de novo.", "Contact your system administrator if this message persists or appeared unexpectedly." : "Póñase en contacto co administrador do sistema se persiste esta mensaxe ou se aparece de forma inesperada.", + "This community release of Nextcloud is unsupported and instant notifications are unavailable." : "Esta versión comunitaria de Nextcloud non é compatible e as notificacións instantáneas non están dispoñibles.", "Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "Introduza a súa clave de subscrición para aumentar o límite de usuarios. Para obter máis información sobre Nextcloud Enterprise, consulte o noso sitio web.", "[%d / %d]: Checking table %s" : "[%d / %d]: Comprobando a táboa %s", "Some columns in the database are missing a conversion to big int. Due to the fact that changing column types on big tables could take some time they were not changed automatically. By running 'occ db:convert-filecache-bigint' those pending changes could be applied manually. This operation needs to be made while the instance is offline. For further details read {linkstart}the documentation page about this ↗{linkend}." : "A algunhas columnas fáltalles a conversión a enteiro grande. Por mor de que cambiar os tipos de columnas en táboas grandes podería levar moito tempo non se modificaron automaticamente. Pódense aplicar manualmente estes cambios pendentes executando «occ db:convert-filecache-bigint'». Esta operación ten que ser feita mentres a instancia está sen conexión. Para obter máis información, lea {linkstart}a páxina de documentación sobre isto ↗{linkend}", diff --git a/core/l10n/gl.json b/core/l10n/gl.json index 00fcdb3cc6a..31b77451d3a 100644 --- a/core/l10n/gl.json +++ b/core/l10n/gl.json @@ -347,6 +347,7 @@ "This %s instance is currently in maintenance mode, which may take a while." : "Esta instancia de %s atopase en modo de mantemento, isto pode levar un anaco.", "This page will refresh itself when the instance is available again." : "Esta páxina actualizarase automaticamente cando a instancia estea dispoñíbel de novo.", "Contact your system administrator if this message persists or appeared unexpectedly." : "Póñase en contacto co administrador do sistema se persiste esta mensaxe ou se aparece de forma inesperada.", + "This community release of Nextcloud is unsupported and instant notifications are unavailable." : "Esta versión comunitaria de Nextcloud non é compatible e as notificacións instantáneas non están dispoñibles.", "Enter your subscription key to increase the user limit. For more information about Nextcloud Enterprise see our website." : "Introduza a súa clave de subscrición para aumentar o límite de usuarios. Para obter máis información sobre Nextcloud Enterprise, consulte o noso sitio web.", "[%d / %d]: Checking table %s" : "[%d / %d]: Comprobando a táboa %s", "Some columns in the database are missing a conversion to big int. Due to the fact that changing column types on big tables could take some time they were not changed automatically. By running 'occ db:convert-filecache-bigint' those pending changes could be applied manually. This operation needs to be made while the instance is offline. For further details read {linkstart}the documentation page about this ↗{linkend}." : "A algunhas columnas fáltalles a conversión a enteiro grande. Por mor de que cambiar os tipos de columnas en táboas grandes podería levar moito tempo non se modificaron automaticamente. Pódense aplicar manualmente estes cambios pendentes executando «occ db:convert-filecache-bigint'». Esta operación ten que ser feita mentres a instancia está sen conexión. Para obter máis información, lea {linkstart}a páxina de documentación sobre isto ↗{linkend}", diff --git a/core/l10n/vi.js b/core/l10n/vi.js index 24d5736c21e..f495681fa08 100644 --- a/core/l10n/vi.js +++ b/core/l10n/vi.js @@ -137,6 +137,8 @@ OC.L10N.register( "seconds ago" : "vài giây trước", "Connection to server lost" : "Kết nối tới máy chủ bị mất", "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["Xảy ra lỗi khi tải trang, tải lại trong %n giây"], + "Hide details" : "Ẩn chi tiết", + "View changelog" : "Xem nhật ký thay đổi", "Very weak password" : "Mật khẩu rất yếu", "Weak password" : "Mật khẩu yếu", "So-so password" : "Mật khẩu tạm được", @@ -159,6 +161,7 @@ OC.L10N.register( "Access forbidden" : "Truy cập bị cấm", "Back to %s" : "Quay lại %s", "Page not found" : "Trang không tìm thấy", + "Too many requests" : "Có quá nhiều yêu cầu", "Error" : "Lỗi", "Previous" : "Trước", "Internal Server Error" : "Lỗi máy chủ.", @@ -193,21 +196,32 @@ OC.L10N.register( "Please specify the port number along with the host name (e.g., localhost:5432)." : "Vui lòng xác định số cổng cùng với tên máy chủ lưu trữ (ví dụ: localhost: 5432).", "Performance warning" : "Cảnh báo hiệu suất", "Install" : "Cài đặt", + "Installing …" : "Đang cài đặt", "Need help?" : "Cần hỗ trợ ?", "See the documentation" : "Xem tài liệu", "This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Ứng dụng này yêu cầu JavaScript để hoạt động chính xác. Vui lòng {linkstart} bật JavaScript {linkend} và tải lại trang.", + "Skip to main content" : "Chuyển sang nội dung chính", + "Get your own free account" : "Nhận tài khoản miễn phí", "Contacts" : "Liên hệ", "Contacts menu" : "Trình đơn liên hệ", + "Open settings menu" : "Mở danh mục cài đặt", "Confirm your password" : "Xác nhận mật khẩu của bạn", "Connect to your account" : "Kết nối tài khoản của bạn", "App token" : "Dấu hiệu ứng dụng", "Grant access" : "Cấp quyền truy cập", "Account access" : "Truy cập tài khoản", + "Account connected" : "Tài khoản đã được kết nối", + "You can close this window." : "Bạn có thể đóng lại cửa sổ này", "This share is password-protected" : "Chia sẽ này được bảo vệ bởi mật khẩu", + "The password is wrong or expired. Please try again or request a new one." : "Mật khẩu không đúng hoặc đã hết hạn.\nVui lòng thử lại hoặc yêu cầu mật khẩu mới.", + "Please type in your email address to request a temporary password" : "Vui lòng nhập địa chỉ email để yêu cầu mật khẩu tạm", "Email address" : "Địa chỉ thư điện tử", + "Password sent!" : "Đã gửi Mật khẩu", "Go to %s" : "Đi tới %s", "Two-factor authentication" : "Xác thực 2 bước", + "Set up two-factor authentication" : "Cài đặt bảo mật hai lớp", "Use backup code" : "Sử dụng mã dự phòng", + "Cancel login" : "Hủy đăng nhập", "Error while validating your second factor" : "Lỗi khi xác thực 2 bước", "Access through untrusted domain" : "Truy nhập thông qua tên miền không đáng tin", "Please contact your administrator. If you are an administrator, edit the \"trusted_domains\" setting in config/config.php like the example in config.sample.php." : "Xin vui lòng liên hệ với quản trị hệ thống của bạn. Nếu ban là người quản trị hệ thống, sửa phần thiết lập \"trusted_domains\" trong file config/config.php giống như trong ví dụ tại file config.sample.php.", @@ -223,6 +237,7 @@ OC.L10N.register( "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Trợ giúp, xem <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Tôi biết rằng nếu tôi tiếp tục thực hiện cập nhập qua giao diện Web có rủi ro, mà yêu cầu đó chạy trong một khoảng thời gian bị quá hạn và có thể gây mất dữ liệu, nếu tôi có một bản sao và tôi biết cách khôi phục bản cài đặt đã sao lưu trong trường hợp bị lỗi khi cập nhật.", "Upgrade via web on my own risk" : "Nâng cấp qua web", + "Maintenance mode" : "Chế độ bảo trì", "This %s instance is currently in maintenance mode, which may take a while." : "Bản cài đặt%s hiện tại đang trong chế độ \"bảo trì\", do vậy có thể bạn cần phải đợi thêm chút ít thời gian.", "Contact your system administrator if this message persists or appeared unexpectedly." : "Liên hệ với người quản trị nếu lỗi này vẫn tồn tại hoặc xuất hiện bất ngờ.", "[%d / %d]: Checking table %s" : "[%d / %d]: đang kiểm tra bảng được %s", @@ -232,6 +247,7 @@ OC.L10N.register( "More" : "hơn", "More apps menu" : "Nhiều trình đơn ứng dụng hơn", "Settings menu" : "Trình đơn thiết lập", - "The password is wrong. Try again." : "Sai mật khẩu. Hãy thử lại." + "The password is wrong. Try again." : "Sai mật khẩu. Hãy thử lại.", + "Setup two-factor authentication" : "Cài đặt bảo mật hai lớp" }, "nplurals=1; plural=0;"); diff --git a/core/l10n/vi.json b/core/l10n/vi.json index bb9a7e6106a..d943a8fcfc4 100644 --- a/core/l10n/vi.json +++ b/core/l10n/vi.json @@ -135,6 +135,8 @@ "seconds ago" : "vài giây trước", "Connection to server lost" : "Kết nối tới máy chủ bị mất", "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["Xảy ra lỗi khi tải trang, tải lại trong %n giây"], + "Hide details" : "Ẩn chi tiết", + "View changelog" : "Xem nhật ký thay đổi", "Very weak password" : "Mật khẩu rất yếu", "Weak password" : "Mật khẩu yếu", "So-so password" : "Mật khẩu tạm được", @@ -157,6 +159,7 @@ "Access forbidden" : "Truy cập bị cấm", "Back to %s" : "Quay lại %s", "Page not found" : "Trang không tìm thấy", + "Too many requests" : "Có quá nhiều yêu cầu", "Error" : "Lỗi", "Previous" : "Trước", "Internal Server Error" : "Lỗi máy chủ.", @@ -191,21 +194,32 @@ "Please specify the port number along with the host name (e.g., localhost:5432)." : "Vui lòng xác định số cổng cùng với tên máy chủ lưu trữ (ví dụ: localhost: 5432).", "Performance warning" : "Cảnh báo hiệu suất", "Install" : "Cài đặt", + "Installing …" : "Đang cài đặt", "Need help?" : "Cần hỗ trợ ?", "See the documentation" : "Xem tài liệu", "This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Ứng dụng này yêu cầu JavaScript để hoạt động chính xác. Vui lòng {linkstart} bật JavaScript {linkend} và tải lại trang.", + "Skip to main content" : "Chuyển sang nội dung chính", + "Get your own free account" : "Nhận tài khoản miễn phí", "Contacts" : "Liên hệ", "Contacts menu" : "Trình đơn liên hệ", + "Open settings menu" : "Mở danh mục cài đặt", "Confirm your password" : "Xác nhận mật khẩu của bạn", "Connect to your account" : "Kết nối tài khoản của bạn", "App token" : "Dấu hiệu ứng dụng", "Grant access" : "Cấp quyền truy cập", "Account access" : "Truy cập tài khoản", + "Account connected" : "Tài khoản đã được kết nối", + "You can close this window." : "Bạn có thể đóng lại cửa sổ này", "This share is password-protected" : "Chia sẽ này được bảo vệ bởi mật khẩu", + "The password is wrong or expired. Please try again or request a new one." : "Mật khẩu không đúng hoặc đã hết hạn.\nVui lòng thử lại hoặc yêu cầu mật khẩu mới.", + "Please type in your email address to request a temporary password" : "Vui lòng nhập địa chỉ email để yêu cầu mật khẩu tạm", "Email address" : "Địa chỉ thư điện tử", + "Password sent!" : "Đã gửi Mật khẩu", "Go to %s" : "Đi tới %s", "Two-factor authentication" : "Xác thực 2 bước", + "Set up two-factor authentication" : "Cài đặt bảo mật hai lớp", "Use backup code" : "Sử dụng mã dự phòng", + "Cancel login" : "Hủy đăng nhập", "Error while validating your second factor" : "Lỗi khi xác thực 2 bước", "Access through untrusted domain" : "Truy nhập thông qua tên miền không đáng tin", "Please contact your administrator. If you are an administrator, edit the \"trusted_domains\" setting in config/config.php like the example in config.sample.php." : "Xin vui lòng liên hệ với quản trị hệ thống của bạn. Nếu ban là người quản trị hệ thống, sửa phần thiết lập \"trusted_domains\" trong file config/config.php giống như trong ví dụ tại file config.sample.php.", @@ -221,6 +235,7 @@ "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Trợ giúp, xem <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>.", "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Tôi biết rằng nếu tôi tiếp tục thực hiện cập nhập qua giao diện Web có rủi ro, mà yêu cầu đó chạy trong một khoảng thời gian bị quá hạn và có thể gây mất dữ liệu, nếu tôi có một bản sao và tôi biết cách khôi phục bản cài đặt đã sao lưu trong trường hợp bị lỗi khi cập nhật.", "Upgrade via web on my own risk" : "Nâng cấp qua web", + "Maintenance mode" : "Chế độ bảo trì", "This %s instance is currently in maintenance mode, which may take a while." : "Bản cài đặt%s hiện tại đang trong chế độ \"bảo trì\", do vậy có thể bạn cần phải đợi thêm chút ít thời gian.", "Contact your system administrator if this message persists or appeared unexpectedly." : "Liên hệ với người quản trị nếu lỗi này vẫn tồn tại hoặc xuất hiện bất ngờ.", "[%d / %d]: Checking table %s" : "[%d / %d]: đang kiểm tra bảng được %s", @@ -230,6 +245,7 @@ "More" : "hơn", "More apps menu" : "Nhiều trình đơn ứng dụng hơn", "Settings menu" : "Trình đơn thiết lập", - "The password is wrong. Try again." : "Sai mật khẩu. Hãy thử lại." + "The password is wrong. Try again." : "Sai mật khẩu. Hãy thử lại.", + "Setup two-factor authentication" : "Cài đặt bảo mật hai lớp" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/core/src/components/login/PasswordLessLoginForm.vue b/core/src/components/login/PasswordLessLoginForm.vue index 3c0013936f0..455017b8683 100644 --- a/core/src/components/login/PasswordLessLoginForm.vue +++ b/core/src/components/login/PasswordLessLoginForm.vue @@ -200,12 +200,13 @@ export default { completeAuthentication(challenge) { console.debug('TIME TO COMPLETE') - const location = this.redirectUrl + const redirectUrl = this.redirectUrl return finishAuthentication(JSON.stringify(challenge)) - .then(data => { + .then(({ defaultRedirectUrl }) => { console.debug('Logged in redirecting') - window.location.href = location + // Redirect url might be false so || should be used instead of ??. + window.location.href = redirectUrl || defaultRedirectUrl }) .catch(error => { console.debug('GOT AN ERROR WHILE SUBMITTING CHALLENGE!') diff --git a/dist/core-login.js b/dist/core-login.js index 2ecb8708b00..9b8d82985dd 100644 --- a/dist/core-login.js +++ b/dist/core-login.js @@ -1,3 +1,3 @@ /*! For license information please see core-login.js.LICENSE.txt */ -!function(){var e,o={51424:function(e,o,i){"use strict";var r=i(20144),a=i(74854),s=i(19755),l=i.n(s),c=i(79753),u={},d=[],f=i(18181),p=i(26932),h={updatableNotification:null,getDefaultNotificationFunction:null,setDefault:function(t){this.getDefaultNotificationFunction=t},hide:function(t,e){f.ZP.isFunction(t)&&(e=t,t=void 0),t?(t.each((function(){l()(this)[0].toastify?l()(this)[0].toastify.hideToast():console.error("cannot hide toast because object is not set"),this===this.updatableNotification&&(this.updatableNotification=null)})),e&&e.call(),this.getDefaultNotificationFunction&&this.getDefaultNotificationFunction()):console.error("Missing argument $row in OC.Notification.hide() call, caller needs to be adjusted to only dismiss its own notification")},showHtml:function(t,e){(e=e||{}).isHTML=!0,e.timeout=e.timeout?e.timeout:p.Rl;var n=(0,p.PV)(t,e);return n.toastElement.toastify=n,l()(n.toastElement)},show:function(t,e){(e=e||{}).timeout=e.timeout?e.timeout:p.Rl;var n=(0,p.PV)(function(t){return t.toString().split("&").join("&").split("<").join("<").split(">").join(">").split('"').join(""").split("'").join("'")}(t),e);return n.toastElement.toastify=n,l()(n.toastElement)},showUpdate:function(t){return this.updatableNotification&&this.updatableNotification.hideToast(),this.updatableNotification=(0,p.PV)(t,{timeout:p.Rl}),this.updatableNotification.toastElement.toastify=this.updatableNotification,l()(this.updatableNotification.toastElement)},showTemporary:function(t,e){(e=e||{}).timeout=e.timeout||p.TN;var n=(0,p.PV)(t,e);return n.toastElement.toastify=n,l()(n.toastElement)},isHidden:function(){return!l()("#content").find(".toastify").length}},m=f.ZP.throttle((function(){h.showTemporary(t("core","Connection to server lost"))}),7e3,{trailing:!1}),g={enableDynamicSlideToggle:function(){},showAppSidebar:function(t){(t||l()("#app-sidebar")).removeClass("disappear").show(),l()("#app-content").trigger(new(l().Event)("appresized"))},hideAppSidebar:function(t){(t||l()("#app-sidebar")).hide().addClass("disappear"),l()("#app-content").trigger(new(l().Event)("appresized"))}};function v(t,e,n){"post"!==t&&"delete"!==t||!Rt.PasswordConfirmation.requiresPasswordConfirmation()?(n=n||{},l().ajax({type:t.toUpperCase(),url:(0,c.generateOcsUrl)("apps/provisioning_api/api/v1/config/apps")+e,data:n.data||{},success:n.success,error:n.error})):Rt.PasswordConfirmation.requirePasswordConfirmation(_.bind(v,this,t,e,n))}var y=window.oc_appconfig||{},w={getValue:function(t,e,n,o){!function(t,e,n,o){(o=o||{}).data={defaultValue:n},v("get","/"+t+"/"+e,o)}(t,e,n,{success:o})},setValue:function(t,e,n){!function(t,e,n,o){(o=o||{}).data={value:n},v("post","/"+t+"/"+e,o)}(t,e,n)},getApps:function(t){!function(t){v("get","",t)}({success:t})},getKeys:function(t,e){!function(t,e){v("get","/"+t,e)}(t,{success:e})},deleteKey:function(t,e){!function(t,e,n){v("delete","/"+t+"/"+e,void 0)}(t,e)}},b=void 0!==window._oc_appswebroots&&window._oc_appswebroots,P=i(72316),C=i.n(P),k=i(87240),A={create:"POST",update:"PROPPATCH",patch:"PROPPATCH",delete:"DELETE",read:"PROPFIND"};function x(t,e){if(f.ZP.isArray(t))return f.ZP.map(t,(function(t){return x(t,e)}));var n={href:t.href};return f.ZP.each(t.propStat,(function(t){if("HTTP/1.1 200 OK"===t.status)for(var o in t.properties){var i=o;o in e&&(i=e[o]),n[i]=t.properties[o]}})),n.id||(n.id=O(n.href)),n}function O(t){var e=t.indexOf("?");e>0&&(t=t.substr(0,e));var n,o=t.split("/");do{n=o[o.length-1],o.pop()}while(!n&&o.length>0);return n}function T(t){return t>=200&&t<=299}function E(t,e,n,o){return t.propPatch(e.url,function(t,e){var n,o={};for(n in t){var i=e[n],r=t[n];i||(console.warn('No matching DAV property for property "'+n),i=n),(f.ZP.isBoolean(r)||f.ZP.isNumber(r))&&(r=""+r),o[i]=r}return o}(n.changed,e.davProperties),o).then((function(t){T(t.status)?f.ZP.isFunction(e.success)&&e.success(n.toJSON()):f.ZP.isFunction(e.error)&&e.error(t)}))}var j=C().noConflict();Object.assign(j,{davCall:function(t,e){var n=new k.dav.Client({baseUrl:t.url,xmlNamespaces:f.ZP.extend({"DAV:":"d","http://owncloud.org/ns":"oc"},t.xmlNamespaces||{})});n.resolveUrl=function(){return t.url};var o=f.ZP.extend({"X-Requested-With":"XMLHttpRequest",requesttoken:OC.requestToken},t.headers);return"PROPFIND"===t.type?function(t,e,n,o){return t.propFind(e.url,f.ZP.values(e.davProperties)||[],e.depth,o).then((function(t){if(T(t.status)){if(f.ZP.isFunction(e.success)){var n=f.ZP.invert(e.davProperties),o=x(t.body,n);e.depth>0&&o.shift(),e.success(o)}}else f.ZP.isFunction(e.error)&&e.error(t)}))}(n,t,0,o):"PROPPATCH"===t.type?E(n,t,e,o):"MKCOL"===t.type?function(t,e,n,o){return t.request(e.type,e.url,o,null).then((function(i){T(i.status)?E(t,e,n,o):f.ZP.isFunction(e.error)&&e.error(i)}))}(n,t,e,o):function(t,e,n,o){return o["Content-Type"]="application/json",t.request(e.type,e.url,o,e.data).then((function(t){if(T(t.status)){if(f.ZP.isFunction(e.success)){if("PUT"===e.type||"POST"===e.type||"MKCOL"===e.type){var o=t.body||n.toJSON(),i=t.xhr.getResponseHeader("Content-Location");return"POST"===e.type&&i&&(o.id=O(i)),void e.success(o)}if(207===t.status){var r=f.ZP.invert(e.davProperties);e.success(x(t.body,r))}else e.success(t.body)}}else f.ZP.isFunction(e.error)&&e.error(t)}))}(n,t,e,o)},davSync:function(t){return function(e,n,o){var i={type:A[e]||e},r=n instanceof t.Collection;if("update"===e&&(n.hasInnerCollection?i.type="MKCOL":(n.usePUT||n.collection&&n.collection.usePUT)&&(i.type="PUT")),o.url||(i.url=f.ZP.result(n,"url")||function(){throw new Error('A "url" property or function must be specified')}()),null!=o.data||!n||"create"!==e&&"update"!==e&&"patch"!==e||(i.data=JSON.stringify(o.attrs||n.toJSON(o))),"PROPFIND"!==i.type&&(i.processData=!1),"PROPFIND"===i.type||"PROPPATCH"===i.type){var a=n.davProperties;!a&&n.model&&(a=n.model.prototype.davProperties),a&&(f.ZP.isFunction(a)?i.davProperties=a.call(n):i.davProperties=a),i.davProperties=f.ZP.extend(i.davProperties||{},o.davProperties),f.ZP.isUndefined(o.depth)&&(o.depth=r?1:0)}var s=o.error;o.error=function(t,e,n){o.textStatus=e,o.errorThrown=n,s&&s.call(o.context,t,e,n)};var l=o.xhr=t.davCall(f.ZP.extend(i,o),n);return n.trigger("request",n,l,o),l}}(j)});var S=j,L=i(65358),N=window._oc_config||{},$=P.Model.extend({defaults:{fullName:"",lastMessage:"",actions:[],hasOneAction:!1,hasTwoActions:!1,hasManyActions:!1},initialize:function(){0===this.get("actions").length?this.set("hasOneAction",!0):1===this.get("actions").length?(this.set("hasTwoActions",!0),this.set("secondAction",this.get("actions")[0])):this.set("hasManyActions",!0)}}),I=P.Collection.extend({model:$}),U=P.View.extend({_collection:void 0,_subViews:[],initialize:function(t){this._collection=t.collection},render:function(){var t=this;return t.$el.html(""),t._subViews=[],t._collection.forEach((function(e){var n=new F({model:e});n.render(),t.$el.append(n.$el),n.on("toggle:actionmenu",t._onChildActionMenuToggle,t),t._subViews.push(n)})),t},_onChildActionMenuToggle:function(t){this._subViews.forEach((function(e){e.trigger("parent:toggle:actionmenu",t)}))}}),F=P.View.extend({className:"contact",_template:void 0,_model:void 0,_actionMenuShown:!1,events:{"click .icon-more":"_onToggleActionsMenu"},contactTemplate:i(10944),template:function(t){return this.contactTemplate(t)},initialize:function(t){this._model=t.model,this.on("parent:toggle:actionmenu",this._onOtherActionMenuOpened,this)},render:function(){return this.$el.html(this.template({contact:this._model.toJSON()})),this.delegateEvents(),this.$("div.avatar").imageplaceholder(this._model.get("fullName")),this.$(".top-action").tooltip({placement:"left"}),this.$(".second-action").tooltip({placement:"left"}),this},_onToggleActionsMenu:function(){this._actionMenuShown=!this._actionMenuShown,this._actionMenuShown?this.$(".menu").show():this.$(".menu").hide(),this.trigger("toggle:actionmenu",this.$el)},_onOtherActionMenuOpened:function(t){this.$el.is(t)||(this._actionMenuShown=!1,this.$(".menu").hide())}}),R=P.View.extend({_loadingTemplate:void 0,_errorTemplate:void 0,_contentTemplate:void 0,_contactsTemplate:void 0,_contacts:void 0,_searchTerm:"",events:{"input #contactsmenu-search":"_onSearch"},templates:{loading:i(95386),error:i(20421),menu:i(66115),list:i(34083)},_onSearch:f.ZP.debounce((function(t){var e=this.$("#contactsmenu-search").val();e!==this._searchTerm&&(this.trigger("search",this.$("#contactsmenu-search").val()),this._searchTerm=e)}),700),loadingTemplate:function(t){return this.templates.loading(t)},errorTemplate:function(e){return this.templates.error(f.ZP.extend({couldNotLoadText:t("core","Could not load your contacts")},e))},contentTemplate:function(e){return this.templates.menu(f.ZP.extend({searchContactsText:t("core","Search contacts …")},e))},contactsTemplate:function(e){return this.templates.list(f.ZP.extend({noContactsFoundText:t("core","No contacts found"),showAllContactsText:t("core","Show all contacts …"),contactsAppMgmtText:t("core","Install the Contacts app")},e))},initialize:function(t){this.options=t},showLoading:function(t){this.render(),this._contacts=void 0,this.$(".content").html(this.loadingTemplate({loadingText:t}))},showError:function(){this.render(),this._contacts=void 0,this.$(".content").html(this.errorTemplate())},showContacts:function(t,e){this._contacts=t.contacts,this.render({contacts:t.contacts});var n=new U({collection:t.contacts});n.render(),this.$(".content").html(this.contactsTemplate({contacts:t.contacts,searchTerm:e,contactsAppEnabled:t.contactsAppEnabled,contactsAppURL:Rt.generateUrl("/apps/contacts"),canInstallApp:Rt.isUserAdmin(),contactsAppMgmtURL:Rt.generateUrl("/settings/apps/social/contacts")})),this.$("#contactsmenu-contacts").html(n.$el)},render:function(t){var e=this.$("#contactsmenu-search").val();return this.$el.html(this.contentTemplate(t)),this.$("#contactsmenu-search").val(e),this.$("#contactsmenu-search").focus(),this}}),M=function(t){this.initialize(t)};M.prototype={$el:void 0,_$trigger:void 0,_view:void 0,_contactsPromise:void 0,initialize:function(t){this.$el=t.el,this._$trigger=t.trigger,this._view=new R({el:this.$el}),this._view.on("search",(function(t){this._loadContacts(t)}),this),Rt.registerMenu(this._$trigger,this.$el,function(){this._toggleVisibility(!0)}.bind(this),!0),this.$el.on("beforeHide",function(){this._toggleVisibility(!1)}.bind(this))},_toggleVisibility:function(t){return t?this._loadContacts():(this.$el.html(""),Promise.resolve())},_getContacts:function(t){var e=Rt.generateUrl("/contactsmenu/contacts");return Promise.resolve(l().ajax(e,{method:"POST",data:{filter:t}}))},_loadContacts:function(e){var n=this;return n._contactsPromise||(n._contactsPromise=n._getContacts(e)),f.ZP.isUndefined(e)||""===e?n._view.showLoading(t("core","Loading your contacts …")):n._view.showLoading(t("core","Looking for {term} …",{term:e})),n._contactsPromise.then((function(t){t.contacts=new I(t.contacts),n._view.showContacts(t,e)}),(function(t){n._view.showError(),console.error("There was an error loading your contacts",t)})).then((function(){delete n._contactsPromise})).catch(console.error.bind(this))}};var z=M,B=document.getElementsByTagName("head")[0].getAttribute("data-user"),D=document.getElementsByTagName("head")[0].getAttribute("data-user-displayname"),Z=void 0!==B&&B;function q(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function H(t,e,n){return e&&q(t.prototype,e),n&&q(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t}var Y={Search:H((function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),console.warn("OCA.Search is deprecated. Please use the unified search API instead")}))},K=function(t){return"click"===t.type||"keydown"===t.type&&"Enter"===t.key};function V(t,e,n,o,i,r,a){try{var s=t[r](a),l=s.value}catch(t){return void n(t)}s.done?e(l):Promise.resolve(l).then(o,i)}function G(t){return function(){var e=this,n=arguments;return new Promise((function(o,i){var r=t.apply(e,n);function a(t){V(r,o,i,a,s,"next",t)}function s(t){V(r,o,i,a,s,"throw",t)}a(void 0)}))}}function J(t){return J="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},J(t)}var W,Q,X,tt,et={YES_NO_BUTTONS:70,OK_BUTTONS:71,FILEPICKER_TYPE_CHOOSE:1,FILEPICKER_TYPE_MOVE:2,FILEPICKER_TYPE_COPY:3,FILEPICKER_TYPE_COPY_MOVE:4,FILEPICKER_TYPE_CUSTOM:5,dialogsCounter:0,alert:function(t,e,n,o){this.message(t,e,"alert",et.OK_BUTTON,n,o)},info:function(t,e,n,o){this.message(t,e,"info",et.OK_BUTTON,n,o)},confirm:function(t,e,n,o){return this.message(t,e,"notice",et.YES_NO_BUTTONS,n,o)},confirmDestructive:function(t,e,n,o,i){return this.message(t,e,"none",n,o,void 0===i||i)},confirmHtml:function(t,e,n,o){return this.message(t,e,"notice",et.YES_NO_BUTTONS,n,o,!0)},prompt:function(e,n,o,i,r,a){return l().when(this._getMessageTemplate()).then((function(s){var c="oc-dialog-"+et.dialogsCounter+"-content",u="#"+c,d=s.octemplate({dialog_name:c,title:n,message:e,type:"notice"}),p=l()("<input/>");p.attr("type",a?"password":"text").attr("id",c+"-input").attr("placeholder",r);var h=l()("<label/>").attr("for",c+"-input").text(r+": ");d.append(h),d.append(p),void 0===i&&(i=!1),l()("body").append(d),void 0!==o&&(o=f.ZP.once(o));var m=[{text:t("core","No"),click:function(){void 0!==o&&o(!1,p.val()),l()(u).ocdialog("close")}},{text:t("core","Yes"),click:function(){void 0!==o&&o(!0,p.val()),l()(u).ocdialog("close")},defaultButton:!0}];l()(u).ocdialog({closeOnEscape:!0,modal:i,buttons:m,close:function(){void 0!==o&&o(!1,p.val())}}),p.focus(),et.dialogsCounter++}))},filepicker:function(e,n,o,i,r,a,s,c){var u=this;if(this.filepicker.sortField="name",this.filepicker.sortOrder="asc",!this.filepicker.loading){void 0===a&&(a=this.FILEPICKER_TYPE_CHOOSE);var d=t("core","No files in here"),f=t("files","New folder");a!==this.FILEPICKER_TYPE_COPY&&a!==this.FILEPICKER_TYPE_MOVE&&a!==this.FILEPICKER_TYPE_COPY_MOVE||(d=t("core","No more subfolders in here")),this.filepicker.loading=!0,this.filepicker.filesClient=Y.Sharing&&Y.Sharing.PublicApp&&Y.Sharing.PublicApp.fileList?Y.Sharing.PublicApp.fileList.filesClient:Rt.Files.getClient(),this.filelist=null,s=s||"",c=Object.assign({allowDirectoryChooser:!1},c),l().when(this._getFilePickerTemplate()).then((function(p){u.filepicker.loading=!1,u.$filePicker&&u.$filePicker.ocdialog("close"),null==i&&(i=[]),"string"==typeof i&&(i=[i]),u.$filePicker=p.octemplate({dialog_name:"oc-dialog-filepicker-content",title:e,emptytext:d,newtext:f,nameCol:t("core","Name"),sizeCol:t("core","Size"),modifiedCol:t("core","Modified")}).data("path",s).data("multiselect",o).data("mimetype",i).data("allowDirectoryChooser",c.allowDirectoryChooser),"function"==typeof c.filter&&u.$filePicker.data("filter",c.filter),void 0===r&&(r=!1),void 0===o&&(o=!1),l()("body").prepend(u.$filePicker),u.$showGridView=l()("button#picker-showgridview"),u.$showGridView.on("click keydown",(function(t){K(t)&&u._onGridviewChange()})),u._getGridSettings();var h=u.$filePicker.find(".actions.creatable .button-add");a!==u.FILEPICKER_TYPE_CHOOSE||c.allowDirectoryChooser||u.$filePicker.find(".actions.creatable").hide(),h.on("focus",(function(){u.$filePicker.ocdialog("setEnterCallback",(function(t){t.stopImmediatePropagation(),t.preventDefault(),h.click()}))})),h.on("blur",(function(){u.$filePicker.ocdialog("unsetEnterCallback")})),Rt.registerMenu(h,u.$filePicker.find(".menu"),(function(){g.tooltip("hide"),g.focus(),u.$filePicker.ocdialog("setEnterCallback",(function(t){t.stopImmediatePropagation(),t.preventDefault(),u.$filePicker.submit()}));var t=g.val(),e=t.lastIndexOf(".");-1===e&&(e=t.length),g.selectRange(0,e)}));var m=u.$filePicker.find(".filenameform"),g=m.find("input[type='text']"),v=m.find("input[type='submit']");g.on("keydown",(function(t){K(t)&&(t.stopImmediatePropagation(),t.preventDefault(),m.submit())})),v.on("click",(function(t){t.stopImmediatePropagation(),t.preventDefault(),m.submit()}));m.on("submit",(function(e){if(e.stopPropagation(),e.preventDefault(),function(){var e=g.val();try{if(function(e){var n=e.trim();if("."===n||".."===n)throw t("files",'"{name}" is an invalid file name.',{name:e});if(0===n.length)throw t("files","File name cannot be empty.");if(-1!==n.indexOf("/"))throw t("files",'"/" is not allowed inside a file name.');if(n.match(Rt.config.blacklist_files_regex))throw t("files",'"{name}" is not an allowed filetype',{name:e});return!0}(e)){if(u.filelist.find((function(t){return t.name===this}),e))throw t("files","{newName} already exists",{newName:e},void 0,{escape:!1});return!0}}catch(t){g.attr("title",t),g.tooltip({placement:"right",trigger:"manual",container:".newFolderMenu"}),g.tooltip("_fixTitle"),g.tooltip("show"),g.addClass("error")}return!1}()){var n=g.val();u.filepicker.filesClient.createDirectory(u.$filePicker.data("path")+"/"+n).always((function(t){u._fillFilePicker(u.$filePicker.data("path")+"/"+n)})),Rt.hideMenus(),u.$filePicker.ocdialog("unsetEnterCallback"),u.$filePicker.click(),g.val(f)}})),g.on("input",(function(t){g.tooltip("hide")})),u.$filePicker.ready((function(){u.$fileListHeader=u.$filePicker.find(".filelist thead tr"),u.$filelist=u.$filePicker.find(".filelist tbody"),u.$filelistContainer=u.$filePicker.find(".filelist-container"),u.$dirTree=u.$filePicker.find(".dirtree"),u.$dirTree.on("click keydown","div:not(:last-child)",u,(function(t){K(t)&&u._handleTreeListSelect(t,a)})),u.$filelist.on("click keydown","tr",(function(t){K(t)&&u._handlePickerClick(t,l()(this),a)})),u.$fileListHeader.on("click keydown","a",(function(t){if(K(t)){var e=u.$filePicker.data("path");u.filepicker.sortField=l()(t.currentTarget).data("sort"),u.filepicker.sortOrder="asc"===u.filepicker.sortOrder?"desc":"asc",u._fillFilePicker(e)}})),u._fillFilePicker(s)}));var y=function(t){if(void 0!==n){var e;if(!0===o)e=[],u.$filelist.find("tr.filepicker_element_selected").each((function(t,n){e.push(u.$filePicker.data("path")+"/"+l()(n).data("entryname"))}));else{e=u.$filePicker.data("path");var i=u.$filelist.find("tr.filepicker_element_selected").data("entryname");i&&(e+="/"+i)}n(e,t),u.$filePicker.ocdialog("close")}},w=[];a===et.FILEPICKER_TYPE_CHOOSE?w.push({text:t("core","Choose"),click:function(){y(et.FILEPICKER_TYPE_CHOOSE)},defaultButton:!0}):a===et.FILEPICKER_TYPE_CUSTOM?c.buttons.forEach((function(t){w.push({text:t.text,click:function(){y(t.type)},defaultButton:t.defaultButton})})):(a!==et.FILEPICKER_TYPE_COPY&&a!==et.FILEPICKER_TYPE_COPY_MOVE||w.push({text:t("core","Copy"),click:function(){y(et.FILEPICKER_TYPE_COPY)},defaultButton:!1}),a!==et.FILEPICKER_TYPE_MOVE&&a!==et.FILEPICKER_TYPE_COPY_MOVE||w.push({text:t("core","Move"),click:function(){y(et.FILEPICKER_TYPE_MOVE)},defaultButton:!0})),u.$filePicker.ocdialog({closeOnEscape:!0,width:600,height:500,modal:r,buttons:w,style:{buttons:"aside"},close:function(){try{l()(this).ocdialog("destroy").remove()}catch(t){}u.$filePicker=null}});var b=u.$filePicker.closest(".oc-dialog").find(".primary");-1!==u.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||u.$filePicker.data("allowDirectoryChooser")?b.prop("disabled",!1):b.prop("disabled",!0)})).fail((function(e,n){u.filepicker.loading=!1,0!==e&&alert(t("core","Error loading file picker template: {error}",{error:n}))}))}},message:function(e,n,o,i,r,a,s){return l().when(this._getMessageTemplate()).then((function(c){var u="oc-dialog-"+et.dialogsCounter+"-content",d="#"+u,f=c.octemplate({dialog_name:u,title:n,message:e,type:o},s?{escapeFunction:""}:{});void 0===a&&(a=!1),l()("body").append(f);var p=[];switch(i){case et.YES_NO_BUTTONS:p=[{text:t("core","No"),click:function(){void 0!==r&&r(!1),l()(d).ocdialog("close")}},{text:t("core","Yes"),click:function(){void 0!==r&&r(!0),l()(d).ocdialog("close")},defaultButton:!0}];break;case et.OK_BUTTON:p[0]={text:t("core","OK"),click:function(){l()(d).ocdialog("close"),void 0!==r&&r()},defaultButton:!0};break;default:"object"===J(i)&&i.type===et.YES_NO_BUTTONS&&(p=[{text:i.cancel||t("core","No"),click:function(){void 0!==r&&r(!1),l()(d).ocdialog("close")}},{text:i.confirm||t("core","Yes"),click:function(){void 0!==r&&r(!0),l()(d).ocdialog("close")},defaultButton:!0,classes:i.confirmClasses}])}l()(d).ocdialog({closeOnEscape:!0,closeCallback:function(){r&&r(!1)},modal:a,buttons:p}),et.dialogsCounter++})).fail((function(o,i){0===o?alert(n+": "+e):alert(t("core","Error loading message template: {error}",{error:i}))}))},_fileexistsshown:!1,fileexists:function(e,o,i,r){var a=this,s=new(l().Deferred),c=function(t,e,n,o,i){o=Math.round(o),i=Math.round(i);for(var r=t.getContext("2d").getImageData(0,0,e,n),a=t.getContext("2d").getImageData(0,0,o,i),s=r.data,l=a.data,c=e/o,u=n/i,d=Math.ceil(c/2),f=Math.ceil(u/2),p=0;p<i;p++)for(var h=0;h<o;h++){for(var m=4*(h+p*o),g=0,v=0,y=0,w=0,b=0,_=0,P=0,C=(p+.5)*u,k=Math.floor(p*u);k<(p+1)*u;k++)for(var A=Math.abs(C-(k+.5))/f,x=(h+.5)*c,O=A*A,T=Math.floor(h*c);T<(h+1)*c;T++){var E=Math.abs(x-(T+.5))/d,j=Math.sqrt(O+E*E);j>=-1&&j<=1&&(g=2*j*j*j-3*j*j+1)>0&&(P+=g*s[3+(E=4*(T+k*e))],y+=g,s[E+3]<255&&(g=g*s[E+3]/250),w+=g*s[E],b+=g*s[E+1],_+=g*s[E+2],v+=g)}l[m]=w/v,l[m+1]=b/v,l[m+2]=_/v,l[m+3]=P/y}t.getContext("2d").clearRect(0,0,Math.max(e,o),Math.max(n,i)),t.width=o,t.height=i,t.getContext("2d").putImageData(a,0,0)},u=function(n,o,i){var r=n.find(".template").clone().removeClass("template").addClass("conflict"),a=r.find(".original"),s=r.find(".replacement");r.data("data",e),r.find(".filename").text(o.name),a.find(".size").text(Rt.Util.humanFileSize(o.size)),a.find(".mtime").text(Rt.Util.formatDate(o.mtime)),i.size&&i.lastModified&&(s.find(".size").text(Rt.Util.humanFileSize(i.size)),s.find(".mtime").text(Rt.Util.formatDate(i.lastModified)));var u=o.directory+"/"+o.name,d={file:u,x:96,y:96,c:o.etag,forceIcon:0},f=Files.generatePreviewUrl(d);f=f.replace(/'/g,"%27"),a.find(".icon").css({"background-image":"url('"+f+"')"}),function(t){var e=new(l().Deferred),n=t.type&&t.type.split("/").shift();if(window.FileReader&&"image"===n){var o=new FileReader;o.onload=function(t){var n=new Blob([t.target.result]);window.URL=window.URL||window.webkitURL;var o=window.URL.createObjectURL(n),i=new Image;i.src=o,i.onload=function(){var t,n,o,r,a,s,l,u=(t=i,a=document.createElement("canvas"),s=t.width,l=t.height,s>l?(o=0,n=(s-l)/2):(o=(l-s)/2,n=0),r=Math.min(s,l),a.width=r,a.height=r,a.getContext("2d").drawImage(t,n,o,r,r,0,0,r,r),c(a,r,r,96,96),a.toDataURL("image/png",.7));e.resolve(u)}},o.readAsArrayBuffer(t)}else e.reject();return e}(i).then((function(t){s.find(".icon").css("background-image","url("+t+")")}),(function(){u=Rt.MimeType.getIconUrl(i.type),s.find(".icon").css("background-image","url("+u+")")}));var p=n.find(".conflict").length;a.find("input:checkbox").attr("id","checkbox_original_"+p),s.find("input:checkbox").attr("id","checkbox_replacement_"+p),n.append(r),i.lastModified>o.mtime?s.find(".mtime").css("font-weight","bold"):i.lastModified<o.mtime&&a.find(".mtime").css("font-weight","bold"),i.size&&i.size>o.size?s.find(".size").css("font-weight","bold"):i.size&&i.size<o.size&&a.find(".size").css("font-weight","bold"),"readonly"===o.status&&(a.addClass("readonly").find('input[type="checkbox"]').prop("checked",!0).prop("disabled",!0),a.find(".message").text(t("core","read-only")))},d="oc-dialog-fileexists-content",f="#"+d;if(this._fileexistsshown){var p=l()(f+" .conflicts");u(p,o,i);var h=l()(f+" .conflict").length,m=n("core","{count} file conflict","{count} file conflicts",h,{count:h});l()(f).parent().children(".oc-dialog-title").text(m),l()(window).trigger("resize"),s.resolve()}else this._fileexistsshown=!0,l().when(this._getFileExistsTemplate()).then((function(n){var c=t("core","One file conflict"),p=n.octemplate({dialog_name:d,title:c,type:"fileexists",allnewfiles:t("core","New Files"),allexistingfiles:t("core","Already existing files"),why:t("core","Which files do you want to keep?"),what:t("core","If you select both versions, the copied file will have a number added to its name.")});if(l()("body").append(p),o&&i){var h=p.find(".conflicts");u(h,o,i)}var m=[{text:t("core","Cancel"),classes:"cancel",click:function(){void 0!==r.onCancel&&r.onCancel(e),l()(f).ocdialog("close")}},{text:t("core","Continue"),classes:"continue",click:function(){void 0!==r.onContinue&&r.onContinue(l()(f+" .conflict")),l()(f).ocdialog("close")}}];l()(f).ocdialog({width:500,closeOnEscape:!0,modal:!0,buttons:m,closeButton:null,close:function(){a._fileexistsshown=!1;try{l()(this).ocdialog("destroy").remove()}catch(t){}}}),l()(f).css("height","auto");var g=p.closest(".oc-dialog").find("button.continue");function v(){var t=p.find(".conflicts .checkbox:checked").length;g.prop("disabled",0===t)}g.prop("disabled",!0),l()(f).find(".allnewfiles").on("click",(function(){l()(f).find('.conflict .replacement input[type="checkbox"]').prop("checked",l()(this).prop("checked"))})),l()(f).find(".allexistingfiles").on("click",(function(){l()(f).find('.conflict .original:not(.readonly) input[type="checkbox"]').prop("checked",l()(this).prop("checked"))})),l()(f).find(".conflicts").on("click",".replacement,.original:not(.readonly)",(function(){var t=l()(this).find('input[type="checkbox"]');t.prop("checked",!t.prop("checked"))})),l()(f).find(".conflicts").on("click",'.replacement input[type="checkbox"],.original:not(.readonly) input[type="checkbox"]',(function(){var t=l()(this);t.prop("checked",!t.prop("checked"))})),l()(f).on("click",".replacement,.allnewfiles",(function(){var e=l()(f).find('.conflict .replacement input[type="checkbox"]:checked').length;e===l()(f+" .conflict").length?(l()(f).find(".allnewfiles").prop("checked",!0),l()(f).find(".allnewfiles + .count").text(t("core","(all selected)"))):e>0?(l()(f).find(".allnewfiles").prop("checked",!1),l()(f).find(".allnewfiles + .count").text(t("core","({count} selected)",{count:e}))):(l()(f).find(".allnewfiles").prop("checked",!1),l()(f).find(".allnewfiles + .count").text("")),v()})),l()(f).on("click",".original,.allexistingfiles",(function(){var e=l()(f).find('.conflict .original input[type="checkbox"]:checked').length;e===l()(f+" .conflict").length?(l()(f).find(".allexistingfiles").prop("checked",!0),l()(f).find(".allexistingfiles + .count").text(t("core","(all selected)"))):e>0?(l()(f).find(".allexistingfiles").prop("checked",!1),l()(f).find(".allexistingfiles + .count").text(t("core","({count} selected)",{count:e}))):(l()(f).find(".allexistingfiles").prop("checked",!1),l()(f).find(".allexistingfiles + .count").text("")),v()})),s.resolve()})).fail((function(){s.reject(),alert(t("core","Error loading file exists template"))}));return s.promise()},_getGridSettings:function(){var e=this;l().get(Rt.generateUrl("/apps/files/api/v1/showgridview"),(function(n){e.$showGridView.removeClass("icon-toggle-filelist icon-toggle-pictures").addClass(n.gridview?"icon-toggle-filelist":"icon-toggle-pictures"),e.$showGridView.attr("aria-label",n.gridview?t("files","Show list view"):t("files","Show grid view")),l()(".list-container").toggleClass("view-grid",n.gridview)}))},_onGridviewChange:function(){var e=this.$showGridView.hasClass("icon-toggle-filelist");Rt.currentUser&&l().post(Rt.generateUrl("/apps/files/api/v1/showgridview"),{show:!e}),this.$showGridView.removeClass("icon-toggle-filelist icon-toggle-pictures").addClass(e?"icon-toggle-pictures":"icon-toggle-filelist"),this.$showGridView.attr("aria-label",e?t("files","Show grid view"):t("files","Show list view")),this.$filePicker.find(".list-container").toggleClass("view-grid",!e)},_getFilePickerTemplate:function(){var t=l().Deferred();if(this.$filePickerTemplate)t.resolve(this.$filePickerTemplate);else{var e=this;l().get(Rt.filePath("core","templates","filepicker.html"),(function(n){e.$filePickerTemplate=l()(n),e.$listTmpl=e.$filePickerTemplate.find(".filelist tbody tr:first-child").detach(),t.resolve(e.$filePickerTemplate)})).fail((function(e,n,o){t.reject(e.status,o)}))}return t.promise()},_getMessageTemplate:function(){var t=l().Deferred();if(this.$messageTemplate)t.resolve(this.$messageTemplate);else{var e=this;l().get(Rt.filePath("core","templates","message.html"),(function(n){e.$messageTemplate=l()(n),t.resolve(e.$messageTemplate)})).fail((function(e,n,o){t.reject(e.status,o)}))}return t.promise()},_getFileExistsTemplate:function(){var t=l().Deferred();if(this.$fileexistsTemplate)t.resolve(this.$fileexistsTemplate);else{var e=this;l().get(Rt.filePath("files","templates","fileexists.html"),(function(n){e.$fileexistsTemplate=l()(n),t.resolve(e.$fileexistsTemplate)})).fail((function(){t.reject()}))}return t.promise()},_getFileList:function(t,e){return"string"==typeof e&&(e=[e]),l().getJSON(Rt.filePath("files","ajax","list.php"),{dir:t,mimetypes:JSON.stringify(e)})},_fillFilePicker:(W=G(regeneratorRuntime.mark((function e(n){var o,i,r,a,s,c,u,d;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=this,this.$filelist.empty(),this.$filePicker.find(".emptycontent").hide(),this.$filelistContainer.addClass("icon-loading"),this.$filePicker.data("path",n),i=this.$filePicker.data("mimetype"),r=this.$filePicker.data("filter"),"string"==typeof i&&(i=[i]),o.$fileListHeader.find(".sort-indicator").addClass("hidden").removeClass("icon-triangle-n").removeClass("icon-triangle-s"),o.$fileListHeader.find("[data-sort="+o.filepicker.sortField+"] .sort-indicator").removeClass("hidden"),"asc"===o.filepicker.sortOrder?o.$fileListHeader.find("[data-sort="+o.filepicker.sortField+"] .sort-indicator").addClass("icon-triangle-n"):o.$fileListHeader.find("[data-sort="+o.filepicker.sortField+"] .sort-indicator").addClass("icon-triangle-s"),a=function(){var t=G(regeneratorRuntime.mark((function t(e){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",o.filepicker.filesClient.getFolderContents(e).then((function(t,e){return e})));case 1:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}(),e.prev=12,e.next=15,a(n);case 15:s=e.sent,e.next=25;break;case 18:return e.prev=18,e.t0=e.catch(12),console.error("Requested path does not exists, falling back to root"),e.next=23,a("/");case 23:s=e.sent,this.$filePicker.data("path","/");case 25:o.filelist=s,i&&i.length>0&&-1===i.indexOf("*")&&(s=s.filter((function(t){return"dir"===t.type||-1!==i.indexOf(t.mimetype)}))),r&&(s=s.filter(r)),null===(c=document.getElementById("showHiddenFiles"))||"1"===c.value||(s=s.filter((function(t){return!t.name.startsWith(".")}))),d=(u={name:function(t,e){return"dir"===t.type&&"dir"!==e.type?-1:"dir"!==t.type&&"dir"===e.type?1:Rt.Util.naturalSortCompare(t.name,e.name)},size:function(t,e){return t.size-e.size},mtime:function(t,e){return t.mtime-e.mtime}})[o.filepicker.sortField]||u.name,s=s.sort((function(t,e){var n=function(t){return t.tags&&t.tags.indexOf(Rt.TAG_FAVORITE)>=0};return n(t)&&!n(e)?-1:!n(t)&&n(e)?1:"asc"===o.filepicker.sortOrder?d(t,e):-d(t,e)})),o._fillSlug(),0===s.length?(o.$filePicker.find(".emptycontent").show(),o.$fileListHeader.hide()):(o.$filePicker.find(".emptycontent").hide(),o.$fileListHeader.show()),o.$filelist.empty(),l().each(s,(function(e,i){var r,a;if(i.isEncrypted&&"httpd/unix-directory"===i.mimetype?i.icon=Rt.MimeType.getIconUrl("dir-encrypted"):i.icon=Rt.MimeType.getIconUrl(i.mimetype),void 0!==i.size&&i.size>=0?(r=Rt.Util.humanFileSize(parseInt(i.size,10),!0),a=Math.round(160-Math.pow(i.size/1048576,2))):(r=t("files","Pending"),a=80),i.name.length>=10)var s=Math.min(Math.floor(i.name.length/2),10),c=i.name.substr(0,i.name.length-s),u=i.name.substr(i.name.length-s);else c=i.name,u="";var d=o.$listTmpl.octemplate({type:i.type,dir:n,filename:i.name,filename1:c,filename2:u,date:Rt.Util.relativeModifiedDate(i.mtime),size:r,sizeColor:a,icon:i.icon});if("file"===i.type){var f={file:n+"/"+i.name,x:100,y:100},p=new Image,h=Rt.generateUrl("/core/preview.png?")+l().param(f);p.onload=function(){p.width>5&&d.find("td.filename").attr("style","background-image:url("+h+")")},p.src=h}o.$filelist.append(d)})),o.$filelistContainer.removeClass("icon-loading");case 39:case"end":return e.stop()}}),e,this,[[12,18]])}))),function(t){return W.apply(this,arguments)}),_fillSlug:function(){var t=this.$dirTree.find(".actions.creatable").detach();this.$dirTree.empty();var e=this;e.$dirTree.append(t);var n=this.$filePicker.data("path"),o=l()('<div data-dir="{dir}" tabindex="0"><a>{name}</a></div>').addClass("crumb");if(n){var i=n.split("/");l().each(i,(function(t,n){if(""===(n=i.pop()))return!1;e.$dirTree.prepend(o.octemplate({dir:i.join("/")+"/"+n,name:n}))}))}o.octemplate({dir:"",name:""},{escapeFunction:null}).prependTo(this.$dirTree)},_handleTreeListSelect:function(t,e){var n=t.data,o=l()(t.target).closest(".crumb").data("dir");n._fillFilePicker(o);var i=t.target.closest(".oc-dialog"),r=l()(".primary",i);this._changeButtonsText(e,o.split(/[/]+/).pop()),-1!==this.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||this.$filePicker.data("allowDirectoryChooser")?r.prop("disabled",!1):r.prop("disabled",!0)},_handlePickerClick:function(t,e,n){var o=this.$filePicker.closest(".oc-dialog").find(".primary");"file"===e.data("type")?(!0===this.$filePicker.data("multiselect")&&t.ctrlKey||this.$filelist.find(".filepicker_element_selected").removeClass("filepicker_element_selected"),e.toggleClass("filepicker_element_selected"),o.prop("disabled",!1)):"dir"===e.data("type")&&(this._fillFilePicker(this.$filePicker.data("path")+"/"+e.data("entryname")),this._changeButtonsText(n,e.data("entryname")),-1!==this.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||this.$filePicker.data("allowDirectoryChooser")?o.prop("disabled",!1):o.prop("disabled",!0))},_changeButtonsText:function(e,n){var o=""===n?t("core","Copy"):t("core","Copy to {folder}",{folder:n}),i=""===n?t("core","Move"):t("core","Move to {folder}",{folder:n}),r=l()(".oc-dialog-buttonrow button");switch(e){case this.FILEPICKER_TYPE_CHOOSE:case this.FILEPICKER_TYPE_CUSTOM:break;case this.FILEPICKER_TYPE_COPY:r.text(o);break;case this.FILEPICKER_TYPE_MOVE:r.text(i);break;case this.FILEPICKER_TYPE_COPY_MOVE:r.eq(0).text(o),r.eq(1).text(i)}}},nt=et,ot=(Q=document,X=a.j8,tt=Q.getElementsByTagName("head")[0].getAttribute("data-requesttoken"),{getToken:function(){return tt},setToken:function(t){X("csrf-token-update",{token:tt=t})}}).getToken,it=function t(e,n){var o,i,r="";if(this.typelessListeners=[],this.closed=!1,this.listeners={},n)for(o in n)r+=o+"="+encodeURIComponent(n[o])+"&";if(r+="requesttoken="+encodeURIComponent(ot()),this.useFallBack||"undefined"==typeof EventSource){var a="oc_eventsource_iframe_"+t.iframeCount;t.fallBackSources[t.iframeCount]=this,this.iframe=l()("<iframe></iframe>"),this.iframe.attr("id",a),this.iframe.hide(),i="&",-1===e.indexOf("?")&&(i="?"),this.iframe.attr("src",e+i+"fallback=true&fallback_id="+t.iframeCount+"&"+r),l()("body").append(this.iframe),this.useFallBack=!0,t.iframeCount++}else i="&",-1===e.indexOf("?")&&(i="?"),this.source=new EventSource(e+i+r),this.source.onmessage=function(t){for(var e=0;e<this.typelessListeners.length;e++)this.typelessListeners[e](JSON.parse(t.data))}.bind(this);this.listen("__internal__",function(t){"close"===t&&this.close()}.bind(this))};it.fallBackSources=[],it.iframeCount=0,it.fallBackCallBack=function(t,e,n){it.fallBackSources[t].fallBackCallBack(e,n)},it.prototype={typelessListeners:[],iframe:null,listeners:{},useFallBack:!1,fallBackCallBack:function(t,e){var n;if(!this.closed)if(t){if(void 0!==this.listeners.done)for(n=0;n<this.listeners[t].length;n++)this.listeners[t][n](e)}else for(n=0;n<this.typelessListeners.length;n++)this.typelessListeners[n](e)},lastLength:0,listen:function(t,e){e&&e.call&&(t?this.useFallBack?(this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].push(e)):this.source.addEventListener(t,(function(t){void 0!==t.data?e(JSON.parse(t.data)):e("")}),!1):this.typelessListeners.push(e))},close:function(){this.closed=!0,void 0!==this.source&&this.source.close()}};var rt=it,at=i(42515),st=null,lt=null,ct=function(t){if(st){var e=st;st.trigger(new(l().Event)("beforeHide")),st.slideUp(50,(function(){e.trigger(new(l().Event)("afterHide")),t&&t.apply(this,arguments)}))}l()(".menutoggle").attr("aria-expanded",!1),lt&<.attr("aria-expanded",!1),l()(".openedMenu").removeClass("openedMenu"),st=null,lt=null},ut=!!window._oc_isadmin,dt=i(27856),ft=i.n(dt),pt=i(86834),ht=i.n(pt),mt=i(46488),gt=i.n(mt),vt=i(95573),yt=i.n(vt);window._oc_l10n_registry_translations=window._oc_l10n_registry_translations||{},window._oc_l10n_registry_plural_functions=window._oc_l10n_registry_plural_functions||{};var wt=function(t){return void 0!==window._oc_l10n_registry_translations[t]&&void 0!==window._oc_l10n_registry_plural_functions[t]},bt=function(t){return{translations:window._oc_l10n_registry_translations[t]||{},pluralFunction:window._oc_l10n_registry_plural_functions[t]}};function _t(t){return _t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},_t(t)}var Pt={load:function(t,e){if(wt(t)||"en"===Rt.getLocale()){var n=l().Deferred(),o=n.promise();return o.then(e),n.resolve(),o}var i=this,r=(0,c.generateFilePath)(t,"l10n",Rt.getLocale()+".json");return l().get(r).then((function(e){e.translations&&i.register(t,e.translations,e.pluralForm)})).then(e)},register:function(t,e){var n,o,i;n=t,o=e,i=this._getPlural,wt(n)?function(t,e,n){window._oc_l10n_registry_translations[t]=Object.assign(window._oc_l10n_registry_translations[t],e),window._oc_l10n_registry_plural_functions[t]=n}(n,o,i):function(t,e,n){window._oc_l10n_registry_translations[t]=e,window._oc_l10n_registry_plural_functions[t]=n}(n,o,i)},_unregister:function(t){delete window._oc_l10n_registry_translations[t],delete window._oc_l10n_registry_plural_functions[t]},translate:function(t,e,n,o,i){var r=i||{};f.ZP.defaults(r,{escape:!0,sanitize:!0});var a=r.sanitize?ft().sanitize:gt(),s=r.escape?yt():gt(),l=e,c=bt(t).translations[e];return void 0!==c&&(l=c),"object"===_t(n)||void 0!==o?a(function(t,e,n){return t.replace(/%n/g,n).replace(/{([^{}]*)}/g,(function(t,n){var o=e[n];return a("string"==typeof o||"number"==typeof o?s(o):t)}))}(l,n,o)):a(l)},translatePlural:function(t,e,n,o,i,r){var a="_"+e+"_::_"+n+"_",s=bt(t),c=s.translations[a];if(void 0!==c){var u=c;if(l().isArray(u)){var d=s.pluralFunction(o);return this.translate(t,u[d],i,o,r)}}return 1===o?this.translate(t,e,i,o,r):this.translate(t,n,i,o,r)},_getPlural:function(t){var e=Rt.getLanguage();if("pt-BR"===e&&(e="xbr"),void 0===e||""===e)return 1===t?0:1;switch(e.length>3&&(e=e.substring(0,e.lastIndexOf("-"))),e){case"az":case"bo":case"dz":case"id":case"ja":case"jv":case"ka":case"km":case"kn":case"ko":case"ms":case"th":case"tr":case"vi":case"zh":default:return 0;case"af":case"bn":case"bg":case"ca":case"da":case"de":case"el":case"en":case"eo":case"es":case"et":case"eu":case"fa":case"fi":case"fo":case"fur":case"fy":case"gl":case"gu":case"ha":case"he":case"hu":case"is":case"it":case"ku":case"lb":case"ml":case"mn":case"mr":case"nah":case"nb":case"ne":case"nl":case"nn":case"no":case"oc":case"om":case"or":case"pa":case"pap":case"ps":case"pt":case"so":case"sq":case"sv":case"sw":case"ta":case"te":case"tk":case"ur":case"zu":return 1===t?0:1;case"am":case"bh":case"fil":case"fr":case"gun":case"hi":case"hy":case"ln":case"mg":case"nso":case"xbr":case"ti":case"wa":return 0===t||1===t?0:1;case"be":case"bs":case"hr":case"ru":case"sh":case"sr":case"uk":return t%10==1&&t%100!=11?0:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?1:2;case"cs":case"sk":return 1===t?0:t>=2&&t<=4?1:2;case"ga":return 1===t?0:2===t?1:2;case"lt":return t%10==1&&t%100!=11?0:t%10>=2&&(t%100<10||t%100>=20)?1:2;case"sl":return t%100==1?0:t%100==2?1:t%100==3||t%100==4?2:3;case"mk":return t%10==1?0:1;case"mt":return 1===t?0:0===t||t%100>1&&t%100<11?1:t%100>10&&t%100<20?2:3;case"lv":return 0===t?0:t%10==1&&t%100!=11?1:2;case"pl":return 1===t?0:t%10>=2&&t%10<=4&&(t%100<12||t%100>14)?1:2;case"cy":return 1===t?0:2===t?1:8===t||11===t?2:3;case"ro":return 1===t?0:0===t||t%100>0&&t%100<20?1:2;case"ar":return 0===t?0:1===t?1:2===t?2:t%100>=3&&t%100<=10?3:t%100>=11&&t%100<=99?4:5}}},Ct=Pt;ht().registerHelper("t",(function(t,e){return Pt.translate(t,e)}));var kt=i(9944),At={startSaving:function(e){this.startAction(e,t("core","Saving …"))},startAction:function(t,e){l()(t).text(e).removeClass("success").removeClass("error").stop(!0,!0).show()},finishedSaving:function(t,e){this.finishedAction(t,e)},finishedAction:function(t,e){"success"===e.status?this.finishedSuccess(t,e.data.message):this.finishedError(t,e.data.message)},finishedSuccess:function(t,e){l()(t).text(e).addClass("success").removeClass("error").stop(!0,!0).delay(3e3).fadeOut(900).show()},finishedError:function(t,e){l()(t).text(e).addClass("error").removeClass("success").show()}},xt=i(30381),Ot=i.n(xt),Tt={callback:null,pageLoadTime:null,init:function(){l()(".password-confirm-required").on("click",f.ZP.bind(this.requirePasswordConfirmation,this)),this.pageLoadTime=Ot().now()},requiresPasswordConfirmation:function(){var t=this.pageLoadTime-1e3*window.nc_pageLoad,e=Ot().now()-(t+1e3*window.nc_lastLogin);return window.backendAllowsPasswordConfirmation&&e>18e5},requirePasswordConfirmation:function(e,n,o){n=void 0!==n?n:{};var i={title:t("core","Authentication required"),text:t("core","This action requires you to confirm your password"),confirm:t("core","Confirm"),label:t("core","Password"),error:""},r=f.ZP.extend(i,n),a=this;this.requiresPasswordConfirmation()&&Rt.dialogs.prompt(r.text,r.title,(function(t,e){t&&""!==e?a._confirmPassword(e,r):f.ZP.isFunction(o)&&o()}),!0,r.label,!0).then((function(){var t=l()(".oc-dialog:visible");if(t.find(".ui-icon").remove(),t.addClass("password-confirmation"),""!==r.error){var e=l()("<p></p>").addClass("msg warning").text(r.error);t.find(".oc-dialog-content").append(e)}t.find(".oc-dialog-buttonrow").addClass("aside");var n=t.find("button");n.eq(0).hide(),n.eq(1).text(r.confirm)})),this.callback=e},_confirmPassword:function(e,n){var o=this;l().ajax({url:(0,c.generateUrl)("/login/confirm"),data:{password:e},type:"POST",success:function(t){window.nc_lastLogin=t.lastLogin,f.ZP.isFunction(o.callback)&&o.callback()},error:function(){n.error=t("core","Failed to authenticate, try again"),Rt.PasswordConfirmation.requirePasswordConfirmation(o.callback,n)}})}},Et=window._theme||{},jt={_handlers:[],_pushState:function(t,e,n){var o;if(o="string"==typeof t?t:Rt.buildQueryString(t),window.history.pushState){if(e=e||location.pathname+"?"+o,navigator.userAgent.toLowerCase().indexOf("firefox")>-1&&parseInt(navigator.userAgent.split("/").pop())<51)for(var i,r=document.querySelectorAll('[fill^="url(#"], [stroke^="url(#"], [filter^="url(#invert"]'),a=0,s=r.length;a<s;a++)(i=r[a]).style.fill=i.style.fill,i.style.stroke=i.style.stroke,i.removeAttribute("filter"),i.setAttribute("filter","url(#invert)");n?window.history.replaceState(t,"",e):window.history.pushState(t,"",e)}else window.location.hash="?"+o,this._cancelPop=!0},pushState:function(t,e){this._pushState(t,e,!1)},replaceState:function(t,e){this._pushState(t,e,!0)},addOnPopStateHandler:function(t){this._handlers.push(t)},_parseHashQuery:function(){var t=window.location.hash,e=t.indexOf("?");return e>=0?t.substr(e+1):t.length?t.substr(1):""},_decodeQuery:function(t){return t.replace(/\+/g," ")},parseUrlQuery:function(){var t,e=this._parseHashQuery();return e&&(t=Rt.parseQueryString(this._decodeQuery(e))),(t=f.ZP.extend(t||{},Rt.parseQueryString(this._decodeQuery(location.search))))||{}},_onPopState:function(t){var e;if(this._cancelPop)this._cancelPop=!1;else if(this._handlers.length){e=t&&t.state,f.ZP.isString(e)?e=Rt.parseQueryString(e):e||(e=this.parseUrlQuery()||{});for(var n=0;n<this._handlers.length;n++)this._handlers[n](e)}}};function St(t){for(var e,n=[],o=0,i=-1,r=0;o<t.length;){e=t.charAt(o);var a=!r&&"."===e||e>="0"&&e<="9";a!==r&&(n[++i]="",r=a),n[i]+=e,o++}return n}var Lt={History:jt,humanFileSize:i(3378).s,computerFileSize:function(t){if("string"!=typeof t)return null;var e=t.toLowerCase().trim(),n=null,o=e.match(/^[\s+]?([0-9]*)(\.([0-9]+))?( +)?([kmgtp]?b?)$/i);return null===o?null:(n=parseFloat(e),isFinite(n)?(o[5]&&(n*={b:1,k:1024,kb:1024,mb:1048576,m:1048576,gb:1073741824,g:1073741824,tb:1099511627776,t:1099511627776,pb:0x4000000000000,p:0x4000000000000}[o[5]]),n=Math.round(n)):null)},formatDate:function(t,e){return void 0===window.TESTING&&console.warn("OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment"),e=e||"LLL",Ot()(t).format(e)},relativeModifiedDate:function(e){void 0===window.TESTING&&console.warn("OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment");var n=Ot()().diff(Ot()(e));return n>=0&&n<45e3?t("core","seconds ago"):Ot()(e).fromNow()},getScrollBarWidth:function(){if(this._scrollBarWidth)return this._scrollBarWidth;var t=document.createElement("p");t.style.width="100%",t.style.height="200px";var e=document.createElement("div");e.style.position="absolute",e.style.top="0px",e.style.left="0px",e.style.visibility="hidden",e.style.width="200px",e.style.height="150px",e.style.overflow="hidden",e.appendChild(t),document.body.appendChild(e);var n=t.offsetWidth;e.style.overflow="scroll";var o=t.offsetWidth;return n===o&&(o=e.clientWidth),document.body.removeChild(e),this._scrollBarWidth=n-o,this._scrollBarWidth},stripTime:function(t){return new Date(t.getFullYear(),t.getMonth(),t.getDate())},naturalSortCompare:function(t,e){var n,o=St(t),i=St(e);for(n=0;o[n]&&i[n];n++)if(o[n]!==i[n]){var r=Number(o[n]),a=Number(i[n]);return r==o[n]&&a==i[n]?r-a:o[n].localeCompare(i[n],Rt.getLanguage())}return o.length-i.length},waitFor:function(t,e){!function n(){!0!==t()&&setTimeout(n,e)}()},isCookieSetToValue:function(t,e){for(var n=document.cookie.split(";"),o=0;o<n.length;o++){var i=n[o].split("=");if(i[0].trim()===t&&i[1].trim()===e)return!0}return!1}},Nt=window._oc_debug,$t=window._oc_webroot;if(void 0===$t){var It=($t=location.pathname).indexOf("/index.php/");$t=-1!==It?$t.substr(0,It):$t.substr(0,$t.lastIndexOf("/"))}var Ut,Ft=$t,Rt={coreApps:["","admin","log","core/search","core","3rdparty"],menuSpeed:50,PERMISSION_ALL:31,PERMISSION_CREATE:4,PERMISSION_DELETE:8,PERMISSION_NONE:0,PERMISSION_READ:1,PERMISSION_SHARE:16,PERMISSION_UPDATE:2,TAG_FAVORITE:"_$!<Favorite>!$_",fileIsBlacklisted:function(t){return!!t.match(N.blacklist_files_regex)},addScript:function(t,e,n){var o;console.warn("OC.addScript is deprecated, use OCP.Loader.loadScript instead");var i=(0,c.generateFilePath)(t,"js",e+".js");return u[i]?n&&n():(o=l().Deferred(),l().getScript(i,(function(){return o.resolve()})),u[i]=o),u[i]},addStyle:function(t,e){console.warn("OC.addStyle is deprecated, use OCP.Loader.loadStylesheet instead");var n=(0,c.generateFilePath)(t,"css",e+".css");-1===d.indexOf(n)&&(d.push(n),document.createStyleSheet?document.createStyleSheet(n):(e=l()('<link rel="stylesheet" type="text/css" href="'+n+'"/>'),l()("head").append(e)))},Apps:g,AppConfig:w,appConfig:y,appSettings:function(e){if(console.warn("OC.appSettings is deprecated and will be removed with Nextcloud 18"),void 0===e||void 0===e.appid)throw{name:"MissingParameter",message:"The parameter appid is missing"};var n={scriptName:"settings.php",cache:!0};l().extend(n,e);var o=l()("#appsettings");if(0===o.length)throw{name:"MissingDOMElement",message:'There has be be an element with id "appsettings" for the popup to show.'};var i=l()("#appsettings_popup");if(0===i.length&&(l()("body").prepend('<div class="popup hidden" id="appsettings_popup"></div>'),(i=l()("#appsettings_popup")).addClass(o.hasClass("topright")?"topright":"bottomleft")),i.is(":visible"))i.hide().remove();else{var r=o.hasClass("topright")?"up":"left";l().get((0,c.generateFilePath)(n.appid,"",n.scriptName),(function(e){i.html(e).ready((function(){if(i.prepend('<span class="arrow '+r+'"></span><h2>'+t("core","Settings")+'</h2><a class="close"></a>').show(),i.find(".close").bind("click",(function(){i.remove()})),void 0!==n.loadJS){var e;if(!0===n.loadJS)e="settings.js";else{if("string"!=typeof n.loadJS)throw{name:"InvalidParameter",message:'The "loadJS" parameter must be either boolean or a string.'};e=n.loadJS}n.cache&&l().ajaxSetup({cache:!0}),l().getScript((0,c.generateFilePath)(n.appid,"js",e)).fail((function(t,e,n){throw n}))}})).show()}),"html")}},appswebroots:b,Backbone:S,ContactsMenu:z,config:N,currentUser:Z,dialogs:nt,EventSource:rt,getCurrentUser:function(){return{uid:Z,displayName:D}},isUserAdmin:function(){return ut},L10N:Ct,_ajaxConnectionLostHandler:m,_processAjaxError:function(t){(0!==t.status||"abort"!==t.statusText&&"timeout"!==t.statusText&&!Rt._reloadCalled)&&(f.ZP.contains([302,303,307,401],t.status)&&Rt.currentUser?setTimeout((function(){if(!Rt._userIsNavigatingAway&&!Rt._reloadCalled){var t=0,e=setInterval((function(){h.showUpdate(n("core","Problem loading page, reloading in %n second","Problem loading page, reloading in %n seconds",5-t)),t>=5&&(clearInterval(e),Rt.reload()),t++}),1e3);Rt._reloadCalled=!0}}),100):0===t.status&&setTimeout((function(){Rt._userIsNavigatingAway||Rt._reloadCalled||Rt._ajaxConnectionLostHandler()}),100))},registerXHRForErrorProcessing:function(t){t.addEventListener&&(t.addEventListener("load",(function(){4===t.readyState&&(t.status>=200&&t.status<300||304===t.status||l()(document).trigger(new(l().Event)("ajaxError"),t))})),t.addEventListener("error",(function(){l()(document).trigger(new(l().Event)("ajaxError"),t)})))},getCapabilities:function(){return console.warn("OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities"),(0,at.getCapabilities)()},hideMenus:ct,registerMenu:function(t,e,n,o){e.addClass("menu");var i="A"===t.prop("tagName")||"BUTTON"===t.prop("tagName");t.on(i?"click.menu":"click.menu keyup.menu",(function(i){i.preventDefault(),i.key&&"Enter"!==i.key||(e.is(st)?ct():(st&&ct(),!0===o&&e.parent().addClass("openedMenu"),t.attr("aria-expanded",!0),e.slideToggle(50,n),st=e,lt=t))}))},showMenu:function(t,e,n){e.is(st)||(ct(),st=e,lt=t,e.trigger(new(l().Event)("beforeShow")),e.show(),e.trigger(new(l().Event)("afterShow")),f.ZP.isFunction(n)&&n())},unregisterMenu:function(t,e){e.is(st)&&ct(),t.off("click.menu").removeClass("menutoggle"),e.removeClass("menu")},basename:L.EZ,encodePath:L.Ec,dirname:L.XX,isSamePath:L.Mg,joinPaths:L.RQ,getHost:function(){return window.location.host},getHostName:function(){return window.location.hostname},getPort:function(){return window.location.port},getProtocol:function(){return window.location.protocol.split(":")[0]},getCanonicalLocale:kt.getCanonicalLocale,getLocale:function(){var t;return null!==(t=l()("html").data("locale"))&&void 0!==t?t:"en"},getLanguage:function(){return l()("html").prop("lang")},addTranslations:Ct.load,buildQueryString:function(t){return t?l().map(t,(function(t,e){var n=encodeURIComponent(e);return null!=t&&(n+="="+encodeURIComponent(t)),n})).join("&"):""},parseQueryString:function(t){var e,n,o,i={};if(!t)return null;(e=t.indexOf("?"))>=0&&(t=t.substr(e+1));for(var r=t.replace(/\+/g,"%20").split("&"),a=0;a<r.length;a++){var s=r[a];(n=(e=s.indexOf("="))>=0?[s.substr(0,e),s.substr(e+1)]:[s]).length&&(o=decodeURIComponent(n[0]))&&(i[o]=n.length>1?decodeURIComponent(n[1]):null)}return i},msg:At,Notification:h,PasswordConfirmation:Tt,Plugins:{_plugins:{},register:function(t,e){var n=this._plugins[t];n||(n=this._plugins[t]=[]),n.push(e)},getPlugins:function(t){return this._plugins[t]||[]},attach:function(t,e,n){for(var o=this.getPlugins(t),i=0;i<o.length;i++)o[i].attach&&o[i].attach(e,n)},detach:function(t,e,n){for(var o=this.getPlugins(t),i=0;i<o.length;i++)o[i].detach&&o[i].detach(e,n)}},theme:Et,Util:Lt,debug:Nt,filePath:c.generateFilePath,generateUrl:c.generateUrl,get:(Ut=window,function(t){for(var e=t.split("."),n=e.pop(),o=0;o<e.length;o++)if(!(Ut=Ut[e[o]]))return!1;return Ut[n]}),set:function(t){return function(e,n){for(var o=e.split("."),i=o.pop(),r=0;r<o.length;r++)t[o[r]]||(t[o[r]]={}),t=t[o[r]];return t[i]=n,n}}(window),getRootPath:c.getRootUrl,imagePath:c.imagePath,redirect:function(t){window.location=t},reload:function(){window.location.reload()},requestToken:ot(),linkTo:c.linkTo,linkToOCS:function(t,e){return(0,c.generateOcsUrl)(t,{},{ocsVersion:e||1})+"/"},linkToRemote:c.generateRemoteUrl,linkToRemoteBase:function(t){return(0,c.getRootUrl)()+"/remote.php/"+t},webroot:Ft};(0,a.Ld)("csrf-token-update",(function(t){OC.requestToken=t.token,console.info("OC.requestToken changed",t.token)}));var Mt=i(16453),zt=i(17563),Bt=i(55586),Dt=i.n(Bt),Zt=i(22660),qt=i.n(Zt),Ht=i(10204),Yt=i.n(Ht),Kt=i(57290),Vt=i.n(Kt),Gt=i(10861),Jt=i.n(Gt),Wt={name:"LoginButton",components:{ArrowRight:i(45947).default,NcButton:Jt()},props:{value:{type:String,default:t("core","Log in")},valueLoading:{type:String,default:t("core","Logging in …")},loading:{type:Boolean,required:!0},invertedColors:{type:Boolean,default:!1}}},Qt=i(93379),Xt=i.n(Qt),te=i(7795),ee=i.n(te),ne=i(90569),oe=i.n(ne),ie=i(3565),re=i.n(ie),ae=i(19216),se=i.n(ae),le=i(44589),ce=i.n(le),ue=i(10786),de={};de.styleTagTransform=ce(),de.setAttributes=re(),de.insert=oe().bind(null,"head"),de.domAPI=ee(),de.insertStyleElement=se(),Xt()(ue.Z,de),ue.Z&&ue.Z.locals&&ue.Z.locals;var fe=i(51900),pe=(0,fe.Z)(Wt,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("NcButton",{attrs:{type:"primary","native-type":"submit",wide:!0},on:{click:function(e){return t.$emit("click")}},scopedSlots:t._u([{key:"icon",fn:function(){return[t.loading?n("div",{staticClass:"submit-wrapper__icon icon-loading-small-dark"}):n("ArrowRight",{staticClass:"submit-wrapper__icon"})]},proxy:!0}])},[t._v("\n\t"+t._s(t.loading?t.valueLoading:t.value)+"\n\t")])}),[],!1,null,"756414a8",null).exports,he={name:"LoginForm",components:{LoginButton:pe,NcPasswordField:qt(),NcTextField:Yt(),NcNoteCard:Vt()},props:{username:{type:String,default:""},redirectUrl:{type:[String,Boolean],default:!1},errors:{type:Array,default:function(){return[]}},messages:{type:Array,default:function(){return[]}},throttleDelay:{type:Number,default:0},autoCompleteAllowed:{type:Boolean,default:!0},directLogin:{type:Boolean,default:!1}},data:function(){return{loading:!1,timezone:Dt().determine().name(),timezoneOffset:-(new Date).getTimezoneOffset()/60,headline:t("core","Log in to {productName}",{productName:OC.theme.name}),user:"",password:""}},computed:{isError:function(){return this.invalidPassword||this.userDisabled||this.throttleDelay>5e3},errorLabel:function(){return this.invalidPassword?t("core","Wrong username or password."):this.userDisabled?t("core","User disabled"):this.throttleDelay>5e3?t("core","We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds."):void 0},apacheAuthFailed:function(){return-1!==this.errors.indexOf("apacheAuthFailed")},internalException:function(){return-1!==this.errors.indexOf("internalexception")},invalidPassword:function(){return-1!==this.errors.indexOf("invalidpassword")},userDisabled:function(){return-1!==this.errors.indexOf("userdisabled")},loadingIcon:function(){return(0,c.imagePath)("core","loading-dark.gif")},loginActionUrl:function(){return(0,c.generateUrl)("login")}},mounted:function(){""===this.username?this.$refs.user.$refs.inputField.$refs.input.focus():(this.user=this.username,this.$refs.password.$refs.inputField.$refs.input.focus())},methods:{updateUsername:function(){this.$emit("update:username",this.user)},submit:function(){this.loading=!0,this.$emit("submit")}}},me=i(6793),ge={};ge.styleTagTransform=ce(),ge.setAttributes=re(),ge.insert=oe().bind(null,"head"),ge.domAPI=ee(),ge.insertStyleElement=se(),Xt()(me.Z,ge),me.Z&&me.Z.locals&&me.Z.locals;var ve=(0,fe.Z)(he,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("form",{ref:"loginForm",staticClass:"login-form",attrs:{method:"post",name:"login",action:t.loginActionUrl},on:{submit:t.submit}},[n("fieldset",{staticClass:"login-form__fieldset",attrs:{"data-login-form":""}},[t.apacheAuthFailed?n("NcNoteCard",{attrs:{title:t.t("core","Server side authentication failed!"),type:"warning"}},[t._v("\n\t\t\t"+t._s(t.t("core","Please contact your administrator."))+"\n\t\t")]):t._e(),t._v(" "),t.messages.length>0?n("NcNoteCard",t._l(t.messages,(function(e,o){return n("div",{key:o},[t._v("\n\t\t\t\t"+t._s(e)),n("br")])})),0):t._e(),t._v(" "),t.internalException?n("NcNoteCard",{class:t.t("core","An internal error occurred."),attrs:{type:"warning"}},[t._v("\n\t\t\t"+t._s(t.t("core","Please try again or contact your administrator."))+"\n\t\t")]):t._e(),t._v(" "),n("div",{staticClass:"hidden",attrs:{id:"message"}},[n("img",{staticClass:"float-spinner",attrs:{alt:"",src:t.loadingIcon}}),t._v(" "),n("span",{attrs:{id:"messageText"}}),t._v(" "),n("div",{staticStyle:{clear:"both"}})]),t._v(" "),n("h2",{staticClass:"login-form__headline",attrs:{"data-login-form-headline":""},domProps:{innerHTML:t._s(t.headline)}}),t._v(" "),n("NcTextField",{ref:"user",class:{shake:t.invalidPassword},attrs:{id:"user",label:t.t("core","Account name or email"),"label-visible":!0,name:"user",value:t.user,autocapitalize:"none",spellchecking:!1,autocomplete:t.autoCompleteAllowed?"username":"off",required:"","data-login-form-input-user":""},on:{"update:value":function(e){t.user=e},change:t.updateUsername}}),t._v(" "),n("NcPasswordField",{ref:"password",class:{shake:t.invalidPassword},attrs:{id:"password",name:"password","label-visible":!0,value:t.password,spellchecking:!1,autocapitalize:"none",autocomplete:t.autoCompleteAllowed?"current-password":"off",label:t.t("core","Password"),"helper-text":t.errorLabel,error:t.isError,"data-login-form-input-password":"",required:""},on:{"update:value":function(e){t.password=e}}}),t._v(" "),n("LoginButton",{attrs:{"data-login-form-submit":"",loading:t.loading}}),t._v(" "),t.redirectUrl?n("input",{attrs:{type:"hidden",name:"redirect_url"},domProps:{value:t.redirectUrl}}):t._e(),t._v(" "),n("input",{attrs:{type:"hidden",name:"timezone"},domProps:{value:t.timezone}}),t._v(" "),n("input",{attrs:{type:"hidden",name:"timezone_offset"},domProps:{value:t.timezoneOffset}}),t._v(" "),n("input",{attrs:{type:"hidden",name:"requesttoken"},domProps:{value:t.OC.requestToken}}),t._v(" "),t.directLogin?n("input",{attrs:{type:"hidden",name:"direct",value:"1"}}):t._e()],1)])}),[],!1,null,"48dc6965",null).exports,ye=i(4820),we=i(2645),be=i(98283);function _e(t){return _e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},_e(t)}function Pe(t){return function(t){if(Array.isArray(t))return Ce(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return Ce(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ce(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Ce(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,o=new Array(e);n<e;n++)o[n]=t[n];return o}function ke(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,o)}return n}function Ae(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?ke(Object(n),!0).forEach((function(e){xe(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):ke(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function xe(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function Oe(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function Te(t,e){if(e&&("object"===_e(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}function Ee(t){var e="function"==typeof Map?new Map:void 0;return Ee=function(t){if(null===t||(n=t,-1===Function.toString.call(n).indexOf("[native code]")))return t;var n;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,o)}function o(){return je(t,arguments,Ne(this).constructor)}return o.prototype=Object.create(t.prototype,{constructor:{value:o,enumerable:!1,writable:!0,configurable:!0}}),Le(o,t)},Ee(t)}function je(t,e,n){return je=Se()?Reflect.construct:function(t,e,n){var o=[null];o.push.apply(o,e);var i=new(Function.bind.apply(t,o));return n&&Le(i,n.prototype),i},je.apply(null,arguments)}function Se(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}function Le(t,e){return Le=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},Le(t,e)}function Ne(t){return Ne=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},Ne(t)}var $e=function(t){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&Le(t,e)}(r,t);var e,n,o,i=(e=r,n=Se(),function(){var t,o=Ne(e);if(n){var i=Ne(this).constructor;t=Reflect.construct(o,arguments,i)}else t=o.apply(this,arguments);return Te(this,t)});function r(){return Oe(this,r),i.apply(this,arguments)}return o=r,Object.defineProperty(o,"prototype",{writable:!1}),o}(Ee(Error)),Ie={name:"PasswordLessLoginForm",components:{LoginButton:pe,InformationIcon:we.Z,LockOpenIcon:be.Z},props:{username:{type:String,default:""},redirectUrl:{type:[String,Boolean],default:!1},autoCompleteAllowed:{type:Boolean,default:!0},isHttps:{type:Boolean,default:!1},isLocalhost:{type:Boolean,default:!1},hasPublicKeyCredential:{type:Boolean,default:!1}},data:function(){return{user:this.username,loading:!1,validCredentials:!0}},methods:{authenticate:function(){var t=this;console.debug("passwordless login initiated"),this.getAuthenticationData(this.user).then((function(t){return console.debug(t),t})).then(this.sign).then(this.completeAuthentication).catch((function(e){e instanceof $e?t.validCredentials=!1:console.debug(e)}))},getAuthenticationData:function(t){var e,n,o=function(t){var e=(t=t.replace(/-/g,"+").replace(/_/g,"/")).length%4;if(e){if(1===e)throw new Error("InvalidLengthError: Input base64url string is the wrong length to determine padding");t+=new Array(5-e).join("=")}return window.atob(t)};return(e=t,n=(0,c.generateUrl)("/login/webauthn/start"),ye.default.post(n,{loginName:e}).then((function(t){return t.data}))).then((function(t){if(console.debug("Obtained PublicKeyCredentialRequestOptions"),console.debug(t),!Object.prototype.hasOwnProperty.call(t,"allowCredentials"))throw console.debug("No credentials found."),new $e;return t.challenge=Uint8Array.from(o(t.challenge),(function(t){return t.charCodeAt(0)})),t.allowCredentials=t.allowCredentials.map((function(t){return Ae(Ae({},t),{},{id:Uint8Array.from(o(t.id),(function(t){return t.charCodeAt(0)}))})})),console.debug("Converted PublicKeyCredentialRequestOptions"),console.debug(t),t})).catch((function(t){throw console.debug("Error while obtaining data"),t}))},sign:function(t){var e=function(t){return window.btoa(String.fromCharCode.apply(String,Pe(t)))};return navigator.credentials.get({publicKey:t}).then((function(t){return console.debug(t),console.debug(new Uint8Array(t.rawId)),console.debug(e(new Uint8Array(t.rawId))),{id:t.id,type:t.type,rawId:e(new Uint8Array(t.rawId)),response:{authenticatorData:e(new Uint8Array(t.response.authenticatorData)),clientDataJSON:e(new Uint8Array(t.response.clientDataJSON)),signature:e(new Uint8Array(t.response.signature)),userHandle:t.response.userHandle?(n=new Uint8Array(t.response.userHandle),String.fromCharCode.apply(String,Pe(n))):null}};var n})).then((function(t){return console.debug(t),t})).catch((function(t){console.debug("GOT AN ERROR!"),console.debug(t)}))},completeAuthentication:function(t){console.debug("TIME TO COMPLETE");var e,n,o=this.redirectUrl;return(e=JSON.stringify(t),n=(0,c.generateUrl)("/login/webauthn/finish"),ye.default.post(n,{data:e}).then((function(t){return t.data}))).then((function(t){console.debug("Logged in redirecting"),window.location.href=o})).catch((function(t){console.debug("GOT AN ERROR WHILE SUBMITTING CHALLENGE!"),console.debug(t)}))},submit:function(){}}},Ue=i(2340),Fe={};Fe.styleTagTransform=ce(),Fe.setAttributes=re(),Fe.insert=oe().bind(null,"head"),Fe.domAPI=ee(),Fe.insertStyleElement=se(),Xt()(Ue.Z,Fe),Ue.Z&&Ue.Z.locals&&Ue.Z.locals;var Re=(0,fe.Z)(Ie,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return(t.isHttps||t.isLocalhost)&&t.hasPublicKeyCredential?n("form",{ref:"loginForm",attrs:{method:"post",name:"login"},on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[n("fieldset",[n("p",{staticClass:"grouptop groupbottom"},[n("label",{staticClass:"infield",attrs:{for:"user"}},[t._v(t._s(t.t("core","Username or\temail")))]),t._v(" "),n("input",{directives:[{name:"model",rawName:"v-model",value:t.user,expression:"user"}],ref:"user",attrs:{id:"user",type:"text",name:"user",autocomplete:t.autoCompleteAllowed?"on":"off",placeholder:t.t("core","Username or email"),"aria-label":t.t("core","Username or email"),required:""},domProps:{value:t.user},on:{change:function(e){return t.$emit("update:username",t.user)},input:function(e){e.target.composing||(t.user=e.target.value)}}})]),t._v(" "),t.validCredentials?t._e():n("div",{staticClass:"body-login-container update form__message-box"},[t._v("\n\t\t\t"+t._s(t.t("core","Your account is not setup for passwordless login."))+"\n\t\t")]),t._v(" "),t.validCredentials?n("LoginButton",{attrs:{loading:t.loading},on:{click:t.authenticate}}):t._e()],1)]):t.hasPublicKeyCredential?t.isHttps||t.isLocalhost?t._e():n("div",{staticClass:"body-login-container update"},[n("LockOpenIcon",{attrs:{size:"70"}}),t._v(" "),n("h2",[t._v(t._s(t.t("core","Your connection is not secure")))]),t._v(" "),n("p",{staticClass:"infogroup"},[t._v("\n\t\t"+t._s(t.t("core","Passwordless authentication is only available over a secure connection."))+"\n\t")])],1):n("div",{staticClass:"body-login-container update"},[n("InformationIcon",{attrs:{size:"70"}}),t._v(" "),n("h2",[t._v(t._s(t.t("core","Browser not supported")))]),t._v(" "),n("p",{staticClass:"infogroup"},[t._v("\n\t\t"+t._s(t.t("core","Passwordless authentication is not supported in your browser."))+"\n\t")])],1)}),[],!1,null,"adf4afc4",null),Me=Re.exports,ze={name:"ResetPassword",components:{LoginButton:pe,NcNoteCard:Vt(),NcTextField:Yt()},props:{username:{type:String,required:!0},resetPasswordLink:{type:String,required:!0}},data:function(){return{error:!1,loading:!1,message:void 0,user:this.username}},watch:{username:function(t){this.user=t}},methods:{updateUsername:function(){this.$emit("update:username",this.user)},submit:function(){var t=this;this.loading=!0,this.error=!1,this.message="";var e=(0,c.generateUrl)("/lostpassword/email"),n={user:this.user};return ye.default.post(e,n).then((function(t){return t.data})).then((function(e){if("success"!==e.status)throw new Error("got status ".concat(e.status));t.message="send-success"})).catch((function(e){console.error("could not send reset email request",e),t.error=!0,t.message="send-error"})).then((function(){t.loading=!1}))}}},Be=i(38566),De={};De.styleTagTransform=ce(),De.setAttributes=re(),De.insert=oe().bind(null,"head"),De.domAPI=ee(),De.insertStyleElement=se(),Xt()(Be.Z,De),Be.Z&&Be.Z.locals&&Be.Z.locals;var Ze=(0,fe.Z)(ze,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("form",{staticClass:"login-form",on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[n("fieldset",{staticClass:"login-form__fieldset"},[n("NcTextField",{attrs:{id:"user",value:t.user,name:"user",autocapitalize:"off",label:t.t("core","Account name or email"),"label-visible":!0,required:""},on:{"update:value":function(e){t.user=e},change:t.updateUsername}}),t._v(" "),n("LoginButton",{attrs:{value:t.t("core","Reset password")}}),t._v(" "),"send-success"===t.message?n("NcNoteCard",{attrs:{type:"success"}},[t._v("\n\t\t\t"+t._s(t.t("core","A password reset message has been sent to the email address of this account. If you do not receive it, check your spam/junk folders or ask your local administrator for help."))+"\n\t\t\t"),n("br"),t._v("\n\t\t\t"+t._s(t.t("core","If it is not there ask your local administrator."))+"\n\t\t")]):"send-error"===t.message?n("NcNoteCard",{attrs:{type:"error"}},[t._v("\n\t\t\t"+t._s(t.t("core","Couldn't send reset email. Please contact your administrator."))+"\n\t\t")]):"reset-error"===t.message?n("NcNoteCard",{attrs:{type:"error"}},[t._v("\n\t\t\t"+t._s(t.t("core","Password cannot be changed. Please contact your administrator."))+"\n\t\t")]):t._e(),t._v(" "),n("a",{staticClass:"login-form__link",attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.$emit("abort")}}},[t._v("\n\t\t\t"+t._s(t.t("core","Back to login"))+"\n\t\t")])],1)])}),[],!1,null,"27cabc60",null),qe=Ze.exports;function He(t,e,n,o,i,r,a){try{var s=t[r](a),l=s.value}catch(t){return void n(t)}s.done?e(l):Promise.resolve(l).then(o,i)}var Ye={name:"UpdatePassword",components:{LoginButton:pe},props:{username:{type:String,required:!0},resetPasswordTarget:{type:String,required:!0}},data:function(){return{error:!1,loading:!1,message:void 0,user:this.username,password:"",encrypted:!1,proceed:!1}},watch:{username:function(t){this.user=t}},methods:{submit:function(){var e,n=this;return(e=regeneratorRuntime.mark((function e(){var o,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.loading=!0,n.error=!1,n.message="",e.prev=3,e.next=6,ye.default.post(n.resetPasswordTarget,{password:n.password,proceed:n.proceed});case 6:if(o=e.sent,!(i=o.data)||"success"!==i.status){e.next=14;break}n.message="send-success",n.$emit("update:username",n.user),n.$emit("done"),e.next=23;break;case 14:if(!i||!i.encryption){e.next=18;break}n.encrypted=!0,e.next=23;break;case 18:if(!i||!i.msg){e.next=22;break}throw new Error(i.msg);case 22:throw new Error;case 23:e.next=29;break;case 25:e.prev=25,e.t0=e.catch(3),n.error=!0,n.message=e.t0.message?e.t0.message:t("core","Password cannot be changed. Please contact your administrator.");case 29:return e.prev=29,n.loading=!1,e.finish(29);case 32:case"end":return e.stop()}}),e,null,[[3,25,29,32]])})),function(){var t=this,n=arguments;return new Promise((function(o,i){var r=e.apply(t,n);function a(t){He(r,o,i,a,s,"next",t)}function s(t){He(r,o,i,a,s,"throw",t)}a(void 0)}))})()}}},Ke=Ye,Ve=i(52033),Ge={};Ge.styleTagTransform=ce(),Ge.setAttributes=re(),Ge.insert=oe().bind(null,"head"),Ge.domAPI=ee(),Ge.insertStyleElement=se(),Xt()(Ve.Z,Ge),Ve.Z&&Ve.Z.locals&&Ve.Z.locals;var Je=(0,fe.Z)(Ke,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("form",{on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[n("fieldset",[n("p",[n("label",{staticClass:"infield",attrs:{for:"password"}},[t._v(t._s(t.t("core","New password")))]),t._v(" "),n("input",{directives:[{name:"model",rawName:"v-model",value:t.password,expression:"password"}],attrs:{id:"password",type:"password",name:"password",autocomplete:"new-password",autocapitalize:"none",autocorrect:"off",required:"",placeholder:t.t("core","New password")},domProps:{value:t.password},on:{input:function(e){e.target.composing||(t.password=e.target.value)}}})]),t._v(" "),t.encrypted?n("div",{staticClass:"update"},[n("p",[t._v("\n\t\t\t\t"+t._s(t.t("core","Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?"))+"\n\t\t\t")]),t._v(" "),n("input",{directives:[{name:"model",rawName:"v-model",value:t.proceed,expression:"proceed"}],staticClass:"checkbox",attrs:{id:"encrypted-continue",type:"checkbox"},domProps:{checked:Array.isArray(t.proceed)?t._i(t.proceed,null)>-1:t.proceed},on:{change:function(e){var n=t.proceed,o=e.target,i=!!o.checked;if(Array.isArray(n)){var r=t._i(n,null);o.checked?r<0&&(t.proceed=n.concat([null])):r>-1&&(t.proceed=n.slice(0,r).concat(n.slice(r+1)))}else t.proceed=i}}}),t._v(" "),n("label",{attrs:{for:"encrypted-continue"}},[t._v("\n\t\t\t\t"+t._s(t.t("core","I know what I'm doing"))+"\n\t\t\t")])]):t._e(),t._v(" "),n("LoginButton",{attrs:{loading:t.loading,value:t.t("core","Reset password"),"value-loading":t.t("core","Resetting password")}}),t._v(" "),t.error&&t.message?n("p",{class:{warning:t.error}},[t._v("\n\t\t\t"+t._s(t.message)+"\n\t\t")]):t._e()],1)])}),[],!1,null,"4dc21d74",null),We=Je.exports,Qe=zt.parse(location.search);if("1"===Qe.clear)try{window.localStorage.clear(),window.sessionStorage.clear(),console.debug("Browser storage cleared")}catch(t){console.error("Could not clear browser storage",t)}var Xe={name:"Login",components:{LoginForm:ve,PasswordLessLoginForm:Me,ResetPassword:qe,UpdatePassword:We,NcButton:Jt(),NcNoteCard:Vt()},data:function(){return{loading:!1,user:(0,Mt.loadState)("core","loginUsername",""),passwordlessLogin:!1,resetPassword:!1,errors:(0,Mt.loadState)("core","loginErrors",[]),messages:(0,Mt.loadState)("core","loginMessages",[]),redirectUrl:(0,Mt.loadState)("core","loginRedirectUrl",!1),throttleDelay:(0,Mt.loadState)("core","loginThrottleDelay",0),canResetPassword:(0,Mt.loadState)("core","loginCanResetPassword",!1),resetPasswordLink:(0,Mt.loadState)("core","loginResetPasswordLink",""),autoCompleteAllowed:(0,Mt.loadState)("core","loginAutocomplete",!0),resetPasswordTarget:(0,Mt.loadState)("core","resetPasswordTarget",""),resetPasswordUser:(0,Mt.loadState)("core","resetPasswordUser",""),directLogin:"1"===Qe.direct,hasPasswordless:(0,Mt.loadState)("core","webauthn-available",!1),countAlternativeLogins:(0,Mt.loadState)("core","countAlternativeLogins",!1),alternativeLogins:(0,Mt.loadState)("core","alternativeLogins",[]),isHttps:"https:"===window.location.protocol,isLocalhost:"localhost"===window.location.hostname,hasPublicKeyCredential:void 0!==window.PublicKeyCredential,hideLoginForm:(0,Mt.loadState)("core","hideLoginForm",!1)}},methods:{passwordResetFinished:function(){this.resetPasswordTarget="",this.directLogin=!0},goTo:function(t){window.location.href=t}}},tn=i(58820),en={};en.styleTagTransform=ce(),en.setAttributes=re(),en.insert=oe().bind(null,"head"),en.domAPI=ee(),en.insertStyleElement=se(),Xt()(tn.Z,en),tn.Z&&tn.Z.locals&&tn.Z.locals;var nn=(0,fe.Z)(Xe,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"guest-box login-box"},[!t.hideLoginForm||t.directLogin?n("div",[n("transition",{attrs:{name:"fade",mode:"out-in"}},[t.passwordlessLogin||t.resetPassword||""!==t.resetPasswordTarget?!t.loading&&t.passwordlessLogin?n("div",{key:"reset",staticClass:"login-additional"},[n("PasswordLessLoginForm",{attrs:{username:t.user,"redirect-url":t.redirectUrl,"auto-complete-allowed":t.autoCompleteAllowed,"is-https":t.isHttps,"is-localhost":t.isLocalhost,"has-public-key-credential":t.hasPublicKeyCredential},on:{"update:username":function(e){t.user=e},submit:function(e){t.loading=!0}}}),t._v(" "),n("a",{staticClass:"login-box__link",attrs:{href:"#"},on:{click:function(e){e.preventDefault(),t.passwordlessLogin=!1}}},[t._v("\n\t\t\t\t\t"+t._s(t.t("core","Back"))+"\n\t\t\t\t")])],1):!t.loading&&t.canResetPassword?n("div",{key:"reset",staticClass:"login-additional"},[n("div",{staticClass:"lost-password-container"},[t.resetPassword?n("ResetPassword",{attrs:{username:t.user,"reset-password-link":t.resetPasswordLink},on:{"update:username":function(e){t.user=e},abort:function(e){t.resetPassword=!1}}}):t._e()],1)]):""!==t.resetPasswordTarget?n("div",[n("UpdatePassword",{attrs:{username:t.user,"reset-password-target":t.resetPasswordTarget},on:{"update:username":function(e){t.user=e},done:t.passwordResetFinished}})],1):t._e():n("div",[n("LoginForm",{attrs:{username:t.user,"redirect-url":t.redirectUrl,"direct-login":t.directLogin,messages:t.messages,errors:t.errors,"throttle-delay":t.throttleDelay,"auto-complete-allowed":t.autoCompleteAllowed},on:{"update:username":function(e){t.user=e},submit:function(e){t.loading=!0}}}),t._v(" "),t.canResetPassword&&""!==t.resetPasswordLink?n("a",{staticClass:"login-box__link",attrs:{id:"lost-password",href:t.resetPasswordLink}},[t._v("\n\t\t\t\t\t"+t._s(t.t("core","Forgot password?"))+"\n\t\t\t\t")]):t.canResetPassword&&!t.resetPassword?n("a",{staticClass:"login-box__link",attrs:{id:"lost-password",href:t.resetPasswordLink},on:{click:function(e){e.preventDefault(),t.resetPassword=!0}}},[t._v("\n\t\t\t\t\t"+t._s(t.t("core","Forgot password?"))+"\n\t\t\t\t")]):t._e(),t._v(" "),t.hasPasswordless?[t.countAlternativeLogins?n("div",{staticClass:"alternative-logins"},[t.hasPasswordless?n("a",{staticClass:"button",class:{"single-alt-login-option":t.countAlternativeLogins},attrs:{href:"#"},on:{click:function(e){e.preventDefault(),t.passwordlessLogin=!0}}},[t._v("\n\t\t\t\t\t\t\t"+t._s(t.t("core","Log in with a device"))+"\n\t\t\t\t\t\t")]):t._e()]):n("a",{attrs:{href:"#"},on:{click:function(e){e.preventDefault(),t.passwordlessLogin=!0}}},[t._v("\n\t\t\t\t\t\t"+t._s(t.t("core","Log in with a device"))+"\n\t\t\t\t\t")])]:t._e()],2)])],1):n("div",[n("transition",{attrs:{name:"fade",mode:"out-in"}},[n("NcNoteCard",{attrs:{type:"warning",title:t.t("core","Login form is disabled.")}},[t._v("\n\t\t\t\t"+t._s(t.t("core","Please contact your administrator."))+"\n\t\t\t")])],1)],1),t._v(" "),n("div",{staticClass:"alternative-logins",attrs:{id:"alternative-logins"}},t._l(t.alternativeLogins,(function(e,o){return n("NcButton",{key:o,class:[e.class],attrs:{type:"secondary",wide:!0,role:"link",href:e.href},on:{click:function(n){return t.goTo(e.href)}}},[t._v("\n\t\t\t"+t._s(e.name)+"\n\t\t")])})),1)])}),[],!1,null,null,null).exports,on={data:function(){return{OC:Rt}},methods:{t:Ct.translate.bind(Ct),n:Ct.translatePlural.bind(Ct)}};r.ZP.mixin(on),(new(r.ZP.extend(nn))).$mount("#login")},10786:function(t,e,n){"use strict";var o=n(87537),i=n.n(o),r=n(23645),a=n.n(r)()(i());a.push([t.id,".button-vue[data-v-756414a8]{margin-top:.5rem}","",{version:3,sources:["webpack://./core/src/components/login/LoginButton.vue"],names:[],mappings:"AAkEA,6BACC,gBAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.button-vue {\n\tmargin-top: .5rem;\n}\n"],sourceRoot:""}]),e.Z=a},6793:function(t,e,n){"use strict";var o=n(87537),i=n.n(o),r=n(23645),a=n.n(r)()(i());a.push([t.id,".login-form[data-v-48dc6965]{text-align:left;font-size:1rem}.login-form__fieldset[data-v-48dc6965]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__headline[data-v-48dc6965]{text-align:center}","",{version:3,sources:["webpack://./core/src/components/login/LoginForm.vue"],names:[],mappings:"AAoOA,6BACC,eAAA,CACA,cAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,uCACC,iBAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.login-form {\n\ttext-align: left;\n\tfont-size: 1rem;\n\n\t&__fieldset {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: .5rem;\n\t}\n\n\t&__headline {\n\t\ttext-align: center;\n\t}\n}\n"],sourceRoot:""}]),e.Z=a},2340:function(t,e,n){"use strict";var o=n(87537),i=n.n(o),r=n(23645),a=n.n(r)()(i());a.push([t.id,".body-login-container.update[data-v-adf4afc4]{margin:15px 0}.body-login-container.update.form__message-box[data-v-adf4afc4]{width:240px;margin:5px}","",{version:3,sources:["webpack://./core/src/components/login/PasswordLessLoginForm.vue"],names:[],mappings:"AA8NA,8CACC,aAAA,CAEA,gEACC,WAAA,CACA,UAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.body-login-container.update {\n\tmargin: 15px 0;\n\n\t&.form__message-box {\n\t\twidth: 240px;\n\t\tmargin: 5px;\n\t}\n}\n"],sourceRoot:""}]),e.Z=a},38566:function(t,e,n){"use strict";var o=n(87537),i=n.n(o),r=n(23645),a=n.n(r)()(i());a.push([t.id,".login-form[data-v-27cabc60]{text-align:left;font-size:1rem}.login-form__fieldset[data-v-27cabc60]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__link[data-v-27cabc60]{display:block;font-weight:normal !important;padding-bottom:1rem;cursor:pointer;font-size:var(--default-font-size);text-align:center;padding:.5rem 1rem 1rem 1rem}","",{version:3,sources:["webpack://./core/src/components/login/ResetPassword.vue"],names:[],mappings:"AAmIA,6BACC,eAAA,CACA,cAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,mCACC,aAAA,CACA,6BAAA,CACA,mBAAA,CACA,cAAA,CACA,kCAAA,CACA,iBAAA,CACA,4BAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.login-form {\n\ttext-align: left;\n\tfont-size: 1rem;\n\n\t&__fieldset {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: .5rem;\n\t}\n\n\t&__link {\n\t\tdisplay: block;\n\t\tfont-weight: normal !important;\n\t\tpadding-bottom: 1rem;\n\t\tcursor: pointer;\n\t\tfont-size: var(--default-font-size);\n\t\ttext-align: center;\n\t\tpadding: .5rem 1rem 1rem 1rem;\n\t}\n}\n"],sourceRoot:""}]),e.Z=a},58820:function(t,e,n){"use strict";var o=n(87537),i=n.n(o),r=n(23645),a=n.n(r)()(i());a.push([t.id,"body{font-size:var(--default-font-size)}.login-box{width:300px}.login-box__link{display:block;padding:1rem;font-size:var(--default-font-size);text-align:center;font-weight:normal !important}.fade-enter-active,.fade-leave-active{transition:opacity .3s}.fade-enter,.fade-leave-to{opacity:0}.alternative-logins{display:flex;flex-direction:column;gap:.75rem}.alternative-logins .button-vue{box-sizing:border-box}","",{version:3,sources:["webpack://./core/src/views/Login.vue"],names:[],mappings:"AAkMA,KACC,kCAAA,CAGD,WACC,WAAA,CAEA,iBACC,aAAA,CACA,YAAA,CACA,kCAAA,CACA,iBAAA,CACA,6BAAA,CAGF,sCACC,sBAAA,CAED,2BACC,SAAA,CAGD,oBACC,YAAA,CACA,qBAAA,CACA,UAAA,CAEA,gCACC,qBAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nbody {\n\tfont-size: var(--default-font-size);\n}\n\n.login-box {\n\twidth: 300px;\n\n\t&__link {\n\t\tdisplay: block;\n\t\tpadding: 1rem;\n\t\tfont-size: var(--default-font-size);\n\t\ttext-align: center;\n\t\tfont-weight: normal !important;\n\t}\n}\n.fade-enter-active, .fade-leave-active {\n\ttransition: opacity .3s;\n}\n.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\n\topacity: 0;\n}\n\n.alternative-logins {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 0.75rem;\n\n\t.button-vue {\n\t\tbox-sizing: border-box;\n\t}\n}\n"],sourceRoot:""}]),e.Z=a},52033:function(t,e,n){"use strict";var o=n(87537),i=n.n(o),r=n(23645),a=n.n(r)()(i());a.push([t.id,"\nfieldset[data-v-4dc21d74] {\n\ttext-align: center;\n}\ninput[type=submit][data-v-4dc21d74] {\n\tmargin-top: 20px;\n}\n","",{version:3,sources:["webpack://./core/src/components/login/UpdatePassword.vue"],names:[],mappings:";AAmIA;CACA,kBAAA;AACA;AAEA;CACA,gBAAA;AACA",sourcesContent:["\x3c!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n --\x3e\n\n<template>\n\t<form @submit.prevent=\"submit\">\n\t\t<fieldset>\n\t\t\t<p>\n\t\t\t\t<label for=\"password\" class=\"infield\">{{ t('core', 'New password') }}</label>\n\t\t\t\t<input id=\"password\"\n\t\t\t\t\tv-model=\"password\"\n\t\t\t\t\ttype=\"password\"\n\t\t\t\t\tname=\"password\"\n\t\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t\tautocorrect=\"off\"\n\t\t\t\t\trequired\n\t\t\t\t\t:placeholder=\"t('core', 'New password')\">\n\t\t\t</p>\n\n\t\t\t<div v-if=\"encrypted\" class=\"update\">\n\t\t\t\t<p>\n\t\t\t\t\t{{ t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?') }}\n\t\t\t\t</p>\n\t\t\t\t<input id=\"encrypted-continue\"\n\t\t\t\t\tv-model=\"proceed\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\tclass=\"checkbox\">\n\t\t\t\t<label for=\"encrypted-continue\">\n\t\t\t\t\t{{ t('core', 'I know what I\\'m doing') }}\n\t\t\t\t</label>\n\t\t\t</div>\n\n\t\t\t<LoginButton :loading=\"loading\"\n\t\t\t\t:value=\"t('core', 'Reset password')\"\n\t\t\t\t:value-loading=\"t('core', 'Resetting password')\" />\n\n\t\t\t<p v-if=\"error && message\" :class=\"{warning: error}\">\n\t\t\t\t{{ message }}\n\t\t\t</p>\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport Axios from '@nextcloud/axios'\nimport LoginButton from './LoginButton.vue'\n\nexport default {\n\tname: 'UpdatePassword',\n\tcomponents: {\n\t\tLoginButton,\n\t},\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tresetPasswordTarget: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\terror: false,\n\t\t\tloading: false,\n\t\t\tmessage: undefined,\n\t\t\tuser: this.username,\n\t\t\tpassword: '',\n\t\t\tencrypted: false,\n\t\t\tproceed: false,\n\t\t}\n\t},\n\twatch: {\n\t\tusername(value) {\n\t\t\tthis.user = value\n\t\t},\n\t},\n\tmethods: {\n\t\tasync submit() {\n\t\t\tthis.loading = true\n\t\t\tthis.error = false\n\t\t\tthis.message = ''\n\n\t\t\ttry {\n\t\t\t\tconst { data } = await Axios.post(this.resetPasswordTarget, {\n\t\t\t\t\tpassword: this.password,\n\t\t\t\t\tproceed: this.proceed,\n\t\t\t\t})\n\t\t\t\tif (data && data.status === 'success') {\n\t\t\t\t\tthis.message = 'send-success'\n\t\t\t\t\tthis.$emit('update:username', this.user)\n\t\t\t\t\tthis.$emit('done')\n\t\t\t\t} else if (data && data.encryption) {\n\t\t\t\t\tthis.encrypted = true\n\t\t\t\t} else if (data && data.msg) {\n\t\t\t\t\tthrow new Error(data.msg)\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error()\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tthis.error = true\n\t\t\t\tthis.message = e.message ? e.message : t('core', 'Password cannot be changed. Please contact your administrator.')\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n<\/script>\n\n<style scoped>\n\tfieldset {\n\t\ttext-align: center;\n\t}\n\n\tinput[type=submit] {\n\t\tmargin-top: 20px;\n\t}\n</style>\n"],sourceRoot:""}]),e.Z=a},10944:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({1:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(r=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(r=null!=e?a(e,"contact"):e)?a(r,"profileUrl"):r,{name:"if",hash:{},fn:t.program(2,i,0),inverse:t.program(5,i,0),data:i,loc:{start:{line:2,column:1},end:{line:10,column:8}}}))?r:""},2:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(r=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(r=null!=e?a(e,"contact"):e)?a(r,"profileTitle"):r,{name:"if",hash:{},fn:t.program(3,i,0),inverse:t.noop,data:i,loc:{start:{line:3,column:2},end:{line:7,column:9}}}))?r:""},3:function(t,e,n,o,i){var r,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t\t<a class="profile-link--avatar" href="'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"profileUrl"):r,e))+'">\n\t\t\t\t<img src="'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatar"):r,e))+'&size=32" class="avatar" srcset="'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatar"):r,e))+"&size=32 1x, "+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatar"):r,e))+"&size=64 2x, "+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatar"):r,e))+'&size=128 4x" alt="">\n\t\t\t</a>\n'},5:function(t,e,n,o,i){var r,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t<img src="'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatar"):r,e))+'&size=32" class="avatar" srcset="'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatar"):r,e))+"&size=32 1x, "+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatar"):r,e))+"&size=64 2x, "+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatar"):r,e))+'&size=128 4x" alt="">\n'},7:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(r=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(r=null!=e?a(e,"contact"):e)?a(r,"profileUrl"):r,{name:"if",hash:{},fn:t.program(8,i,0),inverse:t.program(11,i,0),data:i,loc:{start:{line:12,column:1},end:{line:20,column:8}}}))?r:""},8:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(r=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(r=null!=e?a(e,"contact"):e)?a(r,"profileTitle"):r,{name:"if",hash:{},fn:t.program(9,i,0),inverse:t.noop,data:i,loc:{start:{line:13,column:2},end:{line:17,column:9}}}))?r:""},9:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t\t<a class="profile-link--avatar" href="'+t.escapeExpression(t.lambda(null!=(r=null!=e?a(e,"contact"):e)?a(r,"profileUrl"):r,e))+'">\n\t\t\t\t<div class="avatar"></div>\n\t\t\t</a>\n'},11:function(t,e,n,o,i){return'\t\t<div class="avatar"></div>\n'},13:function(t,e,n,o,i){var r,a=null!=e?e:t.nullContext||{},s=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return(null!=(r=s(n,"if").call(a,null!=(r=null!=e?s(e,"contact"):e)?s(r,"profileTitle"):r,{name:"if",hash:{},fn:t.program(14,i,0),inverse:t.noop,data:i,loc:{start:{line:23,column:1},end:{line:29,column:8}}}))?r:"")+(null!=(r=s(n,"if").call(a,null!=(r=null!=e?s(e,"contact"):e)?s(r,"topAction"):r,{name:"if",hash:{},fn:t.program(16,i,0),inverse:t.noop,data:i,loc:{start:{line:30,column:1},end:{line:34,column:8}}}))?r:"")},14:function(t,e,n,o,i){var r,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t<a class="body profile-link--full-name" href="'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"profileUrl"):r,e))+'">\n\t\t\t<div class="full-name">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"fullName"):r,e))+'</div>\n\t\t\t<div class="last-message">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"lastMessage"):r,e))+'</div>\n\t\t\t<div class="email-address">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"emailAddresses"):r,e))+"</div>\n\t\t</a>\n"},16:function(t,e,n,o,i){var r,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t<a class="top-action" href="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"hyperlink"):r,e))+'" title="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"title"):r,e))+'">\n\t\t\t<img src="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"icon"):r,e))+'" alt="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"title"):r,e))+'">\n\t\t</a>\n'},18:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(r=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(r=null!=e?a(e,"contact"):e)?a(r,"topAction"):r,{name:"if",hash:{},fn:t.program(19,i,0),inverse:t.program(21,i,0),data:i,loc:{start:{line:35,column:0},end:{line:50,column:0}}}))?r:""},19:function(t,e,n,o,i){var r,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t<a class="body" href="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"hyperlink"):r,e))+'">\n\t\t<div class="full-name">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"fullName"):r,e))+'</div>\n\t\t<div class="last-message">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"lastMessage"):r,e))+'</div>\n\t\t<div class="email-address">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"emailAddresses"):r,e))+'</div>\n\t</a>\n \t<a class="top-action" href="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"hyperlink"):r,e))+'" title="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"title"):r,e))+'">\n \t\t<img src="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"icon"):r,e))+'" alt="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"title"):r,e))+'">\n\t</a>\n'},21:function(t,e,n,o,i){var r,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t<div class="body">\n\t\t<div class="full-name">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"fullName"):r,e))+'</div>\n\t\t<div class="last-message">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"lastMessage"):r,e))+'</div>\n\t\t<div class="email-address">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"emailAddresses"):r,e))+"</div>\n\t</div>\n"},23:function(t,e,n,o,i){var r,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<a class="second-action" href="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"secondAction"):r)?l(r,"hyperlink"):r,e))+'" title="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"secondAction"):r)?l(r,"title"):r,e))+'">\n\t<img src="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"secondAction"):r)?l(r,"icon"):r,e))+'" alt="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"secondAction"):r)?l(r,"title"):r,e))+'">\n</a>\n'},25:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t<button class="other-actions icon-more"></button>\n\t<div class="menu popovermenu">\n\t\t<ul>\n'+(null!=(r=a(n,"each").call(null!=e?e:t.nullContext||{},null!=(r=null!=e?a(e,"contact"):e)?a(r,"actions"):r,{name:"each",hash:{},fn:t.program(26,i,0),inverse:t.noop,data:i,loc:{start:{line:60,column:3},end:{line:67,column:12}}}))?r:"")+"\t\t</ul>\n\t</div>\n"},26:function(t,e,n,o,i){var r,a=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t\t<li>\n\t\t\t\t<a href="'+c(typeof(r=null!=(r=u(n,"hyperlink")||(null!=e?u(e,"hyperlink"):e))?r:s)===l?r.call(a,{name:"hyperlink",hash:{},data:i,loc:{start:{line:62,column:13},end:{line:62,column:26}}}):r)+'">\n\t\t\t\t\t<img src="'+c(typeof(r=null!=(r=u(n,"icon")||(null!=e?u(e,"icon"):e))?r:s)===l?r.call(a,{name:"icon",hash:{},data:i,loc:{start:{line:63,column:15},end:{line:63,column:23}}}):r)+'" alt="">\n\t\t\t\t\t<span>'+c(typeof(r=null!=(r=u(n,"title")||(null!=e?u(e,"title"):e))?r:s)===l?r.call(a,{name:"title",hash:{},data:i,loc:{start:{line:64,column:11},end:{line:64,column:20}}}):r)+"</span>\n\t\t\t\t</a>\n\t\t\t</li>\n"},compiler:[8,">= 4.3.0"],main:function(t,e,n,o,i){var r,a=null!=e?e:t.nullContext||{},s=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return(null!=(r=s(n,"if").call(a,null!=(r=null!=e?s(e,"contact"):e)?s(r,"avatar"):r,{name:"if",hash:{},fn:t.program(1,i,0),inverse:t.program(7,i,0),data:i,loc:{start:{line:1,column:0},end:{line:21,column:7}}}))?r:"")+(null!=(r=s(n,"if").call(a,null!=(r=null!=e?s(e,"contact"):e)?s(r,"profileUrl"):r,{name:"if",hash:{},fn:t.program(13,i,0),inverse:t.program(18,i,0),data:i,loc:{start:{line:22,column:0},end:{line:50,column:7}}}))?r:"")+(null!=(r=s(n,"if").call(a,null!=(r=null!=e?s(e,"contact"):e)?s(r,"hasTwoActions"):r,{name:"if",hash:{},fn:t.program(23,i,0),inverse:t.noop,data:i,loc:{start:{line:51,column:0},end:{line:55,column:7}}}))?r:"")+(null!=(r=s(n,"if").call(a,null!=(r=null!=e?s(e,"contact"):e)?s(r,"hasManyActions"):r,{name:"if",hash:{},fn:t.program(25,i,0),inverse:t.noop,data:i,loc:{start:{line:56,column:0},end:{line:70,column:7}}}))?r:"")},useData:!0})},20421:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({compiler:[8,">= 4.3.0"],main:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="emptycontent">\n\t<div class="icon-search"></div>\n\t<h2>'+t.escapeExpression("function"==typeof(r=null!=(r=a(n,"couldNotLoadText")||(null!=e?a(e,"couldNotLoadText"):e))?r:t.hooks.helperMissing)?r.call(null!=e?e:t.nullContext||{},{name:"couldNotLoadText",hash:{},data:i,loc:{start:{line:3,column:5},end:{line:3,column:25}}}):r)+"</h2>\n</div>\n"},useData:!0})},34083:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({1:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="emptycontent">\n\t<div class="icon-search"></div>\n\t<h2>'+t.escapeExpression("function"==typeof(r=null!=(r=a(n,"noContactsFoundText")||(null!=e?a(e,"noContactsFoundText"):e))?r:t.hooks.helperMissing)?r.call(null!=e?e:t.nullContext||{},{name:"noContactsFoundText",hash:{},data:i,loc:{start:{line:4,column:5},end:{line:4,column:28}}}):r)+"</h2>\n</div>\n"},3:function(t,e,n,o,i){var r,a=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="footer"><a href="'+c(typeof(r=null!=(r=u(n,"contactsAppURL")||(null!=e?u(e,"contactsAppURL"):e))?r:s)===l?r.call(a,{name:"contactsAppURL",hash:{},data:i,loc:{start:{line:9,column:29},end:{line:9,column:47}}}):r)+'">'+c(typeof(r=null!=(r=u(n,"showAllContactsText")||(null!=e?u(e,"showAllContactsText"):e))?r:s)===l?r.call(a,{name:"showAllContactsText",hash:{},data:i,loc:{start:{line:9,column:49},end:{line:9,column:72}}}):r)+"</a></div>\n"},5:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(r=a(n,"if").call(null!=e?e:t.nullContext||{},null!=e?a(e,"canInstallApp"):e,{name:"if",hash:{},fn:t.program(6,i,0),inverse:t.noop,data:i,loc:{start:{line:10,column:0},end:{line:12,column:0}}}))?r:""},6:function(t,e,n,o,i){var r,a=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="footer"><a href="'+c(typeof(r=null!=(r=u(n,"contactsAppMgmtURL")||(null!=e?u(e,"contactsAppMgmtURL"):e))?r:s)===l?r.call(a,{name:"contactsAppMgmtURL",hash:{},data:i,loc:{start:{line:11,column:29},end:{line:11,column:51}}}):r)+'">'+c(typeof(r=null!=(r=u(n,"contactsAppMgmtText")||(null!=e?u(e,"contactsAppMgmtText"):e))?r:s)===l?r.call(a,{name:"contactsAppMgmtText",hash:{},data:i,loc:{start:{line:11,column:53},end:{line:11,column:76}}}):r)+"</a></div>\n"},compiler:[8,">= 4.3.0"],main:function(t,e,n,o,i){var r,a=null!=e?e:t.nullContext||{},s=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return(null!=(r=s(n,"unless").call(a,null!=(r=null!=e?s(e,"contacts"):e)?s(r,"length"):r,{name:"unless",hash:{},fn:t.program(1,i,0),inverse:t.noop,data:i,loc:{start:{line:1,column:0},end:{line:6,column:11}}}))?r:"")+'<div id="contactsmenu-contacts"></div>\n'+(null!=(r=s(n,"if").call(a,null!=e?s(e,"contactsAppEnabled"):e,{name:"if",hash:{},fn:t.program(3,i,0),inverse:t.program(5,i,0),data:i,loc:{start:{line:8,column:0},end:{line:12,column:7}}}))?r:"")},useData:!0})},95386:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({compiler:[8,">= 4.3.0"],main:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="emptycontent">\n\t<div class="icon-loading"></div>\n\t<h2>'+t.escapeExpression("function"==typeof(r=null!=(r=a(n,"loadingText")||(null!=e?a(e,"loadingText"):e))?r:t.hooks.helperMissing)?r.call(null!=e?e:t.nullContext||{},{name:"loadingText",hash:{},data:i,loc:{start:{line:3,column:5},end:{line:3,column:20}}}):r)+"</h2>\n</div>\n"},useData:!0})},66115:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({compiler:[8,">= 4.3.0"],main:function(t,e,n,o,i){var r,a=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<label class="hidden-visually" for="contactsmenu-search">'+c(typeof(r=null!=(r=u(n,"searchContactsText")||(null!=e?u(e,"searchContactsText"):e))?r:s)===l?r.call(a,{name:"searchContactsText",hash:{},data:i,loc:{start:{line:1,column:57},end:{line:1,column:79}}}):r)+'</label>\n<input id="contactsmenu-search" type="search" placeholder="'+c(typeof(r=null!=(r=u(n,"searchContactsText")||(null!=e?u(e,"searchContactsText"):e))?r:s)===l?r.call(a,{name:"searchContactsText",hash:{},data:i,loc:{start:{line:2,column:59},end:{line:2,column:81}}}):r)+'" value="'+c(typeof(r=null!=(r=u(n,"searchTerm")||(null!=e?u(e,"searchTerm"):e))?r:s)===l?r.call(a,{name:"searchTerm",hash:{},data:i,loc:{start:{line:2,column:90},end:{line:2,column:104}}}):r)+'">\n<div class="content">\n</div>\n'},useData:!0})},46700:function(t,e,n){var o={"./af":42786,"./af.js":42786,"./ar":30867,"./ar-dz":14130,"./ar-dz.js":14130,"./ar-kw":96135,"./ar-kw.js":96135,"./ar-ly":56440,"./ar-ly.js":56440,"./ar-ma":47702,"./ar-ma.js":47702,"./ar-sa":16040,"./ar-sa.js":16040,"./ar-tn":37100,"./ar-tn.js":37100,"./ar.js":30867,"./az":31083,"./az.js":31083,"./be":9808,"./be.js":9808,"./bg":68338,"./bg.js":68338,"./bm":67438,"./bm.js":67438,"./bn":8905,"./bn-bd":76225,"./bn-bd.js":76225,"./bn.js":8905,"./bo":11560,"./bo.js":11560,"./br":1278,"./br.js":1278,"./bs":80622,"./bs.js":80622,"./ca":2468,"./ca.js":2468,"./cs":5822,"./cs.js":5822,"./cv":50877,"./cv.js":50877,"./cy":47373,"./cy.js":47373,"./da":24780,"./da.js":24780,"./de":59740,"./de-at":60217,"./de-at.js":60217,"./de-ch":60894,"./de-ch.js":60894,"./de.js":59740,"./dv":5300,"./dv.js":5300,"./el":50837,"./el.js":50837,"./en-au":78348,"./en-au.js":78348,"./en-ca":77925,"./en-ca.js":77925,"./en-gb":22243,"./en-gb.js":22243,"./en-ie":46436,"./en-ie.js":46436,"./en-il":47207,"./en-il.js":47207,"./en-in":44175,"./en-in.js":44175,"./en-nz":76319,"./en-nz.js":76319,"./en-sg":31662,"./en-sg.js":31662,"./eo":92915,"./eo.js":92915,"./es":55655,"./es-do":55251,"./es-do.js":55251,"./es-mx":96112,"./es-mx.js":96112,"./es-us":71146,"./es-us.js":71146,"./es.js":55655,"./et":5603,"./et.js":5603,"./eu":77763,"./eu.js":77763,"./fa":76959,"./fa.js":76959,"./fi":11897,"./fi.js":11897,"./fil":42549,"./fil.js":42549,"./fo":94694,"./fo.js":94694,"./fr":94470,"./fr-ca":63049,"./fr-ca.js":63049,"./fr-ch":52330,"./fr-ch.js":52330,"./fr.js":94470,"./fy":5044,"./fy.js":5044,"./ga":29295,"./ga.js":29295,"./gd":2101,"./gd.js":2101,"./gl":38794,"./gl.js":38794,"./gom-deva":27884,"./gom-deva.js":27884,"./gom-latn":23168,"./gom-latn.js":23168,"./gu":95349,"./gu.js":95349,"./he":24206,"./he.js":24206,"./hi":30094,"./hi.js":30094,"./hr":30316,"./hr.js":30316,"./hu":22138,"./hu.js":22138,"./hy-am":11423,"./hy-am.js":11423,"./id":29218,"./id.js":29218,"./is":90135,"./is.js":90135,"./it":90626,"./it-ch":10150,"./it-ch.js":10150,"./it.js":90626,"./ja":39183,"./ja.js":39183,"./jv":24286,"./jv.js":24286,"./ka":12105,"./ka.js":12105,"./kk":47772,"./kk.js":47772,"./km":18758,"./km.js":18758,"./kn":79282,"./kn.js":79282,"./ko":33730,"./ko.js":33730,"./ku":1408,"./ku.js":1408,"./ky":33291,"./ky.js":33291,"./lb":36841,"./lb.js":36841,"./lo":55466,"./lo.js":55466,"./lt":57010,"./lt.js":57010,"./lv":37595,"./lv.js":37595,"./me":39861,"./me.js":39861,"./mi":35493,"./mi.js":35493,"./mk":95966,"./mk.js":95966,"./ml":87341,"./ml.js":87341,"./mn":5115,"./mn.js":5115,"./mr":10370,"./mr.js":10370,"./ms":9847,"./ms-my":41237,"./ms-my.js":41237,"./ms.js":9847,"./mt":72126,"./mt.js":72126,"./my":56165,"./my.js":56165,"./nb":64924,"./nb.js":64924,"./ne":16744,"./ne.js":16744,"./nl":93901,"./nl-be":59814,"./nl-be.js":59814,"./nl.js":93901,"./nn":83877,"./nn.js":83877,"./oc-lnc":92135,"./oc-lnc.js":92135,"./pa-in":15858,"./pa-in.js":15858,"./pl":64495,"./pl.js":64495,"./pt":89520,"./pt-br":57971,"./pt-br.js":57971,"./pt.js":89520,"./ro":96459,"./ro.js":96459,"./ru":21793,"./ru.js":21793,"./sd":40950,"./sd.js":40950,"./se":10490,"./se.js":10490,"./si":90124,"./si.js":90124,"./sk":64249,"./sk.js":64249,"./sl":14985,"./sl.js":14985,"./sq":51104,"./sq.js":51104,"./sr":49131,"./sr-cyrl":79915,"./sr-cyrl.js":79915,"./sr.js":49131,"./ss":85893,"./ss.js":85893,"./sv":98760,"./sv.js":98760,"./sw":91172,"./sw.js":91172,"./ta":27333,"./ta.js":27333,"./te":23110,"./te.js":23110,"./tet":52095,"./tet.js":52095,"./tg":27321,"./tg.js":27321,"./th":9041,"./th.js":9041,"./tk":19005,"./tk.js":19005,"./tl-ph":75768,"./tl-ph.js":75768,"./tlh":89444,"./tlh.js":89444,"./tr":72397,"./tr.js":72397,"./tzl":28254,"./tzl.js":28254,"./tzm":51106,"./tzm-latn":30699,"./tzm-latn.js":30699,"./tzm.js":51106,"./ug-cn":9288,"./ug-cn.js":9288,"./uk":67691,"./uk.js":67691,"./ur":13795,"./ur.js":13795,"./uz":6791,"./uz-latn":60588,"./uz-latn.js":60588,"./uz.js":6791,"./vi":65666,"./vi.js":65666,"./x-pseudo":14378,"./x-pseudo.js":14378,"./yo":75805,"./yo.js":75805,"./zh-cn":83839,"./zh-cn.js":83839,"./zh-hk":55726,"./zh-hk.js":55726,"./zh-mo":99807,"./zh-mo.js":99807,"./zh-tw":74152,"./zh-tw.js":74152};function i(t){var e=r(t);return n(e)}function r(t){if(!n.o(o,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return o[t]}i.keys=function(){return Object.keys(o)},i.resolve=r,t.exports=i,i.id=46700}},i={};function r(t){var e=i[t];if(void 0!==e)return e.exports;var n=i[t]={id:t,loaded:!1,exports:{}};return o[t].call(n.exports,n,n.exports,r),n.loaded=!0,n.exports}r.m=o,r.amdD=function(){throw new Error("define cannot be used indirect")},r.amdO={},e=[],r.O=function(t,n,o,i){if(!n){var a=1/0;for(u=0;u<e.length;u++){n=e[u][0],o=e[u][1],i=e[u][2];for(var s=!0,l=0;l<n.length;l++)(!1&i||a>=i)&&Object.keys(r.O).every((function(t){return r.O[t](n[l])}))?n.splice(l--,1):(s=!1,i<a&&(a=i));if(s){e.splice(u--,1);var c=o();void 0!==c&&(t=c)}}return t}i=i||0;for(var u=e.length;u>0&&e[u-1][2]>i;u--)e[u]=e[u-1];e[u]=[n,o,i]},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,{a:e}),e},r.d=function(t,e){for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.nmd=function(t){return t.paths=[],t.children||(t.children=[]),t},r.j=4577,function(){r.b=document.baseURI||self.location.href;var t={4577:0};r.O.j=function(e){return 0===t[e]};var e=function(e,n){var o,i,a=n[0],s=n[1],l=n[2],c=0;if(a.some((function(e){return 0!==t[e]}))){for(o in s)r.o(s,o)&&(r.m[o]=s[o]);if(l)var u=l(r)}for(e&&e(n);c<a.length;c++)i=a[c],r.o(t,i)&&t[i]&&t[i][0](),t[i]=0;return r.O(u)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(e.bind(null,0)),n.push=e.bind(null,n.push.bind(n))}(),r.nc=void 0;var a=r.O(void 0,[7874],(function(){return r(51424)}));a=r.O(a)}(); -//# sourceMappingURL=core-login.js.map?v=d2605ccb602bcaf81177
\ No newline at end of file +!function(){var e,o={87521:function(e,o,i){"use strict";var r=i(20144),a=i(74854),s=i(19755),l=i.n(s),c=i(79753),u={},d=[],f=i(18181),p=i(26932),h={updatableNotification:null,getDefaultNotificationFunction:null,setDefault:function(t){this.getDefaultNotificationFunction=t},hide:function(t,e){f.ZP.isFunction(t)&&(e=t,t=void 0),t?(t.each((function(){l()(this)[0].toastify?l()(this)[0].toastify.hideToast():console.error("cannot hide toast because object is not set"),this===this.updatableNotification&&(this.updatableNotification=null)})),e&&e.call(),this.getDefaultNotificationFunction&&this.getDefaultNotificationFunction()):console.error("Missing argument $row in OC.Notification.hide() call, caller needs to be adjusted to only dismiss its own notification")},showHtml:function(t,e){(e=e||{}).isHTML=!0,e.timeout=e.timeout?e.timeout:p.Rl;var n=(0,p.PV)(t,e);return n.toastElement.toastify=n,l()(n.toastElement)},show:function(t,e){(e=e||{}).timeout=e.timeout?e.timeout:p.Rl;var n=(0,p.PV)(function(t){return t.toString().split("&").join("&").split("<").join("<").split(">").join(">").split('"').join(""").split("'").join("'")}(t),e);return n.toastElement.toastify=n,l()(n.toastElement)},showUpdate:function(t){return this.updatableNotification&&this.updatableNotification.hideToast(),this.updatableNotification=(0,p.PV)(t,{timeout:p.Rl}),this.updatableNotification.toastElement.toastify=this.updatableNotification,l()(this.updatableNotification.toastElement)},showTemporary:function(t,e){(e=e||{}).timeout=e.timeout||p.TN;var n=(0,p.PV)(t,e);return n.toastElement.toastify=n,l()(n.toastElement)},isHidden:function(){return!l()("#content").find(".toastify").length}},m=f.ZP.throttle((function(){h.showTemporary(t("core","Connection to server lost"))}),7e3,{trailing:!1}),g={enableDynamicSlideToggle:function(){},showAppSidebar:function(t){(t||l()("#app-sidebar")).removeClass("disappear").show(),l()("#app-content").trigger(new(l().Event)("appresized"))},hideAppSidebar:function(t){(t||l()("#app-sidebar")).hide().addClass("disappear"),l()("#app-content").trigger(new(l().Event)("appresized"))}};function v(t,e,n){"post"!==t&&"delete"!==t||!Rt.PasswordConfirmation.requiresPasswordConfirmation()?(n=n||{},l().ajax({type:t.toUpperCase(),url:(0,c.generateOcsUrl)("apps/provisioning_api/api/v1/config/apps")+e,data:n.data||{},success:n.success,error:n.error})):Rt.PasswordConfirmation.requirePasswordConfirmation(_.bind(v,this,t,e,n))}var y=window.oc_appconfig||{},w={getValue:function(t,e,n,o){!function(t,e,n,o){(o=o||{}).data={defaultValue:n},v("get","/"+t+"/"+e,o)}(t,e,n,{success:o})},setValue:function(t,e,n){!function(t,e,n,o){(o=o||{}).data={value:n},v("post","/"+t+"/"+e,o)}(t,e,n)},getApps:function(t){!function(t){v("get","",t)}({success:t})},getKeys:function(t,e){!function(t,e){v("get","/"+t,e)}(t,{success:e})},deleteKey:function(t,e){!function(t,e,n){v("delete","/"+t+"/"+e,void 0)}(t,e)}},b=void 0!==window._oc_appswebroots&&window._oc_appswebroots,P=i(72316),C=i.n(P),k=i(87240),A={create:"POST",update:"PROPPATCH",patch:"PROPPATCH",delete:"DELETE",read:"PROPFIND"};function x(t,e){if(f.ZP.isArray(t))return f.ZP.map(t,(function(t){return x(t,e)}));var n={href:t.href};return f.ZP.each(t.propStat,(function(t){if("HTTP/1.1 200 OK"===t.status)for(var o in t.properties){var i=o;o in e&&(i=e[o]),n[i]=t.properties[o]}})),n.id||(n.id=O(n.href)),n}function O(t){var e=t.indexOf("?");e>0&&(t=t.substr(0,e));var n,o=t.split("/");do{n=o[o.length-1],o.pop()}while(!n&&o.length>0);return n}function T(t){return t>=200&&t<=299}function E(t,e,n,o){return t.propPatch(e.url,function(t,e){var n,o={};for(n in t){var i=e[n],r=t[n];i||(console.warn('No matching DAV property for property "'+n),i=n),(f.ZP.isBoolean(r)||f.ZP.isNumber(r))&&(r=""+r),o[i]=r}return o}(n.changed,e.davProperties),o).then((function(t){T(t.status)?f.ZP.isFunction(e.success)&&e.success(n.toJSON()):f.ZP.isFunction(e.error)&&e.error(t)}))}var j=C().noConflict();Object.assign(j,{davCall:function(t,e){var n=new k.dav.Client({baseUrl:t.url,xmlNamespaces:f.ZP.extend({"DAV:":"d","http://owncloud.org/ns":"oc"},t.xmlNamespaces||{})});n.resolveUrl=function(){return t.url};var o=f.ZP.extend({"X-Requested-With":"XMLHttpRequest",requesttoken:OC.requestToken},t.headers);return"PROPFIND"===t.type?function(t,e,n,o){return t.propFind(e.url,f.ZP.values(e.davProperties)||[],e.depth,o).then((function(t){if(T(t.status)){if(f.ZP.isFunction(e.success)){var n=f.ZP.invert(e.davProperties),o=x(t.body,n);e.depth>0&&o.shift(),e.success(o)}}else f.ZP.isFunction(e.error)&&e.error(t)}))}(n,t,0,o):"PROPPATCH"===t.type?E(n,t,e,o):"MKCOL"===t.type?function(t,e,n,o){return t.request(e.type,e.url,o,null).then((function(i){T(i.status)?E(t,e,n,o):f.ZP.isFunction(e.error)&&e.error(i)}))}(n,t,e,o):function(t,e,n,o){return o["Content-Type"]="application/json",t.request(e.type,e.url,o,e.data).then((function(t){if(T(t.status)){if(f.ZP.isFunction(e.success)){if("PUT"===e.type||"POST"===e.type||"MKCOL"===e.type){var o=t.body||n.toJSON(),i=t.xhr.getResponseHeader("Content-Location");return"POST"===e.type&&i&&(o.id=O(i)),void e.success(o)}if(207===t.status){var r=f.ZP.invert(e.davProperties);e.success(x(t.body,r))}else e.success(t.body)}}else f.ZP.isFunction(e.error)&&e.error(t)}))}(n,t,e,o)},davSync:function(t){return function(e,n,o){var i={type:A[e]||e},r=n instanceof t.Collection;if("update"===e&&(n.hasInnerCollection?i.type="MKCOL":(n.usePUT||n.collection&&n.collection.usePUT)&&(i.type="PUT")),o.url||(i.url=f.ZP.result(n,"url")||function(){throw new Error('A "url" property or function must be specified')}()),null!=o.data||!n||"create"!==e&&"update"!==e&&"patch"!==e||(i.data=JSON.stringify(o.attrs||n.toJSON(o))),"PROPFIND"!==i.type&&(i.processData=!1),"PROPFIND"===i.type||"PROPPATCH"===i.type){var a=n.davProperties;!a&&n.model&&(a=n.model.prototype.davProperties),a&&(f.ZP.isFunction(a)?i.davProperties=a.call(n):i.davProperties=a),i.davProperties=f.ZP.extend(i.davProperties||{},o.davProperties),f.ZP.isUndefined(o.depth)&&(o.depth=r?1:0)}var s=o.error;o.error=function(t,e,n){o.textStatus=e,o.errorThrown=n,s&&s.call(o.context,t,e,n)};var l=o.xhr=t.davCall(f.ZP.extend(i,o),n);return n.trigger("request",n,l,o),l}}(j)});var S=j,L=i(65358),N=window._oc_config||{},$=P.Model.extend({defaults:{fullName:"",lastMessage:"",actions:[],hasOneAction:!1,hasTwoActions:!1,hasManyActions:!1},initialize:function(){0===this.get("actions").length?this.set("hasOneAction",!0):1===this.get("actions").length?(this.set("hasTwoActions",!0),this.set("secondAction",this.get("actions")[0])):this.set("hasManyActions",!0)}}),I=P.Collection.extend({model:$}),U=P.View.extend({_collection:void 0,_subViews:[],initialize:function(t){this._collection=t.collection},render:function(){var t=this;return t.$el.html(""),t._subViews=[],t._collection.forEach((function(e){var n=new F({model:e});n.render(),t.$el.append(n.$el),n.on("toggle:actionmenu",t._onChildActionMenuToggle,t),t._subViews.push(n)})),t},_onChildActionMenuToggle:function(t){this._subViews.forEach((function(e){e.trigger("parent:toggle:actionmenu",t)}))}}),F=P.View.extend({className:"contact",_template:void 0,_model:void 0,_actionMenuShown:!1,events:{"click .icon-more":"_onToggleActionsMenu"},contactTemplate:i(10944),template:function(t){return this.contactTemplate(t)},initialize:function(t){this._model=t.model,this.on("parent:toggle:actionmenu",this._onOtherActionMenuOpened,this)},render:function(){return this.$el.html(this.template({contact:this._model.toJSON()})),this.delegateEvents(),this.$("div.avatar").imageplaceholder(this._model.get("fullName")),this.$(".top-action").tooltip({placement:"left"}),this.$(".second-action").tooltip({placement:"left"}),this},_onToggleActionsMenu:function(){this._actionMenuShown=!this._actionMenuShown,this._actionMenuShown?this.$(".menu").show():this.$(".menu").hide(),this.trigger("toggle:actionmenu",this.$el)},_onOtherActionMenuOpened:function(t){this.$el.is(t)||(this._actionMenuShown=!1,this.$(".menu").hide())}}),R=P.View.extend({_loadingTemplate:void 0,_errorTemplate:void 0,_contentTemplate:void 0,_contactsTemplate:void 0,_contacts:void 0,_searchTerm:"",events:{"input #contactsmenu-search":"_onSearch"},templates:{loading:i(95386),error:i(20421),menu:i(66115),list:i(34083)},_onSearch:f.ZP.debounce((function(t){var e=this.$("#contactsmenu-search").val();e!==this._searchTerm&&(this.trigger("search",this.$("#contactsmenu-search").val()),this._searchTerm=e)}),700),loadingTemplate:function(t){return this.templates.loading(t)},errorTemplate:function(e){return this.templates.error(f.ZP.extend({couldNotLoadText:t("core","Could not load your contacts")},e))},contentTemplate:function(e){return this.templates.menu(f.ZP.extend({searchContactsText:t("core","Search contacts …")},e))},contactsTemplate:function(e){return this.templates.list(f.ZP.extend({noContactsFoundText:t("core","No contacts found"),showAllContactsText:t("core","Show all contacts …"),contactsAppMgmtText:t("core","Install the Contacts app")},e))},initialize:function(t){this.options=t},showLoading:function(t){this.render(),this._contacts=void 0,this.$(".content").html(this.loadingTemplate({loadingText:t}))},showError:function(){this.render(),this._contacts=void 0,this.$(".content").html(this.errorTemplate())},showContacts:function(t,e){this._contacts=t.contacts,this.render({contacts:t.contacts});var n=new U({collection:t.contacts});n.render(),this.$(".content").html(this.contactsTemplate({contacts:t.contacts,searchTerm:e,contactsAppEnabled:t.contactsAppEnabled,contactsAppURL:Rt.generateUrl("/apps/contacts"),canInstallApp:Rt.isUserAdmin(),contactsAppMgmtURL:Rt.generateUrl("/settings/apps/social/contacts")})),this.$("#contactsmenu-contacts").html(n.$el)},render:function(t){var e=this.$("#contactsmenu-search").val();return this.$el.html(this.contentTemplate(t)),this.$("#contactsmenu-search").val(e),this.$("#contactsmenu-search").focus(),this}}),M=function(t){this.initialize(t)};M.prototype={$el:void 0,_$trigger:void 0,_view:void 0,_contactsPromise:void 0,initialize:function(t){this.$el=t.el,this._$trigger=t.trigger,this._view=new R({el:this.$el}),this._view.on("search",(function(t){this._loadContacts(t)}),this),Rt.registerMenu(this._$trigger,this.$el,function(){this._toggleVisibility(!0)}.bind(this),!0),this.$el.on("beforeHide",function(){this._toggleVisibility(!1)}.bind(this))},_toggleVisibility:function(t){return t?this._loadContacts():(this.$el.html(""),Promise.resolve())},_getContacts:function(t){var e=Rt.generateUrl("/contactsmenu/contacts");return Promise.resolve(l().ajax(e,{method:"POST",data:{filter:t}}))},_loadContacts:function(e){var n=this;return n._contactsPromise||(n._contactsPromise=n._getContacts(e)),f.ZP.isUndefined(e)||""===e?n._view.showLoading(t("core","Loading your contacts …")):n._view.showLoading(t("core","Looking for {term} …",{term:e})),n._contactsPromise.then((function(t){t.contacts=new I(t.contacts),n._view.showContacts(t,e)}),(function(t){n._view.showError(),console.error("There was an error loading your contacts",t)})).then((function(){delete n._contactsPromise})).catch(console.error.bind(this))}};var z=M,B=document.getElementsByTagName("head")[0].getAttribute("data-user"),D=document.getElementsByTagName("head")[0].getAttribute("data-user-displayname"),Z=void 0!==B&&B;function q(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function H(t,e,n){return e&&q(t.prototype,e),n&&q(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t}var Y={Search:H((function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),console.warn("OCA.Search is deprecated. Please use the unified search API instead")}))},K=function(t){return"click"===t.type||"keydown"===t.type&&"Enter"===t.key};function V(t,e,n,o,i,r,a){try{var s=t[r](a),l=s.value}catch(t){return void n(t)}s.done?e(l):Promise.resolve(l).then(o,i)}function G(t){return function(){var e=this,n=arguments;return new Promise((function(o,i){var r=t.apply(e,n);function a(t){V(r,o,i,a,s,"next",t)}function s(t){V(r,o,i,a,s,"throw",t)}a(void 0)}))}}function J(t){return J="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},J(t)}var W,Q,X,tt,et={YES_NO_BUTTONS:70,OK_BUTTONS:71,FILEPICKER_TYPE_CHOOSE:1,FILEPICKER_TYPE_MOVE:2,FILEPICKER_TYPE_COPY:3,FILEPICKER_TYPE_COPY_MOVE:4,FILEPICKER_TYPE_CUSTOM:5,dialogsCounter:0,alert:function(t,e,n,o){this.message(t,e,"alert",et.OK_BUTTON,n,o)},info:function(t,e,n,o){this.message(t,e,"info",et.OK_BUTTON,n,o)},confirm:function(t,e,n,o){return this.message(t,e,"notice",et.YES_NO_BUTTONS,n,o)},confirmDestructive:function(t,e,n,o,i){return this.message(t,e,"none",n,o,void 0===i||i)},confirmHtml:function(t,e,n,o){return this.message(t,e,"notice",et.YES_NO_BUTTONS,n,o,!0)},prompt:function(e,n,o,i,r,a){return l().when(this._getMessageTemplate()).then((function(s){var c="oc-dialog-"+et.dialogsCounter+"-content",u="#"+c,d=s.octemplate({dialog_name:c,title:n,message:e,type:"notice"}),p=l()("<input/>");p.attr("type",a?"password":"text").attr("id",c+"-input").attr("placeholder",r);var h=l()("<label/>").attr("for",c+"-input").text(r+": ");d.append(h),d.append(p),void 0===i&&(i=!1),l()("body").append(d),void 0!==o&&(o=f.ZP.once(o));var m=[{text:t("core","No"),click:function(){void 0!==o&&o(!1,p.val()),l()(u).ocdialog("close")}},{text:t("core","Yes"),click:function(){void 0!==o&&o(!0,p.val()),l()(u).ocdialog("close")},defaultButton:!0}];l()(u).ocdialog({closeOnEscape:!0,modal:i,buttons:m,close:function(){void 0!==o&&o(!1,p.val())}}),p.focus(),et.dialogsCounter++}))},filepicker:function(e,n,o,i,r,a,s,c){var u=this;if(this.filepicker.sortField="name",this.filepicker.sortOrder="asc",!this.filepicker.loading){void 0===a&&(a=this.FILEPICKER_TYPE_CHOOSE);var d=t("core","No files in here"),f=t("files","New folder");a!==this.FILEPICKER_TYPE_COPY&&a!==this.FILEPICKER_TYPE_MOVE&&a!==this.FILEPICKER_TYPE_COPY_MOVE||(d=t("core","No more subfolders in here")),this.filepicker.loading=!0,this.filepicker.filesClient=Y.Sharing&&Y.Sharing.PublicApp&&Y.Sharing.PublicApp.fileList?Y.Sharing.PublicApp.fileList.filesClient:Rt.Files.getClient(),this.filelist=null,s=s||"",c=Object.assign({allowDirectoryChooser:!1},c),l().when(this._getFilePickerTemplate()).then((function(p){u.filepicker.loading=!1,u.$filePicker&&u.$filePicker.ocdialog("close"),null==i&&(i=[]),"string"==typeof i&&(i=[i]),u.$filePicker=p.octemplate({dialog_name:"oc-dialog-filepicker-content",title:e,emptytext:d,newtext:f,nameCol:t("core","Name"),sizeCol:t("core","Size"),modifiedCol:t("core","Modified")}).data("path",s).data("multiselect",o).data("mimetype",i).data("allowDirectoryChooser",c.allowDirectoryChooser),"function"==typeof c.filter&&u.$filePicker.data("filter",c.filter),void 0===r&&(r=!1),void 0===o&&(o=!1),l()("body").prepend(u.$filePicker),u.$showGridView=l()("button#picker-showgridview"),u.$showGridView.on("click keydown",(function(t){K(t)&&u._onGridviewChange()})),u._getGridSettings();var h=u.$filePicker.find(".actions.creatable .button-add");a!==u.FILEPICKER_TYPE_CHOOSE||c.allowDirectoryChooser||u.$filePicker.find(".actions.creatable").hide(),h.on("focus",(function(){u.$filePicker.ocdialog("setEnterCallback",(function(t){t.stopImmediatePropagation(),t.preventDefault(),h.click()}))})),h.on("blur",(function(){u.$filePicker.ocdialog("unsetEnterCallback")})),Rt.registerMenu(h,u.$filePicker.find(".menu"),(function(){g.tooltip("hide"),g.focus(),u.$filePicker.ocdialog("setEnterCallback",(function(t){t.stopImmediatePropagation(),t.preventDefault(),u.$filePicker.submit()}));var t=g.val(),e=t.lastIndexOf(".");-1===e&&(e=t.length),g.selectRange(0,e)}));var m=u.$filePicker.find(".filenameform"),g=m.find("input[type='text']"),v=m.find("input[type='submit']");g.on("keydown",(function(t){K(t)&&(t.stopImmediatePropagation(),t.preventDefault(),m.submit())})),v.on("click",(function(t){t.stopImmediatePropagation(),t.preventDefault(),m.submit()}));m.on("submit",(function(e){if(e.stopPropagation(),e.preventDefault(),function(){var e=g.val();try{if(function(e){var n=e.trim();if("."===n||".."===n)throw t("files",'"{name}" is an invalid file name.',{name:e});if(0===n.length)throw t("files","File name cannot be empty.");if(-1!==n.indexOf("/"))throw t("files",'"/" is not allowed inside a file name.');if(n.match(Rt.config.blacklist_files_regex))throw t("files",'"{name}" is not an allowed filetype',{name:e});return!0}(e)){if(u.filelist.find((function(t){return t.name===this}),e))throw t("files","{newName} already exists",{newName:e},void 0,{escape:!1});return!0}}catch(t){g.attr("title",t),g.tooltip({placement:"right",trigger:"manual",container:".newFolderMenu"}),g.tooltip("_fixTitle"),g.tooltip("show"),g.addClass("error")}return!1}()){var n=g.val();u.filepicker.filesClient.createDirectory(u.$filePicker.data("path")+"/"+n).always((function(t){u._fillFilePicker(u.$filePicker.data("path")+"/"+n)})),Rt.hideMenus(),u.$filePicker.ocdialog("unsetEnterCallback"),u.$filePicker.click(),g.val(f)}})),g.on("input",(function(t){g.tooltip("hide")})),u.$filePicker.ready((function(){u.$fileListHeader=u.$filePicker.find(".filelist thead tr"),u.$filelist=u.$filePicker.find(".filelist tbody"),u.$filelistContainer=u.$filePicker.find(".filelist-container"),u.$dirTree=u.$filePicker.find(".dirtree"),u.$dirTree.on("click keydown","div:not(:last-child)",u,(function(t){K(t)&&u._handleTreeListSelect(t,a)})),u.$filelist.on("click keydown","tr",(function(t){K(t)&&u._handlePickerClick(t,l()(this),a)})),u.$fileListHeader.on("click keydown","a",(function(t){if(K(t)){var e=u.$filePicker.data("path");u.filepicker.sortField=l()(t.currentTarget).data("sort"),u.filepicker.sortOrder="asc"===u.filepicker.sortOrder?"desc":"asc",u._fillFilePicker(e)}})),u._fillFilePicker(s)}));var y=function(t){if(void 0!==n){var e;if(!0===o)e=[],u.$filelist.find("tr.filepicker_element_selected").each((function(t,n){e.push(u.$filePicker.data("path")+"/"+l()(n).data("entryname"))}));else{e=u.$filePicker.data("path");var i=u.$filelist.find("tr.filepicker_element_selected").data("entryname");i&&(e+="/"+i)}n(e,t),u.$filePicker.ocdialog("close")}},w=[];a===et.FILEPICKER_TYPE_CHOOSE?w.push({text:t("core","Choose"),click:function(){y(et.FILEPICKER_TYPE_CHOOSE)},defaultButton:!0}):a===et.FILEPICKER_TYPE_CUSTOM?c.buttons.forEach((function(t){w.push({text:t.text,click:function(){y(t.type)},defaultButton:t.defaultButton})})):(a!==et.FILEPICKER_TYPE_COPY&&a!==et.FILEPICKER_TYPE_COPY_MOVE||w.push({text:t("core","Copy"),click:function(){y(et.FILEPICKER_TYPE_COPY)},defaultButton:!1}),a!==et.FILEPICKER_TYPE_MOVE&&a!==et.FILEPICKER_TYPE_COPY_MOVE||w.push({text:t("core","Move"),click:function(){y(et.FILEPICKER_TYPE_MOVE)},defaultButton:!0})),u.$filePicker.ocdialog({closeOnEscape:!0,width:600,height:500,modal:r,buttons:w,style:{buttons:"aside"},close:function(){try{l()(this).ocdialog("destroy").remove()}catch(t){}u.$filePicker=null}});var b=u.$filePicker.closest(".oc-dialog").find(".primary");-1!==u.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||u.$filePicker.data("allowDirectoryChooser")?b.prop("disabled",!1):b.prop("disabled",!0)})).fail((function(e,n){u.filepicker.loading=!1,0!==e&&alert(t("core","Error loading file picker template: {error}",{error:n}))}))}},message:function(e,n,o,i,r,a,s){return l().when(this._getMessageTemplate()).then((function(c){var u="oc-dialog-"+et.dialogsCounter+"-content",d="#"+u,f=c.octemplate({dialog_name:u,title:n,message:e,type:o},s?{escapeFunction:""}:{});void 0===a&&(a=!1),l()("body").append(f);var p=[];switch(i){case et.YES_NO_BUTTONS:p=[{text:t("core","No"),click:function(){void 0!==r&&r(!1),l()(d).ocdialog("close")}},{text:t("core","Yes"),click:function(){void 0!==r&&r(!0),l()(d).ocdialog("close")},defaultButton:!0}];break;case et.OK_BUTTON:p[0]={text:t("core","OK"),click:function(){l()(d).ocdialog("close"),void 0!==r&&r()},defaultButton:!0};break;default:"object"===J(i)&&i.type===et.YES_NO_BUTTONS&&(p=[{text:i.cancel||t("core","No"),click:function(){void 0!==r&&r(!1),l()(d).ocdialog("close")}},{text:i.confirm||t("core","Yes"),click:function(){void 0!==r&&r(!0),l()(d).ocdialog("close")},defaultButton:!0,classes:i.confirmClasses}])}l()(d).ocdialog({closeOnEscape:!0,closeCallback:function(){r&&r(!1)},modal:a,buttons:p}),et.dialogsCounter++})).fail((function(o,i){0===o?alert(n+": "+e):alert(t("core","Error loading message template: {error}",{error:i}))}))},_fileexistsshown:!1,fileexists:function(e,o,i,r){var a=this,s=new(l().Deferred),c=function(t,e,n,o,i){o=Math.round(o),i=Math.round(i);for(var r=t.getContext("2d").getImageData(0,0,e,n),a=t.getContext("2d").getImageData(0,0,o,i),s=r.data,l=a.data,c=e/o,u=n/i,d=Math.ceil(c/2),f=Math.ceil(u/2),p=0;p<i;p++)for(var h=0;h<o;h++){for(var m=4*(h+p*o),g=0,v=0,y=0,w=0,b=0,_=0,P=0,C=(p+.5)*u,k=Math.floor(p*u);k<(p+1)*u;k++)for(var A=Math.abs(C-(k+.5))/f,x=(h+.5)*c,O=A*A,T=Math.floor(h*c);T<(h+1)*c;T++){var E=Math.abs(x-(T+.5))/d,j=Math.sqrt(O+E*E);j>=-1&&j<=1&&(g=2*j*j*j-3*j*j+1)>0&&(P+=g*s[3+(E=4*(T+k*e))],y+=g,s[E+3]<255&&(g=g*s[E+3]/250),w+=g*s[E],b+=g*s[E+1],_+=g*s[E+2],v+=g)}l[m]=w/v,l[m+1]=b/v,l[m+2]=_/v,l[m+3]=P/y}t.getContext("2d").clearRect(0,0,Math.max(e,o),Math.max(n,i)),t.width=o,t.height=i,t.getContext("2d").putImageData(a,0,0)},u=function(n,o,i){var r=n.find(".template").clone().removeClass("template").addClass("conflict"),a=r.find(".original"),s=r.find(".replacement");r.data("data",e),r.find(".filename").text(o.name),a.find(".size").text(Rt.Util.humanFileSize(o.size)),a.find(".mtime").text(Rt.Util.formatDate(o.mtime)),i.size&&i.lastModified&&(s.find(".size").text(Rt.Util.humanFileSize(i.size)),s.find(".mtime").text(Rt.Util.formatDate(i.lastModified)));var u=o.directory+"/"+o.name,d={file:u,x:96,y:96,c:o.etag,forceIcon:0},f=Files.generatePreviewUrl(d);f=f.replace(/'/g,"%27"),a.find(".icon").css({"background-image":"url('"+f+"')"}),function(t){var e=new(l().Deferred),n=t.type&&t.type.split("/").shift();if(window.FileReader&&"image"===n){var o=new FileReader;o.onload=function(t){var n=new Blob([t.target.result]);window.URL=window.URL||window.webkitURL;var o=window.URL.createObjectURL(n),i=new Image;i.src=o,i.onload=function(){var t,n,o,r,a,s,l,u=(t=i,a=document.createElement("canvas"),s=t.width,l=t.height,s>l?(o=0,n=(s-l)/2):(o=(l-s)/2,n=0),r=Math.min(s,l),a.width=r,a.height=r,a.getContext("2d").drawImage(t,n,o,r,r,0,0,r,r),c(a,r,r,96,96),a.toDataURL("image/png",.7));e.resolve(u)}},o.readAsArrayBuffer(t)}else e.reject();return e}(i).then((function(t){s.find(".icon").css("background-image","url("+t+")")}),(function(){u=Rt.MimeType.getIconUrl(i.type),s.find(".icon").css("background-image","url("+u+")")}));var p=n.find(".conflict").length;a.find("input:checkbox").attr("id","checkbox_original_"+p),s.find("input:checkbox").attr("id","checkbox_replacement_"+p),n.append(r),i.lastModified>o.mtime?s.find(".mtime").css("font-weight","bold"):i.lastModified<o.mtime&&a.find(".mtime").css("font-weight","bold"),i.size&&i.size>o.size?s.find(".size").css("font-weight","bold"):i.size&&i.size<o.size&&a.find(".size").css("font-weight","bold"),"readonly"===o.status&&(a.addClass("readonly").find('input[type="checkbox"]').prop("checked",!0).prop("disabled",!0),a.find(".message").text(t("core","read-only")))},d="oc-dialog-fileexists-content",f="#"+d;if(this._fileexistsshown){var p=l()(f+" .conflicts");u(p,o,i);var h=l()(f+" .conflict").length,m=n("core","{count} file conflict","{count} file conflicts",h,{count:h});l()(f).parent().children(".oc-dialog-title").text(m),l()(window).trigger("resize"),s.resolve()}else this._fileexistsshown=!0,l().when(this._getFileExistsTemplate()).then((function(n){var c=t("core","One file conflict"),p=n.octemplate({dialog_name:d,title:c,type:"fileexists",allnewfiles:t("core","New Files"),allexistingfiles:t("core","Already existing files"),why:t("core","Which files do you want to keep?"),what:t("core","If you select both versions, the copied file will have a number added to its name.")});if(l()("body").append(p),o&&i){var h=p.find(".conflicts");u(h,o,i)}var m=[{text:t("core","Cancel"),classes:"cancel",click:function(){void 0!==r.onCancel&&r.onCancel(e),l()(f).ocdialog("close")}},{text:t("core","Continue"),classes:"continue",click:function(){void 0!==r.onContinue&&r.onContinue(l()(f+" .conflict")),l()(f).ocdialog("close")}}];l()(f).ocdialog({width:500,closeOnEscape:!0,modal:!0,buttons:m,closeButton:null,close:function(){a._fileexistsshown=!1;try{l()(this).ocdialog("destroy").remove()}catch(t){}}}),l()(f).css("height","auto");var g=p.closest(".oc-dialog").find("button.continue");function v(){var t=p.find(".conflicts .checkbox:checked").length;g.prop("disabled",0===t)}g.prop("disabled",!0),l()(f).find(".allnewfiles").on("click",(function(){l()(f).find('.conflict .replacement input[type="checkbox"]').prop("checked",l()(this).prop("checked"))})),l()(f).find(".allexistingfiles").on("click",(function(){l()(f).find('.conflict .original:not(.readonly) input[type="checkbox"]').prop("checked",l()(this).prop("checked"))})),l()(f).find(".conflicts").on("click",".replacement,.original:not(.readonly)",(function(){var t=l()(this).find('input[type="checkbox"]');t.prop("checked",!t.prop("checked"))})),l()(f).find(".conflicts").on("click",'.replacement input[type="checkbox"],.original:not(.readonly) input[type="checkbox"]',(function(){var t=l()(this);t.prop("checked",!t.prop("checked"))})),l()(f).on("click",".replacement,.allnewfiles",(function(){var e=l()(f).find('.conflict .replacement input[type="checkbox"]:checked').length;e===l()(f+" .conflict").length?(l()(f).find(".allnewfiles").prop("checked",!0),l()(f).find(".allnewfiles + .count").text(t("core","(all selected)"))):e>0?(l()(f).find(".allnewfiles").prop("checked",!1),l()(f).find(".allnewfiles + .count").text(t("core","({count} selected)",{count:e}))):(l()(f).find(".allnewfiles").prop("checked",!1),l()(f).find(".allnewfiles + .count").text("")),v()})),l()(f).on("click",".original,.allexistingfiles",(function(){var e=l()(f).find('.conflict .original input[type="checkbox"]:checked').length;e===l()(f+" .conflict").length?(l()(f).find(".allexistingfiles").prop("checked",!0),l()(f).find(".allexistingfiles + .count").text(t("core","(all selected)"))):e>0?(l()(f).find(".allexistingfiles").prop("checked",!1),l()(f).find(".allexistingfiles + .count").text(t("core","({count} selected)",{count:e}))):(l()(f).find(".allexistingfiles").prop("checked",!1),l()(f).find(".allexistingfiles + .count").text("")),v()})),s.resolve()})).fail((function(){s.reject(),alert(t("core","Error loading file exists template"))}));return s.promise()},_getGridSettings:function(){var e=this;l().get(Rt.generateUrl("/apps/files/api/v1/showgridview"),(function(n){e.$showGridView.removeClass("icon-toggle-filelist icon-toggle-pictures").addClass(n.gridview?"icon-toggle-filelist":"icon-toggle-pictures"),e.$showGridView.attr("aria-label",n.gridview?t("files","Show list view"):t("files","Show grid view")),l()(".list-container").toggleClass("view-grid",n.gridview)}))},_onGridviewChange:function(){var e=this.$showGridView.hasClass("icon-toggle-filelist");Rt.currentUser&&l().post(Rt.generateUrl("/apps/files/api/v1/showgridview"),{show:!e}),this.$showGridView.removeClass("icon-toggle-filelist icon-toggle-pictures").addClass(e?"icon-toggle-pictures":"icon-toggle-filelist"),this.$showGridView.attr("aria-label",e?t("files","Show grid view"):t("files","Show list view")),this.$filePicker.find(".list-container").toggleClass("view-grid",!e)},_getFilePickerTemplate:function(){var t=l().Deferred();if(this.$filePickerTemplate)t.resolve(this.$filePickerTemplate);else{var e=this;l().get(Rt.filePath("core","templates","filepicker.html"),(function(n){e.$filePickerTemplate=l()(n),e.$listTmpl=e.$filePickerTemplate.find(".filelist tbody tr:first-child").detach(),t.resolve(e.$filePickerTemplate)})).fail((function(e,n,o){t.reject(e.status,o)}))}return t.promise()},_getMessageTemplate:function(){var t=l().Deferred();if(this.$messageTemplate)t.resolve(this.$messageTemplate);else{var e=this;l().get(Rt.filePath("core","templates","message.html"),(function(n){e.$messageTemplate=l()(n),t.resolve(e.$messageTemplate)})).fail((function(e,n,o){t.reject(e.status,o)}))}return t.promise()},_getFileExistsTemplate:function(){var t=l().Deferred();if(this.$fileexistsTemplate)t.resolve(this.$fileexistsTemplate);else{var e=this;l().get(Rt.filePath("files","templates","fileexists.html"),(function(n){e.$fileexistsTemplate=l()(n),t.resolve(e.$fileexistsTemplate)})).fail((function(){t.reject()}))}return t.promise()},_getFileList:function(t,e){return"string"==typeof e&&(e=[e]),l().getJSON(Rt.filePath("files","ajax","list.php"),{dir:t,mimetypes:JSON.stringify(e)})},_fillFilePicker:(W=G(regeneratorRuntime.mark((function e(n){var o,i,r,a,s,c,u,d;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=this,this.$filelist.empty(),this.$filePicker.find(".emptycontent").hide(),this.$filelistContainer.addClass("icon-loading"),this.$filePicker.data("path",n),i=this.$filePicker.data("mimetype"),r=this.$filePicker.data("filter"),"string"==typeof i&&(i=[i]),o.$fileListHeader.find(".sort-indicator").addClass("hidden").removeClass("icon-triangle-n").removeClass("icon-triangle-s"),o.$fileListHeader.find("[data-sort="+o.filepicker.sortField+"] .sort-indicator").removeClass("hidden"),"asc"===o.filepicker.sortOrder?o.$fileListHeader.find("[data-sort="+o.filepicker.sortField+"] .sort-indicator").addClass("icon-triangle-n"):o.$fileListHeader.find("[data-sort="+o.filepicker.sortField+"] .sort-indicator").addClass("icon-triangle-s"),a=function(){var t=G(regeneratorRuntime.mark((function t(e){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",o.filepicker.filesClient.getFolderContents(e).then((function(t,e){return e})));case 1:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}(),e.prev=12,e.next=15,a(n);case 15:s=e.sent,e.next=25;break;case 18:return e.prev=18,e.t0=e.catch(12),console.error("Requested path does not exists, falling back to root"),e.next=23,a("/");case 23:s=e.sent,this.$filePicker.data("path","/");case 25:o.filelist=s,i&&i.length>0&&-1===i.indexOf("*")&&(s=s.filter((function(t){return"dir"===t.type||-1!==i.indexOf(t.mimetype)}))),r&&(s=s.filter(r)),null===(c=document.getElementById("showHiddenFiles"))||"1"===c.value||(s=s.filter((function(t){return!t.name.startsWith(".")}))),d=(u={name:function(t,e){return"dir"===t.type&&"dir"!==e.type?-1:"dir"!==t.type&&"dir"===e.type?1:Rt.Util.naturalSortCompare(t.name,e.name)},size:function(t,e){return t.size-e.size},mtime:function(t,e){return t.mtime-e.mtime}})[o.filepicker.sortField]||u.name,s=s.sort((function(t,e){var n=function(t){return t.tags&&t.tags.indexOf(Rt.TAG_FAVORITE)>=0};return n(t)&&!n(e)?-1:!n(t)&&n(e)?1:"asc"===o.filepicker.sortOrder?d(t,e):-d(t,e)})),o._fillSlug(),0===s.length?(o.$filePicker.find(".emptycontent").show(),o.$fileListHeader.hide()):(o.$filePicker.find(".emptycontent").hide(),o.$fileListHeader.show()),o.$filelist.empty(),l().each(s,(function(e,i){var r,a;if(i.isEncrypted&&"httpd/unix-directory"===i.mimetype?i.icon=Rt.MimeType.getIconUrl("dir-encrypted"):i.icon=Rt.MimeType.getIconUrl(i.mimetype),void 0!==i.size&&i.size>=0?(r=Rt.Util.humanFileSize(parseInt(i.size,10),!0),a=Math.round(160-Math.pow(i.size/1048576,2))):(r=t("files","Pending"),a=80),i.name.length>=10)var s=Math.min(Math.floor(i.name.length/2),10),c=i.name.substr(0,i.name.length-s),u=i.name.substr(i.name.length-s);else c=i.name,u="";var d=o.$listTmpl.octemplate({type:i.type,dir:n,filename:i.name,filename1:c,filename2:u,date:Rt.Util.relativeModifiedDate(i.mtime),size:r,sizeColor:a,icon:i.icon});if("file"===i.type){var f={file:n+"/"+i.name,x:100,y:100},p=new Image,h=Rt.generateUrl("/core/preview.png?")+l().param(f);p.onload=function(){p.width>5&&d.find("td.filename").attr("style","background-image:url("+h+")")},p.src=h}o.$filelist.append(d)})),o.$filelistContainer.removeClass("icon-loading");case 39:case"end":return e.stop()}}),e,this,[[12,18]])}))),function(t){return W.apply(this,arguments)}),_fillSlug:function(){var t=this.$dirTree.find(".actions.creatable").detach();this.$dirTree.empty();var e=this;e.$dirTree.append(t);var n=this.$filePicker.data("path"),o=l()('<div data-dir="{dir}" tabindex="0"><a>{name}</a></div>').addClass("crumb");if(n){var i=n.split("/");l().each(i,(function(t,n){if(""===(n=i.pop()))return!1;e.$dirTree.prepend(o.octemplate({dir:i.join("/")+"/"+n,name:n}))}))}o.octemplate({dir:"",name:""},{escapeFunction:null}).prependTo(this.$dirTree)},_handleTreeListSelect:function(t,e){var n=t.data,o=l()(t.target).closest(".crumb").data("dir");n._fillFilePicker(o);var i=t.target.closest(".oc-dialog"),r=l()(".primary",i);this._changeButtonsText(e,o.split(/[/]+/).pop()),-1!==this.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||this.$filePicker.data("allowDirectoryChooser")?r.prop("disabled",!1):r.prop("disabled",!0)},_handlePickerClick:function(t,e,n){var o=this.$filePicker.closest(".oc-dialog").find(".primary");"file"===e.data("type")?(!0===this.$filePicker.data("multiselect")&&t.ctrlKey||this.$filelist.find(".filepicker_element_selected").removeClass("filepicker_element_selected"),e.toggleClass("filepicker_element_selected"),o.prop("disabled",!1)):"dir"===e.data("type")&&(this._fillFilePicker(this.$filePicker.data("path")+"/"+e.data("entryname")),this._changeButtonsText(n,e.data("entryname")),-1!==this.$filePicker.data("mimetype").indexOf("httpd/unix-directory")||this.$filePicker.data("allowDirectoryChooser")?o.prop("disabled",!1):o.prop("disabled",!0))},_changeButtonsText:function(e,n){var o=""===n?t("core","Copy"):t("core","Copy to {folder}",{folder:n}),i=""===n?t("core","Move"):t("core","Move to {folder}",{folder:n}),r=l()(".oc-dialog-buttonrow button");switch(e){case this.FILEPICKER_TYPE_CHOOSE:case this.FILEPICKER_TYPE_CUSTOM:break;case this.FILEPICKER_TYPE_COPY:r.text(o);break;case this.FILEPICKER_TYPE_MOVE:r.text(i);break;case this.FILEPICKER_TYPE_COPY_MOVE:r.eq(0).text(o),r.eq(1).text(i)}}},nt=et,ot=(Q=document,X=a.j8,tt=Q.getElementsByTagName("head")[0].getAttribute("data-requesttoken"),{getToken:function(){return tt},setToken:function(t){X("csrf-token-update",{token:tt=t})}}).getToken,it=function t(e,n){var o,i,r="";if(this.typelessListeners=[],this.closed=!1,this.listeners={},n)for(o in n)r+=o+"="+encodeURIComponent(n[o])+"&";if(r+="requesttoken="+encodeURIComponent(ot()),this.useFallBack||"undefined"==typeof EventSource){var a="oc_eventsource_iframe_"+t.iframeCount;t.fallBackSources[t.iframeCount]=this,this.iframe=l()("<iframe></iframe>"),this.iframe.attr("id",a),this.iframe.hide(),i="&",-1===e.indexOf("?")&&(i="?"),this.iframe.attr("src",e+i+"fallback=true&fallback_id="+t.iframeCount+"&"+r),l()("body").append(this.iframe),this.useFallBack=!0,t.iframeCount++}else i="&",-1===e.indexOf("?")&&(i="?"),this.source=new EventSource(e+i+r),this.source.onmessage=function(t){for(var e=0;e<this.typelessListeners.length;e++)this.typelessListeners[e](JSON.parse(t.data))}.bind(this);this.listen("__internal__",function(t){"close"===t&&this.close()}.bind(this))};it.fallBackSources=[],it.iframeCount=0,it.fallBackCallBack=function(t,e,n){it.fallBackSources[t].fallBackCallBack(e,n)},it.prototype={typelessListeners:[],iframe:null,listeners:{},useFallBack:!1,fallBackCallBack:function(t,e){var n;if(!this.closed)if(t){if(void 0!==this.listeners.done)for(n=0;n<this.listeners[t].length;n++)this.listeners[t][n](e)}else for(n=0;n<this.typelessListeners.length;n++)this.typelessListeners[n](e)},lastLength:0,listen:function(t,e){e&&e.call&&(t?this.useFallBack?(this.listeners[t]||(this.listeners[t]=[]),this.listeners[t].push(e)):this.source.addEventListener(t,(function(t){void 0!==t.data?e(JSON.parse(t.data)):e("")}),!1):this.typelessListeners.push(e))},close:function(){this.closed=!0,void 0!==this.source&&this.source.close()}};var rt=it,at=i(42515),st=null,lt=null,ct=function(t){if(st){var e=st;st.trigger(new(l().Event)("beforeHide")),st.slideUp(50,(function(){e.trigger(new(l().Event)("afterHide")),t&&t.apply(this,arguments)}))}l()(".menutoggle").attr("aria-expanded",!1),lt&<.attr("aria-expanded",!1),l()(".openedMenu").removeClass("openedMenu"),st=null,lt=null},ut=!!window._oc_isadmin,dt=i(27856),ft=i.n(dt),pt=i(86834),ht=i.n(pt),mt=i(46488),gt=i.n(mt),vt=i(95573),yt=i.n(vt);window._oc_l10n_registry_translations=window._oc_l10n_registry_translations||{},window._oc_l10n_registry_plural_functions=window._oc_l10n_registry_plural_functions||{};var wt=function(t){return void 0!==window._oc_l10n_registry_translations[t]&&void 0!==window._oc_l10n_registry_plural_functions[t]},bt=function(t){return{translations:window._oc_l10n_registry_translations[t]||{},pluralFunction:window._oc_l10n_registry_plural_functions[t]}};function _t(t){return _t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},_t(t)}var Pt={load:function(t,e){if(wt(t)||"en"===Rt.getLocale()){var n=l().Deferred(),o=n.promise();return o.then(e),n.resolve(),o}var i=this,r=(0,c.generateFilePath)(t,"l10n",Rt.getLocale()+".json");return l().get(r).then((function(e){e.translations&&i.register(t,e.translations,e.pluralForm)})).then(e)},register:function(t,e){var n,o,i;n=t,o=e,i=this._getPlural,wt(n)?function(t,e,n){window._oc_l10n_registry_translations[t]=Object.assign(window._oc_l10n_registry_translations[t],e),window._oc_l10n_registry_plural_functions[t]=n}(n,o,i):function(t,e,n){window._oc_l10n_registry_translations[t]=e,window._oc_l10n_registry_plural_functions[t]=n}(n,o,i)},_unregister:function(t){delete window._oc_l10n_registry_translations[t],delete window._oc_l10n_registry_plural_functions[t]},translate:function(t,e,n,o,i){var r=i||{};f.ZP.defaults(r,{escape:!0,sanitize:!0});var a=r.sanitize?ft().sanitize:gt(),s=r.escape?yt():gt(),l=e,c=bt(t).translations[e];return void 0!==c&&(l=c),"object"===_t(n)||void 0!==o?a(function(t,e,n){return t.replace(/%n/g,n).replace(/{([^{}]*)}/g,(function(t,n){var o=e[n];return a("string"==typeof o||"number"==typeof o?s(o):t)}))}(l,n,o)):a(l)},translatePlural:function(t,e,n,o,i,r){var a="_"+e+"_::_"+n+"_",s=bt(t),c=s.translations[a];if(void 0!==c){var u=c;if(l().isArray(u)){var d=s.pluralFunction(o);return this.translate(t,u[d],i,o,r)}}return 1===o?this.translate(t,e,i,o,r):this.translate(t,n,i,o,r)},_getPlural:function(t){var e=Rt.getLanguage();if("pt-BR"===e&&(e="xbr"),void 0===e||""===e)return 1===t?0:1;switch(e.length>3&&(e=e.substring(0,e.lastIndexOf("-"))),e){case"az":case"bo":case"dz":case"id":case"ja":case"jv":case"ka":case"km":case"kn":case"ko":case"ms":case"th":case"tr":case"vi":case"zh":default:return 0;case"af":case"bn":case"bg":case"ca":case"da":case"de":case"el":case"en":case"eo":case"es":case"et":case"eu":case"fa":case"fi":case"fo":case"fur":case"fy":case"gl":case"gu":case"ha":case"he":case"hu":case"is":case"it":case"ku":case"lb":case"ml":case"mn":case"mr":case"nah":case"nb":case"ne":case"nl":case"nn":case"no":case"oc":case"om":case"or":case"pa":case"pap":case"ps":case"pt":case"so":case"sq":case"sv":case"sw":case"ta":case"te":case"tk":case"ur":case"zu":return 1===t?0:1;case"am":case"bh":case"fil":case"fr":case"gun":case"hi":case"hy":case"ln":case"mg":case"nso":case"xbr":case"ti":case"wa":return 0===t||1===t?0:1;case"be":case"bs":case"hr":case"ru":case"sh":case"sr":case"uk":return t%10==1&&t%100!=11?0:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?1:2;case"cs":case"sk":return 1===t?0:t>=2&&t<=4?1:2;case"ga":return 1===t?0:2===t?1:2;case"lt":return t%10==1&&t%100!=11?0:t%10>=2&&(t%100<10||t%100>=20)?1:2;case"sl":return t%100==1?0:t%100==2?1:t%100==3||t%100==4?2:3;case"mk":return t%10==1?0:1;case"mt":return 1===t?0:0===t||t%100>1&&t%100<11?1:t%100>10&&t%100<20?2:3;case"lv":return 0===t?0:t%10==1&&t%100!=11?1:2;case"pl":return 1===t?0:t%10>=2&&t%10<=4&&(t%100<12||t%100>14)?1:2;case"cy":return 1===t?0:2===t?1:8===t||11===t?2:3;case"ro":return 1===t?0:0===t||t%100>0&&t%100<20?1:2;case"ar":return 0===t?0:1===t?1:2===t?2:t%100>=3&&t%100<=10?3:t%100>=11&&t%100<=99?4:5}}},Ct=Pt;ht().registerHelper("t",(function(t,e){return Pt.translate(t,e)}));var kt=i(9944),At={startSaving:function(e){this.startAction(e,t("core","Saving …"))},startAction:function(t,e){l()(t).text(e).removeClass("success").removeClass("error").stop(!0,!0).show()},finishedSaving:function(t,e){this.finishedAction(t,e)},finishedAction:function(t,e){"success"===e.status?this.finishedSuccess(t,e.data.message):this.finishedError(t,e.data.message)},finishedSuccess:function(t,e){l()(t).text(e).addClass("success").removeClass("error").stop(!0,!0).delay(3e3).fadeOut(900).show()},finishedError:function(t,e){l()(t).text(e).addClass("error").removeClass("success").show()}},xt=i(30381),Ot=i.n(xt),Tt={callback:null,pageLoadTime:null,init:function(){l()(".password-confirm-required").on("click",f.ZP.bind(this.requirePasswordConfirmation,this)),this.pageLoadTime=Ot().now()},requiresPasswordConfirmation:function(){var t=this.pageLoadTime-1e3*window.nc_pageLoad,e=Ot().now()-(t+1e3*window.nc_lastLogin);return window.backendAllowsPasswordConfirmation&&e>18e5},requirePasswordConfirmation:function(e,n,o){n=void 0!==n?n:{};var i={title:t("core","Authentication required"),text:t("core","This action requires you to confirm your password"),confirm:t("core","Confirm"),label:t("core","Password"),error:""},r=f.ZP.extend(i,n),a=this;this.requiresPasswordConfirmation()&&Rt.dialogs.prompt(r.text,r.title,(function(t,e){t&&""!==e?a._confirmPassword(e,r):f.ZP.isFunction(o)&&o()}),!0,r.label,!0).then((function(){var t=l()(".oc-dialog:visible");if(t.find(".ui-icon").remove(),t.addClass("password-confirmation"),""!==r.error){var e=l()("<p></p>").addClass("msg warning").text(r.error);t.find(".oc-dialog-content").append(e)}t.find(".oc-dialog-buttonrow").addClass("aside");var n=t.find("button");n.eq(0).hide(),n.eq(1).text(r.confirm)})),this.callback=e},_confirmPassword:function(e,n){var o=this;l().ajax({url:(0,c.generateUrl)("/login/confirm"),data:{password:e},type:"POST",success:function(t){window.nc_lastLogin=t.lastLogin,f.ZP.isFunction(o.callback)&&o.callback()},error:function(){n.error=t("core","Failed to authenticate, try again"),Rt.PasswordConfirmation.requirePasswordConfirmation(o.callback,n)}})}},Et=window._theme||{},jt={_handlers:[],_pushState:function(t,e,n){var o;if(o="string"==typeof t?t:Rt.buildQueryString(t),window.history.pushState){if(e=e||location.pathname+"?"+o,navigator.userAgent.toLowerCase().indexOf("firefox")>-1&&parseInt(navigator.userAgent.split("/").pop())<51)for(var i,r=document.querySelectorAll('[fill^="url(#"], [stroke^="url(#"], [filter^="url(#invert"]'),a=0,s=r.length;a<s;a++)(i=r[a]).style.fill=i.style.fill,i.style.stroke=i.style.stroke,i.removeAttribute("filter"),i.setAttribute("filter","url(#invert)");n?window.history.replaceState(t,"",e):window.history.pushState(t,"",e)}else window.location.hash="?"+o,this._cancelPop=!0},pushState:function(t,e){this._pushState(t,e,!1)},replaceState:function(t,e){this._pushState(t,e,!0)},addOnPopStateHandler:function(t){this._handlers.push(t)},_parseHashQuery:function(){var t=window.location.hash,e=t.indexOf("?");return e>=0?t.substr(e+1):t.length?t.substr(1):""},_decodeQuery:function(t){return t.replace(/\+/g," ")},parseUrlQuery:function(){var t,e=this._parseHashQuery();return e&&(t=Rt.parseQueryString(this._decodeQuery(e))),(t=f.ZP.extend(t||{},Rt.parseQueryString(this._decodeQuery(location.search))))||{}},_onPopState:function(t){var e;if(this._cancelPop)this._cancelPop=!1;else if(this._handlers.length){e=t&&t.state,f.ZP.isString(e)?e=Rt.parseQueryString(e):e||(e=this.parseUrlQuery()||{});for(var n=0;n<this._handlers.length;n++)this._handlers[n](e)}}};function St(t){for(var e,n=[],o=0,i=-1,r=0;o<t.length;){e=t.charAt(o);var a=!r&&"."===e||e>="0"&&e<="9";a!==r&&(n[++i]="",r=a),n[i]+=e,o++}return n}var Lt={History:jt,humanFileSize:i(3378).s,computerFileSize:function(t){if("string"!=typeof t)return null;var e=t.toLowerCase().trim(),n=null,o=e.match(/^[\s+]?([0-9]*)(\.([0-9]+))?( +)?([kmgtp]?b?)$/i);return null===o?null:(n=parseFloat(e),isFinite(n)?(o[5]&&(n*={b:1,k:1024,kb:1024,mb:1048576,m:1048576,gb:1073741824,g:1073741824,tb:1099511627776,t:1099511627776,pb:0x4000000000000,p:0x4000000000000}[o[5]]),n=Math.round(n)):null)},formatDate:function(t,e){return void 0===window.TESTING&&console.warn("OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment"),e=e||"LLL",Ot()(t).format(e)},relativeModifiedDate:function(e){void 0===window.TESTING&&console.warn("OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment");var n=Ot()().diff(Ot()(e));return n>=0&&n<45e3?t("core","seconds ago"):Ot()(e).fromNow()},getScrollBarWidth:function(){if(this._scrollBarWidth)return this._scrollBarWidth;var t=document.createElement("p");t.style.width="100%",t.style.height="200px";var e=document.createElement("div");e.style.position="absolute",e.style.top="0px",e.style.left="0px",e.style.visibility="hidden",e.style.width="200px",e.style.height="150px",e.style.overflow="hidden",e.appendChild(t),document.body.appendChild(e);var n=t.offsetWidth;e.style.overflow="scroll";var o=t.offsetWidth;return n===o&&(o=e.clientWidth),document.body.removeChild(e),this._scrollBarWidth=n-o,this._scrollBarWidth},stripTime:function(t){return new Date(t.getFullYear(),t.getMonth(),t.getDate())},naturalSortCompare:function(t,e){var n,o=St(t),i=St(e);for(n=0;o[n]&&i[n];n++)if(o[n]!==i[n]){var r=Number(o[n]),a=Number(i[n]);return r==o[n]&&a==i[n]?r-a:o[n].localeCompare(i[n],Rt.getLanguage())}return o.length-i.length},waitFor:function(t,e){!function n(){!0!==t()&&setTimeout(n,e)}()},isCookieSetToValue:function(t,e){for(var n=document.cookie.split(";"),o=0;o<n.length;o++){var i=n[o].split("=");if(i[0].trim()===t&&i[1].trim()===e)return!0}return!1}},Nt=window._oc_debug,$t=window._oc_webroot;if(void 0===$t){var It=($t=location.pathname).indexOf("/index.php/");$t=-1!==It?$t.substr(0,It):$t.substr(0,$t.lastIndexOf("/"))}var Ut,Ft=$t,Rt={coreApps:["","admin","log","core/search","core","3rdparty"],menuSpeed:50,PERMISSION_ALL:31,PERMISSION_CREATE:4,PERMISSION_DELETE:8,PERMISSION_NONE:0,PERMISSION_READ:1,PERMISSION_SHARE:16,PERMISSION_UPDATE:2,TAG_FAVORITE:"_$!<Favorite>!$_",fileIsBlacklisted:function(t){return!!t.match(N.blacklist_files_regex)},addScript:function(t,e,n){var o;console.warn("OC.addScript is deprecated, use OCP.Loader.loadScript instead");var i=(0,c.generateFilePath)(t,"js",e+".js");return u[i]?n&&n():(o=l().Deferred(),l().getScript(i,(function(){return o.resolve()})),u[i]=o),u[i]},addStyle:function(t,e){console.warn("OC.addStyle is deprecated, use OCP.Loader.loadStylesheet instead");var n=(0,c.generateFilePath)(t,"css",e+".css");-1===d.indexOf(n)&&(d.push(n),document.createStyleSheet?document.createStyleSheet(n):(e=l()('<link rel="stylesheet" type="text/css" href="'+n+'"/>'),l()("head").append(e)))},Apps:g,AppConfig:w,appConfig:y,appSettings:function(e){if(console.warn("OC.appSettings is deprecated and will be removed with Nextcloud 18"),void 0===e||void 0===e.appid)throw{name:"MissingParameter",message:"The parameter appid is missing"};var n={scriptName:"settings.php",cache:!0};l().extend(n,e);var o=l()("#appsettings");if(0===o.length)throw{name:"MissingDOMElement",message:'There has be be an element with id "appsettings" for the popup to show.'};var i=l()("#appsettings_popup");if(0===i.length&&(l()("body").prepend('<div class="popup hidden" id="appsettings_popup"></div>'),(i=l()("#appsettings_popup")).addClass(o.hasClass("topright")?"topright":"bottomleft")),i.is(":visible"))i.hide().remove();else{var r=o.hasClass("topright")?"up":"left";l().get((0,c.generateFilePath)(n.appid,"",n.scriptName),(function(e){i.html(e).ready((function(){if(i.prepend('<span class="arrow '+r+'"></span><h2>'+t("core","Settings")+'</h2><a class="close"></a>').show(),i.find(".close").bind("click",(function(){i.remove()})),void 0!==n.loadJS){var e;if(!0===n.loadJS)e="settings.js";else{if("string"!=typeof n.loadJS)throw{name:"InvalidParameter",message:'The "loadJS" parameter must be either boolean or a string.'};e=n.loadJS}n.cache&&l().ajaxSetup({cache:!0}),l().getScript((0,c.generateFilePath)(n.appid,"js",e)).fail((function(t,e,n){throw n}))}})).show()}),"html")}},appswebroots:b,Backbone:S,ContactsMenu:z,config:N,currentUser:Z,dialogs:nt,EventSource:rt,getCurrentUser:function(){return{uid:Z,displayName:D}},isUserAdmin:function(){return ut},L10N:Ct,_ajaxConnectionLostHandler:m,_processAjaxError:function(t){(0!==t.status||"abort"!==t.statusText&&"timeout"!==t.statusText&&!Rt._reloadCalled)&&(f.ZP.contains([302,303,307,401],t.status)&&Rt.currentUser?setTimeout((function(){if(!Rt._userIsNavigatingAway&&!Rt._reloadCalled){var t=0,e=setInterval((function(){h.showUpdate(n("core","Problem loading page, reloading in %n second","Problem loading page, reloading in %n seconds",5-t)),t>=5&&(clearInterval(e),Rt.reload()),t++}),1e3);Rt._reloadCalled=!0}}),100):0===t.status&&setTimeout((function(){Rt._userIsNavigatingAway||Rt._reloadCalled||Rt._ajaxConnectionLostHandler()}),100))},registerXHRForErrorProcessing:function(t){t.addEventListener&&(t.addEventListener("load",(function(){4===t.readyState&&(t.status>=200&&t.status<300||304===t.status||l()(document).trigger(new(l().Event)("ajaxError"),t))})),t.addEventListener("error",(function(){l()(document).trigger(new(l().Event)("ajaxError"),t)})))},getCapabilities:function(){return console.warn("OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities"),(0,at.getCapabilities)()},hideMenus:ct,registerMenu:function(t,e,n,o){e.addClass("menu");var i="A"===t.prop("tagName")||"BUTTON"===t.prop("tagName");t.on(i?"click.menu":"click.menu keyup.menu",(function(i){i.preventDefault(),i.key&&"Enter"!==i.key||(e.is(st)?ct():(st&&ct(),!0===o&&e.parent().addClass("openedMenu"),t.attr("aria-expanded",!0),e.slideToggle(50,n),st=e,lt=t))}))},showMenu:function(t,e,n){e.is(st)||(ct(),st=e,lt=t,e.trigger(new(l().Event)("beforeShow")),e.show(),e.trigger(new(l().Event)("afterShow")),f.ZP.isFunction(n)&&n())},unregisterMenu:function(t,e){e.is(st)&&ct(),t.off("click.menu").removeClass("menutoggle"),e.removeClass("menu")},basename:L.EZ,encodePath:L.Ec,dirname:L.XX,isSamePath:L.Mg,joinPaths:L.RQ,getHost:function(){return window.location.host},getHostName:function(){return window.location.hostname},getPort:function(){return window.location.port},getProtocol:function(){return window.location.protocol.split(":")[0]},getCanonicalLocale:kt.getCanonicalLocale,getLocale:function(){var t;return null!==(t=l()("html").data("locale"))&&void 0!==t?t:"en"},getLanguage:function(){return l()("html").prop("lang")},addTranslations:Ct.load,buildQueryString:function(t){return t?l().map(t,(function(t,e){var n=encodeURIComponent(e);return null!=t&&(n+="="+encodeURIComponent(t)),n})).join("&"):""},parseQueryString:function(t){var e,n,o,i={};if(!t)return null;(e=t.indexOf("?"))>=0&&(t=t.substr(e+1));for(var r=t.replace(/\+/g,"%20").split("&"),a=0;a<r.length;a++){var s=r[a];(n=(e=s.indexOf("="))>=0?[s.substr(0,e),s.substr(e+1)]:[s]).length&&(o=decodeURIComponent(n[0]))&&(i[o]=n.length>1?decodeURIComponent(n[1]):null)}return i},msg:At,Notification:h,PasswordConfirmation:Tt,Plugins:{_plugins:{},register:function(t,e){var n=this._plugins[t];n||(n=this._plugins[t]=[]),n.push(e)},getPlugins:function(t){return this._plugins[t]||[]},attach:function(t,e,n){for(var o=this.getPlugins(t),i=0;i<o.length;i++)o[i].attach&&o[i].attach(e,n)},detach:function(t,e,n){for(var o=this.getPlugins(t),i=0;i<o.length;i++)o[i].detach&&o[i].detach(e,n)}},theme:Et,Util:Lt,debug:Nt,filePath:c.generateFilePath,generateUrl:c.generateUrl,get:(Ut=window,function(t){for(var e=t.split("."),n=e.pop(),o=0;o<e.length;o++)if(!(Ut=Ut[e[o]]))return!1;return Ut[n]}),set:function(t){return function(e,n){for(var o=e.split("."),i=o.pop(),r=0;r<o.length;r++)t[o[r]]||(t[o[r]]={}),t=t[o[r]];return t[i]=n,n}}(window),getRootPath:c.getRootUrl,imagePath:c.imagePath,redirect:function(t){window.location=t},reload:function(){window.location.reload()},requestToken:ot(),linkTo:c.linkTo,linkToOCS:function(t,e){return(0,c.generateOcsUrl)(t,{},{ocsVersion:e||1})+"/"},linkToRemote:c.generateRemoteUrl,linkToRemoteBase:function(t){return(0,c.getRootUrl)()+"/remote.php/"+t},webroot:Ft};(0,a.Ld)("csrf-token-update",(function(t){OC.requestToken=t.token,console.info("OC.requestToken changed",t.token)}));var Mt=i(16453),zt=i(17563),Bt=i(55586),Dt=i.n(Bt),Zt=i(22660),qt=i.n(Zt),Ht=i(10204),Yt=i.n(Ht),Kt=i(57290),Vt=i.n(Kt),Gt=i(10861),Jt=i.n(Gt),Wt={name:"LoginButton",components:{ArrowRight:i(45947).default,NcButton:Jt()},props:{value:{type:String,default:t("core","Log in")},valueLoading:{type:String,default:t("core","Logging in …")},loading:{type:Boolean,required:!0},invertedColors:{type:Boolean,default:!1}}},Qt=i(93379),Xt=i.n(Qt),te=i(7795),ee=i.n(te),ne=i(90569),oe=i.n(ne),ie=i(3565),re=i.n(ie),ae=i(19216),se=i.n(ae),le=i(44589),ce=i.n(le),ue=i(10786),de={};de.styleTagTransform=ce(),de.setAttributes=re(),de.insert=oe().bind(null,"head"),de.domAPI=ee(),de.insertStyleElement=se(),Xt()(ue.Z,de),ue.Z&&ue.Z.locals&&ue.Z.locals;var fe=i(51900),pe=(0,fe.Z)(Wt,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("NcButton",{attrs:{type:"primary","native-type":"submit",wide:!0},on:{click:function(e){return t.$emit("click")}},scopedSlots:t._u([{key:"icon",fn:function(){return[t.loading?n("div",{staticClass:"submit-wrapper__icon icon-loading-small-dark"}):n("ArrowRight",{staticClass:"submit-wrapper__icon"})]},proxy:!0}])},[t._v("\n\t"+t._s(t.loading?t.valueLoading:t.value)+"\n\t")])}),[],!1,null,"756414a8",null).exports,he={name:"LoginForm",components:{LoginButton:pe,NcPasswordField:qt(),NcTextField:Yt(),NcNoteCard:Vt()},props:{username:{type:String,default:""},redirectUrl:{type:[String,Boolean],default:!1},errors:{type:Array,default:function(){return[]}},messages:{type:Array,default:function(){return[]}},throttleDelay:{type:Number,default:0},autoCompleteAllowed:{type:Boolean,default:!0},directLogin:{type:Boolean,default:!1}},data:function(){return{loading:!1,timezone:Dt().determine().name(),timezoneOffset:-(new Date).getTimezoneOffset()/60,headline:t("core","Log in to {productName}",{productName:OC.theme.name}),user:"",password:""}},computed:{isError:function(){return this.invalidPassword||this.userDisabled||this.throttleDelay>5e3},errorLabel:function(){return this.invalidPassword?t("core","Wrong username or password."):this.userDisabled?t("core","User disabled"):this.throttleDelay>5e3?t("core","We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds."):void 0},apacheAuthFailed:function(){return-1!==this.errors.indexOf("apacheAuthFailed")},internalException:function(){return-1!==this.errors.indexOf("internalexception")},invalidPassword:function(){return-1!==this.errors.indexOf("invalidpassword")},userDisabled:function(){return-1!==this.errors.indexOf("userdisabled")},loadingIcon:function(){return(0,c.imagePath)("core","loading-dark.gif")},loginActionUrl:function(){return(0,c.generateUrl)("login")}},mounted:function(){""===this.username?this.$refs.user.$refs.inputField.$refs.input.focus():(this.user=this.username,this.$refs.password.$refs.inputField.$refs.input.focus())},methods:{updateUsername:function(){this.$emit("update:username",this.user)},submit:function(){this.loading=!0,this.$emit("submit")}}},me=i(6793),ge={};ge.styleTagTransform=ce(),ge.setAttributes=re(),ge.insert=oe().bind(null,"head"),ge.domAPI=ee(),ge.insertStyleElement=se(),Xt()(me.Z,ge),me.Z&&me.Z.locals&&me.Z.locals;var ve=(0,fe.Z)(he,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("form",{ref:"loginForm",staticClass:"login-form",attrs:{method:"post",name:"login",action:t.loginActionUrl},on:{submit:t.submit}},[n("fieldset",{staticClass:"login-form__fieldset",attrs:{"data-login-form":""}},[t.apacheAuthFailed?n("NcNoteCard",{attrs:{title:t.t("core","Server side authentication failed!"),type:"warning"}},[t._v("\n\t\t\t"+t._s(t.t("core","Please contact your administrator."))+"\n\t\t")]):t._e(),t._v(" "),t.messages.length>0?n("NcNoteCard",t._l(t.messages,(function(e,o){return n("div",{key:o},[t._v("\n\t\t\t\t"+t._s(e)),n("br")])})),0):t._e(),t._v(" "),t.internalException?n("NcNoteCard",{class:t.t("core","An internal error occurred."),attrs:{type:"warning"}},[t._v("\n\t\t\t"+t._s(t.t("core","Please try again or contact your administrator."))+"\n\t\t")]):t._e(),t._v(" "),n("div",{staticClass:"hidden",attrs:{id:"message"}},[n("img",{staticClass:"float-spinner",attrs:{alt:"",src:t.loadingIcon}}),t._v(" "),n("span",{attrs:{id:"messageText"}}),t._v(" "),n("div",{staticStyle:{clear:"both"}})]),t._v(" "),n("h2",{staticClass:"login-form__headline",attrs:{"data-login-form-headline":""},domProps:{innerHTML:t._s(t.headline)}}),t._v(" "),n("NcTextField",{ref:"user",class:{shake:t.invalidPassword},attrs:{id:"user",label:t.t("core","Account name or email"),"label-visible":!0,name:"user",value:t.user,autocapitalize:"none",spellchecking:!1,autocomplete:t.autoCompleteAllowed?"username":"off",required:"","data-login-form-input-user":""},on:{"update:value":function(e){t.user=e},change:t.updateUsername}}),t._v(" "),n("NcPasswordField",{ref:"password",class:{shake:t.invalidPassword},attrs:{id:"password",name:"password","label-visible":!0,value:t.password,spellchecking:!1,autocapitalize:"none",autocomplete:t.autoCompleteAllowed?"current-password":"off",label:t.t("core","Password"),"helper-text":t.errorLabel,error:t.isError,"data-login-form-input-password":"",required:""},on:{"update:value":function(e){t.password=e}}}),t._v(" "),n("LoginButton",{attrs:{"data-login-form-submit":"",loading:t.loading}}),t._v(" "),t.redirectUrl?n("input",{attrs:{type:"hidden",name:"redirect_url"},domProps:{value:t.redirectUrl}}):t._e(),t._v(" "),n("input",{attrs:{type:"hidden",name:"timezone"},domProps:{value:t.timezone}}),t._v(" "),n("input",{attrs:{type:"hidden",name:"timezone_offset"},domProps:{value:t.timezoneOffset}}),t._v(" "),n("input",{attrs:{type:"hidden",name:"requesttoken"},domProps:{value:t.OC.requestToken}}),t._v(" "),t.directLogin?n("input",{attrs:{type:"hidden",name:"direct",value:"1"}}):t._e()],1)])}),[],!1,null,"48dc6965",null).exports,ye=i(4820),we=i(2645),be=i(98283);function _e(t){return _e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},_e(t)}function Pe(t){return function(t){if(Array.isArray(t))return Ce(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return Ce(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ce(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Ce(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,o=new Array(e);n<e;n++)o[n]=t[n];return o}function ke(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,o)}return n}function Ae(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?ke(Object(n),!0).forEach((function(e){xe(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):ke(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function xe(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function Oe(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function Te(t,e){if(e&&("object"===_e(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}function Ee(t){var e="function"==typeof Map?new Map:void 0;return Ee=function(t){if(null===t||(n=t,-1===Function.toString.call(n).indexOf("[native code]")))return t;var n;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,o)}function o(){return je(t,arguments,Ne(this).constructor)}return o.prototype=Object.create(t.prototype,{constructor:{value:o,enumerable:!1,writable:!0,configurable:!0}}),Le(o,t)},Ee(t)}function je(t,e,n){return je=Se()?Reflect.construct:function(t,e,n){var o=[null];o.push.apply(o,e);var i=new(Function.bind.apply(t,o));return n&&Le(i,n.prototype),i},je.apply(null,arguments)}function Se(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}function Le(t,e){return Le=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},Le(t,e)}function Ne(t){return Ne=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},Ne(t)}var $e=function(t){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&Le(t,e)}(r,t);var e,n,o,i=(e=r,n=Se(),function(){var t,o=Ne(e);if(n){var i=Ne(this).constructor;t=Reflect.construct(o,arguments,i)}else t=o.apply(this,arguments);return Te(this,t)});function r(){return Oe(this,r),i.apply(this,arguments)}return o=r,Object.defineProperty(o,"prototype",{writable:!1}),o}(Ee(Error)),Ie={name:"PasswordLessLoginForm",components:{LoginButton:pe,InformationIcon:we.Z,LockOpenIcon:be.Z},props:{username:{type:String,default:""},redirectUrl:{type:[String,Boolean],default:!1},autoCompleteAllowed:{type:Boolean,default:!0},isHttps:{type:Boolean,default:!1},isLocalhost:{type:Boolean,default:!1},hasPublicKeyCredential:{type:Boolean,default:!1}},data:function(){return{user:this.username,loading:!1,validCredentials:!0}},methods:{authenticate:function(){var t=this;console.debug("passwordless login initiated"),this.getAuthenticationData(this.user).then((function(t){return console.debug(t),t})).then(this.sign).then(this.completeAuthentication).catch((function(e){e instanceof $e?t.validCredentials=!1:console.debug(e)}))},getAuthenticationData:function(t){var e,n,o=function(t){var e=(t=t.replace(/-/g,"+").replace(/_/g,"/")).length%4;if(e){if(1===e)throw new Error("InvalidLengthError: Input base64url string is the wrong length to determine padding");t+=new Array(5-e).join("=")}return window.atob(t)};return(e=t,n=(0,c.generateUrl)("/login/webauthn/start"),ye.default.post(n,{loginName:e}).then((function(t){return t.data}))).then((function(t){if(console.debug("Obtained PublicKeyCredentialRequestOptions"),console.debug(t),!Object.prototype.hasOwnProperty.call(t,"allowCredentials"))throw console.debug("No credentials found."),new $e;return t.challenge=Uint8Array.from(o(t.challenge),(function(t){return t.charCodeAt(0)})),t.allowCredentials=t.allowCredentials.map((function(t){return Ae(Ae({},t),{},{id:Uint8Array.from(o(t.id),(function(t){return t.charCodeAt(0)}))})})),console.debug("Converted PublicKeyCredentialRequestOptions"),console.debug(t),t})).catch((function(t){throw console.debug("Error while obtaining data"),t}))},sign:function(t){var e=function(t){return window.btoa(String.fromCharCode.apply(String,Pe(t)))};return navigator.credentials.get({publicKey:t}).then((function(t){return console.debug(t),console.debug(new Uint8Array(t.rawId)),console.debug(e(new Uint8Array(t.rawId))),{id:t.id,type:t.type,rawId:e(new Uint8Array(t.rawId)),response:{authenticatorData:e(new Uint8Array(t.response.authenticatorData)),clientDataJSON:e(new Uint8Array(t.response.clientDataJSON)),signature:e(new Uint8Array(t.response.signature)),userHandle:t.response.userHandle?(n=new Uint8Array(t.response.userHandle),String.fromCharCode.apply(String,Pe(n))):null}};var n})).then((function(t){return console.debug(t),t})).catch((function(t){console.debug("GOT AN ERROR!"),console.debug(t)}))},completeAuthentication:function(t){console.debug("TIME TO COMPLETE");var e,n,o=this.redirectUrl;return(e=JSON.stringify(t),n=(0,c.generateUrl)("/login/webauthn/finish"),ye.default.post(n,{data:e}).then((function(t){return t.data}))).then((function(t){var e=t.defaultRedirectUrl;console.debug("Logged in redirecting"),window.location.href=o||e})).catch((function(t){console.debug("GOT AN ERROR WHILE SUBMITTING CHALLENGE!"),console.debug(t)}))},submit:function(){}}},Ue=i(98491),Fe={};Fe.styleTagTransform=ce(),Fe.setAttributes=re(),Fe.insert=oe().bind(null,"head"),Fe.domAPI=ee(),Fe.insertStyleElement=se(),Xt()(Ue.Z,Fe),Ue.Z&&Ue.Z.locals&&Ue.Z.locals;var Re=(0,fe.Z)(Ie,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return(t.isHttps||t.isLocalhost)&&t.hasPublicKeyCredential?n("form",{ref:"loginForm",attrs:{method:"post",name:"login"},on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[n("fieldset",[n("p",{staticClass:"grouptop groupbottom"},[n("label",{staticClass:"infield",attrs:{for:"user"}},[t._v(t._s(t.t("core","Username or\temail")))]),t._v(" "),n("input",{directives:[{name:"model",rawName:"v-model",value:t.user,expression:"user"}],ref:"user",attrs:{id:"user",type:"text",name:"user",autocomplete:t.autoCompleteAllowed?"on":"off",placeholder:t.t("core","Username or email"),"aria-label":t.t("core","Username or email"),required:""},domProps:{value:t.user},on:{change:function(e){return t.$emit("update:username",t.user)},input:function(e){e.target.composing||(t.user=e.target.value)}}})]),t._v(" "),t.validCredentials?t._e():n("div",{staticClass:"body-login-container update form__message-box"},[t._v("\n\t\t\t"+t._s(t.t("core","Your account is not setup for passwordless login."))+"\n\t\t")]),t._v(" "),t.validCredentials?n("LoginButton",{attrs:{loading:t.loading},on:{click:t.authenticate}}):t._e()],1)]):t.hasPublicKeyCredential?t.isHttps||t.isLocalhost?t._e():n("div",{staticClass:"body-login-container update"},[n("LockOpenIcon",{attrs:{size:"70"}}),t._v(" "),n("h2",[t._v(t._s(t.t("core","Your connection is not secure")))]),t._v(" "),n("p",{staticClass:"infogroup"},[t._v("\n\t\t"+t._s(t.t("core","Passwordless authentication is only available over a secure connection."))+"\n\t")])],1):n("div",{staticClass:"body-login-container update"},[n("InformationIcon",{attrs:{size:"70"}}),t._v(" "),n("h2",[t._v(t._s(t.t("core","Browser not supported")))]),t._v(" "),n("p",{staticClass:"infogroup"},[t._v("\n\t\t"+t._s(t.t("core","Passwordless authentication is not supported in your browser."))+"\n\t")])],1)}),[],!1,null,"20256748",null),Me=Re.exports,ze={name:"ResetPassword",components:{LoginButton:pe,NcNoteCard:Vt(),NcTextField:Yt()},props:{username:{type:String,required:!0},resetPasswordLink:{type:String,required:!0}},data:function(){return{error:!1,loading:!1,message:void 0,user:this.username}},watch:{username:function(t){this.user=t}},methods:{updateUsername:function(){this.$emit("update:username",this.user)},submit:function(){var t=this;this.loading=!0,this.error=!1,this.message="";var e=(0,c.generateUrl)("/lostpassword/email"),n={user:this.user};return ye.default.post(e,n).then((function(t){return t.data})).then((function(e){if("success"!==e.status)throw new Error("got status ".concat(e.status));t.message="send-success"})).catch((function(e){console.error("could not send reset email request",e),t.error=!0,t.message="send-error"})).then((function(){t.loading=!1}))}}},Be=i(38566),De={};De.styleTagTransform=ce(),De.setAttributes=re(),De.insert=oe().bind(null,"head"),De.domAPI=ee(),De.insertStyleElement=se(),Xt()(Be.Z,De),Be.Z&&Be.Z.locals&&Be.Z.locals;var Ze=(0,fe.Z)(ze,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("form",{staticClass:"login-form",on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[n("fieldset",{staticClass:"login-form__fieldset"},[n("NcTextField",{attrs:{id:"user",value:t.user,name:"user",autocapitalize:"off",label:t.t("core","Account name or email"),"label-visible":!0,required:""},on:{"update:value":function(e){t.user=e},change:t.updateUsername}}),t._v(" "),n("LoginButton",{attrs:{value:t.t("core","Reset password")}}),t._v(" "),"send-success"===t.message?n("NcNoteCard",{attrs:{type:"success"}},[t._v("\n\t\t\t"+t._s(t.t("core","A password reset message has been sent to the email address of this account. If you do not receive it, check your spam/junk folders or ask your local administrator for help."))+"\n\t\t\t"),n("br"),t._v("\n\t\t\t"+t._s(t.t("core","If it is not there ask your local administrator."))+"\n\t\t")]):"send-error"===t.message?n("NcNoteCard",{attrs:{type:"error"}},[t._v("\n\t\t\t"+t._s(t.t("core","Couldn't send reset email. Please contact your administrator."))+"\n\t\t")]):"reset-error"===t.message?n("NcNoteCard",{attrs:{type:"error"}},[t._v("\n\t\t\t"+t._s(t.t("core","Password cannot be changed. Please contact your administrator."))+"\n\t\t")]):t._e(),t._v(" "),n("a",{staticClass:"login-form__link",attrs:{href:"#"},on:{click:function(e){return e.preventDefault(),t.$emit("abort")}}},[t._v("\n\t\t\t"+t._s(t.t("core","Back to login"))+"\n\t\t")])],1)])}),[],!1,null,"27cabc60",null),qe=Ze.exports;function He(t,e,n,o,i,r,a){try{var s=t[r](a),l=s.value}catch(t){return void n(t)}s.done?e(l):Promise.resolve(l).then(o,i)}var Ye={name:"UpdatePassword",components:{LoginButton:pe},props:{username:{type:String,required:!0},resetPasswordTarget:{type:String,required:!0}},data:function(){return{error:!1,loading:!1,message:void 0,user:this.username,password:"",encrypted:!1,proceed:!1}},watch:{username:function(t){this.user=t}},methods:{submit:function(){var e,n=this;return(e=regeneratorRuntime.mark((function e(){var o,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.loading=!0,n.error=!1,n.message="",e.prev=3,e.next=6,ye.default.post(n.resetPasswordTarget,{password:n.password,proceed:n.proceed});case 6:if(o=e.sent,!(i=o.data)||"success"!==i.status){e.next=14;break}n.message="send-success",n.$emit("update:username",n.user),n.$emit("done"),e.next=23;break;case 14:if(!i||!i.encryption){e.next=18;break}n.encrypted=!0,e.next=23;break;case 18:if(!i||!i.msg){e.next=22;break}throw new Error(i.msg);case 22:throw new Error;case 23:e.next=29;break;case 25:e.prev=25,e.t0=e.catch(3),n.error=!0,n.message=e.t0.message?e.t0.message:t("core","Password cannot be changed. Please contact your administrator.");case 29:return e.prev=29,n.loading=!1,e.finish(29);case 32:case"end":return e.stop()}}),e,null,[[3,25,29,32]])})),function(){var t=this,n=arguments;return new Promise((function(o,i){var r=e.apply(t,n);function a(t){He(r,o,i,a,s,"next",t)}function s(t){He(r,o,i,a,s,"throw",t)}a(void 0)}))})()}}},Ke=Ye,Ve=i(52033),Ge={};Ge.styleTagTransform=ce(),Ge.setAttributes=re(),Ge.insert=oe().bind(null,"head"),Ge.domAPI=ee(),Ge.insertStyleElement=se(),Xt()(Ve.Z,Ge),Ve.Z&&Ve.Z.locals&&Ve.Z.locals;var Je=(0,fe.Z)(Ke,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("form",{on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[n("fieldset",[n("p",[n("label",{staticClass:"infield",attrs:{for:"password"}},[t._v(t._s(t.t("core","New password")))]),t._v(" "),n("input",{directives:[{name:"model",rawName:"v-model",value:t.password,expression:"password"}],attrs:{id:"password",type:"password",name:"password",autocomplete:"new-password",autocapitalize:"none",autocorrect:"off",required:"",placeholder:t.t("core","New password")},domProps:{value:t.password},on:{input:function(e){e.target.composing||(t.password=e.target.value)}}})]),t._v(" "),t.encrypted?n("div",{staticClass:"update"},[n("p",[t._v("\n\t\t\t\t"+t._s(t.t("core","Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?"))+"\n\t\t\t")]),t._v(" "),n("input",{directives:[{name:"model",rawName:"v-model",value:t.proceed,expression:"proceed"}],staticClass:"checkbox",attrs:{id:"encrypted-continue",type:"checkbox"},domProps:{checked:Array.isArray(t.proceed)?t._i(t.proceed,null)>-1:t.proceed},on:{change:function(e){var n=t.proceed,o=e.target,i=!!o.checked;if(Array.isArray(n)){var r=t._i(n,null);o.checked?r<0&&(t.proceed=n.concat([null])):r>-1&&(t.proceed=n.slice(0,r).concat(n.slice(r+1)))}else t.proceed=i}}}),t._v(" "),n("label",{attrs:{for:"encrypted-continue"}},[t._v("\n\t\t\t\t"+t._s(t.t("core","I know what I'm doing"))+"\n\t\t\t")])]):t._e(),t._v(" "),n("LoginButton",{attrs:{loading:t.loading,value:t.t("core","Reset password"),"value-loading":t.t("core","Resetting password")}}),t._v(" "),t.error&&t.message?n("p",{class:{warning:t.error}},[t._v("\n\t\t\t"+t._s(t.message)+"\n\t\t")]):t._e()],1)])}),[],!1,null,"4dc21d74",null),We=Je.exports,Qe=zt.parse(location.search);if("1"===Qe.clear)try{window.localStorage.clear(),window.sessionStorage.clear(),console.debug("Browser storage cleared")}catch(t){console.error("Could not clear browser storage",t)}var Xe={name:"Login",components:{LoginForm:ve,PasswordLessLoginForm:Me,ResetPassword:qe,UpdatePassword:We,NcButton:Jt(),NcNoteCard:Vt()},data:function(){return{loading:!1,user:(0,Mt.loadState)("core","loginUsername",""),passwordlessLogin:!1,resetPassword:!1,errors:(0,Mt.loadState)("core","loginErrors",[]),messages:(0,Mt.loadState)("core","loginMessages",[]),redirectUrl:(0,Mt.loadState)("core","loginRedirectUrl",!1),throttleDelay:(0,Mt.loadState)("core","loginThrottleDelay",0),canResetPassword:(0,Mt.loadState)("core","loginCanResetPassword",!1),resetPasswordLink:(0,Mt.loadState)("core","loginResetPasswordLink",""),autoCompleteAllowed:(0,Mt.loadState)("core","loginAutocomplete",!0),resetPasswordTarget:(0,Mt.loadState)("core","resetPasswordTarget",""),resetPasswordUser:(0,Mt.loadState)("core","resetPasswordUser",""),directLogin:"1"===Qe.direct,hasPasswordless:(0,Mt.loadState)("core","webauthn-available",!1),countAlternativeLogins:(0,Mt.loadState)("core","countAlternativeLogins",!1),alternativeLogins:(0,Mt.loadState)("core","alternativeLogins",[]),isHttps:"https:"===window.location.protocol,isLocalhost:"localhost"===window.location.hostname,hasPublicKeyCredential:void 0!==window.PublicKeyCredential,hideLoginForm:(0,Mt.loadState)("core","hideLoginForm",!1)}},methods:{passwordResetFinished:function(){this.resetPasswordTarget="",this.directLogin=!0},goTo:function(t){window.location.href=t}}},tn=i(58820),en={};en.styleTagTransform=ce(),en.setAttributes=re(),en.insert=oe().bind(null,"head"),en.domAPI=ee(),en.insertStyleElement=se(),Xt()(tn.Z,en),tn.Z&&tn.Z.locals&&tn.Z.locals;var nn=(0,fe.Z)(Xe,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"guest-box login-box"},[!t.hideLoginForm||t.directLogin?n("div",[n("transition",{attrs:{name:"fade",mode:"out-in"}},[t.passwordlessLogin||t.resetPassword||""!==t.resetPasswordTarget?!t.loading&&t.passwordlessLogin?n("div",{key:"reset",staticClass:"login-additional"},[n("PasswordLessLoginForm",{attrs:{username:t.user,"redirect-url":t.redirectUrl,"auto-complete-allowed":t.autoCompleteAllowed,"is-https":t.isHttps,"is-localhost":t.isLocalhost,"has-public-key-credential":t.hasPublicKeyCredential},on:{"update:username":function(e){t.user=e},submit:function(e){t.loading=!0}}}),t._v(" "),n("a",{staticClass:"login-box__link",attrs:{href:"#"},on:{click:function(e){e.preventDefault(),t.passwordlessLogin=!1}}},[t._v("\n\t\t\t\t\t"+t._s(t.t("core","Back"))+"\n\t\t\t\t")])],1):!t.loading&&t.canResetPassword?n("div",{key:"reset",staticClass:"login-additional"},[n("div",{staticClass:"lost-password-container"},[t.resetPassword?n("ResetPassword",{attrs:{username:t.user,"reset-password-link":t.resetPasswordLink},on:{"update:username":function(e){t.user=e},abort:function(e){t.resetPassword=!1}}}):t._e()],1)]):""!==t.resetPasswordTarget?n("div",[n("UpdatePassword",{attrs:{username:t.user,"reset-password-target":t.resetPasswordTarget},on:{"update:username":function(e){t.user=e},done:t.passwordResetFinished}})],1):t._e():n("div",[n("LoginForm",{attrs:{username:t.user,"redirect-url":t.redirectUrl,"direct-login":t.directLogin,messages:t.messages,errors:t.errors,"throttle-delay":t.throttleDelay,"auto-complete-allowed":t.autoCompleteAllowed},on:{"update:username":function(e){t.user=e},submit:function(e){t.loading=!0}}}),t._v(" "),t.canResetPassword&&""!==t.resetPasswordLink?n("a",{staticClass:"login-box__link",attrs:{id:"lost-password",href:t.resetPasswordLink}},[t._v("\n\t\t\t\t\t"+t._s(t.t("core","Forgot password?"))+"\n\t\t\t\t")]):t.canResetPassword&&!t.resetPassword?n("a",{staticClass:"login-box__link",attrs:{id:"lost-password",href:t.resetPasswordLink},on:{click:function(e){e.preventDefault(),t.resetPassword=!0}}},[t._v("\n\t\t\t\t\t"+t._s(t.t("core","Forgot password?"))+"\n\t\t\t\t")]):t._e(),t._v(" "),t.hasPasswordless?[t.countAlternativeLogins?n("div",{staticClass:"alternative-logins"},[t.hasPasswordless?n("a",{staticClass:"button",class:{"single-alt-login-option":t.countAlternativeLogins},attrs:{href:"#"},on:{click:function(e){e.preventDefault(),t.passwordlessLogin=!0}}},[t._v("\n\t\t\t\t\t\t\t"+t._s(t.t("core","Log in with a device"))+"\n\t\t\t\t\t\t")]):t._e()]):n("a",{attrs:{href:"#"},on:{click:function(e){e.preventDefault(),t.passwordlessLogin=!0}}},[t._v("\n\t\t\t\t\t\t"+t._s(t.t("core","Log in with a device"))+"\n\t\t\t\t\t")])]:t._e()],2)])],1):n("div",[n("transition",{attrs:{name:"fade",mode:"out-in"}},[n("NcNoteCard",{attrs:{type:"warning",title:t.t("core","Login form is disabled.")}},[t._v("\n\t\t\t\t"+t._s(t.t("core","Please contact your administrator."))+"\n\t\t\t")])],1)],1),t._v(" "),n("div",{staticClass:"alternative-logins",attrs:{id:"alternative-logins"}},t._l(t.alternativeLogins,(function(e,o){return n("NcButton",{key:o,class:[e.class],attrs:{type:"secondary",wide:!0,role:"link",href:e.href},on:{click:function(n){return t.goTo(e.href)}}},[t._v("\n\t\t\t"+t._s(e.name)+"\n\t\t")])})),1)])}),[],!1,null,null,null).exports,on={data:function(){return{OC:Rt}},methods:{t:Ct.translate.bind(Ct),n:Ct.translatePlural.bind(Ct)}};r.ZP.mixin(on),(new(r.ZP.extend(nn))).$mount("#login")},10786:function(t,e,n){"use strict";var o=n(87537),i=n.n(o),r=n(23645),a=n.n(r)()(i());a.push([t.id,".button-vue[data-v-756414a8]{margin-top:.5rem}","",{version:3,sources:["webpack://./core/src/components/login/LoginButton.vue"],names:[],mappings:"AAkEA,6BACC,gBAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.button-vue {\n\tmargin-top: .5rem;\n}\n"],sourceRoot:""}]),e.Z=a},6793:function(t,e,n){"use strict";var o=n(87537),i=n.n(o),r=n(23645),a=n.n(r)()(i());a.push([t.id,".login-form[data-v-48dc6965]{text-align:left;font-size:1rem}.login-form__fieldset[data-v-48dc6965]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__headline[data-v-48dc6965]{text-align:center}","",{version:3,sources:["webpack://./core/src/components/login/LoginForm.vue"],names:[],mappings:"AAoOA,6BACC,eAAA,CACA,cAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,uCACC,iBAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.login-form {\n\ttext-align: left;\n\tfont-size: 1rem;\n\n\t&__fieldset {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: .5rem;\n\t}\n\n\t&__headline {\n\t\ttext-align: center;\n\t}\n}\n"],sourceRoot:""}]),e.Z=a},98491:function(t,e,n){"use strict";var o=n(87537),i=n.n(o),r=n(23645),a=n.n(r)()(i());a.push([t.id,".body-login-container.update[data-v-20256748]{margin:15px 0}.body-login-container.update.form__message-box[data-v-20256748]{width:240px;margin:5px}","",{version:3,sources:["webpack://./core/src/components/login/PasswordLessLoginForm.vue"],names:[],mappings:"AA+NA,8CACC,aAAA,CAEA,gEACC,WAAA,CACA,UAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.body-login-container.update {\n\tmargin: 15px 0;\n\n\t&.form__message-box {\n\t\twidth: 240px;\n\t\tmargin: 5px;\n\t}\n}\n"],sourceRoot:""}]),e.Z=a},38566:function(t,e,n){"use strict";var o=n(87537),i=n.n(o),r=n(23645),a=n.n(r)()(i());a.push([t.id,".login-form[data-v-27cabc60]{text-align:left;font-size:1rem}.login-form__fieldset[data-v-27cabc60]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__link[data-v-27cabc60]{display:block;font-weight:normal !important;padding-bottom:1rem;cursor:pointer;font-size:var(--default-font-size);text-align:center;padding:.5rem 1rem 1rem 1rem}","",{version:3,sources:["webpack://./core/src/components/login/ResetPassword.vue"],names:[],mappings:"AAmIA,6BACC,eAAA,CACA,cAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,mCACC,aAAA,CACA,6BAAA,CACA,mBAAA,CACA,cAAA,CACA,kCAAA,CACA,iBAAA,CACA,4BAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.login-form {\n\ttext-align: left;\n\tfont-size: 1rem;\n\n\t&__fieldset {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: .5rem;\n\t}\n\n\t&__link {\n\t\tdisplay: block;\n\t\tfont-weight: normal !important;\n\t\tpadding-bottom: 1rem;\n\t\tcursor: pointer;\n\t\tfont-size: var(--default-font-size);\n\t\ttext-align: center;\n\t\tpadding: .5rem 1rem 1rem 1rem;\n\t}\n}\n"],sourceRoot:""}]),e.Z=a},58820:function(t,e,n){"use strict";var o=n(87537),i=n.n(o),r=n(23645),a=n.n(r)()(i());a.push([t.id,"body{font-size:var(--default-font-size)}.login-box{width:300px}.login-box__link{display:block;padding:1rem;font-size:var(--default-font-size);text-align:center;font-weight:normal !important}.fade-enter-active,.fade-leave-active{transition:opacity .3s}.fade-enter,.fade-leave-to{opacity:0}.alternative-logins{display:flex;flex-direction:column;gap:.75rem}.alternative-logins .button-vue{box-sizing:border-box}","",{version:3,sources:["webpack://./core/src/views/Login.vue"],names:[],mappings:"AAkMA,KACC,kCAAA,CAGD,WACC,WAAA,CAEA,iBACC,aAAA,CACA,YAAA,CACA,kCAAA,CACA,iBAAA,CACA,6BAAA,CAGF,sCACC,sBAAA,CAED,2BACC,SAAA,CAGD,oBACC,YAAA,CACA,qBAAA,CACA,UAAA,CAEA,gCACC,qBAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nbody {\n\tfont-size: var(--default-font-size);\n}\n\n.login-box {\n\twidth: 300px;\n\n\t&__link {\n\t\tdisplay: block;\n\t\tpadding: 1rem;\n\t\tfont-size: var(--default-font-size);\n\t\ttext-align: center;\n\t\tfont-weight: normal !important;\n\t}\n}\n.fade-enter-active, .fade-leave-active {\n\ttransition: opacity .3s;\n}\n.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\n\topacity: 0;\n}\n\n.alternative-logins {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 0.75rem;\n\n\t.button-vue {\n\t\tbox-sizing: border-box;\n\t}\n}\n"],sourceRoot:""}]),e.Z=a},52033:function(t,e,n){"use strict";var o=n(87537),i=n.n(o),r=n(23645),a=n.n(r)()(i());a.push([t.id,"\nfieldset[data-v-4dc21d74] {\n\ttext-align: center;\n}\ninput[type=submit][data-v-4dc21d74] {\n\tmargin-top: 20px;\n}\n","",{version:3,sources:["webpack://./core/src/components/login/UpdatePassword.vue"],names:[],mappings:";AAmIA;CACA,kBAAA;AACA;AAEA;CACA,gBAAA;AACA",sourcesContent:["\x3c!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n --\x3e\n\n<template>\n\t<form @submit.prevent=\"submit\">\n\t\t<fieldset>\n\t\t\t<p>\n\t\t\t\t<label for=\"password\" class=\"infield\">{{ t('core', 'New password') }}</label>\n\t\t\t\t<input id=\"password\"\n\t\t\t\t\tv-model=\"password\"\n\t\t\t\t\ttype=\"password\"\n\t\t\t\t\tname=\"password\"\n\t\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t\tautocorrect=\"off\"\n\t\t\t\t\trequired\n\t\t\t\t\t:placeholder=\"t('core', 'New password')\">\n\t\t\t</p>\n\n\t\t\t<div v-if=\"encrypted\" class=\"update\">\n\t\t\t\t<p>\n\t\t\t\t\t{{ t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?') }}\n\t\t\t\t</p>\n\t\t\t\t<input id=\"encrypted-continue\"\n\t\t\t\t\tv-model=\"proceed\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\tclass=\"checkbox\">\n\t\t\t\t<label for=\"encrypted-continue\">\n\t\t\t\t\t{{ t('core', 'I know what I\\'m doing') }}\n\t\t\t\t</label>\n\t\t\t</div>\n\n\t\t\t<LoginButton :loading=\"loading\"\n\t\t\t\t:value=\"t('core', 'Reset password')\"\n\t\t\t\t:value-loading=\"t('core', 'Resetting password')\" />\n\n\t\t\t<p v-if=\"error && message\" :class=\"{warning: error}\">\n\t\t\t\t{{ message }}\n\t\t\t</p>\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport Axios from '@nextcloud/axios'\nimport LoginButton from './LoginButton.vue'\n\nexport default {\n\tname: 'UpdatePassword',\n\tcomponents: {\n\t\tLoginButton,\n\t},\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tresetPasswordTarget: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\terror: false,\n\t\t\tloading: false,\n\t\t\tmessage: undefined,\n\t\t\tuser: this.username,\n\t\t\tpassword: '',\n\t\t\tencrypted: false,\n\t\t\tproceed: false,\n\t\t}\n\t},\n\twatch: {\n\t\tusername(value) {\n\t\t\tthis.user = value\n\t\t},\n\t},\n\tmethods: {\n\t\tasync submit() {\n\t\t\tthis.loading = true\n\t\t\tthis.error = false\n\t\t\tthis.message = ''\n\n\t\t\ttry {\n\t\t\t\tconst { data } = await Axios.post(this.resetPasswordTarget, {\n\t\t\t\t\tpassword: this.password,\n\t\t\t\t\tproceed: this.proceed,\n\t\t\t\t})\n\t\t\t\tif (data && data.status === 'success') {\n\t\t\t\t\tthis.message = 'send-success'\n\t\t\t\t\tthis.$emit('update:username', this.user)\n\t\t\t\t\tthis.$emit('done')\n\t\t\t\t} else if (data && data.encryption) {\n\t\t\t\t\tthis.encrypted = true\n\t\t\t\t} else if (data && data.msg) {\n\t\t\t\t\tthrow new Error(data.msg)\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error()\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tthis.error = true\n\t\t\t\tthis.message = e.message ? e.message : t('core', 'Password cannot be changed. Please contact your administrator.')\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n<\/script>\n\n<style scoped>\n\tfieldset {\n\t\ttext-align: center;\n\t}\n\n\tinput[type=submit] {\n\t\tmargin-top: 20px;\n\t}\n</style>\n"],sourceRoot:""}]),e.Z=a},10944:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({1:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(r=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(r=null!=e?a(e,"contact"):e)?a(r,"profileUrl"):r,{name:"if",hash:{},fn:t.program(2,i,0),inverse:t.program(5,i,0),data:i,loc:{start:{line:2,column:1},end:{line:10,column:8}}}))?r:""},2:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(r=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(r=null!=e?a(e,"contact"):e)?a(r,"profileTitle"):r,{name:"if",hash:{},fn:t.program(3,i,0),inverse:t.noop,data:i,loc:{start:{line:3,column:2},end:{line:7,column:9}}}))?r:""},3:function(t,e,n,o,i){var r,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t\t<a class="profile-link--avatar" href="'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"profileUrl"):r,e))+'">\n\t\t\t\t<img src="'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatar"):r,e))+'&size=32" class="avatar" srcset="'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatar"):r,e))+"&size=32 1x, "+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatar"):r,e))+"&size=64 2x, "+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatar"):r,e))+'&size=128 4x" alt="">\n\t\t\t</a>\n'},5:function(t,e,n,o,i){var r,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t<img src="'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatar"):r,e))+'&size=32" class="avatar" srcset="'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatar"):r,e))+"&size=32 1x, "+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatar"):r,e))+"&size=64 2x, "+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"avatar"):r,e))+'&size=128 4x" alt="">\n'},7:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(r=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(r=null!=e?a(e,"contact"):e)?a(r,"profileUrl"):r,{name:"if",hash:{},fn:t.program(8,i,0),inverse:t.program(11,i,0),data:i,loc:{start:{line:12,column:1},end:{line:20,column:8}}}))?r:""},8:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(r=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(r=null!=e?a(e,"contact"):e)?a(r,"profileTitle"):r,{name:"if",hash:{},fn:t.program(9,i,0),inverse:t.noop,data:i,loc:{start:{line:13,column:2},end:{line:17,column:9}}}))?r:""},9:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t\t<a class="profile-link--avatar" href="'+t.escapeExpression(t.lambda(null!=(r=null!=e?a(e,"contact"):e)?a(r,"profileUrl"):r,e))+'">\n\t\t\t\t<div class="avatar"></div>\n\t\t\t</a>\n'},11:function(t,e,n,o,i){return'\t\t<div class="avatar"></div>\n'},13:function(t,e,n,o,i){var r,a=null!=e?e:t.nullContext||{},s=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return(null!=(r=s(n,"if").call(a,null!=(r=null!=e?s(e,"contact"):e)?s(r,"profileTitle"):r,{name:"if",hash:{},fn:t.program(14,i,0),inverse:t.noop,data:i,loc:{start:{line:23,column:1},end:{line:29,column:8}}}))?r:"")+(null!=(r=s(n,"if").call(a,null!=(r=null!=e?s(e,"contact"):e)?s(r,"topAction"):r,{name:"if",hash:{},fn:t.program(16,i,0),inverse:t.noop,data:i,loc:{start:{line:30,column:1},end:{line:34,column:8}}}))?r:"")},14:function(t,e,n,o,i){var r,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t<a class="body profile-link--full-name" href="'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"profileUrl"):r,e))+'">\n\t\t\t<div class="full-name">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"fullName"):r,e))+'</div>\n\t\t\t<div class="last-message">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"lastMessage"):r,e))+'</div>\n\t\t\t<div class="email-address">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"emailAddresses"):r,e))+"</div>\n\t\t</a>\n"},16:function(t,e,n,o,i){var r,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t<a class="top-action" href="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"hyperlink"):r,e))+'" title="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"title"):r,e))+'">\n\t\t\t<img src="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"icon"):r,e))+'" alt="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"title"):r,e))+'">\n\t\t</a>\n'},18:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(r=a(n,"if").call(null!=e?e:t.nullContext||{},null!=(r=null!=e?a(e,"contact"):e)?a(r,"topAction"):r,{name:"if",hash:{},fn:t.program(19,i,0),inverse:t.program(21,i,0),data:i,loc:{start:{line:35,column:0},end:{line:50,column:0}}}))?r:""},19:function(t,e,n,o,i){var r,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t<a class="body" href="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"hyperlink"):r,e))+'">\n\t\t<div class="full-name">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"fullName"):r,e))+'</div>\n\t\t<div class="last-message">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"lastMessage"):r,e))+'</div>\n\t\t<div class="email-address">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"emailAddresses"):r,e))+'</div>\n\t</a>\n \t<a class="top-action" href="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"hyperlink"):r,e))+'" title="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"title"):r,e))+'">\n \t\t<img src="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"icon"):r,e))+'" alt="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"topAction"):r)?l(r,"title"):r,e))+'">\n\t</a>\n'},21:function(t,e,n,o,i){var r,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t<div class="body">\n\t\t<div class="full-name">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"fullName"):r,e))+'</div>\n\t\t<div class="last-message">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"lastMessage"):r,e))+'</div>\n\t\t<div class="email-address">'+s(a(null!=(r=null!=e?l(e,"contact"):e)?l(r,"emailAddresses"):r,e))+"</div>\n\t</div>\n"},23:function(t,e,n,o,i){var r,a=t.lambda,s=t.escapeExpression,l=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<a class="second-action" href="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"secondAction"):r)?l(r,"hyperlink"):r,e))+'" title="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"secondAction"):r)?l(r,"title"):r,e))+'">\n\t<img src="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"secondAction"):r)?l(r,"icon"):r,e))+'" alt="'+s(a(null!=(r=null!=(r=null!=e?l(e,"contact"):e)?l(r,"secondAction"):r)?l(r,"title"):r,e))+'">\n</a>\n'},25:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t<button class="other-actions icon-more"></button>\n\t<div class="menu popovermenu">\n\t\t<ul>\n'+(null!=(r=a(n,"each").call(null!=e?e:t.nullContext||{},null!=(r=null!=e?a(e,"contact"):e)?a(r,"actions"):r,{name:"each",hash:{},fn:t.program(26,i,0),inverse:t.noop,data:i,loc:{start:{line:60,column:3},end:{line:67,column:12}}}))?r:"")+"\t\t</ul>\n\t</div>\n"},26:function(t,e,n,o,i){var r,a=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'\t\t\t<li>\n\t\t\t\t<a href="'+c(typeof(r=null!=(r=u(n,"hyperlink")||(null!=e?u(e,"hyperlink"):e))?r:s)===l?r.call(a,{name:"hyperlink",hash:{},data:i,loc:{start:{line:62,column:13},end:{line:62,column:26}}}):r)+'">\n\t\t\t\t\t<img src="'+c(typeof(r=null!=(r=u(n,"icon")||(null!=e?u(e,"icon"):e))?r:s)===l?r.call(a,{name:"icon",hash:{},data:i,loc:{start:{line:63,column:15},end:{line:63,column:23}}}):r)+'" alt="">\n\t\t\t\t\t<span>'+c(typeof(r=null!=(r=u(n,"title")||(null!=e?u(e,"title"):e))?r:s)===l?r.call(a,{name:"title",hash:{},data:i,loc:{start:{line:64,column:11},end:{line:64,column:20}}}):r)+"</span>\n\t\t\t\t</a>\n\t\t\t</li>\n"},compiler:[8,">= 4.3.0"],main:function(t,e,n,o,i){var r,a=null!=e?e:t.nullContext||{},s=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return(null!=(r=s(n,"if").call(a,null!=(r=null!=e?s(e,"contact"):e)?s(r,"avatar"):r,{name:"if",hash:{},fn:t.program(1,i,0),inverse:t.program(7,i,0),data:i,loc:{start:{line:1,column:0},end:{line:21,column:7}}}))?r:"")+(null!=(r=s(n,"if").call(a,null!=(r=null!=e?s(e,"contact"):e)?s(r,"profileUrl"):r,{name:"if",hash:{},fn:t.program(13,i,0),inverse:t.program(18,i,0),data:i,loc:{start:{line:22,column:0},end:{line:50,column:7}}}))?r:"")+(null!=(r=s(n,"if").call(a,null!=(r=null!=e?s(e,"contact"):e)?s(r,"hasTwoActions"):r,{name:"if",hash:{},fn:t.program(23,i,0),inverse:t.noop,data:i,loc:{start:{line:51,column:0},end:{line:55,column:7}}}))?r:"")+(null!=(r=s(n,"if").call(a,null!=(r=null!=e?s(e,"contact"):e)?s(r,"hasManyActions"):r,{name:"if",hash:{},fn:t.program(25,i,0),inverse:t.noop,data:i,loc:{start:{line:56,column:0},end:{line:70,column:7}}}))?r:"")},useData:!0})},20421:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({compiler:[8,">= 4.3.0"],main:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="emptycontent">\n\t<div class="icon-search"></div>\n\t<h2>'+t.escapeExpression("function"==typeof(r=null!=(r=a(n,"couldNotLoadText")||(null!=e?a(e,"couldNotLoadText"):e))?r:t.hooks.helperMissing)?r.call(null!=e?e:t.nullContext||{},{name:"couldNotLoadText",hash:{},data:i,loc:{start:{line:3,column:5},end:{line:3,column:25}}}):r)+"</h2>\n</div>\n"},useData:!0})},34083:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({1:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="emptycontent">\n\t<div class="icon-search"></div>\n\t<h2>'+t.escapeExpression("function"==typeof(r=null!=(r=a(n,"noContactsFoundText")||(null!=e?a(e,"noContactsFoundText"):e))?r:t.hooks.helperMissing)?r.call(null!=e?e:t.nullContext||{},{name:"noContactsFoundText",hash:{},data:i,loc:{start:{line:4,column:5},end:{line:4,column:28}}}):r)+"</h2>\n</div>\n"},3:function(t,e,n,o,i){var r,a=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="footer"><a href="'+c(typeof(r=null!=(r=u(n,"contactsAppURL")||(null!=e?u(e,"contactsAppURL"):e))?r:s)===l?r.call(a,{name:"contactsAppURL",hash:{},data:i,loc:{start:{line:9,column:29},end:{line:9,column:47}}}):r)+'">'+c(typeof(r=null!=(r=u(n,"showAllContactsText")||(null!=e?u(e,"showAllContactsText"):e))?r:s)===l?r.call(a,{name:"showAllContactsText",hash:{},data:i,loc:{start:{line:9,column:49},end:{line:9,column:72}}}):r)+"</a></div>\n"},5:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return null!=(r=a(n,"if").call(null!=e?e:t.nullContext||{},null!=e?a(e,"canInstallApp"):e,{name:"if",hash:{},fn:t.program(6,i,0),inverse:t.noop,data:i,loc:{start:{line:10,column:0},end:{line:12,column:0}}}))?r:""},6:function(t,e,n,o,i){var r,a=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="footer"><a href="'+c(typeof(r=null!=(r=u(n,"contactsAppMgmtURL")||(null!=e?u(e,"contactsAppMgmtURL"):e))?r:s)===l?r.call(a,{name:"contactsAppMgmtURL",hash:{},data:i,loc:{start:{line:11,column:29},end:{line:11,column:51}}}):r)+'">'+c(typeof(r=null!=(r=u(n,"contactsAppMgmtText")||(null!=e?u(e,"contactsAppMgmtText"):e))?r:s)===l?r.call(a,{name:"contactsAppMgmtText",hash:{},data:i,loc:{start:{line:11,column:53},end:{line:11,column:76}}}):r)+"</a></div>\n"},compiler:[8,">= 4.3.0"],main:function(t,e,n,o,i){var r,a=null!=e?e:t.nullContext||{},s=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return(null!=(r=s(n,"unless").call(a,null!=(r=null!=e?s(e,"contacts"):e)?s(r,"length"):r,{name:"unless",hash:{},fn:t.program(1,i,0),inverse:t.noop,data:i,loc:{start:{line:1,column:0},end:{line:6,column:11}}}))?r:"")+'<div id="contactsmenu-contacts"></div>\n'+(null!=(r=s(n,"if").call(a,null!=e?s(e,"contactsAppEnabled"):e,{name:"if",hash:{},fn:t.program(3,i,0),inverse:t.program(5,i,0),data:i,loc:{start:{line:8,column:0},end:{line:12,column:7}}}))?r:"")},useData:!0})},95386:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({compiler:[8,">= 4.3.0"],main:function(t,e,n,o,i){var r,a=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<div class="emptycontent">\n\t<div class="icon-loading"></div>\n\t<h2>'+t.escapeExpression("function"==typeof(r=null!=(r=a(n,"loadingText")||(null!=e?a(e,"loadingText"):e))?r:t.hooks.helperMissing)?r.call(null!=e?e:t.nullContext||{},{name:"loadingText",hash:{},data:i,loc:{start:{line:3,column:5},end:{line:3,column:20}}}):r)+"</h2>\n</div>\n"},useData:!0})},66115:function(t,e,n){var o=n(40202);t.exports=(o.default||o).template({compiler:[8,">= 4.3.0"],main:function(t,e,n,o,i){var r,a=null!=e?e:t.nullContext||{},s=t.hooks.helperMissing,l="function",c=t.escapeExpression,u=t.lookupProperty||function(t,e){if(Object.prototype.hasOwnProperty.call(t,e))return t[e]};return'<label class="hidden-visually" for="contactsmenu-search">'+c(typeof(r=null!=(r=u(n,"searchContactsText")||(null!=e?u(e,"searchContactsText"):e))?r:s)===l?r.call(a,{name:"searchContactsText",hash:{},data:i,loc:{start:{line:1,column:57},end:{line:1,column:79}}}):r)+'</label>\n<input id="contactsmenu-search" type="search" placeholder="'+c(typeof(r=null!=(r=u(n,"searchContactsText")||(null!=e?u(e,"searchContactsText"):e))?r:s)===l?r.call(a,{name:"searchContactsText",hash:{},data:i,loc:{start:{line:2,column:59},end:{line:2,column:81}}}):r)+'" value="'+c(typeof(r=null!=(r=u(n,"searchTerm")||(null!=e?u(e,"searchTerm"):e))?r:s)===l?r.call(a,{name:"searchTerm",hash:{},data:i,loc:{start:{line:2,column:90},end:{line:2,column:104}}}):r)+'">\n<div class="content">\n</div>\n'},useData:!0})},46700:function(t,e,n){var o={"./af":42786,"./af.js":42786,"./ar":30867,"./ar-dz":14130,"./ar-dz.js":14130,"./ar-kw":96135,"./ar-kw.js":96135,"./ar-ly":56440,"./ar-ly.js":56440,"./ar-ma":47702,"./ar-ma.js":47702,"./ar-sa":16040,"./ar-sa.js":16040,"./ar-tn":37100,"./ar-tn.js":37100,"./ar.js":30867,"./az":31083,"./az.js":31083,"./be":9808,"./be.js":9808,"./bg":68338,"./bg.js":68338,"./bm":67438,"./bm.js":67438,"./bn":8905,"./bn-bd":76225,"./bn-bd.js":76225,"./bn.js":8905,"./bo":11560,"./bo.js":11560,"./br":1278,"./br.js":1278,"./bs":80622,"./bs.js":80622,"./ca":2468,"./ca.js":2468,"./cs":5822,"./cs.js":5822,"./cv":50877,"./cv.js":50877,"./cy":47373,"./cy.js":47373,"./da":24780,"./da.js":24780,"./de":59740,"./de-at":60217,"./de-at.js":60217,"./de-ch":60894,"./de-ch.js":60894,"./de.js":59740,"./dv":5300,"./dv.js":5300,"./el":50837,"./el.js":50837,"./en-au":78348,"./en-au.js":78348,"./en-ca":77925,"./en-ca.js":77925,"./en-gb":22243,"./en-gb.js":22243,"./en-ie":46436,"./en-ie.js":46436,"./en-il":47207,"./en-il.js":47207,"./en-in":44175,"./en-in.js":44175,"./en-nz":76319,"./en-nz.js":76319,"./en-sg":31662,"./en-sg.js":31662,"./eo":92915,"./eo.js":92915,"./es":55655,"./es-do":55251,"./es-do.js":55251,"./es-mx":96112,"./es-mx.js":96112,"./es-us":71146,"./es-us.js":71146,"./es.js":55655,"./et":5603,"./et.js":5603,"./eu":77763,"./eu.js":77763,"./fa":76959,"./fa.js":76959,"./fi":11897,"./fi.js":11897,"./fil":42549,"./fil.js":42549,"./fo":94694,"./fo.js":94694,"./fr":94470,"./fr-ca":63049,"./fr-ca.js":63049,"./fr-ch":52330,"./fr-ch.js":52330,"./fr.js":94470,"./fy":5044,"./fy.js":5044,"./ga":29295,"./ga.js":29295,"./gd":2101,"./gd.js":2101,"./gl":38794,"./gl.js":38794,"./gom-deva":27884,"./gom-deva.js":27884,"./gom-latn":23168,"./gom-latn.js":23168,"./gu":95349,"./gu.js":95349,"./he":24206,"./he.js":24206,"./hi":30094,"./hi.js":30094,"./hr":30316,"./hr.js":30316,"./hu":22138,"./hu.js":22138,"./hy-am":11423,"./hy-am.js":11423,"./id":29218,"./id.js":29218,"./is":90135,"./is.js":90135,"./it":90626,"./it-ch":10150,"./it-ch.js":10150,"./it.js":90626,"./ja":39183,"./ja.js":39183,"./jv":24286,"./jv.js":24286,"./ka":12105,"./ka.js":12105,"./kk":47772,"./kk.js":47772,"./km":18758,"./km.js":18758,"./kn":79282,"./kn.js":79282,"./ko":33730,"./ko.js":33730,"./ku":1408,"./ku.js":1408,"./ky":33291,"./ky.js":33291,"./lb":36841,"./lb.js":36841,"./lo":55466,"./lo.js":55466,"./lt":57010,"./lt.js":57010,"./lv":37595,"./lv.js":37595,"./me":39861,"./me.js":39861,"./mi":35493,"./mi.js":35493,"./mk":95966,"./mk.js":95966,"./ml":87341,"./ml.js":87341,"./mn":5115,"./mn.js":5115,"./mr":10370,"./mr.js":10370,"./ms":9847,"./ms-my":41237,"./ms-my.js":41237,"./ms.js":9847,"./mt":72126,"./mt.js":72126,"./my":56165,"./my.js":56165,"./nb":64924,"./nb.js":64924,"./ne":16744,"./ne.js":16744,"./nl":93901,"./nl-be":59814,"./nl-be.js":59814,"./nl.js":93901,"./nn":83877,"./nn.js":83877,"./oc-lnc":92135,"./oc-lnc.js":92135,"./pa-in":15858,"./pa-in.js":15858,"./pl":64495,"./pl.js":64495,"./pt":89520,"./pt-br":57971,"./pt-br.js":57971,"./pt.js":89520,"./ro":96459,"./ro.js":96459,"./ru":21793,"./ru.js":21793,"./sd":40950,"./sd.js":40950,"./se":10490,"./se.js":10490,"./si":90124,"./si.js":90124,"./sk":64249,"./sk.js":64249,"./sl":14985,"./sl.js":14985,"./sq":51104,"./sq.js":51104,"./sr":49131,"./sr-cyrl":79915,"./sr-cyrl.js":79915,"./sr.js":49131,"./ss":85893,"./ss.js":85893,"./sv":98760,"./sv.js":98760,"./sw":91172,"./sw.js":91172,"./ta":27333,"./ta.js":27333,"./te":23110,"./te.js":23110,"./tet":52095,"./tet.js":52095,"./tg":27321,"./tg.js":27321,"./th":9041,"./th.js":9041,"./tk":19005,"./tk.js":19005,"./tl-ph":75768,"./tl-ph.js":75768,"./tlh":89444,"./tlh.js":89444,"./tr":72397,"./tr.js":72397,"./tzl":28254,"./tzl.js":28254,"./tzm":51106,"./tzm-latn":30699,"./tzm-latn.js":30699,"./tzm.js":51106,"./ug-cn":9288,"./ug-cn.js":9288,"./uk":67691,"./uk.js":67691,"./ur":13795,"./ur.js":13795,"./uz":6791,"./uz-latn":60588,"./uz-latn.js":60588,"./uz.js":6791,"./vi":65666,"./vi.js":65666,"./x-pseudo":14378,"./x-pseudo.js":14378,"./yo":75805,"./yo.js":75805,"./zh-cn":83839,"./zh-cn.js":83839,"./zh-hk":55726,"./zh-hk.js":55726,"./zh-mo":99807,"./zh-mo.js":99807,"./zh-tw":74152,"./zh-tw.js":74152};function i(t){var e=r(t);return n(e)}function r(t){if(!n.o(o,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return o[t]}i.keys=function(){return Object.keys(o)},i.resolve=r,t.exports=i,i.id=46700}},i={};function r(t){var e=i[t];if(void 0!==e)return e.exports;var n=i[t]={id:t,loaded:!1,exports:{}};return o[t].call(n.exports,n,n.exports,r),n.loaded=!0,n.exports}r.m=o,r.amdD=function(){throw new Error("define cannot be used indirect")},r.amdO={},e=[],r.O=function(t,n,o,i){if(!n){var a=1/0;for(u=0;u<e.length;u++){n=e[u][0],o=e[u][1],i=e[u][2];for(var s=!0,l=0;l<n.length;l++)(!1&i||a>=i)&&Object.keys(r.O).every((function(t){return r.O[t](n[l])}))?n.splice(l--,1):(s=!1,i<a&&(a=i));if(s){e.splice(u--,1);var c=o();void 0!==c&&(t=c)}}return t}i=i||0;for(var u=e.length;u>0&&e[u-1][2]>i;u--)e[u]=e[u-1];e[u]=[n,o,i]},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,{a:e}),e},r.d=function(t,e){for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.nmd=function(t){return t.paths=[],t.children||(t.children=[]),t},r.j=4577,function(){r.b=document.baseURI||self.location.href;var t={4577:0};r.O.j=function(e){return 0===t[e]};var e=function(e,n){var o,i,a=n[0],s=n[1],l=n[2],c=0;if(a.some((function(e){return 0!==t[e]}))){for(o in s)r.o(s,o)&&(r.m[o]=s[o]);if(l)var u=l(r)}for(e&&e(n);c<a.length;c++)i=a[c],r.o(t,i)&&t[i]&&t[i][0](),t[i]=0;return r.O(u)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(e.bind(null,0)),n.push=e.bind(null,n.push.bind(n))}(),r.nc=void 0;var a=r.O(void 0,[7874],(function(){return r(87521)}));a=r.O(a)}(); +//# sourceMappingURL=core-login.js.map?v=f1d623afa31a4444c10e
\ No newline at end of file diff --git a/dist/core-login.js.map b/dist/core-login.js.map index 232e41fb851..0f7a4acddd6 100644 --- a/dist/core-login.js.map +++ b/dist/core-login.js.map @@ -1 +1 @@ -{"version":3,"file":"core-login.js?v=d2605ccb602bcaf81177","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/core/src/OC/legacy-loader.js","webpack:///nextcloud/core/src/OC/notification.js","webpack:///nextcloud/core/src/OC/xhr-error.js","webpack:///nextcloud/core/src/OC/apps.js","webpack:///nextcloud/core/src/OCP/appconfig.js","webpack:///nextcloud/core/src/OC/appconfig.js","webpack:///nextcloud/core/src/OC/appswebroots.js","webpack:///nextcloud/core/src/OC/backbone-webdav.js","webpack:///nextcloud/core/src/OC/backbone.js","webpack:///nextcloud/core/src/OC/config.js","webpack:///nextcloud/core/src/OC/contactsmenu.js","webpack:///nextcloud/core/src/OC/currentuser.js","webpack:///nextcloud/core/src/OCA/index.js","webpack:///nextcloud/core/src/OCA/search.js","webpack:///nextcloud/core/src/Util/a11y.js","webpack:///nextcloud/core/src/OC/dialogs.js","webpack:///nextcloud/core/src/OC/requesttoken.js","webpack:///nextcloud/core/src/OC/eventsource.js","webpack:///nextcloud/core/src/OC/menu.js","webpack:///nextcloud/core/src/OC/constants.js","webpack:///nextcloud/core/src/OC/admin.js","webpack:///nextcloud/core/src/OC/l10n-registry.js","webpack:///nextcloud/core/src/OC/l10n.js","webpack:///nextcloud/core/src/OC/msg.js","webpack:///nextcloud/core/src/OC/password-confirmation.js","webpack:///nextcloud/core/src/OC/theme.js","webpack:///nextcloud/core/src/OC/util-history.js","webpack:///nextcloud/core/src/OC/util.js","webpack:///nextcloud/core/src/OC/debug.js","webpack:///nextcloud/core/src/OC/webroot.js","webpack:///nextcloud/core/src/OC/get_set.js","webpack:///nextcloud/core/src/OC/index.js","webpack:///nextcloud/core/src/OC/appsettings.js","webpack:///nextcloud/core/src/OC/capabilities.js","webpack:///nextcloud/core/src/OC/host.js","webpack:///nextcloud/core/src/OC/query-string.js","webpack:///nextcloud/core/src/OC/plugins.js","webpack:///nextcloud/core/src/OC/navigation.js","webpack:///nextcloud/core/src/OC/routing.js","webpack:///nextcloud/core/src/views/Login.vue?vue&type=template&id=7ed2300f&","webpack:///nextcloud/core/src/components/login/LoginButton.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/login/LoginButton.vue","webpack://nextcloud/./core/src/components/login/LoginButton.vue?23bf","webpack://nextcloud/./core/src/components/login/LoginButton.vue?14f0","webpack:///nextcloud/core/src/components/login/LoginButton.vue?vue&type=template&id=756414a8&scoped=true&","webpack:///nextcloud/core/src/components/login/LoginForm.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/login/LoginForm.vue","webpack://nextcloud/./core/src/components/login/LoginForm.vue?b650","webpack://nextcloud/./core/src/components/login/LoginForm.vue?a678","webpack:///nextcloud/core/src/components/login/LoginForm.vue?vue&type=template&id=48dc6965&scoped=true&","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/services/WebAuthnAuthenticationService.js","webpack://nextcloud/./core/src/components/login/PasswordLessLoginForm.vue?a625","webpack://nextcloud/./core/src/components/login/PasswordLessLoginForm.vue?09eb","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue?vue&type=template&id=adf4afc4&scoped=true&","webpack:///nextcloud/core/src/components/login/ResetPassword.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/login/ResetPassword.vue","webpack://nextcloud/./core/src/components/login/ResetPassword.vue?493d","webpack://nextcloud/./core/src/components/login/ResetPassword.vue?9d75","webpack:///nextcloud/core/src/components/login/ResetPassword.vue?vue&type=template&id=27cabc60&scoped=true&","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/components/login/UpdatePassword.vue?5cc3","webpack://nextcloud/./core/src/components/login/UpdatePassword.vue?30ca","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue?vue&type=template&id=4dc21d74&scoped=true&","webpack:///nextcloud/core/src/views/Login.vue","webpack:///nextcloud/core/src/views/Login.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/views/Login.vue?7b85","webpack://nextcloud/./core/src/views/Login.vue?3468","webpack:///nextcloud/core/src/mixins/Nextcloud.js","webpack:///nextcloud/core/src/login.js","webpack:///nextcloud/core/src/components/login/LoginButton.vue?vue&type=style&index=0&id=756414a8&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/login/LoginForm.vue?vue&type=style&index=0&id=48dc6965&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue?vue&type=style&index=0&id=adf4afc4&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/login/ResetPassword.vue?vue&type=style&index=0&id=27cabc60&lang=scss&scoped=true&","webpack:///nextcloud/core/src/views/Login.vue?vue&type=style&index=0&lang=scss&","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue?vue&type=style&index=0&id=4dc21d74&scoped=true&lang=css&","webpack:///nextcloud/core/src/OC/contactsmenu/contact.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/error.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/list.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/loading.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/menu.handlebars","webpack:///nextcloud/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/amd define","webpack:///nextcloud/webpack/runtime/amd options","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\nimport { generateFilePath } from '@nextcloud/router'\n\nconst loadedScripts = {}\nconst loadedStyles = []\n\n/**\n * Load a script for the server and load it. If the script is already loaded,\n * the event handler will be called directly\n *\n * @param {string} app the app id to which the script belongs\n * @param {string} script the filename of the script\n * @param {Function} ready event handler to be called when the script is loaded\n * @return {jQuery.Deferred}\n * @deprecated 16.0.0 Use OCP.Loader.loadScript\n */\nexport const addScript = (app, script, ready) => {\n\tconsole.warn('OC.addScript is deprecated, use OCP.Loader.loadScript instead')\n\n\tlet deferred\n\tconst path = generateFilePath(app, 'js', script + '.js')\n\tif (!loadedScripts[path]) {\n\t\tdeferred = $.Deferred()\n\t\t$.getScript(path, () => deferred.resolve())\n\t\tloadedScripts[path] = deferred\n\t} else {\n\t\tif (ready) {\n\t\t\tready()\n\t\t}\n\t}\n\treturn loadedScripts[path]\n}\n\n/**\n * Loads a CSS file\n *\n * @param {string} app the app id to which the css style belongs\n * @param {string} style the filename of the css file\n * @deprecated 16.0.0 Use OCP.Loader.loadStylesheet\n */\nexport const addStyle = (app, style) => {\n\tconsole.warn('OC.addStyle is deprecated, use OCP.Loader.loadStylesheet instead')\n\n\tconst path = generateFilePath(app, 'css', style + '.css')\n\tif (loadedStyles.indexOf(path) === -1) {\n\t\tloadedStyles.push(path)\n\t\tif (document.createStyleSheet) {\n\t\t\tdocument.createStyleSheet(path)\n\t\t} else {\n\t\t\tstyle = $('<link rel=\"stylesheet\" type=\"text/css\" href=\"' + path + '\"/>')\n\t\t\t$('head').append(style)\n\t\t}\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author npmbuildbot[bot] \"npmbuildbot[bot]@users.noreply.github.com\"\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\nimport { showMessage, TOAST_DEFAULT_TIMEOUT, TOAST_PERMANENT_TIMEOUT } from '@nextcloud/dialogs'\n\n/**\n * @todo Write documentation\n * @deprecated 17.0.0 use the `@nextcloud/dialogs` package instead\n * @namespace OC.Notification\n */\nexport default {\n\n\tupdatableNotification: null,\n\n\tgetDefaultNotificationFunction: null,\n\n\t/**\n\t * @param {Function} callback callback function\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tsetDefault(callback) {\n\t\tthis.getDefaultNotificationFunction = callback\n\t},\n\n\t/**\n\t * Hides a notification.\n\t *\n\t * If a row is given, only hide that one.\n\t * If no row is given, hide all notifications.\n\t *\n\t * @param {jQuery} [$row] notification row\n\t * @param {Function} [callback] callback\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\thide($row, callback) {\n\t\tif (_.isFunction($row)) {\n\t\t\t// first arg is the callback\n\t\t\tcallback = $row\n\t\t\t$row = undefined\n\t\t}\n\n\t\tif (!$row) {\n\t\t\tconsole.error('Missing argument $row in OC.Notification.hide() call, caller needs to be adjusted to only dismiss its own notification')\n\t\t\treturn\n\t\t}\n\n\t\t// remove the row directly\n\t\t$row.each(function() {\n\t\t\tif ($(this)[0].toastify) {\n\t\t\t\t$(this)[0].toastify.hideToast()\n\t\t\t} else {\n\t\t\t\tconsole.error('cannot hide toast because object is not set')\n\t\t\t}\n\t\t\tif (this === this.updatableNotification) {\n\t\t\t\tthis.updatableNotification = null\n\t\t\t}\n\t\t})\n\t\tif (callback) {\n\t\t\tcallback.call()\n\t\t}\n\t\tif (this.getDefaultNotificationFunction) {\n\t\t\tthis.getDefaultNotificationFunction()\n\t\t}\n\t},\n\n\t/**\n\t * Shows a notification as HTML without being sanitized before.\n\t * If you pass unsanitized user input this may lead to a XSS vulnerability.\n\t * Consider using show() instead of showHTML()\n\t *\n\t * @param {string} html Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout=0] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowHtml(html, options) {\n\t\toptions = options || {}\n\t\toptions.isHTML = true\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(html, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Shows a sanitized notification\n\t *\n\t * @param {string} text Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout=0] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshow(text, options) {\n\t\tconst escapeHTML = function(text) {\n\t\t\treturn text.toString()\n\t\t\t\t.split('&').join('&')\n\t\t\t\t.split('<').join('<')\n\t\t\t\t.split('>').join('>')\n\t\t\t\t.split('\"').join('"')\n\t\t\t\t.split('\\'').join(''')\n\t\t}\n\n\t\toptions = options || {}\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(escapeHTML(text), options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Updates (replaces) a sanitized notification.\n\t *\n\t * @param {string} text Message to display\n\t * @return {jQuery} JQuery element for notificaiton row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowUpdate(text) {\n\t\tif (this.updatableNotification) {\n\t\t\tthis.updatableNotification.hideToast()\n\t\t}\n\t\tthis.updatableNotification = showMessage(text, { timeout: TOAST_PERMANENT_TIMEOUT })\n\t\tthis.updatableNotification.toastElement.toastify = this.updatableNotification\n\t\treturn $(this.updatableNotification.toastElement)\n\t},\n\n\t/**\n\t * Shows a notification that disappears after x seconds, default is\n\t * 7 seconds\n\t *\n\t * @param {string} text Message to show\n\t * @param {Array} [options] options array\n\t * @param {number} [options.timeout=7] timeout in seconds, if this is 0 it will show the message permanently\n\t * @param {boolean} [options.isHTML=false] an indicator for HTML notifications (true) or text (false)\n\t * @param {string} [options.type] notification type\n\t * @return {JQuery} the toast element\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowTemporary(text, options) {\n\t\toptions = options || {}\n\t\toptions.timeout = options.timeout || TOAST_DEFAULT_TIMEOUT\n\t\tconst toast = showMessage(text, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Returns whether a notification is hidden.\n\t *\n\t * @return {boolean}\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tisHidden() {\n\t\treturn !$('#content').find('.toastify').length\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\nimport $ from 'jquery'\n\nimport OC from './index'\nimport Notification from './notification'\n\n/**\n * Warn users that the connection to the server was lost temporarily\n *\n * This function is throttled to prevent stacked notfications.\n * After 7sec the first notification is gone, then we can show another one\n * if necessary.\n */\nexport const ajaxConnectionLostHandler = _.throttle(() => {\n\tNotification.showTemporary(t('core', 'Connection to server lost'))\n}, 7 * 1000, { trailing: false })\n\n/**\n * Process ajax error, redirects to main page\n * if an error/auth error status was returned.\n *\n * @param {XMLHttpRequest} xhr xhr request\n */\nexport const processAjaxError = xhr => {\n\t// purposefully aborted request ?\n\t// OC._userIsNavigatingAway needed to distinguish ajax calls cancelled by navigating away\n\t// from calls cancelled by failed cross-domain ajax due to SSO redirect\n\tif (xhr.status === 0 && (xhr.statusText === 'abort' || xhr.statusText === 'timeout' || OC._reloadCalled)) {\n\t\treturn\n\t}\n\n\tif (_.contains([302, 303, 307, 401], xhr.status) && OC.currentUser) {\n\t\t// sometimes \"beforeunload\" happens later, so need to defer the reload a bit\n\t\tsetTimeout(function() {\n\t\t\tif (!OC._userIsNavigatingAway && !OC._reloadCalled) {\n\t\t\t\tlet timer = 0\n\t\t\t\tconst seconds = 5\n\t\t\t\tconst interval = setInterval(function() {\n\t\t\t\t\tNotification.showUpdate(n('core', 'Problem loading page, reloading in %n second', 'Problem loading page, reloading in %n seconds', seconds - timer))\n\t\t\t\t\tif (timer >= seconds) {\n\t\t\t\t\t\tclearInterval(interval)\n\t\t\t\t\t\tOC.reload()\n\t\t\t\t\t}\n\t\t\t\t\ttimer++\n\t\t\t\t}, 1000 // 1 second interval\n\t\t\t\t)\n\n\t\t\t\t// only call reload once\n\t\t\t\tOC._reloadCalled = true\n\t\t\t}\n\t\t}, 100)\n\t} else if (xhr.status === 0) {\n\t\t// Connection lost (e.g. WiFi disconnected or server is down)\n\t\tsetTimeout(function() {\n\t\t\tif (!OC._userIsNavigatingAway && !OC._reloadCalled) {\n\t\t\t\t// TODO: call method above directly\n\t\t\t\tOC._ajaxConnectionLostHandler()\n\t\t\t}\n\t\t}, 100)\n\t}\n}\n\n/**\n * Registers XmlHttpRequest object for global error processing.\n *\n * This means that if this XHR object returns 401 or session timeout errors,\n * the current page will automatically be reloaded.\n *\n * @param {XMLHttpRequest} xhr xhr request\n */\nexport const registerXHRForErrorProcessing = xhr => {\n\tconst loadCallback = () => {\n\t\tif (xhr.readyState !== 4) {\n\t\t\treturn\n\t\t}\n\n\t\tif ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304) {\n\t\t\treturn\n\t\t}\n\n\t\t// fire jquery global ajax error handler\n\t\t$(document).trigger(new $.Event('ajaxError'), xhr)\n\t}\n\n\tconst errorCallback = () => {\n\t\t// fire jquery global ajax error handler\n\t\t$(document).trigger(new $.Event('ajaxError'), xhr)\n\t}\n\n\tif (xhr.addEventListener) {\n\t\txhr.addEventListener('load', loadCallback)\n\t\txhr.addEventListener('error', errorCallback)\n\t}\n\n}\n","/**\n * @copyright Bernhard Posselt 2014\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\nlet dynamicSlideToggleEnabled = false\n\nconst Apps = {\n\tenableDynamicSlideToggle() {\n\t\tdynamicSlideToggleEnabled = true\n\t},\n}\n\n/**\n * Shows the #app-sidebar and add .with-app-sidebar to subsequent siblings\n *\n * @param {object} [$el] sidebar element to show, defaults to $('#app-sidebar')\n */\nApps.showAppSidebar = function($el) {\n\tconst $appSidebar = $el || $('#app-sidebar')\n\t$appSidebar.removeClass('disappear').show()\n\t$('#app-content').trigger(new $.Event('appresized'))\n}\n\n/**\n * Shows the #app-sidebar and removes .with-app-sidebar from subsequent\n * siblings\n *\n * @param {object} [$el] sidebar element to hide, defaults to $('#app-sidebar')\n */\nApps.hideAppSidebar = function($el) {\n\tconst $appSidebar = $el || $('#app-sidebar')\n\t$appSidebar.hide().addClass('disappear')\n\t$('#app-content').trigger(new $.Event('appresized'))\n}\n\n/**\n * Provides a way to slide down a target area through a button and slide it\n * up if the user clicks somewhere else. Used for the news app settings and\n * add new field.\n *\n * Usage:\n * <button data-apps-slide-toggle=\".slide-area\">slide</button>\n * <div class=\".slide-area\" class=\"hidden\">I'm sliding up</div>\n */\nexport const registerAppsSlideToggle = () => {\n\tlet buttons = $('[data-apps-slide-toggle]')\n\n\tif (buttons.length === 0) {\n\t\t$('#app-navigation').addClass('without-app-settings')\n\t}\n\n\t$(document).click(function(event) {\n\n\t\tif (dynamicSlideToggleEnabled) {\n\t\t\tbuttons = $('[data-apps-slide-toggle]')\n\t\t}\n\n\t\tbuttons.each(function(index, button) {\n\n\t\t\tconst areaSelector = $(button).data('apps-slide-toggle')\n\t\t\tconst area = $(areaSelector)\n\n\t\t\t/**\n\t\t\t *\n\t\t\t */\n\t\t\tfunction hideArea() {\n\t\t\t\tarea.slideUp(OC.menuSpeed * 4, function() {\n\t\t\t\t\tarea.trigger(new $.Event('hide'))\n\t\t\t\t})\n\t\t\t\tarea.removeClass('opened')\n\t\t\t\t$(button).removeClass('opened')\n\t\t\t}\n\n\t\t\t/**\n\t\t\t *\n\t\t\t */\n\t\t\tfunction showArea() {\n\t\t\t\tarea.slideDown(OC.menuSpeed * 4, function() {\n\t\t\t\t\tarea.trigger(new $.Event('show'))\n\t\t\t\t})\n\t\t\t\tarea.addClass('opened')\n\t\t\t\t$(button).addClass('opened')\n\t\t\t\tconst input = $(areaSelector + ' [autofocus]')\n\t\t\t\tif (input.length === 1) {\n\t\t\t\t\tinput.focus()\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// do nothing if the area is animated\n\t\t\tif (!area.is(':animated')) {\n\n\t\t\t\t// button toggles the area\n\t\t\t\tif ($(button).is($(event.target).closest('[data-apps-slide-toggle]'))) {\n\t\t\t\t\tif (area.is(':visible')) {\n\t\t\t\t\t\thideArea()\n\t\t\t\t\t} else {\n\t\t\t\t\t\tshowArea()\n\t\t\t\t\t}\n\n\t\t\t\t\t// all other areas that have not been clicked but are open\n\t\t\t\t\t// should be slid up\n\t\t\t\t} else {\n\t\t\t\t\tconst closest = $(event.target).closest(areaSelector)\n\t\t\t\t\tif (area.is(':visible') && closest[0] !== area[0]) {\n\t\t\t\t\t\thideArea()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t})\n}\n\nexport default Apps\n","/**\n * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nimport OC from '../OC/index'\n\n/**\n * @param {string} method 'post' or 'delete'\n * @param {string} endpoint endpoint\n * @param {object} [options] destructuring object\n * @param {object} [options.data] option data\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n */\nfunction call(method, endpoint, options) {\n\tif ((method === 'post' || method === 'delete') && OC.PasswordConfirmation.requiresPasswordConfirmation()) {\n\t\tOC.PasswordConfirmation.requirePasswordConfirmation(_.bind(call, this, method, endpoint, options))\n\t\treturn\n\t}\n\n\toptions = options || {}\n\t$.ajax({\n\t\ttype: method.toUpperCase(),\n\t\turl: generateOcsUrl('apps/provisioning_api/api/v1/config/apps') + endpoint,\n\t\tdata: options.data || {},\n\t\tsuccess: options.success,\n\t\terror: options.error,\n\t})\n}\n\n/**\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @since 11.0.0\n */\nexport function getApps(options) {\n\tcall('get', '', options)\n}\n\n/**\n * @param {string} app app id\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function getKeys(app, options) {\n\tcall('get', '/' + app, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {string | Function} defaultValue default value\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function getValue(app, key, defaultValue, options) {\n\toptions = options || {}\n\toptions.data = {\n\t\tdefaultValue,\n\t}\n\n\tcall('get', '/' + app + '/' + key, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {string} value value\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function setValue(app, key, value, options) {\n\toptions = options || {}\n\toptions.data = {\n\t\tvalue,\n\t}\n\n\tcall('post', '/' + app + '/' + key, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function deleteKey(app, key, options) {\n\tcall('delete', '/' + app + '/' + key, options)\n}\n","/**\n * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Jörn Friedrich Dreyer <jfd@butonic.de>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\n import { getValue, setValue, getApps, getKeys, deleteKey } from '../OCP/appconfig'\n\nexport const appConfig = window.oc_appconfig || {}\n\n/**\n * @namespace\n * @deprecated 16.0.0 Use OCP.AppConfig instead\n */\nexport const AppConfig = {\n\t/**\n\t * @deprecated Use OCP.AppConfig.getValue() instead\n\t */\n\tgetValue: function(app, key, defaultValue, callback) {\n\t\tgetValue(app, key, defaultValue, {\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.setValue() instead\n\t */\n\tsetValue: function(app, key, value) {\n\t\tsetValue(app, key, value)\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.getApps() instead\n\t */\n\tgetApps: function(callback) {\n\t\tgetApps({\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.getKeys() instead\n\t */\n\tgetKeys: function(app, callback) {\n\t\tgetKeys(app, {\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.deleteKey() instead\n\t */\n\tdeleteKey: function(app, key) {\n\t\tdeleteKey(app, key)\n\t}\n\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst appswebroots = (window._oc_appswebroots !== undefined) ? window._oc_appswebroots : false\n\nexport default appswebroots\n","/**\n * Copyright (c) 2015\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport { dav } from 'davclient.js'\n\nconst methodMap = {\n\tcreate: 'POST',\n\tupdate: 'PROPPATCH',\n\tpatch: 'PROPPATCH',\n\tdelete: 'DELETE',\n\tread: 'PROPFIND'\n}\n\n// Throw an error when a URL is needed, and none is supplied.\nfunction urlError() {\n\tthrow new Error('A \"url\" property or function must be specified')\n}\n\n/**\n * Convert a single propfind result to JSON\n *\n * @param {Object} result\n * @param {Object} davProperties properties mapping\n */\nfunction parsePropFindResult(result, davProperties) {\n\tif (_.isArray(result)) {\n\t\treturn _.map(result, function(subResult) {\n\t\t\treturn parsePropFindResult(subResult, davProperties)\n\t\t})\n\t}\n\tvar props = {\n\t\thref: result.href\n\t}\n\n\t_.each(result.propStat, function(propStat) {\n\t\tif (propStat.status !== 'HTTP/1.1 200 OK') {\n\t\t\treturn\n\t\t}\n\n\t\tfor (var key in propStat.properties) {\n\t\t\tvar propKey = key\n\t\t\tif (key in davProperties) {\n\t\t\t\tpropKey = davProperties[key]\n\t\t\t}\n\t\t\tprops[propKey] = propStat.properties[key]\n\t\t}\n\t})\n\n\tif (!props.id) {\n\t\t// parse id from href\n\t\tprops.id = parseIdFromLocation(props.href)\n\t}\n\n\treturn props\n}\n\n/**\n * Parse ID from location\n *\n * @param {string} url url\n * @returns {string} id\n */\nfunction parseIdFromLocation(url) {\n\tvar queryPos = url.indexOf('?')\n\tif (queryPos > 0) {\n\t\turl = url.substr(0, queryPos)\n\t}\n\n\tvar parts = url.split('/')\n\tvar result\n\tdo {\n\t\tresult = parts[parts.length - 1]\n\t\tparts.pop()\n\t\t// note: first result can be empty when there is a trailing slash,\n\t\t// so we take the part before that\n\t} while (!result && parts.length > 0)\n\n\treturn result\n}\n\nfunction isSuccessStatus(status) {\n\treturn status >= 200 && status <= 299\n}\n\nfunction convertModelAttributesToDavProperties(attrs, davProperties) {\n\tvar props = {}\n\tvar key\n\tfor (key in attrs) {\n\t\tvar changedProp = davProperties[key]\n\t\tvar value = attrs[key]\n\t\tif (!changedProp) {\n\t\t\tconsole.warn('No matching DAV property for property \"' + key)\n\t\t\tchangedProp = key\n\t\t}\n\t\tif (_.isBoolean(value) || _.isNumber(value)) {\n\t\t\t// convert to string\n\t\t\tvalue = '' + value\n\t\t}\n\t\tprops[changedProp] = value\n\t}\n\treturn props\n}\n\nfunction callPropFind(client, options, model, headers) {\n\treturn client.propFind(\n\t\toptions.url,\n\t\t_.values(options.davProperties) || [],\n\t\toptions.depth,\n\t\theaders\n\t).then(function(response) {\n\t\tif (isSuccessStatus(response.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\tvar propsMapping = _.invert(options.davProperties)\n\t\t\t\tvar results = parsePropFindResult(response.body, propsMapping)\n\t\t\t\tif (options.depth > 0) {\n\t\t\t\t\t// discard root entry\n\t\t\t\t\tresults.shift()\n\t\t\t\t}\n\n\t\t\t\toptions.success(results)\n\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(response)\n\t\t}\n\t})\n}\n\nfunction callPropPatch(client, options, model, headers) {\n\treturn client.propPatch(\n\t\toptions.url,\n\t\tconvertModelAttributesToDavProperties(model.changed, options.davProperties),\n\t\theaders\n\t).then(function(result) {\n\t\tif (isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return the updated model\n\t\t\t\toptions.success(model.toJSON())\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(result)\n\t\t}\n\t})\n\n}\n\nfunction callMkCol(client, options, model, headers) {\n\t// call MKCOL without data, followed by PROPPATCH\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\tnull\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tcallPropPatch(client, options, model, headers)\n\t})\n}\n\nfunction callMethod(client, options, model, headers) {\n\theaders['Content-Type'] = 'application/json'\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\toptions.data\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tif (_.isFunction(options.success)) {\n\t\t\tif (options.type === 'PUT' || options.type === 'POST' || options.type === 'MKCOL') {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return anything\n\t\t\t\tvar responseJson = result.body || model.toJSON()\n\t\t\t\tvar locationHeader = result.xhr.getResponseHeader('Content-Location')\n\t\t\t\tif (options.type === 'POST' && locationHeader) {\n\t\t\t\t\tresponseJson.id = parseIdFromLocation(locationHeader)\n\t\t\t\t}\n\t\t\t\toptions.success(responseJson)\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// if multi-status, parse\n\t\t\tif (result.status === 207) {\n\t\t\t\tvar propsMapping = _.invert(options.davProperties)\n\t\t\t\toptions.success(parsePropFindResult(result.body, propsMapping))\n\t\t\t} else {\n\t\t\t\toptions.success(result.body)\n\t\t\t}\n\t\t}\n\t})\n}\n\nexport const davCall = (options, model) => {\n\tvar client = new dav.Client({\n\t\tbaseUrl: options.url,\n\t\txmlNamespaces: _.extend({\n\t\t\t'DAV:': 'd',\n\t\t\t'http://owncloud.org/ns': 'oc'\n\t\t}, options.xmlNamespaces || {})\n\t})\n\tclient.resolveUrl = function() {\n\t\treturn options.url\n\t}\n\tvar headers = _.extend({\n\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\t'requesttoken': OC.requestToken\n\t}, options.headers)\n\tif (options.type === 'PROPFIND') {\n\t\treturn callPropFind(client, options, model, headers)\n\t} else if (options.type === 'PROPPATCH') {\n\t\treturn callPropPatch(client, options, model, headers)\n\t} else if (options.type === 'MKCOL') {\n\t\treturn callMkCol(client, options, model, headers)\n\t} else {\n\t\treturn callMethod(client, options, model, headers)\n\t}\n}\n\n/**\n * DAV transport\n */\nexport const davSync = Backbone => (method, model, options) => {\n\tvar params = { type: methodMap[method] || method }\n\tvar isCollection = (model instanceof Backbone.Collection)\n\n\tif (method === 'update') {\n\t\t// if a model has an inner collection, it must define an\n\t\t// attribute \"hasInnerCollection\" that evaluates to true\n\t\tif (model.hasInnerCollection) {\n\t\t\t// if the model itself is a Webdav collection, use MKCOL\n\t\t\tparams.type = 'MKCOL'\n\t\t} else if (model.usePUT || (model.collection && model.collection.usePUT)) {\n\t\t\t// use PUT instead of PROPPATCH\n\t\t\tparams.type = 'PUT'\n\t\t}\n\t}\n\n\t// Ensure that we have a URL.\n\tif (!options.url) {\n\t\tparams.url = _.result(model, 'url') || urlError()\n\t}\n\n\t// Ensure that we have the appropriate request data.\n\tif (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {\n\t\tparams.data = JSON.stringify(options.attrs || model.toJSON(options))\n\t}\n\n\t// Don't process data on a non-GET request.\n\tif (params.type !== 'PROPFIND') {\n\t\tparams.processData = false\n\t}\n\n\tif (params.type === 'PROPFIND' || params.type === 'PROPPATCH') {\n\t\tvar davProperties = model.davProperties\n\t\tif (!davProperties && model.model) {\n\t\t\t// use dav properties from model in case of collection\n\t\t\tdavProperties = model.model.prototype.davProperties\n\t\t}\n\t\tif (davProperties) {\n\t\t\tif (_.isFunction(davProperties)) {\n\t\t\t\tparams.davProperties = davProperties.call(model)\n\t\t\t} else {\n\t\t\t\tparams.davProperties = davProperties\n\t\t\t}\n\t\t}\n\n\t\tparams.davProperties = _.extend(params.davProperties || {}, options.davProperties)\n\n\t\tif (_.isUndefined(options.depth)) {\n\t\t\tif (isCollection) {\n\t\t\t\toptions.depth = 1\n\t\t\t} else {\n\t\t\t\toptions.depth = 0\n\t\t\t}\n\t\t}\n\t}\n\n\t// Pass along `textStatus` and `errorThrown` from jQuery.\n\tvar error = options.error\n\toptions.error = function(xhr, textStatus, errorThrown) {\n\t\toptions.textStatus = textStatus\n\t\toptions.errorThrown = errorThrown\n\t\tif (error) {\n\t\t\terror.call(options.context, xhr, textStatus, errorThrown)\n\t\t}\n\t}\n\n\t// Make the request, allowing the user to override any Ajax options.\n\tvar xhr = options.xhr = Backbone.davCall(_.extend(params, options), model)\n\tmodel.trigger('request', model, xhr, options)\n\treturn xhr\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport VendorBackbone from 'backbone'\nimport { davCall, davSync } from './backbone-webdav'\n\nconst Backbone = VendorBackbone.noConflict()\n\n// Patch Backbone for DAV\nObject.assign(Backbone, {\n\tdavCall,\n\tdavSync: davSync(Backbone),\n})\n\nexport default Backbone\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst config = window._oc_config || {}\n\nexport default config\n","/**\n * @copyright 2017 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport { Collection, Model, View } from 'backbone'\n\nimport OC from './index'\n\n/**\n * @class Contact\n */\nconst Contact = Model.extend({\n\tdefaults: {\n\t\tfullName: '',\n\t\tlastMessage: '',\n\t\tactions: [],\n\t\thasOneAction: false,\n\t\thasTwoActions: false,\n\t\thasManyActions: false\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\tinitialize: function() {\n\t\t// Add needed property for easier template rendering\n\t\tif (this.get('actions').length === 0) {\n\t\t\tthis.set('hasOneAction', true)\n\t\t} else if (this.get('actions').length === 1) {\n\t\t\tthis.set('hasTwoActions', true)\n\t\t\tthis.set('secondAction', this.get('actions')[0])\n\t\t} else {\n\t\t\tthis.set('hasManyActions', true)\n\t\t}\n\t}\n})\n\n/**\n * @class ContactCollection\n * @private\n */\nconst ContactCollection = Collection.extend({\n\tmodel: Contact\n})\n\n/**\n * @class ContactsListView\n * @private\n */\nconst ContactsListView = View.extend({\n\n\t/** @type {ContactCollection} */\n\t_collection: undefined,\n\n\t/** @type {array} */\n\t_subViews: [],\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis._collection = options.collection\n\t},\n\n\t/**\n\t * @returns {self}\n\t */\n\trender: function() {\n\t\tvar self = this\n\t\tself.$el.html('')\n\t\tself._subViews = []\n\n\t\tself._collection.forEach(function(contact) {\n\t\t\tvar item = new ContactsListItemView({\n\t\t\t\tmodel: contact\n\t\t\t})\n\t\t\titem.render()\n\t\t\tself.$el.append(item.$el)\n\t\t\titem.on('toggle:actionmenu', self._onChildActionMenuToggle, self)\n\t\t\tself._subViews.push(item)\n\t\t})\n\n\t\treturn self\n\t},\n\n\t/**\n\t * Event callback to propagate opening (another) entry's action menu\n\t *\n\t * @param {type} $src\n\t * @returns {undefined}\n\t */\n\t_onChildActionMenuToggle: function($src) {\n\t\tthis._subViews.forEach(function(view) {\n\t\t\tview.trigger('parent:toggle:actionmenu', $src)\n\t\t})\n\t}\n})\n\n/**\n * @class ContactsListItemView\n * @private\n */\nconst ContactsListItemView = View.extend({\n\n\t/** @type {string} */\n\tclassName: 'contact',\n\n\t/** @type {undefined|function} */\n\t_template: undefined,\n\n\t/** @type {Contact} */\n\t_model: undefined,\n\n\t/** @type {boolean} */\n\t_actionMenuShown: false,\n\n\tevents: {\n\t\t'click .icon-more': '_onToggleActionsMenu'\n\t},\n\n\tcontactTemplate: require('./contactsmenu/contact.handlebars'),\n\n\t/**\n\t * @param {object} data\n\t * @returns {undefined}\n\t */\n\ttemplate: function(data) {\n\t\treturn this.contactTemplate(data)\n\t},\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis._model = options.model\n\t\tthis.on('parent:toggle:actionmenu', this._onOtherActionMenuOpened, this)\n\t},\n\n\t/**\n\t * @returns {self}\n\t */\n\trender: function() {\n\t\tthis.$el.html(this.template({\n\t\t\tcontact: this._model.toJSON()\n\t\t}))\n\t\tthis.delegateEvents()\n\n\t\t// Show placeholder if no avatar is available (avatar is rendered as img, not div)\n\t\tthis.$('div.avatar').imageplaceholder(this._model.get('fullName'))\n\n\t\t// Show tooltip for top action\n\t\tthis.$('.top-action').tooltip({ placement: 'left' })\n\t\t// Show tooltip for second action\n\t\tthis.$('.second-action').tooltip({ placement: 'left' })\n\n\t\treturn this\n\t},\n\n\t/**\n\t * Toggle the visibility of the action popover menu\n\t *\n\t * @private\n\t * @returns {undefined}\n\t */\n\t_onToggleActionsMenu: function() {\n\t\tthis._actionMenuShown = !this._actionMenuShown\n\t\tif (this._actionMenuShown) {\n\t\t\tthis.$('.menu').show()\n\t\t} else {\n\t\t\tthis.$('.menu').hide()\n\t\t}\n\t\tthis.trigger('toggle:actionmenu', this.$el)\n\t},\n\n\t/**\n\t * @private\n\t * @argument {jQuery} $src\n\t * @returns {undefined}\n\t */\n\t_onOtherActionMenuOpened: function($src) {\n\t\tif (this.$el.is($src)) {\n\t\t\t// Ignore\n\t\t\treturn\n\t\t}\n\t\tthis._actionMenuShown = false\n\t\tthis.$('.menu').hide()\n\t}\n})\n\n/**\n * @class ContactsMenuView\n * @private\n */\nconst ContactsMenuView = View.extend({\n\n\t/** @type {undefined|function} */\n\t_loadingTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_errorTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_contentTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_contactsTemplate: undefined,\n\n\t/** @type {undefined|ContactCollection} */\n\t_contacts: undefined,\n\n\t/** @type {string} */\n\t_searchTerm: '',\n\n\tevents: {\n\t\t'input #contactsmenu-search': '_onSearch'\n\t},\n\n\ttemplates: {\n\t\tloading: require('./contactsmenu/loading.handlebars'),\n\t\terror: require('./contactsmenu/error.handlebars'),\n\t\tmenu: require('./contactsmenu/menu.handlebars'),\n\t\tlist: require('./contactsmenu/list.handlebars')\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\t_onSearch: _.debounce(function(e) {\n\t\tvar searchTerm = this.$('#contactsmenu-search').val()\n\t\t// IE11 triggers an 'input' event after the view has been rendered\n\t\t// resulting in an endless loading loop. To prevent this, we remember\n\t\t// the last search term to savely ignore some events\n\t\t// See https://github.com/nextcloud/server/issues/5281\n\t\tif (searchTerm !== this._searchTerm) {\n\t\t\tthis.trigger('search', this.$('#contactsmenu-search').val())\n\t\t\tthis._searchTerm = searchTerm\n\t\t}\n\t}, 700),\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tloadingTemplate: function(data) {\n\t\treturn this.templates.loading(data)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\terrorTemplate: function(data) {\n\t\treturn this.templates.error(\n\t\t\t_.extend({\n\t\t\t\tcouldNotLoadText: t('core', 'Could not load your contacts')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tcontentTemplate: function(data) {\n\t\treturn this.templates.menu(\n\t\t\t_.extend({\n\t\t\t\tsearchContactsText: t('core', 'Search contacts …')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tcontactsTemplate: function(data) {\n\t\treturn this.templates.list(\n\t\t\t_.extend({\n\t\t\t\tnoContactsFoundText: t('core', 'No contacts found'),\n\t\t\t\tshowAllContactsText: t('core', 'Show all contacts …'),\n\t\t\t\tcontactsAppMgmtText: t('core', 'Install the Contacts app')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis.options = options\n\t},\n\n\t/**\n\t * @param {string} text\n\t * @returns {undefined}\n\t */\n\tshowLoading: function(text) {\n\t\tthis.render()\n\t\tthis._contacts = undefined\n\t\tthis.$('.content').html(this.loadingTemplate({\n\t\t\tloadingText: text\n\t\t}))\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\tshowError: function() {\n\t\tthis.render()\n\t\tthis._contacts = undefined\n\t\tthis.$('.content').html(this.errorTemplate())\n\t},\n\n\t/**\n\t * @param {object} viewData\n\t * @param {string} searchTerm\n\t * @returns {undefined}\n\t */\n\tshowContacts: function(viewData, searchTerm) {\n\t\tthis._contacts = viewData.contacts\n\t\tthis.render({\n\t\t\tcontacts: viewData.contacts\n\t\t})\n\n\t\tvar list = new ContactsListView({\n\t\t\tcollection: viewData.contacts\n\t\t})\n\t\tlist.render()\n\t\tthis.$('.content').html(this.contactsTemplate({\n\t\t\tcontacts: viewData.contacts,\n\t\t\tsearchTerm: searchTerm,\n\t\t\tcontactsAppEnabled: viewData.contactsAppEnabled,\n\t\t\tcontactsAppURL: OC.generateUrl('/apps/contacts'),\n\t\t\tcanInstallApp: OC.isUserAdmin(),\n\t\t\tcontactsAppMgmtURL: OC.generateUrl('/settings/apps/social/contacts')\n\t\t}))\n\t\tthis.$('#contactsmenu-contacts').html(list.$el)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {self}\n\t */\n\trender: function(data) {\n\t\tvar searchVal = this.$('#contactsmenu-search').val()\n\t\tthis.$el.html(this.contentTemplate(data))\n\n\t\t// Focus search\n\t\tthis.$('#contactsmenu-search').val(searchVal)\n\t\tthis.$('#contactsmenu-search').focus()\n\t\treturn this\n\t}\n\n})\n\n/**\n * @param {Object} options\n * @param {jQuery} options.el\n * @param {jQuery} options.trigger\n * @class ContactsMenu\n * @memberOf OC\n */\nconst ContactsMenu = function(options) {\n\tthis.initialize(options)\n}\n\nContactsMenu.prototype = {\n\t/** @type {jQuery} */\n\t$el: undefined,\n\n\t/** @type {jQuery} */\n\t_$trigger: undefined,\n\n\t/** @type {ContactsMenuView} */\n\t_view: undefined,\n\n\t/** @type {Promise} */\n\t_contactsPromise: undefined,\n\n\t/**\n\t * @param {Object} options\n\t * @param {jQuery} options.el - the element to render the menu in\n\t * @param {jQuery} options.trigger - the element to click on to open the menu\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis.$el = options.el\n\t\tthis._$trigger = options.trigger\n\n\t\tthis._view = new ContactsMenuView({\n\t\t\tel: this.$el\n\t\t})\n\t\tthis._view.on('search', function(searchTerm) {\n\t\t\tthis._loadContacts(searchTerm)\n\t\t}, this)\n\n\t\tOC.registerMenu(this._$trigger, this.$el, function() {\n\t\t\tthis._toggleVisibility(true)\n\t\t}.bind(this), true)\n\t\tthis.$el.on('beforeHide', function() {\n\t\t\tthis._toggleVisibility(false)\n\t\t}.bind(this))\n\t},\n\n\t/**\n\t * @private\n\t * @param {boolean} show\n\t * @returns {Promise}\n\t */\n\t_toggleVisibility: function(show) {\n\t\tif (show) {\n\t\t\treturn this._loadContacts()\n\t\t} else {\n\t\t\tthis.$el.html('')\n\t\t\treturn Promise.resolve()\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t * @param {string|undefined} searchTerm\n\t * @returns {Promise}\n\t */\n\t_getContacts: function(searchTerm) {\n\t\tvar url = OC.generateUrl('/contactsmenu/contacts')\n\t\treturn Promise.resolve($.ajax(url, {\n\t\t\tmethod: 'POST',\n\t\t\tdata: {\n\t\t\t\tfilter: searchTerm\n\t\t\t}\n\t\t}))\n\t},\n\n\t/**\n\t * @param {string|undefined} searchTerm\n\t * @returns {undefined}\n\t */\n\t_loadContacts: function(searchTerm) {\n\t\tvar self = this\n\n\t\tif (!self._contactsPromise) {\n\t\t\tself._contactsPromise = self._getContacts(searchTerm)\n\t\t}\n\n\t\tif (_.isUndefined(searchTerm) || searchTerm === '') {\n\t\t\tself._view.showLoading(t('core', 'Loading your contacts …'))\n\t\t} else {\n\t\t\tself._view.showLoading(t('core', 'Looking for {term} …', {\n\t\t\t\tterm: searchTerm\n\t\t\t}))\n\t\t}\n\t\treturn self._contactsPromise.then(function(data) {\n\t\t\t// Convert contact entries to Backbone collection\n\t\t\tdata.contacts = new ContactCollection(data.contacts)\n\n\t\t\tself._view.showContacts(data, searchTerm)\n\t\t}, function(e) {\n\t\t\tself._view.showError()\n\t\t\tconsole.error('There was an error loading your contacts', e)\n\t\t}).then(function() {\n\t\t\t// Delete promise, so that contacts are fetched again when the\n\t\t\t// menu is opened the next time.\n\t\t\tdelete self._contactsPromise\n\t\t}).catch(console.error.bind(this))\n\t}\n}\n\nexport default ContactsMenu\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Joas Schilling <coding@schilljs.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst rawUid = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user')\nconst displayName = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user-displayname')\n\nexport const currentUser = rawUid !== undefined ? rawUid : false\n\nexport const getCurrentUser = () => {\n\treturn {\n\t\tuid: currentUser,\n\t\tdisplayName,\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Search from './search'\n\n/**\n * Namespace for apps\n *\n * @namespace OCA\n */\nexport default {\n\t/**\n\t * @deprecated 20.0.0, will be removed in Nextcloud 22\n\t */\n\tSearch,\n}\n","/**\n * @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class Search {\n\n\t/**\n\t * @deprecated 20.0.0, will be removed in Nextcloud 22\n\t */\n\tconstructor() {\n\t\tconsole.warn('OCA.Search is deprecated. Please use the unified search API instead')\n\t}\n\n}\n","/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/**\n * Return whether the DOM event is an accessible mouse or keyboard element activation\n *\n * @param {Event} event DOM event\n *\n * @return {boolean}\n */\nexport const isA11yActivation = (event) => {\n\tif (event.type === 'click') {\n\t\treturn true\n\t}\n\tif (event.type === 'keydown' && event.key === 'Enter') {\n\t\treturn true\n\t}\n\treturn false\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n * @copyright Copyright (c) 2019 Gary Kim <gary@garykim.dev>\n *\n * @author Bartek Przybylski <bart.p.pl@gmail.com>\n * @author Christopher Schäpers <kondou@ts.unde.re>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Daniel Kesselberg <mail@danielkesselberg.de>\n * @author Florian Schunk <florian.schunk@rwth-aachen.de>\n * @author Gary Kim <gary@garykim.dev>\n * @author Hendrik Leppelsack <hendrik@leppelsack.de>\n * @author Jan-Christoph Borchardt <hey@jancborchardt.net>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Jörn Friedrich Dreyer <jfd@butonic.de>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Loïc Hermann <loic.hermann@sciam.fr>\n * @author Morris Jobke <hey@morrisjobke.de>\n * @author Olivier Paroz <github@oparoz.com>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Sujith Haridasan <Sujith_Haridasan@mentor.com>\n * @author Thomas Citharel <nextcloud@tcit.fr>\n * @author Thomas Müller <thomas.mueller@tmit.eu>\n * @author Thomas Tanghus <thomas@tanghus.net>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport $ from 'jquery'\n\nimport OC from './index'\nimport OCA from '../OCA/index'\nimport { isA11yActivation } from '../Util/a11y'\n\n/**\n * this class to ease the usage of jquery dialogs\n */\nconst Dialogs = {\n\t// dialog button types\n\tYES_NO_BUTTONS: 70,\n\tOK_BUTTONS: 71,\n\n\tFILEPICKER_TYPE_CHOOSE: 1,\n\tFILEPICKER_TYPE_MOVE: 2,\n\tFILEPICKER_TYPE_COPY: 3,\n\tFILEPICKER_TYPE_COPY_MOVE: 4,\n\tFILEPICKER_TYPE_CUSTOM: 5,\n\n\t// used to name each dialog\n\tdialogsCounter: 0,\n\n\t/**\n\t * displays alert dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t */\n\talert: function(text, title, callback, modal) {\n\t\tthis.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'alert',\n\t\t\tDialogs.OK_BUTTON,\n\t\t\tcallback,\n\t\t\tmodal\n\t\t)\n\t},\n\t/**\n\t * displays info dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t */\n\tinfo: function(text, title, callback, modal) {\n\t\tthis.message(text, title, 'info', Dialogs.OK_BUTTON, callback, modal)\n\t},\n\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirm: function(text, title, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'notice',\n\t\t\tDialogs.YES_NO_BUTTONS,\n\t\t\tcallback,\n\t\t\tmodal\n\t\t)\n\t},\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {(number|{type: number, confirm: string, cancel: string, confirmClasses: string})} buttons text content of buttons\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirmDestructive: function(text, title, buttons, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'none',\n\t\t\tbuttons,\n\t\t\tcallback,\n\t\t\tmodal === undefined ? true : modal\n\t\t)\n\t},\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirmHtml: function(text, title, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'notice',\n\t\t\tDialogs.YES_NO_BUTTONS,\n\t\t\tcallback,\n\t\t\tmodal,\n\t\t\ttrue\n\t\t)\n\t},\n\t/**\n\t * displays prompt dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @param {string} name name of the input field\n\t * @param {boolean} password whether the input should be a password input\n\t * @returns {Promise}\n\t */\n\tprompt: function(text, title, callback, modal, name, password) {\n\t\treturn $.when(this._getMessageTemplate()).then(function($tmpl) {\n\t\t\tvar dialogName = 'oc-dialog-' + Dialogs.dialogsCounter + '-content'\n\t\t\tvar dialogId = '#' + dialogName\n\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\tmessage: text,\n\t\t\t\ttype: 'notice'\n\t\t\t})\n\t\t\tvar input = $('<input/>')\n\t\t\tinput.attr('type', password ? 'password' : 'text').attr('id', dialogName + '-input').attr('placeholder', name)\n\t\t\tvar label = $('<label/>').attr('for', dialogName + '-input').text(name + ': ')\n\t\t\t$dlg.append(label)\n\t\t\t$dlg.append(input)\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\t$('body').append($dlg)\n\n\t\t\t// wrap callback in _.once():\n\t\t\t// only call callback once and not twice (button handler and close\n\t\t\t// event) but call it for the close event, if ESC or the x is hit\n\t\t\tif (callback !== undefined) {\n\t\t\t\tcallback = _.once(callback)\n\t\t\t}\n\n\t\t\tvar buttonlist = [{\n\t\t\t\ttext: t('core', 'No'),\n\t\t\t\tclick: function() {\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(false, input.val())\n\t\t\t\t\t}\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\ttext: t('core', 'Yes'),\n\t\t\t\tclick: function() {\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(true, input.val())\n\t\t\t\t\t}\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t},\n\t\t\t\tdefaultButton: true\n\t\t\t}]\n\n\t\t\t$(dialogId).ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist,\n\t\t\t\tclose: function() {\n\t\t\t\t\t// callback is already fired if Yes/No is clicked directly\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(false, input.val())\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t\tinput.focus()\n\t\t\tDialogs.dialogsCounter++\n\t\t})\n\t},\n\t/**\n\t * show a file picker to pick a file from\n\t *\n\t * In order to pick several types of mime types they need to be passed as an\n\t * array of strings.\n\t *\n\t * When no mime type filter is given only files can be selected. In order to\n\t * be able to select both files and folders \"['*', 'httpd/unix-directory']\"\n\t * should be used instead.\n\t *\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses Choose\n\t * @param {boolean} [multiselect] whether it should be possible to select multiple files\n\t * @param {string[]} [mimetypeFilter] mimetype to filter by - directories will always be included\n\t * @param {boolean} [modal] make the dialog modal\n\t * @param {string} [type] Type of file picker : Choose, copy, move, copy and move\n\t * @param {string} [path] path to the folder that the the file can be picket from\n\t * @param {Object} [options] additonal options that need to be set\n\t * @param {Function} [options.filter] filter function for advanced filtering\n\t */\n\tfilepicker: function(title, callback, multiselect, mimetypeFilter, modal, type, path, options) {\n\t\tvar self = this\n\n\t\tthis.filepicker.sortField = 'name'\n\t\tthis.filepicker.sortOrder = 'asc'\n\t\t// avoid opening the picker twice\n\t\tif (this.filepicker.loading) {\n\t\t\treturn\n\t\t}\n\n\t\tif (type === undefined) {\n\t\t\ttype = this.FILEPICKER_TYPE_CHOOSE\n\t\t}\n\n\t\tvar emptyText = t('core', 'No files in here')\n\t\tvar newText = t('files', 'New folder')\n\t\tif (type === this.FILEPICKER_TYPE_COPY || type === this.FILEPICKER_TYPE_MOVE || type === this.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\temptyText = t('core', 'No more subfolders in here')\n\t\t}\n\n\t\tthis.filepicker.loading = true\n\t\tthis.filepicker.filesClient = (OCA.Sharing && OCA.Sharing.PublicApp && OCA.Sharing.PublicApp.fileList) ? OCA.Sharing.PublicApp.fileList.filesClient : OC.Files.getClient()\n\n\t\tthis.filelist = null\n\t\tpath = path || ''\n\t\toptions = Object.assign({\n\t\t\tallowDirectoryChooser: false\n\t\t}, options)\n\n\t\t$.when(this._getFilePickerTemplate()).then(function($tmpl) {\n\t\t\tself.filepicker.loading = false\n\t\t\tvar dialogName = 'oc-dialog-filepicker-content'\n\t\t\tif (self.$filePicker) {\n\t\t\t\tself.$filePicker.ocdialog('close')\n\t\t\t}\n\n\t\t\tif (mimetypeFilter === undefined || mimetypeFilter === null) {\n\t\t\t\tmimetypeFilter = []\n\t\t\t}\n\t\t\tif (typeof (mimetypeFilter) === 'string') {\n\t\t\t\tmimetypeFilter = [mimetypeFilter]\n\t\t\t}\n\n\t\t\tself.$filePicker = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\temptytext: emptyText,\n\t\t\t\tnewtext: newText,\n\t\t\t\tnameCol: t('core', 'Name'),\n\t\t\t\tsizeCol: t('core', 'Size'),\n\t\t\t\tmodifiedCol: t('core', 'Modified')\n\t\t\t}).data('path', path).data('multiselect', multiselect).data('mimetype', mimetypeFilter).data('allowDirectoryChooser', options.allowDirectoryChooser)\n\t\t\tif (typeof(options.filter) === 'function') {\n\t\t\t\tself.$filePicker.data('filter', options.filter)\n\t\t\t}\n\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\tif (multiselect === undefined) {\n\t\t\t\tmultiselect = false\n\t\t\t}\n\n\t\t\t$('body').prepend(self.$filePicker)\n\n\t\t\tself.$showGridView = $('button#picker-showgridview')\n\t\t\tself.$showGridView.on('click keydown', function(event) {\n\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\tself._onGridviewChange()\n\t\t\t\t}\n\t\t\t})\n\t\t\tself._getGridSettings()\n\n\t\t\tvar newButton = self.$filePicker.find('.actions.creatable .button-add')\n\t\t\tif (type === self.FILEPICKER_TYPE_CHOOSE && !options.allowDirectoryChooser) {\n\t\t\t\tself.$filePicker.find('.actions.creatable').hide()\n\t\t\t}\n\t\t\tnewButton.on('focus', function() {\n\t\t\t\tself.$filePicker.ocdialog('setEnterCallback', function(event) {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tnewButton.click()\n\t\t\t\t})\n\t\t\t})\n\t\t\tnewButton.on('blur', function() {\n\t\t\t\tself.$filePicker.ocdialog('unsetEnterCallback')\n\t\t\t})\n\n\t\t\tOC.registerMenu(newButton, self.$filePicker.find('.menu'), function() {\n\t\t\t\t$input.tooltip('hide')\n\t\t\t\t$input.focus()\n\t\t\t\tself.$filePicker.ocdialog('setEnterCallback', function(event) {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tself.$filePicker.submit()\n\t\t\t\t})\n\t\t\t\tvar newName = $input.val()\n\t\t\t\tvar lastPos = newName.lastIndexOf('.')\n\t\t\t\tif (lastPos === -1) {\n\t\t\t\t\tlastPos = newName.length\n\t\t\t\t}\n\t\t\t\t$input.selectRange(0, lastPos)\n\t\t\t})\n\t\t\tvar $form = self.$filePicker.find('.filenameform')\n\t\t\tvar $input = $form.find('input[type=\\'text\\']')\n\t\t\tvar $submit = $form.find('input[type=\\'submit\\']')\n\t\t\t$input.on('keydown', function(event) {\n\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t$form.submit()\n\t\t\t\t}\n\t\t\t})\n\t\t\t$submit.on('click', function(event) {\n\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\tevent.preventDefault()\n\t\t\t\t$form.submit()\n\t\t\t})\n\n\t\t\t/**\n\t\t\t * Checks whether the given file name is valid.\n\t\t\t *\n\t\t\t * @param name file name to check\n\t\t\t * @return true if the file name is valid.\n\t\t\t * @throws a string exception with an error message if\n\t\t\t * the file name is not valid\n\t\t\t *\n\t\t\t * NOTE: This function is duplicated in the files app:\n\t\t\t * https://github.com/nextcloud/server/blob/b9bc2417e7a8dc81feb0abe20359bedaf864f790/apps/files/js/files.js#L127-L148\n\t\t\t */\n\t\t\tvar isFileNameValid = function (name) {\n\t\t\t\tvar trimmedName = name.trim();\n\t\t\t\tif (trimmedName === '.' || trimmedName === '..')\n\t\t\t\t{\n\t\t\t\t\tthrow t('files', '\"{name}\" is an invalid file name.', {name: name})\n\t\t\t\t} else if (trimmedName.length === 0) {\n\t\t\t\t\tthrow t('files', 'File name cannot be empty.')\n\t\t\t\t} else if (trimmedName.indexOf('/') !== -1) {\n\t\t\t\t\tthrow t('files', '\"/\" is not allowed inside a file name.')\n\t\t\t\t} else if (!!(trimmedName.match(OC.config.blacklist_files_regex))) {\n\t\t\t\t\tthrow t('files', '\"{name}\" is not an allowed filetype', {name: name})\n\t\t\t\t}\n\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\tvar checkInput = function() {\n\t\t\t\tvar filename = $input.val()\n\t\t\t\ttry {\n\t\t\t\t\tif (!isFileNameValid(filename)) {\n\t\t\t\t\t\t// isFileNameValid(filename) throws an exception itself\n\t\t\t\t\t} else if (self.filelist.find(function(file) {\n\t\t\t\t\t\treturn file.name === this\n\t\t\t\t\t}, filename)) {\n\t\t\t\t\t\tthrow t('files', '{newName} already exists', { newName: filename }, undefined, {\n\t\t\t\t\t\t\tescape: false\n\t\t\t\t\t\t})\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn true\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\t$input.attr('title', error)\n\t\t\t\t\t$input.tooltip({\n\t\t\t\t\t\tplacement: 'right',\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\t'container': '.newFolderMenu'\n\t\t\t\t\t})\n\t\t\t\t\t$input.tooltip('_fixTitle')\n\t\t\t\t\t$input.tooltip('show')\n\t\t\t\t\t$input.addClass('error')\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\t$form.on('submit', function(event) {\n\t\t\t\tevent.stopPropagation()\n\t\t\t\tevent.preventDefault()\n\n\t\t\t\tif (checkInput()) {\n\t\t\t\t\tvar newname = $input.val()\n\t\t\t\t\tself.filepicker.filesClient.createDirectory(self.$filePicker.data('path') + \"/\" + newname).always(function (status) {\n\t\t\t\t\t\tself._fillFilePicker(self.$filePicker.data('path') + \"/\" + newname)\n\t\t\t\t\t})\n\t\t\t\t\tOC.hideMenus()\n\t\t\t\t\tself.$filePicker.ocdialog('unsetEnterCallback')\n\t\t\t\t\tself.$filePicker.click()\n\t\t\t\t\t$input.val(newText)\n\t\t\t\t}\n\t\t\t})\n\t\t\t$input.on('input', function(event) {\n\t\t\t\t$input.tooltip('hide')\n\t\t\t})\n\n\t\t\tself.$filePicker.ready(function() {\n\t\t\t\tself.$fileListHeader = self.$filePicker.find('.filelist thead tr')\n\t\t\t\tself.$filelist = self.$filePicker.find('.filelist tbody')\n\t\t\t\tself.$filelistContainer = self.$filePicker.find('.filelist-container')\n\t\t\t\tself.$dirTree = self.$filePicker.find('.dirtree')\n\t\t\t\tself.$dirTree.on('click keydown', 'div:not(:last-child)', self, function(event) {\n\t\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\t\tself._handleTreeListSelect(event, type)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tself.$filelist.on('click keydown', 'tr', function(event) {\n\t\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\t\tself._handlePickerClick(event, $(this), type)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tself.$fileListHeader.on('click keydown', 'a', function(event) {\n\t\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\t\tvar dir = self.$filePicker.data('path')\n\t\t\t\t\t\tself.filepicker.sortField = $(event.currentTarget).data('sort')\n\t\t\t\t\t\tself.filepicker.sortOrder = self.filepicker.sortOrder === 'asc' ? 'desc' : 'asc'\n\t\t\t\t\t\tself._fillFilePicker(dir)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tself._fillFilePicker(path)\n\t\t\t})\n\n\t\t\t// build buttons\n\t\t\tvar functionToCall = function(returnType) {\n\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\tvar datapath\n\t\t\t\t\tif (multiselect === true) {\n\t\t\t\t\t\tdatapath = []\n\t\t\t\t\t\tself.$filelist.find('tr.filepicker_element_selected').each(function(index, element) {\n\t\t\t\t\t\t\tdatapath.push(self.$filePicker.data('path') + '/' + $(element).data('entryname'))\n\t\t\t\t\t\t})\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdatapath = self.$filePicker.data('path')\n\t\t\t\t\t\tvar selectedName = self.$filelist.find('tr.filepicker_element_selected').data('entryname')\n\t\t\t\t\t\tif (selectedName) {\n\t\t\t\t\t\t\tdatapath += '/' + selectedName\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcallback(datapath, returnType)\n\t\t\t\t\tself.$filePicker.ocdialog('close')\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar chooseCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_CHOOSE)\n\t\t\t}\n\n\t\t\tvar copyCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_COPY)\n\t\t\t}\n\n\t\t\tvar moveCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_MOVE)\n\t\t\t}\n\n\t\t\tvar buttonlist = []\n\t\t\tif (type === Dialogs.FILEPICKER_TYPE_CHOOSE) {\n\t\t\t\tbuttonlist.push({\n\t\t\t\t\ttext: t('core', 'Choose'),\n\t\t\t\t\tclick: chooseCallback,\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t})\n\t\t\t} else if (type === Dialogs.FILEPICKER_TYPE_CUSTOM) {\n\t\t\t\toptions.buttons.forEach(function(button) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: button.text,\n\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\tfunctionToCall(button.type)\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdefaultButton: button.defaultButton\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tif (type === Dialogs.FILEPICKER_TYPE_COPY || type === Dialogs.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: t('core', 'Copy'),\n\t\t\t\t\t\tclick: copyCallback,\n\t\t\t\t\t\tdefaultButton: false\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (type === Dialogs.FILEPICKER_TYPE_MOVE || type === Dialogs.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: t('core', 'Move'),\n\t\t\t\t\t\tclick: moveCallback,\n\t\t\t\t\t\tdefaultButton: true\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tself.$filePicker.ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\t// max-width of 600\n\t\t\t\twidth: 600,\n\t\t\t\theight: 500,\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist,\n\t\t\t\tstyle: {\n\t\t\t\t\tbuttons: 'aside'\n\t\t\t\t},\n\t\t\t\tclose: function() {\n\t\t\t\t\ttry {\n\t\t\t\t\t\t$(this).ocdialog('destroy').remove()\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t}\n\t\t\t\t\tself.$filePicker = null\n\t\t\t\t}\n\t\t\t})\n\n\t\t\t// We can access primary class only from oc-dialog.\n\t\t\t// Hence this is one of the approach to get the choose button.\n\t\t\tvar getOcDialog = self.$filePicker.closest('.oc-dialog')\n\t\t\tvar buttonEnableDisable = getOcDialog.find('.primary')\n\t\t\tif (self.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || self.$filePicker.data('allowDirectoryChooser')) {\n\t\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t\t} else {\n\t\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t\t}\n\t\t})\n\t\t\t.fail(function(status, error) {\n\t\t\t\t// If the method is called while navigating away\n\t\t\t\t// from the page, it is probably not needed ;)\n\t\t\t\tself.filepicker.loading = false\n\t\t\t\tif (status !== 0) {\n\t\t\t\t\talert(t('core', 'Error loading file picker template: {error}', { error: error }))\n\t\t\t\t}\n\t\t\t})\n\t},\n\t/**\n\t * Displays raw dialog\n\t * You better use a wrapper instead ...\n\t */\n\tmessage: function(content, title, dialogType, buttons, callback, modal, allowHtml) {\n\t\treturn $.when(this._getMessageTemplate()).then(function($tmpl) {\n\t\t\tvar dialogName = 'oc-dialog-' + Dialogs.dialogsCounter + '-content'\n\t\t\tvar dialogId = '#' + dialogName\n\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\tmessage: content,\n\t\t\t\ttype: dialogType\n\t\t\t}, allowHtml ? { escapeFunction: '' } : {})\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\t$('body').append($dlg)\n\t\t\tvar buttonlist = []\n\t\t\tswitch (buttons) {\n\t\t\tcase Dialogs.YES_NO_BUTTONS:\n\t\t\t\tbuttonlist = [{\n\t\t\t\t\ttext: t('core', 'No'),\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\tcallback(false)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttext: t('core', 'Yes'),\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t},\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t}]\n\t\t\t\tbreak\n\t\t\tcase Dialogs.OK_BUTTON:\n\t\t\t\tvar functionToCall = function() {\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\tcallback()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbuttonlist[0] = {\n\t\t\t\t\ttext: t('core', 'OK'),\n\t\t\t\t\tclick: functionToCall,\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tif (typeof(buttons) === 'object') {\n\t\t\t\t\tswitch (buttons.type) {\n\t\t\t\t\t\tcase Dialogs.YES_NO_BUTTONS:\n\t\t\t\t\t\t\tbuttonlist = [{\n\t\t\t\t\t\t\t\ttext: buttons.cancel || t('core', 'No'),\n\t\t\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\t\t\t\tcallback(false)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttext: buttons.confirm || t('core', 'Yes'),\n\t\t\t\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tdefaultButton: true,\n\t\t\t\t\t\t\t\t\tclasses: buttons.confirmClasses\n\t\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t$(dialogId).ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\tcloseCallback: () => { callback && callback(false) },\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist\n\t\t\t})\n\t\t\tDialogs.dialogsCounter++\n\t\t})\n\t\t\t.fail(function(status, error) {\n\t\t\t\t// If the method is called while navigating away from\n\t\t\t\t// the page, we still want to deliver the message.\n\t\t\t\tif (status === 0) {\n\t\t\t\t\talert(title + ': ' + content)\n\t\t\t\t} else {\n\t\t\t\t\talert(t('core', 'Error loading message template: {error}', { error: error }))\n\t\t\t\t}\n\t\t\t})\n\t},\n\t_fileexistsshown: false,\n\t/**\n\t * Displays file exists dialog\n\t * @param {object} data upload object\n\t * @param {object} original file with name, size and mtime\n\t * @param {object} replacement file with name, size and mtime\n\t * @param {object} controller with onCancel, onSkip, onReplace and onRename methods\n\t * @returns {Promise} jquery promise that resolves after the dialog template was loaded\n\t */\n\tfileexists: function(data, original, replacement, controller) {\n\t\tvar self = this\n\t\tvar dialogDeferred = new $.Deferred()\n\n\t\tvar getCroppedPreview = function(file) {\n\t\t\tvar deferred = new $.Deferred()\n\t\t\t// Only process image files.\n\t\t\tvar type = file.type && file.type.split('/').shift()\n\t\t\tif (window.FileReader && type === 'image') {\n\t\t\t\tvar reader = new FileReader()\n\t\t\t\treader.onload = function(e) {\n\t\t\t\t\tvar blob = new Blob([e.target.result])\n\t\t\t\t\twindow.URL = window.URL || window.webkitURL\n\t\t\t\t\tvar originalUrl = window.URL.createObjectURL(blob)\n\t\t\t\t\tvar image = new Image()\n\t\t\t\t\timage.src = originalUrl\n\t\t\t\t\timage.onload = function() {\n\t\t\t\t\t\tvar url = crop(image)\n\t\t\t\t\t\tdeferred.resolve(url)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treader.readAsArrayBuffer(file)\n\t\t\t} else {\n\t\t\t\tdeferred.reject()\n\t\t\t}\n\t\t\treturn deferred\n\t\t}\n\n\t\tvar crop = function(img) {\n\t\t\tvar canvas = document.createElement('canvas')\n\t\t\tvar targetSize = 96\n\t\t\tvar width = img.width\n\t\t\tvar height = img.height\n\t\t\tvar x; var y; var size\n\n\t\t\t// Calculate the width and height, constraining the proportions\n\t\t\tif (width > height) {\n\t\t\t\ty = 0\n\t\t\t\tx = (width - height) / 2\n\t\t\t} else {\n\t\t\t\ty = (height - width) / 2\n\t\t\t\tx = 0\n\t\t\t}\n\t\t\tsize = Math.min(width, height)\n\n\t\t\t// Set canvas size to the cropped area\n\t\t\tcanvas.width = size\n\t\t\tcanvas.height = size\n\t\t\tvar ctx = canvas.getContext('2d')\n\t\t\tctx.drawImage(img, x, y, size, size, 0, 0, size, size)\n\n\t\t\t// Resize the canvas to match the destination (right size uses 96px)\n\t\t\tresampleHermite(canvas, size, size, targetSize, targetSize)\n\n\t\t\treturn canvas.toDataURL('image/png', 0.7)\n\t\t}\n\n\t\t/**\n\t\t * Fast image resize/resample using Hermite filter with JavaScript.\n\t\t *\n\t\t * @author: ViliusL\n\t\t *\n\t\t * @param {*} canvas\n\t\t * @param {number} W\n\t\t * @param {number} H\n\t\t * @param {number} W2\n\t\t * @param {number} H2\n\t\t */\n\t\tvar resampleHermite = function(canvas, W, H, W2, H2) {\n\t\t\tW2 = Math.round(W2)\n\t\t\tH2 = Math.round(H2)\n\t\t\tvar img = canvas.getContext('2d').getImageData(0, 0, W, H)\n\t\t\tvar img2 = canvas.getContext('2d').getImageData(0, 0, W2, H2)\n\t\t\tvar data = img.data\n\t\t\tvar data2 = img2.data\n\t\t\tvar ratio_w = W / W2\n\t\t\tvar ratio_h = H / H2\n\t\t\tvar ratio_w_half = Math.ceil(ratio_w / 2)\n\t\t\tvar ratio_h_half = Math.ceil(ratio_h / 2)\n\n\t\t\tfor (var j = 0; j < H2; j++) {\n\t\t\t\tfor (var i = 0; i < W2; i++) {\n\t\t\t\t\tvar x2 = (i + j * W2) * 4\n\t\t\t\t\tvar weight = 0\n\t\t\t\t\tvar weights = 0\n\t\t\t\t\tvar weights_alpha = 0\n\t\t\t\t\tvar gx_r = 0\n\t\t\t\t\tvar gx_g = 0\n\t\t\t\t\tvar gx_b = 0\n\t\t\t\t\tvar gx_a = 0\n\t\t\t\t\tvar center_y = (j + 0.5) * ratio_h\n\t\t\t\t\tfor (var yy = Math.floor(j * ratio_h); yy < (j + 1) * ratio_h; yy++) {\n\t\t\t\t\t\tvar dy = Math.abs(center_y - (yy + 0.5)) / ratio_h_half\n\t\t\t\t\t\tvar center_x = (i + 0.5) * ratio_w\n\t\t\t\t\t\tvar w0 = dy * dy // pre-calc part of w\n\t\t\t\t\t\tfor (var xx = Math.floor(i * ratio_w); xx < (i + 1) * ratio_w; xx++) {\n\t\t\t\t\t\t\tvar dx = Math.abs(center_x - (xx + 0.5)) / ratio_w_half\n\t\t\t\t\t\t\tvar w = Math.sqrt(w0 + dx * dx)\n\t\t\t\t\t\t\tif (w >= -1 && w <= 1) {\n\t\t\t\t\t\t\t\t// hermite filter\n\t\t\t\t\t\t\t\tweight = 2 * w * w * w - 3 * w * w + 1\n\t\t\t\t\t\t\t\tif (weight > 0) {\n\t\t\t\t\t\t\t\t\tdx = 4 * (xx + yy * W)\n\t\t\t\t\t\t\t\t\t// alpha\n\t\t\t\t\t\t\t\t\tgx_a += weight * data[dx + 3]\n\t\t\t\t\t\t\t\t\tweights_alpha += weight\n\t\t\t\t\t\t\t\t\t// colors\n\t\t\t\t\t\t\t\t\tif (data[dx + 3] < 255) { weight = weight * data[dx + 3] / 250 }\n\t\t\t\t\t\t\t\t\tgx_r += weight * data[dx]\n\t\t\t\t\t\t\t\t\tgx_g += weight * data[dx + 1]\n\t\t\t\t\t\t\t\t\tgx_b += weight * data[dx + 2]\n\t\t\t\t\t\t\t\t\tweights += weight\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdata2[x2] = gx_r / weights\n\t\t\t\t\tdata2[x2 + 1] = gx_g / weights\n\t\t\t\t\tdata2[x2 + 2] = gx_b / weights\n\t\t\t\t\tdata2[x2 + 3] = gx_a / weights_alpha\n\t\t\t\t}\n\t\t\t}\n\t\t\tcanvas.getContext('2d').clearRect(0, 0, Math.max(W, W2), Math.max(H, H2))\n\t\t\tcanvas.width = W2\n\t\t\tcanvas.height = H2\n\t\t\tcanvas.getContext('2d').putImageData(img2, 0, 0)\n\t\t}\n\n\t\tvar addConflict = function($conflicts, original, replacement) {\n\n\t\t\tvar $conflict = $conflicts.find('.template').clone().removeClass('template').addClass('conflict')\n\t\t\tvar $originalDiv = $conflict.find('.original')\n\t\t\tvar $replacementDiv = $conflict.find('.replacement')\n\n\t\t\t$conflict.data('data', data)\n\n\t\t\t$conflict.find('.filename').text(original.name)\n\t\t\t$originalDiv.find('.size').text(OC.Util.humanFileSize(original.size))\n\t\t\t$originalDiv.find('.mtime').text(OC.Util.formatDate(original.mtime))\n\t\t\t// ie sucks\n\t\t\tif (replacement.size && replacement.lastModified) {\n\t\t\t\t$replacementDiv.find('.size').text(OC.Util.humanFileSize(replacement.size))\n\t\t\t\t$replacementDiv.find('.mtime').text(OC.Util.formatDate(replacement.lastModified))\n\t\t\t}\n\t\t\tvar path = original.directory + '/' + original.name\n\t\t\tvar urlSpec = {\n\t\t\t\tfile: path,\n\t\t\t\tx: 96,\n\t\t\t\ty: 96,\n\t\t\t\tc: original.etag,\n\t\t\t\tforceIcon: 0\n\t\t\t}\n\t\t\tvar previewpath = Files.generatePreviewUrl(urlSpec)\n\t\t\t// Escaping single quotes\n\t\t\tpreviewpath = previewpath.replace(/'/g, '%27')\n\t\t\t$originalDiv.find('.icon').css({ 'background-image': \"url('\" + previewpath + \"')\" })\n\t\t\tgetCroppedPreview(replacement).then(\n\t\t\t\tfunction(path) {\n\t\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t\t}, function() {\n\t\t\t\t\tpath = OC.MimeType.getIconUrl(replacement.type)\n\t\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t\t}\n\t\t\t)\n\t\t\t// connect checkboxes with labels\n\t\t\tvar checkboxId = $conflicts.find('.conflict').length\n\t\t\t$originalDiv.find('input:checkbox').attr('id', 'checkbox_original_' + checkboxId)\n\t\t\t$replacementDiv.find('input:checkbox').attr('id', 'checkbox_replacement_' + checkboxId)\n\n\t\t\t$conflicts.append($conflict)\n\n\t\t\t// set more recent mtime bold\n\t\t\t// ie sucks\n\t\t\tif (replacement.lastModified > original.mtime) {\n\t\t\t\t$replacementDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else if (replacement.lastModified < original.mtime) {\n\t\t\t\t$originalDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same mtime collection?\n\t\t\t}\n\n\t\t\t// set bigger size bold\n\t\t\tif (replacement.size && replacement.size > original.size) {\n\t\t\t\t$replacementDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else if (replacement.size && replacement.size < original.size) {\n\t\t\t\t$originalDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same size collection?\n\t\t\t}\n\n\t\t\t// TODO show skip action for files with same size and mtime in bottom row\n\n\t\t\t// always keep readonly files\n\n\t\t\tif (original.status === 'readonly') {\n\t\t\t\t$originalDiv\n\t\t\t\t\t.addClass('readonly')\n\t\t\t\t\t.find('input[type=\"checkbox\"]')\n\t\t\t\t\t.prop('checked', true)\n\t\t\t\t\t.prop('disabled', true)\n\t\t\t\t$originalDiv.find('.message')\n\t\t\t\t\t.text(t('core', 'read-only'))\n\t\t\t}\n\t\t}\n\t\t// var selection = controller.getSelection(data.originalFiles);\n\t\t// if (selection.defaultAction) {\n\t\t//\tcontroller[selection.defaultAction](data);\n\t\t// } else {\n\t\tvar dialogName = 'oc-dialog-fileexists-content'\n\t\tvar dialogId = '#' + dialogName\n\t\tif (this._fileexistsshown) {\n\t\t\t// add conflict\n\n\t\t\tvar $conflicts = $(dialogId + ' .conflicts')\n\t\t\taddConflict($conflicts, original, replacement)\n\n\t\t\tvar count = $(dialogId + ' .conflict').length\n\t\t\tvar title = n('core',\n\t\t\t\t'{count} file conflict',\n\t\t\t\t'{count} file conflicts',\n\t\t\t\tcount,\n\t\t\t\t{ count: count }\n\t\t\t)\n\t\t\t$(dialogId).parent().children('.oc-dialog-title').text(title)\n\n\t\t\t// recalculate dimensions\n\t\t\t$(window).trigger('resize')\n\t\t\tdialogDeferred.resolve()\n\t\t} else {\n\t\t\t// create dialog\n\t\t\tthis._fileexistsshown = true\n\t\t\t$.when(this._getFileExistsTemplate()).then(function($tmpl) {\n\t\t\t\tvar title = t('core', 'One file conflict')\n\t\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\t\tdialog_name: dialogName,\n\t\t\t\t\ttitle: title,\n\t\t\t\t\ttype: 'fileexists',\n\n\t\t\t\t\tallnewfiles: t('core', 'New Files'),\n\t\t\t\t\tallexistingfiles: t('core', 'Already existing files'),\n\n\t\t\t\t\twhy: t('core', 'Which files do you want to keep?'),\n\t\t\t\t\twhat: t('core', 'If you select both versions, the copied file will have a number added to its name.')\n\t\t\t\t})\n\t\t\t\t$('body').append($dlg)\n\n\t\t\t\tif (original && replacement) {\n\t\t\t\t\tvar $conflicts = $dlg.find('.conflicts')\n\t\t\t\t\taddConflict($conflicts, original, replacement)\n\t\t\t\t}\n\n\t\t\t\tvar buttonlist = [{\n\t\t\t\t\ttext: t('core', 'Cancel'),\n\t\t\t\t\tclasses: 'cancel',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onCancel !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onCancel(data)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttext: t('core', 'Continue'),\n\t\t\t\t\tclasses: 'continue',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onContinue !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onContinue($(dialogId + ' .conflict'))\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t}]\n\n\t\t\t\t$(dialogId).ocdialog({\n\t\t\t\t\twidth: 500,\n\t\t\t\t\tcloseOnEscape: true,\n\t\t\t\t\tmodal: true,\n\t\t\t\t\tbuttons: buttonlist,\n\t\t\t\t\tcloseButton: null,\n\t\t\t\t\tclose: function() {\n\t\t\t\t\t\tself._fileexistsshown = false\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t$(this).ocdialog('destroy').remove()\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t// ignore\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t\t$(dialogId).css('height', 'auto')\n\n\t\t\t\tvar $primaryButton = $dlg.closest('.oc-dialog').find('button.continue')\n\t\t\t\t$primaryButton.prop('disabled', true)\n\n\t\t\t\tfunction updatePrimaryButton() {\n\t\t\t\t\tvar checkedCount = $dlg.find('.conflicts .checkbox:checked').length\n\t\t\t\t\t$primaryButton.prop('disabled', checkedCount === 0)\n\t\t\t\t}\n\n\t\t\t\t// add checkbox toggling actions\n\t\t\t\t$(dialogId).find('.allnewfiles').on('click', function() {\n\t\t\t\t\tvar $checkboxes = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.allexistingfiles').on('click', function() {\n\t\t\t\t\tvar $checkboxes = $(dialogId).find('.conflict .original:not(.readonly) input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement,.original:not(.readonly)', function() {\n\t\t\t\t\tvar $checkbox = $(this).find('input[type=\"checkbox\"]')\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement input[type=\"checkbox\"],.original:not(.readonly) input[type=\"checkbox\"]', function() {\n\t\t\t\t\tvar $checkbox = $(this)\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\n\t\t\t\t// update counters\n\t\t\t\t$(dialogId).on('click', '.replacement,.allnewfiles', function() {\n\t\t\t\t\tvar count = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '({count} selected)', { count: count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\t\t\t\t$(dialogId).on('click', '.original,.allexistingfiles', function() {\n\t\t\t\t\tvar count = $(dialogId).find('.conflict .original input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count')\n\t\t\t\t\t\t\t.text(t('core', '({count} selected)', { count: count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\n\t\t\t\tdialogDeferred.resolve()\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdialogDeferred.reject()\n\t\t\t\t\talert(t('core', 'Error loading file exists template'))\n\t\t\t\t})\n\t\t}\n\t\t// }\n\t\treturn dialogDeferred.promise()\n\t},\n\t// get the gridview setting and set the input accordingly\n\t_getGridSettings: function() {\n\t\tconst self = this\n\t\t$.get(OC.generateUrl('/apps/files/api/v1/showgridview'), function(response) {\n\t\t\tself.$showGridView\n\t\t\t\t.removeClass('icon-toggle-filelist icon-toggle-pictures')\n\t\t\t\t.addClass(response.gridview ? 'icon-toggle-filelist' : 'icon-toggle-pictures')\n\t\t\tself.$showGridView.attr(\n\t\t\t\t'aria-label',\n\t\t\t\tresponse.gridview ? t('files', 'Show list view') : t('files', 'Show grid view'),\n\t\t\t)\n\t\t\t$('.list-container').toggleClass('view-grid', response.gridview)\n\t\t})\n\t},\n\t_onGridviewChange: function() {\n\t\tconst isGridView = this.$showGridView.hasClass('icon-toggle-filelist')\n\t\t// only save state if user is logged in\n\t\tif (OC.currentUser) {\n\t\t\t$.post(OC.generateUrl('/apps/files/api/v1/showgridview'), { show: !isGridView })\n\t\t}\n\t\tthis.$showGridView\n\t\t\t.removeClass('icon-toggle-filelist icon-toggle-pictures')\n\t\t\t.addClass(isGridView ? 'icon-toggle-pictures' : 'icon-toggle-filelist')\n\t\tthis.$showGridView.attr(\n\t\t\t'aria-label',\n\t\t\tisGridView ? t('files', 'Show grid view') : t('files', 'Show list view'),\n\t\t)\n\t\tthis.$filePicker.find('.list-container').toggleClass('view-grid', !isGridView)\n\t},\n\t_getFilePickerTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$filePickerTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('core', 'templates', 'filepicker.html'), function(tmpl) {\n\t\t\t\tself.$filePickerTemplate = $(tmpl)\n\t\t\t\tself.$listTmpl = self.$filePickerTemplate.find('.filelist tbody tr:first-child').detach()\n\t\t\t\tdefer.resolve(self.$filePickerTemplate)\n\t\t\t})\n\t\t\t\t.fail(function(jqXHR, textStatus, errorThrown) {\n\t\t\t\t\tdefer.reject(jqXHR.status, errorThrown)\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$filePickerTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\t_getMessageTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$messageTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('core', 'templates', 'message.html'), function(tmpl) {\n\t\t\t\tself.$messageTemplate = $(tmpl)\n\t\t\t\tdefer.resolve(self.$messageTemplate)\n\t\t\t})\n\t\t\t\t.fail(function(jqXHR, textStatus, errorThrown) {\n\t\t\t\t\tdefer.reject(jqXHR.status, errorThrown)\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$messageTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\t_getFileExistsTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$fileexistsTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('files', 'templates', 'fileexists.html'), function(tmpl) {\n\t\t\t\tself.$fileexistsTemplate = $(tmpl)\n\t\t\t\tdefer.resolve(self.$fileexistsTemplate)\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdefer.reject()\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$fileexistsTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\t_getFileList: function(dir, mimeType) { // this is only used by the spreedme app atm\n\t\tif (typeof (mimeType) === 'string') {\n\t\t\tmimeType = [mimeType]\n\t\t}\n\n\t\treturn $.getJSON(\n\t\t\tOC.filePath('files', 'ajax', 'list.php'),\n\t\t\t{\n\t\t\t\tdir: dir,\n\t\t\t\tmimetypes: JSON.stringify(mimeType)\n\t\t\t}\n\t\t)\n\t},\n\n\t/**\n\t * fills the filepicker with files\n\t */\n\t_fillFilePicker: async function(dir) {\n\t\tvar self = this\n\t\tthis.$filelist.empty()\n\t\tthis.$filePicker.find('.emptycontent').hide()\n\t\tthis.$filelistContainer.addClass('icon-loading')\n\t\tthis.$filePicker.data('path', dir)\n\t\tvar filter = this.$filePicker.data('mimetype')\n\t\tvar advancedFilter = this.$filePicker.data('filter')\n\t\tif (typeof (filter) === 'string') {\n\t\t\tfilter = [filter]\n\t\t}\n\t\tself.$fileListHeader.find('.sort-indicator').addClass('hidden').removeClass('icon-triangle-n').removeClass('icon-triangle-s')\n\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').removeClass('hidden')\n\t\tif (self.filepicker.sortOrder === 'asc') {\n\t\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').addClass('icon-triangle-n')\n\t\t} else {\n\t\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').addClass('icon-triangle-s')\n\t\t}\n\n\t\t// Wrap within a method because a promise cannot return multiple values\n\t\t// But the client impleemntation still does it...\n\t\tvar getFolderContents = async function(dir) {\n\t\t\treturn self.filepicker.filesClient.getFolderContents(dir)\n\t\t\t\t.then((status, files) => {\n\t\t\t\t\treturn files\n\t\t\t\t})\n\t\t}\n\n\t\ttry {\n\t\t\tvar files = await getFolderContents(dir)\n\t\t} catch (error) {\n\t\t\t// fallback to root if requested dir is non-existent\n\t\t\tconsole.error('Requested path does not exists, falling back to root')\n\t\t\tvar files = await getFolderContents('/')\n\t\t\tthis.$filePicker.data('path', '/')\n\t\t}\n\n\t\tself.filelist = files\n\t\tif (filter && filter.length > 0 && filter.indexOf('*') === -1) {\n\t\t\tfiles = files.filter(function(file) {\n\t\t\t\treturn file.type === 'dir' || filter.indexOf(file.mimetype) !== -1\n\t\t\t})\n\t\t}\n\n\t\tif (advancedFilter) {\n\t\t\tfiles = files.filter(advancedFilter)\n\t\t}\n\n\t\t// Check if the showHidden input field exist and if it exist follow it\n\t\t// Otherwise just show the hidden files\n\t\tconst showHiddenInput = document.getElementById('showHiddenFiles')\n\t\tconst showHidden = showHiddenInput === null || showHiddenInput.value === \"1\"\n\t\tif (!showHidden) {\n\t\t\tfiles = files.filter(function(file) {\n\t\t\t\treturn !file.name.startsWith('.')\n\t\t\t})\n\t\t}\n\n\t\tvar Comparators = {\n\t\t\tname: function(fileInfo1, fileInfo2) {\n\t\t\t\tif (fileInfo1.type === 'dir' && fileInfo2.type !== 'dir') {\n\t\t\t\t\treturn -1\n\t\t\t\t}\n\t\t\t\tif (fileInfo1.type !== 'dir' && fileInfo2.type === 'dir') {\n\t\t\t\t\treturn 1\n\t\t\t\t}\n\t\t\t\treturn OC.Util.naturalSortCompare(fileInfo1.name, fileInfo2.name)\n\t\t\t},\n\t\t\tsize: function(fileInfo1, fileInfo2) {\n\t\t\t\treturn fileInfo1.size - fileInfo2.size\n\t\t\t},\n\t\t\tmtime: function(fileInfo1, fileInfo2) {\n\t\t\t\treturn fileInfo1.mtime - fileInfo2.mtime\n\t\t\t}\n\t\t}\n\t\tvar comparator = Comparators[self.filepicker.sortField] || Comparators.name\n\t\tfiles = files.sort(function(file1, file2) {\n\t\t\tvar isFavorite = function(fileInfo) {\n\t\t\t\treturn fileInfo.tags && fileInfo.tags.indexOf(OC.TAG_FAVORITE) >= 0\n\t\t\t}\n\n\t\t\tif (isFavorite(file1) && !isFavorite(file2)) {\n\t\t\t\treturn -1\n\t\t\t} else if (!isFavorite(file1) && isFavorite(file2)) {\n\t\t\t\treturn 1\n\t\t\t}\n\n\t\t\treturn self.filepicker.sortOrder === 'asc' ? comparator(file1, file2) : -comparator(file1, file2)\n\t\t})\n\n\t\tself._fillSlug()\n\n\t\tif (files.length === 0) {\n\t\t\tself.$filePicker.find('.emptycontent').show()\n\t\t\tself.$fileListHeader.hide()\n\t\t} else {\n\t\t\tself.$filePicker.find('.emptycontent').hide()\n\t\t\tself.$fileListHeader.show()\n\t\t}\n\n\t\tself.$filelist.empty();\n\n\t\t$.each(files, function(idx, entry) {\n\t\t\tif (entry.isEncrypted && entry.mimetype === 'httpd/unix-directory') {\n\t\t\t\tentry.icon = OC.MimeType.getIconUrl('dir-encrypted')\n\t\t\t} else {\n\t\t\t\tentry.icon = OC.MimeType.getIconUrl(entry.mimetype)\n\t\t\t}\n\n\t\t\tvar simpleSize, sizeColor\n\t\t\tif (typeof (entry.size) !== 'undefined' && entry.size >= 0) {\n\t\t\t\tsimpleSize = OC.Util.humanFileSize(parseInt(entry.size, 10), true)\n\t\t\t\tsizeColor = Math.round(160 - Math.pow((entry.size / (1024 * 1024)), 2))\n\t\t\t} else {\n\t\t\t\tsimpleSize = t('files', 'Pending')\n\t\t\t\tsizeColor = 80\n\t\t\t}\n\n\t\t\t// split the filename in half if the size is bigger than 20 char\n\t\t\t// for ellipsis\n\t\t\tif (entry.name.length >= 10) {\n\t\t\t\t// leave maximum 10 letters\n\t\t\t\tvar split = Math.min(Math.floor(entry.name.length / 2), 10)\n\t\t\t\tvar filename1 = entry.name.substr(0, entry.name.length - split)\n\t\t\t\tvar filename2 = entry.name.substr(entry.name.length - split)\n\t\t\t} else {\n\t\t\t\tvar filename1 = entry.name\n\t\t\t\tvar filename2 = ''\n\t\t\t}\n\n\t\t\tvar $row = self.$listTmpl.octemplate({\n\t\t\t\ttype: entry.type,\n\t\t\t\tdir: dir,\n\t\t\t\tfilename: entry.name,\n\t\t\t\tfilename1: filename1,\n\t\t\t\tfilename2: filename2,\n\t\t\t\tdate: OC.Util.relativeModifiedDate(entry.mtime),\n\t\t\t\tsize: simpleSize,\n\t\t\t\tsizeColor: sizeColor,\n\t\t\t\ticon: entry.icon\n\t\t\t})\n\t\t\tif (entry.type === 'file') {\n\t\t\t\tvar urlSpec = {\n\t\t\t\t\tfile: dir + '/' + entry.name,\n\t\t\t\t\tx: 100,\n\t\t\t\t\ty: 100\n\t\t\t\t}\n\t\t\t\tvar img = new Image()\n\t\t\t\tvar previewUrl = OC.generateUrl('/core/preview.png?') + $.param(urlSpec)\n\t\t\t\timg.onload = function() {\n\t\t\t\t\tif (img.width > 5) {\n\t\t\t\t\t\t$row.find('td.filename').attr('style', 'background-image:url(' + previewUrl + ')')\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\timg.src = previewUrl\n\t\t\t}\n\t\t\tself.$filelist.append($row)\n\t\t})\n\n\t\tself.$filelistContainer.removeClass('icon-loading')\n\t},\n\t/**\n\t * fills the tree list with directories\n\t */\n\t_fillSlug: function() {\n\t\tvar addButton = this.$dirTree.find('.actions.creatable').detach()\n\t\tthis.$dirTree.empty()\n\t\tvar self = this\n\n\t\tself.$dirTree.append(addButton)\n\n\t\tvar dir\n\t\tvar path = this.$filePicker.data('path')\n\t\tvar $template = $('<div data-dir=\"{dir}\" tabindex=\"0\"><a>{name}</a></div>').addClass('crumb')\n\t\tif (path) {\n\t\t\tvar paths = path.split('/')\n\t\t\t$.each(paths, function(index, dir) {\n\t\t\t\tdir = paths.pop()\n\t\t\t\tif (dir === '') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tself.$dirTree.prepend($template.octemplate({\n\t\t\t\t\tdir: paths.join('/') + '/' + dir,\n\t\t\t\t\tname: dir\n\t\t\t\t}))\n\t\t\t})\n\t\t}\n\n\t\t$template.octemplate({\n\t\t\tdir: '',\n\t\t\tname: '' // Ugly but works ;)\n\t\t}, { escapeFunction: null }).prependTo(this.$dirTree)\n\n\t},\n\t/**\n\t * handle selection made in the tree list\n\t */\n\t_handleTreeListSelect: function(event, type) {\n\t\tvar self = event.data\n\t\tvar dir = $(event.target).closest('.crumb').data('dir')\n\t\tself._fillFilePicker(dir)\n\t\tvar getOcDialog = (event.target).closest('.oc-dialog')\n\t\tvar buttonEnableDisable = $('.primary', getOcDialog)\n\t\tthis._changeButtonsText(type, dir.split(/[/]+/).pop())\n\t\tif (this.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || this.$filePicker.data('allowDirectoryChooser')) {\n\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t} else {\n\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t}\n\t},\n\t/**\n\t * handle clicks made in the filepicker\n\t */\n\t_handlePickerClick: function(event, $element, type) {\n\t\tvar getOcDialog = this.$filePicker.closest('.oc-dialog')\n\t\tvar buttonEnableDisable = getOcDialog.find('.primary')\n\t\tif ($element.data('type') === 'file') {\n\t\t\tif (this.$filePicker.data('multiselect') !== true || !event.ctrlKey) {\n\t\t\t\tthis.$filelist.find('.filepicker_element_selected').removeClass('filepicker_element_selected')\n\t\t\t}\n\t\t\t$element.toggleClass('filepicker_element_selected')\n\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t} else if ($element.data('type') === 'dir') {\n\t\t\tthis._fillFilePicker(this.$filePicker.data('path') + '/' + $element.data('entryname'))\n\t\t\tthis._changeButtonsText(type, $element.data('entryname'))\n\t\t\tif (this.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || this.$filePicker.data('allowDirectoryChooser')) {\n\t\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t\t} else {\n\t\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Handle\n\t * @param type of action\n\t * @param dir on which to change buttons text\n\t * @private\n\t */\n\t_changeButtonsText: function(type, dir) {\n\t\tvar copyText = dir === '' ? t('core', 'Copy') : t('core', 'Copy to {folder}', { folder: dir })\n\t\tvar moveText = dir === '' ? t('core', 'Move') : t('core', 'Move to {folder}', { folder: dir })\n\t\tvar buttons = $('.oc-dialog-buttonrow button')\n\t\tswitch (type) {\n\t\t\tcase this.FILEPICKER_TYPE_CHOOSE:\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_CUSTOM:\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_COPY:\n\t\t\t\tbuttons.text(copyText)\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_MOVE:\n\t\t\t\tbuttons.text(moveText)\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_COPY_MOVE:\n\t\t\t\tbuttons.eq(0).text(copyText)\n\t\t\t\tbuttons.eq(1).text(moveText)\n\t\t\t\tbreak\n\t\t}\n\t}\n}\n\nexport default Dialogs\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { emit } from '@nextcloud/event-bus'\n\n/**\n * @private\n * @param {Document} global the document to read the initial value from\n * @param {Function} emit the function to invoke for every new token\n * @return {object}\n */\nexport const manageToken = (global, emit) => {\n\tlet token = global.getElementsByTagName('head')[0].getAttribute('data-requesttoken')\n\n\treturn {\n\t\tgetToken: () => token,\n\t\tsetToken: newToken => {\n\t\t\ttoken = newToken\n\n\t\t\temit('csrf-token-update', {\n\t\t\t\ttoken,\n\t\t\t})\n\t\t},\n\t}\n}\n\nconst manageFromDocument = manageToken(document, emit)\n\n/**\n * @return {string}\n */\nexport const getToken = manageFromDocument.getToken\n\n/**\n * @param {string} newToken new token\n */\nexport const setToken = manageFromDocument.setToken\n","/**\n * @copyright 2012 Robin Appelman icewind1991@gmail.com\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Lukas Reschke <lukas@statuscode.ch>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Thomas Müller <thomas.mueller@tmit.eu>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport $ from 'jquery'\n\nimport { getToken } from './requesttoken'\n\n/**\n * Create a new event source\n * @param {string} src\n * @param {object} [data] to be send as GET\n *\n * @constructs OCEventSource\n */\nconst OCEventSource = function(src, data) {\n\tvar dataStr = ''\n\tvar name\n\tvar joinChar\n\tthis.typelessListeners = []\n\tthis.closed = false\n\tthis.listeners = {}\n\tif (data) {\n\t\tfor (name in data) {\n\t\t\tdataStr += name + '=' + encodeURIComponent(data[name]) + '&'\n\t\t}\n\t}\n\tdataStr += 'requesttoken=' + encodeURIComponent(getToken())\n\tif (!this.useFallBack && typeof EventSource !== 'undefined') {\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tthis.source = new EventSource(src + joinChar + dataStr)\n\t\tthis.source.onmessage = function(e) {\n\t\t\tfor (var i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](JSON.parse(e.data))\n\t\t\t}\n\t\t}.bind(this)\n\t} else {\n\t\tvar iframeId = 'oc_eventsource_iframe_' + OCEventSource.iframeCount\n\t\tOCEventSource.fallBackSources[OCEventSource.iframeCount] = this\n\t\tthis.iframe = $('<iframe></iframe>')\n\t\tthis.iframe.attr('id', iframeId)\n\t\tthis.iframe.hide()\n\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tthis.iframe.attr('src', src + joinChar + 'fallback=true&fallback_id=' + OCEventSource.iframeCount + '&' + dataStr)\n\t\t$('body').append(this.iframe)\n\t\tthis.useFallBack = true\n\t\tOCEventSource.iframeCount++\n\t}\n\t// add close listener\n\tthis.listen('__internal__', function(data) {\n\t\tif (data === 'close') {\n\t\t\tthis.close()\n\t\t}\n\t}.bind(this))\n}\nOCEventSource.fallBackSources = []\nOCEventSource.iframeCount = 0// number of fallback iframes\nOCEventSource.fallBackCallBack = function(id, type, data) {\n\tOCEventSource.fallBackSources[id].fallBackCallBack(type, data)\n}\nOCEventSource.prototype = {\n\ttypelessListeners: [],\n\tiframe: null,\n\tlisteners: {}, // only for fallback\n\tuseFallBack: false,\n\t/**\n\t * Fallback callback for browsers that don't have the\n\t * native EventSource object.\n\t *\n\t * Calls the registered listeners.\n\t *\n\t * @private\n\t * @param {String} type event type\n\t * @param {Object} data received data\n\t */\n\tfallBackCallBack: function(type, data) {\n\t\tvar i\n\t\t// ignore messages that might appear after closing\n\t\tif (this.closed) {\n\t\t\treturn\n\t\t}\n\t\tif (type) {\n\t\t\tif (typeof this.listeners.done !== 'undefined') {\n\t\t\t\tfor (i = 0; i < this.listeners[type].length; i++) {\n\t\t\t\t\tthis.listeners[type][i](data)\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](data)\n\t\t\t}\n\t\t}\n\t},\n\tlastLength: 0, // for fallback\n\t/**\n\t * Listen to a given type of events.\n\t *\n\t * @param {String} type event type\n\t * @param {Function} callback event callback\n\t */\n\tlisten: function(type, callback) {\n\t\tif (callback && callback.call) {\n\n\t\t\tif (type) {\n\t\t\t\tif (this.useFallBack) {\n\t\t\t\t\tif (!this.listeners[type]) {\n\t\t\t\t\t\tthis.listeners[type] = []\n\t\t\t\t\t}\n\t\t\t\t\tthis.listeners[type].push(callback)\n\t\t\t\t} else {\n\t\t\t\t\tthis.source.addEventListener(type, function(e) {\n\t\t\t\t\t\tif (typeof e.data !== 'undefined') {\n\t\t\t\t\t\t\tcallback(JSON.parse(e.data))\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcallback('')\n\t\t\t\t\t\t}\n\t\t\t\t\t}, false)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.typelessListeners.push(callback)\n\t\t\t}\n\t\t}\n\t},\n\t/**\n\t * Closes this event source.\n\t */\n\tclose: function() {\n\t\tthis.closed = true\n\t\tif (typeof this.source !== 'undefined') {\n\t\t\tthis.source.close()\n\t\t}\n\t}\n}\n\nexport default OCEventSource\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\n\nimport { menuSpeed } from './constants'\n\nexport let currentMenu = null\nexport let currentMenuToggle = null\n\n/**\n * For menu toggling\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n * @param {Function | undefined} toggle callback invoked everytime the menu is opened\n * @param {boolean} headerMenu is this a top right header menu?\n * @return {void}\n */\nexport const registerMenu = function($toggle, $menuEl, toggle, headerMenu) {\n\t$menuEl.addClass('menu')\n\tconst isClickableElement = $toggle.prop('tagName') === 'A' || $toggle.prop('tagName') === 'BUTTON'\n\n\t// On link and button, the enter key trigger a click event\n\t// Only use the click to avoid two fired events\n\t$toggle.on(isClickableElement ? 'click.menu' : 'click.menu keyup.menu', function(event) {\n\t\t// prevent the link event (append anchor to URL)\n\t\tevent.preventDefault()\n\n\t\t// allow enter key as a trigger\n\t\tif (event.key && event.key !== 'Enter') {\n\t\t\treturn\n\t\t}\n\n\t\tif ($menuEl.is(currentMenu)) {\n\t\t\thideMenus()\n\t\t\treturn\n\t\t} else if (currentMenu) {\n\t\t\t// another menu was open?\n\t\t\t// close it\n\t\t\thideMenus()\n\t\t}\n\n\t\tif (headerMenu === true) {\n\t\t\t$menuEl.parent().addClass('openedMenu')\n\t\t}\n\n\t\t// Set menu to expanded\n\t\t$toggle.attr('aria-expanded', true)\n\n\t\t$menuEl.slideToggle(menuSpeed, toggle)\n\t\tcurrentMenu = $menuEl\n\t\tcurrentMenuToggle = $toggle\n\t})\n}\n\n/**\n * Unregister a previously registered menu\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n */\nexport const unregisterMenu = ($toggle, $menuEl) => {\n\t// close menu if opened\n\tif ($menuEl.is(currentMenu)) {\n\t\thideMenus()\n\t}\n\t$toggle.off('click.menu').removeClass('menutoggle')\n\t$menuEl.removeClass('menu')\n}\n\n/**\n * Hides any open menus\n *\n * @param {Function} complete callback when the hiding animation is done\n */\nexport const hideMenus = function(complete) {\n\tif (currentMenu) {\n\t\tconst lastMenu = currentMenu\n\t\tcurrentMenu.trigger(new $.Event('beforeHide'))\n\t\tcurrentMenu.slideUp(menuSpeed, function() {\n\t\t\tlastMenu.trigger(new $.Event('afterHide'))\n\t\t\tif (complete) {\n\t\t\t\tcomplete.apply(this, arguments)\n\t\t\t}\n\t\t})\n\t}\n\n\t// Set menu to closed\n\t$('.menutoggle').attr('aria-expanded', false)\n\tif (currentMenuToggle) {\n\t\tcurrentMenuToggle.attr('aria-expanded', false)\n\t}\n\n\t$('.openedMenu').removeClass('openedMenu')\n\tcurrentMenu = null\n\tcurrentMenuToggle = null\n}\n\n/**\n * Shows a given element as menu\n *\n * @param {object} [$toggle=null] menu toggle\n * @param {object} $menuEl menu element\n * @param {Function} complete callback when the showing animation is done\n */\nexport const showMenu = ($toggle, $menuEl, complete) => {\n\tif ($menuEl.is(currentMenu)) {\n\t\treturn\n\t}\n\thideMenus()\n\tcurrentMenu = $menuEl\n\tcurrentMenuToggle = $toggle\n\t$menuEl.trigger(new $.Event('beforeShow'))\n\t$menuEl.show()\n\t$menuEl.trigger(new $.Event('afterShow'))\n\t// no animation\n\tif (_.isFunction(complete)) {\n\t\tcomplete()\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const coreApps = ['', 'admin', 'log', 'core/search', 'core', '3rdparty']\nexport const menuSpeed = 50\nexport const PERMISSION_NONE = 0\nexport const PERMISSION_CREATE = 4\nexport const PERMISSION_READ = 1\nexport const PERMISSION_UPDATE = 2\nexport const PERMISSION_DELETE = 8\nexport const PERMISSION_SHARE = 16\nexport const PERMISSION_ALL = 31\nexport const TAG_FAVORITE = '_$!<Favorite>!$_'\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst isAdmin = !!window._oc_isadmin\n\n/**\n * Returns whether the current user is an administrator\n *\n * @return {boolean} true if the user is an admin, false otherwise\n * @since 9.0.0\n */\nexport const isUserAdmin = () => isAdmin\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n// This var is global because it's shared across webpack bundles\nwindow._oc_l10n_registry_translations = window._oc_l10n_registry_translations || {}\nwindow._oc_l10n_registry_plural_functions = window._oc_l10n_registry_plural_functions || {}\n\n/**\n * @param {string} appId the app id\n * @param {object} translations the translations list\n * @param {Function} pluralFunction the translations list\n */\nconst register = (appId, translations, pluralFunction) => {\n\twindow._oc_l10n_registry_translations[appId] = translations\n\twindow._oc_l10n_registry_plural_functions[appId] = pluralFunction\n}\n\n/**\n * @param {string} appId the app id\n * @param {object} translations the translations list\n * @param {Function} pluralFunction the translations list\n */\nconst extend = (appId, translations, pluralFunction) => {\n\twindow._oc_l10n_registry_translations[appId] = Object.assign(\n\t\twindow._oc_l10n_registry_translations[appId],\n\t\ttranslations\n\t)\n\twindow._oc_l10n_registry_plural_functions[appId] = pluralFunction\n}\n\n/**\n * @param {string} appId the app id\n * @param {object} translations the translations list\n * @param {Function} pluralFunction the translations list\n */\nexport const registerAppTranslations = (appId, translations, pluralFunction) => {\n\tif (!hasAppTranslations(appId)) {\n\t\tregister(appId, translations, pluralFunction)\n\t} else {\n\t\textend(appId, translations, pluralFunction)\n\t}\n}\n\n/**\n * @param {string} appId the app id\n */\nexport const unregisterAppTranslations = appId => {\n\tdelete window._oc_l10n_registry_translations[appId]\n\tdelete window._oc_l10n_registry_plural_functions[appId]\n}\n\n/**\n * @param {string} appId the app id\n * @return {boolean}\n */\nexport const hasAppTranslations = appId => {\n\treturn window._oc_l10n_registry_translations[appId] !== undefined\n\t\t&& window._oc_l10n_registry_plural_functions[appId] !== undefined\n}\n\n/**\n * @param {string} appId the app id\n * @return {object}\n */\nexport const getAppTranslations = appId => {\n\treturn {\n\t\ttranslations: window._oc_l10n_registry_translations[appId] || {},\n\t\tpluralFunction: window._oc_l10n_registry_plural_functions[appId],\n\t}\n}\n","/**\n * Copyright (c) 2014 Vincent Petry <pvince81@owncloud.com>\n * Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)\n * Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Kesselberg <mail@danielkesselberg.de>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Morris Jobke <hey@morrisjobke.de>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport DOMPurify from 'dompurify'\nimport Handlebars from 'handlebars'\nimport identity from 'lodash/fp/identity'\nimport escapeHTML from 'escape-html'\nimport { generateFilePath } from '@nextcloud/router'\n\nimport OC from './index'\nimport {\n\tgetAppTranslations,\n\thasAppTranslations,\n\tregisterAppTranslations,\n\tunregisterAppTranslations,\n} from './l10n-registry'\n\n/**\n * L10N namespace with localization functions.\n *\n * @namespace OC.L10n\n */\nconst L10n = {\n\n\t/**\n\t * Load an app's translation bundle if not loaded already.\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Function} callback callback to be called when\n\t * the translations are loaded\n\t * @return {Promise} promise\n\t */\n\tload(appName, callback) {\n\t\t// already available ?\n\t\tif (hasAppTranslations(appName) || OC.getLocale() === 'en') {\n\t\t\tconst deferred = $.Deferred()\n\t\t\tconst promise = deferred.promise()\n\t\t\tpromise.then(callback)\n\t\t\tdeferred.resolve()\n\t\t\treturn promise\n\t\t}\n\n\t\tconst self = this\n\t\tconst url = generateFilePath(appName, 'l10n', OC.getLocale() + '.json')\n\n\t\t// load JSON translation bundle per AJAX\n\t\treturn $.get(url)\n\t\t\t.then(\n\t\t\t\tfunction(result) {\n\t\t\t\t\tif (result.translations) {\n\t\t\t\t\t\tself.register(appName, result.translations, result.pluralForm)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t.then(callback)\n\t},\n\n\t/**\n\t * Register an app's translation bundle.\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Object<string, string>} bundle bundle\n\t */\n\tregister(appName, bundle) {\n\t\tregisterAppTranslations(appName, bundle, this._getPlural)\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_unregister: unregisterAppTranslations,\n\n\t/**\n\t * Translate a string\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} text the string to translate\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {number} [count] number to replace %n with\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @param {boolean} [options.sanitize=true] enable/disable sanitization (by default enabled)\n\t * @return {string}\n\t */\n\ttranslate(app, text, vars, count, options) {\n\t\tconst defaultOptions = {\n\t\t\tescape: true,\n\t\t\tsanitize: true,\n\t\t}\n\t\tconst allOptions = options || {}\n\t\t_.defaults(allOptions, defaultOptions)\n\n\t\tconst optSanitize = allOptions.sanitize ? DOMPurify.sanitize : identity\n\t\tconst optEscape = allOptions.escape ? escapeHTML : identity\n\n\t\t// TODO: cache this function to avoid inline recreation\n\t\t// of the same function over and over again in case\n\t\t// translate() is used in a loop\n\t\tconst _build = function(text, vars, count) {\n\t\t\treturn text.replace(/%n/g, count).replace(/{([^{}]*)}/g,\n\t\t\t\tfunction(a, b) {\n\t\t\t\t\tconst r = vars[b]\n\t\t\t\t\tif (typeof r === 'string' || typeof r === 'number') {\n\t\t\t\t\t\treturn optSanitize(optEscape(r))\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn optSanitize(a)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t)\n\t\t}\n\t\tlet translation = text\n\t\tconst bundle = getAppTranslations(app)\n\t\tconst value = bundle.translations[text]\n\t\tif (typeof (value) !== 'undefined') {\n\t\t\ttranslation = value\n\t\t}\n\n\t\tif (typeof vars === 'object' || count !== undefined) {\n\t\t\treturn optSanitize(_build(translation, vars, count))\n\t\t} else {\n\t\t\treturn optSanitize(translation)\n\t\t}\n\t},\n\n\t/**\n\t * Translate a plural string\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} textSingular the string to translate for exactly one object\n\t * @param {string} textPlural the string to translate for n objects\n\t * @param {number} count number to determine whether to use singular or plural\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @return {string} Translated string\n\t */\n\ttranslatePlural(app, textSingular, textPlural, count, vars, options) {\n\t\tconst identifier = '_' + textSingular + '_::_' + textPlural + '_'\n\t\tconst bundle = getAppTranslations(app)\n\t\tconst value = bundle.translations[identifier]\n\t\tif (typeof (value) !== 'undefined') {\n\t\t\tconst translation = value\n\t\t\tif ($.isArray(translation)) {\n\t\t\t\tconst plural = bundle.pluralFunction(count)\n\t\t\t\treturn this.translate(app, translation[plural], vars, count, options)\n\t\t\t}\n\t\t}\n\n\t\tif (count === 1) {\n\t\t\treturn this.translate(app, textSingular, vars, count, options)\n\t\t} else {\n\t\t\treturn this.translate(app, textPlural, vars, count, options)\n\t\t}\n\t},\n\n\t/**\n\t * The plural function taken from symfony\n\t *\n\t * @param {number} number the number of elements\n\t * @return {number}\n\t * @private\n\t */\n\t_getPlural(number) {\n\t\tlet language = OC.getLanguage()\n\t\tif (language === 'pt-BR') {\n\t\t\t// temporary set a locale for brazilian\n\t\t\tlanguage = 'xbr'\n\t\t}\n\n\t\tif (typeof language === 'undefined' || language === '') {\n\t\t\treturn (number === 1) ? 0 : 1\n\t\t}\n\n\t\tif (language.length > 3) {\n\t\t\tlanguage = language.substring(0, language.lastIndexOf('-'))\n\t\t}\n\n\t\t/*\n\t\t * The plural rules are derived from code of the Zend Framework (2010-09-25),\n\t\t * which is subject to the new BSD license (http://framework.zend.com/license/new-bsd).\n\t\t * Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)\n\t\t */\n\t\tswitch (language) {\n\t\tcase 'az':\n\t\tcase 'bo':\n\t\tcase 'dz':\n\t\tcase 'id':\n\t\tcase 'ja':\n\t\tcase 'jv':\n\t\tcase 'ka':\n\t\tcase 'km':\n\t\tcase 'kn':\n\t\tcase 'ko':\n\t\tcase 'ms':\n\t\tcase 'th':\n\t\tcase 'tr':\n\t\tcase 'vi':\n\t\tcase 'zh':\n\t\t\treturn 0\n\n\t\tcase 'af':\n\t\tcase 'bn':\n\t\tcase 'bg':\n\t\tcase 'ca':\n\t\tcase 'da':\n\t\tcase 'de':\n\t\tcase 'el':\n\t\tcase 'en':\n\t\tcase 'eo':\n\t\tcase 'es':\n\t\tcase 'et':\n\t\tcase 'eu':\n\t\tcase 'fa':\n\t\tcase 'fi':\n\t\tcase 'fo':\n\t\tcase 'fur':\n\t\tcase 'fy':\n\t\tcase 'gl':\n\t\tcase 'gu':\n\t\tcase 'ha':\n\t\tcase 'he':\n\t\tcase 'hu':\n\t\tcase 'is':\n\t\tcase 'it':\n\t\tcase 'ku':\n\t\tcase 'lb':\n\t\tcase 'ml':\n\t\tcase 'mn':\n\t\tcase 'mr':\n\t\tcase 'nah':\n\t\tcase 'nb':\n\t\tcase 'ne':\n\t\tcase 'nl':\n\t\tcase 'nn':\n\t\tcase 'no':\n\t\tcase 'oc':\n\t\tcase 'om':\n\t\tcase 'or':\n\t\tcase 'pa':\n\t\tcase 'pap':\n\t\tcase 'ps':\n\t\tcase 'pt':\n\t\tcase 'so':\n\t\tcase 'sq':\n\t\tcase 'sv':\n\t\tcase 'sw':\n\t\tcase 'ta':\n\t\tcase 'te':\n\t\tcase 'tk':\n\t\tcase 'ur':\n\t\tcase 'zu':\n\t\t\treturn (number === 1) ? 0 : 1\n\n\t\tcase 'am':\n\t\tcase 'bh':\n\t\tcase 'fil':\n\t\tcase 'fr':\n\t\tcase 'gun':\n\t\tcase 'hi':\n\t\tcase 'hy':\n\t\tcase 'ln':\n\t\tcase 'mg':\n\t\tcase 'nso':\n\t\tcase 'xbr':\n\t\tcase 'ti':\n\t\tcase 'wa':\n\t\t\treturn ((number === 0) || (number === 1)) ? 0 : 1\n\n\t\tcase 'be':\n\t\tcase 'bs':\n\t\tcase 'hr':\n\t\tcase 'ru':\n\t\tcase 'sh':\n\t\tcase 'sr':\n\t\tcase 'uk':\n\t\t\treturn ((number % 10 === 1) && (number % 100 !== 11)) ? 0 : (((number % 10 >= 2) && (number % 10 <= 4) && ((number % 100 < 10) || (number % 100 >= 20))) ? 1 : 2)\n\n\t\tcase 'cs':\n\t\tcase 'sk':\n\t\t\treturn (number === 1) ? 0 : (((number >= 2) && (number <= 4)) ? 1 : 2)\n\n\t\tcase 'ga':\n\t\t\treturn (number === 1) ? 0 : ((number === 2) ? 1 : 2)\n\n\t\tcase 'lt':\n\t\t\treturn ((number % 10 === 1) && (number % 100 !== 11)) ? 0 : (((number % 10 >= 2) && ((number % 100 < 10) || (number % 100 >= 20))) ? 1 : 2)\n\n\t\tcase 'sl':\n\t\t\treturn (number % 100 === 1) ? 0 : ((number % 100 === 2) ? 1 : (((number % 100 === 3) || (number % 100 === 4)) ? 2 : 3))\n\n\t\tcase 'mk':\n\t\t\treturn (number % 10 === 1) ? 0 : 1\n\n\t\tcase 'mt':\n\t\t\treturn (number === 1) ? 0 : (((number === 0) || ((number % 100 > 1) && (number % 100 < 11))) ? 1 : (((number % 100 > 10) && (number % 100 < 20)) ? 2 : 3))\n\n\t\tcase 'lv':\n\t\t\treturn (number === 0) ? 0 : (((number % 10 === 1) && (number % 100 !== 11)) ? 1 : 2)\n\n\t\tcase 'pl':\n\t\t\treturn (number === 1) ? 0 : (((number % 10 >= 2) && (number % 10 <= 4) && ((number % 100 < 12) || (number % 100 > 14))) ? 1 : 2)\n\n\t\tcase 'cy':\n\t\t\treturn (number === 1) ? 0 : ((number === 2) ? 1 : (((number === 8) || (number === 11)) ? 2 : 3))\n\n\t\tcase 'ro':\n\t\t\treturn (number === 1) ? 0 : (((number === 0) || ((number % 100 > 0) && (number % 100 < 20))) ? 1 : 2)\n\n\t\tcase 'ar':\n\t\t\treturn (number === 0) ? 0 : ((number === 1) ? 1 : ((number === 2) ? 2 : (((number % 100 >= 3) && (number % 100 <= 10)) ? 3 : (((number % 100 >= 11) && (number % 100 <= 99)) ? 4 : 5))))\n\n\t\tdefault:\n\t\t\treturn 0\n\t\t}\n\t},\n}\n\nexport default L10n\n\n/**\n * Returns the user's locale\n *\n * @return {string} locale string\n */\nexport const getLocale = () => $('html').data('locale') ?? 'en'\n\n/**\n * Returns the user's language\n *\n * @return {string} language string\n */\nexport const getLanguage = () => $('html').prop('lang')\n\nHandlebars.registerHelper('t', function(app, text) {\n\treturn L10n.translate(app, text)\n})\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author rakekniven <mark.ziegler@rakekniven.de>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n/**\n * A little class to manage a status field for a \"saving\" process.\n * It can be used to display a starting message (e.g. \"Saving...\") and then\n * replace it with a green success message or a red error message.\n *\n * @namespace OC.msg\n */\nexport default {\n\t/**\n\t * Displayes a \"Saving...\" message in the given message placeholder\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t */\n\tstartSaving(selector) {\n\t\tthis.startAction(selector, t('core', 'Saving …'))\n\t},\n\n\t/**\n\t * Displayes a custom message in the given message placeholder\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text message to display (no HTML allowed)\n\t */\n\tstartAction(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.removeClass('success')\n\t\t\t.removeClass('error')\n\t\t\t.stop(true, true)\n\t\t\t.show()\n\t},\n\n\t/**\n\t * Displayes an success/error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {object} response Response of the server\n\t * @param {object} response.data Data of the servers response\n\t * @param {string} response.data.message Plain text message to display (no HTML allowed)\n\t * @param {string} response.status is being used to decide whether the message\n\t * is displayed as an error/success\n\t */\n\tfinishedSaving(selector, response) {\n\t\tthis.finishedAction(selector, response)\n\t},\n\n\t/**\n\t * Displayes an success/error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {object} response Response of the server\n\t * @param {object} response.data Data of the servers response\n\t * @param {string} response.data.message Plain text message to display (no HTML allowed)\n\t * @param {string} response.status is being used to decide whether the message\n\t * is displayed as an error/success\n\t */\n\tfinishedAction(selector, response) {\n\t\tif (response.status === 'success') {\n\t\t\tthis.finishedSuccess(selector, response.data.message)\n\t\t} else {\n\t\t\tthis.finishedError(selector, response.data.message)\n\t\t}\n\t},\n\n\t/**\n\t * Displayes an success message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text success message to display (no HTML allowed)\n\t */\n\tfinishedSuccess(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.addClass('success')\n\t\t\t.removeClass('error')\n\t\t\t.stop(true, true)\n\t\t\t.delay(3000)\n\t\t\t.fadeOut(900)\n\t\t\t.show()\n\t},\n\n\t/**\n\t * Displayes an error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text error message to display (no HTML allowed)\n\t */\n\tfinishedError(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.addClass('error')\n\t\t\t.removeClass('success')\n\t\t\t.show()\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport moment from 'moment'\nimport { generateUrl } from '@nextcloud/router'\n\nimport OC from './index'\n\n/**\n * @namespace OC.PasswordConfirmation\n */\nexport default {\n\tcallback: null,\n\n\tpageLoadTime: null,\n\n\tinit() {\n\t\t$('.password-confirm-required').on('click', _.bind(this.requirePasswordConfirmation, this))\n\t\tthis.pageLoadTime = moment.now()\n\t},\n\n\trequiresPasswordConfirmation() {\n\t\tconst serverTimeDiff = this.pageLoadTime - (window.nc_pageLoad * 1000)\n\t\tconst timeSinceLogin = moment.now() - (serverTimeDiff + (window.nc_lastLogin * 1000))\n\n\t\t// if timeSinceLogin > 30 minutes and user backend allows password confirmation\n\t\treturn (window.backendAllowsPasswordConfirmation && timeSinceLogin > 30 * 60 * 1000)\n\t},\n\n\t/**\n\t * @param {Function} callback success callback function\n\t * @param {object} options options\n\t * @param {Function} rejectCallback error callback function\n\t */\n\trequirePasswordConfirmation(callback, options, rejectCallback) {\n\t\toptions = typeof options !== 'undefined' ? options : {}\n\t\tconst defaults = {\n\t\t\ttitle: t('core', 'Authentication required'),\n\t\t\ttext: t(\n\t\t\t\t'core',\n\t\t\t\t'This action requires you to confirm your password'\n\t\t\t),\n\t\t\tconfirm: t('core', 'Confirm'),\n\t\t\tlabel: t('core', 'Password'),\n\t\t\terror: '',\n\t\t}\n\n\t\tconst config = _.extend(defaults, options)\n\n\t\tconst self = this\n\n\t\tif (this.requiresPasswordConfirmation()) {\n\t\t\tOC.dialogs.prompt(\n\t\t\t\tconfig.text,\n\t\t\t\tconfig.title,\n\t\t\t\tfunction(result, password) {\n\t\t\t\t\tif (result && password !== '') {\n\t\t\t\t\t\tself._confirmPassword(password, config)\n\t\t\t\t\t} else if (_.isFunction(rejectCallback)) {\n\t\t\t\t\t\trejectCallback()\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\ttrue,\n\t\t\t\tconfig.label,\n\t\t\t\ttrue\n\t\t\t).then(function() {\n\t\t\t\tconst $dialog = $('.oc-dialog:visible')\n\t\t\t\t$dialog.find('.ui-icon').remove()\n\t\t\t\t$dialog.addClass('password-confirmation')\n\t\t\t\tif (config.error !== '') {\n\t\t\t\t\tconst $error = $('<p></p>').addClass('msg warning').text(config.error)\n\t\t\t\t\t$dialog.find('.oc-dialog-content').append($error)\n\t\t\t\t}\n\t\t\t\t$dialog.find('.oc-dialog-buttonrow').addClass('aside')\n\n\t\t\t\tconst $buttons = $dialog.find('button')\n\t\t\t\t$buttons.eq(0).hide()\n\t\t\t\t$buttons.eq(1).text(config.confirm)\n\t\t\t})\n\t\t}\n\n\t\tthis.callback = callback\n\t},\n\n\t_confirmPassword(password, config) {\n\t\tconst self = this\n\n\t\t$.ajax({\n\t\t\turl: generateUrl('/login/confirm'),\n\t\t\tdata: {\n\t\t\t\tpassword,\n\t\t\t},\n\t\t\ttype: 'POST',\n\t\t\tsuccess(response) {\n\t\t\t\twindow.nc_lastLogin = response.lastLogin\n\n\t\t\t\tif (_.isFunction(self.callback)) {\n\t\t\t\t\tself.callback()\n\t\t\t\t}\n\t\t\t},\n\t\t\terror() {\n\t\t\t\tconfig.error = t('core', 'Failed to authenticate, try again')\n\t\t\t\tOC.PasswordConfirmation.requirePasswordConfirmation(self.callback, config)\n\t\t\t},\n\t\t})\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const theme = window._theme || {}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\nimport OC from './index'\n\n/**\n * Utility class for the history API,\n * includes fallback to using the URL hash when\n * the browser doesn't support the history API.\n *\n * @namespace OC.Util.History\n */\nexport default {\n\n\t_handlers: [],\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t * @param {boolean} [replace=false] whether to replace instead of pushing\n\t */\n\t_pushState(params, url, replace) {\n\t\tlet strParams\n\t\tif (typeof (params) === 'string') {\n\t\t\tstrParams = params\n\t\t} else {\n\t\t\tstrParams = OC.buildQueryString(params)\n\t\t}\n\n\t\tif (window.history.pushState) {\n\t\t\turl = url || location.pathname + '?' + strParams\n\t\t\t// Workaround for bug with SVG and window.history.pushState on Firefox < 51\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=652991\n\t\t\tconst isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1\n\t\t\tif (isFirefox && parseInt(navigator.userAgent.split('/').pop()) < 51) {\n\t\t\t\tconst patterns = document.querySelectorAll('[fill^=\"url(#\"], [stroke^=\"url(#\"], [filter^=\"url(#invert\"]')\n\t\t\t\tfor (let i = 0, ii = patterns.length, pattern; i < ii; i++) {\n\t\t\t\t\tpattern = patterns[i]\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.fill = pattern.style.fill\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.stroke = pattern.style.stroke\n\t\t\t\t\tpattern.removeAttribute('filter')\n\t\t\t\t\tpattern.setAttribute('filter', 'url(#invert)')\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (replace) {\n\t\t\t\twindow.history.replaceState(params, '', url)\n\t\t\t} else {\n\t\t\t\twindow.history.pushState(params, '', url)\n\t\t\t}\n\t\t} else {\n\t\t\t// use URL hash for IE8\n\t\t\twindow.location.hash = '?' + strParams\n\t\t\t// inhibit next onhashchange that just added itself\n\t\t\t// to the event queue\n\t\t\tthis._cancelPop = true\n\t\t}\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used, using the params as query string\n\t */\n\tpushState(params, url) {\n\t\tthis._pushState(params, url, false)\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t */\n\treplaceState(params, url) {\n\t\tthis._pushState(params, url, true)\n\t},\n\n\t/**\n\t * Add a popstate handler\n\t *\n\t * @param {Function} handler handler\n\t */\n\taddOnPopStateHandler(handler) {\n\t\tthis._handlers.push(handler)\n\t},\n\n\t/**\n\t * Parse a query string from the hash part of the URL.\n\t * (workaround for IE8 / IE9)\n\t *\n\t * @return {string}\n\t */\n\t_parseHashQuery() {\n\t\tconst hash = window.location.hash\n\t\tconst pos = hash.indexOf('?')\n\t\tif (pos >= 0) {\n\t\t\treturn hash.substr(pos + 1)\n\t\t}\n\t\tif (hash.length) {\n\t\t\t// remove hash sign\n\t\t\treturn hash.substr(1)\n\t\t}\n\t\treturn ''\n\t},\n\n\t_decodeQuery(query) {\n\t\treturn query.replace(/\\+/g, ' ')\n\t},\n\n\t/**\n\t * Parse the query/search part of the URL.\n\t * Also try and parse it from the URL hash (for IE8)\n\t *\n\t * @return {object} map of parameters\n\t */\n\tparseUrlQuery() {\n\t\tconst query = this._parseHashQuery()\n\t\tlet params\n\t\t// try and parse from URL hash first\n\t\tif (query) {\n\t\t\tparams = OC.parseQueryString(this._decodeQuery(query))\n\t\t}\n\t\t// else read from query attributes\n\t\tparams = _.extend(params || {}, OC.parseQueryString(this._decodeQuery(location.search)))\n\t\treturn params || {}\n\t},\n\n\t_onPopState(e) {\n\t\tif (this._cancelPop) {\n\t\t\tthis._cancelPop = false\n\t\t\treturn\n\t\t}\n\t\tlet params\n\t\tif (!this._handlers.length) {\n\t\t\treturn\n\t\t}\n\t\tparams = (e && e.state)\n\t\tif (_.isString(params)) {\n\t\t\tparams = OC.parseQueryString(params)\n\t\t} else if (!params) {\n\t\t\tparams = this.parseUrlQuery() || {}\n\t\t}\n\t\tfor (let i = 0; i < this._handlers.length; i++) {\n\t\t\tthis._handlers[i](params)\n\t\t}\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport moment from 'moment'\n\nimport History from './util-history'\nimport OC from './index'\nimport { formatFileSize as humanFileSize } from '@nextcloud/files'\n\n/**\n * @param {any} t -\n */\nfunction chunkify(t) {\n\t// Adapted from http://my.opera.com/GreyWyvern/blog/show.dml/1671288\n\tconst tz = []\n\tlet x = 0\n\tlet y = -1\n\tlet n = 0\n\tlet c\n\n\twhile (x < t.length) {\n\t\tc = t.charAt(x)\n\t\t// only include the dot in strings\n\t\tconst m = ((!n && c === '.') || (c >= '0' && c <= '9'))\n\t\tif (m !== n) {\n\t\t\t// next chunk\n\t\t\ty++\n\t\t\ttz[y] = ''\n\t\t\tn = m\n\t\t}\n\t\ttz[y] += c\n\t\tx++\n\t}\n\treturn tz\n}\n\n/**\n * Utility functions\n *\n * @namespace OC.Util\n */\nexport default {\n\n\tHistory,\n\n\t/**\n\t * @deprecated use https://nextcloud.github.io/nextcloud-files/modules/_humanfilesize_.html#formatfilesize\n\t */\n\thumanFileSize,\n\n\t/**\n\t * Returns a file size in bytes from a humanly readable string\n\t * Makes 2kB to 2048.\n\t * Inspired by computerFileSize in helper.php\n\t *\n\t * @param {string} string file size in human readable format\n\t * @return {number} or null if string could not be parsed\n\t *\n\t *\n\t */\n\tcomputerFileSize(string) {\n\t\tif (typeof string !== 'string') {\n\t\t\treturn null\n\t\t}\n\n\t\tconst s = string.toLowerCase().trim()\n\t\tlet bytes = null\n\n\t\tconst bytesArray = {\n\t\t\tb: 1,\n\t\t\tk: 1024,\n\t\t\tkb: 1024,\n\t\t\tmb: 1024 * 1024,\n\t\t\tm: 1024 * 1024,\n\t\t\tgb: 1024 * 1024 * 1024,\n\t\t\tg: 1024 * 1024 * 1024,\n\t\t\ttb: 1024 * 1024 * 1024 * 1024,\n\t\t\tt: 1024 * 1024 * 1024 * 1024,\n\t\t\tpb: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t\tp: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t}\n\n\t\tconst matches = s.match(/^[\\s+]?([0-9]*)(\\.([0-9]+))?( +)?([kmgtp]?b?)$/i)\n\t\tif (matches !== null) {\n\t\t\tbytes = parseFloat(s)\n\t\t\tif (!isFinite(bytes)) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t} else {\n\t\t\treturn null\n\t\t}\n\t\tif (matches[5]) {\n\t\t\tbytes = bytes * bytesArray[matches[5]]\n\t\t}\n\n\t\tbytes = Math.round(bytes)\n\t\treturn bytes\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @param {string} format date format, see momentjs docs\n\t * @return {string} timestamp formatted as requested\n\t */\n\tformatDate(timestamp, format) {\n\t\tif (window.TESTING === undefined) {\n\t\t\tconsole.warn('OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tformat = format || 'LLL'\n\t\treturn moment(timestamp).format(format)\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @return {string} human readable difference from now\n\t */\n\trelativeModifiedDate(timestamp) {\n\t\tif (window.TESTING === undefined) {\n\t\t\tconsole.warn('OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tconst diff = moment().diff(moment(timestamp))\n\t\tif (diff >= 0 && diff < 45000) {\n\t\t\treturn t('core', 'seconds ago')\n\t\t}\n\t\treturn moment(timestamp).fromNow()\n\t},\n\n\t/**\n\t * Returns the width of a generic browser scrollbar\n\t *\n\t * @return {number} width of scrollbar\n\t */\n\tgetScrollBarWidth() {\n\t\tif (this._scrollBarWidth) {\n\t\t\treturn this._scrollBarWidth\n\t\t}\n\n\t\tconst inner = document.createElement('p')\n\t\tinner.style.width = '100%'\n\t\tinner.style.height = '200px'\n\n\t\tconst outer = document.createElement('div')\n\t\touter.style.position = 'absolute'\n\t\touter.style.top = '0px'\n\t\touter.style.left = '0px'\n\t\touter.style.visibility = 'hidden'\n\t\touter.style.width = '200px'\n\t\touter.style.height = '150px'\n\t\touter.style.overflow = 'hidden'\n\t\touter.appendChild(inner)\n\n\t\tdocument.body.appendChild(outer)\n\t\tconst w1 = inner.offsetWidth\n\t\touter.style.overflow = 'scroll'\n\t\tlet w2 = inner.offsetWidth\n\t\tif (w1 === w2) {\n\t\t\tw2 = outer.clientWidth\n\t\t}\n\n\t\tdocument.body.removeChild(outer)\n\n\t\tthis._scrollBarWidth = (w1 - w2)\n\n\t\treturn this._scrollBarWidth\n\t},\n\n\t/**\n\t * Remove the time component from a given date\n\t *\n\t * @param {Date} date date\n\t * @return {Date} date with stripped time\n\t */\n\tstripTime(date) {\n\t\t// FIXME: likely to break when crossing DST\n\t\t// would be better to use a library like momentJS\n\t\treturn new Date(date.getFullYear(), date.getMonth(), date.getDate())\n\t},\n\n\t/**\n\t * Compare two strings to provide a natural sort\n\t *\n\t * @param {string} a first string to compare\n\t * @param {string} b second string to compare\n\t * @return {number} -1 if b comes before a, 1 if a comes before b\n\t * or 0 if the strings are identical\n\t */\n\tnaturalSortCompare(a, b) {\n\t\tlet x\n\t\tconst aa = chunkify(a)\n\t\tconst bb = chunkify(b)\n\n\t\tfor (x = 0; aa[x] && bb[x]; x++) {\n\t\t\tif (aa[x] !== bb[x]) {\n\t\t\t\tconst aNum = Number(aa[x]); const bNum = Number(bb[x])\n\t\t\t\t// note: == is correct here\n\t\t\t\t/* eslint-disable-next-line */\n\t\t\t\tif (aNum == aa[x] && bNum == bb[x]) {\n\t\t\t\t\treturn aNum - bNum\n\t\t\t\t} else {\n\t\t\t\t\t// Note: This locale setting isn't supported by all browsers but for the ones\n\t\t\t\t\t// that do there will be more consistency between client-server sorting\n\t\t\t\t\treturn aa[x].localeCompare(bb[x], OC.getLanguage())\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn aa.length - bb.length\n\t},\n\n\t/**\n\t * Calls the callback in a given interval until it returns true\n\t *\n\t * @param {Function} callback function to call on success\n\t * @param {number} interval in milliseconds\n\t */\n\twaitFor(callback, interval) {\n\t\tconst internalCallback = function() {\n\t\t\tif (callback() !== true) {\n\t\t\t\tsetTimeout(internalCallback, interval)\n\t\t\t}\n\t\t}\n\n\t\tinternalCallback()\n\t},\n\n\t/**\n\t * Checks if a cookie with the given name is present and is set to the provided value.\n\t *\n\t * @param {string} name name of the cookie\n\t * @param {string} value value of the cookie\n\t * @return {boolean} true if the cookie with the given name has the given value\n\t */\n\tisCookieSetToValue(name, value) {\n\t\tconst cookies = document.cookie.split(';')\n\t\tfor (let i = 0; i < cookies.length; i++) {\n\t\t\tconst cookie = cookies[i].split('=')\n\t\t\tif (cookie[0].trim() === name && cookie[1].trim() === value) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst base = window._oc_debug\n\nexport const debug = base\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nlet webroot = window._oc_webroot\n\nif (typeof webroot === 'undefined') {\n\twebroot = location.pathname\n\tconst pos = webroot.indexOf('/index.php/')\n\tif (pos !== -1) {\n\t\twebroot = webroot.substr(0, pos)\n\t} else {\n\t\twebroot = webroot.substr(0, webroot.lastIndexOf('/'))\n\t}\n}\n\nexport default webroot\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const get = context => name => {\n\tconst namespaces = name.split('.')\n\tconst tail = namespaces.pop()\n\n\tfor (let i = 0; i < namespaces.length; i++) {\n\t\tcontext = context[namespaces[i]]\n\t\tif (!context) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn context[tail]\n}\n\n/**\n * Set a variable by name\n *\n * @param {string} context context\n * @return {Function} setter\n * @deprecated 19.0.0 use https://lodash.com/docs#set\n */\nexport const set = context => (name, value) => {\n\tconst namespaces = name.split('.')\n\tconst tail = namespaces.pop()\n\n\tfor (let i = 0; i < namespaces.length; i++) {\n\t\tif (!context[namespaces[i]]) {\n\t\t\tcontext[namespaces[i]] = {}\n\t\t}\n\t\tcontext = context[namespaces[i]]\n\t}\n\tcontext[tail] = value\n\treturn value\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { subscribe } from '@nextcloud/event-bus'\n\nimport { addScript, addStyle } from './legacy-loader'\nimport {\n\tajaxConnectionLostHandler,\n\tprocessAjaxError,\n\tregisterXHRForErrorProcessing,\n} from './xhr-error'\nimport Apps from './apps'\nimport { AppConfig, appConfig } from './appconfig'\nimport { appSettings } from './appsettings'\nimport appswebroots from './appswebroots'\nimport Backbone from './backbone'\nimport {\n\tbasename,\n\tdirname,\n\tencodePath,\n\tisSamePath,\n\tjoinPaths,\n} from '@nextcloud/paths'\nimport {\n\tbuild as buildQueryString,\n\tparse as parseQueryString,\n} from './query-string'\nimport Config from './config'\nimport {\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n} from './constants'\nimport ContactsMenu from './contactsmenu'\nimport { currentUser, getCurrentUser } from './currentuser'\nimport Dialogs from './dialogs'\nimport EventSource from './eventsource'\nimport { get, set } from './get_set'\nimport { getCapabilities } from './capabilities'\nimport {\n\tgetHost,\n\tgetHostName,\n\tgetPort,\n\tgetProtocol,\n} from './host'\nimport {\n\tgetToken as getRequestToken,\n} from './requesttoken'\nimport {\n\thideMenus,\n\tregisterMenu,\n\tshowMenu,\n\tunregisterMenu,\n} from './menu'\nimport { isUserAdmin } from './admin'\nimport L10N, {\n\tgetLanguage,\n\tgetLocale,\n} from './l10n'\nimport {\n\tgetCanonicalLocale,\n} from '@nextcloud/l10n'\n\nimport {\n\tgenerateUrl,\n\tgenerateFilePath,\n\tgenerateOcsUrl,\n\tgenerateRemoteUrl,\n\tgetRootUrl,\n\timagePath,\n\tlinkTo,\n} from '@nextcloud/router'\n\nimport {\n\tlinkToRemoteBase,\n} from './routing'\nimport msg from './msg'\nimport Notification from './notification'\nimport PasswordConfirmation from './password-confirmation'\nimport Plugins from './plugins'\nimport { theme } from './theme'\nimport Util from './util'\nimport { debug } from './debug'\nimport { redirect, reload } from './navigation'\nimport webroot from './webroot'\n\n/** @namespace OC */\nexport default {\n\t/*\n\t * Constants\n\t */\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n\n\t/*\n\t * Deprecated helpers to be removed\n\t */\n\t/**\n\t * Check if a user file is allowed to be handled.\n\t *\n\t * @param {string} file to check\n\t * @return {boolean}\n\t * @deprecated 17.0.0\n\t */\n\tfileIsBlacklisted: file => !!(file.match(Config.blacklist_files_regex)),\n\n\taddScript,\n\taddStyle,\n\tApps,\n\tAppConfig,\n\tappConfig,\n\tappSettings,\n\tappswebroots,\n\tBackbone,\n\tContactsMenu,\n\tconfig: Config,\n\t/**\n\t * Currently logged in user or null if none\n\t *\n\t * @type {string}\n\t * @deprecated use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tcurrentUser,\n\tdialogs: Dialogs,\n\tEventSource,\n\t/**\n\t * Returns the currently logged in user or null if there is no logged in\n\t * user (public page mode)\n\t *\n\t * @since 9.0.0\n\t * @deprecated 19.0.0 use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tgetCurrentUser,\n\tisUserAdmin,\n\tL10N,\n\n\t/**\n\t * Ajax error handlers\n\t *\n\t * @todo remove from here and keep internally -> requires new tests\n\t */\n\t_ajaxConnectionLostHandler: ajaxConnectionLostHandler,\n\t_processAjaxError: processAjaxError,\n\tregisterXHRForErrorProcessing,\n\n\t/**\n\t * Capabilities\n\t *\n\t * @type {Array}\n\t * @deprecated 20.0.0 use @nextcloud/capabilities instead\n\t */\n\tgetCapabilities,\n\n\t/*\n\t * Legacy menu helpers\n\t */\n\thideMenus,\n\tregisterMenu,\n\tshowMenu,\n\tunregisterMenu,\n\n\t/*\n\t * Path helpers\n\t */\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tbasename,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tencodePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tdirname,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tisSamePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tjoinPaths,\n\n\t/**\n\t * Host (url) helpers\n\t */\n\tgetHost,\n\tgetHostName,\n\tgetPort,\n\tgetProtocol,\n\n\t/**\n\t * @deprecated 20.0.0 use `getCanonicalLocale` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetCanonicalLocale,\n\tgetLocale,\n\tgetLanguage,\n\t/**\n\t * Loads translations for the given app asynchronously.\n\t *\n\t * @param {string} app app name\n\t * @param {Function} callback callback to call after loading\n\t * @return {Promise}\n\t * @deprecated 17.0.0 use OC.L10N.load instead\n\t */\n\taddTranslations: L10N.load,\n\n\t/**\n\t * Query string helpers\n\t */\n\tbuildQueryString,\n\tparseQueryString,\n\n\tmsg,\n\tNotification,\n\tPasswordConfirmation,\n\tPlugins,\n\ttheme,\n\tUtil,\n\tdebug,\n\t/**\n\t * @deprecated 19.0.0 use `generateFilePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tfilePath: generateFilePath,\n\t/**\n\t * @deprecated 19.0.0 use `generateUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgenerateUrl,\n\t/**\n\t * @deprecated 19.0.0 use https://lodash.com/docs#get\n\t */\n\tget: get(window),\n\t/**\n\t * @deprecated 19.0.0 use https://lodash.com/docs#set\n\t */\n\tset: set(window),\n\t/**\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgetRootPath: getRootUrl,\n\t/**\n\t * @deprecated 19.0.0 use `imagePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\timagePath,\n\tredirect,\n\treload,\n\trequestToken: getRequestToken(),\n\t/**\n\t * @deprecated 19.0.0 use `linkTo` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkTo,\n\t/**\n\t * @param {string} service service name\n\t * @param {number} version OCS API version\n\t * @return {string} OCS API base path\n\t * @deprecated 19.0.0 use `generateOcsUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToOCS: (service, version) => {\n\t\treturn generateOcsUrl(service, {}, {\n\t\t\tocsVersion: version || 1,\n\t\t}) + '/'\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `generateRemoteUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToRemote: generateRemoteUrl,\n\tlinkToRemoteBase,\n\t/**\n\t * Relative path to Nextcloud root.\n\t * For example: \"/nextcloud\"\n\t *\n\t * @type {string}\n\t *\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t * @see OC#getRootPath\n\t */\n\twebroot,\n}\n\n// Keep the request token prop in sync\nsubscribe('csrf-token-update', e => {\n\tOC.requestToken = e.token\n\n\t// Logging might help debug (Sentry) issues\n\tconsole.info('OC.requestToken changed', e.token)\n})\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport $ from 'jquery'\nimport { filePath } from './routing'\nimport { generateFilePath } from \"@nextcloud/router\"\n\n/**\n * Opens a popup with the setting for an app.\n * @param {string} appid The ID of the app e.g. 'calendar', 'contacts' or 'files'.\n * @param {boolean|string} loadJS If true 'js/settings.js' is loaded. If it's a string\n * it will attempt to load a script by that name in the 'js' directory.\n * @param {boolean} [cache] If true the javascript file won't be forced refreshed. Defaults to true.\n * @param {string} [scriptName] The name of the PHP file to load. Defaults to 'settings.php' in\n * the root of the app directory hierarchy.\n *\n * @deprecated 17.0.0 this method is unused and will be removed with Nextcloud 18\n */\nexport const appSettings = args => {\n\tconsole.warn('OC.appSettings is deprecated and will be removed with Nextcloud 18')\n\n\tif (typeof args === 'undefined' || typeof args.appid === 'undefined') {\n\t\tthrow {\n\t\t\tname: 'MissingParameter',\n\t\t\tmessage: 'The parameter appid is missing'\n\t\t}\n\t}\n\tvar props = { scriptName: 'settings.php', cache: true }\n\t$.extend(props, args)\n\tvar settings = $('#appsettings')\n\tif (settings.length === 0) {\n\t\tthrow {\n\t\t\tname: 'MissingDOMElement',\n\t\t\tmessage: 'There has be be an element with id \"appsettings\" for the popup to show.'\n\t\t}\n\t}\n\tvar popup = $('#appsettings_popup')\n\tif (popup.length === 0) {\n\t\t$('body').prepend('<div class=\"popup hidden\" id=\"appsettings_popup\"></div>')\n\t\tpopup = $('#appsettings_popup')\n\t\tpopup.addClass(settings.hasClass('topright') ? 'topright' : 'bottomleft')\n\t}\n\tif (popup.is(':visible')) {\n\t\tpopup.hide().remove()\n\t} else {\n\t\tconst arrowclass = settings.hasClass('topright') ? 'up' : 'left'\n\t\t$.get(generateFilePath(props.appid, '', props.scriptName), function(data) {\n\t\t\tpopup.html(data).ready(function() {\n\t\t\t\tpopup.prepend('<span class=\"arrow ' + arrowclass + '\"></span><h2>' + t('core', 'Settings') + '</h2><a class=\"close\"></a>').show()\n\t\t\t\tpopup.find('.close').bind('click', function() {\n\t\t\t\t\tpopup.remove()\n\t\t\t\t})\n\t\t\t\tif (typeof props.loadJS !== 'undefined') {\n\t\t\t\t\tvar scriptname\n\t\t\t\t\tif (props.loadJS === true) {\n\t\t\t\t\t\tscriptname = 'settings.js'\n\t\t\t\t\t} else if (typeof props.loadJS === 'string') {\n\t\t\t\t\t\tscriptname = props.loadJS\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow {\n\t\t\t\t\t\t\tname: 'InvalidParameter',\n\t\t\t\t\t\t\tmessage: 'The \"loadJS\" parameter must be either boolean or a string.'\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (props.cache) {\n\t\t\t\t\t\t$.ajaxSetup({ cache: true })\n\t\t\t\t\t}\n\t\t\t\t\t$.getScript(generateFilePath(props.appid, 'js', scriptname))\n\t\t\t\t\t\t.fail(function(jqxhr, settings, e) {\n\t\t\t\t\t\t\tthrow e\n\t\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}).show()\n\t\t}, 'html')\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { getCapabilities as realGetCapabilities } from '@nextcloud/capabilities'\n\n/**\n * Returns the capabilities\n *\n * @return {Array} capabilities\n *\n * @since 14.0.0\n */\nexport const getCapabilities = () => {\n\tconsole.warn('OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities')\n\treturn realGetCapabilities()\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const getProtocol = () => window.location.protocol.split(':')[0]\n\n/**\n * Returns the host used to access this Nextcloud instance\n * Host is sometimes the same as the hostname but now always.\n *\n * Examples:\n * http://example.com => example.com\n * https://example.com => example.com\n * http://example.com:8080 => example.com:8080\n *\n * @return {string} host\n *\n * @since 8.2.0\n * @deprecated 17.0.0 use window.location.host directly\n */\nexport const getHost = () => window.location.host\n\n/**\n * Returns the hostname used to access this Nextcloud instance\n * The hostname is always stripped of the port\n *\n * @return {string} hostname\n * @since 9.0.0\n * @deprecated 17.0.0 use window.location.hostname directly\n */\nexport const getHostName = () => window.location.hostname\n\n/**\n * Returns the port number used to access this Nextcloud instance\n *\n * @return {number} port number\n *\n * @since 8.2.0\n * @deprecated 17.0.0 use window.location.port directly\n */\nexport const getPort = () => window.location.port\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n/**\n * Parses a URL query string into a JS map\n *\n * @param {string} queryString query string in the format param1=1234¶m2=abcde¶m3=xyz\n * @return {Object<string, string>} map containing key/values matching the URL parameters\n */\nexport const parse = queryString => {\n\tlet pos\n\tlet components\n\tconst result = {}\n\tlet key\n\tif (!queryString) {\n\t\treturn null\n\t}\n\tpos = queryString.indexOf('?')\n\tif (pos >= 0) {\n\t\tqueryString = queryString.substr(pos + 1)\n\t}\n\tconst parts = queryString.replace(/\\+/g, '%20').split('&')\n\tfor (let i = 0; i < parts.length; i++) {\n\t\t// split on first equal sign\n\t\tconst part = parts[i]\n\t\tpos = part.indexOf('=')\n\t\tif (pos >= 0) {\n\t\t\tcomponents = [\n\t\t\t\tpart.substr(0, pos),\n\t\t\t\tpart.substr(pos + 1),\n\t\t\t]\n\t\t} else {\n\t\t\t// key only\n\t\t\tcomponents = [part]\n\t\t}\n\t\tif (!components.length) {\n\t\t\tcontinue\n\t\t}\n\t\tkey = decodeURIComponent(components[0])\n\t\tif (!key) {\n\t\t\tcontinue\n\t\t}\n\t\t// if equal sign was there, return string\n\t\tif (components.length > 1) {\n\t\t\tresult[key] = decodeURIComponent(components[1])\n\t\t} else {\n\t\t\t// no equal sign => null value\n\t\t\tresult[key] = null\n\t\t}\n\t}\n\treturn result\n}\n\n/**\n * Builds a URL query from a JS map.\n *\n * @param {Object<string, string>} params map containing key/values matching the URL parameters\n * @return {string} String containing a URL query (without question) mark\n */\nexport const build = params => {\n\tif (!params) {\n\t\treturn ''\n\t}\n\treturn $.map(params, function(value, key) {\n\t\tlet s = encodeURIComponent(key)\n\t\tif (value !== null && typeof (value) !== 'undefined') {\n\t\t\ts += '=' + encodeURIComponent(value)\n\t\t}\n\t\treturn s\n\t}).join('&')\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default {\n\n\t/**\n\t * @type {Array.<OC.Plugin>}\n\t */\n\t_plugins: {},\n\n\t/**\n\t * Register plugin\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @param {OC.Plugin} plugin plugin\n\t */\n\tregister(targetName, plugin) {\n\t\tlet plugins = this._plugins[targetName]\n\t\tif (!plugins) {\n\t\t\tplugins = this._plugins[targetName] = []\n\t\t}\n\t\tplugins.push(plugin)\n\t},\n\n\t/**\n\t * Returns all plugin registered to the given target\n\t * name / app name / class name.\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @return {Array.<OC.Plugin>} array of plugins\n\t */\n\tgetPlugins(targetName) {\n\t\treturn this._plugins[targetName] || []\n\t},\n\n\t/**\n\t * Call attach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tattach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].attach) {\n\t\t\t\tplugins[i].attach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Call detach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tdetach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].detach) {\n\t\t\t\tplugins[i].detach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const redirect = targetURL => { window.location = targetURL }\n\n/**\n * Reloads the current page\n *\n * @deprecated 17.0.0 use window.location.reload directly\n */\nexport const reload = () => { window.location.reload() }\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport {\n\tgetRootUrl as realGetRootUrl,\n} from '@nextcloud/router'\n\n/**\n * Creates a relative url for remote use\n *\n * @param {string} service id\n * @return {string} the url\n */\nexport const linkToRemoteBase = service => {\n\treturn realGetRootUrl() + '/remote.php/' + service\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"guest-box login-box\"},[(!_vm.hideLoginForm || _vm.directLogin)?_c('div',[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[(!_vm.passwordlessLogin && !_vm.resetPassword && _vm.resetPasswordTarget === '')?_c('div',[_c('LoginForm',{attrs:{\"username\":_vm.user,\"redirect-url\":_vm.redirectUrl,\"direct-login\":_vm.directLogin,\"messages\":_vm.messages,\"errors\":_vm.errors,\"throttle-delay\":_vm.throttleDelay,\"auto-complete-allowed\":_vm.autoCompleteAllowed},on:{\"update:username\":function($event){_vm.user=$event},\"submit\":function($event){_vm.loading = true}}}),_vm._v(\" \"),(_vm.canResetPassword && _vm.resetPasswordLink !== '')?_c('a',{staticClass:\"login-box__link\",attrs:{\"id\":\"lost-password\",\"href\":_vm.resetPasswordLink}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Forgot password?'))+\"\\n\\t\\t\\t\\t\")]):(_vm.canResetPassword && !_vm.resetPassword)?_c('a',{staticClass:\"login-box__link\",attrs:{\"id\":\"lost-password\",\"href\":_vm.resetPasswordLink},on:{\"click\":function($event){$event.preventDefault();_vm.resetPassword = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Forgot password?'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.hasPasswordless)?[(_vm.countAlternativeLogins)?_c('div',{staticClass:\"alternative-logins\"},[(_vm.hasPasswordless)?_c('a',{staticClass:\"button\",class:{ 'single-alt-login-option': _vm.countAlternativeLogins },attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.passwordlessLogin = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Log in with a device'))+\"\\n\\t\\t\\t\\t\\t\\t\")]):_vm._e()]):_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.passwordlessLogin = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Log in with a device'))+\"\\n\\t\\t\\t\\t\\t\")])]:_vm._e()],2):(!_vm.loading && _vm.passwordlessLogin)?_c('div',{key:\"reset\",staticClass:\"login-additional\"},[_c('PasswordLessLoginForm',{attrs:{\"username\":_vm.user,\"redirect-url\":_vm.redirectUrl,\"auto-complete-allowed\":_vm.autoCompleteAllowed,\"is-https\":_vm.isHttps,\"is-localhost\":_vm.isLocalhost,\"has-public-key-credential\":_vm.hasPublicKeyCredential},on:{\"update:username\":function($event){_vm.user=$event},\"submit\":function($event){_vm.loading = true}}}),_vm._v(\" \"),_c('a',{staticClass:\"login-box__link\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.passwordlessLogin = false}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Back'))+\"\\n\\t\\t\\t\\t\")])],1):(!_vm.loading && _vm.canResetPassword)?_c('div',{key:\"reset\",staticClass:\"login-additional\"},[_c('div',{staticClass:\"lost-password-container\"},[(_vm.resetPassword)?_c('ResetPassword',{attrs:{\"username\":_vm.user,\"reset-password-link\":_vm.resetPasswordLink},on:{\"update:username\":function($event){_vm.user=$event},\"abort\":function($event){_vm.resetPassword = false}}}):_vm._e()],1)]):(_vm.resetPasswordTarget !== '')?_c('div',[_c('UpdatePassword',{attrs:{\"username\":_vm.user,\"reset-password-target\":_vm.resetPasswordTarget},on:{\"update:username\":function($event){_vm.user=$event},\"done\":_vm.passwordResetFinished}})],1):_vm._e()])],1):_c('div',[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('NcNoteCard',{attrs:{\"type\":\"warning\",\"title\":_vm.t('core', 'Login form is disabled.')}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Please contact your administrator.'))+\"\\n\\t\\t\\t\")])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"alternative-logins\",attrs:{\"id\":\"alternative-logins\"}},_vm._l((_vm.alternativeLogins),function(alternativeLogin,index){return _c('NcButton',{key:index,class:[alternativeLogin.class],attrs:{\"type\":\"secondary\",\"wide\":true,\"role\":\"link\",\"href\":alternativeLogin.href},on:{\"click\":function($event){return _vm.goTo(alternativeLogin.href)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(alternativeLogin.name)+\"\\n\\t\\t\")])}),1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=script&lang=js&\"","<!--\n - @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -->\n\n<template>\n\t<NcButton type=\"primary\"\n\t\tnative-type=\"submit\"\n\t\t:wide=\"true\"\n\t\t@click=\"$emit('click')\">\n\t\t{{ !loading ? value : valueLoading }}\n\t\t<template #icon>\n\t\t\t<div v-if=\"loading\" class=\"submit-wrapper__icon icon-loading-small-dark\" />\n\t\t\t<ArrowRight v-else class=\"submit-wrapper__icon\" />\n\t\t</template>\n\t</NcButton>\n</template>\n\n<script>\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton'\nimport ArrowRight from 'vue-material-design-icons/ArrowRight.vue'\n\nexport default {\n\tname: 'LoginButton',\n\tcomponents: {\n\t\tArrowRight,\n\t\tNcButton,\n\t},\n\tprops: {\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: t('core', 'Log in'),\n\t\t},\n\t\tvalueLoading: {\n\t\t\ttype: String,\n\t\t\tdefault: t('core', 'Logging in …'),\n\t\t},\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tinvertedColors: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.button-vue {\n\tmargin-top: .5rem;\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=style&index=0&id=756414a8&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=style&index=0&id=756414a8&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./LoginButton.vue?vue&type=template&id=756414a8&scoped=true&\"\nimport script from \"./LoginButton.vue?vue&type=script&lang=js&\"\nexport * from \"./LoginButton.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LoginButton.vue?vue&type=style&index=0&id=756414a8&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"756414a8\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('NcButton',{attrs:{\"type\":\"primary\",\"native-type\":\"submit\",\"wide\":true},on:{\"click\":function($event){return _vm.$emit('click')}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading)?_c('div',{staticClass:\"submit-wrapper__icon icon-loading-small-dark\"}):_c('ArrowRight',{staticClass:\"submit-wrapper__icon\"})]},proxy:true}])},[_vm._v(\"\\n\\t\"+_vm._s(!_vm.loading ? _vm.value : _vm.valueLoading)+\"\\n\\t\")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=script&lang=js&\"","<!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -->\n\n<template>\n\t<form ref=\"loginForm\"\n\t\tclass=\"login-form\"\n\t\tmethod=\"post\"\n\t\tname=\"login\"\n\t\t:action=\"loginActionUrl\"\n\t\t@submit=\"submit\">\n\t\t<fieldset class=\"login-form__fieldset\" data-login-form>\n\t\t\t<NcNoteCard v-if=\"apacheAuthFailed\"\n\t\t\t\t:title=\"t('core', 'Server side authentication failed!')\"\n\t\t\t\ttype=\"warning\">\n\t\t\t\t{{ t('core', 'Please contact your administrator.') }}\n\t\t\t</NcNoteCard>\n\t\t\t<NcNoteCard v-if=\"messages.length > 0\">\n\t\t\t\t<div v-for=\"(message, index) in messages\"\n\t\t\t\t\t:key=\"index\">\n\t\t\t\t\t{{ message }}<br>\n\t\t\t\t</div>\n\t\t\t</NcNoteCard>\n\t\t\t<NcNoteCard v-if=\"internalException\"\n\t\t\t\t:class=\"t('core', 'An internal error occurred.')\"\n\t\t\t\ttype=\"warning\">\n\t\t\t\t{{ t('core', 'Please try again or contact your administrator.') }}\n\t\t\t</NcNoteCard>\n\t\t\t<div id=\"message\"\n\t\t\t\tclass=\"hidden\">\n\t\t\t\t<img class=\"float-spinner\"\n\t\t\t\t\talt=\"\"\n\t\t\t\t\t:src=\"loadingIcon\">\n\t\t\t\t<span id=\"messageText\" />\n\t\t\t\t<!-- the following div ensures that the spinner is always inside the #message div -->\n\t\t\t\t<div style=\"clear: both;\" />\n\t\t\t</div>\n\t\t\t<h2 class=\"login-form__headline\" data-login-form-headline v-html=\"headline\" />\n\t\t\t<NcTextField id=\"user\"\n\t\t\t\tref=\"user\"\n\t\t\t\t:label=\"t('core', 'Account name or email')\"\n\t\t\t\t:label-visible=\"true\"\n\t\t\t\tname=\"user\"\n\t\t\t\t:value.sync=\"user\"\n\t\t\t\t:class=\"{shake: invalidPassword}\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t:spellchecking=\"false\"\n\t\t\t\t:autocomplete=\"autoCompleteAllowed ? 'username' : 'off'\"\n\t\t\t\trequired\n\t\t\t\tdata-login-form-input-user\n\t\t\t\t@change=\"updateUsername\" />\n\n\t\t\t<NcPasswordField id=\"password\"\n\t\t\t\tref=\"password\"\n\t\t\t\tname=\"password\"\n\t\t\t\t:label-visible=\"true\"\n\t\t\t\t:class=\"{shake: invalidPassword}\"\n\t\t\t\t:value.sync=\"password\"\n\t\t\t\t:spellchecking=\"false\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t:autocomplete=\"autoCompleteAllowed ? 'current-password' : 'off'\"\n\t\t\t\t:label=\"t('core', 'Password')\"\n\t\t\t\t:helper-text=\"errorLabel\"\n\t\t\t\t:error=\"isError\"\n\t\t\t\tdata-login-form-input-password\n\t\t\t\trequired />\n\n\t\t\t<LoginButton data-login-form-submit :loading=\"loading\" />\n\n\t\t\t<input v-if=\"redirectUrl\"\n\t\t\t\ttype=\"hidden\"\n\t\t\t\tname=\"redirect_url\"\n\t\t\t\t:value=\"redirectUrl\">\n\t\t\t<input type=\"hidden\"\n\t\t\t\tname=\"timezone\"\n\t\t\t\t:value=\"timezone\">\n\t\t\t<input type=\"hidden\"\n\t\t\t\tname=\"timezone_offset\"\n\t\t\t\t:value=\"timezoneOffset\">\n\t\t\t<input type=\"hidden\"\n\t\t\t\tname=\"requesttoken\"\n\t\t\t\t:value=\"OC.requestToken\">\n\t\t\t<input v-if=\"directLogin\"\n\t\t\t\ttype=\"hidden\"\n\t\t\t\tname=\"direct\"\n\t\t\t\tvalue=\"1\">\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport jstz from 'jstimezonedetect'\nimport { generateUrl, imagePath } from '@nextcloud/router'\n\nimport NcPasswordField from '@nextcloud/vue/dist/Components/NcPasswordField.js'\nimport NcTextField from '@nextcloud/vue/dist/Components/NcTextField.js'\nimport NcNoteCard from '@nextcloud/vue/dist/Components/NcNoteCard.js'\n\nimport LoginButton from './LoginButton.vue'\n\nexport default {\n\tname: 'LoginForm',\n\n\tcomponents: {\n\t\tLoginButton,\n\t\tNcPasswordField,\n\t\tNcTextField,\n\t\tNcNoteCard,\n\t},\n\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tredirectUrl: {\n\t\t\ttype: [String, Boolean],\n\t\t\tdefault: false,\n\t\t},\n\t\terrors: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tmessages: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tthrottleDelay: {\n\t\t\ttype: Number,\n\t\t\tdefault: 0,\n\t\t},\n\t\tautoCompleteAllowed: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tdirectLogin: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t\ttimezone: jstz.determine().name(),\n\t\t\ttimezoneOffset: (-new Date().getTimezoneOffset() / 60),\n\t\t\theadline: t('core', 'Log in to {productName}', { productName: OC.theme.name }),\n\t\t\tuser: '',\n\t\t\tpassword: '',\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisError() {\n\t\t\treturn this.invalidPassword || this.userDisabled\n\t\t\t\t|| this.throttleDelay > 5000\n\t\t},\n\t\terrorLabel() {\n\t\t\tif (this.invalidPassword) {\n\t\t\t\treturn t('core', 'Wrong username or password.')\n\t\t\t}\n\t\t\tif (this.userDisabled) {\n\t\t\t\treturn t('core', 'User disabled')\n\t\t\t}\n\t\t\tif (this.throttleDelay > 5000) {\n\t\t\t\treturn t('core', 'We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds.')\n\t\t\t}\n\t\t\treturn undefined\n\t\t},\n\t\tapacheAuthFailed() {\n\t\t\treturn this.errors.indexOf('apacheAuthFailed') !== -1\n\t\t},\n\t\tinternalException() {\n\t\t\treturn this.errors.indexOf('internalexception') !== -1\n\t\t},\n\t\tinvalidPassword() {\n\t\t\treturn this.errors.indexOf('invalidpassword') !== -1\n\t\t},\n\t\tuserDisabled() {\n\t\t\treturn this.errors.indexOf('userdisabled') !== -1\n\t\t},\n\t\tloadingIcon() {\n\t\t\treturn imagePath('core', 'loading-dark.gif')\n\t\t},\n\t\tloginActionUrl() {\n\t\t\treturn generateUrl('login')\n\t\t},\n\t},\n\n\tmounted() {\n\t\tif (this.username === '') {\n\t\t\tthis.$refs.user.$refs.inputField.$refs.input.focus()\n\t\t} else {\n\t\t\tthis.user = this.username\n\t\t\tthis.$refs.password.$refs.inputField.$refs.input.focus()\n\t\t}\n\t},\n\n\tmethods: {\n\t\tupdateUsername() {\n\t\t\tthis.$emit('update:username', this.user)\n\t\t},\n\t\tsubmit() {\n\t\t\tthis.loading = true\n\t\t\tthis.$emit('submit')\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.login-form {\n\ttext-align: left;\n\tfont-size: 1rem;\n\n\t&__fieldset {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: .5rem;\n\t}\n\n\t&__headline {\n\t\ttext-align: center;\n\t}\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=style&index=0&id=48dc6965&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=style&index=0&id=48dc6965&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./LoginForm.vue?vue&type=template&id=48dc6965&scoped=true&\"\nimport script from \"./LoginForm.vue?vue&type=script&lang=js&\"\nexport * from \"./LoginForm.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LoginForm.vue?vue&type=style&index=0&id=48dc6965&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"48dc6965\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('form',{ref:\"loginForm\",staticClass:\"login-form\",attrs:{\"method\":\"post\",\"name\":\"login\",\"action\":_vm.loginActionUrl},on:{\"submit\":_vm.submit}},[_c('fieldset',{staticClass:\"login-form__fieldset\",attrs:{\"data-login-form\":\"\"}},[(_vm.apacheAuthFailed)?_c('NcNoteCard',{attrs:{\"title\":_vm.t('core', 'Server side authentication failed!'),\"type\":\"warning\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Please contact your administrator.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.messages.length > 0)?_c('NcNoteCard',_vm._l((_vm.messages),function(message,index){return _c('div',{key:index},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(message)),_c('br')])}),0):_vm._e(),_vm._v(\" \"),(_vm.internalException)?_c('NcNoteCard',{class:_vm.t('core', 'An internal error occurred.'),attrs:{\"type\":\"warning\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Please try again or contact your administrator.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"hidden\",attrs:{\"id\":\"message\"}},[_c('img',{staticClass:\"float-spinner\",attrs:{\"alt\":\"\",\"src\":_vm.loadingIcon}}),_vm._v(\" \"),_c('span',{attrs:{\"id\":\"messageText\"}}),_vm._v(\" \"),_c('div',{staticStyle:{\"clear\":\"both\"}})]),_vm._v(\" \"),_c('h2',{staticClass:\"login-form__headline\",attrs:{\"data-login-form-headline\":\"\"},domProps:{\"innerHTML\":_vm._s(_vm.headline)}}),_vm._v(\" \"),_c('NcTextField',{ref:\"user\",class:{shake: _vm.invalidPassword},attrs:{\"id\":\"user\",\"label\":_vm.t('core', 'Account name or email'),\"label-visible\":true,\"name\":\"user\",\"value\":_vm.user,\"autocapitalize\":\"none\",\"spellchecking\":false,\"autocomplete\":_vm.autoCompleteAllowed ? 'username' : 'off',\"required\":\"\",\"data-login-form-input-user\":\"\"},on:{\"update:value\":function($event){_vm.user=$event},\"change\":_vm.updateUsername}}),_vm._v(\" \"),_c('NcPasswordField',{ref:\"password\",class:{shake: _vm.invalidPassword},attrs:{\"id\":\"password\",\"name\":\"password\",\"label-visible\":true,\"value\":_vm.password,\"spellchecking\":false,\"autocapitalize\":\"none\",\"autocomplete\":_vm.autoCompleteAllowed ? 'current-password' : 'off',\"label\":_vm.t('core', 'Password'),\"helper-text\":_vm.errorLabel,\"error\":_vm.isError,\"data-login-form-input-password\":\"\",\"required\":\"\"},on:{\"update:value\":function($event){_vm.password=$event}}}),_vm._v(\" \"),_c('LoginButton',{attrs:{\"data-login-form-submit\":\"\",\"loading\":_vm.loading}}),_vm._v(\" \"),(_vm.redirectUrl)?_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"redirect_url\"},domProps:{\"value\":_vm.redirectUrl}}):_vm._e(),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"timezone\"},domProps:{\"value\":_vm.timezone}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"timezone_offset\"},domProps:{\"value\":_vm.timezoneOffset}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"requesttoken\"},domProps:{\"value\":_vm.OC.requestToken}}),_vm._v(\" \"),(_vm.directLogin)?_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"direct\",\"value\":\"1\"}}):_vm._e()],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<form v-if=\"(isHttps || isLocalhost) && hasPublicKeyCredential\"\n\t\tref=\"loginForm\"\n\t\tmethod=\"post\"\n\t\tname=\"login\"\n\t\t@submit.prevent=\"submit\">\n\t\t<fieldset>\n\t\t\t<p class=\"grouptop groupbottom\">\n\t\t\t\t<label for=\"user\" class=\"infield\">{{ t('core', 'Username or\temail') }}</label>\n\t\t\t\t<input id=\"user\"\n\t\t\t\t\tref=\"user\"\n\t\t\t\t\tv-model=\"user\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tname=\"user\"\n\t\t\t\t\t:autocomplete=\"autoCompleteAllowed ? 'on' : 'off'\"\n\t\t\t\t\t:placeholder=\"t('core', 'Username or email')\"\n\t\t\t\t\t:aria-label=\"t('core', 'Username or email')\"\n\t\t\t\t\trequired\n\t\t\t\t\t@change=\"$emit('update:username', user)\">\n\t\t\t</p>\n\n\t\t\t<div v-if=\"!validCredentials\" class=\"body-login-container update form__message-box\">\n\t\t\t\t{{ t('core', 'Your account is not setup for passwordless login.') }}\n\t\t\t</div>\n\n\t\t\t<LoginButton v-if=\"validCredentials\"\n\t\t\t\t:loading=\"loading\"\n\t\t\t\t@click=\"authenticate\" />\n\t\t</fieldset>\n\t</form>\n\t<div v-else-if=\"!hasPublicKeyCredential\" class=\"body-login-container update\">\n\t\t<InformationIcon size=\"70\" />\n\t\t<h2>{{ t('core', 'Browser not supported') }}</h2>\n\t\t<p class=\"infogroup\">\n\t\t\t{{ t('core', 'Passwordless authentication is not supported in your browser.') }}\n\t\t</p>\n\t</div>\n\t<div v-else-if=\"!isHttps && !isLocalhost\" class=\"body-login-container update\">\n\t\t<LockOpenIcon size=\"70\" />\n\t\t<h2>{{ t('core', 'Your connection is not secure') }}</h2>\n\t\t<p class=\"infogroup\">\n\t\t\t{{ t('core', 'Passwordless authentication is only available over a secure connection.') }}\n\t\t</p>\n\t</div>\n</template>\n\n<script>\nimport {\n\tstartAuthentication,\n\tfinishAuthentication,\n} from '../../services/WebAuthnAuthenticationService'\nimport LoginButton from './LoginButton'\nimport InformationIcon from 'vue-material-design-icons/Information'\nimport LockOpenIcon from 'vue-material-design-icons/LockOpen'\n\nclass NoValidCredentials extends Error {\n\n}\n\nexport default {\n\tname: 'PasswordLessLoginForm',\n\tcomponents: {\n\t\tLoginButton,\n\t\tInformationIcon,\n\t\tLockOpenIcon,\n\t},\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tredirectUrl: {\n\t\t\ttype: [String, Boolean],\n\t\t\tdefault: false,\n\t\t},\n\t\tautoCompleteAllowed: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tisHttps: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tisLocalhost: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\thasPublicKeyCredential: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tuser: this.username,\n\t\t\tloading: false,\n\t\t\tvalidCredentials: true,\n\t\t}\n\t},\n\tmethods: {\n\t\tauthenticate() {\n\t\t\tconsole.debug('passwordless login initiated')\n\n\t\t\tthis.getAuthenticationData(this.user)\n\t\t\t\t.then(publicKey => {\n\t\t\t\t\tconsole.debug(publicKey)\n\t\t\t\t\treturn publicKey\n\t\t\t\t})\n\t\t\t\t.then(this.sign)\n\t\t\t\t.then(this.completeAuthentication)\n\t\t\t\t.catch(error => {\n\t\t\t\t\tif (error instanceof NoValidCredentials) {\n\t\t\t\t\t\tthis.validCredentials = false\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tconsole.debug(error)\n\t\t\t\t})\n\t\t},\n\t\tgetAuthenticationData(uid) {\n\t\t\tconst base64urlDecode = function(input) {\n\t\t\t\t// Replace non-url compatible chars with base64 standard chars\n\t\t\t\tinput = input\n\t\t\t\t\t.replace(/-/g, '+')\n\t\t\t\t\t.replace(/_/g, '/')\n\n\t\t\t\t// Pad out with standard base64 required padding characters\n\t\t\t\tconst pad = input.length % 4\n\t\t\t\tif (pad) {\n\t\t\t\t\tif (pad === 1) {\n\t\t\t\t\t\tthrow new Error('InvalidLengthError: Input base64url string is the wrong length to determine padding')\n\t\t\t\t\t}\n\t\t\t\t\tinput += new Array(5 - pad).join('=')\n\t\t\t\t}\n\n\t\t\t\treturn window.atob(input)\n\t\t\t}\n\n\t\t\treturn startAuthentication(uid)\n\t\t\t\t.then(publicKey => {\n\t\t\t\t\tconsole.debug('Obtained PublicKeyCredentialRequestOptions')\n\t\t\t\t\tconsole.debug(publicKey)\n\n\t\t\t\t\tif (!Object.prototype.hasOwnProperty.call(publicKey, 'allowCredentials')) {\n\t\t\t\t\t\tconsole.debug('No credentials found.')\n\t\t\t\t\t\tthrow new NoValidCredentials()\n\t\t\t\t\t}\n\n\t\t\t\t\tpublicKey.challenge = Uint8Array.from(base64urlDecode(publicKey.challenge), c => c.charCodeAt(0))\n\t\t\t\t\tpublicKey.allowCredentials = publicKey.allowCredentials.map(function(data) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...data,\n\t\t\t\t\t\t\tid: Uint8Array.from(base64urlDecode(data.id), c => c.charCodeAt(0)),\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\n\t\t\t\t\tconsole.debug('Converted PublicKeyCredentialRequestOptions')\n\t\t\t\t\tconsole.debug(publicKey)\n\t\t\t\t\treturn publicKey\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconsole.debug('Error while obtaining data')\n\t\t\t\t\tthrow error\n\t\t\t\t})\n\t\t},\n\t\tsign(publicKey) {\n\t\t\tconst arrayToBase64String = function(a) {\n\t\t\t\treturn window.btoa(String.fromCharCode(...a))\n\t\t\t}\n\n\t\t\tconst arrayToString = function(a) {\n\t\t\t\treturn String.fromCharCode(...a)\n\t\t\t}\n\n\t\t\treturn navigator.credentials.get({ publicKey })\n\t\t\t\t.then(data => {\n\t\t\t\t\tconsole.debug(data)\n\t\t\t\t\tconsole.debug(new Uint8Array(data.rawId))\n\t\t\t\t\tconsole.debug(arrayToBase64String(new Uint8Array(data.rawId)))\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid: data.id,\n\t\t\t\t\t\ttype: data.type,\n\t\t\t\t\t\trawId: arrayToBase64String(new Uint8Array(data.rawId)),\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tauthenticatorData: arrayToBase64String(new Uint8Array(data.response.authenticatorData)),\n\t\t\t\t\t\t\tclientDataJSON: arrayToBase64String(new Uint8Array(data.response.clientDataJSON)),\n\t\t\t\t\t\t\tsignature: arrayToBase64String(new Uint8Array(data.response.signature)),\n\t\t\t\t\t\t\tuserHandle: data.response.userHandle ? arrayToString(new Uint8Array(data.response.userHandle)) : null,\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.then(challenge => {\n\t\t\t\t\tconsole.debug(challenge)\n\t\t\t\t\treturn challenge\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconsole.debug('GOT AN ERROR!')\n\t\t\t\t\tconsole.debug(error) // Example: timeout, interaction refused...\n\t\t\t\t})\n\t\t},\n\t\tcompleteAuthentication(challenge) {\n\t\t\tconsole.debug('TIME TO COMPLETE')\n\n\t\t\tconst location = this.redirectUrl\n\n\t\t\treturn finishAuthentication(JSON.stringify(challenge))\n\t\t\t\t.then(data => {\n\t\t\t\t\tconsole.debug('Logged in redirecting')\n\t\t\t\t\twindow.location.href = location\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconsole.debug('GOT AN ERROR WHILE SUBMITTING CHALLENGE!')\n\t\t\t\t\tconsole.debug(error) // Example: timeout, interaction refused...\n\t\t\t\t})\n\t\t},\n\t\tsubmit() {\n\t\t\t// noop\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\t.body-login-container.update {\n\t\tmargin: 15px 0;\n\n\t\t&.form__message-box {\n\t\t\twidth: 240px;\n\t\t\tmargin: 5px;\n\t\t}\n\t}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=script&lang=js&\"","/**\n * @copyright 2020, Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\n\n/**\n * @param {any} loginName -\n */\nexport function startAuthentication(loginName) {\n\tconst url = generateUrl('/login/webauthn/start')\n\n\treturn Axios.post(url, { loginName })\n\t\t.then(resp => resp.data)\n}\n\n/**\n * @param {any} data -\n */\nexport function finishAuthentication(data) {\n\tconst url = generateUrl('/login/webauthn/finish')\n\n\treturn Axios.post(url, { data })\n\t\t.then(resp => resp.data)\n}\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=style&index=0&id=adf4afc4&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=style&index=0&id=adf4afc4&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./PasswordLessLoginForm.vue?vue&type=template&id=adf4afc4&scoped=true&\"\nimport script from \"./PasswordLessLoginForm.vue?vue&type=script&lang=js&\"\nexport * from \"./PasswordLessLoginForm.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PasswordLessLoginForm.vue?vue&type=style&index=0&id=adf4afc4&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"adf4afc4\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return ((_vm.isHttps || _vm.isLocalhost) && _vm.hasPublicKeyCredential)?_c('form',{ref:\"loginForm\",attrs:{\"method\":\"post\",\"name\":\"login\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('fieldset',[_c('p',{staticClass:\"grouptop groupbottom\"},[_c('label',{staticClass:\"infield\",attrs:{\"for\":\"user\"}},[_vm._v(_vm._s(_vm.t('core', 'Username or\temail')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user),expression:\"user\"}],ref:\"user\",attrs:{\"id\":\"user\",\"type\":\"text\",\"name\":\"user\",\"autocomplete\":_vm.autoCompleteAllowed ? 'on' : 'off',\"placeholder\":_vm.t('core', 'Username or email'),\"aria-label\":_vm.t('core', 'Username or email'),\"required\":\"\"},domProps:{\"value\":(_vm.user)},on:{\"change\":function($event){return _vm.$emit('update:username', _vm.user)},\"input\":function($event){if($event.target.composing){ return; }_vm.user=$event.target.value}}})]),_vm._v(\" \"),(!_vm.validCredentials)?_c('div',{staticClass:\"body-login-container update form__message-box\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Your account is not setup for passwordless login.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.validCredentials)?_c('LoginButton',{attrs:{\"loading\":_vm.loading},on:{\"click\":_vm.authenticate}}):_vm._e()],1)]):(!_vm.hasPublicKeyCredential)?_c('div',{staticClass:\"body-login-container update\"},[_c('InformationIcon',{attrs:{\"size\":\"70\"}}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Browser not supported')))]),_vm._v(\" \"),_c('p',{staticClass:\"infogroup\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Passwordless authentication is not supported in your browser.'))+\"\\n\\t\")])],1):(!_vm.isHttps && !_vm.isLocalhost)?_c('div',{staticClass:\"body-login-container update\"},[_c('LockOpenIcon',{attrs:{\"size\":\"70\"}}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Your connection is not secure')))]),_vm._v(\" \"),_c('p',{staticClass:\"infogroup\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Passwordless authentication is only available over a secure connection.'))+\"\\n\\t\")])],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=script&lang=js&\"","<!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -->\n\n<template>\n\t<form class=\"login-form\" @submit.prevent=\"submit\">\n\t\t<fieldset class=\"login-form__fieldset\">\n\t\t\t<NcTextField id=\"user\"\n\t\t\t\t:value.sync=\"user\"\n\t\t\t\tname=\"user\"\n\t\t\t\tautocapitalize=\"off\"\n\t\t\t\t:label=\"t('core', 'Account name or email')\"\n\t\t\t\t:label-visible=\"true\"\n\t\t\t\trequired\n\t\t\t\t@change=\"updateUsername\" />\n\t\t\t<LoginButton :value=\"t('core', 'Reset password')\" />\n\n\t\t\t<NcNoteCard v-if=\"message === 'send-success'\"\n\t\t\t\ttype=\"success\">\n\t\t\t\t{{ t('core', 'A password reset message has been sent to the email address of this account. If you do not receive it, check your spam/junk folders or ask your local administrator for help.') }}\n\t\t\t\t<br>\n\t\t\t\t{{ t('core', 'If it is not there ask your local administrator.') }}\n\t\t\t</NcNoteCard>\n\t\t\t<NcNoteCard v-else-if=\"message === 'send-error'\"\n\t\t\t\ttype=\"error\">\n\t\t\t\t{{ t('core', 'Couldn\\'t send reset email. Please contact your administrator.') }}\n\t\t\t</NcNoteCard>\n\t\t\t<NcNoteCard v-else-if=\"message === 'reset-error'\"\n\t\t\t\ttype=\"error\">\n\t\t\t\t{{ t('core', 'Password cannot be changed. Please contact your administrator.') }}\n\t\t\t</NcNoteCard>\n\n\t\t\t<a class=\"login-form__link\"\n\t\t\t\thref=\"#\"\n\t\t\t\t@click.prevent=\"$emit('abort')\">\n\t\t\t\t{{ t('core', 'Back to login') }}\n\t\t\t</a>\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\nimport LoginButton from './LoginButton.vue'\nimport NcTextField from '@nextcloud/vue/dist/Components/NcTextField.js'\nimport NcNoteCard from '@nextcloud/vue/dist/Components/NcNoteCard.js'\n\nexport default {\n\tname: 'ResetPassword',\n\tcomponents: {\n\t\tLoginButton,\n\t\tNcNoteCard,\n\t\tNcTextField,\n\t},\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tresetPasswordLink: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\terror: false,\n\t\t\tloading: false,\n\t\t\tmessage: undefined,\n\t\t\tuser: this.username,\n\t\t}\n\t},\n\twatch: {\n\t\tusername(value) {\n\t\t\tthis.user = value\n\t\t},\n\t},\n\tmethods: {\n\t\tupdateUsername() {\n\t\t\tthis.$emit('update:username', this.user)\n\t\t},\n\t\tsubmit() {\n\t\t\tthis.loading = true\n\t\t\tthis.error = false\n\t\t\tthis.message = ''\n\t\t\tconst url = generateUrl('/lostpassword/email')\n\n\t\t\tconst data = {\n\t\t\t\tuser: this.user,\n\t\t\t}\n\n\t\t\treturn axios.post(url, data)\n\t\t\t\t.then(resp => resp.data)\n\t\t\t\t.then(data => {\n\t\t\t\t\tif (data.status !== 'success') {\n\t\t\t\t\t\tthrow new Error(`got status ${data.status}`)\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.message = 'send-success'\n\t\t\t\t})\n\t\t\t\t.catch(e => {\n\t\t\t\t\tconsole.error('could not send reset email request', e)\n\n\t\t\t\t\tthis.error = true\n\t\t\t\t\tthis.message = 'send-error'\n\t\t\t\t})\n\t\t\t\t.then(() => { this.loading = false })\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.login-form {\n\ttext-align: left;\n\tfont-size: 1rem;\n\n\t&__fieldset {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: .5rem;\n\t}\n\n\t&__link {\n\t\tdisplay: block;\n\t\tfont-weight: normal !important;\n\t\tpadding-bottom: 1rem;\n\t\tcursor: pointer;\n\t\tfont-size: var(--default-font-size);\n\t\ttext-align: center;\n\t\tpadding: .5rem 1rem 1rem 1rem;\n\t}\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=style&index=0&id=27cabc60&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=style&index=0&id=27cabc60&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ResetPassword.vue?vue&type=template&id=27cabc60&scoped=true&\"\nimport script from \"./ResetPassword.vue?vue&type=script&lang=js&\"\nexport * from \"./ResetPassword.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ResetPassword.vue?vue&type=style&index=0&id=27cabc60&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"27cabc60\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('form',{staticClass:\"login-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('fieldset',{staticClass:\"login-form__fieldset\"},[_c('NcTextField',{attrs:{\"id\":\"user\",\"value\":_vm.user,\"name\":\"user\",\"autocapitalize\":\"off\",\"label\":_vm.t('core', 'Account name or email'),\"label-visible\":true,\"required\":\"\"},on:{\"update:value\":function($event){_vm.user=$event},\"change\":_vm.updateUsername}}),_vm._v(\" \"),_c('LoginButton',{attrs:{\"value\":_vm.t('core', 'Reset password')}}),_vm._v(\" \"),(_vm.message === 'send-success')?_c('NcNoteCard',{attrs:{\"type\":\"success\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'A password reset message has been sent to the email address of this account. If you do not receive it, check your spam/junk folders or ask your local administrator for help.'))+\"\\n\\t\\t\\t\"),_c('br'),_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'If it is not there ask your local administrator.'))+\"\\n\\t\\t\")]):(_vm.message === 'send-error')?_c('NcNoteCard',{attrs:{\"type\":\"error\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Couldn\\'t send reset email. Please contact your administrator.'))+\"\\n\\t\\t\")]):(_vm.message === 'reset-error')?_c('NcNoteCard',{attrs:{\"type\":\"error\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Password cannot be changed. Please contact your administrator.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('a',{staticClass:\"login-form__link\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.$emit('abort')}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Back to login'))+\"\\n\\t\\t\")])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<form @submit.prevent=\"submit\">\n\t\t<fieldset>\n\t\t\t<p>\n\t\t\t\t<label for=\"password\" class=\"infield\">{{ t('core', 'New password') }}</label>\n\t\t\t\t<input id=\"password\"\n\t\t\t\t\tv-model=\"password\"\n\t\t\t\t\ttype=\"password\"\n\t\t\t\t\tname=\"password\"\n\t\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t\tautocorrect=\"off\"\n\t\t\t\t\trequired\n\t\t\t\t\t:placeholder=\"t('core', 'New password')\">\n\t\t\t</p>\n\n\t\t\t<div v-if=\"encrypted\" class=\"update\">\n\t\t\t\t<p>\n\t\t\t\t\t{{ t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?') }}\n\t\t\t\t</p>\n\t\t\t\t<input id=\"encrypted-continue\"\n\t\t\t\t\tv-model=\"proceed\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\tclass=\"checkbox\">\n\t\t\t\t<label for=\"encrypted-continue\">\n\t\t\t\t\t{{ t('core', 'I know what I\\'m doing') }}\n\t\t\t\t</label>\n\t\t\t</div>\n\n\t\t\t<LoginButton :loading=\"loading\"\n\t\t\t\t:value=\"t('core', 'Reset password')\"\n\t\t\t\t:value-loading=\"t('core', 'Resetting password')\" />\n\n\t\t\t<p v-if=\"error && message\" :class=\"{warning: error}\">\n\t\t\t\t{{ message }}\n\t\t\t</p>\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport Axios from '@nextcloud/axios'\nimport LoginButton from './LoginButton.vue'\n\nexport default {\n\tname: 'UpdatePassword',\n\tcomponents: {\n\t\tLoginButton,\n\t},\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tresetPasswordTarget: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\terror: false,\n\t\t\tloading: false,\n\t\t\tmessage: undefined,\n\t\t\tuser: this.username,\n\t\t\tpassword: '',\n\t\t\tencrypted: false,\n\t\t\tproceed: false,\n\t\t}\n\t},\n\twatch: {\n\t\tusername(value) {\n\t\t\tthis.user = value\n\t\t},\n\t},\n\tmethods: {\n\t\tasync submit() {\n\t\t\tthis.loading = true\n\t\t\tthis.error = false\n\t\t\tthis.message = ''\n\n\t\t\ttry {\n\t\t\t\tconst { data } = await Axios.post(this.resetPasswordTarget, {\n\t\t\t\t\tpassword: this.password,\n\t\t\t\t\tproceed: this.proceed,\n\t\t\t\t})\n\t\t\t\tif (data && data.status === 'success') {\n\t\t\t\t\tthis.message = 'send-success'\n\t\t\t\t\tthis.$emit('update:username', this.user)\n\t\t\t\t\tthis.$emit('done')\n\t\t\t\t} else if (data && data.encryption) {\n\t\t\t\t\tthis.encrypted = true\n\t\t\t\t} else if (data && data.msg) {\n\t\t\t\t\tthrow new Error(data.msg)\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error()\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tthis.error = true\n\t\t\t\tthis.message = e.message ? e.message : t('core', 'Password cannot be changed. Please contact your administrator.')\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\tfieldset {\n\t\ttext-align: center;\n\t}\n\n\tinput[type=submit] {\n\t\tmargin-top: 20px;\n\t}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=style&index=0&id=4dc21d74&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=style&index=0&id=4dc21d74&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UpdatePassword.vue?vue&type=template&id=4dc21d74&scoped=true&\"\nimport script from \"./UpdatePassword.vue?vue&type=script&lang=js&\"\nexport * from \"./UpdatePassword.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UpdatePassword.vue?vue&type=style&index=0&id=4dc21d74&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4dc21d74\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('fieldset',[_c('p',[_c('label',{staticClass:\"infield\",attrs:{\"for\":\"password\"}},[_vm._v(_vm._s(_vm.t('core', 'New password')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.password),expression:\"password\"}],attrs:{\"id\":\"password\",\"type\":\"password\",\"name\":\"password\",\"autocomplete\":\"new-password\",\"autocapitalize\":\"none\",\"autocorrect\":\"off\",\"required\":\"\",\"placeholder\":_vm.t('core', 'New password')},domProps:{\"value\":(_vm.password)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.password=$event.target.value}}})]),_vm._v(\" \"),(_vm.encrypted)?_c('div',{staticClass:\"update\"},[_c('p',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.proceed),expression:\"proceed\"}],staticClass:\"checkbox\",attrs:{\"id\":\"encrypted-continue\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.proceed)?_vm._i(_vm.proceed,null)>-1:(_vm.proceed)},on:{\"change\":function($event){var $$a=_vm.proceed,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.proceed=$$a.concat([$$v]))}else{$$i>-1&&(_vm.proceed=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.proceed=$$c}}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"encrypted-continue\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'I know what I\\'m doing'))+\"\\n\\t\\t\\t\")])]):_vm._e(),_vm._v(\" \"),_c('LoginButton',{attrs:{\"loading\":_vm.loading,\"value\":_vm.t('core', 'Reset password'),\"value-loading\":_vm.t('core', 'Resetting password')}}),_vm._v(\" \"),(_vm.error && _vm.message)?_c('p',{class:{warning: _vm.error}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.message)+\"\\n\\t\\t\")]):_vm._e()],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -->\n\n<template>\n\t<div class=\"guest-box login-box\">\n\t\t<div v-if=\"!hideLoginForm || directLogin\">\n\t\t\t<transition name=\"fade\" mode=\"out-in\">\n\t\t\t\t<div v-if=\"!passwordlessLogin && !resetPassword && resetPasswordTarget === ''\">\n\t\t\t\t\t<LoginForm :username.sync=\"user\"\n\t\t\t\t\t\t:redirect-url=\"redirectUrl\"\n\t\t\t\t\t\t:direct-login=\"directLogin\"\n\t\t\t\t\t\t:messages=\"messages\"\n\t\t\t\t\t\t:errors=\"errors\"\n\t\t\t\t\t\t:throttle-delay=\"throttleDelay\"\n\t\t\t\t\t\t:auto-complete-allowed=\"autoCompleteAllowed\"\n\t\t\t\t\t\t@submit=\"loading = true\" />\n\t\t\t\t\t<a v-if=\"canResetPassword && resetPasswordLink !== ''\"\n\t\t\t\t\t\tid=\"lost-password\"\n\t\t\t\t\t\tclass=\"login-box__link\"\n\t\t\t\t\t\t:href=\"resetPasswordLink\">\n\t\t\t\t\t\t{{ t('core', 'Forgot password?') }}\n\t\t\t\t\t</a>\n\t\t\t\t\t<a v-else-if=\"canResetPassword && !resetPassword\"\n\t\t\t\t\t\tid=\"lost-password\"\n\t\t\t\t\t\tclass=\"login-box__link\"\n\t\t\t\t\t\t:href=\"resetPasswordLink\"\n\t\t\t\t\t\t@click.prevent=\"resetPassword = true\">\n\t\t\t\t\t\t{{ t('core', 'Forgot password?') }}\n\t\t\t\t\t</a>\n\t\t\t\t\t<template v-if=\"hasPasswordless\">\n\t\t\t\t\t\t<div v-if=\"countAlternativeLogins\"\n\t\t\t\t\t\t\tclass=\"alternative-logins\">\n\t\t\t\t\t\t\t<a v-if=\"hasPasswordless\"\n\t\t\t\t\t\t\t\tclass=\"button\"\n\t\t\t\t\t\t\t\t:class=\"{ 'single-alt-login-option': countAlternativeLogins }\"\n\t\t\t\t\t\t\t\thref=\"#\"\n\t\t\t\t\t\t\t\t@click.prevent=\"passwordlessLogin = true\">\n\t\t\t\t\t\t\t\t{{ t('core', 'Log in with a device') }}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<a v-else\n\t\t\t\t\t\t\thref=\"#\"\n\t\t\t\t\t\t\t@click.prevent=\"passwordlessLogin = true\">\n\t\t\t\t\t\t\t{{ t('core', 'Log in with a device') }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</template>\n\t\t\t\t</div>\n\t\t\t\t<div v-else-if=\"!loading && passwordlessLogin\"\n\t\t\t\t\tkey=\"reset\"\n\t\t\t\t\tclass=\"login-additional\">\n\t\t\t\t\t<PasswordLessLoginForm :username.sync=\"user\"\n\t\t\t\t\t\t:redirect-url=\"redirectUrl\"\n\t\t\t\t\t\t:auto-complete-allowed=\"autoCompleteAllowed\"\n\t\t\t\t\t\t:is-https=\"isHttps\"\n\t\t\t\t\t\t:is-localhost=\"isLocalhost\"\n\t\t\t\t\t\t:has-public-key-credential=\"hasPublicKeyCredential\"\n\t\t\t\t\t\t@submit=\"loading = true\" />\n\t\t\t\t\t<a href=\"#\" class=\"login-box__link\" @click.prevent=\"passwordlessLogin = false\">\n\t\t\t\t\t\t{{ t('core', 'Back') }}\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t\t<div v-else-if=\"!loading && canResetPassword\"\n\t\t\t\t\tkey=\"reset\"\n\t\t\t\t\tclass=\"login-additional\">\n\t\t\t\t\t<div class=\"lost-password-container\">\n\t\t\t\t\t\t<ResetPassword v-if=\"resetPassword\"\n\t\t\t\t\t\t\t:username.sync=\"user\"\n\t\t\t\t\t\t\t:reset-password-link=\"resetPasswordLink\"\n\t\t\t\t\t\t\t@abort=\"resetPassword = false\" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div v-else-if=\"resetPasswordTarget !== ''\">\n\t\t\t\t\t<UpdatePassword :username.sync=\"user\"\n\t\t\t\t\t\t:reset-password-target=\"resetPasswordTarget\"\n\t\t\t\t\t\t@done=\"passwordResetFinished\" />\n\t\t\t\t</div>\n\t\t\t</transition>\n\t\t</div>\n\t\t<div v-else>\n\t\t\t<transition name=\"fade\" mode=\"out-in\">\n\t\t\t\t<NcNoteCard type=\"warning\" :title=\"t('core', 'Login form is disabled.')\">\n\t\t\t\t\t{{ t('core', 'Please contact your administrator.') }}\n\t\t\t\t</NcNoteCard>\n\t\t\t</transition>\n\t\t</div>\n\n\t\t<div id=\"alternative-logins\" class=\"alternative-logins\">\n\t\t\t<NcButton v-for=\"(alternativeLogin, index) in alternativeLogins\"\n\t\t\t\t:key=\"index\"\n\t\t\t\ttype=\"secondary\"\n\t\t\t\t:wide=\"true\"\n\t\t\t\t:class=\"[alternativeLogin.class]\"\n\t\t\t\trole=\"link\"\n\t\t\t\t:href=\"alternativeLogin.href\"\n\t\t\t\t@click=\"goTo(alternativeLogin.href)\">\n\t\t\t\t{{ alternativeLogin.name }}\n\t\t\t</NcButton>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport queryString from 'query-string'\n\nimport LoginForm from '../components/login/LoginForm.vue'\nimport PasswordLessLoginForm from '../components/login/PasswordLessLoginForm.vue'\nimport ResetPassword from '../components/login/ResetPassword.vue'\nimport UpdatePassword from '../components/login/UpdatePassword.vue'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport NcNoteCard from '@nextcloud/vue/dist/Components/NcNoteCard.js'\n\nconst query = queryString.parse(location.search)\nif (query.clear === '1') {\n\ttry {\n\t\twindow.localStorage.clear()\n\t\twindow.sessionStorage.clear()\n\t\tconsole.debug('Browser storage cleared')\n\t} catch (e) {\n\t\tconsole.error('Could not clear browser storage', e)\n\t}\n}\n\nexport default {\n\tname: 'Login',\n\n\tcomponents: {\n\t\tLoginForm,\n\t\tPasswordLessLoginForm,\n\t\tResetPassword,\n\t\tUpdatePassword,\n\t\tNcButton,\n\t\tNcNoteCard,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t\tuser: loadState('core', 'loginUsername', ''),\n\t\t\tpasswordlessLogin: false,\n\t\t\tresetPassword: false,\n\n\t\t\t// Initial data\n\t\t\terrors: loadState('core', 'loginErrors', []),\n\t\t\tmessages: loadState('core', 'loginMessages', []),\n\t\t\tredirectUrl: loadState('core', 'loginRedirectUrl', false),\n\t\t\tthrottleDelay: loadState('core', 'loginThrottleDelay', 0),\n\t\t\tcanResetPassword: loadState('core', 'loginCanResetPassword', false),\n\t\t\tresetPasswordLink: loadState('core', 'loginResetPasswordLink', ''),\n\t\t\tautoCompleteAllowed: loadState('core', 'loginAutocomplete', true),\n\t\t\tresetPasswordTarget: loadState('core', 'resetPasswordTarget', ''),\n\t\t\tresetPasswordUser: loadState('core', 'resetPasswordUser', ''),\n\t\t\tdirectLogin: query.direct === '1',\n\t\t\thasPasswordless: loadState('core', 'webauthn-available', false),\n\t\t\tcountAlternativeLogins: loadState('core', 'countAlternativeLogins', false),\n\t\t\talternativeLogins: loadState('core', 'alternativeLogins', []),\n\t\t\tisHttps: window.location.protocol === 'https:',\n\t\t\tisLocalhost: window.location.hostname === 'localhost',\n\t\t\thasPublicKeyCredential: typeof (window.PublicKeyCredential) !== 'undefined',\n\t\t\thideLoginForm: loadState('core', 'hideLoginForm', false),\n\t\t}\n\t},\n\n\tmethods: {\n\t\tpasswordResetFinished() {\n\t\t\tthis.resetPasswordTarget = ''\n\t\t\tthis.directLogin = true\n\t\t},\n\t\tgoTo(href) {\n\t\t\twindow.location.href = href\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\nbody {\n\tfont-size: var(--default-font-size);\n}\n\n.login-box {\n\twidth: 300px;\n\n\t&__link {\n\t\tdisplay: block;\n\t\tpadding: 1rem;\n\t\tfont-size: var(--default-font-size);\n\t\ttext-align: center;\n\t\tfont-weight: normal !important;\n\t}\n}\n.fade-enter-active, .fade-leave-active {\n\ttransition: opacity .3s;\n}\n.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\n\topacity: 0;\n}\n\n.alternative-logins {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 0.75rem;\n\n\t.button-vue {\n\t\tbox-sizing: border-box;\n\t}\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=style&index=0&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=style&index=0&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Login.vue?vue&type=template&id=7ed2300f&\"\nimport script from \"./Login.vue?vue&type=script&lang=js&\"\nexport * from \"./Login.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Login.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport L10n from '../OC/l10n'\nimport OC from '../OC/index'\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tOC,\n\t\t}\n\t},\n\tmethods: {\n\t\tt: L10n.translate.bind(L10n),\n\t\tn: L10n.translatePlural.bind(L10n),\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\n\n// eslint-disable-next-line no-unused-vars\nimport OC from './OC/index' // TODO: Not needed but L10n breaks if removed\nimport LoginView from './views/Login.vue'\nimport Nextcloud from './mixins/Nextcloud'\n\nVue.mixin(Nextcloud)\n\nconst View = Vue.extend(LoginView)\nnew View().$mount('#login')\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".button-vue[data-v-756414a8]{margin-top:.5rem}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/LoginButton.vue\"],\"names\":[],\"mappings\":\"AAkEA,6BACC,gBAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.button-vue {\\n\\tmargin-top: .5rem;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".login-form[data-v-48dc6965]{text-align:left;font-size:1rem}.login-form__fieldset[data-v-48dc6965]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__headline[data-v-48dc6965]{text-align:center}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/LoginForm.vue\"],\"names\":[],\"mappings\":\"AAoOA,6BACC,eAAA,CACA,cAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,uCACC,iBAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.login-form {\\n\\ttext-align: left;\\n\\tfont-size: 1rem;\\n\\n\\t&__fieldset {\\n\\t\\twidth: 100%;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: .5rem;\\n\\t}\\n\\n\\t&__headline {\\n\\t\\ttext-align: center;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".body-login-container.update[data-v-adf4afc4]{margin:15px 0}.body-login-container.update.form__message-box[data-v-adf4afc4]{width:240px;margin:5px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/PasswordLessLoginForm.vue\"],\"names\":[],\"mappings\":\"AA8NA,8CACC,aAAA,CAEA,gEACC,WAAA,CACA,UAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.body-login-container.update {\\n\\tmargin: 15px 0;\\n\\n\\t&.form__message-box {\\n\\t\\twidth: 240px;\\n\\t\\tmargin: 5px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".login-form[data-v-27cabc60]{text-align:left;font-size:1rem}.login-form__fieldset[data-v-27cabc60]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__link[data-v-27cabc60]{display:block;font-weight:normal !important;padding-bottom:1rem;cursor:pointer;font-size:var(--default-font-size);text-align:center;padding:.5rem 1rem 1rem 1rem}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/ResetPassword.vue\"],\"names\":[],\"mappings\":\"AAmIA,6BACC,eAAA,CACA,cAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,mCACC,aAAA,CACA,6BAAA,CACA,mBAAA,CACA,cAAA,CACA,kCAAA,CACA,iBAAA,CACA,4BAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.login-form {\\n\\ttext-align: left;\\n\\tfont-size: 1rem;\\n\\n\\t&__fieldset {\\n\\t\\twidth: 100%;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: .5rem;\\n\\t}\\n\\n\\t&__link {\\n\\t\\tdisplay: block;\\n\\t\\tfont-weight: normal !important;\\n\\t\\tpadding-bottom: 1rem;\\n\\t\\tcursor: pointer;\\n\\t\\tfont-size: var(--default-font-size);\\n\\t\\ttext-align: center;\\n\\t\\tpadding: .5rem 1rem 1rem 1rem;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"body{font-size:var(--default-font-size)}.login-box{width:300px}.login-box__link{display:block;padding:1rem;font-size:var(--default-font-size);text-align:center;font-weight:normal !important}.fade-enter-active,.fade-leave-active{transition:opacity .3s}.fade-enter,.fade-leave-to{opacity:0}.alternative-logins{display:flex;flex-direction:column;gap:.75rem}.alternative-logins .button-vue{box-sizing:border-box}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/Login.vue\"],\"names\":[],\"mappings\":\"AAkMA,KACC,kCAAA,CAGD,WACC,WAAA,CAEA,iBACC,aAAA,CACA,YAAA,CACA,kCAAA,CACA,iBAAA,CACA,6BAAA,CAGF,sCACC,sBAAA,CAED,2BACC,SAAA,CAGD,oBACC,YAAA,CACA,qBAAA,CACA,UAAA,CAEA,gCACC,qBAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nbody {\\n\\tfont-size: var(--default-font-size);\\n}\\n\\n.login-box {\\n\\twidth: 300px;\\n\\n\\t&__link {\\n\\t\\tdisplay: block;\\n\\t\\tpadding: 1rem;\\n\\t\\tfont-size: var(--default-font-size);\\n\\t\\ttext-align: center;\\n\\t\\tfont-weight: normal !important;\\n\\t}\\n}\\n.fade-enter-active, .fade-leave-active {\\n\\ttransition: opacity .3s;\\n}\\n.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\\n\\topacity: 0;\\n}\\n\\n.alternative-logins {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 0.75rem;\\n\\n\\t.button-vue {\\n\\t\\tbox-sizing: border-box;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\nfieldset[data-v-4dc21d74] {\\n\\ttext-align: center;\\n}\\ninput[type=submit][data-v-4dc21d74] {\\n\\tmargin-top: 20px;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/UpdatePassword.vue\"],\"names\":[],\"mappings\":\";AAmIA;CACA,kBAAA;AACA;AAEA;CACA,gBAAA;AACA\",\"sourcesContent\":[\"<!--\\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\\n -\\n - @author Julius Härtl <jus@bitgrid.net>\\n -\\n - @license GNU AGPL version 3 or any later version\\n -\\n - This program is free software: you can redistribute it and/or modify\\n - it under the terms of the GNU Affero General Public License as\\n - published by the Free Software Foundation, either version 3 of the\\n - License, or (at your option) any later version.\\n -\\n - This program is distributed in the hope that it will be useful,\\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n - GNU Affero General Public License for more details.\\n -\\n - You should have received a copy of the GNU Affero General Public License\\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\\n -\\n -->\\n\\n<template>\\n\\t<form @submit.prevent=\\\"submit\\\">\\n\\t\\t<fieldset>\\n\\t\\t\\t<p>\\n\\t\\t\\t\\t<label for=\\\"password\\\" class=\\\"infield\\\">{{ t('core', 'New password') }}</label>\\n\\t\\t\\t\\t<input id=\\\"password\\\"\\n\\t\\t\\t\\t\\tv-model=\\\"password\\\"\\n\\t\\t\\t\\t\\ttype=\\\"password\\\"\\n\\t\\t\\t\\t\\tname=\\\"password\\\"\\n\\t\\t\\t\\t\\tautocomplete=\\\"new-password\\\"\\n\\t\\t\\t\\t\\tautocapitalize=\\\"none\\\"\\n\\t\\t\\t\\t\\tautocorrect=\\\"off\\\"\\n\\t\\t\\t\\t\\trequired\\n\\t\\t\\t\\t\\t:placeholder=\\\"t('core', 'New password')\\\">\\n\\t\\t\\t</p>\\n\\n\\t\\t\\t<div v-if=\\\"encrypted\\\" class=\\\"update\\\">\\n\\t\\t\\t\\t<p>\\n\\t\\t\\t\\t\\t{{ t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?') }}\\n\\t\\t\\t\\t</p>\\n\\t\\t\\t\\t<input id=\\\"encrypted-continue\\\"\\n\\t\\t\\t\\t\\tv-model=\\\"proceed\\\"\\n\\t\\t\\t\\t\\ttype=\\\"checkbox\\\"\\n\\t\\t\\t\\t\\tclass=\\\"checkbox\\\">\\n\\t\\t\\t\\t<label for=\\\"encrypted-continue\\\">\\n\\t\\t\\t\\t\\t{{ t('core', 'I know what I\\\\'m doing') }}\\n\\t\\t\\t\\t</label>\\n\\t\\t\\t</div>\\n\\n\\t\\t\\t<LoginButton :loading=\\\"loading\\\"\\n\\t\\t\\t\\t:value=\\\"t('core', 'Reset password')\\\"\\n\\t\\t\\t\\t:value-loading=\\\"t('core', 'Resetting password')\\\" />\\n\\n\\t\\t\\t<p v-if=\\\"error && message\\\" :class=\\\"{warning: error}\\\">\\n\\t\\t\\t\\t{{ message }}\\n\\t\\t\\t</p>\\n\\t\\t</fieldset>\\n\\t</form>\\n</template>\\n\\n<script>\\nimport Axios from '@nextcloud/axios'\\nimport LoginButton from './LoginButton.vue'\\n\\nexport default {\\n\\tname: 'UpdatePassword',\\n\\tcomponents: {\\n\\t\\tLoginButton,\\n\\t},\\n\\tprops: {\\n\\t\\tusername: {\\n\\t\\t\\ttype: String,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t\\tresetPasswordTarget: {\\n\\t\\t\\ttype: String,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t},\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\terror: false,\\n\\t\\t\\tloading: false,\\n\\t\\t\\tmessage: undefined,\\n\\t\\t\\tuser: this.username,\\n\\t\\t\\tpassword: '',\\n\\t\\t\\tencrypted: false,\\n\\t\\t\\tproceed: false,\\n\\t\\t}\\n\\t},\\n\\twatch: {\\n\\t\\tusername(value) {\\n\\t\\t\\tthis.user = value\\n\\t\\t},\\n\\t},\\n\\tmethods: {\\n\\t\\tasync submit() {\\n\\t\\t\\tthis.loading = true\\n\\t\\t\\tthis.error = false\\n\\t\\t\\tthis.message = ''\\n\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tconst { data } = await Axios.post(this.resetPasswordTarget, {\\n\\t\\t\\t\\t\\tpassword: this.password,\\n\\t\\t\\t\\t\\tproceed: this.proceed,\\n\\t\\t\\t\\t})\\n\\t\\t\\t\\tif (data && data.status === 'success') {\\n\\t\\t\\t\\t\\tthis.message = 'send-success'\\n\\t\\t\\t\\t\\tthis.$emit('update:username', this.user)\\n\\t\\t\\t\\t\\tthis.$emit('done')\\n\\t\\t\\t\\t} else if (data && data.encryption) {\\n\\t\\t\\t\\t\\tthis.encrypted = true\\n\\t\\t\\t\\t} else if (data && data.msg) {\\n\\t\\t\\t\\t\\tthrow new Error(data.msg)\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tthrow new Error()\\n\\t\\t\\t\\t}\\n\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\tthis.error = true\\n\\t\\t\\t\\tthis.message = e.message ? e.message : t('core', 'Password cannot be changed. Please contact your administrator.')\\n\\t\\t\\t} finally {\\n\\t\\t\\t\\tthis.loading = false\\n\\t\\t\\t}\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n\\n<style scoped>\\n\\tfieldset {\\n\\t\\ttext-align: center;\\n\\t}\\n\\n\\tinput[type=submit] {\\n\\t\\tmargin-top: 20px;\\n\\t}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.program(5, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":1},\"end\":{\"line\":10,\"column\":8}}})) != null ? stack1 : \"\");\n},\"2\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":2},\"end\":{\"line\":7,\"column\":9}}})) != null ? stack1 : \"\");\n},\"3\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t<a class=\\\"profile-link--avatar\\\" href=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n + \"\\\">\\n\t\t\t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32\\\" class=\\\"avatar\\\" srcset=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32 1x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=64 2x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=128 4x\\\" alt=\\\"\\\">\\n\t\t\t</a>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32\\\" class=\\\"avatar\\\" srcset=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32 1x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=64 2x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=128 4x\\\" alt=\\\"\\\">\\n\";\n},\"7\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(8, data, 0),\"inverse\":container.program(11, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":1},\"end\":{\"line\":20,\"column\":8}}})) != null ? stack1 : \"\");\n},\"8\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(9, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":2},\"end\":{\"line\":17,\"column\":9}}})) != null ? stack1 : \"\");\n},\"9\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t<a class=\\\"profile-link--avatar\\\" href=\\\"\"\n + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n + \"\\\">\\n\t\t\t\t<div class=\\\"avatar\\\"></div>\\n\t\t\t</a>\\n\";\n},\"11\":function(container,depth0,helpers,partials,data) {\n return \"\t\t<div class=\\\"avatar\\\"></div>\\n\";\n},\"13\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(14, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":23,\"column\":1},\"end\":{\"line\":29,\"column\":8}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(16, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":30,\"column\":1},\"end\":{\"line\":34,\"column\":8}}})) != null ? stack1 : \"\");\n},\"14\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t<a class=\\\"body profile-link--full-name\\\" href=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n + \"\\\">\\n\t\t\t<div class=\\\"full-name\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n + \"</div>\\n\t\t\t<div class=\\\"last-message\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n + \"</div>\\n\t\t\t<div class=\\\"email-address\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n + \"</div>\\n\t\t</a>\\n\";\n},\"16\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t<a class=\\\"top-action\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\" title=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t\t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"icon\") : stack1), depth0))\n + \"\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t\t</a>\\n\";\n},\"18\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(19, data, 0),\"inverse\":container.program(21, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":35,\"column\":0},\"end\":{\"line\":50,\"column\":0}}})) != null ? stack1 : \"\");\n},\"19\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t<a class=\\\"body\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\">\\n\t\t<div class=\\\"full-name\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"last-message\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"email-address\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n + \"</div>\\n\t</a>\\n \t<a class=\\\"top-action\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\" title=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n \t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"icon\") : stack1), depth0))\n + \"\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t</a>\\n\";\n},\"21\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t<div class=\\\"body\\\">\\n\t\t<div class=\\\"full-name\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"last-message\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"email-address\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n + \"</div>\\n\t</div>\\n\";\n},\"23\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<a class=\\\"second-action\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\" title=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t<img src=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"icon\") : stack1), depth0))\n + \"\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n</a>\\n\";\n},\"25\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t<button class=\\\"other-actions icon-more\\\"></button>\\n\t<div class=\\\"menu popovermenu\\\">\\n\t\t<ul>\\n\"\n + ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"actions\") : stack1),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(26, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":60,\"column\":3},\"end\":{\"line\":67,\"column\":12}}})) != null ? stack1 : \"\")\n + \"\t\t</ul>\\n\t</div>\\n\";\n},\"26\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t<li>\\n\t\t\t\t<a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"hyperlink\") || (depth0 != null ? lookupProperty(depth0,\"hyperlink\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"hyperlink\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":62,\"column\":13},\"end\":{\"line\":62,\"column\":26}}}) : helper)))\n + \"\\\">\\n\t\t\t\t\t<img src=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"icon\") || (depth0 != null ? lookupProperty(depth0,\"icon\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"icon\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":63,\"column\":15},\"end\":{\"line\":63,\"column\":23}}}) : helper)))\n + \"\\\" alt=\\\"\\\">\\n\t\t\t\t\t<span>\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"title\") || (depth0 != null ? lookupProperty(depth0,\"title\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"title\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":64,\"column\":11},\"end\":{\"line\":64,\"column\":20}}}) : helper)))\n + \"</span>\\n\t\t\t\t</a>\\n\t\t\t</li>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.program(7, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":21,\"column\":7}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(13, data, 0),\"inverse\":container.program(18, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":22,\"column\":0},\"end\":{\"line\":50,\"column\":7}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"hasTwoActions\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(23, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":51,\"column\":0},\"end\":{\"line\":55,\"column\":7}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"hasManyActions\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(25, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":56,\"column\":0},\"end\":{\"line\":70,\"column\":7}}})) != null ? stack1 : \"\");\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-search\\\"></div>\\n\t<h2>\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"couldNotLoadText\") || (depth0 != null ? lookupProperty(depth0,\"couldNotLoadText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"couldNotLoadText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":5},\"end\":{\"line\":3,\"column\":25}}}) : helper)))\n + \"</h2>\\n</div>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-search\\\"></div>\\n\t<h2>\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"noContactsFoundText\") || (depth0 != null ? lookupProperty(depth0,\"noContactsFoundText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"noContactsFoundText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":5},\"end\":{\"line\":4,\"column\":28}}}) : helper)))\n + \"</h2>\\n</div>\\n\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"footer\\\"><a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppURL\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppURL\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppURL\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":29},\"end\":{\"line\":9,\"column\":47}}}) : helper)))\n + \"\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"showAllContactsText\") || (depth0 != null ? lookupProperty(depth0,\"showAllContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"showAllContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":49},\"end\":{\"line\":9,\"column\":72}}}) : helper)))\n + \"</a></div>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"canInstallApp\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(6, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":10,\"column\":0},\"end\":{\"line\":12,\"column\":0}}})) != null ? stack1 : \"\");\n},\"6\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"footer\\\"><a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppMgmtURL\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppMgmtURL\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppMgmtURL\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":29},\"end\":{\"line\":11,\"column\":51}}}) : helper)))\n + \"\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppMgmtText\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppMgmtText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppMgmtText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":53},\"end\":{\"line\":11,\"column\":76}}}) : helper)))\n + \"</a></div>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contacts\") : depth0)) != null ? lookupProperty(stack1,\"length\") : stack1),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":6,\"column\":11}}})) != null ? stack1 : \"\")\n + \"<div id=\\\"contactsmenu-contacts\\\"></div>\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"contactsAppEnabled\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.program(5, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":0},\"end\":{\"line\":12,\"column\":7}}})) != null ? stack1 : \"\");\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-loading\\\"></div>\\n\t<h2>\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"loadingText\") || (depth0 != null ? lookupProperty(depth0,\"loadingText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"loadingText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":5},\"end\":{\"line\":3,\"column\":20}}}) : helper)))\n + \"</h2>\\n</div>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<label class=\\\"hidden-visually\\\" for=\\\"contactsmenu-search\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"searchContactsText\") || (depth0 != null ? lookupProperty(depth0,\"searchContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":57},\"end\":{\"line\":1,\"column\":79}}}) : helper)))\n + \"</label>\\n<input id=\\\"contactsmenu-search\\\" type=\\\"search\\\" placeholder=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"searchContactsText\") || (depth0 != null ? lookupProperty(depth0,\"searchContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":59},\"end\":{\"line\":2,\"column\":81}}}) : helper)))\n + \"\\\" value=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"searchTerm\") || (depth0 != null ? lookupProperty(depth0,\"searchTerm\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchTerm\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":90},\"end\":{\"line\":2,\"column\":104}}}) : helper)))\n + \"\\\">\\n<div class=\\\"content\\\">\\n</div>\\n\";\n},\"useData\":true});","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 30094,\n\t\"./hi.js\": 30094,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 4577;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t4577: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], function() { return __webpack_require__(51424); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","loadedScripts","loadedStyles","updatableNotification","getDefaultNotificationFunction","setDefault","callback","this","hide","$row","_","undefined","each","$","toastify","hideToast","console","error","call","showHtml","html","options","isHTML","timeout","TOAST_PERMANENT_TIMEOUT","toast","showMessage","toastElement","show","text","toString","split","join","escapeHTML","showUpdate","showTemporary","TOAST_DEFAULT_TIMEOUT","isHidden","find","length","ajaxConnectionLostHandler","Notification","t","trailing","enableDynamicSlideToggle","Apps","$el","removeClass","trigger","addClass","method","endpoint","OC","type","toUpperCase","url","generateOcsUrl","data","success","bind","appConfig","window","oc_appconfig","AppConfig","getValue","app","key","defaultValue","setValue","value","getApps","getKeys","deleteKey","_oc_appswebroots","methodMap","create","update","patch","delete","read","parsePropFindResult","result","davProperties","subResult","props","href","propStat","status","properties","propKey","id","parseIdFromLocation","queryPos","indexOf","substr","parts","pop","isSuccessStatus","callPropPatch","client","model","headers","propPatch","attrs","changedProp","warn","convertModelAttributesToDavProperties","changed","then","toJSON","Backbone","VendorBackbone","Object","assign","davCall","dav","baseUrl","xmlNamespaces","resolveUrl","requestToken","propFind","depth","response","propsMapping","results","body","shift","callPropFind","request","callMkCol","responseJson","locationHeader","xhr","getResponseHeader","callMethod","davSync","params","isCollection","Collection","hasInnerCollection","usePUT","collection","Error","urlError","JSON","stringify","processData","prototype","textStatus","errorThrown","context","_oc_config","Contact","Model","defaults","fullName","lastMessage","actions","hasOneAction","hasTwoActions","hasManyActions","initialize","get","set","ContactCollection","ContactsListView","View","_collection","_subViews","render","self","forEach","contact","item","ContactsListItemView","append","on","_onChildActionMenuToggle","push","$src","view","className","_template","_model","_actionMenuShown","events","contactTemplate","require","template","_onOtherActionMenuOpened","delegateEvents","imageplaceholder","tooltip","placement","_onToggleActionsMenu","is","ContactsMenuView","_loadingTemplate","_errorTemplate","_contentTemplate","_contactsTemplate","_contacts","_searchTerm","templates","loading","menu","list","_onSearch","e","searchTerm","val","loadingTemplate","errorTemplate","couldNotLoadText","contentTemplate","searchContactsText","contactsTemplate","noContactsFoundText","showAllContactsText","contactsAppMgmtText","showLoading","loadingText","showError","showContacts","viewData","contacts","contactsAppEnabled","contactsAppURL","canInstallApp","contactsAppMgmtURL","searchVal","focus","ContactsMenu","_$trigger","_view","_contactsPromise","el","_loadContacts","_toggleVisibility","Promise","resolve","_getContacts","filter","term","catch","rawUid","document","getElementsByTagName","getAttribute","displayName","currentUser","Search","isA11yActivation","event","global","emit","token","Dialogs","YES_NO_BUTTONS","OK_BUTTONS","FILEPICKER_TYPE_CHOOSE","FILEPICKER_TYPE_MOVE","FILEPICKER_TYPE_COPY","FILEPICKER_TYPE_COPY_MOVE","FILEPICKER_TYPE_CUSTOM","dialogsCounter","alert","title","modal","message","OK_BUTTON","info","confirm","confirmDestructive","buttons","confirmHtml","prompt","name","password","_getMessageTemplate","$tmpl","dialogName","dialogId","$dlg","octemplate","dialog_name","input","attr","label","buttonlist","click","ocdialog","defaultButton","closeOnEscape","close","filepicker","multiselect","mimetypeFilter","path","sortField","sortOrder","emptyText","newText","filesClient","OCA","Sharing","PublicApp","fileList","filelist","allowDirectoryChooser","_getFilePickerTemplate","$filePicker","emptytext","newtext","nameCol","sizeCol","modifiedCol","prepend","$showGridView","_onGridviewChange","_getGridSettings","newButton","stopImmediatePropagation","preventDefault","$input","submit","newName","lastPos","lastIndexOf","selectRange","$form","$submit","stopPropagation","filename","trimmedName","trim","match","isFileNameValid","file","escape","checkInput","newname","createDirectory","always","_fillFilePicker","ready","$fileListHeader","$filelist","$filelistContainer","$dirTree","_handleTreeListSelect","_handlePickerClick","dir","currentTarget","functionToCall","returnType","datapath","index","element","selectedName","button","width","height","style","remove","buttonEnableDisable","closest","prop","fail","content","dialogType","allowHtml","escapeFunction","cancel","classes","confirmClasses","closeCallback","_fileexistsshown","fileexists","original","replacement","controller","dialogDeferred","resampleHermite","canvas","W","H","W2","H2","Math","round","img","getContext","getImageData","img2","data2","ratio_w","ratio_h","ratio_w_half","ceil","ratio_h_half","j","i","x2","weight","weights","weights_alpha","gx_r","gx_g","gx_b","gx_a","center_y","yy","floor","dy","abs","center_x","w0","xx","dx","w","sqrt","clearRect","max","putImageData","addConflict","$conflicts","$conflict","clone","$originalDiv","$replacementDiv","size","mtime","lastModified","directory","urlSpec","x","y","c","etag","forceIcon","previewpath","Files","generatePreviewUrl","replace","css","FileReader","reader","onload","blob","Blob","target","URL","webkitURL","originalUrl","createObjectURL","image","Image","src","createElement","min","drawImage","toDataURL","readAsArrayBuffer","reject","getCroppedPreview","checkboxId","count","n","parent","children","_getFileExistsTemplate","allnewfiles","allexistingfiles","why","what","onCancel","onContinue","closeButton","$primaryButton","updatePrimaryButton","checkedCount","$checkbox","promise","gridview","toggleClass","isGridView","hasClass","defer","$filePickerTemplate","tmpl","$listTmpl","detach","jqXHR","$messageTemplate","$fileexistsTemplate","_getFileList","mimeType","mimetypes","empty","advancedFilter","getFolderContents","files","mimetype","showHiddenInput","getElementById","startsWith","comparator","Comparators","fileInfo1","fileInfo2","sort","file1","file2","isFavorite","fileInfo","tags","_fillSlug","idx","entry","simpleSize","sizeColor","isEncrypted","icon","parseInt","pow","filename1","filename2","date","previewUrl","addButton","$template","paths","prependTo","getOcDialog","_changeButtonsText","$element","ctrlKey","copyText","folder","moveText","eq","getToken","setToken","newToken","OCEventSource","joinChar","dataStr","typelessListeners","closed","listeners","encodeURIComponent","useFallBack","EventSource","iframeId","iframeCount","fallBackSources","iframe","source","onmessage","parse","listen","fallBackCallBack","done","lastLength","addEventListener","currentMenu","currentMenuToggle","hideMenus","complete","lastMenu","slideUp","apply","arguments","isAdmin","_oc_isadmin","_oc_l10n_registry_translations","_oc_l10n_registry_plural_functions","hasAppTranslations","appId","getAppTranslations","translations","pluralFunction","L10n","load","appName","generateFilePath","register","pluralForm","bundle","_getPlural","extend","_unregister","translate","vars","allOptions","sanitize","optSanitize","DOMPurify","identity","optEscape","translation","a","b","r","_build","translatePlural","textSingular","textPlural","identifier","plural","number","language","substring","Handlebars","startSaving","selector","startAction","stop","finishedSaving","finishedAction","finishedSuccess","finishedError","delay","fadeOut","pageLoadTime","init","requirePasswordConfirmation","moment","requiresPasswordConfirmation","serverTimeDiff","nc_pageLoad","timeSinceLogin","nc_lastLogin","backendAllowsPasswordConfirmation","rejectCallback","config","_confirmPassword","$dialog","$error","$buttons","generateUrl","lastLogin","theme","_theme","_handlers","_pushState","strParams","history","pushState","location","pathname","navigator","userAgent","toLowerCase","pattern","patterns","querySelectorAll","ii","fill","stroke","removeAttribute","setAttribute","replaceState","hash","_cancelPop","addOnPopStateHandler","handler","_parseHashQuery","pos","_decodeQuery","query","parseUrlQuery","search","_onPopState","state","chunkify","tz","charAt","m","History","humanFileSize","computerFileSize","string","s","bytes","matches","parseFloat","isFinite","k","kb","mb","gb","g","tb","pb","p","formatDate","timestamp","format","TESTING","relativeModifiedDate","diff","fromNow","getScrollBarWidth","_scrollBarWidth","inner","outer","position","top","left","visibility","overflow","appendChild","w1","offsetWidth","w2","clientWidth","removeChild","stripTime","Date","getFullYear","getMonth","getDate","naturalSortCompare","aa","bb","aNum","Number","bNum","localeCompare","waitFor","interval","internalCallback","setTimeout","isCookieSetToValue","cookies","cookie","debug","_oc_debug","webroot","_oc_webroot","coreApps","menuSpeed","PERMISSION_ALL","PERMISSION_CREATE","PERMISSION_DELETE","PERMISSION_NONE","PERMISSION_READ","PERMISSION_SHARE","PERMISSION_UPDATE","TAG_FAVORITE","fileIsBlacklisted","Config","addScript","script","addStyle","createStyleSheet","appSettings","args","appid","scriptName","cache","settings","popup","arrowclass","loadJS","scriptname","jqxhr","appswebroots","dialogs","getCurrentUser","uid","isUserAdmin","L10N","_ajaxConnectionLostHandler","_processAjaxError","statusText","timer","setInterval","clearInterval","registerXHRForErrorProcessing","readyState","getCapabilities","realGetCapabilities","registerMenu","$toggle","$menuEl","toggle","headerMenu","isClickableElement","slideToggle","showMenu","unregisterMenu","off","basename","encodePath","dirname","isSamePath","joinPaths","getHost","host","getHostName","hostname","getPort","port","getProtocol","protocol","getCanonicalLocale","getLocale","getLanguage","addTranslations","buildQueryString","parseQueryString","queryString","components","part","decodeURIComponent","msg","PasswordConfirmation","Plugins","_plugins","targetName","plugin","plugins","getPlugins","attach","targetObject","Util","filePath","namespaces","tail","getRootPath","getRootUrl","imagePath","redirect","targetURL","reload","getRequestToken","linkTo","linkToOCS","service","version","ocsVersion","linkToRemote","generateRemoteUrl","linkToRemoteBase","realGetRootUrl","subscribe","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","_h","$createElement","_c","_self","$event","$emit","scopedSlots","_u","fn","staticClass","proxy","_v","_s","valueLoading","ref","loginActionUrl","_e","messages","_l","class","loadingIcon","staticStyle","domProps","headline","shake","invalidPassword","user","autoCompleteAllowed","updateUsername","errorLabel","isError","redirectUrl","timezone","timezoneOffset","loginName","Axios","resp","isHttps","isLocalhost","hasPublicKeyCredential","directives","rawName","expression","composing","validCredentials","authenticate","Array","isArray","proceed","_i","$$a","$$el","$$c","checked","$$i","concat","slice","warning","clear","hideLoginForm","directLogin","passwordlessLogin","resetPassword","resetPasswordTarget","canResetPassword","resetPasswordLink","passwordResetFinished","errors","throttleDelay","countAlternativeLogins","alternativeLogin","goTo","methods","Vue","Nextcloud","LoginView","$mount","___CSS_LOADER_EXPORT___","module","exports","container","depth0","helpers","partials","stack1","lookupProperty","propertyName","hasOwnProperty","nullContext","program","noop","alias1","lambda","alias2","escapeExpression","helper","hooks","helperMissing","alias3","alias4","map","webpackContext","req","webpackContextResolve","__webpack_require__","o","code","keys","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","amdD","amdO","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","every","splice","getter","__esModule","d","definition","defineProperty","enumerable","globalThis","Function","obj","Symbol","toStringTag","nmd","baseURI","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","nc","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file +{"version":3,"file":"core-login.js?v=f1d623afa31a4444c10e","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/core/src/OC/legacy-loader.js","webpack:///nextcloud/core/src/OC/notification.js","webpack:///nextcloud/core/src/OC/xhr-error.js","webpack:///nextcloud/core/src/OC/apps.js","webpack:///nextcloud/core/src/OCP/appconfig.js","webpack:///nextcloud/core/src/OC/appconfig.js","webpack:///nextcloud/core/src/OC/appswebroots.js","webpack:///nextcloud/core/src/OC/backbone-webdav.js","webpack:///nextcloud/core/src/OC/backbone.js","webpack:///nextcloud/core/src/OC/config.js","webpack:///nextcloud/core/src/OC/contactsmenu.js","webpack:///nextcloud/core/src/OC/currentuser.js","webpack:///nextcloud/core/src/OCA/index.js","webpack:///nextcloud/core/src/OCA/search.js","webpack:///nextcloud/core/src/Util/a11y.js","webpack:///nextcloud/core/src/OC/dialogs.js","webpack:///nextcloud/core/src/OC/requesttoken.js","webpack:///nextcloud/core/src/OC/eventsource.js","webpack:///nextcloud/core/src/OC/menu.js","webpack:///nextcloud/core/src/OC/constants.js","webpack:///nextcloud/core/src/OC/admin.js","webpack:///nextcloud/core/src/OC/l10n-registry.js","webpack:///nextcloud/core/src/OC/l10n.js","webpack:///nextcloud/core/src/OC/msg.js","webpack:///nextcloud/core/src/OC/password-confirmation.js","webpack:///nextcloud/core/src/OC/theme.js","webpack:///nextcloud/core/src/OC/util-history.js","webpack:///nextcloud/core/src/OC/util.js","webpack:///nextcloud/core/src/OC/debug.js","webpack:///nextcloud/core/src/OC/webroot.js","webpack:///nextcloud/core/src/OC/get_set.js","webpack:///nextcloud/core/src/OC/index.js","webpack:///nextcloud/core/src/OC/appsettings.js","webpack:///nextcloud/core/src/OC/capabilities.js","webpack:///nextcloud/core/src/OC/host.js","webpack:///nextcloud/core/src/OC/query-string.js","webpack:///nextcloud/core/src/OC/plugins.js","webpack:///nextcloud/core/src/OC/navigation.js","webpack:///nextcloud/core/src/OC/routing.js","webpack:///nextcloud/core/src/views/Login.vue?vue&type=template&id=7ed2300f&","webpack:///nextcloud/core/src/components/login/LoginButton.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/login/LoginButton.vue","webpack://nextcloud/./core/src/components/login/LoginButton.vue?23bf","webpack://nextcloud/./core/src/components/login/LoginButton.vue?14f0","webpack:///nextcloud/core/src/components/login/LoginButton.vue?vue&type=template&id=756414a8&scoped=true&","webpack:///nextcloud/core/src/components/login/LoginForm.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/login/LoginForm.vue","webpack://nextcloud/./core/src/components/login/LoginForm.vue?b650","webpack://nextcloud/./core/src/components/login/LoginForm.vue?a678","webpack:///nextcloud/core/src/components/login/LoginForm.vue?vue&type=template&id=48dc6965&scoped=true&","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/services/WebAuthnAuthenticationService.js","webpack://nextcloud/./core/src/components/login/PasswordLessLoginForm.vue?63d7","webpack://nextcloud/./core/src/components/login/PasswordLessLoginForm.vue?09eb","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue?vue&type=template&id=20256748&scoped=true&","webpack:///nextcloud/core/src/components/login/ResetPassword.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/login/ResetPassword.vue","webpack://nextcloud/./core/src/components/login/ResetPassword.vue?493d","webpack://nextcloud/./core/src/components/login/ResetPassword.vue?9d75","webpack:///nextcloud/core/src/components/login/ResetPassword.vue?vue&type=template&id=27cabc60&scoped=true&","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/components/login/UpdatePassword.vue?5cc3","webpack://nextcloud/./core/src/components/login/UpdatePassword.vue?30ca","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue?vue&type=template&id=4dc21d74&scoped=true&","webpack:///nextcloud/core/src/views/Login.vue","webpack:///nextcloud/core/src/views/Login.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/views/Login.vue?7b85","webpack://nextcloud/./core/src/views/Login.vue?3468","webpack:///nextcloud/core/src/mixins/Nextcloud.js","webpack:///nextcloud/core/src/login.js","webpack:///nextcloud/core/src/components/login/LoginButton.vue?vue&type=style&index=0&id=756414a8&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/login/LoginForm.vue?vue&type=style&index=0&id=48dc6965&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue?vue&type=style&index=0&id=20256748&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/login/ResetPassword.vue?vue&type=style&index=0&id=27cabc60&lang=scss&scoped=true&","webpack:///nextcloud/core/src/views/Login.vue?vue&type=style&index=0&lang=scss&","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue?vue&type=style&index=0&id=4dc21d74&scoped=true&lang=css&","webpack:///nextcloud/core/src/OC/contactsmenu/contact.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/error.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/list.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/loading.handlebars","webpack:///nextcloud/core/src/OC/contactsmenu/menu.handlebars","webpack:///nextcloud/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/amd define","webpack:///nextcloud/webpack/runtime/amd options","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\nimport { generateFilePath } from '@nextcloud/router'\n\nconst loadedScripts = {}\nconst loadedStyles = []\n\n/**\n * Load a script for the server and load it. If the script is already loaded,\n * the event handler will be called directly\n *\n * @param {string} app the app id to which the script belongs\n * @param {string} script the filename of the script\n * @param {Function} ready event handler to be called when the script is loaded\n * @return {jQuery.Deferred}\n * @deprecated 16.0.0 Use OCP.Loader.loadScript\n */\nexport const addScript = (app, script, ready) => {\n\tconsole.warn('OC.addScript is deprecated, use OCP.Loader.loadScript instead')\n\n\tlet deferred\n\tconst path = generateFilePath(app, 'js', script + '.js')\n\tif (!loadedScripts[path]) {\n\t\tdeferred = $.Deferred()\n\t\t$.getScript(path, () => deferred.resolve())\n\t\tloadedScripts[path] = deferred\n\t} else {\n\t\tif (ready) {\n\t\t\tready()\n\t\t}\n\t}\n\treturn loadedScripts[path]\n}\n\n/**\n * Loads a CSS file\n *\n * @param {string} app the app id to which the css style belongs\n * @param {string} style the filename of the css file\n * @deprecated 16.0.0 Use OCP.Loader.loadStylesheet\n */\nexport const addStyle = (app, style) => {\n\tconsole.warn('OC.addStyle is deprecated, use OCP.Loader.loadStylesheet instead')\n\n\tconst path = generateFilePath(app, 'css', style + '.css')\n\tif (loadedStyles.indexOf(path) === -1) {\n\t\tloadedStyles.push(path)\n\t\tif (document.createStyleSheet) {\n\t\t\tdocument.createStyleSheet(path)\n\t\t} else {\n\t\t\tstyle = $('<link rel=\"stylesheet\" type=\"text/css\" href=\"' + path + '\"/>')\n\t\t\t$('head').append(style)\n\t\t}\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author npmbuildbot[bot] \"npmbuildbot[bot]@users.noreply.github.com\"\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\nimport { showMessage, TOAST_DEFAULT_TIMEOUT, TOAST_PERMANENT_TIMEOUT } from '@nextcloud/dialogs'\n\n/**\n * @todo Write documentation\n * @deprecated 17.0.0 use the `@nextcloud/dialogs` package instead\n * @namespace OC.Notification\n */\nexport default {\n\n\tupdatableNotification: null,\n\n\tgetDefaultNotificationFunction: null,\n\n\t/**\n\t * @param {Function} callback callback function\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tsetDefault(callback) {\n\t\tthis.getDefaultNotificationFunction = callback\n\t},\n\n\t/**\n\t * Hides a notification.\n\t *\n\t * If a row is given, only hide that one.\n\t * If no row is given, hide all notifications.\n\t *\n\t * @param {jQuery} [$row] notification row\n\t * @param {Function} [callback] callback\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\thide($row, callback) {\n\t\tif (_.isFunction($row)) {\n\t\t\t// first arg is the callback\n\t\t\tcallback = $row\n\t\t\t$row = undefined\n\t\t}\n\n\t\tif (!$row) {\n\t\t\tconsole.error('Missing argument $row in OC.Notification.hide() call, caller needs to be adjusted to only dismiss its own notification')\n\t\t\treturn\n\t\t}\n\n\t\t// remove the row directly\n\t\t$row.each(function() {\n\t\t\tif ($(this)[0].toastify) {\n\t\t\t\t$(this)[0].toastify.hideToast()\n\t\t\t} else {\n\t\t\t\tconsole.error('cannot hide toast because object is not set')\n\t\t\t}\n\t\t\tif (this === this.updatableNotification) {\n\t\t\t\tthis.updatableNotification = null\n\t\t\t}\n\t\t})\n\t\tif (callback) {\n\t\t\tcallback.call()\n\t\t}\n\t\tif (this.getDefaultNotificationFunction) {\n\t\t\tthis.getDefaultNotificationFunction()\n\t\t}\n\t},\n\n\t/**\n\t * Shows a notification as HTML without being sanitized before.\n\t * If you pass unsanitized user input this may lead to a XSS vulnerability.\n\t * Consider using show() instead of showHTML()\n\t *\n\t * @param {string} html Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout=0] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowHtml(html, options) {\n\t\toptions = options || {}\n\t\toptions.isHTML = true\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(html, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Shows a sanitized notification\n\t *\n\t * @param {string} text Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout=0] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshow(text, options) {\n\t\tconst escapeHTML = function(text) {\n\t\t\treturn text.toString()\n\t\t\t\t.split('&').join('&')\n\t\t\t\t.split('<').join('<')\n\t\t\t\t.split('>').join('>')\n\t\t\t\t.split('\"').join('"')\n\t\t\t\t.split('\\'').join(''')\n\t\t}\n\n\t\toptions = options || {}\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(escapeHTML(text), options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Updates (replaces) a sanitized notification.\n\t *\n\t * @param {string} text Message to display\n\t * @return {jQuery} JQuery element for notificaiton row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowUpdate(text) {\n\t\tif (this.updatableNotification) {\n\t\t\tthis.updatableNotification.hideToast()\n\t\t}\n\t\tthis.updatableNotification = showMessage(text, { timeout: TOAST_PERMANENT_TIMEOUT })\n\t\tthis.updatableNotification.toastElement.toastify = this.updatableNotification\n\t\treturn $(this.updatableNotification.toastElement)\n\t},\n\n\t/**\n\t * Shows a notification that disappears after x seconds, default is\n\t * 7 seconds\n\t *\n\t * @param {string} text Message to show\n\t * @param {Array} [options] options array\n\t * @param {number} [options.timeout=7] timeout in seconds, if this is 0 it will show the message permanently\n\t * @param {boolean} [options.isHTML=false] an indicator for HTML notifications (true) or text (false)\n\t * @param {string} [options.type] notification type\n\t * @return {JQuery} the toast element\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowTemporary(text, options) {\n\t\toptions = options || {}\n\t\toptions.timeout = options.timeout || TOAST_DEFAULT_TIMEOUT\n\t\tconst toast = showMessage(text, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Returns whether a notification is hidden.\n\t *\n\t * @return {boolean}\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tisHidden() {\n\t\treturn !$('#content').find('.toastify').length\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\nimport $ from 'jquery'\n\nimport OC from './index'\nimport Notification from './notification'\n\n/**\n * Warn users that the connection to the server was lost temporarily\n *\n * This function is throttled to prevent stacked notfications.\n * After 7sec the first notification is gone, then we can show another one\n * if necessary.\n */\nexport const ajaxConnectionLostHandler = _.throttle(() => {\n\tNotification.showTemporary(t('core', 'Connection to server lost'))\n}, 7 * 1000, { trailing: false })\n\n/**\n * Process ajax error, redirects to main page\n * if an error/auth error status was returned.\n *\n * @param {XMLHttpRequest} xhr xhr request\n */\nexport const processAjaxError = xhr => {\n\t// purposefully aborted request ?\n\t// OC._userIsNavigatingAway needed to distinguish ajax calls cancelled by navigating away\n\t// from calls cancelled by failed cross-domain ajax due to SSO redirect\n\tif (xhr.status === 0 && (xhr.statusText === 'abort' || xhr.statusText === 'timeout' || OC._reloadCalled)) {\n\t\treturn\n\t}\n\n\tif (_.contains([302, 303, 307, 401], xhr.status) && OC.currentUser) {\n\t\t// sometimes \"beforeunload\" happens later, so need to defer the reload a bit\n\t\tsetTimeout(function() {\n\t\t\tif (!OC._userIsNavigatingAway && !OC._reloadCalled) {\n\t\t\t\tlet timer = 0\n\t\t\t\tconst seconds = 5\n\t\t\t\tconst interval = setInterval(function() {\n\t\t\t\t\tNotification.showUpdate(n('core', 'Problem loading page, reloading in %n second', 'Problem loading page, reloading in %n seconds', seconds - timer))\n\t\t\t\t\tif (timer >= seconds) {\n\t\t\t\t\t\tclearInterval(interval)\n\t\t\t\t\t\tOC.reload()\n\t\t\t\t\t}\n\t\t\t\t\ttimer++\n\t\t\t\t}, 1000 // 1 second interval\n\t\t\t\t)\n\n\t\t\t\t// only call reload once\n\t\t\t\tOC._reloadCalled = true\n\t\t\t}\n\t\t}, 100)\n\t} else if (xhr.status === 0) {\n\t\t// Connection lost (e.g. WiFi disconnected or server is down)\n\t\tsetTimeout(function() {\n\t\t\tif (!OC._userIsNavigatingAway && !OC._reloadCalled) {\n\t\t\t\t// TODO: call method above directly\n\t\t\t\tOC._ajaxConnectionLostHandler()\n\t\t\t}\n\t\t}, 100)\n\t}\n}\n\n/**\n * Registers XmlHttpRequest object for global error processing.\n *\n * This means that if this XHR object returns 401 or session timeout errors,\n * the current page will automatically be reloaded.\n *\n * @param {XMLHttpRequest} xhr xhr request\n */\nexport const registerXHRForErrorProcessing = xhr => {\n\tconst loadCallback = () => {\n\t\tif (xhr.readyState !== 4) {\n\t\t\treturn\n\t\t}\n\n\t\tif ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304) {\n\t\t\treturn\n\t\t}\n\n\t\t// fire jquery global ajax error handler\n\t\t$(document).trigger(new $.Event('ajaxError'), xhr)\n\t}\n\n\tconst errorCallback = () => {\n\t\t// fire jquery global ajax error handler\n\t\t$(document).trigger(new $.Event('ajaxError'), xhr)\n\t}\n\n\tif (xhr.addEventListener) {\n\t\txhr.addEventListener('load', loadCallback)\n\t\txhr.addEventListener('error', errorCallback)\n\t}\n\n}\n","/**\n * @copyright Bernhard Posselt 2014\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\nlet dynamicSlideToggleEnabled = false\n\nconst Apps = {\n\tenableDynamicSlideToggle() {\n\t\tdynamicSlideToggleEnabled = true\n\t},\n}\n\n/**\n * Shows the #app-sidebar and add .with-app-sidebar to subsequent siblings\n *\n * @param {object} [$el] sidebar element to show, defaults to $('#app-sidebar')\n */\nApps.showAppSidebar = function($el) {\n\tconst $appSidebar = $el || $('#app-sidebar')\n\t$appSidebar.removeClass('disappear').show()\n\t$('#app-content').trigger(new $.Event('appresized'))\n}\n\n/**\n * Shows the #app-sidebar and removes .with-app-sidebar from subsequent\n * siblings\n *\n * @param {object} [$el] sidebar element to hide, defaults to $('#app-sidebar')\n */\nApps.hideAppSidebar = function($el) {\n\tconst $appSidebar = $el || $('#app-sidebar')\n\t$appSidebar.hide().addClass('disappear')\n\t$('#app-content').trigger(new $.Event('appresized'))\n}\n\n/**\n * Provides a way to slide down a target area through a button and slide it\n * up if the user clicks somewhere else. Used for the news app settings and\n * add new field.\n *\n * Usage:\n * <button data-apps-slide-toggle=\".slide-area\">slide</button>\n * <div class=\".slide-area\" class=\"hidden\">I'm sliding up</div>\n */\nexport const registerAppsSlideToggle = () => {\n\tlet buttons = $('[data-apps-slide-toggle]')\n\n\tif (buttons.length === 0) {\n\t\t$('#app-navigation').addClass('without-app-settings')\n\t}\n\n\t$(document).click(function(event) {\n\n\t\tif (dynamicSlideToggleEnabled) {\n\t\t\tbuttons = $('[data-apps-slide-toggle]')\n\t\t}\n\n\t\tbuttons.each(function(index, button) {\n\n\t\t\tconst areaSelector = $(button).data('apps-slide-toggle')\n\t\t\tconst area = $(areaSelector)\n\n\t\t\t/**\n\t\t\t *\n\t\t\t */\n\t\t\tfunction hideArea() {\n\t\t\t\tarea.slideUp(OC.menuSpeed * 4, function() {\n\t\t\t\t\tarea.trigger(new $.Event('hide'))\n\t\t\t\t})\n\t\t\t\tarea.removeClass('opened')\n\t\t\t\t$(button).removeClass('opened')\n\t\t\t}\n\n\t\t\t/**\n\t\t\t *\n\t\t\t */\n\t\t\tfunction showArea() {\n\t\t\t\tarea.slideDown(OC.menuSpeed * 4, function() {\n\t\t\t\t\tarea.trigger(new $.Event('show'))\n\t\t\t\t})\n\t\t\t\tarea.addClass('opened')\n\t\t\t\t$(button).addClass('opened')\n\t\t\t\tconst input = $(areaSelector + ' [autofocus]')\n\t\t\t\tif (input.length === 1) {\n\t\t\t\t\tinput.focus()\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// do nothing if the area is animated\n\t\t\tif (!area.is(':animated')) {\n\n\t\t\t\t// button toggles the area\n\t\t\t\tif ($(button).is($(event.target).closest('[data-apps-slide-toggle]'))) {\n\t\t\t\t\tif (area.is(':visible')) {\n\t\t\t\t\t\thideArea()\n\t\t\t\t\t} else {\n\t\t\t\t\t\tshowArea()\n\t\t\t\t\t}\n\n\t\t\t\t\t// all other areas that have not been clicked but are open\n\t\t\t\t\t// should be slid up\n\t\t\t\t} else {\n\t\t\t\t\tconst closest = $(event.target).closest(areaSelector)\n\t\t\t\t\tif (area.is(':visible') && closest[0] !== area[0]) {\n\t\t\t\t\t\thideArea()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t})\n}\n\nexport default Apps\n","/**\n * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nimport OC from '../OC/index'\n\n/**\n * @param {string} method 'post' or 'delete'\n * @param {string} endpoint endpoint\n * @param {object} [options] destructuring object\n * @param {object} [options.data] option data\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n */\nfunction call(method, endpoint, options) {\n\tif ((method === 'post' || method === 'delete') && OC.PasswordConfirmation.requiresPasswordConfirmation()) {\n\t\tOC.PasswordConfirmation.requirePasswordConfirmation(_.bind(call, this, method, endpoint, options))\n\t\treturn\n\t}\n\n\toptions = options || {}\n\t$.ajax({\n\t\ttype: method.toUpperCase(),\n\t\turl: generateOcsUrl('apps/provisioning_api/api/v1/config/apps') + endpoint,\n\t\tdata: options.data || {},\n\t\tsuccess: options.success,\n\t\terror: options.error,\n\t})\n}\n\n/**\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @since 11.0.0\n */\nexport function getApps(options) {\n\tcall('get', '', options)\n}\n\n/**\n * @param {string} app app id\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function getKeys(app, options) {\n\tcall('get', '/' + app, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {string | Function} defaultValue default value\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function getValue(app, key, defaultValue, options) {\n\toptions = options || {}\n\toptions.data = {\n\t\tdefaultValue,\n\t}\n\n\tcall('get', '/' + app + '/' + key, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {string} value value\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function setValue(app, key, value, options) {\n\toptions = options || {}\n\toptions.data = {\n\t\tvalue,\n\t}\n\n\tcall('post', '/' + app + '/' + key, options)\n}\n\n/**\n * @param {string} app app id\n * @param {string} key key\n * @param {object} [options] destructuring object\n * @param {Function} [options.success] success callback\n * @param {Function} [options.error] error callback\n * @since 11.0.0\n */\nexport function deleteKey(app, key, options) {\n\tcall('delete', '/' + app + '/' + key, options)\n}\n","/**\n * @copyright Copyright (c) 2016 Joas Schilling <coding@schilljs.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Jörn Friedrich Dreyer <jfd@butonic.de>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\n import { getValue, setValue, getApps, getKeys, deleteKey } from '../OCP/appconfig'\n\nexport const appConfig = window.oc_appconfig || {}\n\n/**\n * @namespace\n * @deprecated 16.0.0 Use OCP.AppConfig instead\n */\nexport const AppConfig = {\n\t/**\n\t * @deprecated Use OCP.AppConfig.getValue() instead\n\t */\n\tgetValue: function(app, key, defaultValue, callback) {\n\t\tgetValue(app, key, defaultValue, {\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.setValue() instead\n\t */\n\tsetValue: function(app, key, value) {\n\t\tsetValue(app, key, value)\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.getApps() instead\n\t */\n\tgetApps: function(callback) {\n\t\tgetApps({\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.getKeys() instead\n\t */\n\tgetKeys: function(app, callback) {\n\t\tgetKeys(app, {\n\t\t\tsuccess: callback\n\t\t})\n\t},\n\n\t/**\n\t * @deprecated Use OCP.AppConfig.deleteKey() instead\n\t */\n\tdeleteKey: function(app, key) {\n\t\tdeleteKey(app, key)\n\t}\n\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst appswebroots = (window._oc_appswebroots !== undefined) ? window._oc_appswebroots : false\n\nexport default appswebroots\n","/**\n * Copyright (c) 2015\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport { dav } from 'davclient.js'\n\nconst methodMap = {\n\tcreate: 'POST',\n\tupdate: 'PROPPATCH',\n\tpatch: 'PROPPATCH',\n\tdelete: 'DELETE',\n\tread: 'PROPFIND'\n}\n\n// Throw an error when a URL is needed, and none is supplied.\nfunction urlError() {\n\tthrow new Error('A \"url\" property or function must be specified')\n}\n\n/**\n * Convert a single propfind result to JSON\n *\n * @param {Object} result\n * @param {Object} davProperties properties mapping\n */\nfunction parsePropFindResult(result, davProperties) {\n\tif (_.isArray(result)) {\n\t\treturn _.map(result, function(subResult) {\n\t\t\treturn parsePropFindResult(subResult, davProperties)\n\t\t})\n\t}\n\tvar props = {\n\t\thref: result.href\n\t}\n\n\t_.each(result.propStat, function(propStat) {\n\t\tif (propStat.status !== 'HTTP/1.1 200 OK') {\n\t\t\treturn\n\t\t}\n\n\t\tfor (var key in propStat.properties) {\n\t\t\tvar propKey = key\n\t\t\tif (key in davProperties) {\n\t\t\t\tpropKey = davProperties[key]\n\t\t\t}\n\t\t\tprops[propKey] = propStat.properties[key]\n\t\t}\n\t})\n\n\tif (!props.id) {\n\t\t// parse id from href\n\t\tprops.id = parseIdFromLocation(props.href)\n\t}\n\n\treturn props\n}\n\n/**\n * Parse ID from location\n *\n * @param {string} url url\n * @returns {string} id\n */\nfunction parseIdFromLocation(url) {\n\tvar queryPos = url.indexOf('?')\n\tif (queryPos > 0) {\n\t\turl = url.substr(0, queryPos)\n\t}\n\n\tvar parts = url.split('/')\n\tvar result\n\tdo {\n\t\tresult = parts[parts.length - 1]\n\t\tparts.pop()\n\t\t// note: first result can be empty when there is a trailing slash,\n\t\t// so we take the part before that\n\t} while (!result && parts.length > 0)\n\n\treturn result\n}\n\nfunction isSuccessStatus(status) {\n\treturn status >= 200 && status <= 299\n}\n\nfunction convertModelAttributesToDavProperties(attrs, davProperties) {\n\tvar props = {}\n\tvar key\n\tfor (key in attrs) {\n\t\tvar changedProp = davProperties[key]\n\t\tvar value = attrs[key]\n\t\tif (!changedProp) {\n\t\t\tconsole.warn('No matching DAV property for property \"' + key)\n\t\t\tchangedProp = key\n\t\t}\n\t\tif (_.isBoolean(value) || _.isNumber(value)) {\n\t\t\t// convert to string\n\t\t\tvalue = '' + value\n\t\t}\n\t\tprops[changedProp] = value\n\t}\n\treturn props\n}\n\nfunction callPropFind(client, options, model, headers) {\n\treturn client.propFind(\n\t\toptions.url,\n\t\t_.values(options.davProperties) || [],\n\t\toptions.depth,\n\t\theaders\n\t).then(function(response) {\n\t\tif (isSuccessStatus(response.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\tvar propsMapping = _.invert(options.davProperties)\n\t\t\t\tvar results = parsePropFindResult(response.body, propsMapping)\n\t\t\t\tif (options.depth > 0) {\n\t\t\t\t\t// discard root entry\n\t\t\t\t\tresults.shift()\n\t\t\t\t}\n\n\t\t\t\toptions.success(results)\n\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(response)\n\t\t}\n\t})\n}\n\nfunction callPropPatch(client, options, model, headers) {\n\treturn client.propPatch(\n\t\toptions.url,\n\t\tconvertModelAttributesToDavProperties(model.changed, options.davProperties),\n\t\theaders\n\t).then(function(result) {\n\t\tif (isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return the updated model\n\t\t\t\toptions.success(model.toJSON())\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(result)\n\t\t}\n\t})\n\n}\n\nfunction callMkCol(client, options, model, headers) {\n\t// call MKCOL without data, followed by PROPPATCH\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\tnull\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tcallPropPatch(client, options, model, headers)\n\t})\n}\n\nfunction callMethod(client, options, model, headers) {\n\theaders['Content-Type'] = 'application/json'\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\toptions.data\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tif (_.isFunction(options.success)) {\n\t\t\tif (options.type === 'PUT' || options.type === 'POST' || options.type === 'MKCOL') {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return anything\n\t\t\t\tvar responseJson = result.body || model.toJSON()\n\t\t\t\tvar locationHeader = result.xhr.getResponseHeader('Content-Location')\n\t\t\t\tif (options.type === 'POST' && locationHeader) {\n\t\t\t\t\tresponseJson.id = parseIdFromLocation(locationHeader)\n\t\t\t\t}\n\t\t\t\toptions.success(responseJson)\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// if multi-status, parse\n\t\t\tif (result.status === 207) {\n\t\t\t\tvar propsMapping = _.invert(options.davProperties)\n\t\t\t\toptions.success(parsePropFindResult(result.body, propsMapping))\n\t\t\t} else {\n\t\t\t\toptions.success(result.body)\n\t\t\t}\n\t\t}\n\t})\n}\n\nexport const davCall = (options, model) => {\n\tvar client = new dav.Client({\n\t\tbaseUrl: options.url,\n\t\txmlNamespaces: _.extend({\n\t\t\t'DAV:': 'd',\n\t\t\t'http://owncloud.org/ns': 'oc'\n\t\t}, options.xmlNamespaces || {})\n\t})\n\tclient.resolveUrl = function() {\n\t\treturn options.url\n\t}\n\tvar headers = _.extend({\n\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\t'requesttoken': OC.requestToken\n\t}, options.headers)\n\tif (options.type === 'PROPFIND') {\n\t\treturn callPropFind(client, options, model, headers)\n\t} else if (options.type === 'PROPPATCH') {\n\t\treturn callPropPatch(client, options, model, headers)\n\t} else if (options.type === 'MKCOL') {\n\t\treturn callMkCol(client, options, model, headers)\n\t} else {\n\t\treturn callMethod(client, options, model, headers)\n\t}\n}\n\n/**\n * DAV transport\n */\nexport const davSync = Backbone => (method, model, options) => {\n\tvar params = { type: methodMap[method] || method }\n\tvar isCollection = (model instanceof Backbone.Collection)\n\n\tif (method === 'update') {\n\t\t// if a model has an inner collection, it must define an\n\t\t// attribute \"hasInnerCollection\" that evaluates to true\n\t\tif (model.hasInnerCollection) {\n\t\t\t// if the model itself is a Webdav collection, use MKCOL\n\t\t\tparams.type = 'MKCOL'\n\t\t} else if (model.usePUT || (model.collection && model.collection.usePUT)) {\n\t\t\t// use PUT instead of PROPPATCH\n\t\t\tparams.type = 'PUT'\n\t\t}\n\t}\n\n\t// Ensure that we have a URL.\n\tif (!options.url) {\n\t\tparams.url = _.result(model, 'url') || urlError()\n\t}\n\n\t// Ensure that we have the appropriate request data.\n\tif (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {\n\t\tparams.data = JSON.stringify(options.attrs || model.toJSON(options))\n\t}\n\n\t// Don't process data on a non-GET request.\n\tif (params.type !== 'PROPFIND') {\n\t\tparams.processData = false\n\t}\n\n\tif (params.type === 'PROPFIND' || params.type === 'PROPPATCH') {\n\t\tvar davProperties = model.davProperties\n\t\tif (!davProperties && model.model) {\n\t\t\t// use dav properties from model in case of collection\n\t\t\tdavProperties = model.model.prototype.davProperties\n\t\t}\n\t\tif (davProperties) {\n\t\t\tif (_.isFunction(davProperties)) {\n\t\t\t\tparams.davProperties = davProperties.call(model)\n\t\t\t} else {\n\t\t\t\tparams.davProperties = davProperties\n\t\t\t}\n\t\t}\n\n\t\tparams.davProperties = _.extend(params.davProperties || {}, options.davProperties)\n\n\t\tif (_.isUndefined(options.depth)) {\n\t\t\tif (isCollection) {\n\t\t\t\toptions.depth = 1\n\t\t\t} else {\n\t\t\t\toptions.depth = 0\n\t\t\t}\n\t\t}\n\t}\n\n\t// Pass along `textStatus` and `errorThrown` from jQuery.\n\tvar error = options.error\n\toptions.error = function(xhr, textStatus, errorThrown) {\n\t\toptions.textStatus = textStatus\n\t\toptions.errorThrown = errorThrown\n\t\tif (error) {\n\t\t\terror.call(options.context, xhr, textStatus, errorThrown)\n\t\t}\n\t}\n\n\t// Make the request, allowing the user to override any Ajax options.\n\tvar xhr = options.xhr = Backbone.davCall(_.extend(params, options), model)\n\tmodel.trigger('request', model, xhr, options)\n\treturn xhr\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport VendorBackbone from 'backbone'\nimport { davCall, davSync } from './backbone-webdav'\n\nconst Backbone = VendorBackbone.noConflict()\n\n// Patch Backbone for DAV\nObject.assign(Backbone, {\n\tdavCall,\n\tdavSync: davSync(Backbone),\n})\n\nexport default Backbone\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst config = window._oc_config || {}\n\nexport default config\n","/**\n * @copyright 2017 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport { Collection, Model, View } from 'backbone'\n\nimport OC from './index'\n\n/**\n * @class Contact\n */\nconst Contact = Model.extend({\n\tdefaults: {\n\t\tfullName: '',\n\t\tlastMessage: '',\n\t\tactions: [],\n\t\thasOneAction: false,\n\t\thasTwoActions: false,\n\t\thasManyActions: false\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\tinitialize: function() {\n\t\t// Add needed property for easier template rendering\n\t\tif (this.get('actions').length === 0) {\n\t\t\tthis.set('hasOneAction', true)\n\t\t} else if (this.get('actions').length === 1) {\n\t\t\tthis.set('hasTwoActions', true)\n\t\t\tthis.set('secondAction', this.get('actions')[0])\n\t\t} else {\n\t\t\tthis.set('hasManyActions', true)\n\t\t}\n\t}\n})\n\n/**\n * @class ContactCollection\n * @private\n */\nconst ContactCollection = Collection.extend({\n\tmodel: Contact\n})\n\n/**\n * @class ContactsListView\n * @private\n */\nconst ContactsListView = View.extend({\n\n\t/** @type {ContactCollection} */\n\t_collection: undefined,\n\n\t/** @type {array} */\n\t_subViews: [],\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis._collection = options.collection\n\t},\n\n\t/**\n\t * @returns {self}\n\t */\n\trender: function() {\n\t\tvar self = this\n\t\tself.$el.html('')\n\t\tself._subViews = []\n\n\t\tself._collection.forEach(function(contact) {\n\t\t\tvar item = new ContactsListItemView({\n\t\t\t\tmodel: contact\n\t\t\t})\n\t\t\titem.render()\n\t\t\tself.$el.append(item.$el)\n\t\t\titem.on('toggle:actionmenu', self._onChildActionMenuToggle, self)\n\t\t\tself._subViews.push(item)\n\t\t})\n\n\t\treturn self\n\t},\n\n\t/**\n\t * Event callback to propagate opening (another) entry's action menu\n\t *\n\t * @param {type} $src\n\t * @returns {undefined}\n\t */\n\t_onChildActionMenuToggle: function($src) {\n\t\tthis._subViews.forEach(function(view) {\n\t\t\tview.trigger('parent:toggle:actionmenu', $src)\n\t\t})\n\t}\n})\n\n/**\n * @class ContactsListItemView\n * @private\n */\nconst ContactsListItemView = View.extend({\n\n\t/** @type {string} */\n\tclassName: 'contact',\n\n\t/** @type {undefined|function} */\n\t_template: undefined,\n\n\t/** @type {Contact} */\n\t_model: undefined,\n\n\t/** @type {boolean} */\n\t_actionMenuShown: false,\n\n\tevents: {\n\t\t'click .icon-more': '_onToggleActionsMenu'\n\t},\n\n\tcontactTemplate: require('./contactsmenu/contact.handlebars'),\n\n\t/**\n\t * @param {object} data\n\t * @returns {undefined}\n\t */\n\ttemplate: function(data) {\n\t\treturn this.contactTemplate(data)\n\t},\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis._model = options.model\n\t\tthis.on('parent:toggle:actionmenu', this._onOtherActionMenuOpened, this)\n\t},\n\n\t/**\n\t * @returns {self}\n\t */\n\trender: function() {\n\t\tthis.$el.html(this.template({\n\t\t\tcontact: this._model.toJSON()\n\t\t}))\n\t\tthis.delegateEvents()\n\n\t\t// Show placeholder if no avatar is available (avatar is rendered as img, not div)\n\t\tthis.$('div.avatar').imageplaceholder(this._model.get('fullName'))\n\n\t\t// Show tooltip for top action\n\t\tthis.$('.top-action').tooltip({ placement: 'left' })\n\t\t// Show tooltip for second action\n\t\tthis.$('.second-action').tooltip({ placement: 'left' })\n\n\t\treturn this\n\t},\n\n\t/**\n\t * Toggle the visibility of the action popover menu\n\t *\n\t * @private\n\t * @returns {undefined}\n\t */\n\t_onToggleActionsMenu: function() {\n\t\tthis._actionMenuShown = !this._actionMenuShown\n\t\tif (this._actionMenuShown) {\n\t\t\tthis.$('.menu').show()\n\t\t} else {\n\t\t\tthis.$('.menu').hide()\n\t\t}\n\t\tthis.trigger('toggle:actionmenu', this.$el)\n\t},\n\n\t/**\n\t * @private\n\t * @argument {jQuery} $src\n\t * @returns {undefined}\n\t */\n\t_onOtherActionMenuOpened: function($src) {\n\t\tif (this.$el.is($src)) {\n\t\t\t// Ignore\n\t\t\treturn\n\t\t}\n\t\tthis._actionMenuShown = false\n\t\tthis.$('.menu').hide()\n\t}\n})\n\n/**\n * @class ContactsMenuView\n * @private\n */\nconst ContactsMenuView = View.extend({\n\n\t/** @type {undefined|function} */\n\t_loadingTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_errorTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_contentTemplate: undefined,\n\n\t/** @type {undefined|function} */\n\t_contactsTemplate: undefined,\n\n\t/** @type {undefined|ContactCollection} */\n\t_contacts: undefined,\n\n\t/** @type {string} */\n\t_searchTerm: '',\n\n\tevents: {\n\t\t'input #contactsmenu-search': '_onSearch'\n\t},\n\n\ttemplates: {\n\t\tloading: require('./contactsmenu/loading.handlebars'),\n\t\terror: require('./contactsmenu/error.handlebars'),\n\t\tmenu: require('./contactsmenu/menu.handlebars'),\n\t\tlist: require('./contactsmenu/list.handlebars')\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\t_onSearch: _.debounce(function(e) {\n\t\tvar searchTerm = this.$('#contactsmenu-search').val()\n\t\t// IE11 triggers an 'input' event after the view has been rendered\n\t\t// resulting in an endless loading loop. To prevent this, we remember\n\t\t// the last search term to savely ignore some events\n\t\t// See https://github.com/nextcloud/server/issues/5281\n\t\tif (searchTerm !== this._searchTerm) {\n\t\t\tthis.trigger('search', this.$('#contactsmenu-search').val())\n\t\t\tthis._searchTerm = searchTerm\n\t\t}\n\t}, 700),\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tloadingTemplate: function(data) {\n\t\treturn this.templates.loading(data)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\terrorTemplate: function(data) {\n\t\treturn this.templates.error(\n\t\t\t_.extend({\n\t\t\t\tcouldNotLoadText: t('core', 'Could not load your contacts')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tcontentTemplate: function(data) {\n\t\treturn this.templates.menu(\n\t\t\t_.extend({\n\t\t\t\tsearchContactsText: t('core', 'Search contacts …')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {string}\n\t */\n\tcontactsTemplate: function(data) {\n\t\treturn this.templates.list(\n\t\t\t_.extend({\n\t\t\t\tnoContactsFoundText: t('core', 'No contacts found'),\n\t\t\t\tshowAllContactsText: t('core', 'Show all contacts …'),\n\t\t\t\tcontactsAppMgmtText: t('core', 'Install the Contacts app')\n\t\t\t}, data)\n\t\t)\n\t},\n\n\t/**\n\t * @param {object} options\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis.options = options\n\t},\n\n\t/**\n\t * @param {string} text\n\t * @returns {undefined}\n\t */\n\tshowLoading: function(text) {\n\t\tthis.render()\n\t\tthis._contacts = undefined\n\t\tthis.$('.content').html(this.loadingTemplate({\n\t\t\tloadingText: text\n\t\t}))\n\t},\n\n\t/**\n\t * @returns {undefined}\n\t */\n\tshowError: function() {\n\t\tthis.render()\n\t\tthis._contacts = undefined\n\t\tthis.$('.content').html(this.errorTemplate())\n\t},\n\n\t/**\n\t * @param {object} viewData\n\t * @param {string} searchTerm\n\t * @returns {undefined}\n\t */\n\tshowContacts: function(viewData, searchTerm) {\n\t\tthis._contacts = viewData.contacts\n\t\tthis.render({\n\t\t\tcontacts: viewData.contacts\n\t\t})\n\n\t\tvar list = new ContactsListView({\n\t\t\tcollection: viewData.contacts\n\t\t})\n\t\tlist.render()\n\t\tthis.$('.content').html(this.contactsTemplate({\n\t\t\tcontacts: viewData.contacts,\n\t\t\tsearchTerm: searchTerm,\n\t\t\tcontactsAppEnabled: viewData.contactsAppEnabled,\n\t\t\tcontactsAppURL: OC.generateUrl('/apps/contacts'),\n\t\t\tcanInstallApp: OC.isUserAdmin(),\n\t\t\tcontactsAppMgmtURL: OC.generateUrl('/settings/apps/social/contacts')\n\t\t}))\n\t\tthis.$('#contactsmenu-contacts').html(list.$el)\n\t},\n\n\t/**\n\t * @param {object} data\n\t * @returns {self}\n\t */\n\trender: function(data) {\n\t\tvar searchVal = this.$('#contactsmenu-search').val()\n\t\tthis.$el.html(this.contentTemplate(data))\n\n\t\t// Focus search\n\t\tthis.$('#contactsmenu-search').val(searchVal)\n\t\tthis.$('#contactsmenu-search').focus()\n\t\treturn this\n\t}\n\n})\n\n/**\n * @param {Object} options\n * @param {jQuery} options.el\n * @param {jQuery} options.trigger\n * @class ContactsMenu\n * @memberOf OC\n */\nconst ContactsMenu = function(options) {\n\tthis.initialize(options)\n}\n\nContactsMenu.prototype = {\n\t/** @type {jQuery} */\n\t$el: undefined,\n\n\t/** @type {jQuery} */\n\t_$trigger: undefined,\n\n\t/** @type {ContactsMenuView} */\n\t_view: undefined,\n\n\t/** @type {Promise} */\n\t_contactsPromise: undefined,\n\n\t/**\n\t * @param {Object} options\n\t * @param {jQuery} options.el - the element to render the menu in\n\t * @param {jQuery} options.trigger - the element to click on to open the menu\n\t * @returns {undefined}\n\t */\n\tinitialize: function(options) {\n\t\tthis.$el = options.el\n\t\tthis._$trigger = options.trigger\n\n\t\tthis._view = new ContactsMenuView({\n\t\t\tel: this.$el\n\t\t})\n\t\tthis._view.on('search', function(searchTerm) {\n\t\t\tthis._loadContacts(searchTerm)\n\t\t}, this)\n\n\t\tOC.registerMenu(this._$trigger, this.$el, function() {\n\t\t\tthis._toggleVisibility(true)\n\t\t}.bind(this), true)\n\t\tthis.$el.on('beforeHide', function() {\n\t\t\tthis._toggleVisibility(false)\n\t\t}.bind(this))\n\t},\n\n\t/**\n\t * @private\n\t * @param {boolean} show\n\t * @returns {Promise}\n\t */\n\t_toggleVisibility: function(show) {\n\t\tif (show) {\n\t\t\treturn this._loadContacts()\n\t\t} else {\n\t\t\tthis.$el.html('')\n\t\t\treturn Promise.resolve()\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t * @param {string|undefined} searchTerm\n\t * @returns {Promise}\n\t */\n\t_getContacts: function(searchTerm) {\n\t\tvar url = OC.generateUrl('/contactsmenu/contacts')\n\t\treturn Promise.resolve($.ajax(url, {\n\t\t\tmethod: 'POST',\n\t\t\tdata: {\n\t\t\t\tfilter: searchTerm\n\t\t\t}\n\t\t}))\n\t},\n\n\t/**\n\t * @param {string|undefined} searchTerm\n\t * @returns {undefined}\n\t */\n\t_loadContacts: function(searchTerm) {\n\t\tvar self = this\n\n\t\tif (!self._contactsPromise) {\n\t\t\tself._contactsPromise = self._getContacts(searchTerm)\n\t\t}\n\n\t\tif (_.isUndefined(searchTerm) || searchTerm === '') {\n\t\t\tself._view.showLoading(t('core', 'Loading your contacts …'))\n\t\t} else {\n\t\t\tself._view.showLoading(t('core', 'Looking for {term} …', {\n\t\t\t\tterm: searchTerm\n\t\t\t}))\n\t\t}\n\t\treturn self._contactsPromise.then(function(data) {\n\t\t\t// Convert contact entries to Backbone collection\n\t\t\tdata.contacts = new ContactCollection(data.contacts)\n\n\t\t\tself._view.showContacts(data, searchTerm)\n\t\t}, function(e) {\n\t\t\tself._view.showError()\n\t\t\tconsole.error('There was an error loading your contacts', e)\n\t\t}).then(function() {\n\t\t\t// Delete promise, so that contacts are fetched again when the\n\t\t\t// menu is opened the next time.\n\t\t\tdelete self._contactsPromise\n\t\t}).catch(console.error.bind(this))\n\t}\n}\n\nexport default ContactsMenu\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Joas Schilling <coding@schilljs.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst rawUid = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user')\nconst displayName = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user-displayname')\n\nexport const currentUser = rawUid !== undefined ? rawUid : false\n\nexport const getCurrentUser = () => {\n\treturn {\n\t\tuid: currentUser,\n\t\tdisplayName,\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Search from './search'\n\n/**\n * Namespace for apps\n *\n * @namespace OCA\n */\nexport default {\n\t/**\n\t * @deprecated 20.0.0, will be removed in Nextcloud 22\n\t */\n\tSearch,\n}\n","/**\n * @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class Search {\n\n\t/**\n\t * @deprecated 20.0.0, will be removed in Nextcloud 22\n\t */\n\tconstructor() {\n\t\tconsole.warn('OCA.Search is deprecated. Please use the unified search API instead')\n\t}\n\n}\n","/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/**\n * Return whether the DOM event is an accessible mouse or keyboard element activation\n *\n * @param {Event} event DOM event\n *\n * @return {boolean}\n */\nexport const isA11yActivation = (event) => {\n\tif (event.type === 'click') {\n\t\treturn true\n\t}\n\tif (event.type === 'keydown' && event.key === 'Enter') {\n\t\treturn true\n\t}\n\treturn false\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n * @copyright Copyright (c) 2019 Gary Kim <gary@garykim.dev>\n *\n * @author Bartek Przybylski <bart.p.pl@gmail.com>\n * @author Christopher Schäpers <kondou@ts.unde.re>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Daniel Kesselberg <mail@danielkesselberg.de>\n * @author Florian Schunk <florian.schunk@rwth-aachen.de>\n * @author Gary Kim <gary@garykim.dev>\n * @author Hendrik Leppelsack <hendrik@leppelsack.de>\n * @author Jan-Christoph Borchardt <hey@jancborchardt.net>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Jörn Friedrich Dreyer <jfd@butonic.de>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Loïc Hermann <loic.hermann@sciam.fr>\n * @author Morris Jobke <hey@morrisjobke.de>\n * @author Olivier Paroz <github@oparoz.com>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Sujith Haridasan <Sujith_Haridasan@mentor.com>\n * @author Thomas Citharel <nextcloud@tcit.fr>\n * @author Thomas Müller <thomas.mueller@tmit.eu>\n * @author Thomas Tanghus <thomas@tanghus.net>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport _ from 'underscore'\nimport $ from 'jquery'\n\nimport OC from './index'\nimport OCA from '../OCA/index'\nimport { isA11yActivation } from '../Util/a11y'\n\n/**\n * this class to ease the usage of jquery dialogs\n */\nconst Dialogs = {\n\t// dialog button types\n\tYES_NO_BUTTONS: 70,\n\tOK_BUTTONS: 71,\n\n\tFILEPICKER_TYPE_CHOOSE: 1,\n\tFILEPICKER_TYPE_MOVE: 2,\n\tFILEPICKER_TYPE_COPY: 3,\n\tFILEPICKER_TYPE_COPY_MOVE: 4,\n\tFILEPICKER_TYPE_CUSTOM: 5,\n\n\t// used to name each dialog\n\tdialogsCounter: 0,\n\n\t/**\n\t * displays alert dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t */\n\talert: function(text, title, callback, modal) {\n\t\tthis.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'alert',\n\t\t\tDialogs.OK_BUTTON,\n\t\t\tcallback,\n\t\t\tmodal\n\t\t)\n\t},\n\t/**\n\t * displays info dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t */\n\tinfo: function(text, title, callback, modal) {\n\t\tthis.message(text, title, 'info', Dialogs.OK_BUTTON, callback, modal)\n\t},\n\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirm: function(text, title, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'notice',\n\t\t\tDialogs.YES_NO_BUTTONS,\n\t\t\tcallback,\n\t\t\tmodal\n\t\t)\n\t},\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {(number|{type: number, confirm: string, cancel: string, confirmClasses: string})} buttons text content of buttons\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirmDestructive: function(text, title, buttons, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'none',\n\t\t\tbuttons,\n\t\t\tcallback,\n\t\t\tmodal === undefined ? true : modal\n\t\t)\n\t},\n\t/**\n\t * displays confirmation dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @returns {Promise}\n\t */\n\tconfirmHtml: function(text, title, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'notice',\n\t\t\tDialogs.YES_NO_BUTTONS,\n\t\t\tcallback,\n\t\t\tmodal,\n\t\t\ttrue\n\t\t)\n\t},\n\t/**\n\t * displays prompt dialog\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @param {string} name name of the input field\n\t * @param {boolean} password whether the input should be a password input\n\t * @returns {Promise}\n\t */\n\tprompt: function(text, title, callback, modal, name, password) {\n\t\treturn $.when(this._getMessageTemplate()).then(function($tmpl) {\n\t\t\tvar dialogName = 'oc-dialog-' + Dialogs.dialogsCounter + '-content'\n\t\t\tvar dialogId = '#' + dialogName\n\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\tmessage: text,\n\t\t\t\ttype: 'notice'\n\t\t\t})\n\t\t\tvar input = $('<input/>')\n\t\t\tinput.attr('type', password ? 'password' : 'text').attr('id', dialogName + '-input').attr('placeholder', name)\n\t\t\tvar label = $('<label/>').attr('for', dialogName + '-input').text(name + ': ')\n\t\t\t$dlg.append(label)\n\t\t\t$dlg.append(input)\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\t$('body').append($dlg)\n\n\t\t\t// wrap callback in _.once():\n\t\t\t// only call callback once and not twice (button handler and close\n\t\t\t// event) but call it for the close event, if ESC or the x is hit\n\t\t\tif (callback !== undefined) {\n\t\t\t\tcallback = _.once(callback)\n\t\t\t}\n\n\t\t\tvar buttonlist = [{\n\t\t\t\ttext: t('core', 'No'),\n\t\t\t\tclick: function() {\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(false, input.val())\n\t\t\t\t\t}\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t}\n\t\t\t}, {\n\t\t\t\ttext: t('core', 'Yes'),\n\t\t\t\tclick: function() {\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(true, input.val())\n\t\t\t\t\t}\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t},\n\t\t\t\tdefaultButton: true\n\t\t\t}]\n\n\t\t\t$(dialogId).ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist,\n\t\t\t\tclose: function() {\n\t\t\t\t\t// callback is already fired if Yes/No is clicked directly\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t// eslint-disable-next-line standard/no-callback-literal\n\t\t\t\t\t\tcallback(false, input.val())\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t\tinput.focus()\n\t\t\tDialogs.dialogsCounter++\n\t\t})\n\t},\n\t/**\n\t * show a file picker to pick a file from\n\t *\n\t * In order to pick several types of mime types they need to be passed as an\n\t * array of strings.\n\t *\n\t * When no mime type filter is given only files can be selected. In order to\n\t * be able to select both files and folders \"['*', 'httpd/unix-directory']\"\n\t * should be used instead.\n\t *\n\t * @param {string} title dialog title\n\t * @param {function} callback which will be triggered when user presses Choose\n\t * @param {boolean} [multiselect] whether it should be possible to select multiple files\n\t * @param {string[]} [mimetypeFilter] mimetype to filter by - directories will always be included\n\t * @param {boolean} [modal] make the dialog modal\n\t * @param {string} [type] Type of file picker : Choose, copy, move, copy and move\n\t * @param {string} [path] path to the folder that the the file can be picket from\n\t * @param {Object} [options] additonal options that need to be set\n\t * @param {Function} [options.filter] filter function for advanced filtering\n\t */\n\tfilepicker: function(title, callback, multiselect, mimetypeFilter, modal, type, path, options) {\n\t\tvar self = this\n\n\t\tthis.filepicker.sortField = 'name'\n\t\tthis.filepicker.sortOrder = 'asc'\n\t\t// avoid opening the picker twice\n\t\tif (this.filepicker.loading) {\n\t\t\treturn\n\t\t}\n\n\t\tif (type === undefined) {\n\t\t\ttype = this.FILEPICKER_TYPE_CHOOSE\n\t\t}\n\n\t\tvar emptyText = t('core', 'No files in here')\n\t\tvar newText = t('files', 'New folder')\n\t\tif (type === this.FILEPICKER_TYPE_COPY || type === this.FILEPICKER_TYPE_MOVE || type === this.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\temptyText = t('core', 'No more subfolders in here')\n\t\t}\n\n\t\tthis.filepicker.loading = true\n\t\tthis.filepicker.filesClient = (OCA.Sharing && OCA.Sharing.PublicApp && OCA.Sharing.PublicApp.fileList) ? OCA.Sharing.PublicApp.fileList.filesClient : OC.Files.getClient()\n\n\t\tthis.filelist = null\n\t\tpath = path || ''\n\t\toptions = Object.assign({\n\t\t\tallowDirectoryChooser: false\n\t\t}, options)\n\n\t\t$.when(this._getFilePickerTemplate()).then(function($tmpl) {\n\t\t\tself.filepicker.loading = false\n\t\t\tvar dialogName = 'oc-dialog-filepicker-content'\n\t\t\tif (self.$filePicker) {\n\t\t\t\tself.$filePicker.ocdialog('close')\n\t\t\t}\n\n\t\t\tif (mimetypeFilter === undefined || mimetypeFilter === null) {\n\t\t\t\tmimetypeFilter = []\n\t\t\t}\n\t\t\tif (typeof (mimetypeFilter) === 'string') {\n\t\t\t\tmimetypeFilter = [mimetypeFilter]\n\t\t\t}\n\n\t\t\tself.$filePicker = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\temptytext: emptyText,\n\t\t\t\tnewtext: newText,\n\t\t\t\tnameCol: t('core', 'Name'),\n\t\t\t\tsizeCol: t('core', 'Size'),\n\t\t\t\tmodifiedCol: t('core', 'Modified')\n\t\t\t}).data('path', path).data('multiselect', multiselect).data('mimetype', mimetypeFilter).data('allowDirectoryChooser', options.allowDirectoryChooser)\n\t\t\tif (typeof(options.filter) === 'function') {\n\t\t\t\tself.$filePicker.data('filter', options.filter)\n\t\t\t}\n\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\tif (multiselect === undefined) {\n\t\t\t\tmultiselect = false\n\t\t\t}\n\n\t\t\t$('body').prepend(self.$filePicker)\n\n\t\t\tself.$showGridView = $('button#picker-showgridview')\n\t\t\tself.$showGridView.on('click keydown', function(event) {\n\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\tself._onGridviewChange()\n\t\t\t\t}\n\t\t\t})\n\t\t\tself._getGridSettings()\n\n\t\t\tvar newButton = self.$filePicker.find('.actions.creatable .button-add')\n\t\t\tif (type === self.FILEPICKER_TYPE_CHOOSE && !options.allowDirectoryChooser) {\n\t\t\t\tself.$filePicker.find('.actions.creatable').hide()\n\t\t\t}\n\t\t\tnewButton.on('focus', function() {\n\t\t\t\tself.$filePicker.ocdialog('setEnterCallback', function(event) {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tnewButton.click()\n\t\t\t\t})\n\t\t\t})\n\t\t\tnewButton.on('blur', function() {\n\t\t\t\tself.$filePicker.ocdialog('unsetEnterCallback')\n\t\t\t})\n\n\t\t\tOC.registerMenu(newButton, self.$filePicker.find('.menu'), function() {\n\t\t\t\t$input.tooltip('hide')\n\t\t\t\t$input.focus()\n\t\t\t\tself.$filePicker.ocdialog('setEnterCallback', function(event) {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tself.$filePicker.submit()\n\t\t\t\t})\n\t\t\t\tvar newName = $input.val()\n\t\t\t\tvar lastPos = newName.lastIndexOf('.')\n\t\t\t\tif (lastPos === -1) {\n\t\t\t\t\tlastPos = newName.length\n\t\t\t\t}\n\t\t\t\t$input.selectRange(0, lastPos)\n\t\t\t})\n\t\t\tvar $form = self.$filePicker.find('.filenameform')\n\t\t\tvar $input = $form.find('input[type=\\'text\\']')\n\t\t\tvar $submit = $form.find('input[type=\\'submit\\']')\n\t\t\t$input.on('keydown', function(event) {\n\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t$form.submit()\n\t\t\t\t}\n\t\t\t})\n\t\t\t$submit.on('click', function(event) {\n\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\tevent.preventDefault()\n\t\t\t\t$form.submit()\n\t\t\t})\n\n\t\t\t/**\n\t\t\t * Checks whether the given file name is valid.\n\t\t\t *\n\t\t\t * @param name file name to check\n\t\t\t * @return true if the file name is valid.\n\t\t\t * @throws a string exception with an error message if\n\t\t\t * the file name is not valid\n\t\t\t *\n\t\t\t * NOTE: This function is duplicated in the files app:\n\t\t\t * https://github.com/nextcloud/server/blob/b9bc2417e7a8dc81feb0abe20359bedaf864f790/apps/files/js/files.js#L127-L148\n\t\t\t */\n\t\t\tvar isFileNameValid = function (name) {\n\t\t\t\tvar trimmedName = name.trim();\n\t\t\t\tif (trimmedName === '.' || trimmedName === '..')\n\t\t\t\t{\n\t\t\t\t\tthrow t('files', '\"{name}\" is an invalid file name.', {name: name})\n\t\t\t\t} else if (trimmedName.length === 0) {\n\t\t\t\t\tthrow t('files', 'File name cannot be empty.')\n\t\t\t\t} else if (trimmedName.indexOf('/') !== -1) {\n\t\t\t\t\tthrow t('files', '\"/\" is not allowed inside a file name.')\n\t\t\t\t} else if (!!(trimmedName.match(OC.config.blacklist_files_regex))) {\n\t\t\t\t\tthrow t('files', '\"{name}\" is not an allowed filetype', {name: name})\n\t\t\t\t}\n\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\tvar checkInput = function() {\n\t\t\t\tvar filename = $input.val()\n\t\t\t\ttry {\n\t\t\t\t\tif (!isFileNameValid(filename)) {\n\t\t\t\t\t\t// isFileNameValid(filename) throws an exception itself\n\t\t\t\t\t} else if (self.filelist.find(function(file) {\n\t\t\t\t\t\treturn file.name === this\n\t\t\t\t\t}, filename)) {\n\t\t\t\t\t\tthrow t('files', '{newName} already exists', { newName: filename }, undefined, {\n\t\t\t\t\t\t\tescape: false\n\t\t\t\t\t\t})\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn true\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\t$input.attr('title', error)\n\t\t\t\t\t$input.tooltip({\n\t\t\t\t\t\tplacement: 'right',\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\t'container': '.newFolderMenu'\n\t\t\t\t\t})\n\t\t\t\t\t$input.tooltip('_fixTitle')\n\t\t\t\t\t$input.tooltip('show')\n\t\t\t\t\t$input.addClass('error')\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\t$form.on('submit', function(event) {\n\t\t\t\tevent.stopPropagation()\n\t\t\t\tevent.preventDefault()\n\n\t\t\t\tif (checkInput()) {\n\t\t\t\t\tvar newname = $input.val()\n\t\t\t\t\tself.filepicker.filesClient.createDirectory(self.$filePicker.data('path') + \"/\" + newname).always(function (status) {\n\t\t\t\t\t\tself._fillFilePicker(self.$filePicker.data('path') + \"/\" + newname)\n\t\t\t\t\t})\n\t\t\t\t\tOC.hideMenus()\n\t\t\t\t\tself.$filePicker.ocdialog('unsetEnterCallback')\n\t\t\t\t\tself.$filePicker.click()\n\t\t\t\t\t$input.val(newText)\n\t\t\t\t}\n\t\t\t})\n\t\t\t$input.on('input', function(event) {\n\t\t\t\t$input.tooltip('hide')\n\t\t\t})\n\n\t\t\tself.$filePicker.ready(function() {\n\t\t\t\tself.$fileListHeader = self.$filePicker.find('.filelist thead tr')\n\t\t\t\tself.$filelist = self.$filePicker.find('.filelist tbody')\n\t\t\t\tself.$filelistContainer = self.$filePicker.find('.filelist-container')\n\t\t\t\tself.$dirTree = self.$filePicker.find('.dirtree')\n\t\t\t\tself.$dirTree.on('click keydown', 'div:not(:last-child)', self, function(event) {\n\t\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\t\tself._handleTreeListSelect(event, type)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tself.$filelist.on('click keydown', 'tr', function(event) {\n\t\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\t\tself._handlePickerClick(event, $(this), type)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tself.$fileListHeader.on('click keydown', 'a', function(event) {\n\t\t\t\t\tif (isA11yActivation(event)) {\n\t\t\t\t\t\tvar dir = self.$filePicker.data('path')\n\t\t\t\t\t\tself.filepicker.sortField = $(event.currentTarget).data('sort')\n\t\t\t\t\t\tself.filepicker.sortOrder = self.filepicker.sortOrder === 'asc' ? 'desc' : 'asc'\n\t\t\t\t\t\tself._fillFilePicker(dir)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tself._fillFilePicker(path)\n\t\t\t})\n\n\t\t\t// build buttons\n\t\t\tvar functionToCall = function(returnType) {\n\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\tvar datapath\n\t\t\t\t\tif (multiselect === true) {\n\t\t\t\t\t\tdatapath = []\n\t\t\t\t\t\tself.$filelist.find('tr.filepicker_element_selected').each(function(index, element) {\n\t\t\t\t\t\t\tdatapath.push(self.$filePicker.data('path') + '/' + $(element).data('entryname'))\n\t\t\t\t\t\t})\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdatapath = self.$filePicker.data('path')\n\t\t\t\t\t\tvar selectedName = self.$filelist.find('tr.filepicker_element_selected').data('entryname')\n\t\t\t\t\t\tif (selectedName) {\n\t\t\t\t\t\t\tdatapath += '/' + selectedName\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcallback(datapath, returnType)\n\t\t\t\t\tself.$filePicker.ocdialog('close')\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar chooseCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_CHOOSE)\n\t\t\t}\n\n\t\t\tvar copyCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_COPY)\n\t\t\t}\n\n\t\t\tvar moveCallback = function() {\n\t\t\t\tfunctionToCall(Dialogs.FILEPICKER_TYPE_MOVE)\n\t\t\t}\n\n\t\t\tvar buttonlist = []\n\t\t\tif (type === Dialogs.FILEPICKER_TYPE_CHOOSE) {\n\t\t\t\tbuttonlist.push({\n\t\t\t\t\ttext: t('core', 'Choose'),\n\t\t\t\t\tclick: chooseCallback,\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t})\n\t\t\t} else if (type === Dialogs.FILEPICKER_TYPE_CUSTOM) {\n\t\t\t\toptions.buttons.forEach(function(button) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: button.text,\n\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\tfunctionToCall(button.type)\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdefaultButton: button.defaultButton\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tif (type === Dialogs.FILEPICKER_TYPE_COPY || type === Dialogs.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: t('core', 'Copy'),\n\t\t\t\t\t\tclick: copyCallback,\n\t\t\t\t\t\tdefaultButton: false\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (type === Dialogs.FILEPICKER_TYPE_MOVE || type === Dialogs.FILEPICKER_TYPE_COPY_MOVE) {\n\t\t\t\t\tbuttonlist.push({\n\t\t\t\t\t\ttext: t('core', 'Move'),\n\t\t\t\t\t\tclick: moveCallback,\n\t\t\t\t\t\tdefaultButton: true\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tself.$filePicker.ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\t// max-width of 600\n\t\t\t\twidth: 600,\n\t\t\t\theight: 500,\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist,\n\t\t\t\tstyle: {\n\t\t\t\t\tbuttons: 'aside'\n\t\t\t\t},\n\t\t\t\tclose: function() {\n\t\t\t\t\ttry {\n\t\t\t\t\t\t$(this).ocdialog('destroy').remove()\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t}\n\t\t\t\t\tself.$filePicker = null\n\t\t\t\t}\n\t\t\t})\n\n\t\t\t// We can access primary class only from oc-dialog.\n\t\t\t// Hence this is one of the approach to get the choose button.\n\t\t\tvar getOcDialog = self.$filePicker.closest('.oc-dialog')\n\t\t\tvar buttonEnableDisable = getOcDialog.find('.primary')\n\t\t\tif (self.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || self.$filePicker.data('allowDirectoryChooser')) {\n\t\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t\t} else {\n\t\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t\t}\n\t\t})\n\t\t\t.fail(function(status, error) {\n\t\t\t\t// If the method is called while navigating away\n\t\t\t\t// from the page, it is probably not needed ;)\n\t\t\t\tself.filepicker.loading = false\n\t\t\t\tif (status !== 0) {\n\t\t\t\t\talert(t('core', 'Error loading file picker template: {error}', { error: error }))\n\t\t\t\t}\n\t\t\t})\n\t},\n\t/**\n\t * Displays raw dialog\n\t * You better use a wrapper instead ...\n\t */\n\tmessage: function(content, title, dialogType, buttons, callback, modal, allowHtml) {\n\t\treturn $.when(this._getMessageTemplate()).then(function($tmpl) {\n\t\t\tvar dialogName = 'oc-dialog-' + Dialogs.dialogsCounter + '-content'\n\t\t\tvar dialogId = '#' + dialogName\n\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\tdialog_name: dialogName,\n\t\t\t\ttitle: title,\n\t\t\t\tmessage: content,\n\t\t\t\ttype: dialogType\n\t\t\t}, allowHtml ? { escapeFunction: '' } : {})\n\t\t\tif (modal === undefined) {\n\t\t\t\tmodal = false\n\t\t\t}\n\t\t\t$('body').append($dlg)\n\t\t\tvar buttonlist = []\n\t\t\tswitch (buttons) {\n\t\t\tcase Dialogs.YES_NO_BUTTONS:\n\t\t\t\tbuttonlist = [{\n\t\t\t\t\ttext: t('core', 'No'),\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\tcallback(false)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttext: t('core', 'Yes'),\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t},\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t}]\n\t\t\t\tbreak\n\t\t\tcase Dialogs.OK_BUTTON:\n\t\t\t\tvar functionToCall = function() {\n\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\tcallback()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbuttonlist[0] = {\n\t\t\t\t\ttext: t('core', 'OK'),\n\t\t\t\t\tclick: functionToCall,\n\t\t\t\t\tdefaultButton: true\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tif (typeof(buttons) === 'object') {\n\t\t\t\t\tswitch (buttons.type) {\n\t\t\t\t\t\tcase Dialogs.YES_NO_BUTTONS:\n\t\t\t\t\t\t\tbuttonlist = [{\n\t\t\t\t\t\t\t\ttext: buttons.cancel || t('core', 'No'),\n\t\t\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\t\t\t\tcallback(false)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttext: buttons.confirm || t('core', 'Yes'),\n\t\t\t\t\t\t\t\t\tclick: function() {\n\t\t\t\t\t\t\t\t\t\tif (callback !== undefined) {\n\t\t\t\t\t\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tdefaultButton: true,\n\t\t\t\t\t\t\t\t\tclasses: buttons.confirmClasses\n\t\t\t\t\t\t\t\t}]\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\t$(dialogId).ocdialog({\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\tcloseCallback: () => { callback && callback(false) },\n\t\t\t\tmodal: modal,\n\t\t\t\tbuttons: buttonlist\n\t\t\t})\n\t\t\tDialogs.dialogsCounter++\n\t\t})\n\t\t\t.fail(function(status, error) {\n\t\t\t\t// If the method is called while navigating away from\n\t\t\t\t// the page, we still want to deliver the message.\n\t\t\t\tif (status === 0) {\n\t\t\t\t\talert(title + ': ' + content)\n\t\t\t\t} else {\n\t\t\t\t\talert(t('core', 'Error loading message template: {error}', { error: error }))\n\t\t\t\t}\n\t\t\t})\n\t},\n\t_fileexistsshown: false,\n\t/**\n\t * Displays file exists dialog\n\t * @param {object} data upload object\n\t * @param {object} original file with name, size and mtime\n\t * @param {object} replacement file with name, size and mtime\n\t * @param {object} controller with onCancel, onSkip, onReplace and onRename methods\n\t * @returns {Promise} jquery promise that resolves after the dialog template was loaded\n\t */\n\tfileexists: function(data, original, replacement, controller) {\n\t\tvar self = this\n\t\tvar dialogDeferred = new $.Deferred()\n\n\t\tvar getCroppedPreview = function(file) {\n\t\t\tvar deferred = new $.Deferred()\n\t\t\t// Only process image files.\n\t\t\tvar type = file.type && file.type.split('/').shift()\n\t\t\tif (window.FileReader && type === 'image') {\n\t\t\t\tvar reader = new FileReader()\n\t\t\t\treader.onload = function(e) {\n\t\t\t\t\tvar blob = new Blob([e.target.result])\n\t\t\t\t\twindow.URL = window.URL || window.webkitURL\n\t\t\t\t\tvar originalUrl = window.URL.createObjectURL(blob)\n\t\t\t\t\tvar image = new Image()\n\t\t\t\t\timage.src = originalUrl\n\t\t\t\t\timage.onload = function() {\n\t\t\t\t\t\tvar url = crop(image)\n\t\t\t\t\t\tdeferred.resolve(url)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treader.readAsArrayBuffer(file)\n\t\t\t} else {\n\t\t\t\tdeferred.reject()\n\t\t\t}\n\t\t\treturn deferred\n\t\t}\n\n\t\tvar crop = function(img) {\n\t\t\tvar canvas = document.createElement('canvas')\n\t\t\tvar targetSize = 96\n\t\t\tvar width = img.width\n\t\t\tvar height = img.height\n\t\t\tvar x; var y; var size\n\n\t\t\t// Calculate the width and height, constraining the proportions\n\t\t\tif (width > height) {\n\t\t\t\ty = 0\n\t\t\t\tx = (width - height) / 2\n\t\t\t} else {\n\t\t\t\ty = (height - width) / 2\n\t\t\t\tx = 0\n\t\t\t}\n\t\t\tsize = Math.min(width, height)\n\n\t\t\t// Set canvas size to the cropped area\n\t\t\tcanvas.width = size\n\t\t\tcanvas.height = size\n\t\t\tvar ctx = canvas.getContext('2d')\n\t\t\tctx.drawImage(img, x, y, size, size, 0, 0, size, size)\n\n\t\t\t// Resize the canvas to match the destination (right size uses 96px)\n\t\t\tresampleHermite(canvas, size, size, targetSize, targetSize)\n\n\t\t\treturn canvas.toDataURL('image/png', 0.7)\n\t\t}\n\n\t\t/**\n\t\t * Fast image resize/resample using Hermite filter with JavaScript.\n\t\t *\n\t\t * @author: ViliusL\n\t\t *\n\t\t * @param {*} canvas\n\t\t * @param {number} W\n\t\t * @param {number} H\n\t\t * @param {number} W2\n\t\t * @param {number} H2\n\t\t */\n\t\tvar resampleHermite = function(canvas, W, H, W2, H2) {\n\t\t\tW2 = Math.round(W2)\n\t\t\tH2 = Math.round(H2)\n\t\t\tvar img = canvas.getContext('2d').getImageData(0, 0, W, H)\n\t\t\tvar img2 = canvas.getContext('2d').getImageData(0, 0, W2, H2)\n\t\t\tvar data = img.data\n\t\t\tvar data2 = img2.data\n\t\t\tvar ratio_w = W / W2\n\t\t\tvar ratio_h = H / H2\n\t\t\tvar ratio_w_half = Math.ceil(ratio_w / 2)\n\t\t\tvar ratio_h_half = Math.ceil(ratio_h / 2)\n\n\t\t\tfor (var j = 0; j < H2; j++) {\n\t\t\t\tfor (var i = 0; i < W2; i++) {\n\t\t\t\t\tvar x2 = (i + j * W2) * 4\n\t\t\t\t\tvar weight = 0\n\t\t\t\t\tvar weights = 0\n\t\t\t\t\tvar weights_alpha = 0\n\t\t\t\t\tvar gx_r = 0\n\t\t\t\t\tvar gx_g = 0\n\t\t\t\t\tvar gx_b = 0\n\t\t\t\t\tvar gx_a = 0\n\t\t\t\t\tvar center_y = (j + 0.5) * ratio_h\n\t\t\t\t\tfor (var yy = Math.floor(j * ratio_h); yy < (j + 1) * ratio_h; yy++) {\n\t\t\t\t\t\tvar dy = Math.abs(center_y - (yy + 0.5)) / ratio_h_half\n\t\t\t\t\t\tvar center_x = (i + 0.5) * ratio_w\n\t\t\t\t\t\tvar w0 = dy * dy // pre-calc part of w\n\t\t\t\t\t\tfor (var xx = Math.floor(i * ratio_w); xx < (i + 1) * ratio_w; xx++) {\n\t\t\t\t\t\t\tvar dx = Math.abs(center_x - (xx + 0.5)) / ratio_w_half\n\t\t\t\t\t\t\tvar w = Math.sqrt(w0 + dx * dx)\n\t\t\t\t\t\t\tif (w >= -1 && w <= 1) {\n\t\t\t\t\t\t\t\t// hermite filter\n\t\t\t\t\t\t\t\tweight = 2 * w * w * w - 3 * w * w + 1\n\t\t\t\t\t\t\t\tif (weight > 0) {\n\t\t\t\t\t\t\t\t\tdx = 4 * (xx + yy * W)\n\t\t\t\t\t\t\t\t\t// alpha\n\t\t\t\t\t\t\t\t\tgx_a += weight * data[dx + 3]\n\t\t\t\t\t\t\t\t\tweights_alpha += weight\n\t\t\t\t\t\t\t\t\t// colors\n\t\t\t\t\t\t\t\t\tif (data[dx + 3] < 255) { weight = weight * data[dx + 3] / 250 }\n\t\t\t\t\t\t\t\t\tgx_r += weight * data[dx]\n\t\t\t\t\t\t\t\t\tgx_g += weight * data[dx + 1]\n\t\t\t\t\t\t\t\t\tgx_b += weight * data[dx + 2]\n\t\t\t\t\t\t\t\t\tweights += weight\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdata2[x2] = gx_r / weights\n\t\t\t\t\tdata2[x2 + 1] = gx_g / weights\n\t\t\t\t\tdata2[x2 + 2] = gx_b / weights\n\t\t\t\t\tdata2[x2 + 3] = gx_a / weights_alpha\n\t\t\t\t}\n\t\t\t}\n\t\t\tcanvas.getContext('2d').clearRect(0, 0, Math.max(W, W2), Math.max(H, H2))\n\t\t\tcanvas.width = W2\n\t\t\tcanvas.height = H2\n\t\t\tcanvas.getContext('2d').putImageData(img2, 0, 0)\n\t\t}\n\n\t\tvar addConflict = function($conflicts, original, replacement) {\n\n\t\t\tvar $conflict = $conflicts.find('.template').clone().removeClass('template').addClass('conflict')\n\t\t\tvar $originalDiv = $conflict.find('.original')\n\t\t\tvar $replacementDiv = $conflict.find('.replacement')\n\n\t\t\t$conflict.data('data', data)\n\n\t\t\t$conflict.find('.filename').text(original.name)\n\t\t\t$originalDiv.find('.size').text(OC.Util.humanFileSize(original.size))\n\t\t\t$originalDiv.find('.mtime').text(OC.Util.formatDate(original.mtime))\n\t\t\t// ie sucks\n\t\t\tif (replacement.size && replacement.lastModified) {\n\t\t\t\t$replacementDiv.find('.size').text(OC.Util.humanFileSize(replacement.size))\n\t\t\t\t$replacementDiv.find('.mtime').text(OC.Util.formatDate(replacement.lastModified))\n\t\t\t}\n\t\t\tvar path = original.directory + '/' + original.name\n\t\t\tvar urlSpec = {\n\t\t\t\tfile: path,\n\t\t\t\tx: 96,\n\t\t\t\ty: 96,\n\t\t\t\tc: original.etag,\n\t\t\t\tforceIcon: 0\n\t\t\t}\n\t\t\tvar previewpath = Files.generatePreviewUrl(urlSpec)\n\t\t\t// Escaping single quotes\n\t\t\tpreviewpath = previewpath.replace(/'/g, '%27')\n\t\t\t$originalDiv.find('.icon').css({ 'background-image': \"url('\" + previewpath + \"')\" })\n\t\t\tgetCroppedPreview(replacement).then(\n\t\t\t\tfunction(path) {\n\t\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t\t}, function() {\n\t\t\t\t\tpath = OC.MimeType.getIconUrl(replacement.type)\n\t\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t\t}\n\t\t\t)\n\t\t\t// connect checkboxes with labels\n\t\t\tvar checkboxId = $conflicts.find('.conflict').length\n\t\t\t$originalDiv.find('input:checkbox').attr('id', 'checkbox_original_' + checkboxId)\n\t\t\t$replacementDiv.find('input:checkbox').attr('id', 'checkbox_replacement_' + checkboxId)\n\n\t\t\t$conflicts.append($conflict)\n\n\t\t\t// set more recent mtime bold\n\t\t\t// ie sucks\n\t\t\tif (replacement.lastModified > original.mtime) {\n\t\t\t\t$replacementDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else if (replacement.lastModified < original.mtime) {\n\t\t\t\t$originalDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same mtime collection?\n\t\t\t}\n\n\t\t\t// set bigger size bold\n\t\t\tif (replacement.size && replacement.size > original.size) {\n\t\t\t\t$replacementDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else if (replacement.size && replacement.size < original.size) {\n\t\t\t\t$originalDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same size collection?\n\t\t\t}\n\n\t\t\t// TODO show skip action for files with same size and mtime in bottom row\n\n\t\t\t// always keep readonly files\n\n\t\t\tif (original.status === 'readonly') {\n\t\t\t\t$originalDiv\n\t\t\t\t\t.addClass('readonly')\n\t\t\t\t\t.find('input[type=\"checkbox\"]')\n\t\t\t\t\t.prop('checked', true)\n\t\t\t\t\t.prop('disabled', true)\n\t\t\t\t$originalDiv.find('.message')\n\t\t\t\t\t.text(t('core', 'read-only'))\n\t\t\t}\n\t\t}\n\t\t// var selection = controller.getSelection(data.originalFiles);\n\t\t// if (selection.defaultAction) {\n\t\t//\tcontroller[selection.defaultAction](data);\n\t\t// } else {\n\t\tvar dialogName = 'oc-dialog-fileexists-content'\n\t\tvar dialogId = '#' + dialogName\n\t\tif (this._fileexistsshown) {\n\t\t\t// add conflict\n\n\t\t\tvar $conflicts = $(dialogId + ' .conflicts')\n\t\t\taddConflict($conflicts, original, replacement)\n\n\t\t\tvar count = $(dialogId + ' .conflict').length\n\t\t\tvar title = n('core',\n\t\t\t\t'{count} file conflict',\n\t\t\t\t'{count} file conflicts',\n\t\t\t\tcount,\n\t\t\t\t{ count: count }\n\t\t\t)\n\t\t\t$(dialogId).parent().children('.oc-dialog-title').text(title)\n\n\t\t\t// recalculate dimensions\n\t\t\t$(window).trigger('resize')\n\t\t\tdialogDeferred.resolve()\n\t\t} else {\n\t\t\t// create dialog\n\t\t\tthis._fileexistsshown = true\n\t\t\t$.when(this._getFileExistsTemplate()).then(function($tmpl) {\n\t\t\t\tvar title = t('core', 'One file conflict')\n\t\t\t\tvar $dlg = $tmpl.octemplate({\n\t\t\t\t\tdialog_name: dialogName,\n\t\t\t\t\ttitle: title,\n\t\t\t\t\ttype: 'fileexists',\n\n\t\t\t\t\tallnewfiles: t('core', 'New Files'),\n\t\t\t\t\tallexistingfiles: t('core', 'Already existing files'),\n\n\t\t\t\t\twhy: t('core', 'Which files do you want to keep?'),\n\t\t\t\t\twhat: t('core', 'If you select both versions, the copied file will have a number added to its name.')\n\t\t\t\t})\n\t\t\t\t$('body').append($dlg)\n\n\t\t\t\tif (original && replacement) {\n\t\t\t\t\tvar $conflicts = $dlg.find('.conflicts')\n\t\t\t\t\taddConflict($conflicts, original, replacement)\n\t\t\t\t}\n\n\t\t\t\tvar buttonlist = [{\n\t\t\t\t\ttext: t('core', 'Cancel'),\n\t\t\t\t\tclasses: 'cancel',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onCancel !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onCancel(data)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttext: t('core', 'Continue'),\n\t\t\t\t\tclasses: 'continue',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onContinue !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onContinue($(dialogId + ' .conflict'))\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t}\n\t\t\t\t}]\n\n\t\t\t\t$(dialogId).ocdialog({\n\t\t\t\t\twidth: 500,\n\t\t\t\t\tcloseOnEscape: true,\n\t\t\t\t\tmodal: true,\n\t\t\t\t\tbuttons: buttonlist,\n\t\t\t\t\tcloseButton: null,\n\t\t\t\t\tclose: function() {\n\t\t\t\t\t\tself._fileexistsshown = false\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t$(this).ocdialog('destroy').remove()\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t// ignore\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t\t$(dialogId).css('height', 'auto')\n\n\t\t\t\tvar $primaryButton = $dlg.closest('.oc-dialog').find('button.continue')\n\t\t\t\t$primaryButton.prop('disabled', true)\n\n\t\t\t\tfunction updatePrimaryButton() {\n\t\t\t\t\tvar checkedCount = $dlg.find('.conflicts .checkbox:checked').length\n\t\t\t\t\t$primaryButton.prop('disabled', checkedCount === 0)\n\t\t\t\t}\n\n\t\t\t\t// add checkbox toggling actions\n\t\t\t\t$(dialogId).find('.allnewfiles').on('click', function() {\n\t\t\t\t\tvar $checkboxes = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.allexistingfiles').on('click', function() {\n\t\t\t\t\tvar $checkboxes = $(dialogId).find('.conflict .original:not(.readonly) input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement,.original:not(.readonly)', function() {\n\t\t\t\t\tvar $checkbox = $(this).find('input[type=\"checkbox\"]')\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement input[type=\"checkbox\"],.original:not(.readonly) input[type=\"checkbox\"]', function() {\n\t\t\t\t\tvar $checkbox = $(this)\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\n\t\t\t\t// update counters\n\t\t\t\t$(dialogId).on('click', '.replacement,.allnewfiles', function() {\n\t\t\t\t\tvar count = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '({count} selected)', { count: count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\t\t\t\t$(dialogId).on('click', '.original,.allexistingfiles', function() {\n\t\t\t\t\tvar count = $(dialogId).find('.conflict .original input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count')\n\t\t\t\t\t\t\t.text(t('core', '({count} selected)', { count: count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\n\t\t\t\tdialogDeferred.resolve()\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdialogDeferred.reject()\n\t\t\t\t\talert(t('core', 'Error loading file exists template'))\n\t\t\t\t})\n\t\t}\n\t\t// }\n\t\treturn dialogDeferred.promise()\n\t},\n\t// get the gridview setting and set the input accordingly\n\t_getGridSettings: function() {\n\t\tconst self = this\n\t\t$.get(OC.generateUrl('/apps/files/api/v1/showgridview'), function(response) {\n\t\t\tself.$showGridView\n\t\t\t\t.removeClass('icon-toggle-filelist icon-toggle-pictures')\n\t\t\t\t.addClass(response.gridview ? 'icon-toggle-filelist' : 'icon-toggle-pictures')\n\t\t\tself.$showGridView.attr(\n\t\t\t\t'aria-label',\n\t\t\t\tresponse.gridview ? t('files', 'Show list view') : t('files', 'Show grid view'),\n\t\t\t)\n\t\t\t$('.list-container').toggleClass('view-grid', response.gridview)\n\t\t})\n\t},\n\t_onGridviewChange: function() {\n\t\tconst isGridView = this.$showGridView.hasClass('icon-toggle-filelist')\n\t\t// only save state if user is logged in\n\t\tif (OC.currentUser) {\n\t\t\t$.post(OC.generateUrl('/apps/files/api/v1/showgridview'), { show: !isGridView })\n\t\t}\n\t\tthis.$showGridView\n\t\t\t.removeClass('icon-toggle-filelist icon-toggle-pictures')\n\t\t\t.addClass(isGridView ? 'icon-toggle-pictures' : 'icon-toggle-filelist')\n\t\tthis.$showGridView.attr(\n\t\t\t'aria-label',\n\t\t\tisGridView ? t('files', 'Show grid view') : t('files', 'Show list view'),\n\t\t)\n\t\tthis.$filePicker.find('.list-container').toggleClass('view-grid', !isGridView)\n\t},\n\t_getFilePickerTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$filePickerTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('core', 'templates', 'filepicker.html'), function(tmpl) {\n\t\t\t\tself.$filePickerTemplate = $(tmpl)\n\t\t\t\tself.$listTmpl = self.$filePickerTemplate.find('.filelist tbody tr:first-child').detach()\n\t\t\t\tdefer.resolve(self.$filePickerTemplate)\n\t\t\t})\n\t\t\t\t.fail(function(jqXHR, textStatus, errorThrown) {\n\t\t\t\t\tdefer.reject(jqXHR.status, errorThrown)\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$filePickerTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\t_getMessageTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$messageTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('core', 'templates', 'message.html'), function(tmpl) {\n\t\t\t\tself.$messageTemplate = $(tmpl)\n\t\t\t\tdefer.resolve(self.$messageTemplate)\n\t\t\t})\n\t\t\t\t.fail(function(jqXHR, textStatus, errorThrown) {\n\t\t\t\t\tdefer.reject(jqXHR.status, errorThrown)\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$messageTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\t_getFileExistsTemplate: function() {\n\t\tvar defer = $.Deferred()\n\t\tif (!this.$fileexistsTemplate) {\n\t\t\tvar self = this\n\t\t\t$.get(OC.filePath('files', 'templates', 'fileexists.html'), function(tmpl) {\n\t\t\t\tself.$fileexistsTemplate = $(tmpl)\n\t\t\t\tdefer.resolve(self.$fileexistsTemplate)\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdefer.reject()\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$fileexistsTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n\t_getFileList: function(dir, mimeType) { // this is only used by the spreedme app atm\n\t\tif (typeof (mimeType) === 'string') {\n\t\t\tmimeType = [mimeType]\n\t\t}\n\n\t\treturn $.getJSON(\n\t\t\tOC.filePath('files', 'ajax', 'list.php'),\n\t\t\t{\n\t\t\t\tdir: dir,\n\t\t\t\tmimetypes: JSON.stringify(mimeType)\n\t\t\t}\n\t\t)\n\t},\n\n\t/**\n\t * fills the filepicker with files\n\t */\n\t_fillFilePicker: async function(dir) {\n\t\tvar self = this\n\t\tthis.$filelist.empty()\n\t\tthis.$filePicker.find('.emptycontent').hide()\n\t\tthis.$filelistContainer.addClass('icon-loading')\n\t\tthis.$filePicker.data('path', dir)\n\t\tvar filter = this.$filePicker.data('mimetype')\n\t\tvar advancedFilter = this.$filePicker.data('filter')\n\t\tif (typeof (filter) === 'string') {\n\t\t\tfilter = [filter]\n\t\t}\n\t\tself.$fileListHeader.find('.sort-indicator').addClass('hidden').removeClass('icon-triangle-n').removeClass('icon-triangle-s')\n\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').removeClass('hidden')\n\t\tif (self.filepicker.sortOrder === 'asc') {\n\t\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').addClass('icon-triangle-n')\n\t\t} else {\n\t\t\tself.$fileListHeader.find('[data-sort=' + self.filepicker.sortField + '] .sort-indicator').addClass('icon-triangle-s')\n\t\t}\n\n\t\t// Wrap within a method because a promise cannot return multiple values\n\t\t// But the client impleemntation still does it...\n\t\tvar getFolderContents = async function(dir) {\n\t\t\treturn self.filepicker.filesClient.getFolderContents(dir)\n\t\t\t\t.then((status, files) => {\n\t\t\t\t\treturn files\n\t\t\t\t})\n\t\t}\n\n\t\ttry {\n\t\t\tvar files = await getFolderContents(dir)\n\t\t} catch (error) {\n\t\t\t// fallback to root if requested dir is non-existent\n\t\t\tconsole.error('Requested path does not exists, falling back to root')\n\t\t\tvar files = await getFolderContents('/')\n\t\t\tthis.$filePicker.data('path', '/')\n\t\t}\n\n\t\tself.filelist = files\n\t\tif (filter && filter.length > 0 && filter.indexOf('*') === -1) {\n\t\t\tfiles = files.filter(function(file) {\n\t\t\t\treturn file.type === 'dir' || filter.indexOf(file.mimetype) !== -1\n\t\t\t})\n\t\t}\n\n\t\tif (advancedFilter) {\n\t\t\tfiles = files.filter(advancedFilter)\n\t\t}\n\n\t\t// Check if the showHidden input field exist and if it exist follow it\n\t\t// Otherwise just show the hidden files\n\t\tconst showHiddenInput = document.getElementById('showHiddenFiles')\n\t\tconst showHidden = showHiddenInput === null || showHiddenInput.value === \"1\"\n\t\tif (!showHidden) {\n\t\t\tfiles = files.filter(function(file) {\n\t\t\t\treturn !file.name.startsWith('.')\n\t\t\t})\n\t\t}\n\n\t\tvar Comparators = {\n\t\t\tname: function(fileInfo1, fileInfo2) {\n\t\t\t\tif (fileInfo1.type === 'dir' && fileInfo2.type !== 'dir') {\n\t\t\t\t\treturn -1\n\t\t\t\t}\n\t\t\t\tif (fileInfo1.type !== 'dir' && fileInfo2.type === 'dir') {\n\t\t\t\t\treturn 1\n\t\t\t\t}\n\t\t\t\treturn OC.Util.naturalSortCompare(fileInfo1.name, fileInfo2.name)\n\t\t\t},\n\t\t\tsize: function(fileInfo1, fileInfo2) {\n\t\t\t\treturn fileInfo1.size - fileInfo2.size\n\t\t\t},\n\t\t\tmtime: function(fileInfo1, fileInfo2) {\n\t\t\t\treturn fileInfo1.mtime - fileInfo2.mtime\n\t\t\t}\n\t\t}\n\t\tvar comparator = Comparators[self.filepicker.sortField] || Comparators.name\n\t\tfiles = files.sort(function(file1, file2) {\n\t\t\tvar isFavorite = function(fileInfo) {\n\t\t\t\treturn fileInfo.tags && fileInfo.tags.indexOf(OC.TAG_FAVORITE) >= 0\n\t\t\t}\n\n\t\t\tif (isFavorite(file1) && !isFavorite(file2)) {\n\t\t\t\treturn -1\n\t\t\t} else if (!isFavorite(file1) && isFavorite(file2)) {\n\t\t\t\treturn 1\n\t\t\t}\n\n\t\t\treturn self.filepicker.sortOrder === 'asc' ? comparator(file1, file2) : -comparator(file1, file2)\n\t\t})\n\n\t\tself._fillSlug()\n\n\t\tif (files.length === 0) {\n\t\t\tself.$filePicker.find('.emptycontent').show()\n\t\t\tself.$fileListHeader.hide()\n\t\t} else {\n\t\t\tself.$filePicker.find('.emptycontent').hide()\n\t\t\tself.$fileListHeader.show()\n\t\t}\n\n\t\tself.$filelist.empty();\n\n\t\t$.each(files, function(idx, entry) {\n\t\t\tif (entry.isEncrypted && entry.mimetype === 'httpd/unix-directory') {\n\t\t\t\tentry.icon = OC.MimeType.getIconUrl('dir-encrypted')\n\t\t\t} else {\n\t\t\t\tentry.icon = OC.MimeType.getIconUrl(entry.mimetype)\n\t\t\t}\n\n\t\t\tvar simpleSize, sizeColor\n\t\t\tif (typeof (entry.size) !== 'undefined' && entry.size >= 0) {\n\t\t\t\tsimpleSize = OC.Util.humanFileSize(parseInt(entry.size, 10), true)\n\t\t\t\tsizeColor = Math.round(160 - Math.pow((entry.size / (1024 * 1024)), 2))\n\t\t\t} else {\n\t\t\t\tsimpleSize = t('files', 'Pending')\n\t\t\t\tsizeColor = 80\n\t\t\t}\n\n\t\t\t// split the filename in half if the size is bigger than 20 char\n\t\t\t// for ellipsis\n\t\t\tif (entry.name.length >= 10) {\n\t\t\t\t// leave maximum 10 letters\n\t\t\t\tvar split = Math.min(Math.floor(entry.name.length / 2), 10)\n\t\t\t\tvar filename1 = entry.name.substr(0, entry.name.length - split)\n\t\t\t\tvar filename2 = entry.name.substr(entry.name.length - split)\n\t\t\t} else {\n\t\t\t\tvar filename1 = entry.name\n\t\t\t\tvar filename2 = ''\n\t\t\t}\n\n\t\t\tvar $row = self.$listTmpl.octemplate({\n\t\t\t\ttype: entry.type,\n\t\t\t\tdir: dir,\n\t\t\t\tfilename: entry.name,\n\t\t\t\tfilename1: filename1,\n\t\t\t\tfilename2: filename2,\n\t\t\t\tdate: OC.Util.relativeModifiedDate(entry.mtime),\n\t\t\t\tsize: simpleSize,\n\t\t\t\tsizeColor: sizeColor,\n\t\t\t\ticon: entry.icon\n\t\t\t})\n\t\t\tif (entry.type === 'file') {\n\t\t\t\tvar urlSpec = {\n\t\t\t\t\tfile: dir + '/' + entry.name,\n\t\t\t\t\tx: 100,\n\t\t\t\t\ty: 100\n\t\t\t\t}\n\t\t\t\tvar img = new Image()\n\t\t\t\tvar previewUrl = OC.generateUrl('/core/preview.png?') + $.param(urlSpec)\n\t\t\t\timg.onload = function() {\n\t\t\t\t\tif (img.width > 5) {\n\t\t\t\t\t\t$row.find('td.filename').attr('style', 'background-image:url(' + previewUrl + ')')\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\timg.src = previewUrl\n\t\t\t}\n\t\t\tself.$filelist.append($row)\n\t\t})\n\n\t\tself.$filelistContainer.removeClass('icon-loading')\n\t},\n\t/**\n\t * fills the tree list with directories\n\t */\n\t_fillSlug: function() {\n\t\tvar addButton = this.$dirTree.find('.actions.creatable').detach()\n\t\tthis.$dirTree.empty()\n\t\tvar self = this\n\n\t\tself.$dirTree.append(addButton)\n\n\t\tvar dir\n\t\tvar path = this.$filePicker.data('path')\n\t\tvar $template = $('<div data-dir=\"{dir}\" tabindex=\"0\"><a>{name}</a></div>').addClass('crumb')\n\t\tif (path) {\n\t\t\tvar paths = path.split('/')\n\t\t\t$.each(paths, function(index, dir) {\n\t\t\t\tdir = paths.pop()\n\t\t\t\tif (dir === '') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tself.$dirTree.prepend($template.octemplate({\n\t\t\t\t\tdir: paths.join('/') + '/' + dir,\n\t\t\t\t\tname: dir\n\t\t\t\t}))\n\t\t\t})\n\t\t}\n\n\t\t$template.octemplate({\n\t\t\tdir: '',\n\t\t\tname: '' // Ugly but works ;)\n\t\t}, { escapeFunction: null }).prependTo(this.$dirTree)\n\n\t},\n\t/**\n\t * handle selection made in the tree list\n\t */\n\t_handleTreeListSelect: function(event, type) {\n\t\tvar self = event.data\n\t\tvar dir = $(event.target).closest('.crumb').data('dir')\n\t\tself._fillFilePicker(dir)\n\t\tvar getOcDialog = (event.target).closest('.oc-dialog')\n\t\tvar buttonEnableDisable = $('.primary', getOcDialog)\n\t\tthis._changeButtonsText(type, dir.split(/[/]+/).pop())\n\t\tif (this.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || this.$filePicker.data('allowDirectoryChooser')) {\n\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t} else {\n\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t}\n\t},\n\t/**\n\t * handle clicks made in the filepicker\n\t */\n\t_handlePickerClick: function(event, $element, type) {\n\t\tvar getOcDialog = this.$filePicker.closest('.oc-dialog')\n\t\tvar buttonEnableDisable = getOcDialog.find('.primary')\n\t\tif ($element.data('type') === 'file') {\n\t\t\tif (this.$filePicker.data('multiselect') !== true || !event.ctrlKey) {\n\t\t\t\tthis.$filelist.find('.filepicker_element_selected').removeClass('filepicker_element_selected')\n\t\t\t}\n\t\t\t$element.toggleClass('filepicker_element_selected')\n\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t} else if ($element.data('type') === 'dir') {\n\t\t\tthis._fillFilePicker(this.$filePicker.data('path') + '/' + $element.data('entryname'))\n\t\t\tthis._changeButtonsText(type, $element.data('entryname'))\n\t\t\tif (this.$filePicker.data('mimetype').indexOf('httpd/unix-directory') !== -1 || this.$filePicker.data('allowDirectoryChooser')) {\n\t\t\t\tbuttonEnableDisable.prop('disabled', false)\n\t\t\t} else {\n\t\t\t\tbuttonEnableDisable.prop('disabled', true)\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Handle\n\t * @param type of action\n\t * @param dir on which to change buttons text\n\t * @private\n\t */\n\t_changeButtonsText: function(type, dir) {\n\t\tvar copyText = dir === '' ? t('core', 'Copy') : t('core', 'Copy to {folder}', { folder: dir })\n\t\tvar moveText = dir === '' ? t('core', 'Move') : t('core', 'Move to {folder}', { folder: dir })\n\t\tvar buttons = $('.oc-dialog-buttonrow button')\n\t\tswitch (type) {\n\t\t\tcase this.FILEPICKER_TYPE_CHOOSE:\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_CUSTOM:\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_COPY:\n\t\t\t\tbuttons.text(copyText)\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_MOVE:\n\t\t\t\tbuttons.text(moveText)\n\t\t\t\tbreak\n\t\t\tcase this.FILEPICKER_TYPE_COPY_MOVE:\n\t\t\t\tbuttons.eq(0).text(copyText)\n\t\t\t\tbuttons.eq(1).text(moveText)\n\t\t\t\tbreak\n\t\t}\n\t}\n}\n\nexport default Dialogs\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { emit } from '@nextcloud/event-bus'\n\n/**\n * @private\n * @param {Document} global the document to read the initial value from\n * @param {Function} emit the function to invoke for every new token\n * @return {object}\n */\nexport const manageToken = (global, emit) => {\n\tlet token = global.getElementsByTagName('head')[0].getAttribute('data-requesttoken')\n\n\treturn {\n\t\tgetToken: () => token,\n\t\tsetToken: newToken => {\n\t\t\ttoken = newToken\n\n\t\t\temit('csrf-token-update', {\n\t\t\t\ttoken,\n\t\t\t})\n\t\t},\n\t}\n}\n\nconst manageFromDocument = manageToken(document, emit)\n\n/**\n * @return {string}\n */\nexport const getToken = manageFromDocument.getToken\n\n/**\n * @param {string} newToken new token\n */\nexport const setToken = manageFromDocument.setToken\n","/**\n * @copyright 2012 Robin Appelman icewind1991@gmail.com\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Lukas Reschke <lukas@statuscode.ch>\n * @author Robin Appelman <robin@icewind.nl>\n * @author Thomas Müller <thomas.mueller@tmit.eu>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport $ from 'jquery'\n\nimport { getToken } from './requesttoken'\n\n/**\n * Create a new event source\n * @param {string} src\n * @param {object} [data] to be send as GET\n *\n * @constructs OCEventSource\n */\nconst OCEventSource = function(src, data) {\n\tvar dataStr = ''\n\tvar name\n\tvar joinChar\n\tthis.typelessListeners = []\n\tthis.closed = false\n\tthis.listeners = {}\n\tif (data) {\n\t\tfor (name in data) {\n\t\t\tdataStr += name + '=' + encodeURIComponent(data[name]) + '&'\n\t\t}\n\t}\n\tdataStr += 'requesttoken=' + encodeURIComponent(getToken())\n\tif (!this.useFallBack && typeof EventSource !== 'undefined') {\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tthis.source = new EventSource(src + joinChar + dataStr)\n\t\tthis.source.onmessage = function(e) {\n\t\t\tfor (var i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](JSON.parse(e.data))\n\t\t\t}\n\t\t}.bind(this)\n\t} else {\n\t\tvar iframeId = 'oc_eventsource_iframe_' + OCEventSource.iframeCount\n\t\tOCEventSource.fallBackSources[OCEventSource.iframeCount] = this\n\t\tthis.iframe = $('<iframe></iframe>')\n\t\tthis.iframe.attr('id', iframeId)\n\t\tthis.iframe.hide()\n\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tthis.iframe.attr('src', src + joinChar + 'fallback=true&fallback_id=' + OCEventSource.iframeCount + '&' + dataStr)\n\t\t$('body').append(this.iframe)\n\t\tthis.useFallBack = true\n\t\tOCEventSource.iframeCount++\n\t}\n\t// add close listener\n\tthis.listen('__internal__', function(data) {\n\t\tif (data === 'close') {\n\t\t\tthis.close()\n\t\t}\n\t}.bind(this))\n}\nOCEventSource.fallBackSources = []\nOCEventSource.iframeCount = 0// number of fallback iframes\nOCEventSource.fallBackCallBack = function(id, type, data) {\n\tOCEventSource.fallBackSources[id].fallBackCallBack(type, data)\n}\nOCEventSource.prototype = {\n\ttypelessListeners: [],\n\tiframe: null,\n\tlisteners: {}, // only for fallback\n\tuseFallBack: false,\n\t/**\n\t * Fallback callback for browsers that don't have the\n\t * native EventSource object.\n\t *\n\t * Calls the registered listeners.\n\t *\n\t * @private\n\t * @param {String} type event type\n\t * @param {Object} data received data\n\t */\n\tfallBackCallBack: function(type, data) {\n\t\tvar i\n\t\t// ignore messages that might appear after closing\n\t\tif (this.closed) {\n\t\t\treturn\n\t\t}\n\t\tif (type) {\n\t\t\tif (typeof this.listeners.done !== 'undefined') {\n\t\t\t\tfor (i = 0; i < this.listeners[type].length; i++) {\n\t\t\t\t\tthis.listeners[type][i](data)\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](data)\n\t\t\t}\n\t\t}\n\t},\n\tlastLength: 0, // for fallback\n\t/**\n\t * Listen to a given type of events.\n\t *\n\t * @param {String} type event type\n\t * @param {Function} callback event callback\n\t */\n\tlisten: function(type, callback) {\n\t\tif (callback && callback.call) {\n\n\t\t\tif (type) {\n\t\t\t\tif (this.useFallBack) {\n\t\t\t\t\tif (!this.listeners[type]) {\n\t\t\t\t\t\tthis.listeners[type] = []\n\t\t\t\t\t}\n\t\t\t\t\tthis.listeners[type].push(callback)\n\t\t\t\t} else {\n\t\t\t\t\tthis.source.addEventListener(type, function(e) {\n\t\t\t\t\t\tif (typeof e.data !== 'undefined') {\n\t\t\t\t\t\t\tcallback(JSON.parse(e.data))\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcallback('')\n\t\t\t\t\t\t}\n\t\t\t\t\t}, false)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.typelessListeners.push(callback)\n\t\t\t}\n\t\t}\n\t},\n\t/**\n\t * Closes this event source.\n\t */\n\tclose: function() {\n\t\tthis.closed = true\n\t\tif (typeof this.source !== 'undefined') {\n\t\t\tthis.source.close()\n\t\t}\n\t}\n}\n\nexport default OCEventSource\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\n\nimport { menuSpeed } from './constants'\n\nexport let currentMenu = null\nexport let currentMenuToggle = null\n\n/**\n * For menu toggling\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n * @param {Function | undefined} toggle callback invoked everytime the menu is opened\n * @param {boolean} headerMenu is this a top right header menu?\n * @return {void}\n */\nexport const registerMenu = function($toggle, $menuEl, toggle, headerMenu) {\n\t$menuEl.addClass('menu')\n\tconst isClickableElement = $toggle.prop('tagName') === 'A' || $toggle.prop('tagName') === 'BUTTON'\n\n\t// On link and button, the enter key trigger a click event\n\t// Only use the click to avoid two fired events\n\t$toggle.on(isClickableElement ? 'click.menu' : 'click.menu keyup.menu', function(event) {\n\t\t// prevent the link event (append anchor to URL)\n\t\tevent.preventDefault()\n\n\t\t// allow enter key as a trigger\n\t\tif (event.key && event.key !== 'Enter') {\n\t\t\treturn\n\t\t}\n\n\t\tif ($menuEl.is(currentMenu)) {\n\t\t\thideMenus()\n\t\t\treturn\n\t\t} else if (currentMenu) {\n\t\t\t// another menu was open?\n\t\t\t// close it\n\t\t\thideMenus()\n\t\t}\n\n\t\tif (headerMenu === true) {\n\t\t\t$menuEl.parent().addClass('openedMenu')\n\t\t}\n\n\t\t// Set menu to expanded\n\t\t$toggle.attr('aria-expanded', true)\n\n\t\t$menuEl.slideToggle(menuSpeed, toggle)\n\t\tcurrentMenu = $menuEl\n\t\tcurrentMenuToggle = $toggle\n\t})\n}\n\n/**\n * Unregister a previously registered menu\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n */\nexport const unregisterMenu = ($toggle, $menuEl) => {\n\t// close menu if opened\n\tif ($menuEl.is(currentMenu)) {\n\t\thideMenus()\n\t}\n\t$toggle.off('click.menu').removeClass('menutoggle')\n\t$menuEl.removeClass('menu')\n}\n\n/**\n * Hides any open menus\n *\n * @param {Function} complete callback when the hiding animation is done\n */\nexport const hideMenus = function(complete) {\n\tif (currentMenu) {\n\t\tconst lastMenu = currentMenu\n\t\tcurrentMenu.trigger(new $.Event('beforeHide'))\n\t\tcurrentMenu.slideUp(menuSpeed, function() {\n\t\t\tlastMenu.trigger(new $.Event('afterHide'))\n\t\t\tif (complete) {\n\t\t\t\tcomplete.apply(this, arguments)\n\t\t\t}\n\t\t})\n\t}\n\n\t// Set menu to closed\n\t$('.menutoggle').attr('aria-expanded', false)\n\tif (currentMenuToggle) {\n\t\tcurrentMenuToggle.attr('aria-expanded', false)\n\t}\n\n\t$('.openedMenu').removeClass('openedMenu')\n\tcurrentMenu = null\n\tcurrentMenuToggle = null\n}\n\n/**\n * Shows a given element as menu\n *\n * @param {object} [$toggle=null] menu toggle\n * @param {object} $menuEl menu element\n * @param {Function} complete callback when the showing animation is done\n */\nexport const showMenu = ($toggle, $menuEl, complete) => {\n\tif ($menuEl.is(currentMenu)) {\n\t\treturn\n\t}\n\thideMenus()\n\tcurrentMenu = $menuEl\n\tcurrentMenuToggle = $toggle\n\t$menuEl.trigger(new $.Event('beforeShow'))\n\t$menuEl.show()\n\t$menuEl.trigger(new $.Event('afterShow'))\n\t// no animation\n\tif (_.isFunction(complete)) {\n\t\tcomplete()\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const coreApps = ['', 'admin', 'log', 'core/search', 'core', '3rdparty']\nexport const menuSpeed = 50\nexport const PERMISSION_NONE = 0\nexport const PERMISSION_CREATE = 4\nexport const PERMISSION_READ = 1\nexport const PERMISSION_UPDATE = 2\nexport const PERMISSION_DELETE = 8\nexport const PERMISSION_SHARE = 16\nexport const PERMISSION_ALL = 31\nexport const TAG_FAVORITE = '_$!<Favorite>!$_'\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst isAdmin = !!window._oc_isadmin\n\n/**\n * Returns whether the current user is an administrator\n *\n * @return {boolean} true if the user is an admin, false otherwise\n * @since 9.0.0\n */\nexport const isUserAdmin = () => isAdmin\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n// This var is global because it's shared across webpack bundles\nwindow._oc_l10n_registry_translations = window._oc_l10n_registry_translations || {}\nwindow._oc_l10n_registry_plural_functions = window._oc_l10n_registry_plural_functions || {}\n\n/**\n * @param {string} appId the app id\n * @param {object} translations the translations list\n * @param {Function} pluralFunction the translations list\n */\nconst register = (appId, translations, pluralFunction) => {\n\twindow._oc_l10n_registry_translations[appId] = translations\n\twindow._oc_l10n_registry_plural_functions[appId] = pluralFunction\n}\n\n/**\n * @param {string} appId the app id\n * @param {object} translations the translations list\n * @param {Function} pluralFunction the translations list\n */\nconst extend = (appId, translations, pluralFunction) => {\n\twindow._oc_l10n_registry_translations[appId] = Object.assign(\n\t\twindow._oc_l10n_registry_translations[appId],\n\t\ttranslations\n\t)\n\twindow._oc_l10n_registry_plural_functions[appId] = pluralFunction\n}\n\n/**\n * @param {string} appId the app id\n * @param {object} translations the translations list\n * @param {Function} pluralFunction the translations list\n */\nexport const registerAppTranslations = (appId, translations, pluralFunction) => {\n\tif (!hasAppTranslations(appId)) {\n\t\tregister(appId, translations, pluralFunction)\n\t} else {\n\t\textend(appId, translations, pluralFunction)\n\t}\n}\n\n/**\n * @param {string} appId the app id\n */\nexport const unregisterAppTranslations = appId => {\n\tdelete window._oc_l10n_registry_translations[appId]\n\tdelete window._oc_l10n_registry_plural_functions[appId]\n}\n\n/**\n * @param {string} appId the app id\n * @return {boolean}\n */\nexport const hasAppTranslations = appId => {\n\treturn window._oc_l10n_registry_translations[appId] !== undefined\n\t\t&& window._oc_l10n_registry_plural_functions[appId] !== undefined\n}\n\n/**\n * @param {string} appId the app id\n * @return {object}\n */\nexport const getAppTranslations = appId => {\n\treturn {\n\t\ttranslations: window._oc_l10n_registry_translations[appId] || {},\n\t\tpluralFunction: window._oc_l10n_registry_plural_functions[appId],\n\t}\n}\n","/**\n * Copyright (c) 2014 Vincent Petry <pvince81@owncloud.com>\n * Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)\n * Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Kesselberg <mail@danielkesselberg.de>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Morris Jobke <hey@morrisjobke.de>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport DOMPurify from 'dompurify'\nimport Handlebars from 'handlebars'\nimport identity from 'lodash/fp/identity'\nimport escapeHTML from 'escape-html'\nimport { generateFilePath } from '@nextcloud/router'\n\nimport OC from './index'\nimport {\n\tgetAppTranslations,\n\thasAppTranslations,\n\tregisterAppTranslations,\n\tunregisterAppTranslations,\n} from './l10n-registry'\n\n/**\n * L10N namespace with localization functions.\n *\n * @namespace OC.L10n\n */\nconst L10n = {\n\n\t/**\n\t * Load an app's translation bundle if not loaded already.\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Function} callback callback to be called when\n\t * the translations are loaded\n\t * @return {Promise} promise\n\t */\n\tload(appName, callback) {\n\t\t// already available ?\n\t\tif (hasAppTranslations(appName) || OC.getLocale() === 'en') {\n\t\t\tconst deferred = $.Deferred()\n\t\t\tconst promise = deferred.promise()\n\t\t\tpromise.then(callback)\n\t\t\tdeferred.resolve()\n\t\t\treturn promise\n\t\t}\n\n\t\tconst self = this\n\t\tconst url = generateFilePath(appName, 'l10n', OC.getLocale() + '.json')\n\n\t\t// load JSON translation bundle per AJAX\n\t\treturn $.get(url)\n\t\t\t.then(\n\t\t\t\tfunction(result) {\n\t\t\t\t\tif (result.translations) {\n\t\t\t\t\t\tself.register(appName, result.translations, result.pluralForm)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t.then(callback)\n\t},\n\n\t/**\n\t * Register an app's translation bundle.\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Object<string, string>} bundle bundle\n\t */\n\tregister(appName, bundle) {\n\t\tregisterAppTranslations(appName, bundle, this._getPlural)\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_unregister: unregisterAppTranslations,\n\n\t/**\n\t * Translate a string\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} text the string to translate\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {number} [count] number to replace %n with\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @param {boolean} [options.sanitize=true] enable/disable sanitization (by default enabled)\n\t * @return {string}\n\t */\n\ttranslate(app, text, vars, count, options) {\n\t\tconst defaultOptions = {\n\t\t\tescape: true,\n\t\t\tsanitize: true,\n\t\t}\n\t\tconst allOptions = options || {}\n\t\t_.defaults(allOptions, defaultOptions)\n\n\t\tconst optSanitize = allOptions.sanitize ? DOMPurify.sanitize : identity\n\t\tconst optEscape = allOptions.escape ? escapeHTML : identity\n\n\t\t// TODO: cache this function to avoid inline recreation\n\t\t// of the same function over and over again in case\n\t\t// translate() is used in a loop\n\t\tconst _build = function(text, vars, count) {\n\t\t\treturn text.replace(/%n/g, count).replace(/{([^{}]*)}/g,\n\t\t\t\tfunction(a, b) {\n\t\t\t\t\tconst r = vars[b]\n\t\t\t\t\tif (typeof r === 'string' || typeof r === 'number') {\n\t\t\t\t\t\treturn optSanitize(optEscape(r))\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn optSanitize(a)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t)\n\t\t}\n\t\tlet translation = text\n\t\tconst bundle = getAppTranslations(app)\n\t\tconst value = bundle.translations[text]\n\t\tif (typeof (value) !== 'undefined') {\n\t\t\ttranslation = value\n\t\t}\n\n\t\tif (typeof vars === 'object' || count !== undefined) {\n\t\t\treturn optSanitize(_build(translation, vars, count))\n\t\t} else {\n\t\t\treturn optSanitize(translation)\n\t\t}\n\t},\n\n\t/**\n\t * Translate a plural string\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} textSingular the string to translate for exactly one object\n\t * @param {string} textPlural the string to translate for n objects\n\t * @param {number} count number to determine whether to use singular or plural\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @return {string} Translated string\n\t */\n\ttranslatePlural(app, textSingular, textPlural, count, vars, options) {\n\t\tconst identifier = '_' + textSingular + '_::_' + textPlural + '_'\n\t\tconst bundle = getAppTranslations(app)\n\t\tconst value = bundle.translations[identifier]\n\t\tif (typeof (value) !== 'undefined') {\n\t\t\tconst translation = value\n\t\t\tif ($.isArray(translation)) {\n\t\t\t\tconst plural = bundle.pluralFunction(count)\n\t\t\t\treturn this.translate(app, translation[plural], vars, count, options)\n\t\t\t}\n\t\t}\n\n\t\tif (count === 1) {\n\t\t\treturn this.translate(app, textSingular, vars, count, options)\n\t\t} else {\n\t\t\treturn this.translate(app, textPlural, vars, count, options)\n\t\t}\n\t},\n\n\t/**\n\t * The plural function taken from symfony\n\t *\n\t * @param {number} number the number of elements\n\t * @return {number}\n\t * @private\n\t */\n\t_getPlural(number) {\n\t\tlet language = OC.getLanguage()\n\t\tif (language === 'pt-BR') {\n\t\t\t// temporary set a locale for brazilian\n\t\t\tlanguage = 'xbr'\n\t\t}\n\n\t\tif (typeof language === 'undefined' || language === '') {\n\t\t\treturn (number === 1) ? 0 : 1\n\t\t}\n\n\t\tif (language.length > 3) {\n\t\t\tlanguage = language.substring(0, language.lastIndexOf('-'))\n\t\t}\n\n\t\t/*\n\t\t * The plural rules are derived from code of the Zend Framework (2010-09-25),\n\t\t * which is subject to the new BSD license (http://framework.zend.com/license/new-bsd).\n\t\t * Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)\n\t\t */\n\t\tswitch (language) {\n\t\tcase 'az':\n\t\tcase 'bo':\n\t\tcase 'dz':\n\t\tcase 'id':\n\t\tcase 'ja':\n\t\tcase 'jv':\n\t\tcase 'ka':\n\t\tcase 'km':\n\t\tcase 'kn':\n\t\tcase 'ko':\n\t\tcase 'ms':\n\t\tcase 'th':\n\t\tcase 'tr':\n\t\tcase 'vi':\n\t\tcase 'zh':\n\t\t\treturn 0\n\n\t\tcase 'af':\n\t\tcase 'bn':\n\t\tcase 'bg':\n\t\tcase 'ca':\n\t\tcase 'da':\n\t\tcase 'de':\n\t\tcase 'el':\n\t\tcase 'en':\n\t\tcase 'eo':\n\t\tcase 'es':\n\t\tcase 'et':\n\t\tcase 'eu':\n\t\tcase 'fa':\n\t\tcase 'fi':\n\t\tcase 'fo':\n\t\tcase 'fur':\n\t\tcase 'fy':\n\t\tcase 'gl':\n\t\tcase 'gu':\n\t\tcase 'ha':\n\t\tcase 'he':\n\t\tcase 'hu':\n\t\tcase 'is':\n\t\tcase 'it':\n\t\tcase 'ku':\n\t\tcase 'lb':\n\t\tcase 'ml':\n\t\tcase 'mn':\n\t\tcase 'mr':\n\t\tcase 'nah':\n\t\tcase 'nb':\n\t\tcase 'ne':\n\t\tcase 'nl':\n\t\tcase 'nn':\n\t\tcase 'no':\n\t\tcase 'oc':\n\t\tcase 'om':\n\t\tcase 'or':\n\t\tcase 'pa':\n\t\tcase 'pap':\n\t\tcase 'ps':\n\t\tcase 'pt':\n\t\tcase 'so':\n\t\tcase 'sq':\n\t\tcase 'sv':\n\t\tcase 'sw':\n\t\tcase 'ta':\n\t\tcase 'te':\n\t\tcase 'tk':\n\t\tcase 'ur':\n\t\tcase 'zu':\n\t\t\treturn (number === 1) ? 0 : 1\n\n\t\tcase 'am':\n\t\tcase 'bh':\n\t\tcase 'fil':\n\t\tcase 'fr':\n\t\tcase 'gun':\n\t\tcase 'hi':\n\t\tcase 'hy':\n\t\tcase 'ln':\n\t\tcase 'mg':\n\t\tcase 'nso':\n\t\tcase 'xbr':\n\t\tcase 'ti':\n\t\tcase 'wa':\n\t\t\treturn ((number === 0) || (number === 1)) ? 0 : 1\n\n\t\tcase 'be':\n\t\tcase 'bs':\n\t\tcase 'hr':\n\t\tcase 'ru':\n\t\tcase 'sh':\n\t\tcase 'sr':\n\t\tcase 'uk':\n\t\t\treturn ((number % 10 === 1) && (number % 100 !== 11)) ? 0 : (((number % 10 >= 2) && (number % 10 <= 4) && ((number % 100 < 10) || (number % 100 >= 20))) ? 1 : 2)\n\n\t\tcase 'cs':\n\t\tcase 'sk':\n\t\t\treturn (number === 1) ? 0 : (((number >= 2) && (number <= 4)) ? 1 : 2)\n\n\t\tcase 'ga':\n\t\t\treturn (number === 1) ? 0 : ((number === 2) ? 1 : 2)\n\n\t\tcase 'lt':\n\t\t\treturn ((number % 10 === 1) && (number % 100 !== 11)) ? 0 : (((number % 10 >= 2) && ((number % 100 < 10) || (number % 100 >= 20))) ? 1 : 2)\n\n\t\tcase 'sl':\n\t\t\treturn (number % 100 === 1) ? 0 : ((number % 100 === 2) ? 1 : (((number % 100 === 3) || (number % 100 === 4)) ? 2 : 3))\n\n\t\tcase 'mk':\n\t\t\treturn (number % 10 === 1) ? 0 : 1\n\n\t\tcase 'mt':\n\t\t\treturn (number === 1) ? 0 : (((number === 0) || ((number % 100 > 1) && (number % 100 < 11))) ? 1 : (((number % 100 > 10) && (number % 100 < 20)) ? 2 : 3))\n\n\t\tcase 'lv':\n\t\t\treturn (number === 0) ? 0 : (((number % 10 === 1) && (number % 100 !== 11)) ? 1 : 2)\n\n\t\tcase 'pl':\n\t\t\treturn (number === 1) ? 0 : (((number % 10 >= 2) && (number % 10 <= 4) && ((number % 100 < 12) || (number % 100 > 14))) ? 1 : 2)\n\n\t\tcase 'cy':\n\t\t\treturn (number === 1) ? 0 : ((number === 2) ? 1 : (((number === 8) || (number === 11)) ? 2 : 3))\n\n\t\tcase 'ro':\n\t\t\treturn (number === 1) ? 0 : (((number === 0) || ((number % 100 > 0) && (number % 100 < 20))) ? 1 : 2)\n\n\t\tcase 'ar':\n\t\t\treturn (number === 0) ? 0 : ((number === 1) ? 1 : ((number === 2) ? 2 : (((number % 100 >= 3) && (number % 100 <= 10)) ? 3 : (((number % 100 >= 11) && (number % 100 <= 99)) ? 4 : 5))))\n\n\t\tdefault:\n\t\t\treturn 0\n\t\t}\n\t},\n}\n\nexport default L10n\n\n/**\n * Returns the user's locale\n *\n * @return {string} locale string\n */\nexport const getLocale = () => $('html').data('locale') ?? 'en'\n\n/**\n * Returns the user's language\n *\n * @return {string} language string\n */\nexport const getLanguage = () => $('html').prop('lang')\n\nHandlebars.registerHelper('t', function(app, text) {\n\treturn L10n.translate(app, text)\n})\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author rakekniven <mark.ziegler@rakekniven.de>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n/**\n * A little class to manage a status field for a \"saving\" process.\n * It can be used to display a starting message (e.g. \"Saving...\") and then\n * replace it with a green success message or a red error message.\n *\n * @namespace OC.msg\n */\nexport default {\n\t/**\n\t * Displayes a \"Saving...\" message in the given message placeholder\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t */\n\tstartSaving(selector) {\n\t\tthis.startAction(selector, t('core', 'Saving …'))\n\t},\n\n\t/**\n\t * Displayes a custom message in the given message placeholder\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text message to display (no HTML allowed)\n\t */\n\tstartAction(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.removeClass('success')\n\t\t\t.removeClass('error')\n\t\t\t.stop(true, true)\n\t\t\t.show()\n\t},\n\n\t/**\n\t * Displayes an success/error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {object} response Response of the server\n\t * @param {object} response.data Data of the servers response\n\t * @param {string} response.data.message Plain text message to display (no HTML allowed)\n\t * @param {string} response.status is being used to decide whether the message\n\t * is displayed as an error/success\n\t */\n\tfinishedSaving(selector, response) {\n\t\tthis.finishedAction(selector, response)\n\t},\n\n\t/**\n\t * Displayes an success/error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {object} response Response of the server\n\t * @param {object} response.data Data of the servers response\n\t * @param {string} response.data.message Plain text message to display (no HTML allowed)\n\t * @param {string} response.status is being used to decide whether the message\n\t * is displayed as an error/success\n\t */\n\tfinishedAction(selector, response) {\n\t\tif (response.status === 'success') {\n\t\t\tthis.finishedSuccess(selector, response.data.message)\n\t\t} else {\n\t\t\tthis.finishedError(selector, response.data.message)\n\t\t}\n\t},\n\n\t/**\n\t * Displayes an success message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text success message to display (no HTML allowed)\n\t */\n\tfinishedSuccess(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.addClass('success')\n\t\t\t.removeClass('error')\n\t\t\t.stop(true, true)\n\t\t\t.delay(3000)\n\t\t\t.fadeOut(900)\n\t\t\t.show()\n\t},\n\n\t/**\n\t * Displayes an error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text error message to display (no HTML allowed)\n\t */\n\tfinishedError(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.addClass('error')\n\t\t\t.removeClass('success')\n\t\t\t.show()\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\nimport $ from 'jquery'\nimport moment from 'moment'\nimport { generateUrl } from '@nextcloud/router'\n\nimport OC from './index'\n\n/**\n * @namespace OC.PasswordConfirmation\n */\nexport default {\n\tcallback: null,\n\n\tpageLoadTime: null,\n\n\tinit() {\n\t\t$('.password-confirm-required').on('click', _.bind(this.requirePasswordConfirmation, this))\n\t\tthis.pageLoadTime = moment.now()\n\t},\n\n\trequiresPasswordConfirmation() {\n\t\tconst serverTimeDiff = this.pageLoadTime - (window.nc_pageLoad * 1000)\n\t\tconst timeSinceLogin = moment.now() - (serverTimeDiff + (window.nc_lastLogin * 1000))\n\n\t\t// if timeSinceLogin > 30 minutes and user backend allows password confirmation\n\t\treturn (window.backendAllowsPasswordConfirmation && timeSinceLogin > 30 * 60 * 1000)\n\t},\n\n\t/**\n\t * @param {Function} callback success callback function\n\t * @param {object} options options\n\t * @param {Function} rejectCallback error callback function\n\t */\n\trequirePasswordConfirmation(callback, options, rejectCallback) {\n\t\toptions = typeof options !== 'undefined' ? options : {}\n\t\tconst defaults = {\n\t\t\ttitle: t('core', 'Authentication required'),\n\t\t\ttext: t(\n\t\t\t\t'core',\n\t\t\t\t'This action requires you to confirm your password'\n\t\t\t),\n\t\t\tconfirm: t('core', 'Confirm'),\n\t\t\tlabel: t('core', 'Password'),\n\t\t\terror: '',\n\t\t}\n\n\t\tconst config = _.extend(defaults, options)\n\n\t\tconst self = this\n\n\t\tif (this.requiresPasswordConfirmation()) {\n\t\t\tOC.dialogs.prompt(\n\t\t\t\tconfig.text,\n\t\t\t\tconfig.title,\n\t\t\t\tfunction(result, password) {\n\t\t\t\t\tif (result && password !== '') {\n\t\t\t\t\t\tself._confirmPassword(password, config)\n\t\t\t\t\t} else if (_.isFunction(rejectCallback)) {\n\t\t\t\t\t\trejectCallback()\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\ttrue,\n\t\t\t\tconfig.label,\n\t\t\t\ttrue\n\t\t\t).then(function() {\n\t\t\t\tconst $dialog = $('.oc-dialog:visible')\n\t\t\t\t$dialog.find('.ui-icon').remove()\n\t\t\t\t$dialog.addClass('password-confirmation')\n\t\t\t\tif (config.error !== '') {\n\t\t\t\t\tconst $error = $('<p></p>').addClass('msg warning').text(config.error)\n\t\t\t\t\t$dialog.find('.oc-dialog-content').append($error)\n\t\t\t\t}\n\t\t\t\t$dialog.find('.oc-dialog-buttonrow').addClass('aside')\n\n\t\t\t\tconst $buttons = $dialog.find('button')\n\t\t\t\t$buttons.eq(0).hide()\n\t\t\t\t$buttons.eq(1).text(config.confirm)\n\t\t\t})\n\t\t}\n\n\t\tthis.callback = callback\n\t},\n\n\t_confirmPassword(password, config) {\n\t\tconst self = this\n\n\t\t$.ajax({\n\t\t\turl: generateUrl('/login/confirm'),\n\t\t\tdata: {\n\t\t\t\tpassword,\n\t\t\t},\n\t\t\ttype: 'POST',\n\t\t\tsuccess(response) {\n\t\t\t\twindow.nc_lastLogin = response.lastLogin\n\n\t\t\t\tif (_.isFunction(self.callback)) {\n\t\t\t\t\tself.callback()\n\t\t\t\t}\n\t\t\t},\n\t\t\terror() {\n\t\t\t\tconfig.error = t('core', 'Failed to authenticate, try again')\n\t\t\t\tOC.PasswordConfirmation.requirePasswordConfirmation(self.callback, config)\n\t\t\t},\n\t\t})\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const theme = window._theme || {}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport _ from 'underscore'\nimport OC from './index'\n\n/**\n * Utility class for the history API,\n * includes fallback to using the URL hash when\n * the browser doesn't support the history API.\n *\n * @namespace OC.Util.History\n */\nexport default {\n\n\t_handlers: [],\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t * @param {boolean} [replace=false] whether to replace instead of pushing\n\t */\n\t_pushState(params, url, replace) {\n\t\tlet strParams\n\t\tif (typeof (params) === 'string') {\n\t\t\tstrParams = params\n\t\t} else {\n\t\t\tstrParams = OC.buildQueryString(params)\n\t\t}\n\n\t\tif (window.history.pushState) {\n\t\t\turl = url || location.pathname + '?' + strParams\n\t\t\t// Workaround for bug with SVG and window.history.pushState on Firefox < 51\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=652991\n\t\t\tconst isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1\n\t\t\tif (isFirefox && parseInt(navigator.userAgent.split('/').pop()) < 51) {\n\t\t\t\tconst patterns = document.querySelectorAll('[fill^=\"url(#\"], [stroke^=\"url(#\"], [filter^=\"url(#invert\"]')\n\t\t\t\tfor (let i = 0, ii = patterns.length, pattern; i < ii; i++) {\n\t\t\t\t\tpattern = patterns[i]\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.fill = pattern.style.fill\n\t\t\t\t\t// eslint-disable-next-line no-self-assign\n\t\t\t\t\tpattern.style.stroke = pattern.style.stroke\n\t\t\t\t\tpattern.removeAttribute('filter')\n\t\t\t\t\tpattern.setAttribute('filter', 'url(#invert)')\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (replace) {\n\t\t\t\twindow.history.replaceState(params, '', url)\n\t\t\t} else {\n\t\t\t\twindow.history.pushState(params, '', url)\n\t\t\t}\n\t\t} else {\n\t\t\t// use URL hash for IE8\n\t\t\twindow.location.hash = '?' + strParams\n\t\t\t// inhibit next onhashchange that just added itself\n\t\t\t// to the event queue\n\t\t\tthis._cancelPop = true\n\t\t}\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used, using the params as query string\n\t */\n\tpushState(params, url) {\n\t\tthis._pushState(params, url, false)\n\t},\n\n\t/**\n\t * Push the current URL parameters to the history stack\n\t * and change the visible URL.\n\t * Note: this includes a workaround for IE8/IE9 that uses\n\t * the hash part instead of the search part.\n\t *\n\t * @param {object | string} params to append to the URL, can be either a string\n\t * or a map\n\t * @param {string} [url] URL to be used, otherwise the current URL will be used,\n\t * using the params as query string\n\t */\n\treplaceState(params, url) {\n\t\tthis._pushState(params, url, true)\n\t},\n\n\t/**\n\t * Add a popstate handler\n\t *\n\t * @param {Function} handler handler\n\t */\n\taddOnPopStateHandler(handler) {\n\t\tthis._handlers.push(handler)\n\t},\n\n\t/**\n\t * Parse a query string from the hash part of the URL.\n\t * (workaround for IE8 / IE9)\n\t *\n\t * @return {string}\n\t */\n\t_parseHashQuery() {\n\t\tconst hash = window.location.hash\n\t\tconst pos = hash.indexOf('?')\n\t\tif (pos >= 0) {\n\t\t\treturn hash.substr(pos + 1)\n\t\t}\n\t\tif (hash.length) {\n\t\t\t// remove hash sign\n\t\t\treturn hash.substr(1)\n\t\t}\n\t\treturn ''\n\t},\n\n\t_decodeQuery(query) {\n\t\treturn query.replace(/\\+/g, ' ')\n\t},\n\n\t/**\n\t * Parse the query/search part of the URL.\n\t * Also try and parse it from the URL hash (for IE8)\n\t *\n\t * @return {object} map of parameters\n\t */\n\tparseUrlQuery() {\n\t\tconst query = this._parseHashQuery()\n\t\tlet params\n\t\t// try and parse from URL hash first\n\t\tif (query) {\n\t\t\tparams = OC.parseQueryString(this._decodeQuery(query))\n\t\t}\n\t\t// else read from query attributes\n\t\tparams = _.extend(params || {}, OC.parseQueryString(this._decodeQuery(location.search)))\n\t\treturn params || {}\n\t},\n\n\t_onPopState(e) {\n\t\tif (this._cancelPop) {\n\t\t\tthis._cancelPop = false\n\t\t\treturn\n\t\t}\n\t\tlet params\n\t\tif (!this._handlers.length) {\n\t\t\treturn\n\t\t}\n\t\tparams = (e && e.state)\n\t\tif (_.isString(params)) {\n\t\t\tparams = OC.parseQueryString(params)\n\t\t} else if (!params) {\n\t\t\tparams = this.parseUrlQuery() || {}\n\t\t}\n\t\tfor (let i = 0; i < this._handlers.length; i++) {\n\t\t\tthis._handlers[i](params)\n\t\t}\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport moment from 'moment'\n\nimport History from './util-history'\nimport OC from './index'\nimport { formatFileSize as humanFileSize } from '@nextcloud/files'\n\n/**\n * @param {any} t -\n */\nfunction chunkify(t) {\n\t// Adapted from http://my.opera.com/GreyWyvern/blog/show.dml/1671288\n\tconst tz = []\n\tlet x = 0\n\tlet y = -1\n\tlet n = 0\n\tlet c\n\n\twhile (x < t.length) {\n\t\tc = t.charAt(x)\n\t\t// only include the dot in strings\n\t\tconst m = ((!n && c === '.') || (c >= '0' && c <= '9'))\n\t\tif (m !== n) {\n\t\t\t// next chunk\n\t\t\ty++\n\t\t\ttz[y] = ''\n\t\t\tn = m\n\t\t}\n\t\ttz[y] += c\n\t\tx++\n\t}\n\treturn tz\n}\n\n/**\n * Utility functions\n *\n * @namespace OC.Util\n */\nexport default {\n\n\tHistory,\n\n\t/**\n\t * @deprecated use https://nextcloud.github.io/nextcloud-files/modules/_humanfilesize_.html#formatfilesize\n\t */\n\thumanFileSize,\n\n\t/**\n\t * Returns a file size in bytes from a humanly readable string\n\t * Makes 2kB to 2048.\n\t * Inspired by computerFileSize in helper.php\n\t *\n\t * @param {string} string file size in human readable format\n\t * @return {number} or null if string could not be parsed\n\t *\n\t *\n\t */\n\tcomputerFileSize(string) {\n\t\tif (typeof string !== 'string') {\n\t\t\treturn null\n\t\t}\n\n\t\tconst s = string.toLowerCase().trim()\n\t\tlet bytes = null\n\n\t\tconst bytesArray = {\n\t\t\tb: 1,\n\t\t\tk: 1024,\n\t\t\tkb: 1024,\n\t\t\tmb: 1024 * 1024,\n\t\t\tm: 1024 * 1024,\n\t\t\tgb: 1024 * 1024 * 1024,\n\t\t\tg: 1024 * 1024 * 1024,\n\t\t\ttb: 1024 * 1024 * 1024 * 1024,\n\t\t\tt: 1024 * 1024 * 1024 * 1024,\n\t\t\tpb: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t\tp: 1024 * 1024 * 1024 * 1024 * 1024,\n\t\t}\n\n\t\tconst matches = s.match(/^[\\s+]?([0-9]*)(\\.([0-9]+))?( +)?([kmgtp]?b?)$/i)\n\t\tif (matches !== null) {\n\t\t\tbytes = parseFloat(s)\n\t\t\tif (!isFinite(bytes)) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t} else {\n\t\t\treturn null\n\t\t}\n\t\tif (matches[5]) {\n\t\t\tbytes = bytes * bytesArray[matches[5]]\n\t\t}\n\n\t\tbytes = Math.round(bytes)\n\t\treturn bytes\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @param {string} format date format, see momentjs docs\n\t * @return {string} timestamp formatted as requested\n\t */\n\tformatDate(timestamp, format) {\n\t\tif (window.TESTING === undefined) {\n\t\t\tconsole.warn('OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tformat = format || 'LLL'\n\t\treturn moment(timestamp).format(format)\n\t},\n\n\t/**\n\t * @param {string|number} timestamp timestamp\n\t * @return {string} human readable difference from now\n\t */\n\trelativeModifiedDate(timestamp) {\n\t\tif (window.TESTING === undefined) {\n\t\t\tconsole.warn('OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment')\n\t\t}\n\t\tconst diff = moment().diff(moment(timestamp))\n\t\tif (diff >= 0 && diff < 45000) {\n\t\t\treturn t('core', 'seconds ago')\n\t\t}\n\t\treturn moment(timestamp).fromNow()\n\t},\n\n\t/**\n\t * Returns the width of a generic browser scrollbar\n\t *\n\t * @return {number} width of scrollbar\n\t */\n\tgetScrollBarWidth() {\n\t\tif (this._scrollBarWidth) {\n\t\t\treturn this._scrollBarWidth\n\t\t}\n\n\t\tconst inner = document.createElement('p')\n\t\tinner.style.width = '100%'\n\t\tinner.style.height = '200px'\n\n\t\tconst outer = document.createElement('div')\n\t\touter.style.position = 'absolute'\n\t\touter.style.top = '0px'\n\t\touter.style.left = '0px'\n\t\touter.style.visibility = 'hidden'\n\t\touter.style.width = '200px'\n\t\touter.style.height = '150px'\n\t\touter.style.overflow = 'hidden'\n\t\touter.appendChild(inner)\n\n\t\tdocument.body.appendChild(outer)\n\t\tconst w1 = inner.offsetWidth\n\t\touter.style.overflow = 'scroll'\n\t\tlet w2 = inner.offsetWidth\n\t\tif (w1 === w2) {\n\t\t\tw2 = outer.clientWidth\n\t\t}\n\n\t\tdocument.body.removeChild(outer)\n\n\t\tthis._scrollBarWidth = (w1 - w2)\n\n\t\treturn this._scrollBarWidth\n\t},\n\n\t/**\n\t * Remove the time component from a given date\n\t *\n\t * @param {Date} date date\n\t * @return {Date} date with stripped time\n\t */\n\tstripTime(date) {\n\t\t// FIXME: likely to break when crossing DST\n\t\t// would be better to use a library like momentJS\n\t\treturn new Date(date.getFullYear(), date.getMonth(), date.getDate())\n\t},\n\n\t/**\n\t * Compare two strings to provide a natural sort\n\t *\n\t * @param {string} a first string to compare\n\t * @param {string} b second string to compare\n\t * @return {number} -1 if b comes before a, 1 if a comes before b\n\t * or 0 if the strings are identical\n\t */\n\tnaturalSortCompare(a, b) {\n\t\tlet x\n\t\tconst aa = chunkify(a)\n\t\tconst bb = chunkify(b)\n\n\t\tfor (x = 0; aa[x] && bb[x]; x++) {\n\t\t\tif (aa[x] !== bb[x]) {\n\t\t\t\tconst aNum = Number(aa[x]); const bNum = Number(bb[x])\n\t\t\t\t// note: == is correct here\n\t\t\t\t/* eslint-disable-next-line */\n\t\t\t\tif (aNum == aa[x] && bNum == bb[x]) {\n\t\t\t\t\treturn aNum - bNum\n\t\t\t\t} else {\n\t\t\t\t\t// Note: This locale setting isn't supported by all browsers but for the ones\n\t\t\t\t\t// that do there will be more consistency between client-server sorting\n\t\t\t\t\treturn aa[x].localeCompare(bb[x], OC.getLanguage())\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn aa.length - bb.length\n\t},\n\n\t/**\n\t * Calls the callback in a given interval until it returns true\n\t *\n\t * @param {Function} callback function to call on success\n\t * @param {number} interval in milliseconds\n\t */\n\twaitFor(callback, interval) {\n\t\tconst internalCallback = function() {\n\t\t\tif (callback() !== true) {\n\t\t\t\tsetTimeout(internalCallback, interval)\n\t\t\t}\n\t\t}\n\n\t\tinternalCallback()\n\t},\n\n\t/**\n\t * Checks if a cookie with the given name is present and is set to the provided value.\n\t *\n\t * @param {string} name name of the cookie\n\t * @param {string} value value of the cookie\n\t * @return {boolean} true if the cookie with the given name has the given value\n\t */\n\tisCookieSetToValue(name, value) {\n\t\tconst cookies = document.cookie.split(';')\n\t\tfor (let i = 0; i < cookies.length; i++) {\n\t\t\tconst cookie = cookies[i].split('=')\n\t\t\tif (cookie[0].trim() === name && cookie[1].trim() === value) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst base = window._oc_debug\n\nexport const debug = base\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nlet webroot = window._oc_webroot\n\nif (typeof webroot === 'undefined') {\n\twebroot = location.pathname\n\tconst pos = webroot.indexOf('/index.php/')\n\tif (pos !== -1) {\n\t\twebroot = webroot.substr(0, pos)\n\t} else {\n\t\twebroot = webroot.substr(0, webroot.lastIndexOf('/'))\n\t}\n}\n\nexport default webroot\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const get = context => name => {\n\tconst namespaces = name.split('.')\n\tconst tail = namespaces.pop()\n\n\tfor (let i = 0; i < namespaces.length; i++) {\n\t\tcontext = context[namespaces[i]]\n\t\tif (!context) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn context[tail]\n}\n\n/**\n * Set a variable by name\n *\n * @param {string} context context\n * @return {Function} setter\n * @deprecated 19.0.0 use https://lodash.com/docs#set\n */\nexport const set = context => (name, value) => {\n\tconst namespaces = name.split('.')\n\tconst tail = namespaces.pop()\n\n\tfor (let i = 0; i < namespaces.length; i++) {\n\t\tif (!context[namespaces[i]]) {\n\t\t\tcontext[namespaces[i]] = {}\n\t\t}\n\t\tcontext = context[namespaces[i]]\n\t}\n\tcontext[tail] = value\n\treturn value\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { subscribe } from '@nextcloud/event-bus'\n\nimport { addScript, addStyle } from './legacy-loader'\nimport {\n\tajaxConnectionLostHandler,\n\tprocessAjaxError,\n\tregisterXHRForErrorProcessing,\n} from './xhr-error'\nimport Apps from './apps'\nimport { AppConfig, appConfig } from './appconfig'\nimport { appSettings } from './appsettings'\nimport appswebroots from './appswebroots'\nimport Backbone from './backbone'\nimport {\n\tbasename,\n\tdirname,\n\tencodePath,\n\tisSamePath,\n\tjoinPaths,\n} from '@nextcloud/paths'\nimport {\n\tbuild as buildQueryString,\n\tparse as parseQueryString,\n} from './query-string'\nimport Config from './config'\nimport {\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n} from './constants'\nimport ContactsMenu from './contactsmenu'\nimport { currentUser, getCurrentUser } from './currentuser'\nimport Dialogs from './dialogs'\nimport EventSource from './eventsource'\nimport { get, set } from './get_set'\nimport { getCapabilities } from './capabilities'\nimport {\n\tgetHost,\n\tgetHostName,\n\tgetPort,\n\tgetProtocol,\n} from './host'\nimport {\n\tgetToken as getRequestToken,\n} from './requesttoken'\nimport {\n\thideMenus,\n\tregisterMenu,\n\tshowMenu,\n\tunregisterMenu,\n} from './menu'\nimport { isUserAdmin } from './admin'\nimport L10N, {\n\tgetLanguage,\n\tgetLocale,\n} from './l10n'\nimport {\n\tgetCanonicalLocale,\n} from '@nextcloud/l10n'\n\nimport {\n\tgenerateUrl,\n\tgenerateFilePath,\n\tgenerateOcsUrl,\n\tgenerateRemoteUrl,\n\tgetRootUrl,\n\timagePath,\n\tlinkTo,\n} from '@nextcloud/router'\n\nimport {\n\tlinkToRemoteBase,\n} from './routing'\nimport msg from './msg'\nimport Notification from './notification'\nimport PasswordConfirmation from './password-confirmation'\nimport Plugins from './plugins'\nimport { theme } from './theme'\nimport Util from './util'\nimport { debug } from './debug'\nimport { redirect, reload } from './navigation'\nimport webroot from './webroot'\n\n/** @namespace OC */\nexport default {\n\t/*\n\t * Constants\n\t */\n\tcoreApps,\n\tmenuSpeed,\n\tPERMISSION_ALL,\n\tPERMISSION_CREATE,\n\tPERMISSION_DELETE,\n\tPERMISSION_NONE,\n\tPERMISSION_READ,\n\tPERMISSION_SHARE,\n\tPERMISSION_UPDATE,\n\tTAG_FAVORITE,\n\n\t/*\n\t * Deprecated helpers to be removed\n\t */\n\t/**\n\t * Check if a user file is allowed to be handled.\n\t *\n\t * @param {string} file to check\n\t * @return {boolean}\n\t * @deprecated 17.0.0\n\t */\n\tfileIsBlacklisted: file => !!(file.match(Config.blacklist_files_regex)),\n\n\taddScript,\n\taddStyle,\n\tApps,\n\tAppConfig,\n\tappConfig,\n\tappSettings,\n\tappswebroots,\n\tBackbone,\n\tContactsMenu,\n\tconfig: Config,\n\t/**\n\t * Currently logged in user or null if none\n\t *\n\t * @type {string}\n\t * @deprecated use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tcurrentUser,\n\tdialogs: Dialogs,\n\tEventSource,\n\t/**\n\t * Returns the currently logged in user or null if there is no logged in\n\t * user (public page mode)\n\t *\n\t * @since 9.0.0\n\t * @deprecated 19.0.0 use `getCurrentUser` from https://www.npmjs.com/package/@nextcloud/auth\n\t */\n\tgetCurrentUser,\n\tisUserAdmin,\n\tL10N,\n\n\t/**\n\t * Ajax error handlers\n\t *\n\t * @todo remove from here and keep internally -> requires new tests\n\t */\n\t_ajaxConnectionLostHandler: ajaxConnectionLostHandler,\n\t_processAjaxError: processAjaxError,\n\tregisterXHRForErrorProcessing,\n\n\t/**\n\t * Capabilities\n\t *\n\t * @type {Array}\n\t * @deprecated 20.0.0 use @nextcloud/capabilities instead\n\t */\n\tgetCapabilities,\n\n\t/*\n\t * Legacy menu helpers\n\t */\n\thideMenus,\n\tregisterMenu,\n\tshowMenu,\n\tunregisterMenu,\n\n\t/*\n\t * Path helpers\n\t */\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tbasename,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tencodePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tdirname,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tisSamePath,\n\t/**\n\t * @deprecated 18.0.0 use https://www.npmjs.com/package/@nextcloud/paths\n\t */\n\tjoinPaths,\n\n\t/**\n\t * Host (url) helpers\n\t */\n\tgetHost,\n\tgetHostName,\n\tgetPort,\n\tgetProtocol,\n\n\t/**\n\t * @deprecated 20.0.0 use `getCanonicalLocale` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\tgetCanonicalLocale,\n\tgetLocale,\n\tgetLanguage,\n\t/**\n\t * Loads translations for the given app asynchronously.\n\t *\n\t * @param {string} app app name\n\t * @param {Function} callback callback to call after loading\n\t * @return {Promise}\n\t * @deprecated 17.0.0 use OC.L10N.load instead\n\t */\n\taddTranslations: L10N.load,\n\n\t/**\n\t * Query string helpers\n\t */\n\tbuildQueryString,\n\tparseQueryString,\n\n\tmsg,\n\tNotification,\n\tPasswordConfirmation,\n\tPlugins,\n\ttheme,\n\tUtil,\n\tdebug,\n\t/**\n\t * @deprecated 19.0.0 use `generateFilePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tfilePath: generateFilePath,\n\t/**\n\t * @deprecated 19.0.0 use `generateUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgenerateUrl,\n\t/**\n\t * @deprecated 19.0.0 use https://lodash.com/docs#get\n\t */\n\tget: get(window),\n\t/**\n\t * @deprecated 19.0.0 use https://lodash.com/docs#set\n\t */\n\tset: set(window),\n\t/**\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tgetRootPath: getRootUrl,\n\t/**\n\t * @deprecated 19.0.0 use `imagePath` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\timagePath,\n\tredirect,\n\treload,\n\trequestToken: getRequestToken(),\n\t/**\n\t * @deprecated 19.0.0 use `linkTo` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkTo,\n\t/**\n\t * @param {string} service service name\n\t * @param {number} version OCS API version\n\t * @return {string} OCS API base path\n\t * @deprecated 19.0.0 use `generateOcsUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToOCS: (service, version) => {\n\t\treturn generateOcsUrl(service, {}, {\n\t\t\tocsVersion: version || 1,\n\t\t}) + '/'\n\t},\n\t/**\n\t * @deprecated 19.0.0 use `generateRemoteUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t */\n\tlinkToRemote: generateRemoteUrl,\n\tlinkToRemoteBase,\n\t/**\n\t * Relative path to Nextcloud root.\n\t * For example: \"/nextcloud\"\n\t *\n\t * @type {string}\n\t *\n\t * @deprecated 19.0.0 use `getRootUrl` from https://www.npmjs.com/package/@nextcloud/router\n\t * @see OC#getRootPath\n\t */\n\twebroot,\n}\n\n// Keep the request token prop in sync\nsubscribe('csrf-token-update', e => {\n\tOC.requestToken = e.token\n\n\t// Logging might help debug (Sentry) issues\n\tconsole.info('OC.requestToken changed', e.token)\n})\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/* eslint-disable */\nimport $ from 'jquery'\nimport { filePath } from './routing'\nimport { generateFilePath } from \"@nextcloud/router\"\n\n/**\n * Opens a popup with the setting for an app.\n * @param {string} appid The ID of the app e.g. 'calendar', 'contacts' or 'files'.\n * @param {boolean|string} loadJS If true 'js/settings.js' is loaded. If it's a string\n * it will attempt to load a script by that name in the 'js' directory.\n * @param {boolean} [cache] If true the javascript file won't be forced refreshed. Defaults to true.\n * @param {string} [scriptName] The name of the PHP file to load. Defaults to 'settings.php' in\n * the root of the app directory hierarchy.\n *\n * @deprecated 17.0.0 this method is unused and will be removed with Nextcloud 18\n */\nexport const appSettings = args => {\n\tconsole.warn('OC.appSettings is deprecated and will be removed with Nextcloud 18')\n\n\tif (typeof args === 'undefined' || typeof args.appid === 'undefined') {\n\t\tthrow {\n\t\t\tname: 'MissingParameter',\n\t\t\tmessage: 'The parameter appid is missing'\n\t\t}\n\t}\n\tvar props = { scriptName: 'settings.php', cache: true }\n\t$.extend(props, args)\n\tvar settings = $('#appsettings')\n\tif (settings.length === 0) {\n\t\tthrow {\n\t\t\tname: 'MissingDOMElement',\n\t\t\tmessage: 'There has be be an element with id \"appsettings\" for the popup to show.'\n\t\t}\n\t}\n\tvar popup = $('#appsettings_popup')\n\tif (popup.length === 0) {\n\t\t$('body').prepend('<div class=\"popup hidden\" id=\"appsettings_popup\"></div>')\n\t\tpopup = $('#appsettings_popup')\n\t\tpopup.addClass(settings.hasClass('topright') ? 'topright' : 'bottomleft')\n\t}\n\tif (popup.is(':visible')) {\n\t\tpopup.hide().remove()\n\t} else {\n\t\tconst arrowclass = settings.hasClass('topright') ? 'up' : 'left'\n\t\t$.get(generateFilePath(props.appid, '', props.scriptName), function(data) {\n\t\t\tpopup.html(data).ready(function() {\n\t\t\t\tpopup.prepend('<span class=\"arrow ' + arrowclass + '\"></span><h2>' + t('core', 'Settings') + '</h2><a class=\"close\"></a>').show()\n\t\t\t\tpopup.find('.close').bind('click', function() {\n\t\t\t\t\tpopup.remove()\n\t\t\t\t})\n\t\t\t\tif (typeof props.loadJS !== 'undefined') {\n\t\t\t\t\tvar scriptname\n\t\t\t\t\tif (props.loadJS === true) {\n\t\t\t\t\t\tscriptname = 'settings.js'\n\t\t\t\t\t} else if (typeof props.loadJS === 'string') {\n\t\t\t\t\t\tscriptname = props.loadJS\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow {\n\t\t\t\t\t\t\tname: 'InvalidParameter',\n\t\t\t\t\t\t\tmessage: 'The \"loadJS\" parameter must be either boolean or a string.'\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (props.cache) {\n\t\t\t\t\t\t$.ajaxSetup({ cache: true })\n\t\t\t\t\t}\n\t\t\t\t\t$.getScript(generateFilePath(props.appid, 'js', scriptname))\n\t\t\t\t\t\t.fail(function(jqxhr, settings, e) {\n\t\t\t\t\t\t\tthrow e\n\t\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}).show()\n\t\t}, 'html')\n\t}\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { getCapabilities as realGetCapabilities } from '@nextcloud/capabilities'\n\n/**\n * Returns the capabilities\n *\n * @return {Array} capabilities\n *\n * @since 14.0.0\n */\nexport const getCapabilities = () => {\n\tconsole.warn('OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities')\n\treturn realGetCapabilities()\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const getProtocol = () => window.location.protocol.split(':')[0]\n\n/**\n * Returns the host used to access this Nextcloud instance\n * Host is sometimes the same as the hostname but now always.\n *\n * Examples:\n * http://example.com => example.com\n * https://example.com => example.com\n * http://example.com:8080 => example.com:8080\n *\n * @return {string} host\n *\n * @since 8.2.0\n * @deprecated 17.0.0 use window.location.host directly\n */\nexport const getHost = () => window.location.host\n\n/**\n * Returns the hostname used to access this Nextcloud instance\n * The hostname is always stripped of the port\n *\n * @return {string} hostname\n * @since 9.0.0\n * @deprecated 17.0.0 use window.location.hostname directly\n */\nexport const getHostName = () => window.location.hostname\n\n/**\n * Returns the port number used to access this Nextcloud instance\n *\n * @return {number} port number\n *\n * @since 8.2.0\n * @deprecated 17.0.0 use window.location.port directly\n */\nexport const getPort = () => window.location.port\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport $ from 'jquery'\n\n/**\n * Parses a URL query string into a JS map\n *\n * @param {string} queryString query string in the format param1=1234¶m2=abcde¶m3=xyz\n * @return {Object<string, string>} map containing key/values matching the URL parameters\n */\nexport const parse = queryString => {\n\tlet pos\n\tlet components\n\tconst result = {}\n\tlet key\n\tif (!queryString) {\n\t\treturn null\n\t}\n\tpos = queryString.indexOf('?')\n\tif (pos >= 0) {\n\t\tqueryString = queryString.substr(pos + 1)\n\t}\n\tconst parts = queryString.replace(/\\+/g, '%20').split('&')\n\tfor (let i = 0; i < parts.length; i++) {\n\t\t// split on first equal sign\n\t\tconst part = parts[i]\n\t\tpos = part.indexOf('=')\n\t\tif (pos >= 0) {\n\t\t\tcomponents = [\n\t\t\t\tpart.substr(0, pos),\n\t\t\t\tpart.substr(pos + 1),\n\t\t\t]\n\t\t} else {\n\t\t\t// key only\n\t\t\tcomponents = [part]\n\t\t}\n\t\tif (!components.length) {\n\t\t\tcontinue\n\t\t}\n\t\tkey = decodeURIComponent(components[0])\n\t\tif (!key) {\n\t\t\tcontinue\n\t\t}\n\t\t// if equal sign was there, return string\n\t\tif (components.length > 1) {\n\t\t\tresult[key] = decodeURIComponent(components[1])\n\t\t} else {\n\t\t\t// no equal sign => null value\n\t\t\tresult[key] = null\n\t\t}\n\t}\n\treturn result\n}\n\n/**\n * Builds a URL query from a JS map.\n *\n * @param {Object<string, string>} params map containing key/values matching the URL parameters\n * @return {string} String containing a URL query (without question) mark\n */\nexport const build = params => {\n\tif (!params) {\n\t\treturn ''\n\t}\n\treturn $.map(params, function(value, key) {\n\t\tlet s = encodeURIComponent(key)\n\t\tif (value !== null && typeof (value) !== 'undefined') {\n\t\t\ts += '=' + encodeURIComponent(value)\n\t\t}\n\t\treturn s\n\t}).join('&')\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default {\n\n\t/**\n\t * @type {Array.<OC.Plugin>}\n\t */\n\t_plugins: {},\n\n\t/**\n\t * Register plugin\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @param {OC.Plugin} plugin plugin\n\t */\n\tregister(targetName, plugin) {\n\t\tlet plugins = this._plugins[targetName]\n\t\tif (!plugins) {\n\t\t\tplugins = this._plugins[targetName] = []\n\t\t}\n\t\tplugins.push(plugin)\n\t},\n\n\t/**\n\t * Returns all plugin registered to the given target\n\t * name / app name / class name.\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @return {Array.<OC.Plugin>} array of plugins\n\t */\n\tgetPlugins(targetName) {\n\t\treturn this._plugins[targetName] || []\n\t},\n\n\t/**\n\t * Call attach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tattach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].attach) {\n\t\t\t\tplugins[i].attach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Call detach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tdetach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].detach) {\n\t\t\t\tplugins[i].detach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const redirect = targetURL => { window.location = targetURL }\n\n/**\n * Reloads the current page\n *\n * @deprecated 17.0.0 use window.location.reload directly\n */\nexport const reload = () => { window.location.reload() }\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport {\n\tgetRootUrl as realGetRootUrl,\n} from '@nextcloud/router'\n\n/**\n * Creates a relative url for remote use\n *\n * @param {string} service id\n * @return {string} the url\n */\nexport const linkToRemoteBase = service => {\n\treturn realGetRootUrl() + '/remote.php/' + service\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"guest-box login-box\"},[(!_vm.hideLoginForm || _vm.directLogin)?_c('div',[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[(!_vm.passwordlessLogin && !_vm.resetPassword && _vm.resetPasswordTarget === '')?_c('div',[_c('LoginForm',{attrs:{\"username\":_vm.user,\"redirect-url\":_vm.redirectUrl,\"direct-login\":_vm.directLogin,\"messages\":_vm.messages,\"errors\":_vm.errors,\"throttle-delay\":_vm.throttleDelay,\"auto-complete-allowed\":_vm.autoCompleteAllowed},on:{\"update:username\":function($event){_vm.user=$event},\"submit\":function($event){_vm.loading = true}}}),_vm._v(\" \"),(_vm.canResetPassword && _vm.resetPasswordLink !== '')?_c('a',{staticClass:\"login-box__link\",attrs:{\"id\":\"lost-password\",\"href\":_vm.resetPasswordLink}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Forgot password?'))+\"\\n\\t\\t\\t\\t\")]):(_vm.canResetPassword && !_vm.resetPassword)?_c('a',{staticClass:\"login-box__link\",attrs:{\"id\":\"lost-password\",\"href\":_vm.resetPasswordLink},on:{\"click\":function($event){$event.preventDefault();_vm.resetPassword = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Forgot password?'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.hasPasswordless)?[(_vm.countAlternativeLogins)?_c('div',{staticClass:\"alternative-logins\"},[(_vm.hasPasswordless)?_c('a',{staticClass:\"button\",class:{ 'single-alt-login-option': _vm.countAlternativeLogins },attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.passwordlessLogin = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Log in with a device'))+\"\\n\\t\\t\\t\\t\\t\\t\")]):_vm._e()]):_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.passwordlessLogin = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Log in with a device'))+\"\\n\\t\\t\\t\\t\\t\")])]:_vm._e()],2):(!_vm.loading && _vm.passwordlessLogin)?_c('div',{key:\"reset\",staticClass:\"login-additional\"},[_c('PasswordLessLoginForm',{attrs:{\"username\":_vm.user,\"redirect-url\":_vm.redirectUrl,\"auto-complete-allowed\":_vm.autoCompleteAllowed,\"is-https\":_vm.isHttps,\"is-localhost\":_vm.isLocalhost,\"has-public-key-credential\":_vm.hasPublicKeyCredential},on:{\"update:username\":function($event){_vm.user=$event},\"submit\":function($event){_vm.loading = true}}}),_vm._v(\" \"),_c('a',{staticClass:\"login-box__link\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.passwordlessLogin = false}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Back'))+\"\\n\\t\\t\\t\\t\")])],1):(!_vm.loading && _vm.canResetPassword)?_c('div',{key:\"reset\",staticClass:\"login-additional\"},[_c('div',{staticClass:\"lost-password-container\"},[(_vm.resetPassword)?_c('ResetPassword',{attrs:{\"username\":_vm.user,\"reset-password-link\":_vm.resetPasswordLink},on:{\"update:username\":function($event){_vm.user=$event},\"abort\":function($event){_vm.resetPassword = false}}}):_vm._e()],1)]):(_vm.resetPasswordTarget !== '')?_c('div',[_c('UpdatePassword',{attrs:{\"username\":_vm.user,\"reset-password-target\":_vm.resetPasswordTarget},on:{\"update:username\":function($event){_vm.user=$event},\"done\":_vm.passwordResetFinished}})],1):_vm._e()])],1):_c('div',[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('NcNoteCard',{attrs:{\"type\":\"warning\",\"title\":_vm.t('core', 'Login form is disabled.')}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Please contact your administrator.'))+\"\\n\\t\\t\\t\")])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"alternative-logins\",attrs:{\"id\":\"alternative-logins\"}},_vm._l((_vm.alternativeLogins),function(alternativeLogin,index){return _c('NcButton',{key:index,class:[alternativeLogin.class],attrs:{\"type\":\"secondary\",\"wide\":true,\"role\":\"link\",\"href\":alternativeLogin.href},on:{\"click\":function($event){return _vm.goTo(alternativeLogin.href)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(alternativeLogin.name)+\"\\n\\t\\t\")])}),1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=script&lang=js&\"","<!--\n - @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -->\n\n<template>\n\t<NcButton type=\"primary\"\n\t\tnative-type=\"submit\"\n\t\t:wide=\"true\"\n\t\t@click=\"$emit('click')\">\n\t\t{{ !loading ? value : valueLoading }}\n\t\t<template #icon>\n\t\t\t<div v-if=\"loading\" class=\"submit-wrapper__icon icon-loading-small-dark\" />\n\t\t\t<ArrowRight v-else class=\"submit-wrapper__icon\" />\n\t\t</template>\n\t</NcButton>\n</template>\n\n<script>\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton'\nimport ArrowRight from 'vue-material-design-icons/ArrowRight.vue'\n\nexport default {\n\tname: 'LoginButton',\n\tcomponents: {\n\t\tArrowRight,\n\t\tNcButton,\n\t},\n\tprops: {\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: t('core', 'Log in'),\n\t\t},\n\t\tvalueLoading: {\n\t\t\ttype: String,\n\t\t\tdefault: t('core', 'Logging in …'),\n\t\t},\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\tinvertedColors: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.button-vue {\n\tmargin-top: .5rem;\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=style&index=0&id=756414a8&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=style&index=0&id=756414a8&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./LoginButton.vue?vue&type=template&id=756414a8&scoped=true&\"\nimport script from \"./LoginButton.vue?vue&type=script&lang=js&\"\nexport * from \"./LoginButton.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LoginButton.vue?vue&type=style&index=0&id=756414a8&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"756414a8\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('NcButton',{attrs:{\"type\":\"primary\",\"native-type\":\"submit\",\"wide\":true},on:{\"click\":function($event){return _vm.$emit('click')}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading)?_c('div',{staticClass:\"submit-wrapper__icon icon-loading-small-dark\"}):_c('ArrowRight',{staticClass:\"submit-wrapper__icon\"})]},proxy:true}])},[_vm._v(\"\\n\\t\"+_vm._s(!_vm.loading ? _vm.value : _vm.valueLoading)+\"\\n\\t\")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=script&lang=js&\"","<!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -->\n\n<template>\n\t<form ref=\"loginForm\"\n\t\tclass=\"login-form\"\n\t\tmethod=\"post\"\n\t\tname=\"login\"\n\t\t:action=\"loginActionUrl\"\n\t\t@submit=\"submit\">\n\t\t<fieldset class=\"login-form__fieldset\" data-login-form>\n\t\t\t<NcNoteCard v-if=\"apacheAuthFailed\"\n\t\t\t\t:title=\"t('core', 'Server side authentication failed!')\"\n\t\t\t\ttype=\"warning\">\n\t\t\t\t{{ t('core', 'Please contact your administrator.') }}\n\t\t\t</NcNoteCard>\n\t\t\t<NcNoteCard v-if=\"messages.length > 0\">\n\t\t\t\t<div v-for=\"(message, index) in messages\"\n\t\t\t\t\t:key=\"index\">\n\t\t\t\t\t{{ message }}<br>\n\t\t\t\t</div>\n\t\t\t</NcNoteCard>\n\t\t\t<NcNoteCard v-if=\"internalException\"\n\t\t\t\t:class=\"t('core', 'An internal error occurred.')\"\n\t\t\t\ttype=\"warning\">\n\t\t\t\t{{ t('core', 'Please try again or contact your administrator.') }}\n\t\t\t</NcNoteCard>\n\t\t\t<div id=\"message\"\n\t\t\t\tclass=\"hidden\">\n\t\t\t\t<img class=\"float-spinner\"\n\t\t\t\t\talt=\"\"\n\t\t\t\t\t:src=\"loadingIcon\">\n\t\t\t\t<span id=\"messageText\" />\n\t\t\t\t<!-- the following div ensures that the spinner is always inside the #message div -->\n\t\t\t\t<div style=\"clear: both;\" />\n\t\t\t</div>\n\t\t\t<h2 class=\"login-form__headline\" data-login-form-headline v-html=\"headline\" />\n\t\t\t<NcTextField id=\"user\"\n\t\t\t\tref=\"user\"\n\t\t\t\t:label=\"t('core', 'Account name or email')\"\n\t\t\t\t:label-visible=\"true\"\n\t\t\t\tname=\"user\"\n\t\t\t\t:value.sync=\"user\"\n\t\t\t\t:class=\"{shake: invalidPassword}\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t:spellchecking=\"false\"\n\t\t\t\t:autocomplete=\"autoCompleteAllowed ? 'username' : 'off'\"\n\t\t\t\trequired\n\t\t\t\tdata-login-form-input-user\n\t\t\t\t@change=\"updateUsername\" />\n\n\t\t\t<NcPasswordField id=\"password\"\n\t\t\t\tref=\"password\"\n\t\t\t\tname=\"password\"\n\t\t\t\t:label-visible=\"true\"\n\t\t\t\t:class=\"{shake: invalidPassword}\"\n\t\t\t\t:value.sync=\"password\"\n\t\t\t\t:spellchecking=\"false\"\n\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t:autocomplete=\"autoCompleteAllowed ? 'current-password' : 'off'\"\n\t\t\t\t:label=\"t('core', 'Password')\"\n\t\t\t\t:helper-text=\"errorLabel\"\n\t\t\t\t:error=\"isError\"\n\t\t\t\tdata-login-form-input-password\n\t\t\t\trequired />\n\n\t\t\t<LoginButton data-login-form-submit :loading=\"loading\" />\n\n\t\t\t<input v-if=\"redirectUrl\"\n\t\t\t\ttype=\"hidden\"\n\t\t\t\tname=\"redirect_url\"\n\t\t\t\t:value=\"redirectUrl\">\n\t\t\t<input type=\"hidden\"\n\t\t\t\tname=\"timezone\"\n\t\t\t\t:value=\"timezone\">\n\t\t\t<input type=\"hidden\"\n\t\t\t\tname=\"timezone_offset\"\n\t\t\t\t:value=\"timezoneOffset\">\n\t\t\t<input type=\"hidden\"\n\t\t\t\tname=\"requesttoken\"\n\t\t\t\t:value=\"OC.requestToken\">\n\t\t\t<input v-if=\"directLogin\"\n\t\t\t\ttype=\"hidden\"\n\t\t\t\tname=\"direct\"\n\t\t\t\tvalue=\"1\">\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport jstz from 'jstimezonedetect'\nimport { generateUrl, imagePath } from '@nextcloud/router'\n\nimport NcPasswordField from '@nextcloud/vue/dist/Components/NcPasswordField.js'\nimport NcTextField from '@nextcloud/vue/dist/Components/NcTextField.js'\nimport NcNoteCard from '@nextcloud/vue/dist/Components/NcNoteCard.js'\n\nimport LoginButton from './LoginButton.vue'\n\nexport default {\n\tname: 'LoginForm',\n\n\tcomponents: {\n\t\tLoginButton,\n\t\tNcPasswordField,\n\t\tNcTextField,\n\t\tNcNoteCard,\n\t},\n\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tredirectUrl: {\n\t\t\ttype: [String, Boolean],\n\t\t\tdefault: false,\n\t\t},\n\t\terrors: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tmessages: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tthrottleDelay: {\n\t\t\ttype: Number,\n\t\t\tdefault: 0,\n\t\t},\n\t\tautoCompleteAllowed: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tdirectLogin: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t\ttimezone: jstz.determine().name(),\n\t\t\ttimezoneOffset: (-new Date().getTimezoneOffset() / 60),\n\t\t\theadline: t('core', 'Log in to {productName}', { productName: OC.theme.name }),\n\t\t\tuser: '',\n\t\t\tpassword: '',\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisError() {\n\t\t\treturn this.invalidPassword || this.userDisabled\n\t\t\t\t|| this.throttleDelay > 5000\n\t\t},\n\t\terrorLabel() {\n\t\t\tif (this.invalidPassword) {\n\t\t\t\treturn t('core', 'Wrong username or password.')\n\t\t\t}\n\t\t\tif (this.userDisabled) {\n\t\t\t\treturn t('core', 'User disabled')\n\t\t\t}\n\t\t\tif (this.throttleDelay > 5000) {\n\t\t\t\treturn t('core', 'We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds.')\n\t\t\t}\n\t\t\treturn undefined\n\t\t},\n\t\tapacheAuthFailed() {\n\t\t\treturn this.errors.indexOf('apacheAuthFailed') !== -1\n\t\t},\n\t\tinternalException() {\n\t\t\treturn this.errors.indexOf('internalexception') !== -1\n\t\t},\n\t\tinvalidPassword() {\n\t\t\treturn this.errors.indexOf('invalidpassword') !== -1\n\t\t},\n\t\tuserDisabled() {\n\t\t\treturn this.errors.indexOf('userdisabled') !== -1\n\t\t},\n\t\tloadingIcon() {\n\t\t\treturn imagePath('core', 'loading-dark.gif')\n\t\t},\n\t\tloginActionUrl() {\n\t\t\treturn generateUrl('login')\n\t\t},\n\t},\n\n\tmounted() {\n\t\tif (this.username === '') {\n\t\t\tthis.$refs.user.$refs.inputField.$refs.input.focus()\n\t\t} else {\n\t\t\tthis.user = this.username\n\t\t\tthis.$refs.password.$refs.inputField.$refs.input.focus()\n\t\t}\n\t},\n\n\tmethods: {\n\t\tupdateUsername() {\n\t\t\tthis.$emit('update:username', this.user)\n\t\t},\n\t\tsubmit() {\n\t\t\tthis.loading = true\n\t\t\tthis.$emit('submit')\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.login-form {\n\ttext-align: left;\n\tfont-size: 1rem;\n\n\t&__fieldset {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: .5rem;\n\t}\n\n\t&__headline {\n\t\ttext-align: center;\n\t}\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=style&index=0&id=48dc6965&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=style&index=0&id=48dc6965&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./LoginForm.vue?vue&type=template&id=48dc6965&scoped=true&\"\nimport script from \"./LoginForm.vue?vue&type=script&lang=js&\"\nexport * from \"./LoginForm.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LoginForm.vue?vue&type=style&index=0&id=48dc6965&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"48dc6965\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('form',{ref:\"loginForm\",staticClass:\"login-form\",attrs:{\"method\":\"post\",\"name\":\"login\",\"action\":_vm.loginActionUrl},on:{\"submit\":_vm.submit}},[_c('fieldset',{staticClass:\"login-form__fieldset\",attrs:{\"data-login-form\":\"\"}},[(_vm.apacheAuthFailed)?_c('NcNoteCard',{attrs:{\"title\":_vm.t('core', 'Server side authentication failed!'),\"type\":\"warning\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Please contact your administrator.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.messages.length > 0)?_c('NcNoteCard',_vm._l((_vm.messages),function(message,index){return _c('div',{key:index},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(message)),_c('br')])}),0):_vm._e(),_vm._v(\" \"),(_vm.internalException)?_c('NcNoteCard',{class:_vm.t('core', 'An internal error occurred.'),attrs:{\"type\":\"warning\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Please try again or contact your administrator.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"hidden\",attrs:{\"id\":\"message\"}},[_c('img',{staticClass:\"float-spinner\",attrs:{\"alt\":\"\",\"src\":_vm.loadingIcon}}),_vm._v(\" \"),_c('span',{attrs:{\"id\":\"messageText\"}}),_vm._v(\" \"),_c('div',{staticStyle:{\"clear\":\"both\"}})]),_vm._v(\" \"),_c('h2',{staticClass:\"login-form__headline\",attrs:{\"data-login-form-headline\":\"\"},domProps:{\"innerHTML\":_vm._s(_vm.headline)}}),_vm._v(\" \"),_c('NcTextField',{ref:\"user\",class:{shake: _vm.invalidPassword},attrs:{\"id\":\"user\",\"label\":_vm.t('core', 'Account name or email'),\"label-visible\":true,\"name\":\"user\",\"value\":_vm.user,\"autocapitalize\":\"none\",\"spellchecking\":false,\"autocomplete\":_vm.autoCompleteAllowed ? 'username' : 'off',\"required\":\"\",\"data-login-form-input-user\":\"\"},on:{\"update:value\":function($event){_vm.user=$event},\"change\":_vm.updateUsername}}),_vm._v(\" \"),_c('NcPasswordField',{ref:\"password\",class:{shake: _vm.invalidPassword},attrs:{\"id\":\"password\",\"name\":\"password\",\"label-visible\":true,\"value\":_vm.password,\"spellchecking\":false,\"autocapitalize\":\"none\",\"autocomplete\":_vm.autoCompleteAllowed ? 'current-password' : 'off',\"label\":_vm.t('core', 'Password'),\"helper-text\":_vm.errorLabel,\"error\":_vm.isError,\"data-login-form-input-password\":\"\",\"required\":\"\"},on:{\"update:value\":function($event){_vm.password=$event}}}),_vm._v(\" \"),_c('LoginButton',{attrs:{\"data-login-form-submit\":\"\",\"loading\":_vm.loading}}),_vm._v(\" \"),(_vm.redirectUrl)?_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"redirect_url\"},domProps:{\"value\":_vm.redirectUrl}}):_vm._e(),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"timezone\"},domProps:{\"value\":_vm.timezone}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"timezone_offset\"},domProps:{\"value\":_vm.timezoneOffset}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"requesttoken\"},domProps:{\"value\":_vm.OC.requestToken}}),_vm._v(\" \"),(_vm.directLogin)?_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"direct\",\"value\":\"1\"}}):_vm._e()],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<form v-if=\"(isHttps || isLocalhost) && hasPublicKeyCredential\"\n\t\tref=\"loginForm\"\n\t\tmethod=\"post\"\n\t\tname=\"login\"\n\t\t@submit.prevent=\"submit\">\n\t\t<fieldset>\n\t\t\t<p class=\"grouptop groupbottom\">\n\t\t\t\t<label for=\"user\" class=\"infield\">{{ t('core', 'Username or\temail') }}</label>\n\t\t\t\t<input id=\"user\"\n\t\t\t\t\tref=\"user\"\n\t\t\t\t\tv-model=\"user\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tname=\"user\"\n\t\t\t\t\t:autocomplete=\"autoCompleteAllowed ? 'on' : 'off'\"\n\t\t\t\t\t:placeholder=\"t('core', 'Username or email')\"\n\t\t\t\t\t:aria-label=\"t('core', 'Username or email')\"\n\t\t\t\t\trequired\n\t\t\t\t\t@change=\"$emit('update:username', user)\">\n\t\t\t</p>\n\n\t\t\t<div v-if=\"!validCredentials\" class=\"body-login-container update form__message-box\">\n\t\t\t\t{{ t('core', 'Your account is not setup for passwordless login.') }}\n\t\t\t</div>\n\n\t\t\t<LoginButton v-if=\"validCredentials\"\n\t\t\t\t:loading=\"loading\"\n\t\t\t\t@click=\"authenticate\" />\n\t\t</fieldset>\n\t</form>\n\t<div v-else-if=\"!hasPublicKeyCredential\" class=\"body-login-container update\">\n\t\t<InformationIcon size=\"70\" />\n\t\t<h2>{{ t('core', 'Browser not supported') }}</h2>\n\t\t<p class=\"infogroup\">\n\t\t\t{{ t('core', 'Passwordless authentication is not supported in your browser.') }}\n\t\t</p>\n\t</div>\n\t<div v-else-if=\"!isHttps && !isLocalhost\" class=\"body-login-container update\">\n\t\t<LockOpenIcon size=\"70\" />\n\t\t<h2>{{ t('core', 'Your connection is not secure') }}</h2>\n\t\t<p class=\"infogroup\">\n\t\t\t{{ t('core', 'Passwordless authentication is only available over a secure connection.') }}\n\t\t</p>\n\t</div>\n</template>\n\n<script>\nimport {\n\tstartAuthentication,\n\tfinishAuthentication,\n} from '../../services/WebAuthnAuthenticationService'\nimport LoginButton from './LoginButton'\nimport InformationIcon from 'vue-material-design-icons/Information'\nimport LockOpenIcon from 'vue-material-design-icons/LockOpen'\n\nclass NoValidCredentials extends Error {\n\n}\n\nexport default {\n\tname: 'PasswordLessLoginForm',\n\tcomponents: {\n\t\tLoginButton,\n\t\tInformationIcon,\n\t\tLockOpenIcon,\n\t},\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tredirectUrl: {\n\t\t\ttype: [String, Boolean],\n\t\t\tdefault: false,\n\t\t},\n\t\tautoCompleteAllowed: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tisHttps: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tisLocalhost: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\thasPublicKeyCredential: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tuser: this.username,\n\t\t\tloading: false,\n\t\t\tvalidCredentials: true,\n\t\t}\n\t},\n\tmethods: {\n\t\tauthenticate() {\n\t\t\tconsole.debug('passwordless login initiated')\n\n\t\t\tthis.getAuthenticationData(this.user)\n\t\t\t\t.then(publicKey => {\n\t\t\t\t\tconsole.debug(publicKey)\n\t\t\t\t\treturn publicKey\n\t\t\t\t})\n\t\t\t\t.then(this.sign)\n\t\t\t\t.then(this.completeAuthentication)\n\t\t\t\t.catch(error => {\n\t\t\t\t\tif (error instanceof NoValidCredentials) {\n\t\t\t\t\t\tthis.validCredentials = false\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tconsole.debug(error)\n\t\t\t\t})\n\t\t},\n\t\tgetAuthenticationData(uid) {\n\t\t\tconst base64urlDecode = function(input) {\n\t\t\t\t// Replace non-url compatible chars with base64 standard chars\n\t\t\t\tinput = input\n\t\t\t\t\t.replace(/-/g, '+')\n\t\t\t\t\t.replace(/_/g, '/')\n\n\t\t\t\t// Pad out with standard base64 required padding characters\n\t\t\t\tconst pad = input.length % 4\n\t\t\t\tif (pad) {\n\t\t\t\t\tif (pad === 1) {\n\t\t\t\t\t\tthrow new Error('InvalidLengthError: Input base64url string is the wrong length to determine padding')\n\t\t\t\t\t}\n\t\t\t\t\tinput += new Array(5 - pad).join('=')\n\t\t\t\t}\n\n\t\t\t\treturn window.atob(input)\n\t\t\t}\n\n\t\t\treturn startAuthentication(uid)\n\t\t\t\t.then(publicKey => {\n\t\t\t\t\tconsole.debug('Obtained PublicKeyCredentialRequestOptions')\n\t\t\t\t\tconsole.debug(publicKey)\n\n\t\t\t\t\tif (!Object.prototype.hasOwnProperty.call(publicKey, 'allowCredentials')) {\n\t\t\t\t\t\tconsole.debug('No credentials found.')\n\t\t\t\t\t\tthrow new NoValidCredentials()\n\t\t\t\t\t}\n\n\t\t\t\t\tpublicKey.challenge = Uint8Array.from(base64urlDecode(publicKey.challenge), c => c.charCodeAt(0))\n\t\t\t\t\tpublicKey.allowCredentials = publicKey.allowCredentials.map(function(data) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...data,\n\t\t\t\t\t\t\tid: Uint8Array.from(base64urlDecode(data.id), c => c.charCodeAt(0)),\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\n\t\t\t\t\tconsole.debug('Converted PublicKeyCredentialRequestOptions')\n\t\t\t\t\tconsole.debug(publicKey)\n\t\t\t\t\treturn publicKey\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconsole.debug('Error while obtaining data')\n\t\t\t\t\tthrow error\n\t\t\t\t})\n\t\t},\n\t\tsign(publicKey) {\n\t\t\tconst arrayToBase64String = function(a) {\n\t\t\t\treturn window.btoa(String.fromCharCode(...a))\n\t\t\t}\n\n\t\t\tconst arrayToString = function(a) {\n\t\t\t\treturn String.fromCharCode(...a)\n\t\t\t}\n\n\t\t\treturn navigator.credentials.get({ publicKey })\n\t\t\t\t.then(data => {\n\t\t\t\t\tconsole.debug(data)\n\t\t\t\t\tconsole.debug(new Uint8Array(data.rawId))\n\t\t\t\t\tconsole.debug(arrayToBase64String(new Uint8Array(data.rawId)))\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid: data.id,\n\t\t\t\t\t\ttype: data.type,\n\t\t\t\t\t\trawId: arrayToBase64String(new Uint8Array(data.rawId)),\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tauthenticatorData: arrayToBase64String(new Uint8Array(data.response.authenticatorData)),\n\t\t\t\t\t\t\tclientDataJSON: arrayToBase64String(new Uint8Array(data.response.clientDataJSON)),\n\t\t\t\t\t\t\tsignature: arrayToBase64String(new Uint8Array(data.response.signature)),\n\t\t\t\t\t\t\tuserHandle: data.response.userHandle ? arrayToString(new Uint8Array(data.response.userHandle)) : null,\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.then(challenge => {\n\t\t\t\t\tconsole.debug(challenge)\n\t\t\t\t\treturn challenge\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconsole.debug('GOT AN ERROR!')\n\t\t\t\t\tconsole.debug(error) // Example: timeout, interaction refused...\n\t\t\t\t})\n\t\t},\n\t\tcompleteAuthentication(challenge) {\n\t\t\tconsole.debug('TIME TO COMPLETE')\n\n\t\t\tconst redirectUrl = this.redirectUrl\n\n\t\t\treturn finishAuthentication(JSON.stringify(challenge))\n\t\t\t\t.then(({ defaultRedirectUrl }) => {\n\t\t\t\t\tconsole.debug('Logged in redirecting')\n\t\t\t\t\t// Redirect url might be false so || should be used instead of ??.\n\t\t\t\t\twindow.location.href = redirectUrl || defaultRedirectUrl\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconsole.debug('GOT AN ERROR WHILE SUBMITTING CHALLENGE!')\n\t\t\t\t\tconsole.debug(error) // Example: timeout, interaction refused...\n\t\t\t\t})\n\t\t},\n\t\tsubmit() {\n\t\t\t// noop\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n\t.body-login-container.update {\n\t\tmargin: 15px 0;\n\n\t\t&.form__message-box {\n\t\t\twidth: 240px;\n\t\t\tmargin: 5px;\n\t\t}\n\t}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=script&lang=js&\"","/**\n * @copyright 2020, Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\n\n/**\n * @param {any} loginName -\n */\nexport function startAuthentication(loginName) {\n\tconst url = generateUrl('/login/webauthn/start')\n\n\treturn Axios.post(url, { loginName })\n\t\t.then(resp => resp.data)\n}\n\n/**\n * @param {any} data -\n */\nexport function finishAuthentication(data) {\n\tconst url = generateUrl('/login/webauthn/finish')\n\n\treturn Axios.post(url, { data })\n\t\t.then(resp => resp.data)\n}\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=style&index=0&id=20256748&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=style&index=0&id=20256748&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./PasswordLessLoginForm.vue?vue&type=template&id=20256748&scoped=true&\"\nimport script from \"./PasswordLessLoginForm.vue?vue&type=script&lang=js&\"\nexport * from \"./PasswordLessLoginForm.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PasswordLessLoginForm.vue?vue&type=style&index=0&id=20256748&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"20256748\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return ((_vm.isHttps || _vm.isLocalhost) && _vm.hasPublicKeyCredential)?_c('form',{ref:\"loginForm\",attrs:{\"method\":\"post\",\"name\":\"login\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('fieldset',[_c('p',{staticClass:\"grouptop groupbottom\"},[_c('label',{staticClass:\"infield\",attrs:{\"for\":\"user\"}},[_vm._v(_vm._s(_vm.t('core', 'Username or\temail')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user),expression:\"user\"}],ref:\"user\",attrs:{\"id\":\"user\",\"type\":\"text\",\"name\":\"user\",\"autocomplete\":_vm.autoCompleteAllowed ? 'on' : 'off',\"placeholder\":_vm.t('core', 'Username or email'),\"aria-label\":_vm.t('core', 'Username or email'),\"required\":\"\"},domProps:{\"value\":(_vm.user)},on:{\"change\":function($event){return _vm.$emit('update:username', _vm.user)},\"input\":function($event){if($event.target.composing){ return; }_vm.user=$event.target.value}}})]),_vm._v(\" \"),(!_vm.validCredentials)?_c('div',{staticClass:\"body-login-container update form__message-box\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Your account is not setup for passwordless login.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.validCredentials)?_c('LoginButton',{attrs:{\"loading\":_vm.loading},on:{\"click\":_vm.authenticate}}):_vm._e()],1)]):(!_vm.hasPublicKeyCredential)?_c('div',{staticClass:\"body-login-container update\"},[_c('InformationIcon',{attrs:{\"size\":\"70\"}}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Browser not supported')))]),_vm._v(\" \"),_c('p',{staticClass:\"infogroup\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Passwordless authentication is not supported in your browser.'))+\"\\n\\t\")])],1):(!_vm.isHttps && !_vm.isLocalhost)?_c('div',{staticClass:\"body-login-container update\"},[_c('LockOpenIcon',{attrs:{\"size\":\"70\"}}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Your connection is not secure')))]),_vm._v(\" \"),_c('p',{staticClass:\"infogroup\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Passwordless authentication is only available over a secure connection.'))+\"\\n\\t\")])],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=script&lang=js&\"","<!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -->\n\n<template>\n\t<form class=\"login-form\" @submit.prevent=\"submit\">\n\t\t<fieldset class=\"login-form__fieldset\">\n\t\t\t<NcTextField id=\"user\"\n\t\t\t\t:value.sync=\"user\"\n\t\t\t\tname=\"user\"\n\t\t\t\tautocapitalize=\"off\"\n\t\t\t\t:label=\"t('core', 'Account name or email')\"\n\t\t\t\t:label-visible=\"true\"\n\t\t\t\trequired\n\t\t\t\t@change=\"updateUsername\" />\n\t\t\t<LoginButton :value=\"t('core', 'Reset password')\" />\n\n\t\t\t<NcNoteCard v-if=\"message === 'send-success'\"\n\t\t\t\ttype=\"success\">\n\t\t\t\t{{ t('core', 'A password reset message has been sent to the email address of this account. If you do not receive it, check your spam/junk folders or ask your local administrator for help.') }}\n\t\t\t\t<br>\n\t\t\t\t{{ t('core', 'If it is not there ask your local administrator.') }}\n\t\t\t</NcNoteCard>\n\t\t\t<NcNoteCard v-else-if=\"message === 'send-error'\"\n\t\t\t\ttype=\"error\">\n\t\t\t\t{{ t('core', 'Couldn\\'t send reset email. Please contact your administrator.') }}\n\t\t\t</NcNoteCard>\n\t\t\t<NcNoteCard v-else-if=\"message === 'reset-error'\"\n\t\t\t\ttype=\"error\">\n\t\t\t\t{{ t('core', 'Password cannot be changed. Please contact your administrator.') }}\n\t\t\t</NcNoteCard>\n\n\t\t\t<a class=\"login-form__link\"\n\t\t\t\thref=\"#\"\n\t\t\t\t@click.prevent=\"$emit('abort')\">\n\t\t\t\t{{ t('core', 'Back to login') }}\n\t\t\t</a>\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\nimport LoginButton from './LoginButton.vue'\nimport NcTextField from '@nextcloud/vue/dist/Components/NcTextField.js'\nimport NcNoteCard from '@nextcloud/vue/dist/Components/NcNoteCard.js'\n\nexport default {\n\tname: 'ResetPassword',\n\tcomponents: {\n\t\tLoginButton,\n\t\tNcNoteCard,\n\t\tNcTextField,\n\t},\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tresetPasswordLink: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\terror: false,\n\t\t\tloading: false,\n\t\t\tmessage: undefined,\n\t\t\tuser: this.username,\n\t\t}\n\t},\n\twatch: {\n\t\tusername(value) {\n\t\t\tthis.user = value\n\t\t},\n\t},\n\tmethods: {\n\t\tupdateUsername() {\n\t\t\tthis.$emit('update:username', this.user)\n\t\t},\n\t\tsubmit() {\n\t\t\tthis.loading = true\n\t\t\tthis.error = false\n\t\t\tthis.message = ''\n\t\t\tconst url = generateUrl('/lostpassword/email')\n\n\t\t\tconst data = {\n\t\t\t\tuser: this.user,\n\t\t\t}\n\n\t\t\treturn axios.post(url, data)\n\t\t\t\t.then(resp => resp.data)\n\t\t\t\t.then(data => {\n\t\t\t\t\tif (data.status !== 'success') {\n\t\t\t\t\t\tthrow new Error(`got status ${data.status}`)\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.message = 'send-success'\n\t\t\t\t})\n\t\t\t\t.catch(e => {\n\t\t\t\t\tconsole.error('could not send reset email request', e)\n\n\t\t\t\t\tthis.error = true\n\t\t\t\t\tthis.message = 'send-error'\n\t\t\t\t})\n\t\t\t\t.then(() => { this.loading = false })\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.login-form {\n\ttext-align: left;\n\tfont-size: 1rem;\n\n\t&__fieldset {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: .5rem;\n\t}\n\n\t&__link {\n\t\tdisplay: block;\n\t\tfont-weight: normal !important;\n\t\tpadding-bottom: 1rem;\n\t\tcursor: pointer;\n\t\tfont-size: var(--default-font-size);\n\t\ttext-align: center;\n\t\tpadding: .5rem 1rem 1rem 1rem;\n\t}\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=style&index=0&id=27cabc60&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=style&index=0&id=27cabc60&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ResetPassword.vue?vue&type=template&id=27cabc60&scoped=true&\"\nimport script from \"./ResetPassword.vue?vue&type=script&lang=js&\"\nexport * from \"./ResetPassword.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ResetPassword.vue?vue&type=style&index=0&id=27cabc60&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"27cabc60\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('form',{staticClass:\"login-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('fieldset',{staticClass:\"login-form__fieldset\"},[_c('NcTextField',{attrs:{\"id\":\"user\",\"value\":_vm.user,\"name\":\"user\",\"autocapitalize\":\"off\",\"label\":_vm.t('core', 'Account name or email'),\"label-visible\":true,\"required\":\"\"},on:{\"update:value\":function($event){_vm.user=$event},\"change\":_vm.updateUsername}}),_vm._v(\" \"),_c('LoginButton',{attrs:{\"value\":_vm.t('core', 'Reset password')}}),_vm._v(\" \"),(_vm.message === 'send-success')?_c('NcNoteCard',{attrs:{\"type\":\"success\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'A password reset message has been sent to the email address of this account. If you do not receive it, check your spam/junk folders or ask your local administrator for help.'))+\"\\n\\t\\t\\t\"),_c('br'),_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'If it is not there ask your local administrator.'))+\"\\n\\t\\t\")]):(_vm.message === 'send-error')?_c('NcNoteCard',{attrs:{\"type\":\"error\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Couldn\\'t send reset email. Please contact your administrator.'))+\"\\n\\t\\t\")]):(_vm.message === 'reset-error')?_c('NcNoteCard',{attrs:{\"type\":\"error\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Password cannot be changed. Please contact your administrator.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('a',{staticClass:\"login-form__link\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.$emit('abort')}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Back to login'))+\"\\n\\t\\t\")])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<form @submit.prevent=\"submit\">\n\t\t<fieldset>\n\t\t\t<p>\n\t\t\t\t<label for=\"password\" class=\"infield\">{{ t('core', 'New password') }}</label>\n\t\t\t\t<input id=\"password\"\n\t\t\t\t\tv-model=\"password\"\n\t\t\t\t\ttype=\"password\"\n\t\t\t\t\tname=\"password\"\n\t\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t\tautocapitalize=\"none\"\n\t\t\t\t\tautocorrect=\"off\"\n\t\t\t\t\trequired\n\t\t\t\t\t:placeholder=\"t('core', 'New password')\">\n\t\t\t</p>\n\n\t\t\t<div v-if=\"encrypted\" class=\"update\">\n\t\t\t\t<p>\n\t\t\t\t\t{{ t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?') }}\n\t\t\t\t</p>\n\t\t\t\t<input id=\"encrypted-continue\"\n\t\t\t\t\tv-model=\"proceed\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\tclass=\"checkbox\">\n\t\t\t\t<label for=\"encrypted-continue\">\n\t\t\t\t\t{{ t('core', 'I know what I\\'m doing') }}\n\t\t\t\t</label>\n\t\t\t</div>\n\n\t\t\t<LoginButton :loading=\"loading\"\n\t\t\t\t:value=\"t('core', 'Reset password')\"\n\t\t\t\t:value-loading=\"t('core', 'Resetting password')\" />\n\n\t\t\t<p v-if=\"error && message\" :class=\"{warning: error}\">\n\t\t\t\t{{ message }}\n\t\t\t</p>\n\t\t</fieldset>\n\t</form>\n</template>\n\n<script>\nimport Axios from '@nextcloud/axios'\nimport LoginButton from './LoginButton.vue'\n\nexport default {\n\tname: 'UpdatePassword',\n\tcomponents: {\n\t\tLoginButton,\n\t},\n\tprops: {\n\t\tusername: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tresetPasswordTarget: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\terror: false,\n\t\t\tloading: false,\n\t\t\tmessage: undefined,\n\t\t\tuser: this.username,\n\t\t\tpassword: '',\n\t\t\tencrypted: false,\n\t\t\tproceed: false,\n\t\t}\n\t},\n\twatch: {\n\t\tusername(value) {\n\t\t\tthis.user = value\n\t\t},\n\t},\n\tmethods: {\n\t\tasync submit() {\n\t\t\tthis.loading = true\n\t\t\tthis.error = false\n\t\t\tthis.message = ''\n\n\t\t\ttry {\n\t\t\t\tconst { data } = await Axios.post(this.resetPasswordTarget, {\n\t\t\t\t\tpassword: this.password,\n\t\t\t\t\tproceed: this.proceed,\n\t\t\t\t})\n\t\t\t\tif (data && data.status === 'success') {\n\t\t\t\t\tthis.message = 'send-success'\n\t\t\t\t\tthis.$emit('update:username', this.user)\n\t\t\t\t\tthis.$emit('done')\n\t\t\t\t} else if (data && data.encryption) {\n\t\t\t\t\tthis.encrypted = true\n\t\t\t\t} else if (data && data.msg) {\n\t\t\t\t\tthrow new Error(data.msg)\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error()\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tthis.error = true\n\t\t\t\tthis.message = e.message ? e.message : t('core', 'Password cannot be changed. Please contact your administrator.')\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\tfieldset {\n\t\ttext-align: center;\n\t}\n\n\tinput[type=submit] {\n\t\tmargin-top: 20px;\n\t}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=style&index=0&id=4dc21d74&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=style&index=0&id=4dc21d74&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UpdatePassword.vue?vue&type=template&id=4dc21d74&scoped=true&\"\nimport script from \"./UpdatePassword.vue?vue&type=script&lang=js&\"\nexport * from \"./UpdatePassword.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UpdatePassword.vue?vue&type=style&index=0&id=4dc21d74&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4dc21d74\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('fieldset',[_c('p',[_c('label',{staticClass:\"infield\",attrs:{\"for\":\"password\"}},[_vm._v(_vm._s(_vm.t('core', 'New password')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.password),expression:\"password\"}],attrs:{\"id\":\"password\",\"type\":\"password\",\"name\":\"password\",\"autocomplete\":\"new-password\",\"autocapitalize\":\"none\",\"autocorrect\":\"off\",\"required\":\"\",\"placeholder\":_vm.t('core', 'New password')},domProps:{\"value\":(_vm.password)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.password=$event.target.value}}})]),_vm._v(\" \"),(_vm.encrypted)?_c('div',{staticClass:\"update\"},[_c('p',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.proceed),expression:\"proceed\"}],staticClass:\"checkbox\",attrs:{\"id\":\"encrypted-continue\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.proceed)?_vm._i(_vm.proceed,null)>-1:(_vm.proceed)},on:{\"change\":function($event){var $$a=_vm.proceed,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.proceed=$$a.concat([$$v]))}else{$$i>-1&&(_vm.proceed=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.proceed=$$c}}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"encrypted-continue\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'I know what I\\'m doing'))+\"\\n\\t\\t\\t\")])]):_vm._e(),_vm._v(\" \"),_c('LoginButton',{attrs:{\"loading\":_vm.loading,\"value\":_vm.t('core', 'Reset password'),\"value-loading\":_vm.t('core', 'Resetting password')}}),_vm._v(\" \"),(_vm.error && _vm.message)?_c('p',{class:{warning: _vm.error}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.message)+\"\\n\\t\\t\")]):_vm._e()],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @author 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -->\n\n<template>\n\t<div class=\"guest-box login-box\">\n\t\t<div v-if=\"!hideLoginForm || directLogin\">\n\t\t\t<transition name=\"fade\" mode=\"out-in\">\n\t\t\t\t<div v-if=\"!passwordlessLogin && !resetPassword && resetPasswordTarget === ''\">\n\t\t\t\t\t<LoginForm :username.sync=\"user\"\n\t\t\t\t\t\t:redirect-url=\"redirectUrl\"\n\t\t\t\t\t\t:direct-login=\"directLogin\"\n\t\t\t\t\t\t:messages=\"messages\"\n\t\t\t\t\t\t:errors=\"errors\"\n\t\t\t\t\t\t:throttle-delay=\"throttleDelay\"\n\t\t\t\t\t\t:auto-complete-allowed=\"autoCompleteAllowed\"\n\t\t\t\t\t\t@submit=\"loading = true\" />\n\t\t\t\t\t<a v-if=\"canResetPassword && resetPasswordLink !== ''\"\n\t\t\t\t\t\tid=\"lost-password\"\n\t\t\t\t\t\tclass=\"login-box__link\"\n\t\t\t\t\t\t:href=\"resetPasswordLink\">\n\t\t\t\t\t\t{{ t('core', 'Forgot password?') }}\n\t\t\t\t\t</a>\n\t\t\t\t\t<a v-else-if=\"canResetPassword && !resetPassword\"\n\t\t\t\t\t\tid=\"lost-password\"\n\t\t\t\t\t\tclass=\"login-box__link\"\n\t\t\t\t\t\t:href=\"resetPasswordLink\"\n\t\t\t\t\t\t@click.prevent=\"resetPassword = true\">\n\t\t\t\t\t\t{{ t('core', 'Forgot password?') }}\n\t\t\t\t\t</a>\n\t\t\t\t\t<template v-if=\"hasPasswordless\">\n\t\t\t\t\t\t<div v-if=\"countAlternativeLogins\"\n\t\t\t\t\t\t\tclass=\"alternative-logins\">\n\t\t\t\t\t\t\t<a v-if=\"hasPasswordless\"\n\t\t\t\t\t\t\t\tclass=\"button\"\n\t\t\t\t\t\t\t\t:class=\"{ 'single-alt-login-option': countAlternativeLogins }\"\n\t\t\t\t\t\t\t\thref=\"#\"\n\t\t\t\t\t\t\t\t@click.prevent=\"passwordlessLogin = true\">\n\t\t\t\t\t\t\t\t{{ t('core', 'Log in with a device') }}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<a v-else\n\t\t\t\t\t\t\thref=\"#\"\n\t\t\t\t\t\t\t@click.prevent=\"passwordlessLogin = true\">\n\t\t\t\t\t\t\t{{ t('core', 'Log in with a device') }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</template>\n\t\t\t\t</div>\n\t\t\t\t<div v-else-if=\"!loading && passwordlessLogin\"\n\t\t\t\t\tkey=\"reset\"\n\t\t\t\t\tclass=\"login-additional\">\n\t\t\t\t\t<PasswordLessLoginForm :username.sync=\"user\"\n\t\t\t\t\t\t:redirect-url=\"redirectUrl\"\n\t\t\t\t\t\t:auto-complete-allowed=\"autoCompleteAllowed\"\n\t\t\t\t\t\t:is-https=\"isHttps\"\n\t\t\t\t\t\t:is-localhost=\"isLocalhost\"\n\t\t\t\t\t\t:has-public-key-credential=\"hasPublicKeyCredential\"\n\t\t\t\t\t\t@submit=\"loading = true\" />\n\t\t\t\t\t<a href=\"#\" class=\"login-box__link\" @click.prevent=\"passwordlessLogin = false\">\n\t\t\t\t\t\t{{ t('core', 'Back') }}\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t\t<div v-else-if=\"!loading && canResetPassword\"\n\t\t\t\t\tkey=\"reset\"\n\t\t\t\t\tclass=\"login-additional\">\n\t\t\t\t\t<div class=\"lost-password-container\">\n\t\t\t\t\t\t<ResetPassword v-if=\"resetPassword\"\n\t\t\t\t\t\t\t:username.sync=\"user\"\n\t\t\t\t\t\t\t:reset-password-link=\"resetPasswordLink\"\n\t\t\t\t\t\t\t@abort=\"resetPassword = false\" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div v-else-if=\"resetPasswordTarget !== ''\">\n\t\t\t\t\t<UpdatePassword :username.sync=\"user\"\n\t\t\t\t\t\t:reset-password-target=\"resetPasswordTarget\"\n\t\t\t\t\t\t@done=\"passwordResetFinished\" />\n\t\t\t\t</div>\n\t\t\t</transition>\n\t\t</div>\n\t\t<div v-else>\n\t\t\t<transition name=\"fade\" mode=\"out-in\">\n\t\t\t\t<NcNoteCard type=\"warning\" :title=\"t('core', 'Login form is disabled.')\">\n\t\t\t\t\t{{ t('core', 'Please contact your administrator.') }}\n\t\t\t\t</NcNoteCard>\n\t\t\t</transition>\n\t\t</div>\n\n\t\t<div id=\"alternative-logins\" class=\"alternative-logins\">\n\t\t\t<NcButton v-for=\"(alternativeLogin, index) in alternativeLogins\"\n\t\t\t\t:key=\"index\"\n\t\t\t\ttype=\"secondary\"\n\t\t\t\t:wide=\"true\"\n\t\t\t\t:class=\"[alternativeLogin.class]\"\n\t\t\t\trole=\"link\"\n\t\t\t\t:href=\"alternativeLogin.href\"\n\t\t\t\t@click=\"goTo(alternativeLogin.href)\">\n\t\t\t\t{{ alternativeLogin.name }}\n\t\t\t</NcButton>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { loadState } from '@nextcloud/initial-state'\nimport queryString from 'query-string'\n\nimport LoginForm from '../components/login/LoginForm.vue'\nimport PasswordLessLoginForm from '../components/login/PasswordLessLoginForm.vue'\nimport ResetPassword from '../components/login/ResetPassword.vue'\nimport UpdatePassword from '../components/login/UpdatePassword.vue'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport NcNoteCard from '@nextcloud/vue/dist/Components/NcNoteCard.js'\n\nconst query = queryString.parse(location.search)\nif (query.clear === '1') {\n\ttry {\n\t\twindow.localStorage.clear()\n\t\twindow.sessionStorage.clear()\n\t\tconsole.debug('Browser storage cleared')\n\t} catch (e) {\n\t\tconsole.error('Could not clear browser storage', e)\n\t}\n}\n\nexport default {\n\tname: 'Login',\n\n\tcomponents: {\n\t\tLoginForm,\n\t\tPasswordLessLoginForm,\n\t\tResetPassword,\n\t\tUpdatePassword,\n\t\tNcButton,\n\t\tNcNoteCard,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t\tuser: loadState('core', 'loginUsername', ''),\n\t\t\tpasswordlessLogin: false,\n\t\t\tresetPassword: false,\n\n\t\t\t// Initial data\n\t\t\terrors: loadState('core', 'loginErrors', []),\n\t\t\tmessages: loadState('core', 'loginMessages', []),\n\t\t\tredirectUrl: loadState('core', 'loginRedirectUrl', false),\n\t\t\tthrottleDelay: loadState('core', 'loginThrottleDelay', 0),\n\t\t\tcanResetPassword: loadState('core', 'loginCanResetPassword', false),\n\t\t\tresetPasswordLink: loadState('core', 'loginResetPasswordLink', ''),\n\t\t\tautoCompleteAllowed: loadState('core', 'loginAutocomplete', true),\n\t\t\tresetPasswordTarget: loadState('core', 'resetPasswordTarget', ''),\n\t\t\tresetPasswordUser: loadState('core', 'resetPasswordUser', ''),\n\t\t\tdirectLogin: query.direct === '1',\n\t\t\thasPasswordless: loadState('core', 'webauthn-available', false),\n\t\t\tcountAlternativeLogins: loadState('core', 'countAlternativeLogins', false),\n\t\t\talternativeLogins: loadState('core', 'alternativeLogins', []),\n\t\t\tisHttps: window.location.protocol === 'https:',\n\t\t\tisLocalhost: window.location.hostname === 'localhost',\n\t\t\thasPublicKeyCredential: typeof (window.PublicKeyCredential) !== 'undefined',\n\t\t\thideLoginForm: loadState('core', 'hideLoginForm', false),\n\t\t}\n\t},\n\n\tmethods: {\n\t\tpasswordResetFinished() {\n\t\t\tthis.resetPasswordTarget = ''\n\t\t\tthis.directLogin = true\n\t\t},\n\t\tgoTo(href) {\n\t\t\twindow.location.href = href\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\nbody {\n\tfont-size: var(--default-font-size);\n}\n\n.login-box {\n\twidth: 300px;\n\n\t&__link {\n\t\tdisplay: block;\n\t\tpadding: 1rem;\n\t\tfont-size: var(--default-font-size);\n\t\ttext-align: center;\n\t\tfont-weight: normal !important;\n\t}\n}\n.fade-enter-active, .fade-leave-active {\n\ttransition: opacity .3s;\n}\n.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\n\topacity: 0;\n}\n\n.alternative-logins {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 0.75rem;\n\n\t.button-vue {\n\t\tbox-sizing: border-box;\n\t}\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=style&index=0&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=style&index=0&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Login.vue?vue&type=template&id=7ed2300f&\"\nimport script from \"./Login.vue?vue&type=script&lang=js&\"\nexport * from \"./Login.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Login.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport L10n from '../OC/l10n'\nimport OC from '../OC/index'\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tOC,\n\t\t}\n\t},\n\tmethods: {\n\t\tt: L10n.translate.bind(L10n),\n\t\tn: L10n.translatePlural.bind(L10n),\n\t},\n}\n","/**\n * @copyright 2019 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\n\n// eslint-disable-next-line no-unused-vars\nimport OC from './OC/index' // TODO: Not needed but L10n breaks if removed\nimport LoginView from './views/Login.vue'\nimport Nextcloud from './mixins/Nextcloud'\n\nVue.mixin(Nextcloud)\n\nconst View = Vue.extend(LoginView)\nnew View().$mount('#login')\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".button-vue[data-v-756414a8]{margin-top:.5rem}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/LoginButton.vue\"],\"names\":[],\"mappings\":\"AAkEA,6BACC,gBAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.button-vue {\\n\\tmargin-top: .5rem;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".login-form[data-v-48dc6965]{text-align:left;font-size:1rem}.login-form__fieldset[data-v-48dc6965]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__headline[data-v-48dc6965]{text-align:center}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/LoginForm.vue\"],\"names\":[],\"mappings\":\"AAoOA,6BACC,eAAA,CACA,cAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,uCACC,iBAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.login-form {\\n\\ttext-align: left;\\n\\tfont-size: 1rem;\\n\\n\\t&__fieldset {\\n\\t\\twidth: 100%;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: .5rem;\\n\\t}\\n\\n\\t&__headline {\\n\\t\\ttext-align: center;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".body-login-container.update[data-v-20256748]{margin:15px 0}.body-login-container.update.form__message-box[data-v-20256748]{width:240px;margin:5px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/PasswordLessLoginForm.vue\"],\"names\":[],\"mappings\":\"AA+NA,8CACC,aAAA,CAEA,gEACC,WAAA,CACA,UAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.body-login-container.update {\\n\\tmargin: 15px 0;\\n\\n\\t&.form__message-box {\\n\\t\\twidth: 240px;\\n\\t\\tmargin: 5px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".login-form[data-v-27cabc60]{text-align:left;font-size:1rem}.login-form__fieldset[data-v-27cabc60]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__link[data-v-27cabc60]{display:block;font-weight:normal !important;padding-bottom:1rem;cursor:pointer;font-size:var(--default-font-size);text-align:center;padding:.5rem 1rem 1rem 1rem}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/ResetPassword.vue\"],\"names\":[],\"mappings\":\"AAmIA,6BACC,eAAA,CACA,cAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,mCACC,aAAA,CACA,6BAAA,CACA,mBAAA,CACA,cAAA,CACA,kCAAA,CACA,iBAAA,CACA,4BAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.login-form {\\n\\ttext-align: left;\\n\\tfont-size: 1rem;\\n\\n\\t&__fieldset {\\n\\t\\twidth: 100%;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: .5rem;\\n\\t}\\n\\n\\t&__link {\\n\\t\\tdisplay: block;\\n\\t\\tfont-weight: normal !important;\\n\\t\\tpadding-bottom: 1rem;\\n\\t\\tcursor: pointer;\\n\\t\\tfont-size: var(--default-font-size);\\n\\t\\ttext-align: center;\\n\\t\\tpadding: .5rem 1rem 1rem 1rem;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"body{font-size:var(--default-font-size)}.login-box{width:300px}.login-box__link{display:block;padding:1rem;font-size:var(--default-font-size);text-align:center;font-weight:normal !important}.fade-enter-active,.fade-leave-active{transition:opacity .3s}.fade-enter,.fade-leave-to{opacity:0}.alternative-logins{display:flex;flex-direction:column;gap:.75rem}.alternative-logins .button-vue{box-sizing:border-box}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/Login.vue\"],\"names\":[],\"mappings\":\"AAkMA,KACC,kCAAA,CAGD,WACC,WAAA,CAEA,iBACC,aAAA,CACA,YAAA,CACA,kCAAA,CACA,iBAAA,CACA,6BAAA,CAGF,sCACC,sBAAA,CAED,2BACC,SAAA,CAGD,oBACC,YAAA,CACA,qBAAA,CACA,UAAA,CAEA,gCACC,qBAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nbody {\\n\\tfont-size: var(--default-font-size);\\n}\\n\\n.login-box {\\n\\twidth: 300px;\\n\\n\\t&__link {\\n\\t\\tdisplay: block;\\n\\t\\tpadding: 1rem;\\n\\t\\tfont-size: var(--default-font-size);\\n\\t\\ttext-align: center;\\n\\t\\tfont-weight: normal !important;\\n\\t}\\n}\\n.fade-enter-active, .fade-leave-active {\\n\\ttransition: opacity .3s;\\n}\\n.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\\n\\topacity: 0;\\n}\\n\\n.alternative-logins {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 0.75rem;\\n\\n\\t.button-vue {\\n\\t\\tbox-sizing: border-box;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\nfieldset[data-v-4dc21d74] {\\n\\ttext-align: center;\\n}\\ninput[type=submit][data-v-4dc21d74] {\\n\\tmargin-top: 20px;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/UpdatePassword.vue\"],\"names\":[],\"mappings\":\";AAmIA;CACA,kBAAA;AACA;AAEA;CACA,gBAAA;AACA\",\"sourcesContent\":[\"<!--\\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\\n -\\n - @author Julius Härtl <jus@bitgrid.net>\\n -\\n - @license GNU AGPL version 3 or any later version\\n -\\n - This program is free software: you can redistribute it and/or modify\\n - it under the terms of the GNU Affero General Public License as\\n - published by the Free Software Foundation, either version 3 of the\\n - License, or (at your option) any later version.\\n -\\n - This program is distributed in the hope that it will be useful,\\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n - GNU Affero General Public License for more details.\\n -\\n - You should have received a copy of the GNU Affero General Public License\\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\\n -\\n -->\\n\\n<template>\\n\\t<form @submit.prevent=\\\"submit\\\">\\n\\t\\t<fieldset>\\n\\t\\t\\t<p>\\n\\t\\t\\t\\t<label for=\\\"password\\\" class=\\\"infield\\\">{{ t('core', 'New password') }}</label>\\n\\t\\t\\t\\t<input id=\\\"password\\\"\\n\\t\\t\\t\\t\\tv-model=\\\"password\\\"\\n\\t\\t\\t\\t\\ttype=\\\"password\\\"\\n\\t\\t\\t\\t\\tname=\\\"password\\\"\\n\\t\\t\\t\\t\\tautocomplete=\\\"new-password\\\"\\n\\t\\t\\t\\t\\tautocapitalize=\\\"none\\\"\\n\\t\\t\\t\\t\\tautocorrect=\\\"off\\\"\\n\\t\\t\\t\\t\\trequired\\n\\t\\t\\t\\t\\t:placeholder=\\\"t('core', 'New password')\\\">\\n\\t\\t\\t</p>\\n\\n\\t\\t\\t<div v-if=\\\"encrypted\\\" class=\\\"update\\\">\\n\\t\\t\\t\\t<p>\\n\\t\\t\\t\\t\\t{{ t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?') }}\\n\\t\\t\\t\\t</p>\\n\\t\\t\\t\\t<input id=\\\"encrypted-continue\\\"\\n\\t\\t\\t\\t\\tv-model=\\\"proceed\\\"\\n\\t\\t\\t\\t\\ttype=\\\"checkbox\\\"\\n\\t\\t\\t\\t\\tclass=\\\"checkbox\\\">\\n\\t\\t\\t\\t<label for=\\\"encrypted-continue\\\">\\n\\t\\t\\t\\t\\t{{ t('core', 'I know what I\\\\'m doing') }}\\n\\t\\t\\t\\t</label>\\n\\t\\t\\t</div>\\n\\n\\t\\t\\t<LoginButton :loading=\\\"loading\\\"\\n\\t\\t\\t\\t:value=\\\"t('core', 'Reset password')\\\"\\n\\t\\t\\t\\t:value-loading=\\\"t('core', 'Resetting password')\\\" />\\n\\n\\t\\t\\t<p v-if=\\\"error && message\\\" :class=\\\"{warning: error}\\\">\\n\\t\\t\\t\\t{{ message }}\\n\\t\\t\\t</p>\\n\\t\\t</fieldset>\\n\\t</form>\\n</template>\\n\\n<script>\\nimport Axios from '@nextcloud/axios'\\nimport LoginButton from './LoginButton.vue'\\n\\nexport default {\\n\\tname: 'UpdatePassword',\\n\\tcomponents: {\\n\\t\\tLoginButton,\\n\\t},\\n\\tprops: {\\n\\t\\tusername: {\\n\\t\\t\\ttype: String,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t\\tresetPasswordTarget: {\\n\\t\\t\\ttype: String,\\n\\t\\t\\trequired: true,\\n\\t\\t},\\n\\t},\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\terror: false,\\n\\t\\t\\tloading: false,\\n\\t\\t\\tmessage: undefined,\\n\\t\\t\\tuser: this.username,\\n\\t\\t\\tpassword: '',\\n\\t\\t\\tencrypted: false,\\n\\t\\t\\tproceed: false,\\n\\t\\t}\\n\\t},\\n\\twatch: {\\n\\t\\tusername(value) {\\n\\t\\t\\tthis.user = value\\n\\t\\t},\\n\\t},\\n\\tmethods: {\\n\\t\\tasync submit() {\\n\\t\\t\\tthis.loading = true\\n\\t\\t\\tthis.error = false\\n\\t\\t\\tthis.message = ''\\n\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tconst { data } = await Axios.post(this.resetPasswordTarget, {\\n\\t\\t\\t\\t\\tpassword: this.password,\\n\\t\\t\\t\\t\\tproceed: this.proceed,\\n\\t\\t\\t\\t})\\n\\t\\t\\t\\tif (data && data.status === 'success') {\\n\\t\\t\\t\\t\\tthis.message = 'send-success'\\n\\t\\t\\t\\t\\tthis.$emit('update:username', this.user)\\n\\t\\t\\t\\t\\tthis.$emit('done')\\n\\t\\t\\t\\t} else if (data && data.encryption) {\\n\\t\\t\\t\\t\\tthis.encrypted = true\\n\\t\\t\\t\\t} else if (data && data.msg) {\\n\\t\\t\\t\\t\\tthrow new Error(data.msg)\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tthrow new Error()\\n\\t\\t\\t\\t}\\n\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\tthis.error = true\\n\\t\\t\\t\\tthis.message = e.message ? e.message : t('core', 'Password cannot be changed. Please contact your administrator.')\\n\\t\\t\\t} finally {\\n\\t\\t\\t\\tthis.loading = false\\n\\t\\t\\t}\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n\\n<style scoped>\\n\\tfieldset {\\n\\t\\ttext-align: center;\\n\\t}\\n\\n\\tinput[type=submit] {\\n\\t\\tmargin-top: 20px;\\n\\t}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.program(5, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":1},\"end\":{\"line\":10,\"column\":8}}})) != null ? stack1 : \"\");\n},\"2\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":2},\"end\":{\"line\":7,\"column\":9}}})) != null ? stack1 : \"\");\n},\"3\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t<a class=\\\"profile-link--avatar\\\" href=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n + \"\\\">\\n\t\t\t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32\\\" class=\\\"avatar\\\" srcset=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32 1x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=64 2x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=128 4x\\\" alt=\\\"\\\">\\n\t\t\t</a>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32\\\" class=\\\"avatar\\\" srcset=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=32 1x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=64 2x, \"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1), depth0))\n + \"&size=128 4x\\\" alt=\\\"\\\">\\n\";\n},\"7\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(8, data, 0),\"inverse\":container.program(11, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":12,\"column\":1},\"end\":{\"line\":20,\"column\":8}}})) != null ? stack1 : \"\");\n},\"8\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(9, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":13,\"column\":2},\"end\":{\"line\":17,\"column\":9}}})) != null ? stack1 : \"\");\n},\"9\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t<a class=\\\"profile-link--avatar\\\" href=\\\"\"\n + container.escapeExpression(container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n + \"\\\">\\n\t\t\t\t<div class=\\\"avatar\\\"></div>\\n\t\t\t</a>\\n\";\n},\"11\":function(container,depth0,helpers,partials,data) {\n return \"\t\t<div class=\\\"avatar\\\"></div>\\n\";\n},\"13\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileTitle\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(14, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":23,\"column\":1},\"end\":{\"line\":29,\"column\":8}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(16, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":30,\"column\":1},\"end\":{\"line\":34,\"column\":8}}})) != null ? stack1 : \"\");\n},\"14\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t<a class=\\\"body profile-link--full-name\\\" href=\\\"\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1), depth0))\n + \"\\\">\\n\t\t\t<div class=\\\"full-name\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n + \"</div>\\n\t\t\t<div class=\\\"last-message\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n + \"</div>\\n\t\t\t<div class=\\\"email-address\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n + \"</div>\\n\t\t</a>\\n\";\n},\"16\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t<a class=\\\"top-action\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\" title=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t\t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"icon\") : stack1), depth0))\n + \"\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t\t</a>\\n\";\n},\"18\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(19, data, 0),\"inverse\":container.program(21, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":35,\"column\":0},\"end\":{\"line\":50,\"column\":0}}})) != null ? stack1 : \"\");\n},\"19\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t<a class=\\\"body\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\">\\n\t\t<div class=\\\"full-name\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"last-message\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"email-address\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n + \"</div>\\n\t</a>\\n \t<a class=\\\"top-action\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\" title=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n \t\t<img src=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"icon\") : stack1), depth0))\n + \"\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"topAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t</a>\\n\";\n},\"21\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t<div class=\\\"body\\\">\\n\t\t<div class=\\\"full-name\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"fullName\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"last-message\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"lastMessage\") : stack1), depth0))\n + \"</div>\\n\t\t<div class=\\\"email-address\\\">\"\n + alias2(alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"emailAddresses\") : stack1), depth0))\n + \"</div>\\n\t</div>\\n\";\n},\"23\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<a class=\\\"second-action\\\" href=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"hyperlink\") : stack1), depth0))\n + \"\\\" title=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n\t<img src=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"icon\") : stack1), depth0))\n + \"\\\" alt=\\\"\"\n + alias2(alias1(((stack1 = ((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"secondAction\") : stack1)) != null ? lookupProperty(stack1,\"title\") : stack1), depth0))\n + \"\\\">\\n</a>\\n\";\n},\"25\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t<button class=\\\"other-actions icon-more\\\"></button>\\n\t<div class=\\\"menu popovermenu\\\">\\n\t\t<ul>\\n\"\n + ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"actions\") : stack1),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(26, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":60,\"column\":3},\"end\":{\"line\":67,\"column\":12}}})) != null ? stack1 : \"\")\n + \"\t\t</ul>\\n\t</div>\\n\";\n},\"26\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t<li>\\n\t\t\t\t<a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"hyperlink\") || (depth0 != null ? lookupProperty(depth0,\"hyperlink\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"hyperlink\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":62,\"column\":13},\"end\":{\"line\":62,\"column\":26}}}) : helper)))\n + \"\\\">\\n\t\t\t\t\t<img src=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"icon\") || (depth0 != null ? lookupProperty(depth0,\"icon\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"icon\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":63,\"column\":15},\"end\":{\"line\":63,\"column\":23}}}) : helper)))\n + \"\\\" alt=\\\"\\\">\\n\t\t\t\t\t<span>\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"title\") || (depth0 != null ? lookupProperty(depth0,\"title\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"title\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":64,\"column\":11},\"end\":{\"line\":64,\"column\":20}}}) : helper)))\n + \"</span>\\n\t\t\t\t</a>\\n\t\t\t</li>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"avatar\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.program(7, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":21,\"column\":7}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"profileUrl\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(13, data, 0),\"inverse\":container.program(18, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":22,\"column\":0},\"end\":{\"line\":50,\"column\":7}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"hasTwoActions\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(23, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":51,\"column\":0},\"end\":{\"line\":55,\"column\":7}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contact\") : depth0)) != null ? lookupProperty(stack1,\"hasManyActions\") : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(25, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":56,\"column\":0},\"end\":{\"line\":70,\"column\":7}}})) != null ? stack1 : \"\");\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-search\\\"></div>\\n\t<h2>\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"couldNotLoadText\") || (depth0 != null ? lookupProperty(depth0,\"couldNotLoadText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"couldNotLoadText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":5},\"end\":{\"line\":3,\"column\":25}}}) : helper)))\n + \"</h2>\\n</div>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-search\\\"></div>\\n\t<h2>\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"noContactsFoundText\") || (depth0 != null ? lookupProperty(depth0,\"noContactsFoundText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"noContactsFoundText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":5},\"end\":{\"line\":4,\"column\":28}}}) : helper)))\n + \"</h2>\\n</div>\\n\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"footer\\\"><a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppURL\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppURL\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppURL\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":29},\"end\":{\"line\":9,\"column\":47}}}) : helper)))\n + \"\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"showAllContactsText\") || (depth0 != null ? lookupProperty(depth0,\"showAllContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"showAllContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":49},\"end\":{\"line\":9,\"column\":72}}}) : helper)))\n + \"</a></div>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"canInstallApp\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(6, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":10,\"column\":0},\"end\":{\"line\":12,\"column\":0}}})) != null ? stack1 : \"\");\n},\"6\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"footer\\\"><a href=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppMgmtURL\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppMgmtURL\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppMgmtURL\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":29},\"end\":{\"line\":11,\"column\":51}}}) : helper)))\n + \"\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"contactsAppMgmtText\") || (depth0 != null ? lookupProperty(depth0,\"contactsAppMgmtText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"contactsAppMgmtText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":53},\"end\":{\"line\":11,\"column\":76}}}) : helper)))\n + \"</a></div>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,((stack1 = (depth0 != null ? lookupProperty(depth0,\"contacts\") : depth0)) != null ? lookupProperty(stack1,\"length\") : stack1),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":6,\"column\":11}}})) != null ? stack1 : \"\")\n + \"<div id=\\\"contactsmenu-contacts\\\"></div>\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"contactsAppEnabled\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.program(5, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":8,\"column\":0},\"end\":{\"line\":12,\"column\":7}}})) != null ? stack1 : \"\");\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<div class=\\\"emptycontent\\\">\\n\t<div class=\\\"icon-loading\\\"></div>\\n\t<h2>\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"loadingText\") || (depth0 != null ? lookupProperty(depth0,\"loadingText\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"loadingText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":5},\"end\":{\"line\":3,\"column\":20}}}) : helper)))\n + \"</h2>\\n</div>\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"<label class=\\\"hidden-visually\\\" for=\\\"contactsmenu-search\\\">\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"searchContactsText\") || (depth0 != null ? lookupProperty(depth0,\"searchContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":57},\"end\":{\"line\":1,\"column\":79}}}) : helper)))\n + \"</label>\\n<input id=\\\"contactsmenu-search\\\" type=\\\"search\\\" placeholder=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"searchContactsText\") || (depth0 != null ? lookupProperty(depth0,\"searchContactsText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchContactsText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":59},\"end\":{\"line\":2,\"column\":81}}}) : helper)))\n + \"\\\" value=\\\"\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"searchTerm\") || (depth0 != null ? lookupProperty(depth0,\"searchTerm\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"searchTerm\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":90},\"end\":{\"line\":2,\"column\":104}}}) : helper)))\n + \"\\\">\\n<div class=\\\"content\\\">\\n</div>\\n\";\n},\"useData\":true});","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 30094,\n\t\"./hi.js\": 30094,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 4577;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t4577: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], function() { return __webpack_require__(87521); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","loadedScripts","loadedStyles","updatableNotification","getDefaultNotificationFunction","setDefault","callback","this","hide","$row","_","undefined","each","$","toastify","hideToast","console","error","call","showHtml","html","options","isHTML","timeout","TOAST_PERMANENT_TIMEOUT","toast","showMessage","toastElement","show","text","toString","split","join","escapeHTML","showUpdate","showTemporary","TOAST_DEFAULT_TIMEOUT","isHidden","find","length","ajaxConnectionLostHandler","Notification","t","trailing","enableDynamicSlideToggle","Apps","$el","removeClass","trigger","addClass","method","endpoint","OC","type","toUpperCase","url","generateOcsUrl","data","success","bind","appConfig","window","oc_appconfig","AppConfig","getValue","app","key","defaultValue","setValue","value","getApps","getKeys","deleteKey","_oc_appswebroots","methodMap","create","update","patch","delete","read","parsePropFindResult","result","davProperties","subResult","props","href","propStat","status","properties","propKey","id","parseIdFromLocation","queryPos","indexOf","substr","parts","pop","isSuccessStatus","callPropPatch","client","model","headers","propPatch","attrs","changedProp","warn","convertModelAttributesToDavProperties","changed","then","toJSON","Backbone","VendorBackbone","Object","assign","davCall","dav","baseUrl","xmlNamespaces","resolveUrl","requestToken","propFind","depth","response","propsMapping","results","body","shift","callPropFind","request","callMkCol","responseJson","locationHeader","xhr","getResponseHeader","callMethod","davSync","params","isCollection","Collection","hasInnerCollection","usePUT","collection","Error","urlError","JSON","stringify","processData","prototype","textStatus","errorThrown","context","_oc_config","Contact","Model","defaults","fullName","lastMessage","actions","hasOneAction","hasTwoActions","hasManyActions","initialize","get","set","ContactCollection","ContactsListView","View","_collection","_subViews","render","self","forEach","contact","item","ContactsListItemView","append","on","_onChildActionMenuToggle","push","$src","view","className","_template","_model","_actionMenuShown","events","contactTemplate","require","template","_onOtherActionMenuOpened","delegateEvents","imageplaceholder","tooltip","placement","_onToggleActionsMenu","is","ContactsMenuView","_loadingTemplate","_errorTemplate","_contentTemplate","_contactsTemplate","_contacts","_searchTerm","templates","loading","menu","list","_onSearch","e","searchTerm","val","loadingTemplate","errorTemplate","couldNotLoadText","contentTemplate","searchContactsText","contactsTemplate","noContactsFoundText","showAllContactsText","contactsAppMgmtText","showLoading","loadingText","showError","showContacts","viewData","contacts","contactsAppEnabled","contactsAppURL","canInstallApp","contactsAppMgmtURL","searchVal","focus","ContactsMenu","_$trigger","_view","_contactsPromise","el","_loadContacts","_toggleVisibility","Promise","resolve","_getContacts","filter","term","catch","rawUid","document","getElementsByTagName","getAttribute","displayName","currentUser","Search","isA11yActivation","event","global","emit","token","Dialogs","YES_NO_BUTTONS","OK_BUTTONS","FILEPICKER_TYPE_CHOOSE","FILEPICKER_TYPE_MOVE","FILEPICKER_TYPE_COPY","FILEPICKER_TYPE_COPY_MOVE","FILEPICKER_TYPE_CUSTOM","dialogsCounter","alert","title","modal","message","OK_BUTTON","info","confirm","confirmDestructive","buttons","confirmHtml","prompt","name","password","_getMessageTemplate","$tmpl","dialogName","dialogId","$dlg","octemplate","dialog_name","input","attr","label","buttonlist","click","ocdialog","defaultButton","closeOnEscape","close","filepicker","multiselect","mimetypeFilter","path","sortField","sortOrder","emptyText","newText","filesClient","OCA","Sharing","PublicApp","fileList","filelist","allowDirectoryChooser","_getFilePickerTemplate","$filePicker","emptytext","newtext","nameCol","sizeCol","modifiedCol","prepend","$showGridView","_onGridviewChange","_getGridSettings","newButton","stopImmediatePropagation","preventDefault","$input","submit","newName","lastPos","lastIndexOf","selectRange","$form","$submit","stopPropagation","filename","trimmedName","trim","match","isFileNameValid","file","escape","checkInput","newname","createDirectory","always","_fillFilePicker","ready","$fileListHeader","$filelist","$filelistContainer","$dirTree","_handleTreeListSelect","_handlePickerClick","dir","currentTarget","functionToCall","returnType","datapath","index","element","selectedName","button","width","height","style","remove","buttonEnableDisable","closest","prop","fail","content","dialogType","allowHtml","escapeFunction","cancel","classes","confirmClasses","closeCallback","_fileexistsshown","fileexists","original","replacement","controller","dialogDeferred","resampleHermite","canvas","W","H","W2","H2","Math","round","img","getContext","getImageData","img2","data2","ratio_w","ratio_h","ratio_w_half","ceil","ratio_h_half","j","i","x2","weight","weights","weights_alpha","gx_r","gx_g","gx_b","gx_a","center_y","yy","floor","dy","abs","center_x","w0","xx","dx","w","sqrt","clearRect","max","putImageData","addConflict","$conflicts","$conflict","clone","$originalDiv","$replacementDiv","size","mtime","lastModified","directory","urlSpec","x","y","c","etag","forceIcon","previewpath","Files","generatePreviewUrl","replace","css","FileReader","reader","onload","blob","Blob","target","URL","webkitURL","originalUrl","createObjectURL","image","Image","src","createElement","min","drawImage","toDataURL","readAsArrayBuffer","reject","getCroppedPreview","checkboxId","count","n","parent","children","_getFileExistsTemplate","allnewfiles","allexistingfiles","why","what","onCancel","onContinue","closeButton","$primaryButton","updatePrimaryButton","checkedCount","$checkbox","promise","gridview","toggleClass","isGridView","hasClass","defer","$filePickerTemplate","tmpl","$listTmpl","detach","jqXHR","$messageTemplate","$fileexistsTemplate","_getFileList","mimeType","mimetypes","empty","advancedFilter","getFolderContents","files","mimetype","showHiddenInput","getElementById","startsWith","comparator","Comparators","fileInfo1","fileInfo2","sort","file1","file2","isFavorite","fileInfo","tags","_fillSlug","idx","entry","simpleSize","sizeColor","isEncrypted","icon","parseInt","pow","filename1","filename2","date","previewUrl","addButton","$template","paths","prependTo","getOcDialog","_changeButtonsText","$element","ctrlKey","copyText","folder","moveText","eq","getToken","setToken","newToken","OCEventSource","joinChar","dataStr","typelessListeners","closed","listeners","encodeURIComponent","useFallBack","EventSource","iframeId","iframeCount","fallBackSources","iframe","source","onmessage","parse","listen","fallBackCallBack","done","lastLength","addEventListener","currentMenu","currentMenuToggle","hideMenus","complete","lastMenu","slideUp","apply","arguments","isAdmin","_oc_isadmin","_oc_l10n_registry_translations","_oc_l10n_registry_plural_functions","hasAppTranslations","appId","getAppTranslations","translations","pluralFunction","L10n","load","appName","generateFilePath","register","pluralForm","bundle","_getPlural","extend","_unregister","translate","vars","allOptions","sanitize","optSanitize","DOMPurify","identity","optEscape","translation","a","b","r","_build","translatePlural","textSingular","textPlural","identifier","plural","number","language","substring","Handlebars","startSaving","selector","startAction","stop","finishedSaving","finishedAction","finishedSuccess","finishedError","delay","fadeOut","pageLoadTime","init","requirePasswordConfirmation","moment","requiresPasswordConfirmation","serverTimeDiff","nc_pageLoad","timeSinceLogin","nc_lastLogin","backendAllowsPasswordConfirmation","rejectCallback","config","_confirmPassword","$dialog","$error","$buttons","generateUrl","lastLogin","theme","_theme","_handlers","_pushState","strParams","history","pushState","location","pathname","navigator","userAgent","toLowerCase","pattern","patterns","querySelectorAll","ii","fill","stroke","removeAttribute","setAttribute","replaceState","hash","_cancelPop","addOnPopStateHandler","handler","_parseHashQuery","pos","_decodeQuery","query","parseUrlQuery","search","_onPopState","state","chunkify","tz","charAt","m","History","humanFileSize","computerFileSize","string","s","bytes","matches","parseFloat","isFinite","k","kb","mb","gb","g","tb","pb","p","formatDate","timestamp","format","TESTING","relativeModifiedDate","diff","fromNow","getScrollBarWidth","_scrollBarWidth","inner","outer","position","top","left","visibility","overflow","appendChild","w1","offsetWidth","w2","clientWidth","removeChild","stripTime","Date","getFullYear","getMonth","getDate","naturalSortCompare","aa","bb","aNum","Number","bNum","localeCompare","waitFor","interval","internalCallback","setTimeout","isCookieSetToValue","cookies","cookie","debug","_oc_debug","webroot","_oc_webroot","coreApps","menuSpeed","PERMISSION_ALL","PERMISSION_CREATE","PERMISSION_DELETE","PERMISSION_NONE","PERMISSION_READ","PERMISSION_SHARE","PERMISSION_UPDATE","TAG_FAVORITE","fileIsBlacklisted","Config","addScript","script","addStyle","createStyleSheet","appSettings","args","appid","scriptName","cache","settings","popup","arrowclass","loadJS","scriptname","jqxhr","appswebroots","dialogs","getCurrentUser","uid","isUserAdmin","L10N","_ajaxConnectionLostHandler","_processAjaxError","statusText","timer","setInterval","clearInterval","registerXHRForErrorProcessing","readyState","getCapabilities","realGetCapabilities","registerMenu","$toggle","$menuEl","toggle","headerMenu","isClickableElement","slideToggle","showMenu","unregisterMenu","off","basename","encodePath","dirname","isSamePath","joinPaths","getHost","host","getHostName","hostname","getPort","port","getProtocol","protocol","getCanonicalLocale","getLocale","getLanguage","addTranslations","buildQueryString","parseQueryString","queryString","components","part","decodeURIComponent","msg","PasswordConfirmation","Plugins","_plugins","targetName","plugin","plugins","getPlugins","attach","targetObject","Util","filePath","namespaces","tail","getRootPath","getRootUrl","imagePath","redirect","targetURL","reload","getRequestToken","linkTo","linkToOCS","service","version","ocsVersion","linkToRemote","generateRemoteUrl","linkToRemoteBase","realGetRootUrl","subscribe","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","_h","$createElement","_c","_self","$event","$emit","scopedSlots","_u","fn","staticClass","proxy","_v","_s","valueLoading","ref","loginActionUrl","_e","messages","_l","class","loadingIcon","staticStyle","domProps","headline","shake","invalidPassword","user","autoCompleteAllowed","updateUsername","errorLabel","isError","redirectUrl","timezone","timezoneOffset","loginName","Axios","resp","isHttps","isLocalhost","hasPublicKeyCredential","directives","rawName","expression","composing","validCredentials","authenticate","Array","isArray","proceed","_i","$$a","$$el","$$c","checked","$$i","concat","slice","warning","clear","hideLoginForm","directLogin","passwordlessLogin","resetPassword","resetPasswordTarget","canResetPassword","resetPasswordLink","passwordResetFinished","errors","throttleDelay","countAlternativeLogins","alternativeLogin","goTo","methods","Vue","Nextcloud","LoginView","$mount","___CSS_LOADER_EXPORT___","module","exports","container","depth0","helpers","partials","stack1","lookupProperty","propertyName","hasOwnProperty","nullContext","program","noop","alias1","lambda","alias2","escapeExpression","helper","hooks","helperMissing","alias3","alias4","map","webpackContext","req","webpackContextResolve","__webpack_require__","o","code","keys","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","amdD","amdO","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","every","splice","getter","__esModule","d","definition","defineProperty","enumerable","globalThis","Function","obj","Symbol","toStringTag","nmd","baseURI","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","nc","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file diff --git a/dist/files_sharing-files_sharing_tab.js b/dist/files_sharing-files_sharing_tab.js index e8830ef7f31..dc9557a8e73 100644 --- a/dist/files_sharing-files_sharing_tab.js +++ b/dist/files_sharing-files_sharing_tab.js @@ -1,3 +1,3 @@ /*! For license information please see files_sharing-files_sharing_tab.js.LICENSE.txt */ -!function(){"use strict";var n,e={77217:function(n,e,r){var i=r(20144),a=r(72268),s=r.n(a),o=r(9944),c=r(1794),l=r(79753),u=r(75925),h=r.n(u),d=r(4820),p=r(16453);function f(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}var g=function(){function n(){!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n)}var e,t;return e=n,(t=[{key:"isPublicUploadEnabled",get:function(){return document.getElementsByClassName("files-filestable")[0]&&"yes"===document.getElementsByClassName("files-filestable")[0].dataset.allowPublicUpload}},{key:"isShareWithLinkAllowed",get:function(){return document.getElementById("allowShareWithLink")&&"yes"===document.getElementById("allowShareWithLink").value}},{key:"federatedShareDocLink",get:function(){return OC.appConfig.core.federatedCloudShareDoc}},{key:"defaultExpirationDate",get:function(){return this.isDefaultExpireDateEnabled?new Date((new Date).setDate((new Date).getDate()+this.defaultExpireDate)):null}},{key:"defaultInternalExpirationDate",get:function(){return this.isDefaultInternalExpireDateEnabled?new Date((new Date).setDate((new Date).getDate()+this.defaultInternalExpireDate)):null}},{key:"defaultRemoteExpirationDateString",get:function(){return this.isDefaultRemoteExpireDateEnabled?new Date((new Date).setDate((new Date).getDate()+this.defaultRemoteExpireDate)):null}},{key:"enforcePasswordForPublicLink",get:function(){return!0===OC.appConfig.core.enforcePasswordForPublicLink}},{key:"enableLinkPasswordByDefault",get:function(){return!0===OC.appConfig.core.enableLinkPasswordByDefault}},{key:"isDefaultExpireDateEnforced",get:function(){return!0===OC.appConfig.core.defaultExpireDateEnforced}},{key:"isDefaultExpireDateEnabled",get:function(){return!0===OC.appConfig.core.defaultExpireDateEnabled}},{key:"isDefaultInternalExpireDateEnforced",get:function(){return!0===OC.appConfig.core.defaultInternalExpireDateEnforced}},{key:"isDefaultRemoteExpireDateEnforced",get:function(){return!0===OC.appConfig.core.defaultRemoteExpireDateEnforced}},{key:"isDefaultInternalExpireDateEnabled",get:function(){return!0===OC.appConfig.core.defaultInternalExpireDateEnabled}},{key:"isDefaultRemoteExpireDateEnabled",get:function(){return!0===OC.appConfig.core.defaultRemoteExpireDateEnabled}},{key:"isRemoteShareAllowed",get:function(){return!0===OC.appConfig.core.remoteShareAllowed}},{key:"isMailShareAllowed",get:function(){var n,e,t,r=OC.getCapabilities();return void 0!==(null==r||null===(n=r.files_sharing)||void 0===n?void 0:n.sharebymail)&&!0===(null==r||null===(e=r.files_sharing)||void 0===e||null===(t=e.public)||void 0===t?void 0:t.enabled)}},{key:"defaultExpireDate",get:function(){return OC.appConfig.core.defaultExpireDate}},{key:"defaultInternalExpireDate",get:function(){return OC.appConfig.core.defaultInternalExpireDate}},{key:"defaultRemoteExpireDate",get:function(){return OC.appConfig.core.defaultRemoteExpireDate}},{key:"isResharingAllowed",get:function(){return!0===OC.appConfig.core.resharingAllowed}},{key:"isPasswordForMailSharesRequired",get:function(){return void 0!==OC.getCapabilities().files_sharing.sharebymail&&OC.getCapabilities().files_sharing.sharebymail.password.enforced}},{key:"shouldAlwaysShowUnique",get:function(){var n,e;return!0===(null===(n=OC.getCapabilities().files_sharing)||void 0===n||null===(e=n.sharee)||void 0===e?void 0:e.always_show_unique)}},{key:"allowGroupSharing",get:function(){return!0===OC.appConfig.core.allowGroupSharing}},{key:"maxAutocompleteResults",get:function(){return parseInt(OC.config["sharing.maxAutocompleteResults"],10)||25}},{key:"minSearchStringLength",get:function(){return parseInt(OC.config["sharing.minSearchStringLength"],10)||0}},{key:"passwordPolicy",get:function(){var n=OC.getCapabilities();return n.password_policy?n.password_policy:{}}}])&&f(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}(),m=r(41922);function _(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}var v=function(){function n(e){var t,r,i;if(function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),i=void 0,(r="_share")in this?Object.defineProperty(this,r,{value:i,enumerable:!0,configurable:!0,writable:!0}):this[r]=i,e.ocs&&e.ocs.data&&e.ocs.data[0]&&(e=e.ocs.data[0]),e.hide_download=!!e.hide_download,e.mail_send=!!e.mail_send,e.attributes)try{e.attributes=JSON.parse(e.attributes)}catch(n){console.warn('Could not parse share attributes returned by server: "'+e.attributes+'"')}e.attributes=null!==(t=e.attributes)&&void 0!==t?t:[],this._share=e}var e,t;return e=n,(t=[{key:"state",get:function(){return this._share}},{key:"id",get:function(){return this._share.id}},{key:"type",get:function(){return this._share.share_type}},{key:"permissions",get:function(){return this._share.permissions},set:function(n){this._share.permissions=n}},{key:"attributes",get:function(){return this._share.attributes}},{key:"owner",get:function(){return this._share.uid_owner}},{key:"ownerDisplayName",get:function(){return this._share.displayname_owner}},{key:"shareWith",get:function(){return this._share.share_with}},{key:"shareWithDisplayName",get:function(){return this._share.share_with_displayname||this._share.share_with}},{key:"shareWithDisplayNameUnique",get:function(){return this._share.share_with_displayname_unique||this._share.share_with}},{key:"shareWithLink",get:function(){return this._share.share_with_link}},{key:"shareWithAvatar",get:function(){return this._share.share_with_avatar}},{key:"uidFileOwner",get:function(){return this._share.uid_file_owner}},{key:"displaynameFileOwner",get:function(){return this._share.displayname_file_owner||this._share.uid_file_owner}},{key:"createdTime",get:function(){return this._share.stime}},{key:"expireDate",get:function(){return this._share.expiration},set:function(n){this._share.expiration=n}},{key:"token",get:function(){return this._share.token}},{key:"note",get:function(){return this._share.note},set:function(n){this._share.note=n}},{key:"label",get:function(){return this._share.label},set:function(n){this._share.label=n}},{key:"mailSend",get:function(){return!0===this._share.mail_send}},{key:"hideDownload",get:function(){return!0===this._share.hide_download},set:function(n){this._share.hide_download=!0===n}},{key:"password",get:function(){return this._share.password},set:function(n){this._share.password=n}},{key:"passwordExpirationTime",get:function(){return this._share.password_expiration_time},set:function(n){this._share.password_expiration_time=n}},{key:"sendPasswordByTalk",get:function(){return this._share.send_password_by_talk},set:function(n){this._share.send_password_by_talk=n}},{key:"path",get:function(){return this._share.path}},{key:"itemType",get:function(){return this._share.item_type}},{key:"mimetype",get:function(){return this._share.mimetype}},{key:"fileSource",get:function(){return this._share.file_source}},{key:"fileTarget",get:function(){return this._share.file_target}},{key:"fileParent",get:function(){return this._share.file_parent}},{key:"hasReadPermission",get:function(){return!!(this.permissions&OC.PERMISSION_READ)}},{key:"hasCreatePermission",get:function(){return!!(this.permissions&OC.PERMISSION_CREATE)}},{key:"hasDeletePermission",get:function(){return!!(this.permissions&OC.PERMISSION_DELETE)}},{key:"hasUpdatePermission",get:function(){return!!(this.permissions&OC.PERMISSION_UPDATE)}},{key:"hasSharePermission",get:function(){return!!(this.permissions&OC.PERMISSION_SHARE)}},{key:"hasDownloadPermission",get:function(){for(var n in this._share.attributes){var e=this._share.attributes[n];if("permissions"===e.scope&&"download"===e.key)return e.enabled}return!0},set:function(n){this.setAttribute("permissions","download",!!n)}},{key:"setAttribute",value:function(n,e,t){var r={scope:n,key:e,enabled:t};for(var i in this._share.attributes){var a=this._share.attributes[i];if(a.scope===r.scope&&a.key===r.key)return void(this._share.attributes[i]=r)}this._share.attributes.push(r)}},{key:"canEdit",get:function(){return!0===this._share.can_edit}},{key:"canDelete",get:function(){return!0===this._share.can_delete}},{key:"viaFileid",get:function(){return this._share.via_fileid}},{key:"viaPath",get:function(){return this._share.via_path}},{key:"parent",get:function(){return this._share.parent}},{key:"storageId",get:function(){return this._share.storage_id}},{key:"storage",get:function(){return this._share.storage}},{key:"itemSource",get:function(){return this._share.item_source}},{key:"status",get:function(){return this._share.status}}])&&_(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}(),A={data:function(){return{SHARE_TYPES:m.D}}},y=r(15961),w=r(12945),b=r.n(w),E=r(15168),S=r.n(E),C={name:"SharingEntrySimple",components:{NcActions:b()},directives:{Tooltip:S()},props:{title:{type:String,default:"",required:!0},tooltip:{type:String,default:""},subtitle:{type:String,default:""},isUnique:{type:Boolean,default:!0},ariaExpanded:{type:Boolean,default:null}},computed:{ariaExpandedValue:function(){return null===this.ariaExpanded?this.ariaExpanded:this.ariaExpanded?"true":"false"}}},x=r(93379),k=r.n(x),P=r(7795),D=r.n(P),T=r(90569),R=r.n(T),N=r(3565),O=r.n(N),I=r(19216),L=r.n(I),H=r(44589),U=r.n(H),Y=r(25027),M={};M.styleTagTransform=U(),M.setAttributes=O(),M.insert=R().bind(null,"head"),M.domAPI=D(),M.insertStyleElement=L(),k()(Y.Z,M),Y.Z&&Y.Z.locals&&Y.Z.locals;var B=r(51900),j=(0,B.Z)(C,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("li",{staticClass:"sharing-entry"},[n._t("avatar"),n._v(" "),t("div",{directives:[{name:"tooltip",rawName:"v-tooltip",value:n.tooltip,expression:"tooltip"}],staticClass:"sharing-entry__desc"},[t("span",{staticClass:"sharing-entry__title"},[n._v(n._s(n.title))]),n._v(" "),n.subtitle?t("p",[n._v("\n\t\t\t"+n._s(n.subtitle)+"\n\t\t")]):n._e()]),n._v(" "),n.$slots.default?t("NcActions",{ref:"actionsComponent",staticClass:"sharing-entry__actions",attrs:{"menu-align":"right","aria-expanded":n.ariaExpandedValue}},[n._t("default")],2):n._e()],2)}),[],!1,null,"73184f79",null).exports,W=r(14625),F=r(4584);function q(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}var $={name:"SharingEntryInternal",components:{Check:W.default,ClipboardTextMultipleOutline:F.Z,NcActionButton:y.Js,SharingEntrySimple:j},props:{fileInfo:{type:Object,default:function(){},required:!0}},data:function(){return{copied:!1,copySuccess:!1}},computed:{internalLink:function(){return window.location.protocol+"//"+window.location.host+(0,l.generateUrl)("/f/")+this.fileInfo.id},clipboardTooltip:function(){return this.copied?this.copySuccess?t("files_sharing","Link copied"):t("files_sharing","Cannot copy, please copy the link manually"):t("files_sharing","Copy to clipboard")},internalLinkSubtitle:function(){return"dir"===this.fileInfo.type?t("files_sharing","Only works for users with access to this folder"):t("files_sharing","Only works for users with access to this file")}},methods:{copyLink:function(){var n,e=this;return(n=regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,e.$copyText(e.internalLink);case 3:e.$refs.shareEntrySimple.$refs.actionsComponent.$el.focus(),e.copySuccess=!0,e.copied=!0,n.next=13;break;case 8:n.prev=8,n.t0=n.catch(0),e.copySuccess=!1,e.copied=!0,console.error(n.t0);case 13:return n.prev=13,setTimeout((function(){e.copySuccess=!1,e.copied=!1}),4e3),n.finish(13);case 16:case"end":return n.stop()}}),n,null,[[0,8,13,16]])})),function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){q(a,r,i,s,o,"next",n)}function o(n){q(a,r,i,s,o,"throw",n)}s(void 0)}))})()}}},Z=$,G=r(12158),V={};V.styleTagTransform=U(),V.setAttributes=O(),V.insert=R().bind(null,"head"),V.domAPI=D(),V.insertStyleElement=L(),k()(G.Z,V),G.Z&&G.Z.locals&&G.Z.locals;var z=(0,B.Z)(Z,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("ul",[t("SharingEntrySimple",{ref:"shareEntrySimple",staticClass:"sharing-entry__internal",attrs:{title:n.t("files_sharing","Internal link"),subtitle:n.internalLinkSubtitle},scopedSlots:n._u([{key:"avatar",fn:function(){return[t("div",{staticClass:"avatar-external icon-external-white"})]},proxy:!0}])},[n._v(" "),t("NcActionButton",{attrs:{"aria-label":n.t("files_sharing","Copy internal link to clipboard")},on:{click:function(e){return e.preventDefault(),n.copyLink.apply(null,arguments)}},scopedSlots:n._u([{key:"icon",fn:function(){return[n.copied&&n.copySuccess?t("Check",{attrs:{size:20}}):t("ClipboardTextMultipleOutline",{attrs:{size:20}})]},proxy:!0}])},[n._v("\n\t\t\t"+n._s(n.clipboardTooltip)+"\n\t\t")])],1)],1)}),[],!1,null,"95f87a66",null),K=z.exports,J=r(22200),Q=r(20296),X=r.n(Q),nn=r(98266),en=r.n(nn);function tn(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}function rn(n){return function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){tn(a,r,i,s,o,"next",n)}function o(n){tn(a,r,i,s,o,"throw",n)}s(void 0)}))}}var an=new g,sn="abcdefgijkmnopqrstwxyzABCDEFGHJKLMNPQRSTWXYZ23456789";function on(){return cn.apply(this,arguments)}function cn(){return(cn=rn(regeneratorRuntime.mark((function n(){var e;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(!an.passwordPolicy.api||!an.passwordPolicy.api.generate){n.next=12;break}return n.prev=1,n.next=4,d.default.get(an.passwordPolicy.api.generate);case 4:if(!(e=n.sent).data.ocs.data.password){n.next=7;break}return n.abrupt("return",e.data.ocs.data.password);case 7:n.next=12;break;case 9:n.prev=9,n.t0=n.catch(1),console.info("Error generating password from password_policy",n.t0);case 12:return n.abrupt("return",Array(10).fill(0).reduce((function(n,e){return n+sn.charAt(Math.floor(Math.random()*sn.length))}),""));case 13:case"end":return n.stop()}}),n,null,[[1,9]])})))).apply(this,arguments)}function ln(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}function un(n){return function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){ln(a,r,i,s,o,"next",n)}function o(n){ln(a,r,i,s,o,"throw",n)}s(void 0)}))}}r(35449);var hn=(0,l.generateOcsUrl)("apps/files_sharing/api/v1/shares"),dn={methods:{createShare:function(n){return un(regeneratorRuntime.mark((function e(){var r,i,a,s,o,c,l,u,h,p,f,g,m,_,A,y,w;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=n.path,i=n.permissions,a=n.shareType,s=n.shareWith,o=n.publicUpload,c=n.password,l=n.sendPasswordByTalk,u=n.expireDate,h=n.label,p=n.attributes,e.prev=1,e.next=4,d.default.post(hn,{path:r,permissions:i,shareType:a,shareWith:s,publicUpload:o,password:c,sendPasswordByTalk:l,expireDate:u,label:h,attributes:p});case 4:if(null!=(g=e.sent)&&null!==(f=g.data)&&void 0!==f&&f.ocs){e.next=7;break}throw g;case 7:return e.abrupt("return",new v(g.data.ocs.data));case 10:throw e.prev=10,e.t0=e.catch(1),console.error("Error while creating share",e.t0),w=null===e.t0||void 0===e.t0||null===(m=e.t0.response)||void 0===m||null===(_=m.data)||void 0===_||null===(A=_.ocs)||void 0===A||null===(y=A.meta)||void 0===y?void 0:y.message,OC.Notification.showTemporary(w?t("files_sharing","Error creating the share: {errorMessage}",{errorMessage:w}):t("files_sharing","Error creating the share"),{type:"error"}),e.t0;case 16:case"end":return e.stop()}}),e,null,[[1,10]])})))()},deleteShare:function(n){return un(regeneratorRuntime.mark((function e(){var r,i,a,s,o,c,l;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,d.default.delete(hn+"/".concat(n));case 3:if(null!=(i=e.sent)&&null!==(r=i.data)&&void 0!==r&&r.ocs){e.next=6;break}throw i;case 6:return e.abrupt("return",!0);case 9:throw e.prev=9,e.t0=e.catch(0),console.error("Error while deleting share",e.t0),l=null===e.t0||void 0===e.t0||null===(a=e.t0.response)||void 0===a||null===(s=a.data)||void 0===s||null===(o=s.ocs)||void 0===o||null===(c=o.meta)||void 0===c?void 0:c.message,OC.Notification.showTemporary(l?t("files_sharing","Error deleting the share: {errorMessage}",{errorMessage:l}):t("files_sharing","Error deleting the share"),{type:"error"}),e.t0;case 15:case"end":return e.stop()}}),e,null,[[0,9]])})))()},updateShare:function(n,e){return un(regeneratorRuntime.mark((function r(){var i,a,s,o,c,l,u,h;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.prev=0,r.next=3,d.default.put(hn+"/".concat(n),e);case 3:if(null!=(a=r.sent)&&null!==(i=a.data)&&void 0!==i&&i.ocs){r.next=8;break}throw a;case 8:return r.abrupt("return",a.data.ocs.data);case 9:r.next=17;break;case 11:throw r.prev=11,r.t0=r.catch(0),console.error("Error while updating share",r.t0),400!==r.t0.response.status&&(u=null===r.t0||void 0===r.t0||null===(s=r.t0.response)||void 0===s||null===(o=s.data)||void 0===o||null===(c=o.ocs)||void 0===c||null===(l=c.meta)||void 0===l?void 0:l.message,OC.Notification.showTemporary(u?t("files_sharing","Error updating the share: {errorMessage}",{errorMessage:u}):t("files_sharing","Error updating the share"),{type:"error"})),h=r.t0.response.data.ocs.meta.message,new Error(h);case 17:case"end":return r.stop()}}),r,null,[[0,11]])})))()}}};function pn(n){return pn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},pn(n)}function fn(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(n);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),t.push.apply(t,r)}return t}function gn(n){for(var e=1;e<arguments.length;e++){var t=null!=arguments[e]?arguments[e]:{};e%2?fn(Object(t),!0).forEach((function(e){mn(n,e,t[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(t)):fn(Object(t)).forEach((function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(t,e))}))}return n}function mn(n,e,t){return e in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function _n(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}function vn(n){return function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){_n(a,r,i,s,o,"next",n)}function o(n){_n(a,r,i,s,o,"throw",n)}s(void 0)}))}}var An={name:"SharingInput",components:{NcMultiselect:en()},mixins:[A,dn],props:{shares:{type:Array,default:function(){return[]},required:!0},linkShares:{type:Array,default:function(){return[]},required:!0},fileInfo:{type:Object,default:function(){},required:!0},reshare:{type:v,default:null},canReshare:{type:Boolean,required:!0}},data:function(){return{config:new g,loading:!1,query:"",recommendations:[],ShareSearch:OCA.Sharing.ShareSearch.state,suggestions:[]}},computed:{externalResults:function(){return this.ShareSearch.results},inputPlaceholder:function(){var n=this.config.isRemoteShareAllowed;return this.canReshare?n?t("files_sharing","Name, email, or Federated Cloud ID …"):t("files_sharing","Name or email …"):t("files_sharing","Resharing is not allowed")},isValidQuery:function(){return this.query&&""!==this.query.trim()&&this.query.length>this.config.minSearchStringLength},options:function(){return this.isValidQuery?this.suggestions:this.recommendations},noResultText:function(){return this.loading?t("files_sharing","Searching …"):t("files_sharing","No elements found.")}},mounted:function(){this.getRecommendations()},methods:{asyncFind:function(n,e){var t=this;return vn(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.query=n.trim(),!t.isValidQuery){e.next=5;break}return t.loading=!0,e.next=5,t.debounceGetSuggestions(n);case 5:case"end":return e.stop()}}),e)})))()},getSuggestions:function(n){var e=arguments,r=this;return vn(regeneratorRuntime.mark((function i(){var a,s,o,c,u,h,p,f,g,m,_,v,A;return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return a=e.length>1&&void 0!==e[1]&&e[1],r.loading=!0,!0===OC.getCapabilities().files_sharing.sharee.query_lookup_default&&(a=!0),s=[r.SHARE_TYPES.SHARE_TYPE_USER,r.SHARE_TYPES.SHARE_TYPE_GROUP,r.SHARE_TYPES.SHARE_TYPE_REMOTE,r.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP,r.SHARE_TYPES.SHARE_TYPE_CIRCLE,r.SHARE_TYPES.SHARE_TYPE_ROOM,r.SHARE_TYPES.SHARE_TYPE_GUEST,r.SHARE_TYPES.SHARE_TYPE_DECK],!0===OC.getCapabilities().files_sharing.public.enabled&&s.push(r.SHARE_TYPES.SHARE_TYPE_EMAIL),o=null,i.prev=6,i.next=9,d.default.get((0,l.generateOcsUrl)("apps/files_sharing/api/v1/sharees"),{params:{format:"json",itemType:"dir"===r.fileInfo.type?"folder":"file",search:n,lookup:a,perPage:r.config.maxAutocompleteResults,shareType:s}});case 9:o=i.sent,i.next=16;break;case 12:return i.prev=12,i.t0=i.catch(6),console.error("Error fetching suggestions",i.t0),i.abrupt("return");case 16:c=o.data.ocs.data,u=o.data.ocs.data.exact,c.exact=[],h=Object.values(u).reduce((function(n,e){return n.concat(e)}),[]),p=Object.values(c).reduce((function(n,e){return n.concat(e)}),[]),f=r.filterOutExistingShares(h).map((function(n){return r.formatForMultiselect(n)})).sort((function(n,e){return n.shareType-e.shareType})),g=r.filterOutExistingShares(p).map((function(n){return r.formatForMultiselect(n)})).sort((function(n,e){return n.shareType-e.shareType})),m=[],c.lookupEnabled&&!a&&m.push({id:"global-lookup",isNoUser:!0,displayName:t("files_sharing","Search globally"),lookup:!0}),_=r.externalResults.filter((function(n){return!n.condition||n.condition(r)})),v=f.concat(g).concat(_).concat(m),A=v.reduce((function(n,e){return e.displayName?(n[e.displayName]||(n[e.displayName]=0),n[e.displayName]++,n):n}),{}),r.suggestions=v.map((function(n){return A[n.displayName]>1&&!n.desc?gn(gn({},n),{},{desc:n.shareWithDisplayNameUnique}):n})),r.loading=!1,console.info("suggestions",r.suggestions);case 31:case"end":return i.stop()}}),i,null,[[6,12]])})))()},debounceGetSuggestions:X()((function(){this.getSuggestions.apply(this,arguments)}),300),getRecommendations:function(){var n=this;return vn(regeneratorRuntime.mark((function e(){var t,r,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.loading=!0,t=null,e.prev=2,e.next=5,d.default.get((0,l.generateOcsUrl)("apps/files_sharing/api/v1/sharees_recommended"),{params:{format:"json",itemType:n.fileInfo.type}});case 5:t=e.sent,e.next=12;break;case 8:return e.prev=8,e.t0=e.catch(2),console.error("Error fetching recommendations",e.t0),e.abrupt("return");case 12:r=n.externalResults.filter((function(e){return!e.condition||e.condition(n)})),i=Object.values(t.data.ocs.data.exact).reduce((function(n,e){return n.concat(e)}),[]),n.recommendations=n.filterOutExistingShares(i).map((function(e){return n.formatForMultiselect(e)})).concat(r),n.loading=!1,console.info("recommendations",n.recommendations);case 17:case"end":return e.stop()}}),e,null,[[2,8]])})))()},filterOutExistingShares:function(n){var e=this;return n.reduce((function(n,t){if("object"!==pn(t))return n;try{if(t.value.shareType===e.SHARE_TYPES.SHARE_TYPE_USER){if(t.value.shareWith===(0,J.getCurrentUser)().uid)return n;if(e.reshare&&t.value.shareWith===e.reshare.owner)return n}if(t.value.shareType===e.SHARE_TYPES.SHARE_TYPE_EMAIL){if(-1!==e.linkShares.map((function(n){return n.shareWith})).indexOf(t.value.shareWith.trim()))return n}else{var r=e.shares.reduce((function(n,e){return n[e.shareWith]=e.type,n}),{}),i=t.value.shareWith.trim();if(i in r&&r[i]===t.value.shareType)return n}n.push(t)}catch(e){return n}return n}),[])},shareTypeToIcon:function(n){switch(n){case this.SHARE_TYPES.SHARE_TYPE_GUEST:return"icon-user";case this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP:case this.SHARE_TYPES.SHARE_TYPE_GROUP:return"icon-group";case this.SHARE_TYPES.SHARE_TYPE_EMAIL:return"icon-mail";case this.SHARE_TYPES.SHARE_TYPE_CIRCLE:return"icon-circle";case this.SHARE_TYPES.SHARE_TYPE_ROOM:return"icon-room";case this.SHARE_TYPES.SHARE_TYPE_DECK:return"icon-deck";default:return""}},formatForMultiselect:function(n){var e,r;if(n.value.shareType===this.SHARE_TYPES.SHARE_TYPE_USER&&this.config.shouldAlwaysShowUnique)e=null!==(r=n.shareWithDisplayNameUnique)&&void 0!==r?r:"";else if(n.value.shareType!==this.SHARE_TYPES.SHARE_TYPE_REMOTE&&n.value.shareType!==this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP||!n.value.server)if(n.value.shareType===this.SHARE_TYPES.SHARE_TYPE_EMAIL)e=n.value.shareWith;else{var i;e=null!==(i=n.shareWithDescription)&&void 0!==i?i:""}else e=t("files_sharing","on {server}",{server:n.value.server});return{id:"".concat(n.value.shareType,"-").concat(n.value.shareWith),shareWith:n.value.shareWith,shareType:n.value.shareType,user:n.uuid||n.value.shareWith,isNoUser:n.value.shareType!==this.SHARE_TYPES.SHARE_TYPE_USER,displayName:n.name||n.label,subtitle:e,shareWithDisplayNameUnique:n.shareWithDisplayNameUnique||"",icon:this.shareTypeToIcon(n.value.shareType)}},addShare:function(n){var e=this;return vn(regeneratorRuntime.mark((function t(){var r,i,a,s,o,c,l,u;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!n.lookup){t.next=5;break}return t.next=3,e.getSuggestions(e.query,!0);case 3:return e.$nextTick((function(){e.$refs.multiselect.$el.querySelector(".multiselect__input").focus()})),t.abrupt("return",!0);case 5:if(!n.handler){t.next=11;break}return t.next=8,n.handler(e);case 8:return r=t.sent,e.$emit("add:share",new v(r)),t.abrupt("return",!0);case 11:if(e.loading=!0,console.debug("Adding a new share from the input for",n),t.prev=13,o=null,!e.config.enforcePasswordForPublicLink||n.shareType!==e.SHARE_TYPES.SHARE_TYPE_EMAIL){t.next=19;break}return t.next=18,on();case 18:o=t.sent;case 19:return c=(e.fileInfo.path+"/"+e.fileInfo.name).replace("//","/"),t.next=22,e.createShare({path:c,shareType:n.shareType,shareWith:n.shareWith,password:o,permissions:e.fileInfo.sharePermissions&OC.getCapabilities().files_sharing.default_permissions,attributes:JSON.stringify(e.fileInfo.shareAttributes)});case 22:if(l=t.sent,!o){t.next=31;break}return l.newPassword=o,t.next=27,new Promise((function(n){e.$emit("add:share",l,n)}));case 27:t.sent.open=!0,t.next=32;break;case 31:e.$emit("add:share",l);case 32:return null!==(i=e.$refs.multiselect)&&void 0!==i&&null!==(a=i.$refs)&&void 0!==a&&null!==(s=a.VueMultiselect)&&void 0!==s&&s.search&&(e.$refs.multiselect.$refs.VueMultiselect.search=""),t.next=35,e.getRecommendations();case 35:t.next=43;break;case 37:t.prev=37,t.t0=t.catch(13),(u=e.$refs.multiselect.$el.querySelector("input"))&&u.focus(),e.query=n.shareWith,console.error("Error while adding new share",t.t0);case 43:return t.prev=43,e.loading=!1,t.finish(43);case 46:case"end":return t.stop()}}),t,null,[[13,37,43,46]])})))()}}},yn=An,wn=r(84721),bn={};bn.styleTagTransform=U(),bn.setAttributes=O(),bn.insert=R().bind(null,"head"),bn.domAPI=D(),bn.insertStyleElement=L(),k()(wn.Z,bn),wn.Z&&wn.Z.locals&&wn.Z.locals;var En=(0,B.Z)(yn,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("div",{staticClass:"sharing-search"},[t("label",{attrs:{for:"sharing-search-input"}},[n._v(n._s(n.t("files_sharing","Search for share recipients")))]),n._v(" "),t("NcMultiselect",{ref:"multiselect",staticClass:"sharing-search__input",attrs:{id:"sharing-search-input","clear-on-select":!0,disabled:!n.canReshare,"hide-selected":!0,"internal-search":!1,loading:n.loading,options:n.options,placeholder:n.inputPlaceholder,"preselect-first":!0,"preserve-search":!0,searchable:!0,"user-select":!0,"open-direction":"below",label:"displayName","track-by":"id"},on:{"search-change":n.asyncFind,select:n.addShare},scopedSlots:n._u([{key:"noOptions",fn:function(){return[n._v("\n\t\t\t"+n._s(n.t("files_sharing","No recommendations. Start typing."))+"\n\t\t")]},proxy:!0},{key:"noResult",fn:function(){return[n._v("\n\t\t\t"+n._s(n.noResultText)+"\n\t\t")]},proxy:!0}])})],1)}),[],!1,null,null,null).exports,Sn=r(45400),Cn=r.n(Sn),xn=r(65358),kn=r(76212),Pn=r.n(kn),Dn=r(1162),Tn=r.n(Dn),Rn=r(26932),Nn=r(25746);function On(n){return On="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},On(n)}function In(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}function Ln(n){return function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){In(a,r,i,s,o,"next",n)}function o(n){In(a,r,i,s,o,"throw",n)}s(void 0)}))}}var Hn={mixins:[dn,A],props:{fileInfo:{type:Object,default:function(){},required:!0},share:{type:v,default:null},isUnique:{type:Boolean,default:!0}},data:function(){var n;return{config:new g,errors:{},loading:!1,saving:!1,open:!1,updateQueue:new Nn.Z({concurrency:1}),reactiveState:null===(n=this.share)||void 0===n?void 0:n.state}},computed:{hasNote:{get:function(){return""!==this.share.note},set:function(n){this.share.note=n?null:""}},dateTomorrow:function(){return new Date((new Date).setDate((new Date).getDate()+1))},lang:function(){var n=window.dayNamesShort?window.dayNamesShort:["Sun.","Mon.","Tue.","Wed.","Thu.","Fri.","Sat."],e=window.monthNamesShort?window.monthNamesShort:["Jan.","Feb.","Mar.","Apr.","May.","Jun.","Jul.","Aug.","Sep.","Oct.","Nov.","Dec."];return{formatLocale:{firstDayOfWeek:window.firstDay?window.firstDay:0,monthsShort:e,weekdaysMin:n,weekdaysShort:n},monthFormat:"MMM"}},isShareOwner:function(){return this.share&&this.share.owner===(0,J.getCurrentUser)().uid}},methods:{checkShare:function(n){return(!n.password||"string"==typeof n.password&&""!==n.password.trim())&&!(n.expirationDate&&!n.expirationDate.isValid())},parseDateString:function(n){var e;if(n)return new Date(null===(e=n.match(/([0-9]{4}-[0-9]{2}-[0-9]{2})/i))||void 0===e?void 0:e.pop())},formatDateToString:function(n){return new Date(Date.UTC(n.getFullYear(),n.getMonth(),n.getDate())).toISOString().split("T")[0]},onExpirationChange:function(n){this.share.expireDate=this.formatDateToString(n),this.queueUpdate("expireDate")},onExpirationDisable:function(){this.share.expireDate="",this.queueUpdate("expireDate")},onNoteChange:function(n){this.$set(this.share,"newNote",n.trim())},onNoteSubmit:function(){this.share.newNote&&(this.share.note=this.share.newNote,this.$delete(this.share,"newNote"),(0,Rn.s$)(t("files_sharing","Share note saved")),this.queueUpdate("note"))},onDelete:function(){var n=this;return Ln(regeneratorRuntime.mark((function e(){var r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,n.loading=!0,n.open=!1,e.next=5,n.deleteShare(n.share.id);case 5:console.debug("Share deleted",n.share.id),r="file"===n.share.itemType?t("files_sharing",'File "{path}" has been unshared',{path:n.share.path}):t("files_sharing",'Folder "{path}" has been unshared',{path:n.share.path}),(0,Rn.s$)(r),n.$emit("remove:share",n.share),e.next=14;break;case 11:e.prev=11,e.t0=e.catch(0),n.open=!0;case 14:return e.prev=14,n.loading=!1,e.finish(14);case 17:case"end":return e.stop()}}),e,null,[[0,11,14,17]])})))()},queueUpdate:function(){for(var n=this,e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];if(0!==t.length){if(this.share.id){var i={};return t.forEach((function(e){"object"===On(n.share[e])?i[e]=JSON.stringify(n.share[e]):i[e]=n.share[e].toString()})),void this.updateQueue.add(Ln(regeneratorRuntime.mark((function e(){var r,a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.saving=!0,n.errors={},e.prev=2,e.next=5,n.updateShare(n.share.id,i);case 5:r=e.sent,t.indexOf("password")>=0&&(n.$delete(n.share,"newPassword"),n.share.passwordExpirationTime=r.password_expiration_time),n.$delete(n.errors,t[0]),e.next=14;break;case 10:e.prev=10,e.t0=e.catch(2),(a=e.t0.message)&&""!==a&&n.onSyncError(t[0],a);case 14:return e.prev=14,n.saving=!1,e.finish(14);case 17:case"end":return e.stop()}}),e,null,[[2,10,14,17]])}))))}console.debug("Updated local share",this.share)}},onSyncError:function(n,e){switch(this.open=!0,n){case"password":case"pending":case"expireDate":case"label":case"note":this.$set(this.errors,n,e);var t=this.$refs[n];if(t){t.$el&&(t=t.$el);var r=t.querySelector(".focusable");r&&r.focus()}break;case"sendPasswordByTalk":this.$set(this.errors,n,e),this.share.sendPasswordByTalk=!this.share.sendPasswordByTalk}},debounceQueueUpdate:X()((function(n){this.queueUpdate(n)}),500)}},Un={name:"SharingEntryInherited",components:{NcActionButton:Cn(),NcActionLink:Pn(),NcActionText:Tn(),NcAvatar:h(),SharingEntrySimple:j},mixins:[Hn],props:{share:{type:v,required:!0}},computed:{viaFileTargetUrl:function(){return(0,l.generateUrl)("/f/{fileid}",{fileid:this.share.viaFileid})},viaFolderName:function(){return(0,xn.EZ)(this.share.viaPath)}}},Yn=r(57851),Mn={};Mn.styleTagTransform=U(),Mn.setAttributes=O(),Mn.insert=R().bind(null,"head"),Mn.domAPI=D(),Mn.insertStyleElement=L(),k()(Yn.Z,Mn),Yn.Z&&Yn.Z.locals&&Yn.Z.locals;var Bn=(0,B.Z)(Un,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("SharingEntrySimple",{key:n.share.id,staticClass:"sharing-entry__inherited",attrs:{title:n.share.shareWithDisplayName},scopedSlots:n._u([{key:"avatar",fn:function(){return[t("NcAvatar",{staticClass:"sharing-entry__avatar",attrs:{user:n.share.shareWith,"display-name":n.share.shareWithDisplayName,"tooltip-message":""}})]},proxy:!0}])},[n._v(" "),t("NcActionText",{attrs:{icon:"icon-user"}},[n._v("\n\t\t"+n._s(n.t("files_sharing","Added by {initiator}",{initiator:n.share.ownerDisplayName}))+"\n\t")]),n._v(" "),n.share.viaPath&&n.share.viaFileid?t("NcActionLink",{attrs:{icon:"icon-folder",href:n.viaFileTargetUrl}},[n._v("\n\t\t"+n._s(n.t("files_sharing","Via “{folder}”",{folder:n.viaFolderName}))+"\n\t")]):n._e(),n._v(" "),n.share.canDelete?t("NcActionButton",{attrs:{icon:"icon-close"},on:{click:function(e){return e.preventDefault(),n.onDelete.apply(null,arguments)}}},[n._v("\n\t\t"+n._s(n.t("files_sharing","Unshare"))+"\n\t")]):n._e()],1)}),[],!1,null,"2bbe78b4",null),jn=Bn.exports;function Wn(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}var Fn={name:"SharingInherited",components:{NcActionButton:Cn(),SharingEntryInherited:jn,SharingEntrySimple:j},props:{fileInfo:{type:Object,default:function(){},required:!0}},data:function(){return{loaded:!1,loading:!1,showInheritedShares:!1,shares:[]}},computed:{showInheritedSharesIcon:function(){return this.loading?"icon-loading-small":this.showInheritedShares?"icon-triangle-n":"icon-triangle-s"},mainTitle:function(){return t("files_sharing","Others with access")},subTitle:function(){return this.showInheritedShares&&0===this.shares.length?t("files_sharing","No other users with access found"):""},toggleTooltip:function(){return"dir"===this.fileInfo.type?t("files_sharing","Toggle list of others with access to this directory"):t("files_sharing","Toggle list of others with access to this file")},fullPath:function(){return"".concat(this.fileInfo.path,"/").concat(this.fileInfo.name).replace("//","/")}},watch:{fileInfo:function(){this.resetState()}},methods:{toggleInheritedShares:function(){this.showInheritedShares=!this.showInheritedShares,this.showInheritedShares?this.fetchInheritedShares():this.resetState()},fetchInheritedShares:function(){var n,e=this;return(n=regeneratorRuntime.mark((function n(){var r,i;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return e.loading=!0,n.prev=1,r=(0,l.generateOcsUrl)("apps/files_sharing/api/v1/shares/inherited?format=json&path={path}",{path:e.fullPath}),n.next=5,d.default.get(r);case 5:i=n.sent,e.shares=i.data.ocs.data.map((function(n){return new v(n)})).sort((function(n,e){return e.createdTime-n.createdTime})),console.info(e.shares),e.loaded=!0,n.next=14;break;case 11:n.prev=11,n.t0=n.catch(1),OC.Notification.showTemporary(t("files_sharing","Unable to fetch inherited shares"),{type:"error"});case 14:return n.prev=14,e.loading=!1,n.finish(14);case 17:case"end":return n.stop()}}),n,null,[[1,11,14,17]])})),function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){Wn(a,r,i,s,o,"next",n)}function o(n){Wn(a,r,i,s,o,"throw",n)}s(void 0)}))})()},resetState:function(){this.loaded=!1,this.loading=!1,this.showInheritedShares=!1,this.shares=[]}}},qn=Fn,$n=r(44985),Zn={};Zn.styleTagTransform=U(),Zn.setAttributes=O(),Zn.insert=R().bind(null,"head"),Zn.domAPI=D(),Zn.insertStyleElement=L(),k()($n.Z,Zn),$n.Z&&$n.Z.locals&&$n.Z.locals;var Gn=(0,B.Z)(qn,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("ul",{attrs:{id:"sharing-inherited-shares"}},[t("SharingEntrySimple",{staticClass:"sharing-entry__inherited",attrs:{title:n.mainTitle,subtitle:n.subTitle,"aria-expanded":n.showInheritedShares},scopedSlots:n._u([{key:"avatar",fn:function(){return[t("div",{staticClass:"avatar-shared icon-more-white"})]},proxy:!0}])},[n._v(" "),t("NcActionButton",{attrs:{icon:n.showInheritedSharesIcon,"aria-label":n.mainTitle},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),n.toggleInheritedShares.apply(null,arguments)}}},[n._v("\n\t\t\t"+n._s(n.toggleTooltip)+"\n\t\t")])],1),n._v(" "),n._l(n.shares,(function(e){return t("SharingEntryInherited",{key:e.id,attrs:{"file-info":n.fileInfo,share:e}})}))],2)}),[],!1,null,"6a277822",null),Vn=Gn.exports,zn={name:"ExternalShareAction",props:{id:{type:String,required:!0},action:{type:Object,default:function(){return{}}},fileInfo:{type:Object,default:function(){},required:!0},share:{type:v,default:null}},computed:{data:function(){return this.action.data(this)}}},Kn=(0,B.Z)(zn,(function(){var n=this,e=n.$createElement;return(n._self._c||e)(n.data.is,n._g(n._b({tag:"Component"},"Component",n.data,!1),n.action.handlers),[n._v("\n\t"+n._s(n.data.text)+"\n")])}),[],!1,null,null,null).exports,Jn=r(30158),Qn=r.n(Jn),Xn=r(81807),ne=r.n(Xn),ee={NONE:0,READ:1,UPDATE:2,CREATE:4,DELETE:8,SHARE:16},te={READ_ONLY:ee.READ,UPLOAD_AND_UPDATE:ee.READ|ee.UPDATE|ee.CREATE|ee.DELETE,FILE_DROP:ee.CREATE,ALL:ee.UPDATE|ee.CREATE|ee.READ|ee.DELETE|ee.SHARE};function re(n,e){return n!==ee.NONE&&(n&e)===e}function ie(n){return!(!re(n,ee.READ)&&!re(n,ee.CREATE)||!re(n,ee.READ)&&(re(n,ee.UPDATE)||re(n,ee.DELETE)))}function ae(n,e){return re(n,e)?function(n,e){return n&~e}(n,e):function(n,e){return n|e}(n,e)}var se=r(74057),oe=r(19784),ce={name:"SharePermissionsEditor",components:{NcActionButton:Cn(),NcActionCheckbox:ne(),NcActionRadio:Qn(),Tune:se.Z,ChevronLeft:oe.default},mixins:[Hn],data:function(){return{randomFormName:Math.random().toString(27).substring(2),showCustomPermissionsForm:!1,atomicPermissions:ee,bundledPermissions:te}},computed:{sharePermissionsSummary:function(){var n=this;return Object.values(this.atomicPermissions).filter((function(e){return n.shareHasPermissions(e)})).map((function(e){switch(e){case n.atomicPermissions.CREATE:return n.t("files_sharing","Upload");case n.atomicPermissions.READ:return n.t("files_sharing","Read");case n.atomicPermissions.UPDATE:return n.t("files_sharing","Edit");case n.atomicPermissions.DELETE:return n.t("files_sharing","Delete");default:return null}})).filter((function(n){return null!==n})).join(", ")},sharePermissionsIsBundle:function(){var n=this;return Object.values(te).map((function(e){return n.sharePermissionEqual(e)})).filter((function(n){return n})).length>0},sharePermissionsSetIsValid:function(){return ie(this.share.permissions)},isFolder:function(){return"dir"===this.fileInfo.type},fileHasCreatePermission:function(){return!!(this.fileInfo.permissions&ee.CREATE)}},mounted:function(){this.showCustomPermissionsForm=!this.sharePermissionsIsBundle},methods:{sharePermissionEqual:function(n){return(this.share.permissions&~ee.SHARE)===n},shareHasPermissions:function(n){return re(this.share.permissions,n)},setSharePermissions:function(n){this.share.permissions=n,this.queueUpdate("permissions")},canToggleSharePermissions:function(n){return function(n,e){return ie(ae(n,e))}(this.share.permissions,n)},toggleSharePermissions:function(n){this.share.permissions=ae(this.share.permissions,n),ie(this.share.permissions)&&this.queueUpdate("permissions")}}},le=r(13194),ue={};ue.styleTagTransform=U(),ue.setAttributes=O(),ue.insert=R().bind(null,"head"),ue.domAPI=D(),ue.insertStyleElement=L(),k()(le.Z,ue),le.Z&&le.Z.locals&&le.Z.locals;var he=(0,B.Z)(ce,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("li",[t("ul",[n.isFolder?n._e():t("NcActionCheckbox",{attrs:{checked:n.shareHasPermissions(n.atomicPermissions.UPDATE),disabled:n.saving},on:{"update:checked":function(e){return n.toggleSharePermissions(n.atomicPermissions.UPDATE)}}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Allow editing"))+"\n\t\t")]),n._v(" "),n.isFolder&&n.fileHasCreatePermission&&n.config.isPublicUploadEnabled?[n.showCustomPermissionsForm?t("span",{class:{error:!n.sharePermissionsSetIsValid}},[t("NcActionCheckbox",{attrs:{checked:n.shareHasPermissions(n.atomicPermissions.READ),disabled:n.saving||!n.canToggleSharePermissions(n.atomicPermissions.READ)},on:{"update:checked":function(e){return n.toggleSharePermissions(n.atomicPermissions.READ)}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Read"))+"\n\t\t\t\t")]),n._v(" "),t("NcActionCheckbox",{attrs:{checked:n.shareHasPermissions(n.atomicPermissions.CREATE),disabled:n.saving||!n.canToggleSharePermissions(n.atomicPermissions.CREATE)},on:{"update:checked":function(e){return n.toggleSharePermissions(n.atomicPermissions.CREATE)}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Upload"))+"\n\t\t\t\t")]),n._v(" "),t("NcActionCheckbox",{attrs:{checked:n.shareHasPermissions(n.atomicPermissions.UPDATE),disabled:n.saving||!n.canToggleSharePermissions(n.atomicPermissions.UPDATE)},on:{"update:checked":function(e){return n.toggleSharePermissions(n.atomicPermissions.UPDATE)}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Edit"))+"\n\t\t\t\t")]),n._v(" "),t("NcActionCheckbox",{attrs:{checked:n.shareHasPermissions(n.atomicPermissions.DELETE),disabled:n.saving||!n.canToggleSharePermissions(n.atomicPermissions.DELETE)},on:{"update:checked":function(e){return n.toggleSharePermissions(n.atomicPermissions.DELETE)}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Delete"))+"\n\t\t\t\t")]),n._v(" "),t("NcActionButton",{on:{click:function(e){n.showCustomPermissionsForm=!1}},scopedSlots:n._u([{key:"icon",fn:function(){return[t("ChevronLeft")]},proxy:!0}],null,!1,1018742195)},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Bundled permissions"))+"\n\t\t\t\t")])],1):[t("NcActionRadio",{attrs:{checked:n.sharePermissionEqual(n.bundledPermissions.READ_ONLY),value:n.bundledPermissions.READ_ONLY,name:n.randomFormName,disabled:n.saving},on:{change:function(e){return n.setSharePermissions(n.bundledPermissions.READ_ONLY)}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Read only"))+"\n\t\t\t\t")]),n._v(" "),t("NcActionRadio",{attrs:{checked:n.sharePermissionEqual(n.bundledPermissions.UPLOAD_AND_UPDATE),value:n.bundledPermissions.UPLOAD_AND_UPDATE,disabled:n.saving,name:n.randomFormName},on:{change:function(e){return n.setSharePermissions(n.bundledPermissions.UPLOAD_AND_UPDATE)}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Allow upload and editing"))+"\n\t\t\t\t")]),n._v(" "),t("NcActionRadio",{staticClass:"sharing-entry__action--public-upload",attrs:{checked:n.sharePermissionEqual(n.bundledPermissions.FILE_DROP),value:n.bundledPermissions.FILE_DROP,disabled:n.saving,name:n.randomFormName},on:{change:function(e){return n.setSharePermissions(n.bundledPermissions.FILE_DROP)}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","File drop (upload only)"))+"\n\t\t\t\t")]),n._v(" "),t("NcActionButton",{attrs:{title:n.t("files_sharing","Custom permissions")},on:{click:function(e){n.showCustomPermissionsForm=!0}},scopedSlots:n._u([{key:"icon",fn:function(){return[t("Tune")]},proxy:!0}],null,!1,961531849)},[n._v("\n\t\t\t\t\t"+n._s(n.sharePermissionsIsBundle?"":n.sharePermissionsSummary)+"\n\t\t\t\t")])]]:n._e()],2)])}),[],!1,null,"5e957d09",null).exports;function de(n){return de="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},de(n)}function pe(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}function fe(n){return function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){pe(a,r,i,s,o,"next",n)}function o(n){pe(a,r,i,s,o,"throw",n)}s(void 0)}))}}var ge={name:"SharingEntryLink",components:{Check:W.default,ClipboardTextMultipleOutline:F.Z,ExternalShareAction:Kn,NcActionButton:y.Js,NcActionCheckbox:y.Bt,NcActionInput:y.Iw,NcActionLink:y.ih,NcActions:y.O3,NcActionSeparator:y.rr,NcActionText:y.L1,NcActionTextEditable:y.L_,NcAvatar:y.Xn,SharePermissionsEditor:he},directives:{Tooltip:y.u},mixins:[Hn],props:{canReshare:{type:Boolean,default:!0}},data:function(){return{copySuccess:!0,copied:!1,pending:!1,ExternalLegacyLinkActions:OCA.Sharing.ExternalLinkActions.state,ExternalShareActions:OCA.Sharing.ExternalShareActions.state}},computed:{title:function(){if(this.share&&this.share.id){if(!this.isShareOwner&&this.share.ownerDisplayName)return this.isEmailShareType?t("files_sharing","{shareWith} by {initiator}",{shareWith:this.share.shareWith,initiator:this.share.ownerDisplayName}):t("files_sharing","Shared via link by {initiator}",{initiator:this.share.ownerDisplayName});if(this.share.label&&""!==this.share.label.trim())return this.isEmailShareType?t("files_sharing","Mail share ({label})",{label:this.share.label.trim()}):t("files_sharing","Share link ({label})",{label:this.share.label.trim()});if(this.isEmailShareType)return this.share.shareWith}return t("files_sharing","Share link")},subtitle:function(){return this.isEmailShareType&&this.title!==this.share.shareWith?this.share.shareWith:null},hasExpirationDate:{get:function(){return this.config.isDefaultExpireDateEnforced||!!this.share.expireDate},set:function(n){var e=this.config.defaultExpirationDate||new Date((new Date).setDate((new Date).getDate()+1));this.share.expireDate=n?this.formatDateToString(e):"",console.debug("Expiration date status",n,this.share.expireDate)}},dateMaxEnforced:function(){return this.config.isDefaultExpireDateEnforced?new Date((new Date).setDate((new Date).getDate()+this.config.defaultExpireDate)):null},isPasswordProtected:{get:function(){return this.config.enforcePasswordForPublicLink||!!this.share.password},set:function(n){var e=this;return fe(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(t.t0=i.ZP,t.t1=e.share,!n){t.next=8;break}return t.next=5,on();case 5:t.t2=t.sent,t.next=9;break;case 8:t.t2="";case 9:t.t3=t.t2,t.t0.set.call(t.t0,t.t1,"password",t.t3),i.ZP.set(e.share,"newPassword",e.share.password);case 12:case"end":return t.stop()}}),t)})))()}},passwordExpirationTime:function(){if(null===this.share.passwordExpirationTime)return null;var n=moment(this.share.passwordExpirationTime);return!(n.diff(moment())<0)&&n.fromNow()},isTalkEnabled:function(){return void 0!==OC.appswebroots.spreed},isPasswordProtectedByTalkAvailable:function(){return this.isPasswordProtected&&this.isTalkEnabled},isPasswordProtectedByTalk:{get:function(){return this.share.sendPasswordByTalk},set:function(n){var e=this;return fe(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:e.share.sendPasswordByTalk=n;case 1:case"end":return t.stop()}}),t)})))()}},isEmailShareType:function(){return!!this.share&&this.share.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL},canTogglePasswordProtectedByTalkAvailable:function(){return!(!this.isPasswordProtected||this.isEmailShareType&&!this.hasUnsavedPassword)},pendingPassword:function(){return this.config.enforcePasswordForPublicLink&&this.share&&!this.share.id},pendingExpirationDate:function(){return this.config.isDefaultExpireDateEnforced&&this.share&&!this.share.id},hasUnsavedPassword:function(){return void 0!==this.share.newPassword},shareLink:function(){return window.location.protocol+"//"+window.location.host+(0,l.generateUrl)("/s/")+this.share.token},clipboardTooltip:function(){return this.copied?this.copySuccess?t("files_sharing","Link copied"):t("files_sharing","Cannot copy, please copy the link manually"):t("files_sharing","Copy to clipboard")},externalLegacyLinkActions:function(){return this.ExternalLegacyLinkActions.actions},externalLinkActions:function(){return this.ExternalShareActions.actions.filter((function(n){return n.shareType.includes(m.D.SHARE_TYPE_LINK)||n.shareType.includes(m.D.SHARE_TYPE_EMAIL)}))},isPasswordPolicyEnabled:function(){return"object"===de(this.config.passwordPolicy)},canChangeHideDownload:function(){return this.fileInfo.shareAttributes.some((function(n){return"download"===n.key&&"permissions"===n.scope&&!1===n.enabled}))}},methods:{onNewLinkShare:function(){var n=this;return fe(regeneratorRuntime.mark((function e(){var r,i,a,s;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!n.loading){e.next=2;break}return e.abrupt("return");case 2:if(r={share_type:m.D.SHARE_TYPE_LINK},n.config.isDefaultExpireDateEnforced&&(r.expiration=n.formatDateToString(n.config.defaultExpirationDate)),!n.config.enableLinkPasswordByDefault){e.next=8;break}return e.next=7,on();case 7:r.password=e.sent;case 8:if(!n.config.enforcePasswordForPublicLink&&!n.config.isDefaultExpireDateEnforced){e.next=33;break}if(n.pending=!0,!n.share||n.share.id){e.next=20;break}if(!n.checkShare(n.share)){e.next=17;break}return e.next=14,n.pushNewLinkShare(n.share,!0);case 14:return e.abrupt("return",!0);case 17:return n.open=!0,OC.Notification.showTemporary(t("files_sharing","Error, please enter proper password and/or expiration date")),e.abrupt("return",!1);case 20:if(!n.config.enforcePasswordForPublicLink){e.next=24;break}return e.next=23,on();case 23:r.password=e.sent;case 24:return i=new v(r),e.next=27,new Promise((function(e){n.$emit("add:share",i,e)}));case 27:a=e.sent,n.open=!1,n.pending=!1,a.open=!0,e.next=36;break;case 33:return s=new v(r),e.next=36,n.pushNewLinkShare(s);case 36:case"end":return e.stop()}}),e)})))()},pushNewLinkShare:function(n,e){var r=this;return fe(regeneratorRuntime.mark((function i(){var a,s,o,c,l,u,h,d,p;return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:if(i.prev=0,!r.loading){i.next=3;break}return i.abrupt("return",!0);case 3:return r.loading=!0,r.errors={},a=(r.fileInfo.path+"/"+r.fileInfo.name).replace("//","/"),s={path:a,shareType:m.D.SHARE_TYPE_LINK,password:n.password,expireDate:n.expireDate,attributes:JSON.stringify(r.fileInfo.shareAttributes)},console.debug("Creating link share with options",s),i.next=10,r.createShare(s);case 10:if(o=i.sent,r.open=!1,console.debug("Link share created",o),!e){i.next=19;break}return i.next=16,new Promise((function(n){r.$emit("update:share",o,n)}));case 16:c=i.sent,i.next=22;break;case 19:return i.next=21,new Promise((function(n){r.$emit("add:share",o,n)}));case 21:c=i.sent;case 22:r.config.enforcePasswordForPublicLink||c.copyLink(),i.next=33;break;case 25:if(i.prev=25,i.t0=i.catch(0),p=null===i.t0||void 0===i.t0||null===(l=i.t0.response)||void 0===l||null===(u=l.data)||void 0===u||null===(h=u.ocs)||void 0===h||null===(d=h.meta)||void 0===d?void 0:d.message){i.next=32;break}return(0,Rn.x2)(t("sharing","Error while creating the share")),console.error(i.t0),i.abrupt("return");case 32:p.match(/password/i)?r.onSyncError("password",p):p.match(/date/i)?r.onSyncError("expireDate",p):r.onSyncError("pending",p);case 33:return i.prev=33,r.loading=!1,i.finish(33);case 36:case"end":return i.stop()}}),i,null,[[0,25,33,36]])})))()},onLabelChange:function(n){this.$set(this.share,"newLabel",n.trim())},onLabelSubmit:function(){"string"==typeof this.share.newLabel&&(this.share.label=this.share.newLabel,this.$delete(this.share,"newLabel"),(0,Rn.s$)(t("files_sharing","Share label saved")),this.queueUpdate("label"))},copyLink:function(){var n=this;return fe(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,n.$copyText(n.shareLink);case 3:n.$refs.copyButton.$el.focus(),n.copySuccess=!0,n.copied=!0,e.next=13;break;case 8:e.prev=8,e.t0=e.catch(0),n.copySuccess=!1,n.copied=!0,console.error(e.t0);case 13:return e.prev=13,setTimeout((function(){n.copySuccess=!1,n.copied=!1}),4e3),e.finish(13);case 16:case"end":return e.stop()}}),e,null,[[0,8,13,16]])})))()},onPasswordChange:function(n){this.$set(this.share,"newPassword",n)},onPasswordDisable:function(){this.share.password="",this.$delete(this.share,"newPassword"),this.share.id&&this.queueUpdate("password")},onPasswordSubmit:function(){this.hasUnsavedPassword&&(this.share.password=this.share.newPassword.trim(),(0,Rn.s$)(t("files_sharing","Share password saved")),this.queueUpdate("password"))},onPasswordProtectedByTalkChange:function(){this.hasUnsavedPassword&&(this.share.password=this.share.newPassword.trim()),this.queueUpdate("sendPasswordByTalk","password")},onMenuClose:function(){this.onPasswordSubmit(),this.onNoteSubmit()},onCancel:function(){this.$emit("remove:share",this.share)}}},me=ge,_e=r(42503),ve={};ve.styleTagTransform=U(),ve.setAttributes=O(),ve.insert=R().bind(null,"head"),ve.domAPI=D(),ve.insertStyleElement=L(),k()(_e.Z,ve),_e.Z&&_e.Z.locals&&_e.Z.locals;var Ae=(0,B.Z)(me,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("li",{staticClass:"sharing-entry sharing-entry__link",class:{"sharing-entry--share":n.share}},[t("NcAvatar",{staticClass:"sharing-entry__avatar",attrs:{"is-no-user":!0,"icon-class":n.isEmailShareType?"avatar-link-share icon-mail-white":"avatar-link-share icon-public-white"}}),n._v(" "),t("div",{staticClass:"sharing-entry__desc"},[t("span",{staticClass:"sharing-entry__title",attrs:{title:n.title}},[n._v("\n\t\t\t"+n._s(n.title)+"\n\t\t")]),n._v(" "),n.subtitle?t("p",[n._v("\n\t\t\t"+n._s(n.subtitle)+"\n\t\t")]):n._e()]),n._v(" "),n.share&&!n.isEmailShareType&&n.share.token?t("NcActions",{ref:"copyButton",staticClass:"sharing-entry__copy"},[t("NcActionButton",{attrs:{"aria-label":n.t("files_sharing","Copy public link to clipboard")},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),n.copyLink.apply(null,arguments)}},scopedSlots:n._u([{key:"icon",fn:function(){return[n.copied&&n.copySuccess?t("Check",{attrs:{size:20}}):t("ClipboardTextMultipleOutline",{attrs:{size:20}})]},proxy:!0}],null,!1,2976921391)},[n._v("\n\t\t\t"+n._s(n.clipboardTooltip)+"\n\t\t")])],1):n._e(),n._v(" "),n.pending||!n.pendingPassword&&!n.pendingExpirationDate?n.loading?t("div",{staticClass:"icon-loading-small sharing-entry__loading"}):t("NcActions",{staticClass:"sharing-entry__actions",attrs:{"menu-align":"right",open:n.open},on:{"update:open":function(e){n.open=e},close:n.onMenuClose}},[n.share?[n.share.canEdit&&n.canReshare?[t("NcActionInput",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.label,show:n.errors.label,trigger:"manual",defaultContainer:".app-sidebar"},expression:"{\n\t\t\t\t\t\tcontent: errors.label,\n\t\t\t\t\t\tshow: errors.label,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '.app-sidebar'\n\t\t\t\t\t}",modifiers:{auto:!0}}],ref:"label",class:{error:n.errors.label},attrs:{disabled:n.saving,"aria-label":n.t("files_sharing","Share label"),value:void 0!==n.share.newLabel?n.share.newLabel:n.share.label,icon:"icon-edit",maxlength:"255"},on:{"update:value":n.onLabelChange,submit:n.onLabelSubmit}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Share label"))+"\n\t\t\t\t")]),n._v(" "),t("SharePermissionsEditor",{attrs:{"can-reshare":n.canReshare,share:n.share,"file-info":n.fileInfo},on:{"update:share":function(e){n.share=e}}}),n._v(" "),t("NcActionSeparator"),n._v(" "),t("NcActionCheckbox",{attrs:{checked:n.share.hideDownload,disabled:n.saving||n.canChangeHideDownload},on:{"update:checked":function(e){return n.$set(n.share,"hideDownload",e)},change:function(e){return n.queueUpdate("hideDownload")}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Hide download"))+"\n\t\t\t\t")]),n._v(" "),t("NcActionCheckbox",{staticClass:"share-link-password-checkbox",attrs:{checked:n.isPasswordProtected,disabled:n.config.enforcePasswordForPublicLink||n.saving},on:{"update:checked":function(e){n.isPasswordProtected=e},uncheck:n.onPasswordDisable}},[n._v("\n\t\t\t\t\t"+n._s(n.config.enforcePasswordForPublicLink?n.t("files_sharing","Password protection (enforced)"):n.t("files_sharing","Password protect"))+"\n\t\t\t\t")]),n._v(" "),n.isPasswordProtected?t("NcActionInput",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.password,show:n.errors.password,trigger:"manual",defaultContainer:"#app-sidebar"},expression:"{\n\t\t\t\t\t\tcontent: errors.password,\n\t\t\t\t\t\tshow: errors.password,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t}",modifiers:{auto:!0}}],ref:"password",staticClass:"share-link-password",class:{error:n.errors.password},attrs:{disabled:n.saving,required:n.config.enforcePasswordForPublicLink,value:n.hasUnsavedPassword?n.share.newPassword:"***************",icon:"icon-password",autocomplete:"new-password",type:n.hasUnsavedPassword?"text":"password"},on:{"update:value":n.onPasswordChange,submit:n.onPasswordSubmit}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Enter a password"))+"\n\t\t\t\t")]):n._e(),n._v(" "),n.isEmailShareType&&n.passwordExpirationTime?t("NcActionText",{attrs:{icon:"icon-info"}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Password expires {passwordExpirationTime}",{passwordExpirationTime:n.passwordExpirationTime}))+"\n\t\t\t\t")]):n.isEmailShareType&&null!==n.passwordExpirationTime?t("NcActionText",{attrs:{icon:"icon-error"}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Password expired"))+"\n\t\t\t\t")]):n._e(),n._v(" "),n.isPasswordProtectedByTalkAvailable?t("NcActionCheckbox",{staticClass:"share-link-password-talk-checkbox",attrs:{checked:n.isPasswordProtectedByTalk,disabled:!n.canTogglePasswordProtectedByTalkAvailable||n.saving},on:{"update:checked":function(e){n.isPasswordProtectedByTalk=e},change:n.onPasswordProtectedByTalkChange}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Video verification"))+"\n\t\t\t\t")]):n._e(),n._v(" "),t("NcActionCheckbox",{staticClass:"share-link-expire-date-checkbox",attrs:{checked:n.hasExpirationDate,disabled:n.config.isDefaultExpireDateEnforced||n.saving},on:{"update:checked":function(e){n.hasExpirationDate=e},uncheck:n.onExpirationDisable}},[n._v("\n\t\t\t\t\t"+n._s(n.config.isDefaultExpireDateEnforced?n.t("files_sharing","Expiration date (enforced)"):n.t("files_sharing","Set expiration date"))+"\n\t\t\t\t")]),n._v(" "),n.hasExpirationDate?t("NcActionInput",{ref:"expireDate",staticClass:"share-link-expire-date",class:{error:n.errors.expireDate},attrs:{"is-native-picker":!0,"hide-label":!0,disabled:n.saving,value:new Date(n.share.expireDate),type:"date",min:n.dateTomorrow,max:n.dateMaxEnforced},on:{input:n.onExpirationChange}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Enter a date"))+"\n\t\t\t\t")]):n._e(),n._v(" "),t("NcActionCheckbox",{attrs:{checked:n.hasNote,disabled:n.saving},on:{"update:checked":function(e){n.hasNote=e},uncheck:function(e){return n.queueUpdate("note")}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Note to recipient"))+"\n\t\t\t\t")]),n._v(" "),n.hasNote?t("NcActionTextEditable",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.note,show:n.errors.note,trigger:"manual",defaultContainer:"#app-sidebar"},expression:"{\n\t\t\t\t\t\tcontent: errors.note,\n\t\t\t\t\t\tshow: errors.note,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t}",modifiers:{auto:!0}}],ref:"note",class:{error:n.errors.note},attrs:{disabled:n.saving,placeholder:n.t("files_sharing","Enter a note for the share recipient"),value:n.share.newNote||n.share.note,icon:"icon-edit"},on:{"update:value":n.onNoteChange,submit:n.onNoteSubmit}}):n._e()]:n._e(),n._v(" "),t("NcActionSeparator"),n._v(" "),n._l(n.externalLinkActions,(function(e){return t("ExternalShareAction",{key:e.id,attrs:{id:e.id,action:e,"file-info":n.fileInfo,share:n.share}})})),n._v(" "),n._l(n.externalLegacyLinkActions,(function(e,r){var i=e.icon,a=e.url,s=e.name;return t("NcActionLink",{key:r,attrs:{href:a(n.shareLink),icon:i,target:"_blank"}},[n._v("\n\t\t\t\t"+n._s(s)+"\n\t\t\t")])})),n._v(" "),n.share.canDelete?t("NcActionButton",{attrs:{icon:"icon-close",disabled:n.saving},on:{click:function(e){return e.preventDefault(),n.onDelete.apply(null,arguments)}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Unshare"))+"\n\t\t\t")]):n._e(),n._v(" "),!n.isEmailShareType&&n.canReshare?t("NcActionButton",{staticClass:"new-share-link",attrs:{icon:"icon-add"},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),n.onNewLinkShare.apply(null,arguments)}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Add another link"))+"\n\t\t\t")]):n._e()]:n.canReshare?t("NcActionButton",{staticClass:"new-share-link",attrs:{icon:n.loading?"icon-loading-small":"icon-add"},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),n.onNewLinkShare.apply(null,arguments)}}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Create a new share link"))+"\n\t\t")]):n._e()],2):t("NcActions",{staticClass:"sharing-entry__actions",attrs:{"menu-align":"right",open:n.open},on:{"update:open":function(e){n.open=e},close:n.onNewLinkShare}},[n.errors.pending?t("NcActionText",{class:{error:n.errors.pending},attrs:{icon:"icon-error"}},[n._v("\n\t\t\t"+n._s(n.errors.pending)+"\n\t\t")]):t("NcActionText",{attrs:{icon:"icon-info"}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Please enter the following required information before creating the share"))+"\n\t\t")]),n._v(" "),n.pendingPassword?t("NcActionText",{attrs:{icon:"icon-password"}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Password protection (enforced)"))+"\n\t\t")]):n.config.enableLinkPasswordByDefault?t("NcActionCheckbox",{staticClass:"share-link-password-checkbox",attrs:{checked:n.isPasswordProtected,disabled:n.config.enforcePasswordForPublicLink||n.saving},on:{"update:checked":function(e){n.isPasswordProtected=e},uncheck:n.onPasswordDisable}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Password protection"))+"\n\t\t")]):n._e(),n._v(" "),n.pendingPassword||n.share.password?t("NcActionInput",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.password,show:n.errors.password,trigger:"manual",defaultContainer:"#app-sidebar"},expression:"{\n\t\t\t\tcontent: errors.password,\n\t\t\t\tshow: errors.password,\n\t\t\t\ttrigger: 'manual',\n\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t}",modifiers:{auto:!0}}],staticClass:"share-link-password",attrs:{value:n.share.password,disabled:n.saving,required:n.config.enableLinkPasswordByDefault||n.config.enforcePasswordForPublicLink,minlength:n.isPasswordPolicyEnabled&&n.config.passwordPolicy.minLength,icon:"",autocomplete:"new-password"},on:{"update:value":function(e){return n.$set(n.share,"password",e)},submit:n.onNewLinkShare}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Enter a password"))+"\n\t\t")]):n._e(),n._v(" "),n.pendingExpirationDate?t("NcActionText",{attrs:{icon:"icon-calendar-dark"}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Expiration date (enforced)"))+"\n\t\t")]):n._e(),n._v(" "),n.pendingExpirationDate?t("NcActionInput",{staticClass:"share-link-expire-date",attrs:{disabled:n.saving,"is-native-picker":!0,"hide-label":!0,value:new Date(n.share.expireDate),type:"date",min:n.dateTomorrow,max:n.dateMaxEnforced},on:{input:n.onExpirationChange}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Enter a date"))+"\n\t\t")]):n._e(),n._v(" "),t("NcActionButton",{attrs:{icon:"icon-checkmark"},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),n.onNewLinkShare.apply(null,arguments)}}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Create share"))+"\n\t\t")]),n._v(" "),t("NcActionButton",{attrs:{icon:"icon-close"},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),n.onCancel.apply(null,arguments)}}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Cancel"))+"\n\t\t")])],1)],1)}),[],!1,null,"182f91a3",null),ye={name:"SharingLinkList",components:{SharingEntryLink:Ae.exports},mixins:[A],props:{fileInfo:{type:Object,default:function(){},required:!0},shares:{type:Array,default:function(){return[]},required:!0},canReshare:{type:Boolean,required:!0}},data:function(){return{canLinkShare:OC.getCapabilities().files_sharing.public.enabled}},computed:{hasLinkShares:function(){var n=this;return this.shares.filter((function(e){return e.type===n.SHARE_TYPES.SHARE_TYPE_LINK})).length>0},hasShares:function(){return this.shares.length>0}},methods:{addShare:function(n,e){this.shares.unshift(n),this.awaitForShare(n,e)},awaitForShare:function(n,e){var t=this;this.$nextTick((function(){var r=t.$children.find((function(e){return e.share===n}));r&&e(r)}))},removeShare:function(n){var e=this.shares.findIndex((function(e){return e===n}));this.shares.splice(e,1)}}},we=(0,B.Z)(ye,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return n.canLinkShare?t("ul",{staticClass:"sharing-link-list"},[!n.hasLinkShares&&n.canReshare?t("SharingEntryLink",{attrs:{"can-reshare":n.canReshare,"file-info":n.fileInfo},on:{"add:share":n.addShare}}):n._e(),n._v(" "),n.hasShares?n._l(n.shares,(function(e,r){return t("SharingEntryLink",{key:e.id,attrs:{"can-reshare":n.canReshare,share:n.shares[r],"file-info":n.fileInfo},on:{"update:share":[function(e){return n.$set(n.shares,r,e)},function(e){return n.awaitForShare.apply(void 0,arguments)}],"add:share":function(e){return n.addShare.apply(void 0,arguments)},"remove:share":n.removeShare}})})):n._e()],2):n._e()}),[],!1,null,null,null),be=we.exports,Ee=r(79570),Se=r.n(Ee),Ce=r(18074),xe=r.n(Ce);function ke(n){return ke="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},ke(n)}var Pe={name:"SharingEntry",components:{NcActions:b(),NcActionButton:Cn(),NcActionCheckbox:ne(),NcActionInput:Se(),NcActionTextEditable:xe(),NcAvatar:h()},directives:{Tooltip:S()},mixins:[Hn],data:function(){return{permissionsEdit:OC.PERMISSION_UPDATE,permissionsCreate:OC.PERMISSION_CREATE,permissionsDelete:OC.PERMISSION_DELETE,permissionsRead:OC.PERMISSION_READ,permissionsShare:OC.PERMISSION_SHARE}},computed:{title:function(){var n=this.share.shareWithDisplayName;return this.share.type===this.SHARE_TYPES.SHARE_TYPE_GROUP?n+=" (".concat(t("files_sharing","group"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_ROOM?n+=" (".concat(t("files_sharing","conversation"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE?n+=" (".concat(t("files_sharing","remote"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP?n+=" (".concat(t("files_sharing","remote group"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_GUEST&&(n+=" (".concat(t("files_sharing","guest"),")")),n},tooltip:function(){if(this.share.owner!==this.share.uidFileOwner){var n={user:this.share.shareWithDisplayName,owner:this.share.ownerDisplayName};return this.share.type===this.SHARE_TYPES.SHARE_TYPE_GROUP?t("files_sharing","Shared with the group {user} by {owner}",n):this.share.type===this.SHARE_TYPES.SHARE_TYPE_ROOM?t("files_sharing","Shared with the conversation {user} by {owner}",n):t("files_sharing","Shared with {user} by {owner}",n)}return null},canHaveNote:function(){return!this.isRemote},isRemote:function(){return this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE||this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP},canSetEdit:function(){return this.fileInfo.sharePermissions&OC.PERMISSION_UPDATE||this.canEdit},canSetCreate:function(){return this.fileInfo.sharePermissions&OC.PERMISSION_CREATE||this.canCreate},canSetDelete:function(){return this.fileInfo.sharePermissions&OC.PERMISSION_DELETE||this.canDelete},canSetReshare:function(){return this.fileInfo.sharePermissions&OC.PERMISSION_SHARE||this.canReshare},canSetDownload:function(){return this.fileInfo.canDownload()||this.canDownload},canEdit:{get:function(){return this.share.hasUpdatePermission},set:function(n){this.updatePermissions({isEditChecked:n})}},canCreate:{get:function(){return this.share.hasCreatePermission},set:function(n){this.updatePermissions({isCreateChecked:n})}},canDelete:{get:function(){return this.share.hasDeletePermission},set:function(n){this.updatePermissions({isDeleteChecked:n})}},canReshare:{get:function(){return this.share.hasSharePermission},set:function(n){this.updatePermissions({isReshareChecked:n})}},canDownload:{get:function(){return this.share.hasDownloadPermission},set:function(n){this.updatePermissions({isDownloadChecked:n})}},hasRead:{get:function(){return this.share.hasReadPermission}},isFolder:function(){return"dir"===this.fileInfo.type},hasExpirationDate:{get:function(){return this.config.isDefaultInternalExpireDateEnforced||!!this.share.expireDate},set:function(n){var e=this.config.defaultInternalExpirationDate||new Date((new Date).setDate((new Date).getDate()+1));this.share.expireDate=n?this.formatDateToString(e):"",console.debug("Expiration date status",n,this.share.expireDate)}},dateMaxEnforced:function(){return!this.isRemote&&this.config.isDefaultInternalExpireDateEnforced?new Date((new Date).setDate((new Date).getDate()+1+this.config.defaultInternalExpireDate)):this.config.isDefaultRemoteExpireDateEnforced?new Date((new Date).setDate((new Date).getDate()+1+this.config.defaultRemoteExpireDate)):null},hasStatus:function(){return this.share.type===this.SHARE_TYPES.SHARE_TYPE_USER&&"object"===ke(this.share.status)&&!Array.isArray(this.share.status)},allowDownloadText:function(){return t("files_sharing","Allow download")},isSetDownloadButtonVisible:function(){return this.isFolder||["application/msword","application/vnd.openxmlformats-officedocument.wordprocessingml.document","application/vnd.ms-powerpoint","application/vnd.openxmlformats-officedocument.presentationml.presentation","application/vnd.ms-excel","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","application/vnd.oasis.opendocument.text","application/vnd.oasis.opendocument.spreadsheet","application/vnd.oasis.opendocument.presentation"].includes(this.fileInfo.mimetype)}},methods:{updatePermissions:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=n.isEditChecked,t=void 0===e?this.canEdit:e,r=n.isCreateChecked,i=void 0===r?this.canCreate:r,a=n.isDeleteChecked,s=void 0===a?this.canDelete:a,o=n.isReshareChecked,c=void 0===o?this.canReshare:o,l=n.isDownloadChecked,u=void 0===l?this.canDownload:l,h=0|(this.hasRead?this.permissionsRead:0)|(i?this.permissionsCreate:0)|(s?this.permissionsDelete:0)|(t?this.permissionsEdit:0)|(c?this.permissionsShare:0);this.share.permissions=h,this.share.hasDownloadPermission!==u&&(this.share.hasDownloadPermission=u),this.queueUpdate("permissions","attributes")},onMenuClose:function(){this.onNoteSubmit()}}},De=Pe,Te=r(68805),Re={};Re.styleTagTransform=U(),Re.setAttributes=O(),Re.insert=R().bind(null,"head"),Re.domAPI=D(),Re.insertStyleElement=L(),k()(Te.Z,Re),Te.Z&&Te.Z.locals&&Te.Z.locals;var Ne=(0,B.Z)(De,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("li",{staticClass:"sharing-entry"},[t("NcAvatar",{staticClass:"sharing-entry__avatar",attrs:{"is-no-user":n.share.type!==n.SHARE_TYPES.SHARE_TYPE_USER,user:n.share.shareWith,"display-name":n.share.shareWithDisplayName,"tooltip-message":n.share.type===n.SHARE_TYPES.SHARE_TYPE_USER?n.share.shareWith:"","menu-position":"left",url:n.share.shareWithAvatar}}),n._v(" "),t(n.share.shareWithLink?"a":"div",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:n.tooltip,expression:"tooltip",modifiers:{auto:!0}}],tag:"component",staticClass:"sharing-entry__desc",attrs:{href:n.share.shareWithLink}},[t("span",[n._v(n._s(n.title)),n.isUnique?n._e():t("span",{staticClass:"sharing-entry__desc-unique"},[n._v(" ("+n._s(n.share.shareWithDisplayNameUnique)+")")])]),n._v(" "),n.hasStatus?t("p",[t("span",[n._v(n._s(n.share.status.icon||""))]),n._v(" "),t("span",[n._v(n._s(n.share.status.message||""))])]):n._e()]),n._v(" "),t("NcActions",{staticClass:"sharing-entry__actions",attrs:{"menu-align":"right"},on:{close:n.onMenuClose}},[n.share.canEdit?[t("NcActionCheckbox",{ref:"canEdit",attrs:{checked:n.canEdit,value:n.permissionsEdit,disabled:n.saving||!n.canSetEdit},on:{"update:checked":function(e){n.canEdit=e}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Allow editing"))+"\n\t\t\t")]),n._v(" "),n.isFolder?t("NcActionCheckbox",{ref:"canCreate",attrs:{checked:n.canCreate,value:n.permissionsCreate,disabled:n.saving||!n.canSetCreate},on:{"update:checked":function(e){n.canCreate=e}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Allow creating"))+"\n\t\t\t")]):n._e(),n._v(" "),n.isFolder?t("NcActionCheckbox",{ref:"canDelete",attrs:{checked:n.canDelete,value:n.permissionsDelete,disabled:n.saving||!n.canSetDelete},on:{"update:checked":function(e){n.canDelete=e}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Allow deleting"))+"\n\t\t\t")]):n._e(),n._v(" "),n.config.isResharingAllowed?t("NcActionCheckbox",{ref:"canReshare",attrs:{checked:n.canReshare,value:n.permissionsShare,disabled:n.saving||!n.canSetReshare},on:{"update:checked":function(e){n.canReshare=e}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Allow resharing"))+"\n\t\t\t")]):n._e(),n._v(" "),n.isSetDownloadButtonVisible?t("NcActionCheckbox",{ref:"canDownload",attrs:{checked:n.canDownload,disabled:n.saving||!n.canSetDownload},on:{"update:checked":function(e){n.canDownload=e}}},[n._v("\n\t\t\t\t"+n._s(n.allowDownloadText)+"\n\t\t\t")]):n._e(),n._v(" "),t("NcActionCheckbox",{attrs:{checked:n.hasExpirationDate,disabled:n.config.isDefaultInternalExpireDateEnforced||n.saving},on:{"update:checked":function(e){n.hasExpirationDate=e},uncheck:n.onExpirationDisable}},[n._v("\n\t\t\t\t"+n._s(n.config.isDefaultInternalExpireDateEnforced?n.t("files_sharing","Expiration date enforced"):n.t("files_sharing","Set expiration date"))+"\n\t\t\t")]),n._v(" "),n.hasExpirationDate?t("NcActionInput",{ref:"expireDate",class:{error:n.errors.expireDate},attrs:{"is-native-picker":!0,"hide-label":!0,disabled:n.saving,value:new Date(n.share.expireDate),type:"date",min:n.dateTomorrow,max:n.dateMaxEnforced},on:{input:n.onExpirationChange}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Enter a date"))+"\n\t\t\t")]):n._e(),n._v(" "),n.canHaveNote?[t("NcActionCheckbox",{attrs:{checked:n.hasNote,disabled:n.saving},on:{"update:checked":function(e){n.hasNote=e},uncheck:function(e){return n.queueUpdate("note")}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Note to recipient"))+"\n\t\t\t\t")]),n._v(" "),n.hasNote?t("NcActionTextEditable",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.note,show:n.errors.note,trigger:"manual"},expression:"{\n\t\t\t\t\t\tcontent: errors.note,\n\t\t\t\t\t\tshow: errors.note,\n\t\t\t\t\t\ttrigger: 'manual'\n\t\t\t\t\t}",modifiers:{auto:!0}}],ref:"note",class:{error:n.errors.note},attrs:{disabled:n.saving,value:n.share.newNote||n.share.note,icon:"icon-edit"},on:{"update:value":n.onNoteChange,submit:n.onNoteSubmit}}):n._e()]:n._e()]:n._e(),n._v(" "),n.share.canDelete?t("NcActionButton",{attrs:{icon:"icon-close",disabled:n.saving},on:{click:function(e){return e.preventDefault(),n.onDelete.apply(null,arguments)}}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Unshare"))+"\n\t\t")]):n._e()],2)],1)}),[],!1,null,"708928fe",null);function Oe(n,e){(null==e||e>n.length)&&(e=n.length);for(var t=0,r=new Array(e);t<e;t++)r[t]=n[t];return r}var Ie={name:"SharingList",components:{SharingEntry:Ne.exports},mixins:[A],props:{fileInfo:{type:Object,default:function(){},required:!0},shares:{type:Array,default:function(){return[]},required:!0}},computed:{hasShares:function(){return 0===this.shares.length},isUnique:function(){var n=this;return function(e){return(t=n.shares,function(n){if(Array.isArray(n))return Oe(n)}(t)||function(n){if("undefined"!=typeof Symbol&&null!=n[Symbol.iterator]||null!=n["@@iterator"])return Array.from(n)}(t)||function(n,e){if(n){if("string"==typeof n)return Oe(n,e);var t=Object.prototype.toString.call(n).slice(8,-1);return"Object"===t&&n.constructor&&(t=n.constructor.name),"Map"===t||"Set"===t?Array.from(n):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?Oe(n,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).filter((function(t){return e.type===n.SHARE_TYPES.SHARE_TYPE_USER&&e.shareWithDisplayName===t.shareWithDisplayName})).length<=1;var t}}},methods:{removeShare:function(n){var e=this.shares.findIndex((function(e){return e===n}));this.shares.splice(e,1)}}},Le=(0,B.Z)(Ie,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("ul",{staticClass:"sharing-sharee-list"},n._l(n.shares,(function(e){return t("SharingEntry",{key:e.id,attrs:{"file-info":n.fileInfo,share:e,"is-unique":n.isUnique(e)},on:{"remove:share":n.removeShare}})})),1)}),[],!1,null,null,null).exports;function He(n,e){(null==e||e>n.length)&&(e=n.length);for(var t=0,r=new Array(e);t<e;t++)r[t]=n[t];return r}function Ue(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}function Ye(n){return function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){Ue(a,r,i,s,o,"next",n)}function o(n){Ue(a,r,i,s,o,"throw",n)}s(void 0)}))}}var Me={name:"SharingTab",components:{NcAvatar:h(),CollectionList:c.G,SharingEntryInternal:K,SharingEntrySimple:j,SharingInherited:Vn,SharingInput:En,SharingLinkList:be,SharingList:Le},mixins:[A],data:function(){return{config:new g,error:"",expirationInterval:null,loading:!0,fileInfo:null,reshare:null,sharedWithMe:{},shares:[],linkShares:[],sections:OCA.Sharing.ShareTabSections.getSections(),projectsEnabled:(0,p.loadState)("core","projects_enabled",!1)}},computed:{isSharedWithMe:function(){return Object.keys(this.sharedWithMe).length>0},canReshare:function(){return!!(this.fileInfo.permissions&OC.PERMISSION_SHARE)||!!(this.reshare&&this.reshare.hasSharePermission&&this.config.isResharingAllowed)}},methods:{update:function(n){var e=this;return Ye(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:e.fileInfo=n,e.resetState(),e.getShares();case 3:case"end":return t.stop()}}),t)})))()},getShares:function(){var n=this;return Ye(regeneratorRuntime.mark((function e(){var r,i,a,s,o,c,u,h,p,f,g,m;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,n.loading=!0,r=(0,l.generateOcsUrl)("apps/files_sharing/api/v1/shares"),i="json",a=(n.fileInfo.path+"/"+n.fileInfo.name).replace("//","/"),s=d.default.get(r,{params:{format:i,path:a,reshares:!0}}),o=d.default.get(r,{params:{format:i,path:a,shared_with_me:!0}}),e.next=9,Promise.all([s,o]);case 9:c=e.sent,v=2,u=function(n){if(Array.isArray(n))return n}(_=c)||function(n,e){var t=null==n?null:"undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(null!=t){var r,i,a=[],s=!0,o=!1;try{for(t=t.call(n);!(s=(r=t.next()).done)&&(a.push(r.value),!e||a.length!==e);s=!0);}catch(n){o=!0,i=n}finally{try{s||null==t.return||t.return()}finally{if(o)throw i}}return a}}(_,v)||function(n,e){if(n){if("string"==typeof n)return He(n,e);var t=Object.prototype.toString.call(n).slice(8,-1);return"Object"===t&&n.constructor&&(t=n.constructor.name),"Map"===t||"Set"===t?Array.from(n):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?He(n,e):void 0}}(_,v)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),h=u[0],p=u[1],n.loading=!1,n.processSharedWithMe(p),n.processShares(h),e.next=23;break;case 18:e.prev=18,e.t0=e.catch(0),null!==(f=e.t0.response.data)&&void 0!==f&&null!==(g=f.ocs)&&void 0!==g&&null!==(m=g.meta)&&void 0!==m&&m.message?n.error=e.t0.response.data.ocs.meta.message:n.error=t("files_sharing","Unable to load the shares list"),n.loading=!1,console.error("Error loading the shares list",e.t0);case 23:case"end":return e.stop()}var _,v}),e,null,[[0,18]])})))()},resetState:function(){clearInterval(this.expirationInterval),this.loading=!0,this.error="",this.sharedWithMe={},this.shares=[],this.linkShares=[]},updateExpirationSubtitle:function(n){var e=moment(n.expireDate).unix();this.$set(this.sharedWithMe,"subtitle",t("files_sharing","Expires {relativetime}",{relativetime:OC.Util.relativeModifiedDate(1e3*e)})),moment().unix()>e&&(clearInterval(this.expirationInterval),this.$set(this.sharedWithMe,"subtitle",t("files_sharing","this share just expired.")))},processShares:function(n){var e=this,t=n.data;if(t.ocs&&t.ocs.data&&t.ocs.data.length>0){var r=t.ocs.data.map((function(n){return new v(n)})).sort((function(n,e){return e.createdTime-n.createdTime}));this.linkShares=r.filter((function(n){return n.type===e.SHARE_TYPES.SHARE_TYPE_LINK||n.type===e.SHARE_TYPES.SHARE_TYPE_EMAIL})),this.shares=r.filter((function(n){return n.type!==e.SHARE_TYPES.SHARE_TYPE_LINK&&n.type!==e.SHARE_TYPES.SHARE_TYPE_EMAIL})),console.debug("Processed",this.linkShares.length,"link share(s)"),console.debug("Processed",this.shares.length,"share(s)")}},processSharedWithMe:function(n){var e=n.data;if(e.ocs&&e.ocs.data&&e.ocs.data[0]){var r=new v(e),i=function(n){return n.type===m.D.SHARE_TYPE_GROUP?t("files_sharing","Shared with you and the group {group} by {owner}",{group:n.shareWithDisplayName,owner:n.ownerDisplayName},void 0,{escape:!1}):n.type===m.D.SHARE_TYPE_CIRCLE?t("files_sharing","Shared with you and {circle} by {owner}",{circle:n.shareWithDisplayName,owner:n.ownerDisplayName},void 0,{escape:!1}):n.type===m.D.SHARE_TYPE_ROOM?n.shareWithDisplayName?t("files_sharing","Shared with you and the conversation {conversation} by {owner}",{conversation:n.shareWithDisplayName,owner:n.ownerDisplayName},void 0,{escape:!1}):t("files_sharing","Shared with you in a conversation by {owner}",{owner:n.ownerDisplayName},void 0,{escape:!1}):t("files_sharing","Shared with you by {owner}",{owner:n.ownerDisplayName},void 0,{escape:!1})}(r),a=r.ownerDisplayName,s=r.owner;this.sharedWithMe={displayName:a,title:i,user:s},this.reshare=r,r.expireDate&&moment(r.expireDate).unix()>moment().unix()&&(this.updateExpirationSubtitle(r),this.expirationInterval=setInterval(this.updateExpirationSubtitle,1e4,r))}else this.fileInfo&&void 0!==this.fileInfo.shareOwnerId&&this.fileInfo.shareOwnerId!==OC.currentUser&&(this.sharedWithMe={displayName:this.fileInfo.shareOwner,title:t("files_sharing","Shared with you by {owner}",{owner:this.fileInfo.shareOwner},void 0,{escape:!1}),user:this.fileInfo.shareOwnerId})},addShare:function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){};n.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL?this.linkShares.unshift(n):this.shares.unshift(n),this.awaitForShare(n,e)},awaitForShare:function(n,e){var t=this.$refs.shareList;n.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL&&(t=this.$refs.linkShareList),this.$nextTick((function(){var r=t.$children.find((function(e){return e.share===n}));r&&e(r)}))}}},Be=Me,je=r(45770),We={};We.styleTagTransform=U(),We.setAttributes=O(),We.insert=R().bind(null,"head"),We.domAPI=D(),We.insertStyleElement=L(),k()(je.Z,We),je.Z&&je.Z.locals&&je.Z.locals;var Fe=(0,B.Z)(Be,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("div",{class:{"icon-loading":n.loading}},[n.error?t("div",{staticClass:"emptycontent",class:{emptyContentWithSections:n.sections.length>0}},[t("div",{staticClass:"icon icon-error"}),n._v(" "),t("h2",[n._v(n._s(n.error))])]):t("div",{staticClass:"sharingTab__content"},[n.isSharedWithMe?t("SharingEntrySimple",n._b({staticClass:"sharing-entry__reshare",scopedSlots:n._u([{key:"avatar",fn:function(){return[t("NcAvatar",{staticClass:"sharing-entry__avatar",attrs:{user:n.sharedWithMe.user,"display-name":n.sharedWithMe.displayName,"tooltip-message":""}})]},proxy:!0}],null,!1,1656378807)},"SharingEntrySimple",n.sharedWithMe,!1)):n._e(),n._v(" "),n.loading?n._e():t("SharingInput",{attrs:{"can-reshare":n.canReshare,"file-info":n.fileInfo,"link-shares":n.linkShares,reshare:n.reshare,shares:n.shares},on:{"add:share":n.addShare}}),n._v(" "),n.loading?n._e():t("SharingLinkList",{ref:"linkShareList",attrs:{"can-reshare":n.canReshare,"file-info":n.fileInfo,shares:n.linkShares}}),n._v(" "),n.loading?n._e():t("SharingList",{ref:"shareList",attrs:{shares:n.shares,"file-info":n.fileInfo}}),n._v(" "),n.canReshare&&!n.loading?t("SharingInherited",{attrs:{"file-info":n.fileInfo}}):n._e(),n._v(" "),t("SharingEntryInternal",{attrs:{"file-info":n.fileInfo}}),n._v(" "),n.projectsEnabled&&n.fileInfo?t("CollectionList",{attrs:{id:""+n.fileInfo.id,type:"file",name:n.fileInfo.name}}):n._e()],1),n._v(" "),n._l(n.sections,(function(e,r){return t("div",{key:r,ref:"section-"+r,refInFor:!0,staticClass:"sharingTab__additionalContent"},[t(e(n.$refs["section-"+r],n.fileInfo),{tag:"component",attrs:{"file-info":n.fileInfo}})],1)}))],2)}),[],!1,null,"59d829c2",null).exports;function qe(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}var $e=function(){function n(){var e,t;!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),t=void 0,(e="_state")in this?Object.defineProperty(this,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):this[e]=t,this._state={},this._state.results=[],console.debug("OCA.Sharing.ShareSearch initialized")}var e,t;return e=n,(t=[{key:"state",get:function(){return this._state}},{key:"addNewResult",value:function(n){return""!==n.displayName.trim()&&"function"==typeof n.handler?(this._state.results.push(n),!0):(console.error("Invalid search result provided",n),!1)}}])&&qe(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}();function Ze(n){return Ze="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},Ze(n)}function Ge(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}var Ve=function(){function n(){var e,t;!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),t=void 0,(e="_state")in this?Object.defineProperty(this,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):this[e]=t,this._state={},this._state.actions=[],console.debug("OCA.Sharing.ExternalLinkActions initialized")}var e,t;return e=n,(t=[{key:"state",get:function(){return this._state}},{key:"registerAction",value:function(n){return console.warn("OCA.Sharing.ExternalLinkActions is deprecated, use OCA.Sharing.ExternalShareAction instead"),"object"===Ze(n)&&n.icon&&n.name&&n.url?(this._state.actions.push(n),!0):(console.error("Invalid action provided",n),!1)}}])&&Ge(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}();function ze(n){return ze="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},ze(n)}function Ke(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}var Je=function(){function n(){var e,t;!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),t=void 0,(e="_state")in this?Object.defineProperty(this,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):this[e]=t,this._state={},this._state.actions=[],console.debug("OCA.Sharing.ExternalShareActions initialized")}var e,t;return e=n,(t=[{key:"state",get:function(){return this._state}},{key:"registerAction",value:function(n){return"object"===ze(n)&&"string"==typeof n.id&&"function"==typeof n.data&&Array.isArray(n.shareType)&&"object"===ze(n.handlers)&&Object.values(n.handlers).every((function(n){return"function"==typeof n}))?this._state.actions.findIndex((function(e){return e.id===n.id}))>-1?(console.error("An action with the same id ".concat(n.id," already exists"),n),!1):(this._state.actions.push(n),!0):(console.error("Invalid action provided",n),!1)}}])&&Ke(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}();function Qe(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}var Xe=function(){function n(){var e,t;!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),t=void 0,(e="_sections")in this?Object.defineProperty(this,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):this[e]=t,this._sections=[]}var e,t;return e=n,(t=[{key:"registerSection",value:function(n){this._sections.push(n)}},{key:"getSections",value:function(){return this._sections}}])&&Qe(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}(),nt=r(44582);function et(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}window.OCA.Sharing||(window.OCA.Sharing={}),Object.assign(window.OCA.Sharing,{ShareSearch:new $e}),Object.assign(window.OCA.Sharing,{ExternalLinkActions:new Ve}),Object.assign(window.OCA.Sharing,{ExternalShareActions:new Je}),Object.assign(window.OCA.Sharing,{ShareTabSections:new Xe}),i.ZP.prototype.t=o.translate,i.ZP.prototype.n=o.translatePlural,i.ZP.use(s());var tt=i.ZP.extend(Fe),rt=null;window.addEventListener("DOMContentLoaded",(function(){OCA.Files&&OCA.Files.Sidebar&&OCA.Files.Sidebar.registerTab(new OCA.Files.Sidebar.Tab({id:"sharing",name:(0,o.translate)("files_sharing","Sharing"),iconSvg:nt,mount:function(n,e,t){return(r=regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return rt&&rt.$destroy(),rt=new tt({parent:t}),r.next=4,rt.update(e);case 4:rt.$mount(n);case 5:case"end":return r.stop()}}),r)})),function(){var n=this,e=arguments;return new Promise((function(t,i){var a=r.apply(n,e);function s(n){et(a,t,i,s,o,"next",n)}function o(n){et(a,t,i,s,o,"throw",n)}s(void 0)}))})();var r},update:function(n){rt.update(n)},destroy:function(){rt.$destroy(),rt=null}}))}))},13194:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".error[data-v-5e957d09] .action-checkbox__label:before{border:1px solid var(--color-error)}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharePermissionsEditor.vue"],names:[],mappings:"AAiSC,wDACC,mCAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.error {\n\t::v-deep .action-checkbox__label:before {\n\t\tborder: 1px solid var(--color-error);\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},68805:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-entry[data-v-708928fe]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-708928fe]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-708928fe]{color:var(--color-text-maxcontrast)}.sharing-entry__desc-unique[data-v-708928fe]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-708928fe]{margin-left:auto}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntry.vue"],names:[],mappings:"AAmdA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAED,6CACC,mCAAA,CAGF,yCACC,gBAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t\t&-unique {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},57851:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-entry[data-v-2bbe78b4]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-2bbe78b4]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-2bbe78b4]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-2bbe78b4]{margin-left:auto}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryInherited.vue"],names:[],mappings:"AAgGA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAGF,yCACC,gBAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},12158:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-entry__internal .avatar-external[data-v-95f87a66]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}.sharing-entry__internal .icon-checkmark-color[data-v-95f87a66]{opacity:1}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryInternal.vue"],names:[],mappings:"AAiHC,2DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA,CAED,gEACC,SAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.sharing-entry__internal {\n\t.avatar-external {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},42503:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-entry[data-v-182f91a3]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-182f91a3]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em;overflow:hidden}.sharing-entry__desc p[data-v-182f91a3]{color:var(--color-text-maxcontrast)}.sharing-entry__title[data-v-182f91a3]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.sharing-entry:not(.sharing-entry--share) .sharing-entry__actions .new-share-link[data-v-182f91a3]{border-top:1px solid var(--color-border)}.sharing-entry[data-v-182f91a3] .avatar-link-share{background-color:var(--color-primary)}.sharing-entry .sharing-entry__action--public-upload[data-v-182f91a3]{border-bottom:1px solid var(--color-border)}.sharing-entry__loading[data-v-182f91a3]{width:44px;height:44px;margin:0;padding:14px;margin-left:auto}.sharing-entry .action-item[data-v-182f91a3]{margin-left:auto}.sharing-entry .action-item~.action-item[data-v-182f91a3],.sharing-entry .action-item~.sharing-entry__loading[data-v-182f91a3]{margin-left:0}.sharing-entry .icon-checkmark-color[data-v-182f91a3]{opacity:1}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryLink.vue"],names:[],mappings:"AAu3BA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,eAAA,CAEA,wCACC,mCAAA,CAGF,uCACC,sBAAA,CACA,eAAA,CACA,kBAAA,CAIA,mGACC,wCAAA,CAIF,oDACC,qCAAA,CAGD,sEACC,2CAAA,CAGD,yCACC,UAAA,CACA,WAAA,CACA,QAAA,CACA,YAAA,CACA,gBAAA,CAKD,6CACC,gBAAA,CACA,+HAEC,aAAA,CAIF,sDACC,SAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\toverflow: hidden;\n\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__title {\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t}\n\n\t&:not(.sharing-entry--share) &__actions {\n\t\t.new-share-link {\n\t\t\tborder-top: 1px solid var(--color-border);\n\t\t}\n\t}\n\n\t::v-deep .avatar-link-share {\n\t\tbackground-color: var(--color-primary);\n\t}\n\n\t.sharing-entry__action--public-upload {\n\t\tborder-bottom: 1px solid var(--color-border);\n\t}\n\n\t&__loading {\n\t\twidth: 44px;\n\t\theight: 44px;\n\t\tmargin: 0;\n\t\tpadding: 14px;\n\t\tmargin-left: auto;\n\t}\n\n\t// put menus to the left\n\t// but only the first one\n\t.action-item {\n\t\tmargin-left: auto;\n\t\t~ .action-item,\n\t\t~ .sharing-entry__loading {\n\t\t\tmargin-left: 0;\n\t\t}\n\t}\n\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},25027:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-entry[data-v-73184f79]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-73184f79]{padding:8px;line-height:1.2em;position:relative;flex:1 1;min-width:0}.sharing-entry__desc p[data-v-73184f79]{color:var(--color-text-maxcontrast)}.sharing-entry__title[data-v-73184f79]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:inherit}.sharing-entry__actions[data-v-73184f79]{margin-left:auto !important}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntrySimple.vue"],names:[],mappings:"AA4FA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,WAAA,CACA,iBAAA,CACA,iBAAA,CACA,QAAA,CACA,WAAA,CACA,wCACC,mCAAA,CAGF,uCACC,kBAAA,CACA,sBAAA,CACA,eAAA,CACA,iBAAA,CAED,yCACC,2BAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\t&__desc {\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tposition: relative;\n\t\tflex: 1 1;\n\t\tmin-width: 0;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__title {\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\tmax-width: inherit;\n\t}\n\t&__actions {\n\t\tmargin-left: auto !important;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},84721:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-search{display:flex;flex-direction:column;margin-bottom:4px}.sharing-search label[for=sharing-search-input]{margin-bottom:2px}.sharing-search__input{width:100%;margin:10px 0}.sharing-search__input .multiselect__option span[lookup] .avatardiv{background-image:var(--icon-search-white);background-repeat:no-repeat;background-position:center;background-color:var(--color-text-maxcontrast) !important}.sharing-search__input .multiselect__option span[lookup] .avatardiv div{display:none}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingInput.vue"],names:[],mappings:"AA+gBA,gBACC,YAAA,CACA,qBAAA,CACA,iBAAA,CAEA,gDACC,iBAAA,CAGD,uBACC,UAAA,CACA,aAAA,CAKE,oEACC,yCAAA,CACA,2BAAA,CACA,0BAAA,CACA,yDAAA,CACA,wEACC,YAAA",sourcesContent:['\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.sharing-search {\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin-bottom: 4px;\n\n\tlabel[for="sharing-search-input"] {\n\t\tmargin-bottom: 2px;\n\t}\n\n\t&__input {\n\t\twidth: 100%;\n\t\tmargin: 10px 0;\n\n\t\t// properly style the lookup entry\n\t\t.multiselect__option {\n\t\t\tspan[lookup] {\n\t\t\t\t.avatardiv {\n\t\t\t\t\tbackground-image: var(--icon-search-white);\n\t\t\t\t\tbackground-repeat: no-repeat;\n\t\t\t\t\tbackground-position: center;\n\t\t\t\t\tbackground-color: var(--color-text-maxcontrast) !important;\n\t\t\t\t\tdiv {\n\t\t\t\t\t\tdisplay: none;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n'],sourceRoot:""}]),e.Z=s},44985:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-entry__inherited .avatar-shared[data-v-6a277822]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}","",{version:3,sources:["webpack://./apps/files_sharing/src/views/SharingInherited.vue"],names:[],mappings:"AAgKC,0DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.sharing-entry__inherited {\n\t.avatar-shared {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},45770:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".emptyContentWithSections[data-v-59d829c2]{margin:1rem auto}.sharingTab__content[data-v-59d829c2]{padding:0 6px}.sharingTab__additionalContent[data-v-59d829c2]{margin:44px 0}","",{version:3,sources:["webpack://./apps/files_sharing/src/views/SharingTab.vue"],names:[],mappings:"AA2WA,2CACC,gBAAA,CAIA,sCACC,aAAA,CAED,gDACC,aAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.emptyContentWithSections {\n\tmargin: 1rem auto;\n}\n\n.sharingTab {\n\t&__content {\n\t\tpadding: 0 6px;\n\t}\n\t&__additionalContent {\n\t\tmargin: 44px 0;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s}},r={};function i(n){var t=r[n];if(void 0!==t)return t.exports;var a=r[n]={id:n,loaded:!1,exports:{}};return e[n].call(a.exports,a,a.exports,i),a.loaded=!0,a.exports}i.m=e,i.amdD=function(){throw new Error("define cannot be used indirect")},i.amdO={},n=[],i.O=function(e,t,r,a){if(!t){var s=1/0;for(u=0;u<n.length;u++){t=n[u][0],r=n[u][1],a=n[u][2];for(var o=!0,c=0;c<t.length;c++)(!1&a||s>=a)&&Object.keys(i.O).every((function(n){return i.O[n](t[c])}))?t.splice(c--,1):(o=!1,a<s&&(s=a));if(o){n.splice(u--,1);var l=r();void 0!==l&&(e=l)}}return e}a=a||0;for(var u=n.length;u>0&&n[u-1][2]>a;u--)n[u]=n[u-1];n[u]=[t,r,a]},i.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return i.d(e,{a:e}),e},i.d=function(n,e){for(var t in e)i.o(e,t)&&!i.o(n,t)&&Object.defineProperty(n,t,{enumerable:!0,get:e[t]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"==typeof window)return window}}(),i.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},i.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},i.nmd=function(n){return n.paths=[],n.children||(n.children=[]),n},i.j=7870,function(){i.b=document.baseURI||self.location.href;var n={7870:0};i.O.j=function(e){return 0===n[e]};var e=function(e,t){var r,a,s=t[0],o=t[1],c=t[2],l=0;if(s.some((function(e){return 0!==n[e]}))){for(r in o)i.o(o,r)&&(i.m[r]=o[r]);if(c)var u=c(i)}for(e&&e(t);l<s.length;l++)a=s[l],i.o(n,a)&&n[a]&&n[a][0](),n[a]=0;return i.O(u)},t=self.webpackChunknextcloud=self.webpackChunknextcloud||[];t.forEach(e.bind(null,0)),t.push=e.bind(null,t.push.bind(t))}(),i.nc=void 0;var a=i.O(void 0,[7874],(function(){return i(77217)}));a=i.O(a)}(); -//# sourceMappingURL=files_sharing-files_sharing_tab.js.map?v=258736e0cd7217575bf4
\ No newline at end of file +!function(){"use strict";var n,e={83559:function(n,e,r){var i=r(20144),a=r(72268),s=r.n(a),o=r(9944),c=r(1794),l=r(79753),u=r(75925),h=r.n(u),d=r(4820),p=r(16453);function f(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}var g=function(){function n(){!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n)}var e,t;return e=n,(t=[{key:"isPublicUploadEnabled",get:function(){return document.getElementsByClassName("files-filestable")[0]&&"yes"===document.getElementsByClassName("files-filestable")[0].dataset.allowPublicUpload}},{key:"isShareWithLinkAllowed",get:function(){return document.getElementById("allowShareWithLink")&&"yes"===document.getElementById("allowShareWithLink").value}},{key:"federatedShareDocLink",get:function(){return OC.appConfig.core.federatedCloudShareDoc}},{key:"defaultExpirationDate",get:function(){return this.isDefaultExpireDateEnabled?new Date((new Date).setDate((new Date).getDate()+this.defaultExpireDate)):null}},{key:"defaultInternalExpirationDate",get:function(){return this.isDefaultInternalExpireDateEnabled?new Date((new Date).setDate((new Date).getDate()+this.defaultInternalExpireDate)):null}},{key:"defaultRemoteExpirationDateString",get:function(){return this.isDefaultRemoteExpireDateEnabled?new Date((new Date).setDate((new Date).getDate()+this.defaultRemoteExpireDate)):null}},{key:"enforcePasswordForPublicLink",get:function(){return!0===OC.appConfig.core.enforcePasswordForPublicLink}},{key:"enableLinkPasswordByDefault",get:function(){return!0===OC.appConfig.core.enableLinkPasswordByDefault}},{key:"isDefaultExpireDateEnforced",get:function(){return!0===OC.appConfig.core.defaultExpireDateEnforced}},{key:"isDefaultExpireDateEnabled",get:function(){return!0===OC.appConfig.core.defaultExpireDateEnabled}},{key:"isDefaultInternalExpireDateEnforced",get:function(){return!0===OC.appConfig.core.defaultInternalExpireDateEnforced}},{key:"isDefaultRemoteExpireDateEnforced",get:function(){return!0===OC.appConfig.core.defaultRemoteExpireDateEnforced}},{key:"isDefaultInternalExpireDateEnabled",get:function(){return!0===OC.appConfig.core.defaultInternalExpireDateEnabled}},{key:"isDefaultRemoteExpireDateEnabled",get:function(){return!0===OC.appConfig.core.defaultRemoteExpireDateEnabled}},{key:"isRemoteShareAllowed",get:function(){return!0===OC.appConfig.core.remoteShareAllowed}},{key:"isMailShareAllowed",get:function(){var n,e,t,r=OC.getCapabilities();return void 0!==(null==r||null===(n=r.files_sharing)||void 0===n?void 0:n.sharebymail)&&!0===(null==r||null===(e=r.files_sharing)||void 0===e||null===(t=e.public)||void 0===t?void 0:t.enabled)}},{key:"defaultExpireDate",get:function(){return OC.appConfig.core.defaultExpireDate}},{key:"defaultInternalExpireDate",get:function(){return OC.appConfig.core.defaultInternalExpireDate}},{key:"defaultRemoteExpireDate",get:function(){return OC.appConfig.core.defaultRemoteExpireDate}},{key:"isResharingAllowed",get:function(){return!0===OC.appConfig.core.resharingAllowed}},{key:"isPasswordForMailSharesRequired",get:function(){return void 0!==OC.getCapabilities().files_sharing.sharebymail&&OC.getCapabilities().files_sharing.sharebymail.password.enforced}},{key:"shouldAlwaysShowUnique",get:function(){var n,e;return!0===(null===(n=OC.getCapabilities().files_sharing)||void 0===n||null===(e=n.sharee)||void 0===e?void 0:e.always_show_unique)}},{key:"allowGroupSharing",get:function(){return!0===OC.appConfig.core.allowGroupSharing}},{key:"maxAutocompleteResults",get:function(){return parseInt(OC.config["sharing.maxAutocompleteResults"],10)||25}},{key:"minSearchStringLength",get:function(){return parseInt(OC.config["sharing.minSearchStringLength"],10)||0}},{key:"passwordPolicy",get:function(){var n=OC.getCapabilities();return n.password_policy?n.password_policy:{}}}])&&f(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}(),m=r(41922);function _(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}var v=function(){function n(e){var t,r,i;if(function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),i=void 0,(r="_share")in this?Object.defineProperty(this,r,{value:i,enumerable:!0,configurable:!0,writable:!0}):this[r]=i,e.ocs&&e.ocs.data&&e.ocs.data[0]&&(e=e.ocs.data[0]),e.hide_download=!!e.hide_download,e.mail_send=!!e.mail_send,e.attributes)try{e.attributes=JSON.parse(e.attributes)}catch(n){console.warn('Could not parse share attributes returned by server: "'+e.attributes+'"')}e.attributes=null!==(t=e.attributes)&&void 0!==t?t:[],this._share=e}var e,t;return e=n,(t=[{key:"state",get:function(){return this._share}},{key:"id",get:function(){return this._share.id}},{key:"type",get:function(){return this._share.share_type}},{key:"permissions",get:function(){return this._share.permissions},set:function(n){this._share.permissions=n}},{key:"attributes",get:function(){return this._share.attributes}},{key:"owner",get:function(){return this._share.uid_owner}},{key:"ownerDisplayName",get:function(){return this._share.displayname_owner}},{key:"shareWith",get:function(){return this._share.share_with}},{key:"shareWithDisplayName",get:function(){return this._share.share_with_displayname||this._share.share_with}},{key:"shareWithDisplayNameUnique",get:function(){return this._share.share_with_displayname_unique||this._share.share_with}},{key:"shareWithLink",get:function(){return this._share.share_with_link}},{key:"shareWithAvatar",get:function(){return this._share.share_with_avatar}},{key:"uidFileOwner",get:function(){return this._share.uid_file_owner}},{key:"displaynameFileOwner",get:function(){return this._share.displayname_file_owner||this._share.uid_file_owner}},{key:"createdTime",get:function(){return this._share.stime}},{key:"expireDate",get:function(){return this._share.expiration},set:function(n){this._share.expiration=n}},{key:"token",get:function(){return this._share.token}},{key:"note",get:function(){return this._share.note},set:function(n){this._share.note=n}},{key:"label",get:function(){return this._share.label},set:function(n){this._share.label=n}},{key:"mailSend",get:function(){return!0===this._share.mail_send}},{key:"hideDownload",get:function(){return!0===this._share.hide_download},set:function(n){this._share.hide_download=!0===n}},{key:"password",get:function(){return this._share.password},set:function(n){this._share.password=n}},{key:"passwordExpirationTime",get:function(){return this._share.password_expiration_time},set:function(n){this._share.password_expiration_time=n}},{key:"sendPasswordByTalk",get:function(){return this._share.send_password_by_talk},set:function(n){this._share.send_password_by_talk=n}},{key:"path",get:function(){return this._share.path}},{key:"itemType",get:function(){return this._share.item_type}},{key:"mimetype",get:function(){return this._share.mimetype}},{key:"fileSource",get:function(){return this._share.file_source}},{key:"fileTarget",get:function(){return this._share.file_target}},{key:"fileParent",get:function(){return this._share.file_parent}},{key:"hasReadPermission",get:function(){return!!(this.permissions&OC.PERMISSION_READ)}},{key:"hasCreatePermission",get:function(){return!!(this.permissions&OC.PERMISSION_CREATE)}},{key:"hasDeletePermission",get:function(){return!!(this.permissions&OC.PERMISSION_DELETE)}},{key:"hasUpdatePermission",get:function(){return!!(this.permissions&OC.PERMISSION_UPDATE)}},{key:"hasSharePermission",get:function(){return!!(this.permissions&OC.PERMISSION_SHARE)}},{key:"hasDownloadPermission",get:function(){for(var n in this._share.attributes){var e=this._share.attributes[n];if("permissions"===e.scope&&"download"===e.key)return e.enabled}return!0},set:function(n){this.setAttribute("permissions","download",!!n)}},{key:"setAttribute",value:function(n,e,t){var r={scope:n,key:e,enabled:t};for(var i in this._share.attributes){var a=this._share.attributes[i];if(a.scope===r.scope&&a.key===r.key)return void(this._share.attributes[i]=r)}this._share.attributes.push(r)}},{key:"canEdit",get:function(){return!0===this._share.can_edit}},{key:"canDelete",get:function(){return!0===this._share.can_delete}},{key:"viaFileid",get:function(){return this._share.via_fileid}},{key:"viaPath",get:function(){return this._share.via_path}},{key:"parent",get:function(){return this._share.parent}},{key:"storageId",get:function(){return this._share.storage_id}},{key:"storage",get:function(){return this._share.storage}},{key:"itemSource",get:function(){return this._share.item_source}},{key:"status",get:function(){return this._share.status}}])&&_(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}(),A={data:function(){return{SHARE_TYPES:m.D}}},y=r(26932),b=r(15961),w=r(12945),E=r.n(w),S=r(15168),C=r.n(S),x={name:"SharingEntrySimple",components:{NcActions:E()},directives:{Tooltip:C()},props:{title:{type:String,default:"",required:!0},tooltip:{type:String,default:""},subtitle:{type:String,default:""},isUnique:{type:Boolean,default:!0},ariaExpanded:{type:Boolean,default:null}},computed:{ariaExpandedValue:function(){return null===this.ariaExpanded?this.ariaExpanded:this.ariaExpanded?"true":"false"}}},k=r(93379),P=r.n(k),D=r(7795),T=r.n(D),R=r(90569),N=r.n(R),O=r(3565),I=r.n(O),L=r(19216),H=r.n(L),U=r(44589),Y=r.n(U),M=r(25027),B={};B.styleTagTransform=Y(),B.setAttributes=I(),B.insert=N().bind(null,"head"),B.domAPI=T(),B.insertStyleElement=H(),P()(M.Z,B),M.Z&&M.Z.locals&&M.Z.locals;var j=r(51900),W=(0,j.Z)(x,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("li",{staticClass:"sharing-entry"},[n._t("avatar"),n._v(" "),t("div",{directives:[{name:"tooltip",rawName:"v-tooltip",value:n.tooltip,expression:"tooltip"}],staticClass:"sharing-entry__desc"},[t("span",{staticClass:"sharing-entry__title"},[n._v(n._s(n.title))]),n._v(" "),n.subtitle?t("p",[n._v("\n\t\t\t"+n._s(n.subtitle)+"\n\t\t")]):n._e()]),n._v(" "),n.$slots.default?t("NcActions",{ref:"actionsComponent",staticClass:"sharing-entry__actions",attrs:{"menu-align":"right","aria-expanded":n.ariaExpandedValue}},[n._t("default")],2):n._e()],2)}),[],!1,null,"73184f79",null).exports,F=r(14625),q=r(4584);function $(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}var Z={name:"SharingEntryInternal",components:{Check:F.default,ClipboardTextMultipleOutline:q.Z,NcActionButton:b.Js,SharingEntrySimple:W},props:{fileInfo:{type:Object,default:function(){},required:!0}},data:function(){return{copied:!1,copySuccess:!1}},computed:{internalLink:function(){return window.location.protocol+"//"+window.location.host+(0,l.generateUrl)("/f/")+this.fileInfo.id},clipboardTooltip:function(){return this.copied?this.copySuccess?"":t("files_sharing","Cannot copy, please copy the link manually"):t("files_sharing","Copy to clipboard")},internalLinkSubtitle:function(){return"dir"===this.fileInfo.type?t("files_sharing","Only works for users with access to this folder"):t("files_sharing","Only works for users with access to this file")}},methods:{copyLink:function(){var n,e=this;return(n=regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,e.$copyText(e.internalLink);case 3:(0,y.s$)(t("files_sharing","Link copied")),e.$refs.shareEntrySimple.$refs.actionsComponent.$el.focus(),e.copySuccess=!0,e.copied=!0,n.next=14;break;case 9:n.prev=9,n.t0=n.catch(0),e.copySuccess=!1,e.copied=!0,console.error(n.t0);case 14:return n.prev=14,setTimeout((function(){e.copySuccess=!1,e.copied=!1}),4e3),n.finish(14);case 17:case"end":return n.stop()}}),n,null,[[0,9,14,17]])})),function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){$(a,r,i,s,o,"next",n)}function o(n){$(a,r,i,s,o,"throw",n)}s(void 0)}))})()}}},G=Z,V=r(75776),z={};z.styleTagTransform=Y(),z.setAttributes=I(),z.insert=N().bind(null,"head"),z.domAPI=T(),z.insertStyleElement=H(),P()(V.Z,z),V.Z&&V.Z.locals&&V.Z.locals;var K=(0,j.Z)(G,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("ul",[t("SharingEntrySimple",{ref:"shareEntrySimple",staticClass:"sharing-entry__internal",attrs:{title:n.t("files_sharing","Internal link"),subtitle:n.internalLinkSubtitle},scopedSlots:n._u([{key:"avatar",fn:function(){return[t("div",{staticClass:"avatar-external icon-external-white"})]},proxy:!0}])},[n._v(" "),t("NcActionButton",{attrs:{"aria-label":n.t("files_sharing","Copy internal link to clipboard")},on:{click:function(e){return e.preventDefault(),n.copyLink.apply(null,arguments)}},scopedSlots:n._u([{key:"icon",fn:function(){return[n.copied&&n.copySuccess?t("Check",{attrs:{size:20}}):t("ClipboardTextMultipleOutline",{attrs:{size:20}})]},proxy:!0}])},[n._v("\n\t\t\t"+n._s(n.clipboardTooltip)+"\n\t\t")])],1)],1)}),[],!1,null,"257ca35d",null),J=K.exports,Q=r(22200),X=r(20296),nn=r.n(X),en=r(98266),tn=r.n(en);function rn(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}function an(n){return function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){rn(a,r,i,s,o,"next",n)}function o(n){rn(a,r,i,s,o,"throw",n)}s(void 0)}))}}var sn=new g,on="abcdefgijkmnopqrstwxyzABCDEFGHJKLMNPQRSTWXYZ23456789";function cn(){return ln.apply(this,arguments)}function ln(){return(ln=an(regeneratorRuntime.mark((function n(){var e;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(!sn.passwordPolicy.api||!sn.passwordPolicy.api.generate){n.next=12;break}return n.prev=1,n.next=4,d.default.get(sn.passwordPolicy.api.generate);case 4:if(!(e=n.sent).data.ocs.data.password){n.next=7;break}return n.abrupt("return",e.data.ocs.data.password);case 7:n.next=12;break;case 9:n.prev=9,n.t0=n.catch(1),console.info("Error generating password from password_policy",n.t0);case 12:return n.abrupt("return",Array(10).fill(0).reduce((function(n,e){return n+on.charAt(Math.floor(Math.random()*on.length))}),""));case 13:case"end":return n.stop()}}),n,null,[[1,9]])})))).apply(this,arguments)}function un(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}function hn(n){return function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){un(a,r,i,s,o,"next",n)}function o(n){un(a,r,i,s,o,"throw",n)}s(void 0)}))}}r(35449);var dn=(0,l.generateOcsUrl)("apps/files_sharing/api/v1/shares"),pn={methods:{createShare:function(n){return hn(regeneratorRuntime.mark((function e(){var r,i,a,s,o,c,l,u,h,p,f,g,m,_,A,y,b;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=n.path,i=n.permissions,a=n.shareType,s=n.shareWith,o=n.publicUpload,c=n.password,l=n.sendPasswordByTalk,u=n.expireDate,h=n.label,p=n.attributes,e.prev=1,e.next=4,d.default.post(dn,{path:r,permissions:i,shareType:a,shareWith:s,publicUpload:o,password:c,sendPasswordByTalk:l,expireDate:u,label:h,attributes:p});case 4:if(null!=(g=e.sent)&&null!==(f=g.data)&&void 0!==f&&f.ocs){e.next=7;break}throw g;case 7:return e.abrupt("return",new v(g.data.ocs.data));case 10:throw e.prev=10,e.t0=e.catch(1),console.error("Error while creating share",e.t0),b=null===e.t0||void 0===e.t0||null===(m=e.t0.response)||void 0===m||null===(_=m.data)||void 0===_||null===(A=_.ocs)||void 0===A||null===(y=A.meta)||void 0===y?void 0:y.message,OC.Notification.showTemporary(b?t("files_sharing","Error creating the share: {errorMessage}",{errorMessage:b}):t("files_sharing","Error creating the share"),{type:"error"}),e.t0;case 16:case"end":return e.stop()}}),e,null,[[1,10]])})))()},deleteShare:function(n){return hn(regeneratorRuntime.mark((function e(){var r,i,a,s,o,c,l;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,d.default.delete(dn+"/".concat(n));case 3:if(null!=(i=e.sent)&&null!==(r=i.data)&&void 0!==r&&r.ocs){e.next=6;break}throw i;case 6:return e.abrupt("return",!0);case 9:throw e.prev=9,e.t0=e.catch(0),console.error("Error while deleting share",e.t0),l=null===e.t0||void 0===e.t0||null===(a=e.t0.response)||void 0===a||null===(s=a.data)||void 0===s||null===(o=s.ocs)||void 0===o||null===(c=o.meta)||void 0===c?void 0:c.message,OC.Notification.showTemporary(l?t("files_sharing","Error deleting the share: {errorMessage}",{errorMessage:l}):t("files_sharing","Error deleting the share"),{type:"error"}),e.t0;case 15:case"end":return e.stop()}}),e,null,[[0,9]])})))()},updateShare:function(n,e){return hn(regeneratorRuntime.mark((function r(){var i,a,s,o,c,l,u,h;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.prev=0,r.next=3,d.default.put(dn+"/".concat(n),e);case 3:if(null!=(a=r.sent)&&null!==(i=a.data)&&void 0!==i&&i.ocs){r.next=8;break}throw a;case 8:return r.abrupt("return",a.data.ocs.data);case 9:r.next=17;break;case 11:throw r.prev=11,r.t0=r.catch(0),console.error("Error while updating share",r.t0),400!==r.t0.response.status&&(u=null===r.t0||void 0===r.t0||null===(s=r.t0.response)||void 0===s||null===(o=s.data)||void 0===o||null===(c=o.ocs)||void 0===c||null===(l=c.meta)||void 0===l?void 0:l.message,OC.Notification.showTemporary(u?t("files_sharing","Error updating the share: {errorMessage}",{errorMessage:u}):t("files_sharing","Error updating the share"),{type:"error"})),h=r.t0.response.data.ocs.meta.message,new Error(h);case 17:case"end":return r.stop()}}),r,null,[[0,11]])})))()}}};function fn(n){return fn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},fn(n)}function gn(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(n);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),t.push.apply(t,r)}return t}function mn(n){for(var e=1;e<arguments.length;e++){var t=null!=arguments[e]?arguments[e]:{};e%2?gn(Object(t),!0).forEach((function(e){_n(n,e,t[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(t)):gn(Object(t)).forEach((function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(t,e))}))}return n}function _n(n,e,t){return e in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function vn(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}function An(n){return function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){vn(a,r,i,s,o,"next",n)}function o(n){vn(a,r,i,s,o,"throw",n)}s(void 0)}))}}var yn={name:"SharingInput",components:{NcMultiselect:tn()},mixins:[A,pn],props:{shares:{type:Array,default:function(){return[]},required:!0},linkShares:{type:Array,default:function(){return[]},required:!0},fileInfo:{type:Object,default:function(){},required:!0},reshare:{type:v,default:null},canReshare:{type:Boolean,required:!0}},data:function(){return{config:new g,loading:!1,query:"",recommendations:[],ShareSearch:OCA.Sharing.ShareSearch.state,suggestions:[]}},computed:{externalResults:function(){return this.ShareSearch.results},inputPlaceholder:function(){var n=this.config.isRemoteShareAllowed;return this.canReshare?n?t("files_sharing","Name, email, or Federated Cloud ID …"):t("files_sharing","Name or email …"):t("files_sharing","Resharing is not allowed")},isValidQuery:function(){return this.query&&""!==this.query.trim()&&this.query.length>this.config.minSearchStringLength},options:function(){return this.isValidQuery?this.suggestions:this.recommendations},noResultText:function(){return this.loading?t("files_sharing","Searching …"):t("files_sharing","No elements found.")}},mounted:function(){this.getRecommendations()},methods:{asyncFind:function(n,e){var t=this;return An(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.query=n.trim(),!t.isValidQuery){e.next=5;break}return t.loading=!0,e.next=5,t.debounceGetSuggestions(n);case 5:case"end":return e.stop()}}),e)})))()},getSuggestions:function(n){var e=arguments,r=this;return An(regeneratorRuntime.mark((function i(){var a,s,o,c,u,h,p,f,g,m,_,v,A;return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return a=e.length>1&&void 0!==e[1]&&e[1],r.loading=!0,!0===OC.getCapabilities().files_sharing.sharee.query_lookup_default&&(a=!0),s=[r.SHARE_TYPES.SHARE_TYPE_USER,r.SHARE_TYPES.SHARE_TYPE_GROUP,r.SHARE_TYPES.SHARE_TYPE_REMOTE,r.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP,r.SHARE_TYPES.SHARE_TYPE_CIRCLE,r.SHARE_TYPES.SHARE_TYPE_ROOM,r.SHARE_TYPES.SHARE_TYPE_GUEST,r.SHARE_TYPES.SHARE_TYPE_DECK],!0===OC.getCapabilities().files_sharing.public.enabled&&s.push(r.SHARE_TYPES.SHARE_TYPE_EMAIL),o=null,i.prev=6,i.next=9,d.default.get((0,l.generateOcsUrl)("apps/files_sharing/api/v1/sharees"),{params:{format:"json",itemType:"dir"===r.fileInfo.type?"folder":"file",search:n,lookup:a,perPage:r.config.maxAutocompleteResults,shareType:s}});case 9:o=i.sent,i.next=16;break;case 12:return i.prev=12,i.t0=i.catch(6),console.error("Error fetching suggestions",i.t0),i.abrupt("return");case 16:c=o.data.ocs.data,u=o.data.ocs.data.exact,c.exact=[],h=Object.values(u).reduce((function(n,e){return n.concat(e)}),[]),p=Object.values(c).reduce((function(n,e){return n.concat(e)}),[]),f=r.filterOutExistingShares(h).map((function(n){return r.formatForMultiselect(n)})).sort((function(n,e){return n.shareType-e.shareType})),g=r.filterOutExistingShares(p).map((function(n){return r.formatForMultiselect(n)})).sort((function(n,e){return n.shareType-e.shareType})),m=[],c.lookupEnabled&&!a&&m.push({id:"global-lookup",isNoUser:!0,displayName:t("files_sharing","Search globally"),lookup:!0}),_=r.externalResults.filter((function(n){return!n.condition||n.condition(r)})),v=f.concat(g).concat(_).concat(m),A=v.reduce((function(n,e){return e.displayName?(n[e.displayName]||(n[e.displayName]=0),n[e.displayName]++,n):n}),{}),r.suggestions=v.map((function(n){return A[n.displayName]>1&&!n.desc?mn(mn({},n),{},{desc:n.shareWithDisplayNameUnique}):n})),r.loading=!1,console.info("suggestions",r.suggestions);case 31:case"end":return i.stop()}}),i,null,[[6,12]])})))()},debounceGetSuggestions:nn()((function(){this.getSuggestions.apply(this,arguments)}),300),getRecommendations:function(){var n=this;return An(regeneratorRuntime.mark((function e(){var t,r,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.loading=!0,t=null,e.prev=2,e.next=5,d.default.get((0,l.generateOcsUrl)("apps/files_sharing/api/v1/sharees_recommended"),{params:{format:"json",itemType:n.fileInfo.type}});case 5:t=e.sent,e.next=12;break;case 8:return e.prev=8,e.t0=e.catch(2),console.error("Error fetching recommendations",e.t0),e.abrupt("return");case 12:r=n.externalResults.filter((function(e){return!e.condition||e.condition(n)})),i=Object.values(t.data.ocs.data.exact).reduce((function(n,e){return n.concat(e)}),[]),n.recommendations=n.filterOutExistingShares(i).map((function(e){return n.formatForMultiselect(e)})).concat(r),n.loading=!1,console.info("recommendations",n.recommendations);case 17:case"end":return e.stop()}}),e,null,[[2,8]])})))()},filterOutExistingShares:function(n){var e=this;return n.reduce((function(n,t){if("object"!==fn(t))return n;try{if(t.value.shareType===e.SHARE_TYPES.SHARE_TYPE_USER){if(t.value.shareWith===(0,Q.getCurrentUser)().uid)return n;if(e.reshare&&t.value.shareWith===e.reshare.owner)return n}if(t.value.shareType===e.SHARE_TYPES.SHARE_TYPE_EMAIL){if(-1!==e.linkShares.map((function(n){return n.shareWith})).indexOf(t.value.shareWith.trim()))return n}else{var r=e.shares.reduce((function(n,e){return n[e.shareWith]=e.type,n}),{}),i=t.value.shareWith.trim();if(i in r&&r[i]===t.value.shareType)return n}n.push(t)}catch(e){return n}return n}),[])},shareTypeToIcon:function(n){switch(n){case this.SHARE_TYPES.SHARE_TYPE_GUEST:return"icon-user";case this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP:case this.SHARE_TYPES.SHARE_TYPE_GROUP:return"icon-group";case this.SHARE_TYPES.SHARE_TYPE_EMAIL:return"icon-mail";case this.SHARE_TYPES.SHARE_TYPE_CIRCLE:return"icon-circle";case this.SHARE_TYPES.SHARE_TYPE_ROOM:return"icon-room";case this.SHARE_TYPES.SHARE_TYPE_DECK:return"icon-deck";default:return""}},formatForMultiselect:function(n){var e,r;if(n.value.shareType===this.SHARE_TYPES.SHARE_TYPE_USER&&this.config.shouldAlwaysShowUnique)e=null!==(r=n.shareWithDisplayNameUnique)&&void 0!==r?r:"";else if(n.value.shareType!==this.SHARE_TYPES.SHARE_TYPE_REMOTE&&n.value.shareType!==this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP||!n.value.server)if(n.value.shareType===this.SHARE_TYPES.SHARE_TYPE_EMAIL)e=n.value.shareWith;else{var i;e=null!==(i=n.shareWithDescription)&&void 0!==i?i:""}else e=t("files_sharing","on {server}",{server:n.value.server});return{id:"".concat(n.value.shareType,"-").concat(n.value.shareWith),shareWith:n.value.shareWith,shareType:n.value.shareType,user:n.uuid||n.value.shareWith,isNoUser:n.value.shareType!==this.SHARE_TYPES.SHARE_TYPE_USER,displayName:n.name||n.label,subtitle:e,shareWithDisplayNameUnique:n.shareWithDisplayNameUnique||"",icon:this.shareTypeToIcon(n.value.shareType)}},addShare:function(n){var e=this;return An(regeneratorRuntime.mark((function t(){var r,i,a,s,o,c,l,u;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!n.lookup){t.next=5;break}return t.next=3,e.getSuggestions(e.query,!0);case 3:return e.$nextTick((function(){e.$refs.multiselect.$el.querySelector(".multiselect__input").focus()})),t.abrupt("return",!0);case 5:if(!n.handler){t.next=11;break}return t.next=8,n.handler(e);case 8:return r=t.sent,e.$emit("add:share",new v(r)),t.abrupt("return",!0);case 11:if(e.loading=!0,console.debug("Adding a new share from the input for",n),t.prev=13,o=null,!e.config.enforcePasswordForPublicLink||n.shareType!==e.SHARE_TYPES.SHARE_TYPE_EMAIL){t.next=19;break}return t.next=18,cn();case 18:o=t.sent;case 19:return c=(e.fileInfo.path+"/"+e.fileInfo.name).replace("//","/"),t.next=22,e.createShare({path:c,shareType:n.shareType,shareWith:n.shareWith,password:o,permissions:e.fileInfo.sharePermissions&OC.getCapabilities().files_sharing.default_permissions,attributes:JSON.stringify(e.fileInfo.shareAttributes)});case 22:if(l=t.sent,!o){t.next=31;break}return l.newPassword=o,t.next=27,new Promise((function(n){e.$emit("add:share",l,n)}));case 27:t.sent.open=!0,t.next=32;break;case 31:e.$emit("add:share",l);case 32:return null!==(i=e.$refs.multiselect)&&void 0!==i&&null!==(a=i.$refs)&&void 0!==a&&null!==(s=a.VueMultiselect)&&void 0!==s&&s.search&&(e.$refs.multiselect.$refs.VueMultiselect.search=""),t.next=35,e.getRecommendations();case 35:t.next=43;break;case 37:t.prev=37,t.t0=t.catch(13),(u=e.$refs.multiselect.$el.querySelector("input"))&&u.focus(),e.query=n.shareWith,console.error("Error while adding new share",t.t0);case 43:return t.prev=43,e.loading=!1,t.finish(43);case 46:case"end":return t.stop()}}),t,null,[[13,37,43,46]])})))()}}},bn=yn,wn=r(84721),En={};En.styleTagTransform=Y(),En.setAttributes=I(),En.insert=N().bind(null,"head"),En.domAPI=T(),En.insertStyleElement=H(),P()(wn.Z,En),wn.Z&&wn.Z.locals&&wn.Z.locals;var Sn=(0,j.Z)(bn,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("div",{staticClass:"sharing-search"},[t("label",{attrs:{for:"sharing-search-input"}},[n._v(n._s(n.t("files_sharing","Search for share recipients")))]),n._v(" "),t("NcMultiselect",{ref:"multiselect",staticClass:"sharing-search__input",attrs:{id:"sharing-search-input","clear-on-select":!0,disabled:!n.canReshare,"hide-selected":!0,"internal-search":!1,loading:n.loading,options:n.options,placeholder:n.inputPlaceholder,"preselect-first":!0,"preserve-search":!0,searchable:!0,"user-select":!0,"open-direction":"below",label:"displayName","track-by":"id"},on:{"search-change":n.asyncFind,select:n.addShare},scopedSlots:n._u([{key:"noOptions",fn:function(){return[n._v("\n\t\t\t"+n._s(n.t("files_sharing","No recommendations. Start typing."))+"\n\t\t")]},proxy:!0},{key:"noResult",fn:function(){return[n._v("\n\t\t\t"+n._s(n.noResultText)+"\n\t\t")]},proxy:!0}])})],1)}),[],!1,null,null,null).exports,Cn=r(45400),xn=r.n(Cn),kn=r(65358),Pn=r(76212),Dn=r.n(Pn),Tn=r(1162),Rn=r.n(Tn),Nn=r(25746);function On(n){return On="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},On(n)}function In(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}function Ln(n){return function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){In(a,r,i,s,o,"next",n)}function o(n){In(a,r,i,s,o,"throw",n)}s(void 0)}))}}var Hn={mixins:[pn,A],props:{fileInfo:{type:Object,default:function(){},required:!0},share:{type:v,default:null},isUnique:{type:Boolean,default:!0}},data:function(){var n;return{config:new g,errors:{},loading:!1,saving:!1,open:!1,updateQueue:new Nn.Z({concurrency:1}),reactiveState:null===(n=this.share)||void 0===n?void 0:n.state}},computed:{hasNote:{get:function(){return""!==this.share.note},set:function(n){this.share.note=n?null:""}},dateTomorrow:function(){return new Date((new Date).setDate((new Date).getDate()+1))},lang:function(){var n=window.dayNamesShort?window.dayNamesShort:["Sun.","Mon.","Tue.","Wed.","Thu.","Fri.","Sat."],e=window.monthNamesShort?window.monthNamesShort:["Jan.","Feb.","Mar.","Apr.","May.","Jun.","Jul.","Aug.","Sep.","Oct.","Nov.","Dec."];return{formatLocale:{firstDayOfWeek:window.firstDay?window.firstDay:0,monthsShort:e,weekdaysMin:n,weekdaysShort:n},monthFormat:"MMM"}},isShareOwner:function(){return this.share&&this.share.owner===(0,Q.getCurrentUser)().uid}},methods:{checkShare:function(n){return(!n.password||"string"==typeof n.password&&""!==n.password.trim())&&!(n.expirationDate&&!n.expirationDate.isValid())},parseDateString:function(n){var e;if(n)return new Date(null===(e=n.match(/([0-9]{4}-[0-9]{2}-[0-9]{2})/i))||void 0===e?void 0:e.pop())},formatDateToString:function(n){return new Date(Date.UTC(n.getFullYear(),n.getMonth(),n.getDate())).toISOString().split("T")[0]},onExpirationChange:function(n){this.share.expireDate=this.formatDateToString(n),this.queueUpdate("expireDate")},onExpirationDisable:function(){this.share.expireDate="",this.queueUpdate("expireDate")},onNoteChange:function(n){this.$set(this.share,"newNote",n.trim())},onNoteSubmit:function(){this.share.newNote&&(this.share.note=this.share.newNote,this.$delete(this.share,"newNote"),(0,y.s$)(t("files_sharing","Share note saved")),this.queueUpdate("note"))},onDelete:function(){var n=this;return Ln(regeneratorRuntime.mark((function e(){var r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,n.loading=!0,n.open=!1,e.next=5,n.deleteShare(n.share.id);case 5:console.debug("Share deleted",n.share.id),r="file"===n.share.itemType?t("files_sharing",'File "{path}" has been unshared',{path:n.share.path}):t("files_sharing",'Folder "{path}" has been unshared',{path:n.share.path}),(0,y.s$)(r),n.$emit("remove:share",n.share),e.next=14;break;case 11:e.prev=11,e.t0=e.catch(0),n.open=!0;case 14:return e.prev=14,n.loading=!1,e.finish(14);case 17:case"end":return e.stop()}}),e,null,[[0,11,14,17]])})))()},queueUpdate:function(){for(var n=this,e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];if(0!==t.length){if(this.share.id){var i={};return t.forEach((function(e){"object"===On(n.share[e])?i[e]=JSON.stringify(n.share[e]):i[e]=n.share[e].toString()})),void this.updateQueue.add(Ln(regeneratorRuntime.mark((function e(){var r,a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.saving=!0,n.errors={},e.prev=2,e.next=5,n.updateShare(n.share.id,i);case 5:r=e.sent,t.indexOf("password")>=0&&(n.$delete(n.share,"newPassword"),n.share.passwordExpirationTime=r.password_expiration_time),n.$delete(n.errors,t[0]),e.next=14;break;case 10:e.prev=10,e.t0=e.catch(2),(a=e.t0.message)&&""!==a&&n.onSyncError(t[0],a);case 14:return e.prev=14,n.saving=!1,e.finish(14);case 17:case"end":return e.stop()}}),e,null,[[2,10,14,17]])}))))}console.debug("Updated local share",this.share)}},onSyncError:function(n,e){switch(this.open=!0,n){case"password":case"pending":case"expireDate":case"label":case"note":this.$set(this.errors,n,e);var t=this.$refs[n];if(t){t.$el&&(t=t.$el);var r=t.querySelector(".focusable");r&&r.focus()}break;case"sendPasswordByTalk":this.$set(this.errors,n,e),this.share.sendPasswordByTalk=!this.share.sendPasswordByTalk}},debounceQueueUpdate:nn()((function(n){this.queueUpdate(n)}),500)}},Un={name:"SharingEntryInherited",components:{NcActionButton:xn(),NcActionLink:Dn(),NcActionText:Rn(),NcAvatar:h(),SharingEntrySimple:W},mixins:[Hn],props:{share:{type:v,required:!0}},computed:{viaFileTargetUrl:function(){return(0,l.generateUrl)("/f/{fileid}",{fileid:this.share.viaFileid})},viaFolderName:function(){return(0,kn.EZ)(this.share.viaPath)}}},Yn=r(57851),Mn={};Mn.styleTagTransform=Y(),Mn.setAttributes=I(),Mn.insert=N().bind(null,"head"),Mn.domAPI=T(),Mn.insertStyleElement=H(),P()(Yn.Z,Mn),Yn.Z&&Yn.Z.locals&&Yn.Z.locals;var Bn=(0,j.Z)(Un,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("SharingEntrySimple",{key:n.share.id,staticClass:"sharing-entry__inherited",attrs:{title:n.share.shareWithDisplayName},scopedSlots:n._u([{key:"avatar",fn:function(){return[t("NcAvatar",{staticClass:"sharing-entry__avatar",attrs:{user:n.share.shareWith,"display-name":n.share.shareWithDisplayName,"tooltip-message":""}})]},proxy:!0}])},[n._v(" "),t("NcActionText",{attrs:{icon:"icon-user"}},[n._v("\n\t\t"+n._s(n.t("files_sharing","Added by {initiator}",{initiator:n.share.ownerDisplayName}))+"\n\t")]),n._v(" "),n.share.viaPath&&n.share.viaFileid?t("NcActionLink",{attrs:{icon:"icon-folder",href:n.viaFileTargetUrl}},[n._v("\n\t\t"+n._s(n.t("files_sharing","Via “{folder}”",{folder:n.viaFolderName}))+"\n\t")]):n._e(),n._v(" "),n.share.canDelete?t("NcActionButton",{attrs:{icon:"icon-close"},on:{click:function(e){return e.preventDefault(),n.onDelete.apply(null,arguments)}}},[n._v("\n\t\t"+n._s(n.t("files_sharing","Unshare"))+"\n\t")]):n._e()],1)}),[],!1,null,"2bbe78b4",null),jn=Bn.exports;function Wn(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}var Fn={name:"SharingInherited",components:{NcActionButton:xn(),SharingEntryInherited:jn,SharingEntrySimple:W},props:{fileInfo:{type:Object,default:function(){},required:!0}},data:function(){return{loaded:!1,loading:!1,showInheritedShares:!1,shares:[]}},computed:{showInheritedSharesIcon:function(){return this.loading?"icon-loading-small":this.showInheritedShares?"icon-triangle-n":"icon-triangle-s"},mainTitle:function(){return t("files_sharing","Others with access")},subTitle:function(){return this.showInheritedShares&&0===this.shares.length?t("files_sharing","No other users with access found"):""},toggleTooltip:function(){return"dir"===this.fileInfo.type?t("files_sharing","Toggle list of others with access to this directory"):t("files_sharing","Toggle list of others with access to this file")},fullPath:function(){return"".concat(this.fileInfo.path,"/").concat(this.fileInfo.name).replace("//","/")}},watch:{fileInfo:function(){this.resetState()}},methods:{toggleInheritedShares:function(){this.showInheritedShares=!this.showInheritedShares,this.showInheritedShares?this.fetchInheritedShares():this.resetState()},fetchInheritedShares:function(){var n,e=this;return(n=regeneratorRuntime.mark((function n(){var r,i;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return e.loading=!0,n.prev=1,r=(0,l.generateOcsUrl)("apps/files_sharing/api/v1/shares/inherited?format=json&path={path}",{path:e.fullPath}),n.next=5,d.default.get(r);case 5:i=n.sent,e.shares=i.data.ocs.data.map((function(n){return new v(n)})).sort((function(n,e){return e.createdTime-n.createdTime})),console.info(e.shares),e.loaded=!0,n.next=14;break;case 11:n.prev=11,n.t0=n.catch(1),OC.Notification.showTemporary(t("files_sharing","Unable to fetch inherited shares"),{type:"error"});case 14:return n.prev=14,e.loading=!1,n.finish(14);case 17:case"end":return n.stop()}}),n,null,[[1,11,14,17]])})),function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){Wn(a,r,i,s,o,"next",n)}function o(n){Wn(a,r,i,s,o,"throw",n)}s(void 0)}))})()},resetState:function(){this.loaded=!1,this.loading=!1,this.showInheritedShares=!1,this.shares=[]}}},qn=Fn,$n=r(44985),Zn={};Zn.styleTagTransform=Y(),Zn.setAttributes=I(),Zn.insert=N().bind(null,"head"),Zn.domAPI=T(),Zn.insertStyleElement=H(),P()($n.Z,Zn),$n.Z&&$n.Z.locals&&$n.Z.locals;var Gn=(0,j.Z)(qn,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("ul",{attrs:{id:"sharing-inherited-shares"}},[t("SharingEntrySimple",{staticClass:"sharing-entry__inherited",attrs:{title:n.mainTitle,subtitle:n.subTitle,"aria-expanded":n.showInheritedShares},scopedSlots:n._u([{key:"avatar",fn:function(){return[t("div",{staticClass:"avatar-shared icon-more-white"})]},proxy:!0}])},[n._v(" "),t("NcActionButton",{attrs:{icon:n.showInheritedSharesIcon,"aria-label":n.mainTitle},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),n.toggleInheritedShares.apply(null,arguments)}}},[n._v("\n\t\t\t"+n._s(n.toggleTooltip)+"\n\t\t")])],1),n._v(" "),n._l(n.shares,(function(e){return t("SharingEntryInherited",{key:e.id,attrs:{"file-info":n.fileInfo,share:e}})}))],2)}),[],!1,null,"6a277822",null),Vn=Gn.exports,zn={name:"ExternalShareAction",props:{id:{type:String,required:!0},action:{type:Object,default:function(){return{}}},fileInfo:{type:Object,default:function(){},required:!0},share:{type:v,default:null}},computed:{data:function(){return this.action.data(this)}}},Kn=(0,j.Z)(zn,(function(){var n=this,e=n.$createElement;return(n._self._c||e)(n.data.is,n._g(n._b({tag:"Component"},"Component",n.data,!1),n.action.handlers),[n._v("\n\t"+n._s(n.data.text)+"\n")])}),[],!1,null,null,null).exports,Jn=r(30158),Qn=r.n(Jn),Xn=r(81807),ne=r.n(Xn),ee={NONE:0,READ:1,UPDATE:2,CREATE:4,DELETE:8,SHARE:16},te={READ_ONLY:ee.READ,UPLOAD_AND_UPDATE:ee.READ|ee.UPDATE|ee.CREATE|ee.DELETE,FILE_DROP:ee.CREATE,ALL:ee.UPDATE|ee.CREATE|ee.READ|ee.DELETE|ee.SHARE};function re(n,e){return n!==ee.NONE&&(n&e)===e}function ie(n){return!(!re(n,ee.READ)&&!re(n,ee.CREATE)||!re(n,ee.READ)&&(re(n,ee.UPDATE)||re(n,ee.DELETE)))}function ae(n,e){return re(n,e)?function(n,e){return n&~e}(n,e):function(n,e){return n|e}(n,e)}var se=r(74057),oe=r(19784),ce={name:"SharePermissionsEditor",components:{NcActionButton:xn(),NcActionCheckbox:ne(),NcActionRadio:Qn(),Tune:se.Z,ChevronLeft:oe.default},mixins:[Hn],data:function(){return{randomFormName:Math.random().toString(27).substring(2),showCustomPermissionsForm:!1,atomicPermissions:ee,bundledPermissions:te}},computed:{sharePermissionsSummary:function(){var n=this;return Object.values(this.atomicPermissions).filter((function(e){return n.shareHasPermissions(e)})).map((function(e){switch(e){case n.atomicPermissions.CREATE:return n.t("files_sharing","Upload");case n.atomicPermissions.READ:return n.t("files_sharing","Read");case n.atomicPermissions.UPDATE:return n.t("files_sharing","Edit");case n.atomicPermissions.DELETE:return n.t("files_sharing","Delete");default:return null}})).filter((function(n){return null!==n})).join(", ")},sharePermissionsIsBundle:function(){var n=this;return Object.values(te).map((function(e){return n.sharePermissionEqual(e)})).filter((function(n){return n})).length>0},sharePermissionsSetIsValid:function(){return ie(this.share.permissions)},isFolder:function(){return"dir"===this.fileInfo.type},fileHasCreatePermission:function(){return!!(this.fileInfo.permissions&ee.CREATE)}},mounted:function(){this.showCustomPermissionsForm=!this.sharePermissionsIsBundle},methods:{sharePermissionEqual:function(n){return(this.share.permissions&~ee.SHARE)===n},shareHasPermissions:function(n){return re(this.share.permissions,n)},setSharePermissions:function(n){this.share.permissions=n,this.queueUpdate("permissions")},canToggleSharePermissions:function(n){return function(n,e){return ie(ae(n,e))}(this.share.permissions,n)},toggleSharePermissions:function(n){this.share.permissions=ae(this.share.permissions,n),ie(this.share.permissions)&&this.queueUpdate("permissions")}}},le=r(13194),ue={};ue.styleTagTransform=Y(),ue.setAttributes=I(),ue.insert=N().bind(null,"head"),ue.domAPI=T(),ue.insertStyleElement=H(),P()(le.Z,ue),le.Z&&le.Z.locals&&le.Z.locals;var he=(0,j.Z)(ce,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("li",[t("ul",[n.isFolder?n._e():t("NcActionCheckbox",{attrs:{checked:n.shareHasPermissions(n.atomicPermissions.UPDATE),disabled:n.saving},on:{"update:checked":function(e){return n.toggleSharePermissions(n.atomicPermissions.UPDATE)}}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Allow editing"))+"\n\t\t")]),n._v(" "),n.isFolder&&n.fileHasCreatePermission&&n.config.isPublicUploadEnabled?[n.showCustomPermissionsForm?t("span",{class:{error:!n.sharePermissionsSetIsValid}},[t("NcActionCheckbox",{attrs:{checked:n.shareHasPermissions(n.atomicPermissions.READ),disabled:n.saving||!n.canToggleSharePermissions(n.atomicPermissions.READ)},on:{"update:checked":function(e){return n.toggleSharePermissions(n.atomicPermissions.READ)}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Read"))+"\n\t\t\t\t")]),n._v(" "),t("NcActionCheckbox",{attrs:{checked:n.shareHasPermissions(n.atomicPermissions.CREATE),disabled:n.saving||!n.canToggleSharePermissions(n.atomicPermissions.CREATE)},on:{"update:checked":function(e){return n.toggleSharePermissions(n.atomicPermissions.CREATE)}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Upload"))+"\n\t\t\t\t")]),n._v(" "),t("NcActionCheckbox",{attrs:{checked:n.shareHasPermissions(n.atomicPermissions.UPDATE),disabled:n.saving||!n.canToggleSharePermissions(n.atomicPermissions.UPDATE)},on:{"update:checked":function(e){return n.toggleSharePermissions(n.atomicPermissions.UPDATE)}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Edit"))+"\n\t\t\t\t")]),n._v(" "),t("NcActionCheckbox",{attrs:{checked:n.shareHasPermissions(n.atomicPermissions.DELETE),disabled:n.saving||!n.canToggleSharePermissions(n.atomicPermissions.DELETE)},on:{"update:checked":function(e){return n.toggleSharePermissions(n.atomicPermissions.DELETE)}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Delete"))+"\n\t\t\t\t")]),n._v(" "),t("NcActionButton",{on:{click:function(e){n.showCustomPermissionsForm=!1}},scopedSlots:n._u([{key:"icon",fn:function(){return[t("ChevronLeft")]},proxy:!0}],null,!1,1018742195)},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Bundled permissions"))+"\n\t\t\t\t")])],1):[t("NcActionRadio",{attrs:{checked:n.sharePermissionEqual(n.bundledPermissions.READ_ONLY),value:n.bundledPermissions.READ_ONLY,name:n.randomFormName,disabled:n.saving},on:{change:function(e){return n.setSharePermissions(n.bundledPermissions.READ_ONLY)}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Read only"))+"\n\t\t\t\t")]),n._v(" "),t("NcActionRadio",{attrs:{checked:n.sharePermissionEqual(n.bundledPermissions.UPLOAD_AND_UPDATE),value:n.bundledPermissions.UPLOAD_AND_UPDATE,disabled:n.saving,name:n.randomFormName},on:{change:function(e){return n.setSharePermissions(n.bundledPermissions.UPLOAD_AND_UPDATE)}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Allow upload and editing"))+"\n\t\t\t\t")]),n._v(" "),t("NcActionRadio",{staticClass:"sharing-entry__action--public-upload",attrs:{checked:n.sharePermissionEqual(n.bundledPermissions.FILE_DROP),value:n.bundledPermissions.FILE_DROP,disabled:n.saving,name:n.randomFormName},on:{change:function(e){return n.setSharePermissions(n.bundledPermissions.FILE_DROP)}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","File drop (upload only)"))+"\n\t\t\t\t")]),n._v(" "),t("NcActionButton",{attrs:{title:n.t("files_sharing","Custom permissions")},on:{click:function(e){n.showCustomPermissionsForm=!0}},scopedSlots:n._u([{key:"icon",fn:function(){return[t("Tune")]},proxy:!0}],null,!1,961531849)},[n._v("\n\t\t\t\t\t"+n._s(n.sharePermissionsIsBundle?"":n.sharePermissionsSummary)+"\n\t\t\t\t")])]]:n._e()],2)])}),[],!1,null,"5e957d09",null).exports;function de(n){return de="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},de(n)}function pe(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}function fe(n){return function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){pe(a,r,i,s,o,"next",n)}function o(n){pe(a,r,i,s,o,"throw",n)}s(void 0)}))}}var ge={name:"SharingEntryLink",components:{Check:F.default,ClipboardTextMultipleOutline:q.Z,ExternalShareAction:Kn,NcActionButton:b.Js,NcActionCheckbox:b.Bt,NcActionInput:b.Iw,NcActionLink:b.ih,NcActions:b.O3,NcActionSeparator:b.rr,NcActionText:b.L1,NcActionTextEditable:b.L_,NcAvatar:b.Xn,SharePermissionsEditor:he},directives:{Tooltip:b.u},mixins:[Hn],props:{canReshare:{type:Boolean,default:!0}},data:function(){return{copySuccess:!0,copied:!1,pending:!1,ExternalLegacyLinkActions:OCA.Sharing.ExternalLinkActions.state,ExternalShareActions:OCA.Sharing.ExternalShareActions.state}},computed:{title:function(){if(this.share&&this.share.id){if(!this.isShareOwner&&this.share.ownerDisplayName)return this.isEmailShareType?t("files_sharing","{shareWith} by {initiator}",{shareWith:this.share.shareWith,initiator:this.share.ownerDisplayName}):t("files_sharing","Shared via link by {initiator}",{initiator:this.share.ownerDisplayName});if(this.share.label&&""!==this.share.label.trim())return this.isEmailShareType?t("files_sharing","Mail share ({label})",{label:this.share.label.trim()}):t("files_sharing","Share link ({label})",{label:this.share.label.trim()});if(this.isEmailShareType)return this.share.shareWith}return t("files_sharing","Share link")},subtitle:function(){return this.isEmailShareType&&this.title!==this.share.shareWith?this.share.shareWith:null},hasExpirationDate:{get:function(){return this.config.isDefaultExpireDateEnforced||!!this.share.expireDate},set:function(n){var e=this.config.defaultExpirationDate||new Date((new Date).setDate((new Date).getDate()+1));this.share.expireDate=n?this.formatDateToString(e):"",console.debug("Expiration date status",n,this.share.expireDate)}},dateMaxEnforced:function(){return this.config.isDefaultExpireDateEnforced?new Date((new Date).setDate((new Date).getDate()+this.config.defaultExpireDate)):null},isPasswordProtected:{get:function(){return this.config.enforcePasswordForPublicLink||!!this.share.password},set:function(n){var e=this;return fe(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(t.t0=i.ZP,t.t1=e.share,!n){t.next=8;break}return t.next=5,cn();case 5:t.t2=t.sent,t.next=9;break;case 8:t.t2="";case 9:t.t3=t.t2,t.t0.set.call(t.t0,t.t1,"password",t.t3),i.ZP.set(e.share,"newPassword",e.share.password);case 12:case"end":return t.stop()}}),t)})))()}},passwordExpirationTime:function(){if(null===this.share.passwordExpirationTime)return null;var n=moment(this.share.passwordExpirationTime);return!(n.diff(moment())<0)&&n.fromNow()},isTalkEnabled:function(){return void 0!==OC.appswebroots.spreed},isPasswordProtectedByTalkAvailable:function(){return this.isPasswordProtected&&this.isTalkEnabled},isPasswordProtectedByTalk:{get:function(){return this.share.sendPasswordByTalk},set:function(n){var e=this;return fe(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:e.share.sendPasswordByTalk=n;case 1:case"end":return t.stop()}}),t)})))()}},isEmailShareType:function(){return!!this.share&&this.share.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL},canTogglePasswordProtectedByTalkAvailable:function(){return!(!this.isPasswordProtected||this.isEmailShareType&&!this.hasUnsavedPassword)},pendingPassword:function(){return this.config.enforcePasswordForPublicLink&&this.share&&!this.share.id},pendingExpirationDate:function(){return this.config.isDefaultExpireDateEnforced&&this.share&&!this.share.id},hasUnsavedPassword:function(){return void 0!==this.share.newPassword},shareLink:function(){return window.location.protocol+"//"+window.location.host+(0,l.generateUrl)("/s/")+this.share.token},clipboardTooltip:function(){return this.copied?this.copySuccess?"":t("files_sharing","Cannot copy, please copy the link manually"):t("files_sharing","Copy to clipboard")},externalLegacyLinkActions:function(){return this.ExternalLegacyLinkActions.actions},externalLinkActions:function(){return this.ExternalShareActions.actions.filter((function(n){return n.shareType.includes(m.D.SHARE_TYPE_LINK)||n.shareType.includes(m.D.SHARE_TYPE_EMAIL)}))},isPasswordPolicyEnabled:function(){return"object"===de(this.config.passwordPolicy)},canChangeHideDownload:function(){return this.fileInfo.shareAttributes.some((function(n){return"download"===n.key&&"permissions"===n.scope&&!1===n.enabled}))}},methods:{onNewLinkShare:function(){var n=this;return fe(regeneratorRuntime.mark((function e(){var r,i,a,s;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!n.loading){e.next=2;break}return e.abrupt("return");case 2:if(r={share_type:m.D.SHARE_TYPE_LINK},n.config.isDefaultExpireDateEnforced&&(r.expiration=n.formatDateToString(n.config.defaultExpirationDate)),!n.config.enableLinkPasswordByDefault){e.next=8;break}return e.next=7,cn();case 7:r.password=e.sent;case 8:if(!n.config.enforcePasswordForPublicLink&&!n.config.isDefaultExpireDateEnforced){e.next=33;break}if(n.pending=!0,!n.share||n.share.id){e.next=20;break}if(!n.checkShare(n.share)){e.next=17;break}return e.next=14,n.pushNewLinkShare(n.share,!0);case 14:return e.abrupt("return",!0);case 17:return n.open=!0,OC.Notification.showTemporary(t("files_sharing","Error, please enter proper password and/or expiration date")),e.abrupt("return",!1);case 20:if(!n.config.enforcePasswordForPublicLink){e.next=24;break}return e.next=23,cn();case 23:r.password=e.sent;case 24:return i=new v(r),e.next=27,new Promise((function(e){n.$emit("add:share",i,e)}));case 27:a=e.sent,n.open=!1,n.pending=!1,a.open=!0,e.next=36;break;case 33:return s=new v(r),e.next=36,n.pushNewLinkShare(s);case 36:case"end":return e.stop()}}),e)})))()},pushNewLinkShare:function(n,e){var r=this;return fe(regeneratorRuntime.mark((function i(){var a,s,o,c,l,u,h,d,p;return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:if(i.prev=0,!r.loading){i.next=3;break}return i.abrupt("return",!0);case 3:return r.loading=!0,r.errors={},a=(r.fileInfo.path+"/"+r.fileInfo.name).replace("//","/"),s={path:a,shareType:m.D.SHARE_TYPE_LINK,password:n.password,expireDate:n.expireDate,attributes:JSON.stringify(r.fileInfo.shareAttributes)},console.debug("Creating link share with options",s),i.next=10,r.createShare(s);case 10:if(o=i.sent,r.open=!1,console.debug("Link share created",o),!e){i.next=19;break}return i.next=16,new Promise((function(n){r.$emit("update:share",o,n)}));case 16:c=i.sent,i.next=22;break;case 19:return i.next=21,new Promise((function(n){r.$emit("add:share",o,n)}));case 21:c=i.sent;case 22:r.config.enforcePasswordForPublicLink||c.copyLink(),i.next=33;break;case 25:if(i.prev=25,i.t0=i.catch(0),p=null===i.t0||void 0===i.t0||null===(l=i.t0.response)||void 0===l||null===(u=l.data)||void 0===u||null===(h=u.ocs)||void 0===h||null===(d=h.meta)||void 0===d?void 0:d.message){i.next=32;break}return(0,y.x2)(t("sharing","Error while creating the share")),console.error(i.t0),i.abrupt("return");case 32:p.match(/password/i)?r.onSyncError("password",p):p.match(/date/i)?r.onSyncError("expireDate",p):r.onSyncError("pending",p);case 33:return i.prev=33,r.loading=!1,i.finish(33);case 36:case"end":return i.stop()}}),i,null,[[0,25,33,36]])})))()},onLabelChange:function(n){this.$set(this.share,"newLabel",n.trim())},onLabelSubmit:function(){"string"==typeof this.share.newLabel&&(this.share.label=this.share.newLabel,this.$delete(this.share,"newLabel"),(0,y.s$)(t("files_sharing","Share label saved")),this.queueUpdate("label"))},copyLink:function(){var n=this;return fe(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,n.$copyText(n.shareLink);case 3:(0,y.s$)(t("files_sharing","Link copied")),n.$refs.copyButton.$el.focus(),n.copySuccess=!0,n.copied=!0,e.next=14;break;case 9:e.prev=9,e.t0=e.catch(0),n.copySuccess=!1,n.copied=!0,console.error(e.t0);case 14:return e.prev=14,setTimeout((function(){n.copySuccess=!1,n.copied=!1}),4e3),e.finish(14);case 17:case"end":return e.stop()}}),e,null,[[0,9,14,17]])})))()},onPasswordChange:function(n){this.$set(this.share,"newPassword",n)},onPasswordDisable:function(){this.share.password="",this.$delete(this.share,"newPassword"),this.share.id&&this.queueUpdate("password")},onPasswordSubmit:function(){this.hasUnsavedPassword&&(this.share.password=this.share.newPassword.trim(),(0,y.s$)(t("files_sharing","Share password saved")),this.queueUpdate("password"))},onPasswordProtectedByTalkChange:function(){this.hasUnsavedPassword&&(this.share.password=this.share.newPassword.trim()),this.queueUpdate("sendPasswordByTalk","password")},onMenuClose:function(){this.onPasswordSubmit(),this.onNoteSubmit()},onCancel:function(){this.$emit("remove:share",this.share)}}},me=ge,_e=r(18519),ve={};ve.styleTagTransform=Y(),ve.setAttributes=I(),ve.insert=N().bind(null,"head"),ve.domAPI=T(),ve.insertStyleElement=H(),P()(_e.Z,ve),_e.Z&&_e.Z.locals&&_e.Z.locals;var Ae=(0,j.Z)(me,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("li",{staticClass:"sharing-entry sharing-entry__link",class:{"sharing-entry--share":n.share}},[t("NcAvatar",{staticClass:"sharing-entry__avatar",attrs:{"is-no-user":!0,"icon-class":n.isEmailShareType?"avatar-link-share icon-mail-white":"avatar-link-share icon-public-white"}}),n._v(" "),t("div",{staticClass:"sharing-entry__desc"},[t("span",{staticClass:"sharing-entry__title",attrs:{title:n.title}},[n._v("\n\t\t\t"+n._s(n.title)+"\n\t\t")]),n._v(" "),n.subtitle?t("p",[n._v("\n\t\t\t"+n._s(n.subtitle)+"\n\t\t")]):n._e()]),n._v(" "),n.share&&!n.isEmailShareType&&n.share.token?t("NcActions",{ref:"copyButton",staticClass:"sharing-entry__copy"},[t("NcActionButton",{attrs:{"aria-label":n.t("files_sharing","Copy public link to clipboard")},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),n.copyLink.apply(null,arguments)}},scopedSlots:n._u([{key:"icon",fn:function(){return[n.copied&&n.copySuccess?t("Check",{attrs:{size:20}}):t("ClipboardTextMultipleOutline",{attrs:{size:20}})]},proxy:!0}],null,!1,2976921391)},[n._v("\n\t\t\t"+n._s(n.clipboardTooltip)+"\n\t\t")])],1):n._e(),n._v(" "),n.pending||!n.pendingPassword&&!n.pendingExpirationDate?n.loading?t("div",{staticClass:"icon-loading-small sharing-entry__loading"}):t("NcActions",{staticClass:"sharing-entry__actions",attrs:{"menu-align":"right",open:n.open},on:{"update:open":function(e){n.open=e},close:n.onMenuClose}},[n.share?[n.share.canEdit&&n.canReshare?[t("NcActionInput",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.label,show:n.errors.label,trigger:"manual",defaultContainer:".app-sidebar"},expression:"{\n\t\t\t\t\t\tcontent: errors.label,\n\t\t\t\t\t\tshow: errors.label,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '.app-sidebar'\n\t\t\t\t\t}",modifiers:{auto:!0}}],ref:"label",class:{error:n.errors.label},attrs:{disabled:n.saving,"aria-label":n.t("files_sharing","Share label"),value:void 0!==n.share.newLabel?n.share.newLabel:n.share.label,icon:"icon-edit",maxlength:"255"},on:{"update:value":n.onLabelChange,submit:n.onLabelSubmit}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Share label"))+"\n\t\t\t\t")]),n._v(" "),t("SharePermissionsEditor",{attrs:{"can-reshare":n.canReshare,share:n.share,"file-info":n.fileInfo},on:{"update:share":function(e){n.share=e}}}),n._v(" "),t("NcActionSeparator"),n._v(" "),t("NcActionCheckbox",{attrs:{checked:n.share.hideDownload,disabled:n.saving||n.canChangeHideDownload},on:{"update:checked":function(e){return n.$set(n.share,"hideDownload",e)},change:function(e){return n.queueUpdate("hideDownload")}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Hide download"))+"\n\t\t\t\t")]),n._v(" "),t("NcActionCheckbox",{staticClass:"share-link-password-checkbox",attrs:{checked:n.isPasswordProtected,disabled:n.config.enforcePasswordForPublicLink||n.saving},on:{"update:checked":function(e){n.isPasswordProtected=e},uncheck:n.onPasswordDisable}},[n._v("\n\t\t\t\t\t"+n._s(n.config.enforcePasswordForPublicLink?n.t("files_sharing","Password protection (enforced)"):n.t("files_sharing","Password protect"))+"\n\t\t\t\t")]),n._v(" "),n.isPasswordProtected?t("NcActionInput",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.password,show:n.errors.password,trigger:"manual",defaultContainer:"#app-sidebar"},expression:"{\n\t\t\t\t\t\tcontent: errors.password,\n\t\t\t\t\t\tshow: errors.password,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t}",modifiers:{auto:!0}}],ref:"password",staticClass:"share-link-password",class:{error:n.errors.password},attrs:{disabled:n.saving,required:n.config.enforcePasswordForPublicLink,value:n.hasUnsavedPassword?n.share.newPassword:"***************",icon:"icon-password",autocomplete:"new-password",type:n.hasUnsavedPassword?"text":"password"},on:{"update:value":n.onPasswordChange,submit:n.onPasswordSubmit}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Enter a password"))+"\n\t\t\t\t")]):n._e(),n._v(" "),n.isEmailShareType&&n.passwordExpirationTime?t("NcActionText",{attrs:{icon:"icon-info"}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Password expires {passwordExpirationTime}",{passwordExpirationTime:n.passwordExpirationTime}))+"\n\t\t\t\t")]):n.isEmailShareType&&null!==n.passwordExpirationTime?t("NcActionText",{attrs:{icon:"icon-error"}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Password expired"))+"\n\t\t\t\t")]):n._e(),n._v(" "),n.isPasswordProtectedByTalkAvailable?t("NcActionCheckbox",{staticClass:"share-link-password-talk-checkbox",attrs:{checked:n.isPasswordProtectedByTalk,disabled:!n.canTogglePasswordProtectedByTalkAvailable||n.saving},on:{"update:checked":function(e){n.isPasswordProtectedByTalk=e},change:n.onPasswordProtectedByTalkChange}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Video verification"))+"\n\t\t\t\t")]):n._e(),n._v(" "),t("NcActionCheckbox",{staticClass:"share-link-expire-date-checkbox",attrs:{checked:n.hasExpirationDate,disabled:n.config.isDefaultExpireDateEnforced||n.saving},on:{"update:checked":function(e){n.hasExpirationDate=e},uncheck:n.onExpirationDisable}},[n._v("\n\t\t\t\t\t"+n._s(n.config.isDefaultExpireDateEnforced?n.t("files_sharing","Expiration date (enforced)"):n.t("files_sharing","Set expiration date"))+"\n\t\t\t\t")]),n._v(" "),n.hasExpirationDate?t("NcActionInput",{ref:"expireDate",staticClass:"share-link-expire-date",class:{error:n.errors.expireDate},attrs:{"is-native-picker":!0,"hide-label":!0,disabled:n.saving,value:new Date(n.share.expireDate),type:"date",min:n.dateTomorrow,max:n.dateMaxEnforced},on:{input:n.onExpirationChange}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Enter a date"))+"\n\t\t\t\t")]):n._e(),n._v(" "),t("NcActionCheckbox",{attrs:{checked:n.hasNote,disabled:n.saving},on:{"update:checked":function(e){n.hasNote=e},uncheck:function(e){return n.queueUpdate("note")}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Note to recipient"))+"\n\t\t\t\t")]),n._v(" "),n.hasNote?t("NcActionTextEditable",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.note,show:n.errors.note,trigger:"manual",defaultContainer:"#app-sidebar"},expression:"{\n\t\t\t\t\t\tcontent: errors.note,\n\t\t\t\t\t\tshow: errors.note,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t}",modifiers:{auto:!0}}],ref:"note",class:{error:n.errors.note},attrs:{disabled:n.saving,placeholder:n.t("files_sharing","Enter a note for the share recipient"),value:n.share.newNote||n.share.note,icon:"icon-edit"},on:{"update:value":n.onNoteChange,submit:n.onNoteSubmit}}):n._e()]:n._e(),n._v(" "),t("NcActionSeparator"),n._v(" "),n._l(n.externalLinkActions,(function(e){return t("ExternalShareAction",{key:e.id,attrs:{id:e.id,action:e,"file-info":n.fileInfo,share:n.share}})})),n._v(" "),n._l(n.externalLegacyLinkActions,(function(e,r){var i=e.icon,a=e.url,s=e.name;return t("NcActionLink",{key:r,attrs:{href:a(n.shareLink),icon:i,target:"_blank"}},[n._v("\n\t\t\t\t"+n._s(s)+"\n\t\t\t")])})),n._v(" "),n.share.canDelete?t("NcActionButton",{attrs:{icon:"icon-close",disabled:n.saving},on:{click:function(e){return e.preventDefault(),n.onDelete.apply(null,arguments)}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Unshare"))+"\n\t\t\t")]):n._e(),n._v(" "),!n.isEmailShareType&&n.canReshare?t("NcActionButton",{staticClass:"new-share-link",attrs:{icon:"icon-add"},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),n.onNewLinkShare.apply(null,arguments)}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Add another link"))+"\n\t\t\t")]):n._e()]:n.canReshare?t("NcActionButton",{staticClass:"new-share-link",attrs:{icon:n.loading?"icon-loading-small":"icon-add"},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),n.onNewLinkShare.apply(null,arguments)}}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Create a new share link"))+"\n\t\t")]):n._e()],2):t("NcActions",{staticClass:"sharing-entry__actions",attrs:{"menu-align":"right",open:n.open},on:{"update:open":function(e){n.open=e},close:n.onNewLinkShare}},[n.errors.pending?t("NcActionText",{class:{error:n.errors.pending},attrs:{icon:"icon-error"}},[n._v("\n\t\t\t"+n._s(n.errors.pending)+"\n\t\t")]):t("NcActionText",{attrs:{icon:"icon-info"}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Please enter the following required information before creating the share"))+"\n\t\t")]),n._v(" "),n.pendingPassword?t("NcActionText",{attrs:{icon:"icon-password"}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Password protection (enforced)"))+"\n\t\t")]):n.config.enableLinkPasswordByDefault?t("NcActionCheckbox",{staticClass:"share-link-password-checkbox",attrs:{checked:n.isPasswordProtected,disabled:n.config.enforcePasswordForPublicLink||n.saving},on:{"update:checked":function(e){n.isPasswordProtected=e},uncheck:n.onPasswordDisable}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Password protection"))+"\n\t\t")]):n._e(),n._v(" "),n.pendingPassword||n.share.password?t("NcActionInput",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.password,show:n.errors.password,trigger:"manual",defaultContainer:"#app-sidebar"},expression:"{\n\t\t\t\tcontent: errors.password,\n\t\t\t\tshow: errors.password,\n\t\t\t\ttrigger: 'manual',\n\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t}",modifiers:{auto:!0}}],staticClass:"share-link-password",attrs:{value:n.share.password,disabled:n.saving,required:n.config.enableLinkPasswordByDefault||n.config.enforcePasswordForPublicLink,minlength:n.isPasswordPolicyEnabled&&n.config.passwordPolicy.minLength,icon:"",autocomplete:"new-password"},on:{"update:value":function(e){return n.$set(n.share,"password",e)},submit:n.onNewLinkShare}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Enter a password"))+"\n\t\t")]):n._e(),n._v(" "),n.pendingExpirationDate?t("NcActionText",{attrs:{icon:"icon-calendar-dark"}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Expiration date (enforced)"))+"\n\t\t")]):n._e(),n._v(" "),n.pendingExpirationDate?t("NcActionInput",{staticClass:"share-link-expire-date",attrs:{disabled:n.saving,"is-native-picker":!0,"hide-label":!0,value:new Date(n.share.expireDate),type:"date",min:n.dateTomorrow,max:n.dateMaxEnforced},on:{input:n.onExpirationChange}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Enter a date"))+"\n\t\t")]):n._e(),n._v(" "),t("NcActionButton",{attrs:{icon:"icon-checkmark"},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),n.onNewLinkShare.apply(null,arguments)}}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Create share"))+"\n\t\t")]),n._v(" "),t("NcActionButton",{attrs:{icon:"icon-close"},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),n.onCancel.apply(null,arguments)}}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Cancel"))+"\n\t\t")])],1)],1)}),[],!1,null,"eb63f3b4",null),ye={name:"SharingLinkList",components:{SharingEntryLink:Ae.exports},mixins:[A],props:{fileInfo:{type:Object,default:function(){},required:!0},shares:{type:Array,default:function(){return[]},required:!0},canReshare:{type:Boolean,required:!0}},data:function(){return{canLinkShare:OC.getCapabilities().files_sharing.public.enabled}},computed:{hasLinkShares:function(){var n=this;return this.shares.filter((function(e){return e.type===n.SHARE_TYPES.SHARE_TYPE_LINK})).length>0},hasShares:function(){return this.shares.length>0}},methods:{addShare:function(n,e){this.shares.unshift(n),this.awaitForShare(n,e)},awaitForShare:function(n,e){var t=this;this.$nextTick((function(){var r=t.$children.find((function(e){return e.share===n}));r&&e(r)}))},removeShare:function(n){var e=this.shares.findIndex((function(e){return e===n}));this.shares.splice(e,1)}}},be=(0,j.Z)(ye,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return n.canLinkShare?t("ul",{staticClass:"sharing-link-list"},[!n.hasLinkShares&&n.canReshare?t("SharingEntryLink",{attrs:{"can-reshare":n.canReshare,"file-info":n.fileInfo},on:{"add:share":n.addShare}}):n._e(),n._v(" "),n.hasShares?n._l(n.shares,(function(e,r){return t("SharingEntryLink",{key:e.id,attrs:{"can-reshare":n.canReshare,share:n.shares[r],"file-info":n.fileInfo},on:{"update:share":[function(e){return n.$set(n.shares,r,e)},function(e){return n.awaitForShare.apply(void 0,arguments)}],"add:share":function(e){return n.addShare.apply(void 0,arguments)},"remove:share":n.removeShare}})})):n._e()],2):n._e()}),[],!1,null,null,null),we=be.exports,Ee=r(79570),Se=r.n(Ee),Ce=r(18074),xe=r.n(Ce);function ke(n){return ke="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},ke(n)}var Pe={name:"SharingEntry",components:{NcActions:E(),NcActionButton:xn(),NcActionCheckbox:ne(),NcActionInput:Se(),NcActionTextEditable:xe(),NcAvatar:h()},directives:{Tooltip:C()},mixins:[Hn],data:function(){return{permissionsEdit:OC.PERMISSION_UPDATE,permissionsCreate:OC.PERMISSION_CREATE,permissionsDelete:OC.PERMISSION_DELETE,permissionsRead:OC.PERMISSION_READ,permissionsShare:OC.PERMISSION_SHARE}},computed:{title:function(){var n=this.share.shareWithDisplayName;return this.share.type===this.SHARE_TYPES.SHARE_TYPE_GROUP?n+=" (".concat(t("files_sharing","group"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_ROOM?n+=" (".concat(t("files_sharing","conversation"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE?n+=" (".concat(t("files_sharing","remote"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP?n+=" (".concat(t("files_sharing","remote group"),")"):this.share.type===this.SHARE_TYPES.SHARE_TYPE_GUEST&&(n+=" (".concat(t("files_sharing","guest"),")")),n},tooltip:function(){if(this.share.owner!==this.share.uidFileOwner){var n={user:this.share.shareWithDisplayName,owner:this.share.ownerDisplayName};return this.share.type===this.SHARE_TYPES.SHARE_TYPE_GROUP?t("files_sharing","Shared with the group {user} by {owner}",n):this.share.type===this.SHARE_TYPES.SHARE_TYPE_ROOM?t("files_sharing","Shared with the conversation {user} by {owner}",n):t("files_sharing","Shared with {user} by {owner}",n)}return null},canHaveNote:function(){return!this.isRemote},isRemote:function(){return this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE||this.share.type===this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP},canSetEdit:function(){return this.fileInfo.sharePermissions&OC.PERMISSION_UPDATE||this.canEdit},canSetCreate:function(){return this.fileInfo.sharePermissions&OC.PERMISSION_CREATE||this.canCreate},canSetDelete:function(){return this.fileInfo.sharePermissions&OC.PERMISSION_DELETE||this.canDelete},canSetReshare:function(){return this.fileInfo.sharePermissions&OC.PERMISSION_SHARE||this.canReshare},canSetDownload:function(){return this.fileInfo.canDownload()||this.canDownload},canEdit:{get:function(){return this.share.hasUpdatePermission},set:function(n){this.updatePermissions({isEditChecked:n})}},canCreate:{get:function(){return this.share.hasCreatePermission},set:function(n){this.updatePermissions({isCreateChecked:n})}},canDelete:{get:function(){return this.share.hasDeletePermission},set:function(n){this.updatePermissions({isDeleteChecked:n})}},canReshare:{get:function(){return this.share.hasSharePermission},set:function(n){this.updatePermissions({isReshareChecked:n})}},canDownload:{get:function(){return this.share.hasDownloadPermission},set:function(n){this.updatePermissions({isDownloadChecked:n})}},hasRead:{get:function(){return this.share.hasReadPermission}},isFolder:function(){return"dir"===this.fileInfo.type},hasExpirationDate:{get:function(){return this.config.isDefaultInternalExpireDateEnforced||!!this.share.expireDate},set:function(n){var e=this.config.defaultInternalExpirationDate||new Date((new Date).setDate((new Date).getDate()+1));this.share.expireDate=n?this.formatDateToString(e):"",console.debug("Expiration date status",n,this.share.expireDate)}},dateMaxEnforced:function(){return!this.isRemote&&this.config.isDefaultInternalExpireDateEnforced?new Date((new Date).setDate((new Date).getDate()+1+this.config.defaultInternalExpireDate)):this.config.isDefaultRemoteExpireDateEnforced?new Date((new Date).setDate((new Date).getDate()+1+this.config.defaultRemoteExpireDate)):null},hasStatus:function(){return this.share.type===this.SHARE_TYPES.SHARE_TYPE_USER&&"object"===ke(this.share.status)&&!Array.isArray(this.share.status)},allowDownloadText:function(){return t("files_sharing","Allow download")},isSetDownloadButtonVisible:function(){return this.isFolder||["application/msword","application/vnd.openxmlformats-officedocument.wordprocessingml.document","application/vnd.ms-powerpoint","application/vnd.openxmlformats-officedocument.presentationml.presentation","application/vnd.ms-excel","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","application/vnd.oasis.opendocument.text","application/vnd.oasis.opendocument.spreadsheet","application/vnd.oasis.opendocument.presentation"].includes(this.fileInfo.mimetype)}},methods:{updatePermissions:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=n.isEditChecked,t=void 0===e?this.canEdit:e,r=n.isCreateChecked,i=void 0===r?this.canCreate:r,a=n.isDeleteChecked,s=void 0===a?this.canDelete:a,o=n.isReshareChecked,c=void 0===o?this.canReshare:o,l=n.isDownloadChecked,u=void 0===l?this.canDownload:l,h=0|(this.hasRead?this.permissionsRead:0)|(i?this.permissionsCreate:0)|(s?this.permissionsDelete:0)|(t?this.permissionsEdit:0)|(c?this.permissionsShare:0);this.share.permissions=h,this.share.hasDownloadPermission!==u&&(this.share.hasDownloadPermission=u),this.queueUpdate("permissions","attributes")},onMenuClose:function(){this.onNoteSubmit()}}},De=Pe,Te=r(68805),Re={};Re.styleTagTransform=Y(),Re.setAttributes=I(),Re.insert=N().bind(null,"head"),Re.domAPI=T(),Re.insertStyleElement=H(),P()(Te.Z,Re),Te.Z&&Te.Z.locals&&Te.Z.locals;var Ne=(0,j.Z)(De,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("li",{staticClass:"sharing-entry"},[t("NcAvatar",{staticClass:"sharing-entry__avatar",attrs:{"is-no-user":n.share.type!==n.SHARE_TYPES.SHARE_TYPE_USER,user:n.share.shareWith,"display-name":n.share.shareWithDisplayName,"tooltip-message":n.share.type===n.SHARE_TYPES.SHARE_TYPE_USER?n.share.shareWith:"","menu-position":"left",url:n.share.shareWithAvatar}}),n._v(" "),t(n.share.shareWithLink?"a":"div",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:n.tooltip,expression:"tooltip",modifiers:{auto:!0}}],tag:"component",staticClass:"sharing-entry__desc",attrs:{href:n.share.shareWithLink}},[t("span",[n._v(n._s(n.title)),n.isUnique?n._e():t("span",{staticClass:"sharing-entry__desc-unique"},[n._v(" ("+n._s(n.share.shareWithDisplayNameUnique)+")")])]),n._v(" "),n.hasStatus?t("p",[t("span",[n._v(n._s(n.share.status.icon||""))]),n._v(" "),t("span",[n._v(n._s(n.share.status.message||""))])]):n._e()]),n._v(" "),t("NcActions",{staticClass:"sharing-entry__actions",attrs:{"menu-align":"right"},on:{close:n.onMenuClose}},[n.share.canEdit?[t("NcActionCheckbox",{ref:"canEdit",attrs:{checked:n.canEdit,value:n.permissionsEdit,disabled:n.saving||!n.canSetEdit},on:{"update:checked":function(e){n.canEdit=e}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Allow editing"))+"\n\t\t\t")]),n._v(" "),n.isFolder?t("NcActionCheckbox",{ref:"canCreate",attrs:{checked:n.canCreate,value:n.permissionsCreate,disabled:n.saving||!n.canSetCreate},on:{"update:checked":function(e){n.canCreate=e}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Allow creating"))+"\n\t\t\t")]):n._e(),n._v(" "),n.isFolder?t("NcActionCheckbox",{ref:"canDelete",attrs:{checked:n.canDelete,value:n.permissionsDelete,disabled:n.saving||!n.canSetDelete},on:{"update:checked":function(e){n.canDelete=e}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Allow deleting"))+"\n\t\t\t")]):n._e(),n._v(" "),n.config.isResharingAllowed?t("NcActionCheckbox",{ref:"canReshare",attrs:{checked:n.canReshare,value:n.permissionsShare,disabled:n.saving||!n.canSetReshare},on:{"update:checked":function(e){n.canReshare=e}}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Allow resharing"))+"\n\t\t\t")]):n._e(),n._v(" "),n.isSetDownloadButtonVisible?t("NcActionCheckbox",{ref:"canDownload",attrs:{checked:n.canDownload,disabled:n.saving||!n.canSetDownload},on:{"update:checked":function(e){n.canDownload=e}}},[n._v("\n\t\t\t\t"+n._s(n.allowDownloadText)+"\n\t\t\t")]):n._e(),n._v(" "),t("NcActionCheckbox",{attrs:{checked:n.hasExpirationDate,disabled:n.config.isDefaultInternalExpireDateEnforced||n.saving},on:{"update:checked":function(e){n.hasExpirationDate=e},uncheck:n.onExpirationDisable}},[n._v("\n\t\t\t\t"+n._s(n.config.isDefaultInternalExpireDateEnforced?n.t("files_sharing","Expiration date enforced"):n.t("files_sharing","Set expiration date"))+"\n\t\t\t")]),n._v(" "),n.hasExpirationDate?t("NcActionInput",{ref:"expireDate",class:{error:n.errors.expireDate},attrs:{"is-native-picker":!0,"hide-label":!0,disabled:n.saving,value:new Date(n.share.expireDate),type:"date",min:n.dateTomorrow,max:n.dateMaxEnforced},on:{input:n.onExpirationChange}},[n._v("\n\t\t\t\t"+n._s(n.t("files_sharing","Enter a date"))+"\n\t\t\t")]):n._e(),n._v(" "),n.canHaveNote?[t("NcActionCheckbox",{attrs:{checked:n.hasNote,disabled:n.saving},on:{"update:checked":function(e){n.hasNote=e},uncheck:function(e){return n.queueUpdate("note")}}},[n._v("\n\t\t\t\t\t"+n._s(n.t("files_sharing","Note to recipient"))+"\n\t\t\t\t")]),n._v(" "),n.hasNote?t("NcActionTextEditable",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:{content:n.errors.note,show:n.errors.note,trigger:"manual"},expression:"{\n\t\t\t\t\t\tcontent: errors.note,\n\t\t\t\t\t\tshow: errors.note,\n\t\t\t\t\t\ttrigger: 'manual'\n\t\t\t\t\t}",modifiers:{auto:!0}}],ref:"note",class:{error:n.errors.note},attrs:{disabled:n.saving,value:n.share.newNote||n.share.note,icon:"icon-edit"},on:{"update:value":n.onNoteChange,submit:n.onNoteSubmit}}):n._e()]:n._e()]:n._e(),n._v(" "),n.share.canDelete?t("NcActionButton",{attrs:{icon:"icon-close",disabled:n.saving},on:{click:function(e){return e.preventDefault(),n.onDelete.apply(null,arguments)}}},[n._v("\n\t\t\t"+n._s(n.t("files_sharing","Unshare"))+"\n\t\t")]):n._e()],2)],1)}),[],!1,null,"708928fe",null);function Oe(n,e){(null==e||e>n.length)&&(e=n.length);for(var t=0,r=new Array(e);t<e;t++)r[t]=n[t];return r}var Ie={name:"SharingList",components:{SharingEntry:Ne.exports},mixins:[A],props:{fileInfo:{type:Object,default:function(){},required:!0},shares:{type:Array,default:function(){return[]},required:!0}},computed:{hasShares:function(){return 0===this.shares.length},isUnique:function(){var n=this;return function(e){return(t=n.shares,function(n){if(Array.isArray(n))return Oe(n)}(t)||function(n){if("undefined"!=typeof Symbol&&null!=n[Symbol.iterator]||null!=n["@@iterator"])return Array.from(n)}(t)||function(n,e){if(n){if("string"==typeof n)return Oe(n,e);var t=Object.prototype.toString.call(n).slice(8,-1);return"Object"===t&&n.constructor&&(t=n.constructor.name),"Map"===t||"Set"===t?Array.from(n):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?Oe(n,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).filter((function(t){return e.type===n.SHARE_TYPES.SHARE_TYPE_USER&&e.shareWithDisplayName===t.shareWithDisplayName})).length<=1;var t}}},methods:{removeShare:function(n){var e=this.shares.findIndex((function(e){return e===n}));this.shares.splice(e,1)}}},Le=(0,j.Z)(Ie,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("ul",{staticClass:"sharing-sharee-list"},n._l(n.shares,(function(e){return t("SharingEntry",{key:e.id,attrs:{"file-info":n.fileInfo,share:e,"is-unique":n.isUnique(e)},on:{"remove:share":n.removeShare}})})),1)}),[],!1,null,null,null).exports;function He(n,e){(null==e||e>n.length)&&(e=n.length);for(var t=0,r=new Array(e);t<e;t++)r[t]=n[t];return r}function Ue(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}function Ye(n){return function(){var e=this,t=arguments;return new Promise((function(r,i){var a=n.apply(e,t);function s(n){Ue(a,r,i,s,o,"next",n)}function o(n){Ue(a,r,i,s,o,"throw",n)}s(void 0)}))}}var Me={name:"SharingTab",components:{NcAvatar:h(),CollectionList:c.G,SharingEntryInternal:J,SharingEntrySimple:W,SharingInherited:Vn,SharingInput:Sn,SharingLinkList:we,SharingList:Le},mixins:[A],data:function(){return{config:new g,error:"",expirationInterval:null,loading:!0,fileInfo:null,reshare:null,sharedWithMe:{},shares:[],linkShares:[],sections:OCA.Sharing.ShareTabSections.getSections(),projectsEnabled:(0,p.loadState)("core","projects_enabled",!1)}},computed:{isSharedWithMe:function(){return Object.keys(this.sharedWithMe).length>0},canReshare:function(){return!!(this.fileInfo.permissions&OC.PERMISSION_SHARE)||!!(this.reshare&&this.reshare.hasSharePermission&&this.config.isResharingAllowed)}},methods:{update:function(n){var e=this;return Ye(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:e.fileInfo=n,e.resetState(),e.getShares();case 3:case"end":return t.stop()}}),t)})))()},getShares:function(){var n=this;return Ye(regeneratorRuntime.mark((function e(){var r,i,a,s,o,c,u,h,p,f,g,m;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,n.loading=!0,r=(0,l.generateOcsUrl)("apps/files_sharing/api/v1/shares"),i="json",a=(n.fileInfo.path+"/"+n.fileInfo.name).replace("//","/"),s=d.default.get(r,{params:{format:i,path:a,reshares:!0}}),o=d.default.get(r,{params:{format:i,path:a,shared_with_me:!0}}),e.next=9,Promise.all([s,o]);case 9:c=e.sent,v=2,u=function(n){if(Array.isArray(n))return n}(_=c)||function(n,e){var t=null==n?null:"undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(null!=t){var r,i,a=[],s=!0,o=!1;try{for(t=t.call(n);!(s=(r=t.next()).done)&&(a.push(r.value),!e||a.length!==e);s=!0);}catch(n){o=!0,i=n}finally{try{s||null==t.return||t.return()}finally{if(o)throw i}}return a}}(_,v)||function(n,e){if(n){if("string"==typeof n)return He(n,e);var t=Object.prototype.toString.call(n).slice(8,-1);return"Object"===t&&n.constructor&&(t=n.constructor.name),"Map"===t||"Set"===t?Array.from(n):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?He(n,e):void 0}}(_,v)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),h=u[0],p=u[1],n.loading=!1,n.processSharedWithMe(p),n.processShares(h),e.next=23;break;case 18:e.prev=18,e.t0=e.catch(0),null!==(f=e.t0.response.data)&&void 0!==f&&null!==(g=f.ocs)&&void 0!==g&&null!==(m=g.meta)&&void 0!==m&&m.message?n.error=e.t0.response.data.ocs.meta.message:n.error=t("files_sharing","Unable to load the shares list"),n.loading=!1,console.error("Error loading the shares list",e.t0);case 23:case"end":return e.stop()}var _,v}),e,null,[[0,18]])})))()},resetState:function(){clearInterval(this.expirationInterval),this.loading=!0,this.error="",this.sharedWithMe={},this.shares=[],this.linkShares=[]},updateExpirationSubtitle:function(n){var e=moment(n.expireDate).unix();this.$set(this.sharedWithMe,"subtitle",t("files_sharing","Expires {relativetime}",{relativetime:OC.Util.relativeModifiedDate(1e3*e)})),moment().unix()>e&&(clearInterval(this.expirationInterval),this.$set(this.sharedWithMe,"subtitle",t("files_sharing","this share just expired.")))},processShares:function(n){var e=this,t=n.data;if(t.ocs&&t.ocs.data&&t.ocs.data.length>0){var r=t.ocs.data.map((function(n){return new v(n)})).sort((function(n,e){return e.createdTime-n.createdTime}));this.linkShares=r.filter((function(n){return n.type===e.SHARE_TYPES.SHARE_TYPE_LINK||n.type===e.SHARE_TYPES.SHARE_TYPE_EMAIL})),this.shares=r.filter((function(n){return n.type!==e.SHARE_TYPES.SHARE_TYPE_LINK&&n.type!==e.SHARE_TYPES.SHARE_TYPE_EMAIL})),console.debug("Processed",this.linkShares.length,"link share(s)"),console.debug("Processed",this.shares.length,"share(s)")}},processSharedWithMe:function(n){var e=n.data;if(e.ocs&&e.ocs.data&&e.ocs.data[0]){var r=new v(e),i=function(n){return n.type===m.D.SHARE_TYPE_GROUP?t("files_sharing","Shared with you and the group {group} by {owner}",{group:n.shareWithDisplayName,owner:n.ownerDisplayName},void 0,{escape:!1}):n.type===m.D.SHARE_TYPE_CIRCLE?t("files_sharing","Shared with you and {circle} by {owner}",{circle:n.shareWithDisplayName,owner:n.ownerDisplayName},void 0,{escape:!1}):n.type===m.D.SHARE_TYPE_ROOM?n.shareWithDisplayName?t("files_sharing","Shared with you and the conversation {conversation} by {owner}",{conversation:n.shareWithDisplayName,owner:n.ownerDisplayName},void 0,{escape:!1}):t("files_sharing","Shared with you in a conversation by {owner}",{owner:n.ownerDisplayName},void 0,{escape:!1}):t("files_sharing","Shared with you by {owner}",{owner:n.ownerDisplayName},void 0,{escape:!1})}(r),a=r.ownerDisplayName,s=r.owner;this.sharedWithMe={displayName:a,title:i,user:s},this.reshare=r,r.expireDate&&moment(r.expireDate).unix()>moment().unix()&&(this.updateExpirationSubtitle(r),this.expirationInterval=setInterval(this.updateExpirationSubtitle,1e4,r))}else this.fileInfo&&void 0!==this.fileInfo.shareOwnerId&&this.fileInfo.shareOwnerId!==OC.currentUser&&(this.sharedWithMe={displayName:this.fileInfo.shareOwner,title:t("files_sharing","Shared with you by {owner}",{owner:this.fileInfo.shareOwner},void 0,{escape:!1}),user:this.fileInfo.shareOwnerId})},addShare:function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){};n.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL?this.linkShares.unshift(n):this.shares.unshift(n),this.awaitForShare(n,e)},awaitForShare:function(n,e){var t=this.$refs.shareList;n.type===this.SHARE_TYPES.SHARE_TYPE_EMAIL&&(t=this.$refs.linkShareList),this.$nextTick((function(){var r=t.$children.find((function(e){return e.share===n}));r&&e(r)}))}}},Be=Me,je=r(45770),We={};We.styleTagTransform=Y(),We.setAttributes=I(),We.insert=N().bind(null,"head"),We.domAPI=T(),We.insertStyleElement=H(),P()(je.Z,We),je.Z&&je.Z.locals&&je.Z.locals;var Fe=(0,j.Z)(Be,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("div",{class:{"icon-loading":n.loading}},[n.error?t("div",{staticClass:"emptycontent",class:{emptyContentWithSections:n.sections.length>0}},[t("div",{staticClass:"icon icon-error"}),n._v(" "),t("h2",[n._v(n._s(n.error))])]):t("div",{staticClass:"sharingTab__content"},[n.isSharedWithMe?t("SharingEntrySimple",n._b({staticClass:"sharing-entry__reshare",scopedSlots:n._u([{key:"avatar",fn:function(){return[t("NcAvatar",{staticClass:"sharing-entry__avatar",attrs:{user:n.sharedWithMe.user,"display-name":n.sharedWithMe.displayName,"tooltip-message":""}})]},proxy:!0}],null,!1,1656378807)},"SharingEntrySimple",n.sharedWithMe,!1)):n._e(),n._v(" "),n.loading?n._e():t("SharingInput",{attrs:{"can-reshare":n.canReshare,"file-info":n.fileInfo,"link-shares":n.linkShares,reshare:n.reshare,shares:n.shares},on:{"add:share":n.addShare}}),n._v(" "),n.loading?n._e():t("SharingLinkList",{ref:"linkShareList",attrs:{"can-reshare":n.canReshare,"file-info":n.fileInfo,shares:n.linkShares}}),n._v(" "),n.loading?n._e():t("SharingList",{ref:"shareList",attrs:{shares:n.shares,"file-info":n.fileInfo}}),n._v(" "),n.canReshare&&!n.loading?t("SharingInherited",{attrs:{"file-info":n.fileInfo}}):n._e(),n._v(" "),t("SharingEntryInternal",{attrs:{"file-info":n.fileInfo}}),n._v(" "),n.projectsEnabled&&n.fileInfo?t("CollectionList",{attrs:{id:""+n.fileInfo.id,type:"file",name:n.fileInfo.name}}):n._e()],1),n._v(" "),n._l(n.sections,(function(e,r){return t("div",{key:r,ref:"section-"+r,refInFor:!0,staticClass:"sharingTab__additionalContent"},[t(e(n.$refs["section-"+r],n.fileInfo),{tag:"component",attrs:{"file-info":n.fileInfo}})],1)}))],2)}),[],!1,null,"59d829c2",null).exports;function qe(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}var $e=function(){function n(){var e,t;!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),t=void 0,(e="_state")in this?Object.defineProperty(this,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):this[e]=t,this._state={},this._state.results=[],console.debug("OCA.Sharing.ShareSearch initialized")}var e,t;return e=n,(t=[{key:"state",get:function(){return this._state}},{key:"addNewResult",value:function(n){return""!==n.displayName.trim()&&"function"==typeof n.handler?(this._state.results.push(n),!0):(console.error("Invalid search result provided",n),!1)}}])&&qe(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}();function Ze(n){return Ze="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},Ze(n)}function Ge(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}var Ve=function(){function n(){var e,t;!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),t=void 0,(e="_state")in this?Object.defineProperty(this,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):this[e]=t,this._state={},this._state.actions=[],console.debug("OCA.Sharing.ExternalLinkActions initialized")}var e,t;return e=n,(t=[{key:"state",get:function(){return this._state}},{key:"registerAction",value:function(n){return console.warn("OCA.Sharing.ExternalLinkActions is deprecated, use OCA.Sharing.ExternalShareAction instead"),"object"===Ze(n)&&n.icon&&n.name&&n.url?(this._state.actions.push(n),!0):(console.error("Invalid action provided",n),!1)}}])&&Ge(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}();function ze(n){return ze="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},ze(n)}function Ke(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}var Je=function(){function n(){var e,t;!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),t=void 0,(e="_state")in this?Object.defineProperty(this,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):this[e]=t,this._state={},this._state.actions=[],console.debug("OCA.Sharing.ExternalShareActions initialized")}var e,t;return e=n,(t=[{key:"state",get:function(){return this._state}},{key:"registerAction",value:function(n){return"object"===ze(n)&&"string"==typeof n.id&&"function"==typeof n.data&&Array.isArray(n.shareType)&&"object"===ze(n.handlers)&&Object.values(n.handlers).every((function(n){return"function"==typeof n}))?this._state.actions.findIndex((function(e){return e.id===n.id}))>-1?(console.error("An action with the same id ".concat(n.id," already exists"),n),!1):(this._state.actions.push(n),!0):(console.error("Invalid action provided",n),!1)}}])&&Ke(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}();function Qe(n,e){for(var t=0;t<e.length;t++){var r=e[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}var Xe=function(){function n(){var e,t;!function(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),t=void 0,(e="_sections")in this?Object.defineProperty(this,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):this[e]=t,this._sections=[]}var e,t;return e=n,(t=[{key:"registerSection",value:function(n){this._sections.push(n)}},{key:"getSections",value:function(){return this._sections}}])&&Qe(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),n}(),nt=r(44582);function et(n,e,t,r,i,a,s){try{var o=n[a](s),c=o.value}catch(n){return void t(n)}o.done?e(c):Promise.resolve(c).then(r,i)}window.OCA.Sharing||(window.OCA.Sharing={}),Object.assign(window.OCA.Sharing,{ShareSearch:new $e}),Object.assign(window.OCA.Sharing,{ExternalLinkActions:new Ve}),Object.assign(window.OCA.Sharing,{ExternalShareActions:new Je}),Object.assign(window.OCA.Sharing,{ShareTabSections:new Xe}),i.ZP.prototype.t=o.translate,i.ZP.prototype.n=o.translatePlural,i.ZP.use(s());var tt=i.ZP.extend(Fe),rt=null;window.addEventListener("DOMContentLoaded",(function(){OCA.Files&&OCA.Files.Sidebar&&OCA.Files.Sidebar.registerTab(new OCA.Files.Sidebar.Tab({id:"sharing",name:(0,o.translate)("files_sharing","Sharing"),iconSvg:nt,mount:function(n,e,t){return(r=regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return rt&&rt.$destroy(),rt=new tt({parent:t}),r.next=4,rt.update(e);case 4:rt.$mount(n);case 5:case"end":return r.stop()}}),r)})),function(){var n=this,e=arguments;return new Promise((function(t,i){var a=r.apply(n,e);function s(n){et(a,t,i,s,o,"next",n)}function o(n){et(a,t,i,s,o,"throw",n)}s(void 0)}))})();var r},update:function(n){rt.update(n)},destroy:function(){rt.$destroy(),rt=null}}))}))},13194:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".error[data-v-5e957d09] .action-checkbox__label:before{border:1px solid var(--color-error)}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharePermissionsEditor.vue"],names:[],mappings:"AAiSC,wDACC,mCAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.error {\n\t::v-deep .action-checkbox__label:before {\n\t\tborder: 1px solid var(--color-error);\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},68805:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-entry[data-v-708928fe]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-708928fe]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-708928fe]{color:var(--color-text-maxcontrast)}.sharing-entry__desc-unique[data-v-708928fe]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-708928fe]{margin-left:auto}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntry.vue"],names:[],mappings:"AAmdA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAED,6CACC,mCAAA,CAGF,yCACC,gBAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t\t&-unique {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},57851:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-entry[data-v-2bbe78b4]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-2bbe78b4]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-2bbe78b4]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-2bbe78b4]{margin-left:auto}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryInherited.vue"],names:[],mappings:"AAgGA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAGF,yCACC,gBAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},75776:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-entry__internal .avatar-external[data-v-257ca35d]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}.sharing-entry__internal .icon-checkmark-color[data-v-257ca35d]{opacity:1}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryInternal.vue"],names:[],mappings:"AAoHC,2DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA,CAED,gEACC,SAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.sharing-entry__internal {\n\t.avatar-external {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},18519:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-entry[data-v-eb63f3b4]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-eb63f3b4]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em;overflow:hidden}.sharing-entry__desc p[data-v-eb63f3b4]{color:var(--color-text-maxcontrast)}.sharing-entry__title[data-v-eb63f3b4]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.sharing-entry:not(.sharing-entry--share) .sharing-entry__actions .new-share-link[data-v-eb63f3b4]{border-top:1px solid var(--color-border)}.sharing-entry[data-v-eb63f3b4] .avatar-link-share{background-color:var(--color-primary)}.sharing-entry .sharing-entry__action--public-upload[data-v-eb63f3b4]{border-bottom:1px solid var(--color-border)}.sharing-entry__loading[data-v-eb63f3b4]{width:44px;height:44px;margin:0;padding:14px;margin-left:auto}.sharing-entry .action-item[data-v-eb63f3b4]{margin-left:auto}.sharing-entry .action-item~.action-item[data-v-eb63f3b4],.sharing-entry .action-item~.sharing-entry__loading[data-v-eb63f3b4]{margin-left:0}.sharing-entry .icon-checkmark-color[data-v-eb63f3b4]{opacity:1}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntryLink.vue"],names:[],mappings:"AAy3BA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,eAAA,CAEA,wCACC,mCAAA,CAGF,uCACC,sBAAA,CACA,eAAA,CACA,kBAAA,CAIA,mGACC,wCAAA,CAIF,oDACC,qCAAA,CAGD,sEACC,2CAAA,CAGD,yCACC,UAAA,CACA,WAAA,CACA,QAAA,CACA,YAAA,CACA,gBAAA,CAKD,6CACC,gBAAA,CACA,+HAEC,aAAA,CAIF,sDACC,SAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\toverflow: hidden;\n\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__title {\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t}\n\n\t&:not(.sharing-entry--share) &__actions {\n\t\t.new-share-link {\n\t\t\tborder-top: 1px solid var(--color-border);\n\t\t}\n\t}\n\n\t::v-deep .avatar-link-share {\n\t\tbackground-color: var(--color-primary);\n\t}\n\n\t.sharing-entry__action--public-upload {\n\t\tborder-bottom: 1px solid var(--color-border);\n\t}\n\n\t&__loading {\n\t\twidth: 44px;\n\t\theight: 44px;\n\t\tmargin: 0;\n\t\tpadding: 14px;\n\t\tmargin-left: auto;\n\t}\n\n\t// put menus to the left\n\t// but only the first one\n\t.action-item {\n\t\tmargin-left: auto;\n\t\t~ .action-item,\n\t\t~ .sharing-entry__loading {\n\t\t\tmargin-left: 0;\n\t\t}\n\t}\n\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},25027:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-entry[data-v-73184f79]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-73184f79]{padding:8px;line-height:1.2em;position:relative;flex:1 1;min-width:0}.sharing-entry__desc p[data-v-73184f79]{color:var(--color-text-maxcontrast)}.sharing-entry__title[data-v-73184f79]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:inherit}.sharing-entry__actions[data-v-73184f79]{margin-left:auto !important}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingEntrySimple.vue"],names:[],mappings:"AA4FA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,WAAA,CACA,iBAAA,CACA,iBAAA,CACA,QAAA,CACA,WAAA,CACA,wCACC,mCAAA,CAGF,uCACC,kBAAA,CACA,sBAAA,CACA,eAAA,CACA,iBAAA,CAED,yCACC,2BAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\t&__desc {\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tposition: relative;\n\t\tflex: 1 1;\n\t\tmin-width: 0;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__title {\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\tmax-width: inherit;\n\t}\n\t&__actions {\n\t\tmargin-left: auto !important;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},84721:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-search{display:flex;flex-direction:column;margin-bottom:4px}.sharing-search label[for=sharing-search-input]{margin-bottom:2px}.sharing-search__input{width:100%;margin:10px 0}.sharing-search__input .multiselect__option span[lookup] .avatardiv{background-image:var(--icon-search-white);background-repeat:no-repeat;background-position:center;background-color:var(--color-text-maxcontrast) !important}.sharing-search__input .multiselect__option span[lookup] .avatardiv div{display:none}","",{version:3,sources:["webpack://./apps/files_sharing/src/components/SharingInput.vue"],names:[],mappings:"AA+gBA,gBACC,YAAA,CACA,qBAAA,CACA,iBAAA,CAEA,gDACC,iBAAA,CAGD,uBACC,UAAA,CACA,aAAA,CAKE,oEACC,yCAAA,CACA,2BAAA,CACA,0BAAA,CACA,yDAAA,CACA,wEACC,YAAA",sourcesContent:['\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.sharing-search {\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin-bottom: 4px;\n\n\tlabel[for="sharing-search-input"] {\n\t\tmargin-bottom: 2px;\n\t}\n\n\t&__input {\n\t\twidth: 100%;\n\t\tmargin: 10px 0;\n\n\t\t// properly style the lookup entry\n\t\t.multiselect__option {\n\t\t\tspan[lookup] {\n\t\t\t\t.avatardiv {\n\t\t\t\t\tbackground-image: var(--icon-search-white);\n\t\t\t\t\tbackground-repeat: no-repeat;\n\t\t\t\t\tbackground-position: center;\n\t\t\t\t\tbackground-color: var(--color-text-maxcontrast) !important;\n\t\t\t\t\tdiv {\n\t\t\t\t\t\tdisplay: none;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n'],sourceRoot:""}]),e.Z=s},44985:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".sharing-entry__inherited .avatar-shared[data-v-6a277822]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}","",{version:3,sources:["webpack://./apps/files_sharing/src/views/SharingInherited.vue"],names:[],mappings:"AAgKC,0DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.sharing-entry__inherited {\n\t.avatar-shared {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s},45770:function(n,e,t){var r=t(87537),i=t.n(r),a=t(23645),s=t.n(a)()(i());s.push([n.id,".emptyContentWithSections[data-v-59d829c2]{margin:1rem auto}.sharingTab__content[data-v-59d829c2]{padding:0 6px}.sharingTab__additionalContent[data-v-59d829c2]{margin:44px 0}","",{version:3,sources:["webpack://./apps/files_sharing/src/views/SharingTab.vue"],names:[],mappings:"AA2WA,2CACC,gBAAA,CAIA,sCACC,aAAA,CAED,gDACC,aAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.emptyContentWithSections {\n\tmargin: 1rem auto;\n}\n\n.sharingTab {\n\t&__content {\n\t\tpadding: 0 6px;\n\t}\n\t&__additionalContent {\n\t\tmargin: 44px 0;\n\t}\n}\n"],sourceRoot:""}]),e.Z=s}},r={};function i(n){var t=r[n];if(void 0!==t)return t.exports;var a=r[n]={id:n,loaded:!1,exports:{}};return e[n].call(a.exports,a,a.exports,i),a.loaded=!0,a.exports}i.m=e,i.amdD=function(){throw new Error("define cannot be used indirect")},i.amdO={},n=[],i.O=function(e,t,r,a){if(!t){var s=1/0;for(u=0;u<n.length;u++){t=n[u][0],r=n[u][1],a=n[u][2];for(var o=!0,c=0;c<t.length;c++)(!1&a||s>=a)&&Object.keys(i.O).every((function(n){return i.O[n](t[c])}))?t.splice(c--,1):(o=!1,a<s&&(s=a));if(o){n.splice(u--,1);var l=r();void 0!==l&&(e=l)}}return e}a=a||0;for(var u=n.length;u>0&&n[u-1][2]>a;u--)n[u]=n[u-1];n[u]=[t,r,a]},i.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return i.d(e,{a:e}),e},i.d=function(n,e){for(var t in e)i.o(e,t)&&!i.o(n,t)&&Object.defineProperty(n,t,{enumerable:!0,get:e[t]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"==typeof window)return window}}(),i.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},i.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},i.nmd=function(n){return n.paths=[],n.children||(n.children=[]),n},i.j=7870,function(){i.b=document.baseURI||self.location.href;var n={7870:0};i.O.j=function(e){return 0===n[e]};var e=function(e,t){var r,a,s=t[0],o=t[1],c=t[2],l=0;if(s.some((function(e){return 0!==n[e]}))){for(r in o)i.o(o,r)&&(i.m[r]=o[r]);if(c)var u=c(i)}for(e&&e(t);l<s.length;l++)a=s[l],i.o(n,a)&&n[a]&&n[a][0](),n[a]=0;return i.O(u)},t=self.webpackChunknextcloud=self.webpackChunknextcloud||[];t.forEach(e.bind(null,0)),t.push=e.bind(null,t.push.bind(t))}(),i.nc=void 0;var a=i.O(void 0,[7874],(function(){return i(83559)}));a=i.O(a)}(); +//# sourceMappingURL=files_sharing-files_sharing_tab.js.map?v=501652bacf5cd1e734a8
\ No newline at end of file diff --git a/dist/files_sharing-files_sharing_tab.js.map b/dist/files_sharing-files_sharing_tab.js.map index dfea02d6793..3fec7314670 100644 --- a/dist/files_sharing-files_sharing_tab.js.map +++ b/dist/files_sharing-files_sharing_tab.js.map @@ -1 +1 @@ -{"version":3,"file":"files_sharing-files_sharing_tab.js?v=258736e0cd7217575bf4","mappings":"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BAOA,aAPA,SAQA,4BARA,4CAUA,EAQA,eAnBA,SAmBA,iOACA,cAEA,qEACA,MAGA,GACA,8BACA,+BACA,gCACA,sCACA,gCACA,8BACA,+BACA,gCAGA,uDACA,uCAGA,OAtBA,kBAwBA,yEACA,QACA,cACA,iDACA,SACA,SACA,wCACA,eA/BA,OAwBA,EAxBA,gEAmCA,iDAnCA,2BAuCA,kBACA,wBACA,WAGA,kEACA,kEAGA,+BACA,qDAEA,sDACA,+BACA,qDAEA,sDAIA,KACA,qBACA,QACA,mBACA,YACA,iDACA,YAKA,8EAEA,kCAGA,0BACA,sBAGA,mBACA,oBAEA,mBACA,GANA,CAOA,OAEA,iCAEA,mCACA,oDAEA,CACA,IAEA,aACA,0CA/FA,2DAgGA,EAOA,uCACA,yCACA,QAKA,mBAjIA,WAiIA,4JACA,aAEA,OAHA,kBAKA,qFACA,QACA,cACA,4BARA,OAKA,EALA,8DAYA,qDAZA,2BAiBA,8EAGA,uCACA,+CAGA,+CACA,qDACA,UAEA,aACA,kDA7BA,0DA8BA,EASA,wBAxKA,SAwKA,cACA,+BAEA,oBACA,SAEA,IACA,sDAEA,kDACA,SAIA,kDACA,QAEA,CAGA,uDAEA,QADA,oDACA,kCACA,aAEA,CAEA,qCAEA,OADA,sBACA,CACA,OAGA,2BACA,WACA,yBACA,QAEA,CAIA,SAGA,CAFA,SACA,QACA,CACA,QACA,MACA,EAQA,gBAhOA,SAgOA,GACA,UACA,uCAKA,kBACA,8CACA,uCACA,mBACA,uCACA,kBACA,wCACA,oBACA,sCACA,kBACA,sCACA,kBAEA,QACA,SAEA,EAQA,qBA/PA,SA+PA,GACA,MACA,8FACA,gEACA,2DACA,+DACA,eAEA,yDACA,wBACA,OACA,oDACA,MALA,2DAOA,OACA,8DACA,4BACA,4BACA,+BACA,8DACA,4BACA,WACA,4DACA,6CAEA,EAOA,SA/RA,SA+RA,sKACA,SADA,gCAEA,6BAFA,cAKA,wBACA,oEACA,IAPA,mBAQA,GARA,WAYA,UAZA,iCAaA,aAbA,cAaA,EAbA,OAcA,8BAdA,mBAeA,GAfA,WAkBA,aACA,yDAnBA,U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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/files_sharing/src/services/ConfigService.js","webpack:///nextcloud/apps/files_sharing/src/models/Share.js","webpack:///nextcloud/apps/files_sharing/src/mixins/ShareTypes.js","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntrySimple.vue?2231","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntrySimple.vue?cb12","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue?vue&type=template&id=73184f79&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInternal.vue?cda5","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInternal.vue?4c20","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue?vue&type=template&id=95f87a66&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/utils/GeneratePassword.js","webpack:///nextcloud/apps/files_sharing/src/mixins/ShareRequests.js","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingInput.vue?1f8b","webpack://nextcloud/./apps/files_sharing/src/components/SharingInput.vue?3d7c","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue?vue&type=template&id=16a26106&","webpack:///nextcloud/apps/files_sharing/src/mixins/SharesMixin.js","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInherited.vue?fbbc","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInherited.vue?0e5a","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue?vue&type=template&id=2bbe78b4&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/views/SharingInherited.vue?3a90","webpack://nextcloud/./apps/files_sharing/src/views/SharingInherited.vue?1677","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue?vue&type=template&id=6a277822&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/ExternalShareAction.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/components/ExternalShareAction.vue","webpack://nextcloud/./apps/files_sharing/src/components/ExternalShareAction.vue?9bf3","webpack:///nextcloud/apps/files_sharing/src/components/ExternalShareAction.vue?vue&type=template&id=29f555e7&","webpack:///nextcloud/apps/files_sharing/src/lib/SharePermissionsToolBox.js","webpack:///nextcloud/apps/files_sharing/src/components/SharePermissionsEditor.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/components/SharePermissionsEditor.vue","webpack://nextcloud/./apps/files_sharing/src/components/SharePermissionsEditor.vue?7624","webpack://nextcloud/./apps/files_sharing/src/components/SharePermissionsEditor.vue?f133","webpack:///nextcloud/apps/files_sharing/src/components/SharePermissionsEditor.vue?vue&type=template&id=5e957d09&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryLink.vue?c4d0","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryLink.vue?af90","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue?vue&type=template&id=182f91a3&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/views/SharingLinkList.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/views/SharingLinkList.vue","webpack://nextcloud/./apps/files_sharing/src/views/SharingLinkList.vue?a70b","webpack:///nextcloud/apps/files_sharing/src/views/SharingLinkList.vue?vue&type=template&id=8be1a6a2&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntry.vue?36e0","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntry.vue?10a7","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue?vue&type=template&id=708928fe&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/views/SharingList.vue","webpack:///nextcloud/apps/files_sharing/src/views/SharingList.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/views/SharingList.vue?9f9c","webpack:///nextcloud/apps/files_sharing/src/views/SharingList.vue?vue&type=template&id=0b29d4c0&","webpack:///nextcloud/apps/files_sharing/src/views/SharingTab.vue","webpack:///nextcloud/apps/files_sharing/src/utils/SharedWithMe.js","webpack:///nextcloud/apps/files_sharing/src/views/SharingTab.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/views/SharingTab.vue?2bc8","webpack://nextcloud/./apps/files_sharing/src/views/SharingTab.vue?6997","webpack:///nextcloud/apps/files_sharing/src/views/SharingTab.vue?vue&type=template&id=59d829c2&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/services/ShareSearch.js","webpack:///nextcloud/apps/files_sharing/src/services/ExternalLinkActions.js","webpack:///nextcloud/apps/files_sharing/src/services/ExternalShareActions.js","webpack:///nextcloud/apps/files_sharing/src/services/TabSections.js","webpack:///nextcloud/apps/files_sharing/src/files_sharing_tab.js","webpack:///nextcloud/apps/files_sharing/src/components/SharePermissionsEditor.vue?vue&type=style&index=0&id=5e957d09&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue?vue&type=style&index=0&id=708928fe&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue?vue&type=style&index=0&id=2bbe78b4&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue?vue&type=style&index=0&id=95f87a66&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue?vue&type=style&index=0&id=182f91a3&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue?vue&type=style&index=0&id=73184f79&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue?vue&type=style&index=0&lang=scss&","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue?vue&type=style&index=0&id=6a277822&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/views/SharingTab.vue?vue&type=style&index=0&id=59d829c2&scoped=true&lang=scss&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/amd define","webpack:///nextcloud/webpack/runtime/amd options","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class Config {\n\n\t/**\n\t * Is public upload allowed on link shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isPublicUploadEnabled() {\n\t\treturn document.getElementsByClassName('files-filestable')[0]\n\t\t\t&& document.getElementsByClassName('files-filestable')[0].dataset.allowPublicUpload === 'yes'\n\t}\n\n\t/**\n\t * Are link share allowed ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isShareWithLinkAllowed() {\n\t\treturn document.getElementById('allowShareWithLink')\n\t\t\t&& document.getElementById('allowShareWithLink').value === 'yes'\n\t}\n\n\t/**\n\t * Get the federated sharing documentation link\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget federatedShareDocLink() {\n\t\treturn OC.appConfig.core.federatedCloudShareDoc\n\t}\n\n\t/**\n\t * Get the default link share expiration date\n\t *\n\t * @return {Date|null}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultExpirationDate() {\n\t\tif (this.isDefaultExpireDateEnabled) {\n\t\t\treturn new Date(new Date().setDate(new Date().getDate() + this.defaultExpireDate))\n\t\t}\n\t\treturn null\n\t}\n\n\t/**\n\t * Get the default internal expiration date\n\t *\n\t * @return {Date|null}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultInternalExpirationDate() {\n\t\tif (this.isDefaultInternalExpireDateEnabled) {\n\t\t\treturn new Date(new Date().setDate(new Date().getDate() + this.defaultInternalExpireDate))\n\t\t}\n\t\treturn null\n\t}\n\n\t/**\n\t * Get the default remote expiration date\n\t *\n\t * @return {Date|null}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultRemoteExpirationDateString() {\n\t\tif (this.isDefaultRemoteExpireDateEnabled) {\n\t\t\treturn new Date(new Date().setDate(new Date().getDate() + this.defaultRemoteExpireDate))\n\t\t}\n\t\treturn null\n\t}\n\n\t/**\n\t * Are link shares password-enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget enforcePasswordForPublicLink() {\n\t\treturn OC.appConfig.core.enforcePasswordForPublicLink === true\n\t}\n\n\t/**\n\t * Is password asked by default on link shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget enableLinkPasswordByDefault() {\n\t\treturn OC.appConfig.core.enableLinkPasswordByDefault === true\n\t}\n\n\t/**\n\t * Is link shares expiration enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultExpireDateEnforced() {\n\t\treturn OC.appConfig.core.defaultExpireDateEnforced === true\n\t}\n\n\t/**\n\t * Is there a default expiration date for new link shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultExpireDateEnabled() {\n\t\treturn OC.appConfig.core.defaultExpireDateEnabled === true\n\t}\n\n\t/**\n\t * Is internal shares expiration enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultInternalExpireDateEnforced() {\n\t\treturn OC.appConfig.core.defaultInternalExpireDateEnforced === true\n\t}\n\n\t/**\n\t * Is remote shares expiration enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultRemoteExpireDateEnforced() {\n\t\treturn OC.appConfig.core.defaultRemoteExpireDateEnforced === true\n\t}\n\n\t/**\n\t * Is there a default expiration date for new internal shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultInternalExpireDateEnabled() {\n\t\treturn OC.appConfig.core.defaultInternalExpireDateEnabled === true\n\t}\n\n\t/**\n\t * Is there a default expiration date for new remote shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultRemoteExpireDateEnabled() {\n\t\treturn OC.appConfig.core.defaultRemoteExpireDateEnabled === true\n\t}\n\n\t/**\n\t * Are users on this server allowed to send shares to other servers ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isRemoteShareAllowed() {\n\t\treturn OC.appConfig.core.remoteShareAllowed === true\n\t}\n\n\t/**\n\t * Is sharing my mail (link share) enabled ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isMailShareAllowed() {\n\t\tconst capabilities = OC.getCapabilities()\n\t\t// eslint-disable-next-line camelcase\n\t\treturn capabilities?.files_sharing?.sharebymail !== undefined\n\t\t\t// eslint-disable-next-line camelcase\n\t\t\t&& capabilities?.files_sharing?.public?.enabled === true\n\t}\n\n\t/**\n\t * Get the default days to link shares expiration\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultExpireDate() {\n\t\treturn OC.appConfig.core.defaultExpireDate\n\t}\n\n\t/**\n\t * Get the default days to internal shares expiration\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultInternalExpireDate() {\n\t\treturn OC.appConfig.core.defaultInternalExpireDate\n\t}\n\n\t/**\n\t * Get the default days to remote shares expiration\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultRemoteExpireDate() {\n\t\treturn OC.appConfig.core.defaultRemoteExpireDate\n\t}\n\n\t/**\n\t * Is resharing allowed ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isResharingAllowed() {\n\t\treturn OC.appConfig.core.resharingAllowed === true\n\t}\n\n\t/**\n\t * Is password enforced for mail shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isPasswordForMailSharesRequired() {\n\t\treturn (OC.getCapabilities().files_sharing.sharebymail === undefined) ? false : OC.getCapabilities().files_sharing.sharebymail.password.enforced\n\t}\n\n\t/**\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget shouldAlwaysShowUnique() {\n\t\treturn (OC.getCapabilities().files_sharing?.sharee?.always_show_unique === true)\n\t}\n\n\t/**\n\t * Is sharing with groups allowed ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget allowGroupSharing() {\n\t\treturn OC.appConfig.core.allowGroupSharing === true\n\t}\n\n\t/**\n\t * Get the maximum results of a share search\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget maxAutocompleteResults() {\n\t\treturn parseInt(OC.config['sharing.maxAutocompleteResults'], 10) || 25\n\t}\n\n\t/**\n\t * Get the minimal string length\n\t * to initiate a share search\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget minSearchStringLength() {\n\t\treturn parseInt(OC.config['sharing.minSearchStringLength'], 10) || 0\n\t}\n\n\t/**\n\t * Get the password policy config\n\t *\n\t * @return {object}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget passwordPolicy() {\n\t\tconst capabilities = OC.getCapabilities()\n\t\treturn capabilities.password_policy ? capabilities.password_policy : {}\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Gary Kim <gary@garykim.dev>\n * @author Georg Ehrke <oc.list@georgehrke.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class Share {\n\n\t_share\n\n\t/**\n\t * Create the share object\n\t *\n\t * @param {object} ocsData ocs request response\n\t */\n\tconstructor(ocsData) {\n\t\tif (ocsData.ocs && ocsData.ocs.data && ocsData.ocs.data[0]) {\n\t\t\tocsData = ocsData.ocs.data[0]\n\t\t}\n\n\t\t// convert int into boolean\n\t\tocsData.hide_download = !!ocsData.hide_download\n\t\tocsData.mail_send = !!ocsData.mail_send\n\n\t\tif (ocsData.attributes) {\n\t\t\ttry {\n\t\t\t\tocsData.attributes = JSON.parse(ocsData.attributes)\n\t\t\t} catch (e) {\n\t\t\t\tconsole.warn('Could not parse share attributes returned by server: \"' + ocsData.attributes + '\"')\n\t\t\t}\n\t\t}\n\t\tocsData.attributes = ocsData.attributes ?? []\n\n\t\t// store state\n\t\tthis._share = ocsData\n\t}\n\n\t/**\n\t * Get the share state\n\t * ! used for reactivity purpose\n\t * Do not remove. It allow vuejs to\n\t * inject its watchers into the #share\n\t * state and make the whole class reactive\n\t *\n\t * @return {object} the share raw state\n\t * @readonly\n\t * @memberof Sidebar\n\t */\n\tget state() {\n\t\treturn this._share\n\t}\n\n\t/**\n\t * get the share id\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget id() {\n\t\treturn this._share.id\n\t}\n\n\t/**\n\t * Get the share type\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget type() {\n\t\treturn this._share.share_type\n\t}\n\n\t/**\n\t * Get the share permissions\n\t * See OC.PERMISSION_* variables\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget permissions() {\n\t\treturn this._share.permissions\n\t}\n\n\t/**\n\t * Get the share attributes\n\t *\n\t * @return {Array}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget attributes() {\n\t\treturn this._share.attributes\n\t}\n\n\t/**\n\t * Set the share permissions\n\t * See OC.PERMISSION_* variables\n\t *\n\t * @param {number} permissions valid permission, See OC.PERMISSION_* variables\n\t * @memberof Share\n\t */\n\tset permissions(permissions) {\n\t\tthis._share.permissions = permissions\n\t}\n\n\t// SHARE OWNER --------------------------------------------------\n\t/**\n\t * Get the share owner uid\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget owner() {\n\t\treturn this._share.uid_owner\n\t}\n\n\t/**\n\t * Get the share owner's display name\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget ownerDisplayName() {\n\t\treturn this._share.displayname_owner\n\t}\n\n\t// SHARED WITH --------------------------------------------------\n\t/**\n\t * Get the share with entity uid\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWith() {\n\t\treturn this._share.share_with\n\t}\n\n\t/**\n\t * Get the share with entity display name\n\t * fallback to its uid if none\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithDisplayName() {\n\t\treturn this._share.share_with_displayname\n\t\t\t|| this._share.share_with\n\t}\n\n\t/**\n\t * Unique display name in case of multiple\n\t * duplicates results with the same name.\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithDisplayNameUnique() {\n\t\treturn this._share.share_with_displayname_unique\n\t\t\t|| this._share.share_with\n\t}\n\n\t/**\n\t * Get the share with entity link\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithLink() {\n\t\treturn this._share.share_with_link\n\t}\n\n\t/**\n\t * Get the share with avatar if any\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithAvatar() {\n\t\treturn this._share.share_with_avatar\n\t}\n\n\t// SHARED FILE OR FOLDER OWNER ----------------------------------\n\t/**\n\t * Get the shared item owner uid\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget uidFileOwner() {\n\t\treturn this._share.uid_file_owner\n\t}\n\n\t/**\n\t * Get the shared item display name\n\t * fallback to its uid if none\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget displaynameFileOwner() {\n\t\treturn this._share.displayname_file_owner\n\t\t\t|| this._share.uid_file_owner\n\t}\n\n\t// TIME DATA ----------------------------------------------------\n\t/**\n\t * Get the share creation timestamp\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget createdTime() {\n\t\treturn this._share.stime\n\t}\n\n\t/**\n\t * Get the expiration date\n\t *\n\t * @return {string} date with YYYY-MM-DD format\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget expireDate() {\n\t\treturn this._share.expiration\n\t}\n\n\t/**\n\t * Set the expiration date\n\t *\n\t * @param {string} date the share expiration date with YYYY-MM-DD format\n\t * @memberof Share\n\t */\n\tset expireDate(date) {\n\t\tthis._share.expiration = date\n\t}\n\n\t// EXTRA DATA ---------------------------------------------------\n\t/**\n\t * Get the public share token\n\t *\n\t * @return {string} the token\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget token() {\n\t\treturn this._share.token\n\t}\n\n\t/**\n\t * Get the share note if any\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget note() {\n\t\treturn this._share.note\n\t}\n\n\t/**\n\t * Set the share note if any\n\t *\n\t * @param {string} note the note\n\t * @memberof Share\n\t */\n\tset note(note) {\n\t\tthis._share.note = note\n\t}\n\n\t/**\n\t * Get the share label if any\n\t * Should only exist on link shares\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget label() {\n\t\treturn this._share.label\n\t}\n\n\t/**\n\t * Set the share label if any\n\t * Should only be set on link shares\n\t *\n\t * @param {string} label the label\n\t * @memberof Share\n\t */\n\tset label(label) {\n\t\tthis._share.label = label\n\t}\n\n\t/**\n\t * Have a mail been sent\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget mailSend() {\n\t\treturn this._share.mail_send === true\n\t}\n\n\t/**\n\t * Hide the download button on public page\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hideDownload() {\n\t\treturn this._share.hide_download === true\n\t}\n\n\t/**\n\t * Hide the download button on public page\n\t *\n\t * @param {boolean} state hide the button ?\n\t * @memberof Share\n\t */\n\tset hideDownload(state) {\n\t\tthis._share.hide_download = state === true\n\t}\n\n\t/**\n\t * Password protection of the share\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget password() {\n\t\treturn this._share.password\n\t}\n\n\t/**\n\t * Password protection of the share\n\t *\n\t * @param {string} password the share password\n\t * @memberof Share\n\t */\n\tset password(password) {\n\t\tthis._share.password = password\n\t}\n\n\t/**\n\t * Password expiration time\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget passwordExpirationTime() {\n\t\treturn this._share.password_expiration_time\n\t}\n\n\t/**\n\t * Password expiration time\n\t *\n\t * @param {string} password expiration time\n\t * @memberof Share\n\t */\n\tset passwordExpirationTime(passwordExpirationTime) {\n\t\tthis._share.password_expiration_time = passwordExpirationTime\n\t}\n\n\t/**\n\t * Password protection by Talk of the share\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget sendPasswordByTalk() {\n\t\treturn this._share.send_password_by_talk\n\t}\n\n\t/**\n\t * Password protection by Talk of the share\n\t *\n\t * @param {boolean} sendPasswordByTalk whether to send the password by Talk\n\t * or not\n\t * @memberof Share\n\t */\n\tset sendPasswordByTalk(sendPasswordByTalk) {\n\t\tthis._share.send_password_by_talk = sendPasswordByTalk\n\t}\n\n\t// SHARED ITEM DATA ---------------------------------------------\n\t/**\n\t * Get the shared item absolute full path\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget path() {\n\t\treturn this._share.path\n\t}\n\n\t/**\n\t * Return the item type: file or folder\n\t *\n\t * @return {string} 'folder' or 'file'\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget itemType() {\n\t\treturn this._share.item_type\n\t}\n\n\t/**\n\t * Get the shared item mimetype\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget mimetype() {\n\t\treturn this._share.mimetype\n\t}\n\n\t/**\n\t * Get the shared item id\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget fileSource() {\n\t\treturn this._share.file_source\n\t}\n\n\t/**\n\t * Get the target path on the receiving end\n\t * e.g the file /xxx/aaa will be shared in\n\t * the receiving root as /aaa, the fileTarget is /aaa\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget fileTarget() {\n\t\treturn this._share.file_target\n\t}\n\n\t/**\n\t * Get the parent folder id if any\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget fileParent() {\n\t\treturn this._share.file_parent\n\t}\n\n\t// PERMISSIONS Shortcuts\n\n\t/**\n\t * Does this share have READ permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasReadPermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_READ))\n\t}\n\n\t/**\n\t * Does this share have CREATE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasCreatePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_CREATE))\n\t}\n\n\t/**\n\t * Does this share have DELETE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasDeletePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_DELETE))\n\t}\n\n\t/**\n\t * Does this share have UPDATE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasUpdatePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_UPDATE))\n\t}\n\n\t/**\n\t * Does this share have SHARE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasSharePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_SHARE))\n\t}\n\n\t/**\n\t * Does this share have download permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasDownloadPermission() {\n\t\tfor (const i in this._share.attributes) {\n\t\t\tconst attr = this._share.attributes[i]\n\t\t\tif (attr.scope === 'permissions' && attr.key === 'download') {\n\t\t\t\treturn attr.enabled\n\t\t\t}\n\t\t}\n\n\t\treturn true\n\t}\n\n\tset hasDownloadPermission(enabled) {\n\t\tthis.setAttribute('permissions', 'download', !!enabled)\n\t}\n\n\tsetAttribute(scope, key, enabled) {\n\t\tconst attrUpdate = {\n\t\t\tscope,\n\t\t\tkey,\n\t\t\tenabled,\n\t\t}\n\n\t\t// try and replace existing\n\t\tfor (const i in this._share.attributes) {\n\t\t\tconst attr = this._share.attributes[i]\n\t\t\tif (attr.scope === attrUpdate.scope && attr.key === attrUpdate.key) {\n\t\t\t\tthis._share.attributes[i] = attrUpdate\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\n\t\tthis._share.attributes.push(attrUpdate)\n\t}\n\n\t// PERMISSIONS Shortcuts for the CURRENT USER\n\t// ! the permissions above are the share settings,\n\t// ! meaning the permissions for the recipient\n\t/**\n\t * Can the current user EDIT this share ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget canEdit() {\n\t\treturn this._share.can_edit === true\n\t}\n\n\t/**\n\t * Can the current user DELETE this share ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget canDelete() {\n\t\treturn this._share.can_delete === true\n\t}\n\n\t/**\n\t * Top level accessible shared folder fileid for the current user\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget viaFileid() {\n\t\treturn this._share.via_fileid\n\t}\n\n\t/**\n\t * Top level accessible shared folder path for the current user\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget viaPath() {\n\t\treturn this._share.via_path\n\t}\n\n\t// TODO: SORT THOSE PROPERTIES\n\n\tget parent() {\n\t\treturn this._share.parent\n\t}\n\n\tget storageId() {\n\t\treturn this._share.storage_id\n\t}\n\n\tget storage() {\n\t\treturn this._share.storage\n\t}\n\n\tget itemSource() {\n\t\treturn this._share.item_source\n\t}\n\n\tget status() {\n\t\treturn this._share.status\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { Type as ShareTypes } from '@nextcloud/sharing'\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tSHARE_TYPES: ShareTypes,\n\t\t}\n\t},\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntrySimple.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntrySimple.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<li class=\"sharing-entry\">\n\t\t<slot name=\"avatar\" />\n\t\t<div v-tooltip=\"tooltip\" class=\"sharing-entry__desc\">\n\t\t\t<span class=\"sharing-entry__title\">{{ title }}</span>\n\t\t\t<p v-if=\"subtitle\">\n\t\t\t\t{{ subtitle }}\n\t\t\t</p>\n\t\t</div>\n\t\t<NcActions ref=\"actionsComponent\"\n\t\t\tv-if=\"$slots['default']\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\tmenu-align=\"right\"\n\t\t\t:aria-expanded=\"ariaExpandedValue\">\n\t\t\t<slot />\n\t\t</NcActions>\n\t</li>\n</template>\n\n<script>\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions'\nimport Tooltip from '@nextcloud/vue/dist/Directives/Tooltip'\n\nexport default {\n\tname: 'SharingEntrySimple',\n\n\tcomponents: {\n\t\tNcActions,\n\t},\n\n\tdirectives: {\n\t\tTooltip,\n\t},\n\n\tprops: {\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t\trequired: true,\n\t\t},\n\t\ttooltip: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tsubtitle: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tisUnique: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tariaExpanded: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tariaExpandedValue() {\n\t\t\tif (this.ariaExpanded === null) {\n\t\t\t\treturn this.ariaExpanded\n\t\t\t}\n\t\t\treturn this.ariaExpanded ? 'true' : 'false'\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\t&__desc {\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tposition: relative;\n\t\tflex: 1 1;\n\t\tmin-width: 0;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__title {\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\tmax-width: inherit;\n\t}\n\t&__actions {\n\t\tmargin-left: auto !important;\n\t}\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntrySimple.vue?vue&type=style&index=0&id=73184f79&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntrySimple.vue?vue&type=style&index=0&id=73184f79&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntrySimple.vue?vue&type=template&id=73184f79&scoped=true&\"\nimport script from \"./SharingEntrySimple.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntrySimple.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntrySimple.vue?vue&type=style&index=0&id=73184f79&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"73184f79\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{staticClass:\"sharing-entry\"},[_vm._t(\"avatar\"),_vm._v(\" \"),_c('div',{directives:[{name:\"tooltip\",rawName:\"v-tooltip\",value:(_vm.tooltip),expression:\"tooltip\"}],staticClass:\"sharing-entry__desc\"},[_c('span',{staticClass:\"sharing-entry__title\"},[_vm._v(_vm._s(_vm.title))]),_vm._v(\" \"),(_vm.subtitle)?_c('p',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.subtitle)+\"\\n\\t\\t\")]):_vm._e()]),_vm._v(\" \"),(_vm.$slots['default'])?_c('NcActions',{ref:\"actionsComponent\",staticClass:\"sharing-entry__actions\",attrs:{\"menu-align\":\"right\",\"aria-expanded\":_vm.ariaExpandedValue}},[_vm._t(\"default\")],2):_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n<template>\n\t<ul>\n\t\t<SharingEntrySimple ref=\"shareEntrySimple\"\n\t\t\tclass=\"sharing-entry__internal\"\n\t\t\t:title=\"t('files_sharing', 'Internal link')\"\n\t\t\t:subtitle=\"internalLinkSubtitle\">\n\t\t\t<template #avatar>\n\t\t\t\t<div class=\"avatar-external icon-external-white\" />\n\t\t\t</template>\n\n\t\t\t<NcActionButton :aria-label=\"t('files_sharing', 'Copy internal link to clipboard')\"\n\t\t\t\t@click.prevent=\"copyLink\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Check v-if=\"copied && copySuccess\" :size=\"20\" />\n\t\t\t\t\t<ClipboardTextMultipleOutline v-else :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\t{{ clipboardTooltip }}\n\t\t\t</NcActionButton>\n\t\t</SharingEntrySimple>\n\t</ul>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { NcActionButton } from '@nextcloud/vue'\nimport SharingEntrySimple from './SharingEntrySimple'\n\nimport Check from 'vue-material-design-icons/Check.vue'\nimport ClipboardTextMultipleOutline from 'vue-material-design-icons/ClipboardTextMultipleOutline.vue'\n\nexport default {\n\tname: 'SharingEntryInternal',\n\n\tcomponents: {\n\t\tCheck,\n\t\tClipboardTextMultipleOutline,\n\t\tNcActionButton,\n\t\tSharingEntrySimple,\n\t},\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tcopied: false,\n\t\t\tcopySuccess: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Get the internal link to this file id\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tinternalLink() {\n\t\t\treturn window.location.protocol + '//' + window.location.host + generateUrl('/f/') + this.fileInfo.id\n\t\t},\n\n\t\t/**\n\t\t * Clipboard v-tooltip message\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tclipboardTooltip() {\n\t\t\tif (this.copied) {\n\t\t\t\treturn this.copySuccess\n\t\t\t\t\t? t('files_sharing', 'Link copied')\n\t\t\t\t\t: t('files_sharing', 'Cannot copy, please copy the link manually')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Copy to clipboard')\n\t\t},\n\n\t\tinternalLinkSubtitle() {\n\t\t\tif (this.fileInfo.type === 'dir') {\n\t\t\t\treturn t('files_sharing', 'Only works for users with access to this folder')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Only works for users with access to this file')\n\t\t},\n\t},\n\n\tmethods: {\n\t\tasync copyLink() {\n\t\t\ttry {\n\t\t\t\tawait this.$copyText(this.internalLink)\n\t\t\t\t// focus and show the tooltip (note: cannot set ref on NcActionLink)\n\t\t\t\tthis.$refs.shareEntrySimple.$refs.actionsComponent.$el.focus()\n\t\t\t\tthis.copySuccess = true\n\t\t\t\tthis.copied = true\n\t\t\t} catch (error) {\n\t\t\t\tthis.copySuccess = false\n\t\t\t\tthis.copied = true\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.copySuccess = false\n\t\t\t\t\tthis.copied = false\n\t\t\t\t}, 4000)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry__internal {\n\t.avatar-external {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInternal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInternal.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInternal.vue?vue&type=style&index=0&id=95f87a66&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInternal.vue?vue&type=style&index=0&id=95f87a66&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntryInternal.vue?vue&type=template&id=95f87a66&scoped=true&\"\nimport script from \"./SharingEntryInternal.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntryInternal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntryInternal.vue?vue&type=style&index=0&id=95f87a66&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"95f87a66\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',[_c('SharingEntrySimple',{ref:\"shareEntrySimple\",staticClass:\"sharing-entry__internal\",attrs:{\"title\":_vm.t('files_sharing', 'Internal link'),\"subtitle\":_vm.internalLinkSubtitle},scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('div',{staticClass:\"avatar-external icon-external-white\"})]},proxy:true}])},[_vm._v(\" \"),_c('NcActionButton',{attrs:{\"aria-label\":_vm.t('files_sharing', 'Copy internal link to clipboard')},on:{\"click\":function($event){$event.preventDefault();return _vm.copyLink.apply(null, arguments)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.copied && _vm.copySuccess)?_c('Check',{attrs:{\"size\":20}}):_c('ClipboardTextMultipleOutline',{attrs:{\"size\":20}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.clipboardTooltip)+\"\\n\\t\\t\")])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport Config from '../services/ConfigService'\n\nconst config = new Config()\nconst passwordSet = 'abcdefgijkmnopqrstwxyzABCDEFGHJKLMNPQRSTWXYZ23456789'\n\n/**\n * Generate a valid policy password or\n * request a valid password if password_policy\n * is enabled\n *\n * @return {string} a valid password\n */\nexport default async function() {\n\t// password policy is enabled, let's request a pass\n\tif (config.passwordPolicy.api && config.passwordPolicy.api.generate) {\n\t\ttry {\n\t\t\tconst request = await axios.get(config.passwordPolicy.api.generate)\n\t\t\tif (request.data.ocs.data.password) {\n\t\t\t\treturn request.data.ocs.data.password\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.info('Error generating password from password_policy', error)\n\t\t}\n\t}\n\n\t// generate password of 10 length based on passwordSet\n\treturn Array(10).fill(0)\n\t\t.reduce((prev, curr) => {\n\t\t\tprev += passwordSet.charAt(Math.floor(Math.random() * passwordSet.length))\n\t\t\treturn prev\n\t\t}, '')\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n// TODO: remove when ie not supported\nimport 'url-search-params-polyfill'\n\nimport { generateOcsUrl } from '@nextcloud/router'\nimport axios from '@nextcloud/axios'\nimport Share from '../models/Share'\n\nconst shareUrl = generateOcsUrl('apps/files_sharing/api/v1/shares')\n\nexport default {\n\tmethods: {\n\t\t/**\n\t\t * Create a new share\n\t\t *\n\t\t * @param {object} data destructuring object\n\t\t * @param {string} data.path path to the file/folder which should be shared\n\t\t * @param {number} data.shareType 0 = user; 1 = group; 3 = public link; 6 = federated cloud share\n\t\t * @param {string} data.shareWith user/group id with which the file should be shared (optional for shareType > 1)\n\t\t * @param {boolean} [data.publicUpload=false] allow public upload to a public shared folder\n\t\t * @param {string} [data.password] password to protect public link Share with\n\t\t * @param {number} [data.permissions=31] 1 = read; 2 = update; 4 = create; 8 = delete; 16 = share; 31 = all (default: 31, for public shares: 1)\n\t\t * @param {boolean} [data.sendPasswordByTalk=false] send the password via a talk conversation\n\t\t * @param {string} [data.expireDate=''] expire the shareautomatically after\n\t\t * @param {string} [data.label=''] custom label\n\t\t * @param {string} [data.attributes=null] Share attributes encoded as json\n\t\t * @return {Share} the new share\n\t\t * @throws {Error}\n\t\t */\n\t\tasync createShare({ path, permissions, shareType, shareWith, publicUpload, password, sendPasswordByTalk, expireDate, label, attributes }) {\n\t\t\ttry {\n\t\t\t\tconst request = await axios.post(shareUrl, { path, permissions, shareType, shareWith, publicUpload, password, sendPasswordByTalk, expireDate, label, attributes })\n\t\t\t\tif (!request?.data?.ocs) {\n\t\t\t\t\tthrow request\n\t\t\t\t}\n\t\t\t\treturn new Share(request.data.ocs.data)\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error while creating share', error)\n\t\t\t\tconst errorMessage = error?.response?.data?.ocs?.meta?.message\n\t\t\t\tOC.Notification.showTemporary(\n\t\t\t\t\terrorMessage ? t('files_sharing', 'Error creating the share: {errorMessage}', { errorMessage }) : t('files_sharing', 'Error creating the share'),\n\t\t\t\t\t{ type: 'error' }\n\t\t\t\t)\n\t\t\t\tthrow error\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Delete a share\n\t\t *\n\t\t * @param {number} id share id\n\t\t * @throws {Error}\n\t\t */\n\t\tasync deleteShare(id) {\n\t\t\ttry {\n\t\t\t\tconst request = await axios.delete(shareUrl + `/${id}`)\n\t\t\t\tif (!request?.data?.ocs) {\n\t\t\t\t\tthrow request\n\t\t\t\t}\n\t\t\t\treturn true\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error while deleting share', error)\n\t\t\t\tconst errorMessage = error?.response?.data?.ocs?.meta?.message\n\t\t\t\tOC.Notification.showTemporary(\n\t\t\t\t\terrorMessage ? t('files_sharing', 'Error deleting the share: {errorMessage}', { errorMessage }) : t('files_sharing', 'Error deleting the share'),\n\t\t\t\t\t{ type: 'error' }\n\t\t\t\t)\n\t\t\t\tthrow error\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Update a share\n\t\t *\n\t\t * @param {number} id share id\n\t\t * @param {object} properties key-value object of the properties to update\n\t\t */\n\t\tasync updateShare(id, properties) {\n\t\t\ttry {\n\t\t\t\tconst request = await axios.put(shareUrl + `/${id}`, properties)\n\t\t\t\tif (!request?.data?.ocs) {\n\t\t\t\t\tthrow request\n\t\t\t\t} else {\n\t\t\t\t\treturn request.data.ocs.data\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error while updating share', error)\n\t\t\t\tif (error.response.status !== 400) {\n\t\t\t\t\tconst errorMessage = error?.response?.data?.ocs?.meta?.message\n\t\t\t\t\tOC.Notification.showTemporary(\n\t\t\t\t\t\terrorMessage ? t('files_sharing', 'Error updating the share: {errorMessage}', { errorMessage }) : t('files_sharing', 'Error updating the share'),\n\t\t\t\t\t\t{ type: 'error' }\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\tconst message = error.response.data.ocs.meta.message\n\t\t\t\tthrow new Error(message)\n\t\t\t}\n\t\t},\n\t},\n}\n","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"sharing-search\">\n\t\t<label for=\"sharing-search-input\">{{ t('files_sharing', 'Search for share recipients') }}</label>\n\t\t<NcMultiselect ref=\"multiselect\"\n\t\t\tid=\"sharing-search-input\"\n\t\t\tclass=\"sharing-search__input\"\n\t\t\t:clear-on-select=\"true\"\n\t\t\t:disabled=\"!canReshare\"\n\t\t\t:hide-selected=\"true\"\n\t\t\t:internal-search=\"false\"\n\t\t\t:loading=\"loading\"\n\t\t\t:options=\"options\"\n\t\t\t:placeholder=\"inputPlaceholder\"\n\t\t\t:preselect-first=\"true\"\n\t\t\t:preserve-search=\"true\"\n\t\t\t:searchable=\"true\"\n\t\t\t:user-select=\"true\"\n\t\t\topen-direction=\"below\"\n\t\t\tlabel=\"displayName\"\n\t\t\ttrack-by=\"id\"\n\t\t\t@search-change=\"asyncFind\"\n\t\t\t@select=\"addShare\">\n\t\t\t<template #noOptions>\n\t\t\t\t{{ t('files_sharing', 'No recommendations. Start typing.') }}\n\t\t\t</template>\n\t\t\t<template #noResult>\n\t\t\t\t{{ noResultText }}\n\t\t\t</template>\n\t\t</NcMultiselect>\n\t</div>\n</template>\n\n<script>\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport axios from '@nextcloud/axios'\nimport debounce from 'debounce'\nimport NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect'\n\nimport Config from '../services/ConfigService'\nimport GeneratePassword from '../utils/GeneratePassword'\nimport Share from '../models/Share'\nimport ShareRequests from '../mixins/ShareRequests'\nimport ShareTypes from '../mixins/ShareTypes'\n\nexport default {\n\tname: 'SharingInput',\n\n\tcomponents: {\n\t\tNcMultiselect,\n\t},\n\n\tmixins: [ShareTypes, ShareRequests],\n\n\tprops: {\n\t\tshares: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\trequired: true,\n\t\t},\n\t\tlinkShares: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\trequired: true,\n\t\t},\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\treshare: {\n\t\t\ttype: Share,\n\t\t\tdefault: null,\n\t\t},\n\t\tcanReshare: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tconfig: new Config(),\n\t\t\tloading: false,\n\t\t\tquery: '',\n\t\t\trecommendations: [],\n\t\t\tShareSearch: OCA.Sharing.ShareSearch.state,\n\t\t\tsuggestions: [],\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Implement ShareSearch\n\t\t * allows external appas to inject new\n\t\t * results into the autocomplete dropdown\n\t\t * Used for the guests app\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\texternalResults() {\n\t\t\treturn this.ShareSearch.results\n\t\t},\n\t\tinputPlaceholder() {\n\t\t\tconst allowRemoteSharing = this.config.isRemoteShareAllowed\n\n\t\t\tif (!this.canReshare) {\n\t\t\t\treturn t('files_sharing', 'Resharing is not allowed')\n\t\t\t}\n\t\t\t// We can always search with email addresses for users too\n\t\t\tif (!allowRemoteSharing) {\n\t\t\t\treturn t('files_sharing', 'Name or email …')\n\t\t\t}\n\n\t\t\treturn t('files_sharing', 'Name, email, or Federated Cloud ID …')\n\t\t},\n\n\t\tisValidQuery() {\n\t\t\treturn this.query && this.query.trim() !== '' && this.query.length > this.config.minSearchStringLength\n\t\t},\n\n\t\toptions() {\n\t\t\tif (this.isValidQuery) {\n\t\t\t\treturn this.suggestions\n\t\t\t}\n\t\t\treturn this.recommendations\n\t\t},\n\n\t\tnoResultText() {\n\t\t\tif (this.loading) {\n\t\t\t\treturn t('files_sharing', 'Searching …')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'No elements found.')\n\t\t},\n\t},\n\n\tmounted() {\n\t\tthis.getRecommendations()\n\t},\n\n\tmethods: {\n\t\tasync asyncFind(query, id) {\n\t\t\t// save current query to check if we display\n\t\t\t// recommendations or search results\n\t\t\tthis.query = query.trim()\n\t\t\tif (this.isValidQuery) {\n\t\t\t\t// start loading now to have proper ux feedback\n\t\t\t\t// during the debounce\n\t\t\t\tthis.loading = true\n\t\t\t\tawait this.debounceGetSuggestions(query)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Get suggestions\n\t\t *\n\t\t * @param {string} search the search query\n\t\t * @param {boolean} [lookup=false] search on lookup server\n\t\t */\n\t\tasync getSuggestions(search, lookup = false) {\n\t\t\tthis.loading = true\n\n\t\t\tif (OC.getCapabilities().files_sharing.sharee.query_lookup_default === true) {\n\t\t\t\tlookup = true\n\t\t\t}\n\n\t\t\tconst shareType = [\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_USER,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_GROUP,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_REMOTE,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_CIRCLE,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_ROOM,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_GUEST,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_DECK,\n\t\t\t]\n\n\t\t\tif (OC.getCapabilities().files_sharing.public.enabled === true) {\n\t\t\t\tshareType.push(this.SHARE_TYPES.SHARE_TYPE_EMAIL)\n\t\t\t}\n\n\t\t\tlet request = null\n\t\t\ttry {\n\t\t\t\trequest = await axios.get(generateOcsUrl('apps/files_sharing/api/v1/sharees'), {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat: 'json',\n\t\t\t\t\t\titemType: this.fileInfo.type === 'dir' ? 'folder' : 'file',\n\t\t\t\t\t\tsearch,\n\t\t\t\t\t\tlookup,\n\t\t\t\t\t\tperPage: this.config.maxAutocompleteResults,\n\t\t\t\t\t\tshareType,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error fetching suggestions', error)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst data = request.data.ocs.data\n\t\t\tconst exact = request.data.ocs.data.exact\n\t\t\tdata.exact = [] // removing exact from general results\n\n\t\t\t// flatten array of arrays\n\t\t\tconst rawExactSuggestions = Object.values(exact).reduce((arr, elem) => arr.concat(elem), [])\n\t\t\tconst rawSuggestions = Object.values(data).reduce((arr, elem) => arr.concat(elem), [])\n\n\t\t\t// remove invalid data and format to user-select layout\n\t\t\tconst exactSuggestions = this.filterOutExistingShares(rawExactSuggestions)\n\t\t\t\t.map(share => this.formatForMultiselect(share))\n\t\t\t\t// sort by type so we can get user&groups first...\n\t\t\t\t.sort((a, b) => a.shareType - b.shareType)\n\t\t\tconst suggestions = this.filterOutExistingShares(rawSuggestions)\n\t\t\t\t.map(share => this.formatForMultiselect(share))\n\t\t\t\t// sort by type so we can get user&groups first...\n\t\t\t\t.sort((a, b) => a.shareType - b.shareType)\n\n\t\t\t// lookup clickable entry\n\t\t\t// show if enabled and not already requested\n\t\t\tconst lookupEntry = []\n\t\t\tif (data.lookupEnabled && !lookup) {\n\t\t\t\tlookupEntry.push({\n\t\t\t\t\tid: 'global-lookup',\n\t\t\t\t\tisNoUser: true,\n\t\t\t\t\tdisplayName: t('files_sharing', 'Search globally'),\n\t\t\t\t\tlookup: true,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\t// if there is a condition specified, filter it\n\t\t\tconst externalResults = this.externalResults.filter(result => !result.condition || result.condition(this))\n\n\t\t\tconst allSuggestions = exactSuggestions.concat(suggestions).concat(externalResults).concat(lookupEntry)\n\n\t\t\t// Count occurrences of display names in order to provide a distinguishable description if needed\n\t\t\tconst nameCounts = allSuggestions.reduce((nameCounts, result) => {\n\t\t\t\tif (!result.displayName) {\n\t\t\t\t\treturn nameCounts\n\t\t\t\t}\n\t\t\t\tif (!nameCounts[result.displayName]) {\n\t\t\t\t\tnameCounts[result.displayName] = 0\n\t\t\t\t}\n\t\t\t\tnameCounts[result.displayName]++\n\t\t\t\treturn nameCounts\n\t\t\t}, {})\n\n\t\t\tthis.suggestions = allSuggestions.map(item => {\n\t\t\t\t// Make sure that items with duplicate displayName get the shareWith applied as a description\n\t\t\t\tif (nameCounts[item.displayName] > 1 && !item.desc) {\n\t\t\t\t\treturn { ...item, desc: item.shareWithDisplayNameUnique }\n\t\t\t\t}\n\t\t\t\treturn item\n\t\t\t})\n\n\t\t\tthis.loading = false\n\t\t\tconsole.info('suggestions', this.suggestions)\n\t\t},\n\n\t\t/**\n\t\t * Debounce getSuggestions\n\t\t *\n\t\t * @param {...*} args the arguments\n\t\t */\n\t\tdebounceGetSuggestions: debounce(function(...args) {\n\t\t\tthis.getSuggestions(...args)\n\t\t}, 300),\n\n\t\t/**\n\t\t * Get the sharing recommendations\n\t\t */\n\t\tasync getRecommendations() {\n\t\t\tthis.loading = true\n\n\t\t\tlet request = null\n\t\t\ttry {\n\t\t\t\trequest = await axios.get(generateOcsUrl('apps/files_sharing/api/v1/sharees_recommended'), {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat: 'json',\n\t\t\t\t\t\titemType: this.fileInfo.type,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error fetching recommendations', error)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Add external results from the OCA.Sharing.ShareSearch api\n\t\t\tconst externalResults = this.externalResults.filter(result => !result.condition || result.condition(this))\n\n\t\t\t// flatten array of arrays\n\t\t\tconst rawRecommendations = Object.values(request.data.ocs.data.exact)\n\t\t\t\t.reduce((arr, elem) => arr.concat(elem), [])\n\n\t\t\t// remove invalid data and format to user-select layout\n\t\t\tthis.recommendations = this.filterOutExistingShares(rawRecommendations)\n\t\t\t\t.map(share => this.formatForMultiselect(share))\n\t\t\t\t.concat(externalResults)\n\n\t\t\tthis.loading = false\n\t\t\tconsole.info('recommendations', this.recommendations)\n\t\t},\n\n\t\t/**\n\t\t * Filter out existing shares from\n\t\t * the provided shares search results\n\t\t *\n\t\t * @param {object[]} shares the array of shares object\n\t\t * @return {object[]}\n\t\t */\n\t\tfilterOutExistingShares(shares) {\n\t\t\treturn shares.reduce((arr, share) => {\n\t\t\t\t// only check proper objects\n\t\t\t\tif (typeof share !== 'object') {\n\t\t\t\t\treturn arr\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tif (share.value.shareType === this.SHARE_TYPES.SHARE_TYPE_USER) {\n\t\t\t\t\t\t// filter out current user\n\t\t\t\t\t\tif (share.value.shareWith === getCurrentUser().uid) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// filter out the owner of the share\n\t\t\t\t\t\tif (this.reshare && share.value.shareWith === this.reshare.owner) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// filter out existing mail shares\n\t\t\t\t\tif (share.value.shareType === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\t\t\tconst emails = this.linkShares.map(elem => elem.shareWith)\n\t\t\t\t\t\tif (emails.indexOf(share.value.shareWith.trim()) !== -1) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\t\t\t\t\t} else { // filter out existing shares\n\t\t\t\t\t\t// creating an object of uid => type\n\t\t\t\t\t\tconst sharesObj = this.shares.reduce((obj, elem) => {\n\t\t\t\t\t\t\tobj[elem.shareWith] = elem.type\n\t\t\t\t\t\t\treturn obj\n\t\t\t\t\t\t}, {})\n\n\t\t\t\t\t\t// if shareWith is the same and the share type too, ignore it\n\t\t\t\t\t\tconst key = share.value.shareWith.trim()\n\t\t\t\t\t\tif (key in sharesObj\n\t\t\t\t\t\t\t&& sharesObj[key] === share.value.shareType) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// ALL GOOD\n\t\t\t\t\t// let's add the suggestion\n\t\t\t\t\tarr.push(share)\n\t\t\t\t} catch {\n\t\t\t\t\treturn arr\n\t\t\t\t}\n\t\t\t\treturn arr\n\t\t\t}, [])\n\t\t},\n\n\t\t/**\n\t\t * Get the icon based on the share type\n\t\t *\n\t\t * @param {number} type the share type\n\t\t * @return {string} the icon class\n\t\t */\n\t\tshareTypeToIcon(type) {\n\t\t\tswitch (type) {\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_GUEST:\n\t\t\t\t// default is a user, other icons are here to differentiate\n\t\t\t\t// themselves from it, so let's not display the user icon\n\t\t\t\t// case this.SHARE_TYPES.SHARE_TYPE_REMOTE:\n\t\t\t\t// case this.SHARE_TYPES.SHARE_TYPE_USER:\n\t\t\t\treturn 'icon-user'\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP:\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_GROUP:\n\t\t\t\treturn 'icon-group'\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_EMAIL:\n\t\t\t\treturn 'icon-mail'\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_CIRCLE:\n\t\t\t\treturn 'icon-circle'\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_ROOM:\n\t\t\t\treturn 'icon-room'\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_DECK:\n\t\t\t\treturn 'icon-deck'\n\n\t\t\tdefault:\n\t\t\t\treturn ''\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Format shares for the multiselect options\n\t\t *\n\t\t * @param {object} result select entry item\n\t\t * @return {object}\n\t\t */\n\t\tformatForMultiselect(result) {\n\t\t\tlet subtitle\n\t\t\tif (result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_USER && this.config.shouldAlwaysShowUnique) {\n\t\t\t\tsubtitle = result.shareWithDisplayNameUnique ?? ''\n\t\t\t} else if ((result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_REMOTE\n\t\t\t\t\t|| result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP\n\t\t\t) && result.value.server) {\n\t\t\t\tsubtitle = t('files_sharing', 'on {server}', { server: result.value.server })\n\t\t\t} else if (result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\tsubtitle = result.value.shareWith\n\t\t\t} else {\n\t\t\t\tsubtitle = result.shareWithDescription ?? ''\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tid: `${result.value.shareType}-${result.value.shareWith}`,\n\t\t\t\tshareWith: result.value.shareWith,\n\t\t\t\tshareType: result.value.shareType,\n\t\t\t\tuser: result.uuid || result.value.shareWith,\n\t\t\t\tisNoUser: result.value.shareType !== this.SHARE_TYPES.SHARE_TYPE_USER,\n\t\t\t\tdisplayName: result.name || result.label,\n\t\t\t\tsubtitle,\n\t\t\t\tshareWithDisplayNameUnique: result.shareWithDisplayNameUnique || '',\n\t\t\t\ticon: this.shareTypeToIcon(result.value.shareType),\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Process the new share request\n\t\t *\n\t\t * @param {object} value the multiselect option\n\t\t */\n\t\tasync addShare(value) {\n\t\t\tif (value.lookup) {\n\t\t\t\tawait this.getSuggestions(this.query, true)\n\n\t\t\t\t// focus the input again\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tthis.$refs.multiselect.$el.querySelector('.multiselect__input').focus()\n\t\t\t\t})\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\t// handle externalResults from OCA.Sharing.ShareSearch\n\t\t\tif (value.handler) {\n\t\t\t\tconst share = await value.handler(this)\n\t\t\t\tthis.$emit('add:share', new Share(share))\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\tthis.loading = true\n\t\t\tconsole.debug('Adding a new share from the input for', value)\n\t\t\ttry {\n\t\t\t\tlet password = null\n\n\t\t\t\tif (this.config.enforcePasswordForPublicLink\n\t\t\t\t\t&& value.shareType === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\t\tpassword = await GeneratePassword()\n\t\t\t\t}\n\n\t\t\t\tconst path = (this.fileInfo.path + '/' + this.fileInfo.name).replace('//', '/')\n\t\t\t\tconst share = await this.createShare({\n\t\t\t\t\tpath,\n\t\t\t\t\tshareType: value.shareType,\n\t\t\t\t\tshareWith: value.shareWith,\n\t\t\t\t\tpassword,\n\t\t\t\t\tpermissions: this.fileInfo.sharePermissions & OC.getCapabilities().files_sharing.default_permissions,\n\t\t\t\t\tattributes: JSON.stringify(this.fileInfo.shareAttributes),\n\t\t\t\t})\n\n\t\t\t\t// If we had a password, we need to show it to the user as it was generated\n\t\t\t\tif (password) {\n\t\t\t\t\tshare.newPassword = password\n\t\t\t\t\t// Wait for the newly added share\n\t\t\t\t\tconst component = await new Promise(resolve => {\n\t\t\t\t\t\tthis.$emit('add:share', share, resolve)\n\t\t\t\t\t})\n\n\t\t\t\t\t// open the menu on the\n\t\t\t\t\t// freshly created share component\n\t\t\t\t\tcomponent.open = true\n\t\t\t\t} else {\n\t\t\t\t\t// Else we just add it normally\n\t\t\t\t\tthis.$emit('add:share', share)\n\t\t\t\t}\n\n\t\t\t\t// reset the search string when done\n\t\t\t\t// FIXME: https://github.com/shentao/vue-multiselect/issues/633\n\t\t\t\tif (this.$refs.multiselect?.$refs?.VueMultiselect?.search) {\n\t\t\t\t\tthis.$refs.multiselect.$refs.VueMultiselect.search = ''\n\t\t\t\t}\n\n\t\t\t\tawait this.getRecommendations()\n\t\t\t} catch (error) {\n\t\t\t\t// focus back if any error\n\t\t\t\tconst input = this.$refs.multiselect.$el.querySelector('input')\n\t\t\t\tif (input) {\n\t\t\t\t\tinput.focus()\n\t\t\t\t}\n\t\t\t\tthis.query = value.shareWith\n\t\t\t\tconsole.error('Error while adding new share', error)\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\n.sharing-search {\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin-bottom: 4px;\n\n\tlabel[for=\"sharing-search-input\"] {\n\t\tmargin-bottom: 2px;\n\t}\n\n\t&__input {\n\t\twidth: 100%;\n\t\tmargin: 10px 0;\n\n\t\t// properly style the lookup entry\n\t\t.multiselect__option {\n\t\t\tspan[lookup] {\n\t\t\t\t.avatardiv {\n\t\t\t\t\tbackground-image: var(--icon-search-white);\n\t\t\t\t\tbackground-repeat: no-repeat;\n\t\t\t\t\tbackground-position: center;\n\t\t\t\t\tbackground-color: var(--color-text-maxcontrast) !important;\n\t\t\t\t\tdiv {\n\t\t\t\t\t\tdisplay: none;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.vue?vue&type=style&index=0&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.vue?vue&type=style&index=0&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingInput.vue?vue&type=template&id=16a26106&\"\nimport script from \"./SharingInput.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingInput.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"sharing-search\"},[_c('label',{attrs:{\"for\":\"sharing-search-input\"}},[_vm._v(_vm._s(_vm.t('files_sharing', 'Search for share recipients')))]),_vm._v(\" \"),_c('NcMultiselect',{ref:\"multiselect\",staticClass:\"sharing-search__input\",attrs:{\"id\":\"sharing-search-input\",\"clear-on-select\":true,\"disabled\":!_vm.canReshare,\"hide-selected\":true,\"internal-search\":false,\"loading\":_vm.loading,\"options\":_vm.options,\"placeholder\":_vm.inputPlaceholder,\"preselect-first\":true,\"preserve-search\":true,\"searchable\":true,\"user-select\":true,\"open-direction\":\"below\",\"label\":\"displayName\",\"track-by\":\"id\"},on:{\"search-change\":_vm.asyncFind,\"select\":_vm.addShare},scopedSlots:_vm._u([{key:\"noOptions\",fn:function(){return [_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'No recommendations. Start typing.'))+\"\\n\\t\\t\")]},proxy:true},{key:\"noResult\",fn:function(){return [_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.noResultText)+\"\\n\\t\\t\")]},proxy:true}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Gary Kim <gary@garykim.dev>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { showSuccess } from '@nextcloud/dialogs'\nimport { getCurrentUser } from '@nextcloud/auth'\n// eslint-disable-next-line import/no-unresolved, node/no-missing-import\nimport PQueue from 'p-queue'\nimport debounce from 'debounce'\n\nimport Share from '../models/Share.js'\nimport SharesRequests from './ShareRequests.js'\nimport ShareTypes from './ShareTypes.js'\nimport Config from '../services/ConfigService.js'\n\nexport default {\n\tmixins: [SharesRequests, ShareTypes],\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\tshare: {\n\t\t\ttype: Share,\n\t\t\tdefault: null,\n\t\t},\n\t\tisUnique: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tconfig: new Config(),\n\n\t\t\t// errors helpers\n\t\t\terrors: {},\n\n\t\t\t// component status toggles\n\t\t\tloading: false,\n\t\t\tsaving: false,\n\t\t\topen: false,\n\n\t\t\t// concurrency management queue\n\t\t\t// we want one queue per share\n\t\t\tupdateQueue: new PQueue({ concurrency: 1 }),\n\n\t\t\t/**\n\t\t\t * ! This allow vue to make the Share class state reactive\n\t\t\t * ! do not remove it ot you'll lose all reactivity here\n\t\t\t */\n\t\t\treactiveState: this.share?.state,\n\t\t}\n\t},\n\n\tcomputed: {\n\n\t\t/**\n\t\t * Does the current share have a note\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasNote: {\n\t\t\tget() {\n\t\t\t\treturn this.share.note !== ''\n\t\t\t},\n\t\t\tset(enabled) {\n\t\t\t\tthis.share.note = enabled\n\t\t\t\t\t? null // enabled but user did not changed the content yet\n\t\t\t\t\t: '' // empty = no note = disabled\n\t\t\t},\n\t\t},\n\n\t\tdateTomorrow() {\n\t\t\treturn new Date(new Date().setDate(new Date().getDate() + 1))\n\t\t},\n\n\t\t// Datepicker language\n\t\tlang() {\n\t\t\tconst weekdaysShort = window.dayNamesShort\n\t\t\t\t? window.dayNamesShort // provided by nextcloud\n\t\t\t\t: ['Sun.', 'Mon.', 'Tue.', 'Wed.', 'Thu.', 'Fri.', 'Sat.']\n\t\t\tconst monthsShort = window.monthNamesShort\n\t\t\t\t? window.monthNamesShort // provided by nextcloud\n\t\t\t\t: ['Jan.', 'Feb.', 'Mar.', 'Apr.', 'May.', 'Jun.', 'Jul.', 'Aug.', 'Sep.', 'Oct.', 'Nov.', 'Dec.']\n\t\t\tconst firstDayOfWeek = window.firstDay ? window.firstDay : 0\n\n\t\t\treturn {\n\t\t\t\tformatLocale: {\n\t\t\t\t\tfirstDayOfWeek,\n\t\t\t\t\tmonthsShort,\n\t\t\t\t\tweekdaysMin: weekdaysShort,\n\t\t\t\t\tweekdaysShort,\n\t\t\t\t},\n\t\t\t\tmonthFormat: 'MMM',\n\t\t\t}\n\t\t},\n\n\t\tisShareOwner() {\n\t\t\treturn this.share && this.share.owner === getCurrentUser().uid\n\t\t},\n\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Check if a share is valid before\n\t\t * firing the request\n\t\t *\n\t\t * @param {Share} share the share to check\n\t\t * @return {boolean}\n\t\t */\n\t\tcheckShare(share) {\n\t\t\tif (share.password) {\n\t\t\t\tif (typeof share.password !== 'string' || share.password.trim() === '') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (share.expirationDate) {\n\t\t\t\tconst date = share.expirationDate\n\t\t\t\tif (!date.isValid()) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\n\t\t/**\n\t\t * @param {string} date a date with YYYY-MM-DD format\n\t\t * @return {Date} date\n\t\t */\n\t\tparseDateString(date) {\n\t\t\tif (!date) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst regex = /([0-9]{4}-[0-9]{2}-[0-9]{2})/i\n\t\t\treturn new Date(date.match(regex)?.pop())\n\t\t},\n\n\t\t/**\n\t\t * @param {Date} date\n\t\t * @return {string} date a date with YYYY-MM-DD format\n\t\t */\n\t\tformatDateToString(date) {\n\t\t\t// Force utc time. Drop time information to be timezone-less\n\t\t\tconst utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()))\n\t\t\t// Format to YYYY-MM-DD\n\t\t\treturn utcDate.toISOString().split('T')[0]\n\t\t},\n\n\t\t/**\n\t\t * Save given value to expireDate and trigger queueUpdate\n\t\t *\n\t\t * @param {Date} date\n\t\t */\n\t\tonExpirationChange(date) {\n\t\t\tthis.share.expireDate = this.formatDateToString(date)\n\t\t\tthis.queueUpdate('expireDate')\n\t\t},\n\n\t\t/**\n\t\t * Uncheck expire date\n\t\t * We need this method because @update:checked\n\t\t * is ran simultaneously as @uncheck, so\n\t\t * so we cannot ensure data is up-to-date\n\t\t */\n\t\tonExpirationDisable() {\n\t\t\tthis.share.expireDate = ''\n\t\t\tthis.queueUpdate('expireDate')\n\t\t},\n\n\t\t/**\n\t\t * Note changed, let's save it to a different key\n\t\t *\n\t\t * @param {string} note the share note\n\t\t */\n\t\tonNoteChange(note) {\n\t\t\tthis.$set(this.share, 'newNote', note.trim())\n\t\t},\n\n\t\t/**\n\t\t * When the note change, we trim, save and dispatch\n\t\t *\n\t\t */\n\t\tonNoteSubmit() {\n\t\t\tif (this.share.newNote) {\n\t\t\t\tthis.share.note = this.share.newNote\n\t\t\t\tthis.$delete(this.share, 'newNote')\n\t\t\t\tshowSuccess(t('files_sharing', 'Share note saved'))\n\t\t\t\tthis.queueUpdate('note')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Delete share button handler\n\t\t */\n\t\tasync onDelete() {\n\t\t\ttry {\n\t\t\t\tthis.loading = true\n\t\t\t\tthis.open = false\n\t\t\t\tawait this.deleteShare(this.share.id)\n\t\t\t\tconsole.debug('Share deleted', this.share.id)\n\t\t\t\tconst message = this.share.itemType === 'file'\n\t\t\t\t\t? t('files_sharing', 'File \"{path}\" has been unshared', { path: this.share.path })\n\t\t\t\t\t: t('files_sharing', 'Folder \"{path}\" has been unshared', { path: this.share.path })\n\t\t\t\tshowSuccess(message)\n\t\t\t\tthis.$emit('remove:share', this.share)\n\t\t\t} catch (error) {\n\t\t\t\t// re-open menu if error\n\t\t\t\tthis.open = true\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Send an update of the share to the queue\n\t\t *\n\t\t * @param {Array<string>} propertyNames the properties to sync\n\t\t */\n\t\tqueueUpdate(...propertyNames) {\n\t\t\tif (propertyNames.length === 0) {\n\t\t\t\t// Nothing to update\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (this.share.id) {\n\t\t\t\tconst properties = {}\n\t\t\t\t// force value to string because that is what our\n\t\t\t\t// share api controller accepts\n\t\t\t\tpropertyNames.forEach(name => {\n\t\t\t\t\tif ((typeof this.share[name]) === 'object') {\n\t\t\t\t\t\tproperties[name] = JSON.stringify(this.share[name])\n\t\t\t\t\t} else {\n\t\t\t\t\t\tproperties[name] = this.share[name].toString()\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t\tthis.updateQueue.add(async () => {\n\t\t\t\t\tthis.saving = true\n\t\t\t\t\tthis.errors = {}\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst updatedShare = await this.updateShare(this.share.id, properties)\n\n\t\t\t\t\t\tif (propertyNames.indexOf('password') >= 0) {\n\t\t\t\t\t\t\t// reset password state after sync\n\t\t\t\t\t\t\tthis.$delete(this.share, 'newPassword')\n\n\t\t\t\t\t\t\t// updates password expiration time after sync\n\t\t\t\t\t\t\tthis.share.passwordExpirationTime = updatedShare.password_expiration_time\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// clear any previous errors\n\t\t\t\t\t\tthis.$delete(this.errors, propertyNames[0])\n\n\t\t\t\t\t} catch ({ message }) {\n\t\t\t\t\t\tif (message && message !== '') {\n\t\t\t\t\t\t\tthis.onSyncError(propertyNames[0], message)\n\t\t\t\t\t\t}\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tthis.saving = false\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// This share does not exists on the server yet\n\t\t\tconsole.debug('Updated local share', this.share)\n\t\t},\n\n\t\t/**\n\t\t * Manage sync errors\n\t\t *\n\t\t * @param {string} property the errored property, e.g. 'password'\n\t\t * @param {string} message the error message\n\t\t */\n\t\tonSyncError(property, message) {\n\t\t\t// re-open menu if closed\n\t\t\tthis.open = true\n\t\t\tswitch (property) {\n\t\t\tcase 'password':\n\t\t\tcase 'pending':\n\t\t\tcase 'expireDate':\n\t\t\tcase 'label':\n\t\t\tcase 'note': {\n\t\t\t\t// show error\n\t\t\t\tthis.$set(this.errors, property, message)\n\n\t\t\t\tlet propertyEl = this.$refs[property]\n\t\t\t\tif (propertyEl) {\n\t\t\t\t\tif (propertyEl.$el) {\n\t\t\t\t\t\tpropertyEl = propertyEl.$el\n\t\t\t\t\t}\n\t\t\t\t\t// focus if there is a focusable action element\n\t\t\t\t\tconst focusable = propertyEl.querySelector('.focusable')\n\t\t\t\t\tif (focusable) {\n\t\t\t\t\t\tfocusable.focus()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'sendPasswordByTalk': {\n\t\t\t\t// show error\n\t\t\t\tthis.$set(this.errors, property, message)\n\n\t\t\t\t// Restore previous state\n\t\t\t\tthis.share.sendPasswordByTalk = !this.share.sendPasswordByTalk\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Debounce queueUpdate to avoid requests spamming\n\t\t * more importantly for text data\n\t\t *\n\t\t * @param {string} property the property to sync\n\t\t */\n\t\tdebounceQueueUpdate: debounce(function(property) {\n\t\t\tthis.queueUpdate(property)\n\t\t}, 500),\n\t},\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInherited.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInherited.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<SharingEntrySimple :key=\"share.id\"\n\t\tclass=\"sharing-entry__inherited\"\n\t\t:title=\"share.shareWithDisplayName\">\n\t\t<template #avatar>\n\t\t\t<NcAvatar :user=\"share.shareWith\"\n\t\t\t\t:display-name=\"share.shareWithDisplayName\"\n\t\t\t\tclass=\"sharing-entry__avatar\"\n\t\t\t\ttooltip-message=\"\" />\n\t\t</template>\n\t\t<NcActionText icon=\"icon-user\">\n\t\t\t{{ t('files_sharing', 'Added by {initiator}', { initiator: share.ownerDisplayName }) }}\n\t\t</NcActionText>\n\t\t<NcActionLink v-if=\"share.viaPath && share.viaFileid\"\n\t\t\ticon=\"icon-folder\"\n\t\t\t:href=\"viaFileTargetUrl\">\n\t\t\t{{ t('files_sharing', 'Via “{folder}”', {folder: viaFolderName} ) }}\n\t\t</NcActionLink>\n\t\t<NcActionButton v-if=\"share.canDelete\"\n\t\t\ticon=\"icon-close\"\n\t\t\t@click.prevent=\"onDelete\">\n\t\t\t{{ t('files_sharing', 'Unshare') }}\n\t\t</NcActionButton>\n\t</SharingEntrySimple>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { basename } from '@nextcloud/paths'\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar'\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton'\nimport NcActionLink from '@nextcloud/vue/dist/Components/NcActionLink'\nimport NcActionText from '@nextcloud/vue/dist/Components/NcActionText'\n\n// eslint-disable-next-line no-unused-vars\nimport Share from '../models/Share'\nimport SharesMixin from '../mixins/SharesMixin'\nimport SharingEntrySimple from '../components/SharingEntrySimple'\n\nexport default {\n\tname: 'SharingEntryInherited',\n\n\tcomponents: {\n\t\tNcActionButton,\n\t\tNcActionLink,\n\t\tNcActionText,\n\t\tNcAvatar,\n\t\tSharingEntrySimple,\n\t},\n\n\tmixins: [SharesMixin],\n\n\tprops: {\n\t\tshare: {\n\t\t\ttype: Share,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tviaFileTargetUrl() {\n\t\t\treturn generateUrl('/f/{fileid}', {\n\t\t\t\tfileid: this.share.viaFileid,\n\t\t\t})\n\t\t},\n\n\t\tviaFolderName() {\n\t\t\treturn basename(this.share.viaPath)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto;\n\t}\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInherited.vue?vue&type=style&index=0&id=2bbe78b4&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInherited.vue?vue&type=style&index=0&id=2bbe78b4&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntryInherited.vue?vue&type=template&id=2bbe78b4&scoped=true&\"\nimport script from \"./SharingEntryInherited.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntryInherited.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntryInherited.vue?vue&type=style&index=0&id=2bbe78b4&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2bbe78b4\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('SharingEntrySimple',{key:_vm.share.id,staticClass:\"sharing-entry__inherited\",attrs:{\"title\":_vm.share.shareWithDisplayName},scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('NcAvatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"user\":_vm.share.shareWith,\"display-name\":_vm.share.shareWithDisplayName,\"tooltip-message\":\"\"}})]},proxy:true}])},[_vm._v(\" \"),_c('NcActionText',{attrs:{\"icon\":\"icon-user\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Added by {initiator}', { initiator: _vm.share.ownerDisplayName }))+\"\\n\\t\")]),_vm._v(\" \"),(_vm.share.viaPath && _vm.share.viaFileid)?_c('NcActionLink',{attrs:{\"icon\":\"icon-folder\",\"href\":_vm.viaFileTargetUrl}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Via “{folder}”', {folder: _vm.viaFolderName} ))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.share.canDelete)?_c('NcActionButton',{attrs:{\"icon\":\"icon-close\"},on:{\"click\":function($event){$event.preventDefault();return _vm.onDelete.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Unshare'))+\"\\n\\t\")]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<ul id=\"sharing-inherited-shares\">\n\t\t<!-- Main collapsible entry -->\n\t\t<SharingEntrySimple class=\"sharing-entry__inherited\"\n\t\t\t:title=\"mainTitle\"\n\t\t\t:subtitle=\"subTitle\"\n\t\t\t:aria-expanded=\"showInheritedShares\">\n\t\t\t<template #avatar>\n\t\t\t\t<div class=\"avatar-shared icon-more-white\" />\n\t\t\t</template>\n\t\t\t<NcActionButton :icon=\"showInheritedSharesIcon\"\n\t\t\t\t:aria-label=\"mainTitle\"\n\t\t\t\t@click.prevent.stop=\"toggleInheritedShares\">\n\t\t\t\t{{ toggleTooltip }}\n\t\t\t</NcActionButton>\n\t\t</SharingEntrySimple>\n\n\t\t<!-- Inherited shares list -->\n\t\t<SharingEntryInherited v-for=\"share in shares\"\n\t\t\t:key=\"share.id\"\n\t\t\t:file-info=\"fileInfo\"\n\t\t\t:share=\"share\" />\n\t</ul>\n</template>\n\n<script>\nimport { generateOcsUrl } from '@nextcloud/router'\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton'\nimport axios from '@nextcloud/axios'\n\nimport Share from '../models/Share'\nimport SharingEntryInherited from '../components/SharingEntryInherited'\nimport SharingEntrySimple from '../components/SharingEntrySimple'\n\nexport default {\n\tname: 'SharingInherited',\n\n\tcomponents: {\n\t\tNcActionButton,\n\t\tSharingEntryInherited,\n\t\tSharingEntrySimple,\n\t},\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloaded: false,\n\t\t\tloading: false,\n\t\t\tshowInheritedShares: false,\n\t\t\tshares: [],\n\t\t}\n\t},\n\tcomputed: {\n\t\tshowInheritedSharesIcon() {\n\t\t\tif (this.loading) {\n\t\t\t\treturn 'icon-loading-small'\n\t\t\t}\n\t\t\tif (this.showInheritedShares) {\n\t\t\t\treturn 'icon-triangle-n'\n\t\t\t}\n\t\t\treturn 'icon-triangle-s'\n\t\t},\n\t\tmainTitle() {\n\t\t\treturn t('files_sharing', 'Others with access')\n\t\t},\n\t\tsubTitle() {\n\t\t\treturn (this.showInheritedShares && this.shares.length === 0)\n\t\t\t\t? t('files_sharing', 'No other users with access found')\n\t\t\t\t: ''\n\t\t},\n\t\ttoggleTooltip() {\n\t\t\treturn this.fileInfo.type === 'dir'\n\t\t\t\t? t('files_sharing', 'Toggle list of others with access to this directory')\n\t\t\t\t: t('files_sharing', 'Toggle list of others with access to this file')\n\t\t},\n\t\tfullPath() {\n\t\t\tconst path = `${this.fileInfo.path}/${this.fileInfo.name}`\n\t\t\treturn path.replace('//', '/')\n\t\t},\n\t},\n\twatch: {\n\t\tfileInfo() {\n\t\t\tthis.resetState()\n\t\t},\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Toggle the list view and fetch/reset the state\n\t\t */\n\t\ttoggleInheritedShares() {\n\t\t\tthis.showInheritedShares = !this.showInheritedShares\n\t\t\tif (this.showInheritedShares) {\n\t\t\t\tthis.fetchInheritedShares()\n\t\t\t} else {\n\t\t\t\tthis.resetState()\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Fetch the Inherited Shares array\n\t\t */\n\t\tasync fetchInheritedShares() {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tconst url = generateOcsUrl('apps/files_sharing/api/v1/shares/inherited?format=json&path={path}', { path: this.fullPath })\n\t\t\t\tconst shares = await axios.get(url)\n\t\t\t\tthis.shares = shares.data.ocs.data\n\t\t\t\t\t.map(share => new Share(share))\n\t\t\t\t\t.sort((a, b) => b.createdTime - a.createdTime)\n\t\t\t\tconsole.info(this.shares)\n\t\t\t\tthis.loaded = true\n\t\t\t} catch (error) {\n\t\t\t\tOC.Notification.showTemporary(t('files_sharing', 'Unable to fetch inherited shares'), { type: 'error' })\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Reset current component state\n\t\t */\n\t\tresetState() {\n\t\t\tthis.loaded = false\n\t\t\tthis.loading = false\n\t\t\tthis.showInheritedShares = false\n\t\t\tthis.shares = []\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry__inherited {\n\t.avatar-shared {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInherited.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInherited.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInherited.vue?vue&type=style&index=0&id=6a277822&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInherited.vue?vue&type=style&index=0&id=6a277822&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingInherited.vue?vue&type=template&id=6a277822&scoped=true&\"\nimport script from \"./SharingInherited.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingInherited.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingInherited.vue?vue&type=style&index=0&id=6a277822&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6a277822\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',{attrs:{\"id\":\"sharing-inherited-shares\"}},[_c('SharingEntrySimple',{staticClass:\"sharing-entry__inherited\",attrs:{\"title\":_vm.mainTitle,\"subtitle\":_vm.subTitle,\"aria-expanded\":_vm.showInheritedShares},scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('div',{staticClass:\"avatar-shared icon-more-white\"})]},proxy:true}])},[_vm._v(\" \"),_c('NcActionButton',{attrs:{\"icon\":_vm.showInheritedSharesIcon,\"aria-label\":_vm.mainTitle},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.toggleInheritedShares.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.toggleTooltip)+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_vm._l((_vm.shares),function(share){return _c('SharingEntryInherited',{key:share.id,attrs:{\"file-info\":_vm.fileInfo,\"share\":share}})})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExternalShareAction.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExternalShareAction.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2021 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<Component :is=\"data.is\"\n\t\tv-bind=\"data\"\n\t\tv-on=\"action.handlers\">\n\t\t{{ data.text }}\n\t</Component>\n</template>\n\n<script>\nimport Share from '../models/Share'\n\nexport default {\n\tname: 'ExternalShareAction',\n\n\tprops: {\n\t\tid: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\taction: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => ({}),\n\t\t},\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\tshare: {\n\t\t\ttype: Share,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tdata() {\n\t\t\treturn this.action.data(this)\n\t\t},\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./ExternalShareAction.vue?vue&type=template&id=29f555e7&\"\nimport script from \"./ExternalShareAction.vue?vue&type=script&lang=js&\"\nexport * from \"./ExternalShareAction.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(_vm.data.is,_vm._g(_vm._b({tag:\"Component\"},'Component',_vm.data,false),_vm.action.handlers),[_vm._v(\"\\n\\t\"+_vm._s(_vm.data.text)+\"\\n\")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2022 Louis Chmn <louis@chmn.me>\n *\n * @author Louis Chmn <louis@chmn.me>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const ATOMIC_PERMISSIONS = {\n\tNONE: 0,\n\tREAD: 1,\n\tUPDATE: 2,\n\tCREATE: 4,\n\tDELETE: 8,\n\tSHARE: 16,\n}\n\nexport const BUNDLED_PERMISSIONS = {\n\tREAD_ONLY: ATOMIC_PERMISSIONS.READ,\n\tUPLOAD_AND_UPDATE: ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.DELETE,\n\tFILE_DROP: ATOMIC_PERMISSIONS.CREATE,\n\tALL: ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.DELETE | ATOMIC_PERMISSIONS.SHARE,\n}\n\n/**\n * Return whether a given permissions set contains some permissions.\n *\n * @param {number} initialPermissionSet - the permissions set.\n * @param {number} permissionsToCheck - the permissions to check.\n * @return {boolean}\n */\nexport function hasPermissions(initialPermissionSet, permissionsToCheck) {\n\treturn initialPermissionSet !== ATOMIC_PERMISSIONS.NONE && (initialPermissionSet & permissionsToCheck) === permissionsToCheck\n}\n\n/**\n * Return whether a given permissions set is valid.\n *\n * @param {number} permissionsSet - the permissions set.\n *\n * @return {boolean}\n */\nexport function permissionsSetIsValid(permissionsSet) {\n\t// Must have at least READ or CREATE permission.\n\tif (!hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.READ) && !hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.CREATE)) {\n\t\treturn false\n\t}\n\n\t// Must have READ permission if have UPDATE or DELETE.\n\tif (!hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.READ) && (\n\t\thasPermissions(permissionsSet, ATOMIC_PERMISSIONS.UPDATE) || hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.DELETE)\n\t)) {\n\t\treturn false\n\t}\n\n\treturn true\n}\n\n/**\n * Add some permissions to an initial set of permissions.\n *\n * @param {number} initialPermissionSet - the initial permissions.\n * @param {number} permissionsToAdd - the permissions to add.\n *\n * @return {number}\n */\nexport function addPermissions(initialPermissionSet, permissionsToAdd) {\n\treturn initialPermissionSet | permissionsToAdd\n}\n\n/**\n * Remove some permissions from an initial set of permissions.\n *\n * @param {number} initialPermissionSet - the initial permissions.\n * @param {number} permissionsToSubtract - the permissions to remove.\n *\n * @return {number}\n */\nexport function subtractPermissions(initialPermissionSet, permissionsToSubtract) {\n\treturn initialPermissionSet & ~permissionsToSubtract\n}\n\n/**\n * Toggle some permissions from an initial set of permissions.\n *\n * @param {number} initialPermissionSet - the permissions set.\n * @param {number} permissionsToToggle - the permissions to toggle.\n *\n * @return {number}\n */\nexport function togglePermissions(initialPermissionSet, permissionsToToggle) {\n\tif (hasPermissions(initialPermissionSet, permissionsToToggle)) {\n\t\treturn subtractPermissions(initialPermissionSet, permissionsToToggle)\n\t} else {\n\t\treturn addPermissions(initialPermissionSet, permissionsToToggle)\n\t}\n}\n\n/**\n * Return whether some given permissions can be toggled from a permission set.\n *\n * @param {number} permissionSet - the initial permissions set.\n * @param {number} permissionsToToggle - the permissions to toggle.\n *\n * @return {boolean}\n */\nexport function canTogglePermissions(permissionSet, permissionsToToggle) {\n\treturn permissionsSetIsValid(togglePermissions(permissionSet, permissionsToToggle))\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharePermissionsEditor.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharePermissionsEditor.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2022 Louis Chmn <louis@chmn.me>\n -\n - @author Louis Chmn <louis@chmn.me>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<li>\n\t\t<ul>\n\t\t\t<!-- file -->\n\t\t\t<NcActionCheckbox v-if=\"!isFolder\"\n\t\t\t\t:checked=\"shareHasPermissions(atomicPermissions.UPDATE)\"\n\t\t\t\t:disabled=\"saving\"\n\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.UPDATE)\">\n\t\t\t\t{{ t('files_sharing', 'Allow editing') }}\n\t\t\t</NcActionCheckbox>\n\n\t\t\t<!-- folder -->\n\t\t\t<template v-if=\"isFolder && fileHasCreatePermission && config.isPublicUploadEnabled\">\n\t\t\t\t<template v-if=\"!showCustomPermissionsForm\">\n\t\t\t\t\t<NcActionRadio :checked=\"sharePermissionEqual(bundledPermissions.READ_ONLY)\"\n\t\t\t\t\t\t:value=\"bundledPermissions.READ_ONLY\"\n\t\t\t\t\t\t:name=\"randomFormName\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t@change=\"setSharePermissions(bundledPermissions.READ_ONLY)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Read only') }}\n\t\t\t\t\t</NcActionRadio>\n\n\t\t\t\t\t<NcActionRadio :checked=\"sharePermissionEqual(bundledPermissions.UPLOAD_AND_UPDATE)\"\n\t\t\t\t\t\t:value=\"bundledPermissions.UPLOAD_AND_UPDATE\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:name=\"randomFormName\"\n\t\t\t\t\t\t@change=\"setSharePermissions(bundledPermissions.UPLOAD_AND_UPDATE)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Allow upload and editing') }}\n\t\t\t\t\t</NcActionRadio>\n\t\t\t\t\t<NcActionRadio :checked=\"sharePermissionEqual(bundledPermissions.FILE_DROP)\"\n\t\t\t\t\t\t:value=\"bundledPermissions.FILE_DROP\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:name=\"randomFormName\"\n\t\t\t\t\t\tclass=\"sharing-entry__action--public-upload\"\n\t\t\t\t\t\t@change=\"setSharePermissions(bundledPermissions.FILE_DROP)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'File drop (upload only)') }}\n\t\t\t\t\t</NcActionRadio>\n\n\t\t\t\t\t<!-- custom permissions button -->\n\t\t\t\t\t<NcActionButton :title=\"t('files_sharing', 'Custom permissions')\"\n\t\t\t\t\t\t@click=\"showCustomPermissionsForm = true\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<Tune />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t{{ sharePermissionsIsBundle ? \"\" : sharePermissionsSummary }}\n\t\t\t\t\t</NcActionButton>\n\t\t\t\t</template>\n\n\t\t\t\t<!-- custom permissions -->\n\t\t\t\t<span v-else :class=\"{error: !sharePermissionsSetIsValid}\">\n\t\t\t\t\t<NcActionCheckbox :checked=\"shareHasPermissions(atomicPermissions.READ)\"\n\t\t\t\t\t\t:disabled=\"saving || !canToggleSharePermissions(atomicPermissions.READ)\"\n\t\t\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.READ)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Read') }}\n\t\t\t\t\t</NcActionCheckbox>\n\t\t\t\t\t<NcActionCheckbox :checked=\"shareHasPermissions(atomicPermissions.CREATE)\"\n\t\t\t\t\t\t:disabled=\"saving || !canToggleSharePermissions(atomicPermissions.CREATE)\"\n\t\t\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.CREATE)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Upload') }}\n\t\t\t\t\t</NcActionCheckbox>\n\t\t\t\t\t<NcActionCheckbox :checked=\"shareHasPermissions(atomicPermissions.UPDATE)\"\n\t\t\t\t\t\t:disabled=\"saving || !canToggleSharePermissions(atomicPermissions.UPDATE)\"\n\t\t\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.UPDATE)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Edit') }}\n\t\t\t\t\t</NcActionCheckbox>\n\t\t\t\t\t<NcActionCheckbox :checked=\"shareHasPermissions(atomicPermissions.DELETE)\"\n\t\t\t\t\t\t:disabled=\"saving || !canToggleSharePermissions(atomicPermissions.DELETE)\"\n\t\t\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.DELETE)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Delete') }}\n\t\t\t\t\t</NcActionCheckbox>\n\n\t\t\t\t\t<NcActionButton @click=\"showCustomPermissionsForm = false\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<ChevronLeft />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t{{ t('files_sharing', 'Bundled permissions') }}\n\t\t\t\t\t</NcActionButton>\n\t\t\t\t</span>\n\t\t\t</template>\n\t\t</ul>\n\t</li>\n</template>\n\n<script>\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton'\nimport NcActionRadio from '@nextcloud/vue/dist/Components/NcActionRadio'\nimport NcActionCheckbox from '@nextcloud/vue/dist/Components/NcActionCheckbox'\n\nimport SharesMixin from '../mixins/SharesMixin'\nimport {\n\tATOMIC_PERMISSIONS,\n\tBUNDLED_PERMISSIONS,\n\thasPermissions,\n\tpermissionsSetIsValid,\n\ttogglePermissions,\n\tcanTogglePermissions,\n} from '../lib/SharePermissionsToolBox'\n\nimport Tune from 'vue-material-design-icons/Tune'\nimport ChevronLeft from 'vue-material-design-icons/ChevronLeft'\n\nexport default {\n\tname: 'SharePermissionsEditor',\n\n\tcomponents: {\n\t\tNcActionButton,\n\t\tNcActionCheckbox,\n\t\tNcActionRadio,\n\t\tTune,\n\t\tChevronLeft,\n\t},\n\n\tmixins: [SharesMixin],\n\n\tdata() {\n\t\treturn {\n\t\t\trandomFormName: Math.random().toString(27).substring(2),\n\n\t\t\tshowCustomPermissionsForm: false,\n\n\t\t\tatomicPermissions: ATOMIC_PERMISSIONS,\n\t\t\tbundledPermissions: BUNDLED_PERMISSIONS,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Return the summary of custom checked permissions.\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tsharePermissionsSummary() {\n\t\t\treturn Object.values(this.atomicPermissions)\n\t\t\t\t.filter(permission => this.shareHasPermissions(permission))\n\t\t\t\t.map(permission => {\n\t\t\t\t\tswitch (permission) {\n\t\t\t\t\tcase this.atomicPermissions.CREATE:\n\t\t\t\t\t\treturn this.t('files_sharing', 'Upload')\n\t\t\t\t\tcase this.atomicPermissions.READ:\n\t\t\t\t\t\treturn this.t('files_sharing', 'Read')\n\t\t\t\t\tcase this.atomicPermissions.UPDATE:\n\t\t\t\t\t\treturn this.t('files_sharing', 'Edit')\n\t\t\t\t\tcase this.atomicPermissions.DELETE:\n\t\t\t\t\t\treturn this.t('files_sharing', 'Delete')\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn null\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.filter(permissionLabel => permissionLabel !== null)\n\t\t\t\t.join(', ')\n\t\t},\n\n\t\t/**\n\t\t * Return whether the share's permission is a bundle.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tsharePermissionsIsBundle() {\n\t\t\treturn Object.values(BUNDLED_PERMISSIONS)\n\t\t\t\t.map(bundle => this.sharePermissionEqual(bundle))\n\t\t\t\t.filter(isBundle => isBundle)\n\t\t\t\t.length > 0\n\t\t},\n\n\t\t/**\n\t\t * Return whether the share's permission is valid.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tsharePermissionsSetIsValid() {\n\t\t\treturn permissionsSetIsValid(this.share.permissions)\n\t\t},\n\n\t\t/**\n\t\t * Is the current share a folder ?\n\t\t * TODO: move to a proper FileInfo model?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisFolder() {\n\t\t\treturn this.fileInfo.type === 'dir'\n\t\t},\n\n\t\t/**\n\t\t * Does the current file/folder have create permissions.\n\t\t * TODO: move to a proper FileInfo model?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tfileHasCreatePermission() {\n\t\t\treturn !!(this.fileInfo.permissions & ATOMIC_PERMISSIONS.CREATE)\n\t\t},\n\t},\n\n\tmounted() {\n\t\t// Show the Custom Permissions view on open if the permissions set is not a bundle.\n\t\tthis.showCustomPermissionsForm = !this.sharePermissionsIsBundle\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Return whether the share has the exact given permissions.\n\t\t *\n\t\t * @param {number} permissions - the permissions to check.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tsharePermissionEqual(permissions) {\n\t\t\t// We use the share's permission without PERMISSION_SHARE as it is not relevant here.\n\t\t\treturn (this.share.permissions & ~ATOMIC_PERMISSIONS.SHARE) === permissions\n\t\t},\n\n\t\t/**\n\t\t * Return whether the share has the given permissions.\n\t\t *\n\t\t * @param {number} permissions - the permissions to check.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tshareHasPermissions(permissions) {\n\t\t\treturn hasPermissions(this.share.permissions, permissions)\n\t\t},\n\n\t\t/**\n\t\t * Set the share permissions to the given permissions.\n\t\t *\n\t\t * @param {number} permissions - the permissions to set.\n\t\t *\n\t\t * @return {void}\n\t\t */\n\t\tsetSharePermissions(permissions) {\n\t\t\tthis.share.permissions = permissions\n\t\t\tthis.queueUpdate('permissions')\n\t\t},\n\n\t\t/**\n\t\t * Return whether some given permissions can be toggled.\n\t\t *\n\t\t * @param {number} permissionsToToggle - the permissions to toggle.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanToggleSharePermissions(permissionsToToggle) {\n\t\t\treturn canTogglePermissions(this.share.permissions, permissionsToToggle)\n\t\t},\n\n\t\t/**\n\t\t * Toggle a given permission.\n\t\t *\n\t\t * @param {number} permissions - the permissions to toggle.\n\t\t *\n\t\t * @return {void}\n\t\t */\n\t\ttoggleSharePermissions(permissions) {\n\t\t\tthis.share.permissions = togglePermissions(this.share.permissions, permissions)\n\n\t\t\tif (!permissionsSetIsValid(this.share.permissions)) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.queueUpdate('permissions')\n\t\t},\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n.error {\n\t::v-deep .action-checkbox__label:before {\n\t\tborder: 1px solid var(--color-error);\n\t}\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharePermissionsEditor.vue?vue&type=style&index=0&id=5e957d09&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharePermissionsEditor.vue?vue&type=style&index=0&id=5e957d09&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharePermissionsEditor.vue?vue&type=template&id=5e957d09&scoped=true&\"\nimport script from \"./SharePermissionsEditor.vue?vue&type=script&lang=js&\"\nexport * from \"./SharePermissionsEditor.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharePermissionsEditor.vue?vue&type=style&index=0&id=5e957d09&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5e957d09\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',[_c('ul',[(!_vm.isFolder)?_c('NcActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.UPDATE),\"disabled\":_vm.saving},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.UPDATE)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow editing'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isFolder && _vm.fileHasCreatePermission && _vm.config.isPublicUploadEnabled)?[(!_vm.showCustomPermissionsForm)?[_c('NcActionRadio',{attrs:{\"checked\":_vm.sharePermissionEqual(_vm.bundledPermissions.READ_ONLY),\"value\":_vm.bundledPermissions.READ_ONLY,\"name\":_vm.randomFormName,\"disabled\":_vm.saving},on:{\"change\":function($event){return _vm.setSharePermissions(_vm.bundledPermissions.READ_ONLY)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Read only'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionRadio',{attrs:{\"checked\":_vm.sharePermissionEqual(_vm.bundledPermissions.UPLOAD_AND_UPDATE),\"value\":_vm.bundledPermissions.UPLOAD_AND_UPDATE,\"disabled\":_vm.saving,\"name\":_vm.randomFormName},on:{\"change\":function($event){return _vm.setSharePermissions(_vm.bundledPermissions.UPLOAD_AND_UPDATE)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow upload and editing'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionRadio',{staticClass:\"sharing-entry__action--public-upload\",attrs:{\"checked\":_vm.sharePermissionEqual(_vm.bundledPermissions.FILE_DROP),\"value\":_vm.bundledPermissions.FILE_DROP,\"disabled\":_vm.saving,\"name\":_vm.randomFormName},on:{\"change\":function($event){return _vm.setSharePermissions(_vm.bundledPermissions.FILE_DROP)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'File drop (upload only)'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"title\":_vm.t('files_sharing', 'Custom permissions')},on:{\"click\":function($event){_vm.showCustomPermissionsForm = true}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Tune')]},proxy:true}],null,false,961531849)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.sharePermissionsIsBundle ? \"\" : _vm.sharePermissionsSummary)+\"\\n\\t\\t\\t\\t\")])]:_c('span',{class:{error: !_vm.sharePermissionsSetIsValid}},[_c('NcActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.READ),\"disabled\":_vm.saving || !_vm.canToggleSharePermissions(_vm.atomicPermissions.READ)},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.READ)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Read'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.CREATE),\"disabled\":_vm.saving || !_vm.canToggleSharePermissions(_vm.atomicPermissions.CREATE)},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.CREATE)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Upload'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.UPDATE),\"disabled\":_vm.saving || !_vm.canToggleSharePermissions(_vm.atomicPermissions.UPDATE)},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.UPDATE)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Edit'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.DELETE),\"disabled\":_vm.saving || !_vm.canToggleSharePermissions(_vm.atomicPermissions.DELETE)},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.DELETE)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Delete'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionButton',{on:{\"click\":function($event){_vm.showCustomPermissionsForm = false}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('ChevronLeft')]},proxy:true}],null,false,1018742195)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Bundled permissions'))+\"\\n\\t\\t\\t\\t\")])],1)]:_vm._e()],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<li :class=\"{'sharing-entry--share': share}\" class=\"sharing-entry sharing-entry__link\">\n\t\t<NcAvatar :is-no-user=\"true\"\n\t\t\t:icon-class=\"isEmailShareType ? 'avatar-link-share icon-mail-white' : 'avatar-link-share icon-public-white'\"\n\t\t\tclass=\"sharing-entry__avatar\" />\n\t\t<div class=\"sharing-entry__desc\">\n\t\t\t<span class=\"sharing-entry__title\" :title=\"title\">\n\t\t\t\t{{ title }}\n\t\t\t</span>\n\t\t\t<p v-if=\"subtitle\">\n\t\t\t\t{{ subtitle }}\n\t\t\t</p>\n\t\t</div>\n\n\t\t<!-- clipboard -->\n\t\t<NcActions v-if=\"share && !isEmailShareType && share.token\"\n\t\t\tref=\"copyButton\"\n\t\t\tclass=\"sharing-entry__copy\">\n\t\t\t<NcActionButton :aria-label=\"t('files_sharing', 'Copy public link to clipboard')\"\n\t\t\t\t@click.stop.prevent=\"copyLink\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Check v-if=\"copied && copySuccess\" :size=\"20\" />\n\t\t\t\t\t<ClipboardTextMultipleOutline v-else :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\t{{ clipboardTooltip }}\n\t\t\t</NcActionButton>\n\t\t</NcActions>\n\n\t\t<!-- pending actions -->\n\t\t<NcActions v-if=\"!pending && (pendingPassword || pendingExpirationDate)\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\tmenu-align=\"right\"\n\t\t\t:open.sync=\"open\"\n\t\t\t@close=\"onNewLinkShare\">\n\t\t\t<!-- pending data menu -->\n\t\t\t<NcActionText v-if=\"errors.pending\"\n\t\t\t\ticon=\"icon-error\"\n\t\t\t\t:class=\"{ error: errors.pending}\">\n\t\t\t\t{{ errors.pending }}\n\t\t\t</NcActionText>\n\t\t\t<NcActionText v-else icon=\"icon-info\">\n\t\t\t\t{{ t('files_sharing', 'Please enter the following required information before creating the share') }}\n\t\t\t</NcActionText>\n\n\t\t\t<!-- password -->\n\t\t\t<NcActionText v-if=\"pendingPassword\" icon=\"icon-password\">\n\t\t\t\t{{ t('files_sharing', 'Password protection (enforced)') }}\n\t\t\t</NcActionText>\n\t\t\t<NcActionCheckbox v-else-if=\"config.enableLinkPasswordByDefault\"\n\t\t\t\t:checked.sync=\"isPasswordProtected\"\n\t\t\t\t:disabled=\"config.enforcePasswordForPublicLink || saving\"\n\t\t\t\tclass=\"share-link-password-checkbox\"\n\t\t\t\t@uncheck=\"onPasswordDisable\">\n\t\t\t\t{{ t('files_sharing', 'Password protection') }}\n\t\t\t</NcActionCheckbox>\n\t\t\t<NcActionInput v-if=\"pendingPassword || share.password\"\n\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\tcontent: errors.password,\n\t\t\t\t\tshow: errors.password,\n\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t}\"\n\t\t\t\tclass=\"share-link-password\"\n\t\t\t\t:value.sync=\"share.password\"\n\t\t\t\t:disabled=\"saving\"\n\t\t\t\t:required=\"config.enableLinkPasswordByDefault || config.enforcePasswordForPublicLink\"\n\t\t\t\t:minlength=\"isPasswordPolicyEnabled && config.passwordPolicy.minLength\"\n\t\t\t\ticon=\"\"\n\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t@submit=\"onNewLinkShare\">\n\t\t\t\t{{ t('files_sharing', 'Enter a password') }}\n\t\t\t</NcActionInput>\n\n\t\t\t<!-- expiration date -->\n\t\t\t<NcActionText v-if=\"pendingExpirationDate\" icon=\"icon-calendar-dark\">\n\t\t\t\t{{ t('files_sharing', 'Expiration date (enforced)') }}\n\t\t\t</NcActionText>\n\t\t\t<NcActionInput v-if=\"pendingExpirationDate\"\n\t\t\t\tclass=\"share-link-expire-date\"\n\t\t\t\t:disabled=\"saving\"\n\t\t\t\t:is-native-picker=\"true\"\n\t\t\t\t:hide-label=\"true\"\n\t\t\t\t:value=\"new Date(share.expireDate)\"\n\t\t\t\ttype=\"date\"\n\t\t\t\t:min=\"dateTomorrow\"\n\t\t\t\t:max=\"dateMaxEnforced\"\n\t\t\t\t@input=\"onExpirationChange\">\n\t\t\t\t<!-- let's not submit when picked, the user\n\t\t\t\t\tmight want to still edit or copy the password -->\n\t\t\t\t{{ t('files_sharing', 'Enter a date') }}\n\t\t\t</NcActionInput>\n\n\t\t\t<NcActionButton icon=\"icon-checkmark\" @click.prevent.stop=\"onNewLinkShare\">\n\t\t\t\t{{ t('files_sharing', 'Create share') }}\n\t\t\t</NcActionButton>\n\t\t\t<NcActionButton icon=\"icon-close\" @click.prevent.stop=\"onCancel\">\n\t\t\t\t{{ t('files_sharing', 'Cancel') }}\n\t\t\t</NcActionButton>\n\t\t</NcActions>\n\n\t\t<!-- actions -->\n\t\t<NcActions v-else-if=\"!loading\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\tmenu-align=\"right\"\n\t\t\t:open.sync=\"open\"\n\t\t\t@close=\"onMenuClose\">\n\t\t\t<template v-if=\"share\">\n\t\t\t\t<template v-if=\"share.canEdit && canReshare\">\n\t\t\t\t\t<!-- Custom Label -->\n\t\t\t\t\t<NcActionInput ref=\"label\"\n\t\t\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\t\t\tcontent: errors.label,\n\t\t\t\t\t\t\tshow: errors.label,\n\t\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\t\tdefaultContainer: '.app-sidebar'\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\t:class=\"{ error: errors.label }\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:aria-label=\"t('files_sharing', 'Share label')\"\n\t\t\t\t\t\t:value=\"share.newLabel !== undefined ? share.newLabel : share.label\"\n\t\t\t\t\t\ticon=\"icon-edit\"\n\t\t\t\t\t\tmaxlength=\"255\"\n\t\t\t\t\t\t@update:value=\"onLabelChange\"\n\t\t\t\t\t\t@submit=\"onLabelSubmit\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Share label') }}\n\t\t\t\t\t</NcActionInput>\n\n\t\t\t\t\t<SharePermissionsEditor :can-reshare=\"canReshare\"\n\t\t\t\t\t\t:share.sync=\"share\"\n\t\t\t\t\t\t:file-info=\"fileInfo\" />\n\n\t\t\t\t\t<NcActionSeparator />\n\n\t\t\t\t\t<NcActionCheckbox :checked.sync=\"share.hideDownload\"\n\t\t\t\t\t\t:disabled=\"saving || canChangeHideDownload\"\n\t\t\t\t\t\t@change=\"queueUpdate('hideDownload')\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Hide download') }}\n\t\t\t\t\t</NcActionCheckbox>\n\n\t\t\t\t\t<!-- password -->\n\t\t\t\t\t<NcActionCheckbox :checked.sync=\"isPasswordProtected\"\n\t\t\t\t\t\t:disabled=\"config.enforcePasswordForPublicLink || saving\"\n\t\t\t\t\t\tclass=\"share-link-password-checkbox\"\n\t\t\t\t\t\t@uncheck=\"onPasswordDisable\">\n\t\t\t\t\t\t{{ config.enforcePasswordForPublicLink\n\t\t\t\t\t\t\t? t('files_sharing', 'Password protection (enforced)')\n\t\t\t\t\t\t\t: t('files_sharing', 'Password protect') }}\n\t\t\t\t\t</NcActionCheckbox>\n\t\t\t\t\t<NcActionInput v-if=\"isPasswordProtected\"\n\t\t\t\t\t\tref=\"password\"\n\t\t\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\t\t\tcontent: errors.password,\n\t\t\t\t\t\t\tshow: errors.password,\n\t\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\tclass=\"share-link-password\"\n\t\t\t\t\t\t:class=\"{ error: errors.password}\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:required=\"config.enforcePasswordForPublicLink\"\n\t\t\t\t\t\t:value=\"hasUnsavedPassword ? share.newPassword : '***************'\"\n\t\t\t\t\t\ticon=\"icon-password\"\n\t\t\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t\t\t:type=\"hasUnsavedPassword ? 'text': 'password'\"\n\t\t\t\t\t\t@update:value=\"onPasswordChange\"\n\t\t\t\t\t\t@submit=\"onPasswordSubmit\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Enter a password') }}\n\t\t\t\t\t</NcActionInput>\n\t\t\t\t\t<NcActionText v-if=\"isEmailShareType && passwordExpirationTime\" icon=\"icon-info\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Password expires {passwordExpirationTime}', {passwordExpirationTime}) }}\n\t\t\t\t\t</NcActionText>\n\t\t\t\t\t<NcActionText v-else-if=\"isEmailShareType && passwordExpirationTime !== null\" icon=\"icon-error\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Password expired') }}\n\t\t\t\t\t</NcActionText>\n\n\t\t\t\t\t<!-- password protected by Talk -->\n\t\t\t\t\t<NcActionCheckbox v-if=\"isPasswordProtectedByTalkAvailable\"\n\t\t\t\t\t\t:checked.sync=\"isPasswordProtectedByTalk\"\n\t\t\t\t\t\t:disabled=\"!canTogglePasswordProtectedByTalkAvailable || saving\"\n\t\t\t\t\t\tclass=\"share-link-password-talk-checkbox\"\n\t\t\t\t\t\t@change=\"onPasswordProtectedByTalkChange\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Video verification') }}\n\t\t\t\t\t</NcActionCheckbox>\n\n\t\t\t\t\t<!-- expiration date -->\n\t\t\t\t\t<NcActionCheckbox :checked.sync=\"hasExpirationDate\"\n\t\t\t\t\t\t:disabled=\"config.isDefaultExpireDateEnforced || saving\"\n\t\t\t\t\t\tclass=\"share-link-expire-date-checkbox\"\n\t\t\t\t\t\t@uncheck=\"onExpirationDisable\">\n\t\t\t\t\t\t{{ config.isDefaultExpireDateEnforced\n\t\t\t\t\t\t\t? t('files_sharing', 'Expiration date (enforced)')\n\t\t\t\t\t\t\t: t('files_sharing', 'Set expiration date') }}\n\t\t\t\t\t</NcActionCheckbox>\n\t\t\t\t\t<NcActionInput v-if=\"hasExpirationDate\"\n\t\t\t\t\t\tref=\"expireDate\"\n\t\t\t\t\t\t:is-native-picker=\"true\"\n\t\t\t\t\t\t:hide-label=\"true\"\n\t\t\t\t\t\tclass=\"share-link-expire-date\"\n\t\t\t\t\t\t:class=\"{ error: errors.expireDate}\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:value=\"new Date(share.expireDate)\"\n\t\t\t\t\t\ttype=\"date\"\n\t\t\t\t\t\t:min=\"dateTomorrow\"\n\t\t\t\t\t\t:max=\"dateMaxEnforced\"\n\t\t\t\t\t\t@input=\"onExpirationChange\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Enter a date') }}\n\t\t\t\t\t</NcActionInput>\n\n\t\t\t\t\t<!-- note -->\n\t\t\t\t\t<NcActionCheckbox :checked.sync=\"hasNote\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t@uncheck=\"queueUpdate('note')\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Note to recipient') }}\n\t\t\t\t\t</NcActionCheckbox>\n\t\t\t\t\t<NcActionTextEditable v-if=\"hasNote\"\n\t\t\t\t\t\tref=\"note\"\n\t\t\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\t\t\tcontent: errors.note,\n\t\t\t\t\t\t\tshow: errors.note,\n\t\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\t:class=\"{ error: errors.note}\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:placeholder=\"t('files_sharing', 'Enter a note for the share recipient')\"\n\t\t\t\t\t\t:value=\"share.newNote || share.note\"\n\t\t\t\t\t\ticon=\"icon-edit\"\n\t\t\t\t\t\t@update:value=\"onNoteChange\"\n\t\t\t\t\t\t@submit=\"onNoteSubmit\" />\n\t\t\t\t</template>\n\n\t\t\t\t<NcActionSeparator />\n\n\t\t\t\t<!-- external actions -->\n\t\t\t\t<ExternalShareAction v-for=\"action in externalLinkActions\"\n\t\t\t\t\t:id=\"action.id\"\n\t\t\t\t\t:key=\"action.id\"\n\t\t\t\t\t:action=\"action\"\n\t\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t\t:share=\"share\" />\n\n\t\t\t\t<!-- external legacy sharing via url (social...) -->\n\t\t\t\t<NcActionLink v-for=\"({icon, url, name}, index) in externalLegacyLinkActions\"\n\t\t\t\t\t:key=\"index\"\n\t\t\t\t\t:href=\"url(shareLink)\"\n\t\t\t\t\t:icon=\"icon\"\n\t\t\t\t\ttarget=\"_blank\">\n\t\t\t\t\t{{ name }}\n\t\t\t\t</NcActionLink>\n\n\t\t\t\t<NcActionButton v-if=\"share.canDelete\"\n\t\t\t\t\ticon=\"icon-close\"\n\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t@click.prevent=\"onDelete\">\n\t\t\t\t\t{{ t('files_sharing', 'Unshare') }}\n\t\t\t\t</NcActionButton>\n\t\t\t\t<NcActionButton v-if=\"!isEmailShareType && canReshare\"\n\t\t\t\t\tclass=\"new-share-link\"\n\t\t\t\t\ticon=\"icon-add\"\n\t\t\t\t\t@click.prevent.stop=\"onNewLinkShare\">\n\t\t\t\t\t{{ t('files_sharing', 'Add another link') }}\n\t\t\t\t</NcActionButton>\n\t\t\t</template>\n\n\t\t\t<!-- Create new share -->\n\t\t\t<NcActionButton v-else-if=\"canReshare\"\n\t\t\t\tclass=\"new-share-link\"\n\t\t\t\t:icon=\"loading ? 'icon-loading-small' : 'icon-add'\"\n\t\t\t\t@click.prevent.stop=\"onNewLinkShare\">\n\t\t\t\t{{ t('files_sharing', 'Create a new share link') }}\n\t\t\t</NcActionButton>\n\t\t</NcActions>\n\n\t\t<!-- loading indicator to replace the menu -->\n\t\t<div v-else class=\"icon-loading-small sharing-entry__loading\" />\n\t</li>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { showError, showSuccess } from '@nextcloud/dialogs'\nimport { Type as ShareTypes } from '@nextcloud/sharing'\nimport Vue from 'vue'\n\nimport {\n\tNcActionButton,\n\tNcActionCheckbox,\n\tNcActionInput,\n\tNcActionLink,\n\tNcActions,\n\tNcActionSeparator,\n\tNcActionText,\n\tNcActionTextEditable,\n\tNcAvatar,\n\tTooltip,\n} from '@nextcloud/vue'\n\nimport ExternalShareAction from './ExternalShareAction.vue'\nimport SharePermissionsEditor from './SharePermissionsEditor.vue'\nimport GeneratePassword from '../utils/GeneratePassword.js'\nimport Share from '../models/Share.js'\nimport SharesMixin from '../mixins/SharesMixin.js'\n\nimport Check from 'vue-material-design-icons/Check.vue'\nimport ClipboardTextMultipleOutline from 'vue-material-design-icons/ClipboardTextMultipleOutline.vue'\n\nexport default {\n\tname: 'SharingEntryLink',\n\n\tcomponents: {\n\t\tCheck,\n\t\tClipboardTextMultipleOutline,\n\t\tExternalShareAction,\n\t\tNcActionButton,\n\t\tNcActionCheckbox,\n\t\tNcActionInput,\n\t\tNcActionLink,\n\t\tNcActions,\n\t\tNcActionSeparator,\n\t\tNcActionText,\n\t\tNcActionTextEditable,\n\t\tNcAvatar,\n\t\tSharePermissionsEditor,\n\t},\n\n\tdirectives: {\n\t\tTooltip,\n\t},\n\n\tmixins: [SharesMixin],\n\n\tprops: {\n\t\tcanReshare: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tcopySuccess: true,\n\t\t\tcopied: false,\n\n\t\t\t// Are we waiting for password/expiration date\n\t\t\tpending: false,\n\n\t\t\tExternalLegacyLinkActions: OCA.Sharing.ExternalLinkActions.state,\n\t\t\tExternalShareActions: OCA.Sharing.ExternalShareActions.state,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Link share label\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\ttitle() {\n\t\t\t// if we have a valid existing share (not pending)\n\t\t\tif (this.share && this.share.id) {\n\t\t\t\tif (!this.isShareOwner && this.share.ownerDisplayName) {\n\t\t\t\t\tif (this.isEmailShareType) {\n\t\t\t\t\t\treturn t('files_sharing', '{shareWith} by {initiator}', {\n\t\t\t\t\t\t\tshareWith: this.share.shareWith,\n\t\t\t\t\t\t\tinitiator: this.share.ownerDisplayName,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\treturn t('files_sharing', 'Shared via link by {initiator}', {\n\t\t\t\t\t\tinitiator: this.share.ownerDisplayName,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (this.share.label && this.share.label.trim() !== '') {\n\t\t\t\t\tif (this.isEmailShareType) {\n\t\t\t\t\t\treturn t('files_sharing', 'Mail share ({label})', {\n\t\t\t\t\t\t\tlabel: this.share.label.trim(),\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\treturn t('files_sharing', 'Share link ({label})', {\n\t\t\t\t\t\tlabel: this.share.label.trim(),\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (this.isEmailShareType) {\n\t\t\t\t\treturn this.share.shareWith\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Share link')\n\t\t},\n\n\t\t/**\n\t\t * Show the email on a second line if a label is set for mail shares\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tsubtitle() {\n\t\t\tif (this.isEmailShareType\n\t\t\t\t&& this.title !== this.share.shareWith) {\n\t\t\t\treturn this.share.shareWith\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\t/**\n\t\t * Does the current share have an expiration date\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasExpirationDate: {\n\t\t\tget() {\n\t\t\t\treturn this.config.isDefaultExpireDateEnforced\n\t\t\t\t\t|| !!this.share.expireDate\n\t\t\t},\n\t\t\tset(enabled) {\n\t\t\t\tconst defaultExpirationDate = this.config.defaultExpirationDate\n\t\t\t\t\t|| new Date(new Date().setDate(new Date().getDate() + 1))\n\t\t\t\tthis.share.expireDate = enabled\n\t\t\t\t\t? this.formatDateToString(defaultExpirationDate)\n\t\t\t\t\t: ''\n\t\t\t\tconsole.debug('Expiration date status', enabled, this.share.expireDate)\n\t\t\t},\n\t\t},\n\n\t\tdateMaxEnforced() {\n\t\t\tif (this.config.isDefaultExpireDateEnforced) {\n\t\t\t\treturn new Date(new Date().setDate(new Date().getDate() + this.config.defaultExpireDate))\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\t/**\n\t\t * Is the current share password protected ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisPasswordProtected: {\n\t\t\tget() {\n\t\t\t\treturn this.config.enforcePasswordForPublicLink\n\t\t\t\t\t|| !!this.share.password\n\t\t\t},\n\t\t\tasync set(enabled) {\n\t\t\t\t// TODO: directly save after generation to make sure the share is always protected\n\t\t\t\tVue.set(this.share, 'password', enabled ? await GeneratePassword() : '')\n\t\t\t\tVue.set(this.share, 'newPassword', this.share.password)\n\t\t\t},\n\t\t},\n\n\t\tpasswordExpirationTime() {\n\t\t\tif (this.share.passwordExpirationTime === null) {\n\t\t\t\treturn null\n\t\t\t}\n\n\t\t\tconst expirationTime = moment(this.share.passwordExpirationTime)\n\n\t\t\tif (expirationTime.diff(moment()) < 0) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\treturn expirationTime.fromNow()\n\t\t},\n\n\t\t/**\n\t\t * Is Talk enabled?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisTalkEnabled() {\n\t\t\treturn OC.appswebroots.spreed !== undefined\n\t\t},\n\n\t\t/**\n\t\t * Is it possible to protect the password by Talk?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisPasswordProtectedByTalkAvailable() {\n\t\t\treturn this.isPasswordProtected && this.isTalkEnabled\n\t\t},\n\n\t\t/**\n\t\t * Is the current share password protected by Talk?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisPasswordProtectedByTalk: {\n\t\t\tget() {\n\t\t\t\treturn this.share.sendPasswordByTalk\n\t\t\t},\n\t\t\tasync set(enabled) {\n\t\t\t\tthis.share.sendPasswordByTalk = enabled\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Is the current share an email share ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisEmailShareType() {\n\t\t\treturn this.share\n\t\t\t\t? this.share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL\n\t\t\t\t: false\n\t\t},\n\n\t\tcanTogglePasswordProtectedByTalkAvailable() {\n\t\t\tif (!this.isPasswordProtected) {\n\t\t\t\t// Makes no sense\n\t\t\t\treturn false\n\t\t\t} else if (this.isEmailShareType && !this.hasUnsavedPassword) {\n\t\t\t\t// For email shares we need a new password in order to enable or\n\t\t\t\t// disable\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\t// Anything else should be fine\n\t\t\treturn true\n\t\t},\n\n\t\t/**\n\t\t * Pending data.\n\t\t * If the share still doesn't have an id, it is not synced\n\t\t * Therefore this is still not valid and requires user input\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tpendingPassword() {\n\t\t\treturn this.config.enforcePasswordForPublicLink && this.share && !this.share.id\n\t\t},\n\t\tpendingExpirationDate() {\n\t\t\treturn this.config.isDefaultExpireDateEnforced && this.share && !this.share.id\n\t\t},\n\n\t\t// if newPassword exists, but is empty, it means\n\t\t// the user deleted the original password\n\t\thasUnsavedPassword() {\n\t\t\treturn this.share.newPassword !== undefined\n\t\t},\n\n\t\t/**\n\t\t * Return the public share link\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tshareLink() {\n\t\t\treturn window.location.protocol + '//' + window.location.host + generateUrl('/s/') + this.share.token\n\t\t},\n\n\t\t/**\n\t\t * Clipboard v-tooltip message\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tclipboardTooltip() {\n\t\t\tif (this.copied) {\n\t\t\t\treturn this.copySuccess\n\t\t\t\t\t? t('files_sharing', 'Link copied')\n\t\t\t\t\t: t('files_sharing', 'Cannot copy, please copy the link manually')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Copy to clipboard')\n\t\t},\n\n\t\t/**\n\t\t * External additionnai actions for the menu\n\t\t *\n\t\t * @deprecated use OCA.Sharing.ExternalShareActions\n\t\t * @return {Array}\n\t\t */\n\t\texternalLegacyLinkActions() {\n\t\t\treturn this.ExternalLegacyLinkActions.actions\n\t\t},\n\n\t\t/**\n\t\t * Additional actions for the menu\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\texternalLinkActions() {\n\t\t\t// filter only the registered actions for said link\n\t\t\treturn this.ExternalShareActions.actions\n\t\t\t\t.filter(action => action.shareType.includes(ShareTypes.SHARE_TYPE_LINK)\n\t\t\t\t\t|| action.shareType.includes(ShareTypes.SHARE_TYPE_EMAIL))\n\t\t},\n\n\t\tisPasswordPolicyEnabled() {\n\t\t\treturn typeof this.config.passwordPolicy === 'object'\n\t\t},\n\n\t\tcanChangeHideDownload() {\n\t\t\tconst hasDisabledDownload = (shareAttribute) => shareAttribute.key === 'download' && shareAttribute.scope === 'permissions' && shareAttribute.enabled === false\n\n\t\t\treturn this.fileInfo.shareAttributes.some(hasDisabledDownload)\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Create a new share link and append it to the list\n\t\t */\n\t\tasync onNewLinkShare() {\n\t\t\t// do not run again if already loading\n\t\t\tif (this.loading) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst shareDefaults = {\n\t\t\t\tshare_type: ShareTypes.SHARE_TYPE_LINK,\n\t\t\t}\n\t\t\tif (this.config.isDefaultExpireDateEnforced) {\n\t\t\t\t// default is empty string if not set\n\t\t\t\t// expiration is the share object key, not expireDate\n\t\t\t\tshareDefaults.expiration = this.formatDateToString(this.config.defaultExpirationDate)\n\t\t\t}\n\t\t\tif (this.config.enableLinkPasswordByDefault) {\n\t\t\t\tshareDefaults.password = await GeneratePassword()\n\t\t\t}\n\n\t\t\t// do not push yet if we need a password or an expiration date: show pending menu\n\t\t\tif (this.config.enforcePasswordForPublicLink || this.config.isDefaultExpireDateEnforced) {\n\t\t\t\tthis.pending = true\n\n\t\t\t\t// if a share already exists, pushing it\n\t\t\t\tif (this.share && !this.share.id) {\n\t\t\t\t\t// if the share is valid, create it on the server\n\t\t\t\t\tif (this.checkShare(this.share)) {\n\t\t\t\t\t\tawait this.pushNewLinkShare(this.share, true)\n\t\t\t\t\t\treturn true\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.open = true\n\t\t\t\t\t\tOC.Notification.showTemporary(t('files_sharing', 'Error, please enter proper password and/or expiration date'))\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// ELSE, show the pending popovermenu\n\t\t\t\t// if password enforced, pre-fill with random one\n\t\t\t\tif (this.config.enforcePasswordForPublicLink) {\n\t\t\t\t\tshareDefaults.password = await GeneratePassword()\n\t\t\t\t}\n\n\t\t\t\t// create share & close menu\n\t\t\t\tconst share = new Share(shareDefaults)\n\t\t\t\tconst component = await new Promise(resolve => {\n\t\t\t\t\tthis.$emit('add:share', share, resolve)\n\t\t\t\t})\n\n\t\t\t\t// open the menu on the\n\t\t\t\t// freshly created share component\n\t\t\t\tthis.open = false\n\t\t\t\tthis.pending = false\n\t\t\t\tcomponent.open = true\n\n\t\t\t// Nothing is enforced, creating share directly\n\t\t\t} else {\n\t\t\t\tconst share = new Share(shareDefaults)\n\t\t\t\tawait this.pushNewLinkShare(share)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Push a new link share to the server\n\t\t * And update or append to the list\n\t\t * accordingly\n\t\t *\n\t\t * @param {Share} share the new share\n\t\t * @param {boolean} [update=false] do we update the current share ?\n\t\t */\n\t\tasync pushNewLinkShare(share, update) {\n\t\t\ttry {\n\t\t\t\t// do nothing if we're already pending creation\n\t\t\t\tif (this.loading) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\n\t\t\t\tthis.loading = true\n\t\t\t\tthis.errors = {}\n\n\t\t\t\tconst path = (this.fileInfo.path + '/' + this.fileInfo.name).replace('//', '/')\n\t\t\t\tconst options = {\n\t\t\t\t\tpath,\n\t\t\t\t\tshareType: ShareTypes.SHARE_TYPE_LINK,\n\t\t\t\t\tpassword: share.password,\n\t\t\t\t\texpireDate: share.expireDate,\n\t\t\t\t\tattributes: JSON.stringify(this.fileInfo.shareAttributes),\n\t\t\t\t\t// we do not allow setting the publicUpload\n\t\t\t\t\t// before the share creation.\n\t\t\t\t\t// Todo: We also need to fix the createShare method in\n\t\t\t\t\t// lib/Controller/ShareAPIController.php to allow file drop\n\t\t\t\t\t// (currently not supported on create, only update)\n\t\t\t\t}\n\n\t\t\t\tconsole.debug('Creating link share with options', options)\n\t\t\t\tconst newShare = await this.createShare(options)\n\n\t\t\t\tthis.open = false\n\t\t\t\tconsole.debug('Link share created', newShare)\n\n\t\t\t\t// if share already exists, copy link directly on next tick\n\t\t\t\tlet component\n\t\t\t\tif (update) {\n\t\t\t\t\tcomponent = await new Promise(resolve => {\n\t\t\t\t\t\tthis.$emit('update:share', newShare, resolve)\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\t// adding new share to the array and copying link to clipboard\n\t\t\t\t\t// using promise so that we can copy link in the same click function\n\t\t\t\t\t// and avoid firefox copy permissions issue\n\t\t\t\t\tcomponent = await new Promise(resolve => {\n\t\t\t\t\t\tthis.$emit('add:share', newShare, resolve)\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\t// Execute the copy link method\n\t\t\t\t// freshly created share component\n\t\t\t\t// ! somehow does not works on firefox !\n\t\t\t\tif (!this.config.enforcePasswordForPublicLink) {\n\t\t\t\t\t// Only copy the link when the password was not forced,\n\t\t\t\t\t// otherwise the user needs to copy/paste the password before finishing the share.\n\t\t\t\t\tcomponent.copyLink()\n\t\t\t\t}\n\n\t\t\t} catch (data) {\n\t\t\t\tconst message = data?.response?.data?.ocs?.meta?.message\n\t\t\t\tif (!message) {\n\t\t\t\t\tshowError(t('sharing', 'Error while creating the share'))\n\t\t\t\t\tconsole.error(data)\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tif (message.match(/password/i)) {\n\t\t\t\t\tthis.onSyncError('password', message)\n\t\t\t\t} else if (message.match(/date/i)) {\n\t\t\t\t\tthis.onSyncError('expireDate', message)\n\t\t\t\t} else {\n\t\t\t\t\tthis.onSyncError('pending', message)\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Label changed, let's save it to a different key\n\t\t *\n\t\t * @param {string} label the share label\n\t\t */\n\t\tonLabelChange(label) {\n\t\t\tthis.$set(this.share, 'newLabel', label.trim())\n\t\t},\n\n\t\t/**\n\t\t * When the note change, we trim, save and dispatch\n\t\t */\n\t\tonLabelSubmit() {\n\t\t\tif (typeof this.share.newLabel === 'string') {\n\t\t\t\tthis.share.label = this.share.newLabel\n\t\t\t\tthis.$delete(this.share, 'newLabel')\n\t\t\t\tshowSuccess(t('files_sharing', 'Share label saved'))\n\t\t\t\tthis.queueUpdate('label')\n\t\t\t}\n\t\t},\n\t\tasync copyLink() {\n\t\t\ttry {\n\t\t\t\tawait this.$copyText(this.shareLink)\n\t\t\t\t// focus and show the tooltip\n\t\t\t\tthis.$refs.copyButton.$el.focus()\n\t\t\t\tthis.copySuccess = true\n\t\t\t\tthis.copied = true\n\t\t\t} catch (error) {\n\t\t\t\tthis.copySuccess = false\n\t\t\t\tthis.copied = true\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.copySuccess = false\n\t\t\t\t\tthis.copied = false\n\t\t\t\t}, 4000)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Update newPassword values\n\t\t * of share. If password is set but not newPassword\n\t\t * then the user did not changed the password\n\t\t * If both co-exists, the password have changed and\n\t\t * we show it in plain text.\n\t\t * Then on submit (or menu close), we sync it.\n\t\t *\n\t\t * @param {string} password the changed password\n\t\t */\n\t\tonPasswordChange(password) {\n\t\t\tthis.$set(this.share, 'newPassword', password)\n\t\t},\n\n\t\t/**\n\t\t * Uncheck password protection\n\t\t * We need this method because @update:checked\n\t\t * is ran simultaneously as @uncheck, so we\n\t\t * cannot ensure data is up-to-date\n\t\t */\n\t\tonPasswordDisable() {\n\t\t\tthis.share.password = ''\n\n\t\t\t// reset password state after sync\n\t\t\tthis.$delete(this.share, 'newPassword')\n\n\t\t\t// only update if valid share.\n\t\t\tif (this.share.id) {\n\t\t\t\tthis.queueUpdate('password')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Menu have been closed or password has been submitted.\n\t\t * The only property that does not get\n\t\t * synced automatically is the password\n\t\t * So let's check if we have an unsaved\n\t\t * password.\n\t\t * expireDate is saved on datepicker pick\n\t\t * or close.\n\t\t */\n\t\tonPasswordSubmit() {\n\t\t\tif (this.hasUnsavedPassword) {\n\t\t\t\tthis.share.password = this.share.newPassword.trim()\n\t\t\t\tshowSuccess(t('files_sharing', 'Share password saved'))\n\t\t\t\tthis.queueUpdate('password')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Update the password along with \"sendPasswordByTalk\".\n\t\t *\n\t\t * If the password was modified the new password is sent; otherwise\n\t\t * updating a mail share would fail, as in that case it is required that\n\t\t * a new password is set when enabling or disabling\n\t\t * \"sendPasswordByTalk\".\n\t\t */\n\t\tonPasswordProtectedByTalkChange() {\n\t\t\tif (this.hasUnsavedPassword) {\n\t\t\t\tthis.share.password = this.share.newPassword.trim()\n\t\t\t}\n\n\t\t\tthis.queueUpdate('sendPasswordByTalk', 'password')\n\t\t},\n\n\t\t/**\n\t\t * Save potential changed data on menu close\n\t\t */\n\t\tonMenuClose() {\n\t\t\tthis.onPasswordSubmit()\n\t\t\tthis.onNoteSubmit()\n\t\t},\n\n\t\t/**\n\t\t * Cancel the share creation\n\t\t * Used in the pending popover\n\t\t */\n\t\tonCancel() {\n\t\t\t// this.share already exists at this point,\n\t\t\t// but is incomplete as not pushed to server\n\t\t\t// YET. We can safely delete the share :)\n\t\t\tthis.$emit('remove:share', this.share)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\toverflow: hidden;\n\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__title {\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t}\n\n\t&:not(.sharing-entry--share) &__actions {\n\t\t.new-share-link {\n\t\t\tborder-top: 1px solid var(--color-border);\n\t\t}\n\t}\n\n\t::v-deep .avatar-link-share {\n\t\tbackground-color: var(--color-primary);\n\t}\n\n\t.sharing-entry__action--public-upload {\n\t\tborder-bottom: 1px solid var(--color-border);\n\t}\n\n\t&__loading {\n\t\twidth: 44px;\n\t\theight: 44px;\n\t\tmargin: 0;\n\t\tpadding: 14px;\n\t\tmargin-left: auto;\n\t}\n\n\t// put menus to the left\n\t// but only the first one\n\t.action-item {\n\t\tmargin-left: auto;\n\t\t~ .action-item,\n\t\t~ .sharing-entry__loading {\n\t\t\tmargin-left: 0;\n\t\t}\n\t}\n\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryLink.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryLink.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryLink.vue?vue&type=style&index=0&id=182f91a3&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryLink.vue?vue&type=style&index=0&id=182f91a3&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntryLink.vue?vue&type=template&id=182f91a3&scoped=true&\"\nimport script from \"./SharingEntryLink.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntryLink.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntryLink.vue?vue&type=style&index=0&id=182f91a3&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"182f91a3\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{staticClass:\"sharing-entry sharing-entry__link\",class:{'sharing-entry--share': _vm.share}},[_c('NcAvatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"is-no-user\":true,\"icon-class\":_vm.isEmailShareType ? 'avatar-link-share icon-mail-white' : 'avatar-link-share icon-public-white'}}),_vm._v(\" \"),_c('div',{staticClass:\"sharing-entry__desc\"},[_c('span',{staticClass:\"sharing-entry__title\",attrs:{\"title\":_vm.title}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.title)+\"\\n\\t\\t\")]),_vm._v(\" \"),(_vm.subtitle)?_c('p',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.subtitle)+\"\\n\\t\\t\")]):_vm._e()]),_vm._v(\" \"),(_vm.share && !_vm.isEmailShareType && _vm.share.token)?_c('NcActions',{ref:\"copyButton\",staticClass:\"sharing-entry__copy\"},[_c('NcActionButton',{attrs:{\"aria-label\":_vm.t('files_sharing', 'Copy public link to clipboard')},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.copyLink.apply(null, arguments)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.copied && _vm.copySuccess)?_c('Check',{attrs:{\"size\":20}}):_c('ClipboardTextMultipleOutline',{attrs:{\"size\":20}})]},proxy:true}],null,false,2976921391)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.clipboardTooltip)+\"\\n\\t\\t\")])],1):_vm._e(),_vm._v(\" \"),(!_vm.pending && (_vm.pendingPassword || _vm.pendingExpirationDate))?_c('NcActions',{staticClass:\"sharing-entry__actions\",attrs:{\"menu-align\":\"right\",\"open\":_vm.open},on:{\"update:open\":function($event){_vm.open=$event},\"close\":_vm.onNewLinkShare}},[(_vm.errors.pending)?_c('NcActionText',{class:{ error: _vm.errors.pending},attrs:{\"icon\":\"icon-error\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.errors.pending)+\"\\n\\t\\t\")]):_c('NcActionText',{attrs:{\"icon\":\"icon-info\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Please enter the following required information before creating the share'))+\"\\n\\t\\t\")]),_vm._v(\" \"),(_vm.pendingPassword)?_c('NcActionText',{attrs:{\"icon\":\"icon-password\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password protection (enforced)'))+\"\\n\\t\\t\")]):(_vm.config.enableLinkPasswordByDefault)?_c('NcActionCheckbox',{staticClass:\"share-link-password-checkbox\",attrs:{\"checked\":_vm.isPasswordProtected,\"disabled\":_vm.config.enforcePasswordForPublicLink || _vm.saving},on:{\"update:checked\":function($event){_vm.isPasswordProtected=$event},\"uncheck\":_vm.onPasswordDisable}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password protection'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.pendingPassword || _vm.share.password)?_c('NcActionInput',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\tcontent: _vm.errors.password,\n\t\t\t\tshow: _vm.errors.password,\n\t\t\t\ttrigger: 'manual',\n\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t}),expression:\"{\\n\\t\\t\\t\\tcontent: errors.password,\\n\\t\\t\\t\\tshow: errors.password,\\n\\t\\t\\t\\ttrigger: 'manual',\\n\\t\\t\\t\\tdefaultContainer: '#app-sidebar'\\n\\t\\t\\t}\",modifiers:{\"auto\":true}}],staticClass:\"share-link-password\",attrs:{\"value\":_vm.share.password,\"disabled\":_vm.saving,\"required\":_vm.config.enableLinkPasswordByDefault || _vm.config.enforcePasswordForPublicLink,\"minlength\":_vm.isPasswordPolicyEnabled && _vm.config.passwordPolicy.minLength,\"icon\":\"\",\"autocomplete\":\"new-password\"},on:{\"update:value\":function($event){return _vm.$set(_vm.share, \"password\", $event)},\"submit\":_vm.onNewLinkShare}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a password'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.pendingExpirationDate)?_c('NcActionText',{attrs:{\"icon\":\"icon-calendar-dark\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Expiration date (enforced)'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.pendingExpirationDate)?_c('NcActionInput',{staticClass:\"share-link-expire-date\",attrs:{\"disabled\":_vm.saving,\"is-native-picker\":true,\"hide-label\":true,\"value\":new Date(_vm.share.expireDate),\"type\":\"date\",\"min\":_vm.dateTomorrow,\"max\":_vm.dateMaxEnforced},on:{\"input\":_vm.onExpirationChange}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a date'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"icon\":\"icon-checkmark\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onNewLinkShare.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Create share'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"icon\":\"icon-close\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onCancel.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Cancel'))+\"\\n\\t\\t\")])],1):(!_vm.loading)?_c('NcActions',{staticClass:\"sharing-entry__actions\",attrs:{\"menu-align\":\"right\",\"open\":_vm.open},on:{\"update:open\":function($event){_vm.open=$event},\"close\":_vm.onMenuClose}},[(_vm.share)?[(_vm.share.canEdit && _vm.canReshare)?[_c('NcActionInput',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\t\t\tcontent: _vm.errors.label,\n\t\t\t\t\t\tshow: _vm.errors.label,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '.app-sidebar'\n\t\t\t\t\t}),expression:\"{\\n\\t\\t\\t\\t\\t\\tcontent: errors.label,\\n\\t\\t\\t\\t\\t\\tshow: errors.label,\\n\\t\\t\\t\\t\\t\\ttrigger: 'manual',\\n\\t\\t\\t\\t\\t\\tdefaultContainer: '.app-sidebar'\\n\\t\\t\\t\\t\\t}\",modifiers:{\"auto\":true}}],ref:\"label\",class:{ error: _vm.errors.label },attrs:{\"disabled\":_vm.saving,\"aria-label\":_vm.t('files_sharing', 'Share label'),\"value\":_vm.share.newLabel !== undefined ? _vm.share.newLabel : _vm.share.label,\"icon\":\"icon-edit\",\"maxlength\":\"255\"},on:{\"update:value\":_vm.onLabelChange,\"submit\":_vm.onLabelSubmit}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Share label'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('SharePermissionsEditor',{attrs:{\"can-reshare\":_vm.canReshare,\"share\":_vm.share,\"file-info\":_vm.fileInfo},on:{\"update:share\":function($event){_vm.share=$event}}}),_vm._v(\" \"),_c('NcActionSeparator'),_vm._v(\" \"),_c('NcActionCheckbox',{attrs:{\"checked\":_vm.share.hideDownload,\"disabled\":_vm.saving || _vm.canChangeHideDownload},on:{\"update:checked\":function($event){return _vm.$set(_vm.share, \"hideDownload\", $event)},\"change\":function($event){return _vm.queueUpdate('hideDownload')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Hide download'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionCheckbox',{staticClass:\"share-link-password-checkbox\",attrs:{\"checked\":_vm.isPasswordProtected,\"disabled\":_vm.config.enforcePasswordForPublicLink || _vm.saving},on:{\"update:checked\":function($event){_vm.isPasswordProtected=$event},\"uncheck\":_vm.onPasswordDisable}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.config.enforcePasswordForPublicLink\n\t\t\t\t\t\t? _vm.t('files_sharing', 'Password protection (enforced)')\n\t\t\t\t\t\t: _vm.t('files_sharing', 'Password protect'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.isPasswordProtected)?_c('NcActionInput',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\t\t\tcontent: _vm.errors.password,\n\t\t\t\t\t\tshow: _vm.errors.password,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t}),expression:\"{\\n\\t\\t\\t\\t\\t\\tcontent: errors.password,\\n\\t\\t\\t\\t\\t\\tshow: errors.password,\\n\\t\\t\\t\\t\\t\\ttrigger: 'manual',\\n\\t\\t\\t\\t\\t\\tdefaultContainer: '#app-sidebar'\\n\\t\\t\\t\\t\\t}\",modifiers:{\"auto\":true}}],ref:\"password\",staticClass:\"share-link-password\",class:{ error: _vm.errors.password},attrs:{\"disabled\":_vm.saving,\"required\":_vm.config.enforcePasswordForPublicLink,\"value\":_vm.hasUnsavedPassword ? _vm.share.newPassword : '***************',\"icon\":\"icon-password\",\"autocomplete\":\"new-password\",\"type\":_vm.hasUnsavedPassword ? 'text': 'password'},on:{\"update:value\":_vm.onPasswordChange,\"submit\":_vm.onPasswordSubmit}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a password'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isEmailShareType && _vm.passwordExpirationTime)?_c('NcActionText',{attrs:{\"icon\":\"icon-info\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password expires {passwordExpirationTime}', {passwordExpirationTime: _vm.passwordExpirationTime}))+\"\\n\\t\\t\\t\\t\")]):(_vm.isEmailShareType && _vm.passwordExpirationTime !== null)?_c('NcActionText',{attrs:{\"icon\":\"icon-error\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password expired'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isPasswordProtectedByTalkAvailable)?_c('NcActionCheckbox',{staticClass:\"share-link-password-talk-checkbox\",attrs:{\"checked\":_vm.isPasswordProtectedByTalk,\"disabled\":!_vm.canTogglePasswordProtectedByTalkAvailable || _vm.saving},on:{\"update:checked\":function($event){_vm.isPasswordProtectedByTalk=$event},\"change\":_vm.onPasswordProtectedByTalkChange}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Video verification'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcActionCheckbox',{staticClass:\"share-link-expire-date-checkbox\",attrs:{\"checked\":_vm.hasExpirationDate,\"disabled\":_vm.config.isDefaultExpireDateEnforced || _vm.saving},on:{\"update:checked\":function($event){_vm.hasExpirationDate=$event},\"uncheck\":_vm.onExpirationDisable}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.config.isDefaultExpireDateEnforced\n\t\t\t\t\t\t? _vm.t('files_sharing', 'Expiration date (enforced)')\n\t\t\t\t\t\t: _vm.t('files_sharing', 'Set expiration date'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.hasExpirationDate)?_c('NcActionInput',{ref:\"expireDate\",staticClass:\"share-link-expire-date\",class:{ error: _vm.errors.expireDate},attrs:{\"is-native-picker\":true,\"hide-label\":true,\"disabled\":_vm.saving,\"value\":new Date(_vm.share.expireDate),\"type\":\"date\",\"min\":_vm.dateTomorrow,\"max\":_vm.dateMaxEnforced},on:{\"input\":_vm.onExpirationChange}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a date'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcActionCheckbox',{attrs:{\"checked\":_vm.hasNote,\"disabled\":_vm.saving},on:{\"update:checked\":function($event){_vm.hasNote=$event},\"uncheck\":function($event){return _vm.queueUpdate('note')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Note to recipient'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.hasNote)?_c('NcActionTextEditable',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\t\t\tcontent: _vm.errors.note,\n\t\t\t\t\t\tshow: _vm.errors.note,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t}),expression:\"{\\n\\t\\t\\t\\t\\t\\tcontent: errors.note,\\n\\t\\t\\t\\t\\t\\tshow: errors.note,\\n\\t\\t\\t\\t\\t\\ttrigger: 'manual',\\n\\t\\t\\t\\t\\t\\tdefaultContainer: '#app-sidebar'\\n\\t\\t\\t\\t\\t}\",modifiers:{\"auto\":true}}],ref:\"note\",class:{ error: _vm.errors.note},attrs:{\"disabled\":_vm.saving,\"placeholder\":_vm.t('files_sharing', 'Enter a note for the share recipient'),\"value\":_vm.share.newNote || _vm.share.note,\"icon\":\"icon-edit\"},on:{\"update:value\":_vm.onNoteChange,\"submit\":_vm.onNoteSubmit}}):_vm._e()]:_vm._e(),_vm._v(\" \"),_c('NcActionSeparator'),_vm._v(\" \"),_vm._l((_vm.externalLinkActions),function(action){return _c('ExternalShareAction',{key:action.id,attrs:{\"id\":action.id,\"action\":action,\"file-info\":_vm.fileInfo,\"share\":_vm.share}})}),_vm._v(\" \"),_vm._l((_vm.externalLegacyLinkActions),function(ref,index){\n\t\t\t\t\tvar icon = ref.icon;\n\t\t\t\t\tvar url = ref.url;\n\t\t\t\t\tvar name = ref.name;\nreturn _c('NcActionLink',{key:index,attrs:{\"href\":url(_vm.shareLink),\"icon\":icon,\"target\":\"_blank\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(name)+\"\\n\\t\\t\\t\")])}),_vm._v(\" \"),(_vm.share.canDelete)?_c('NcActionButton',{attrs:{\"icon\":\"icon-close\",\"disabled\":_vm.saving},on:{\"click\":function($event){$event.preventDefault();return _vm.onDelete.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Unshare'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(!_vm.isEmailShareType && _vm.canReshare)?_c('NcActionButton',{staticClass:\"new-share-link\",attrs:{\"icon\":\"icon-add\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onNewLinkShare.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Add another link'))+\"\\n\\t\\t\\t\")]):_vm._e()]:(_vm.canReshare)?_c('NcActionButton',{staticClass:\"new-share-link\",attrs:{\"icon\":_vm.loading ? 'icon-loading-small' : 'icon-add'},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onNewLinkShare.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Create a new share link'))+\"\\n\\t\\t\")]):_vm._e()],2):_c('div',{staticClass:\"icon-loading-small sharing-entry__loading\"})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingLinkList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingLinkList.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<ul v-if=\"canLinkShare\" class=\"sharing-link-list\">\n\t\t<!-- If no link shares, show the add link default entry -->\n\t\t<SharingEntryLink v-if=\"!hasLinkShares && canReshare\"\n\t\t\t:can-reshare=\"canReshare\"\n\t\t\t:file-info=\"fileInfo\"\n\t\t\t@add:share=\"addShare\" />\n\n\t\t<!-- Else we display the list -->\n\t\t<template v-if=\"hasShares\">\n\t\t\t<!-- using shares[index] to work with .sync -->\n\t\t\t<SharingEntryLink v-for=\"(share, index) in shares\"\n\t\t\t\t:key=\"share.id\"\n\t\t\t\t:can-reshare=\"canReshare\"\n\t\t\t\t:share.sync=\"shares[index]\"\n\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t@add:share=\"addShare(...arguments)\"\n\t\t\t\t@update:share=\"awaitForShare(...arguments)\"\n\t\t\t\t@remove:share=\"removeShare\" />\n\t\t</template>\n\t</ul>\n</template>\n\n<script>\n// eslint-disable-next-line no-unused-vars\nimport Share from '../models/Share'\nimport ShareTypes from '../mixins/ShareTypes'\nimport SharingEntryLink from '../components/SharingEntryLink'\n\nexport default {\n\tname: 'SharingLinkList',\n\n\tcomponents: {\n\t\tSharingEntryLink,\n\t},\n\n\tmixins: [ShareTypes],\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\tshares: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\trequired: true,\n\t\t},\n\t\tcanReshare: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tcanLinkShare: OC.getCapabilities().files_sharing.public.enabled,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Do we have link shares?\n\t\t * Using this to still show the `new link share`\n\t\t * button regardless of mail shares\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\thasLinkShares() {\n\t\t\treturn this.shares.filter(share => share.type === this.SHARE_TYPES.SHARE_TYPE_LINK).length > 0\n\t\t},\n\n\t\t/**\n\t\t * Do we have any link or email shares?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasShares() {\n\t\t\treturn this.shares.length > 0\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Add a new share into the link shares list\n\t\t * and return the newly created share component\n\t\t *\n\t\t * @param {Share} share the share to add to the array\n\t\t * @param {Function} resolve a function to run after the share is added and its component initialized\n\t\t */\n\t\taddShare(share, resolve) {\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.shares.unshift(share)\n\t\t\tthis.awaitForShare(share, resolve)\n\t\t},\n\n\t\t/**\n\t\t * Await for next tick and render after the list updated\n\t\t * Then resolve with the matched vue component of the\n\t\t * provided share object\n\t\t *\n\t\t * @param {Share} share newly created share\n\t\t * @param {Function} resolve a function to execute after\n\t\t */\n\t\tawaitForShare(share, resolve) {\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tconst newShare = this.$children.find(component => component.share === share)\n\t\t\t\tif (newShare) {\n\t\t\t\t\tresolve(newShare)\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Remove a share from the shares list\n\t\t *\n\t\t * @param {Share} share the share to remove\n\t\t */\n\t\tremoveShare(share) {\n\t\t\tconst index = this.shares.findIndex(item => item === share)\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.shares.splice(index, 1)\n\t\t},\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./SharingLinkList.vue?vue&type=template&id=8be1a6a2&\"\nimport script from \"./SharingLinkList.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingLinkList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.canLinkShare)?_c('ul',{staticClass:\"sharing-link-list\"},[(!_vm.hasLinkShares && _vm.canReshare)?_c('SharingEntryLink',{attrs:{\"can-reshare\":_vm.canReshare,\"file-info\":_vm.fileInfo},on:{\"add:share\":_vm.addShare}}):_vm._e(),_vm._v(\" \"),(_vm.hasShares)?_vm._l((_vm.shares),function(share,index){return _c('SharingEntryLink',{key:share.id,attrs:{\"can-reshare\":_vm.canReshare,\"share\":_vm.shares[index],\"file-info\":_vm.fileInfo},on:{\"update:share\":[function($event){return _vm.$set(_vm.shares, index, $event)},function($event){return _vm.awaitForShare.apply(void 0, arguments)}],\"add:share\":function($event){return _vm.addShare.apply(void 0, arguments)},\"remove:share\":_vm.removeShare}})}):_vm._e()],2):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<li class=\"sharing-entry\">\n\t\t<NcAvatar class=\"sharing-entry__avatar\"\n\t\t\t:is-no-user=\"share.type !== SHARE_TYPES.SHARE_TYPE_USER\"\n\t\t\t:user=\"share.shareWith\"\n\t\t\t:display-name=\"share.shareWithDisplayName\"\n\t\t\t:tooltip-message=\"share.type === SHARE_TYPES.SHARE_TYPE_USER ? share.shareWith : ''\"\n\t\t\t:menu-position=\"'left'\"\n\t\t\t:url=\"share.shareWithAvatar\" />\n\t\t<component :is=\"share.shareWithLink ? 'a' : 'div'\"\n\t\t\tv-tooltip.auto=\"tooltip\"\n\t\t\t:href=\"share.shareWithLink\"\n\t\t\tclass=\"sharing-entry__desc\">\n\t\t\t<span>{{ title }}<span v-if=\"!isUnique\" class=\"sharing-entry__desc-unique\"> ({{ share.shareWithDisplayNameUnique }})</span></span>\n\t\t\t<p v-if=\"hasStatus\">\n\t\t\t\t<span>{{ share.status.icon || '' }}</span>\n\t\t\t\t<span>{{ share.status.message || '' }}</span>\n\t\t\t</p>\n\t\t</component>\n\t\t<NcActions menu-align=\"right\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\t@close=\"onMenuClose\">\n\t\t\t<template v-if=\"share.canEdit\">\n\t\t\t\t<!-- edit permission -->\n\t\t\t\t<NcActionCheckbox ref=\"canEdit\"\n\t\t\t\t\t:checked.sync=\"canEdit\"\n\t\t\t\t\t:value=\"permissionsEdit\"\n\t\t\t\t\t:disabled=\"saving || !canSetEdit\">\n\t\t\t\t\t{{ t('files_sharing', 'Allow editing') }}\n\t\t\t\t</NcActionCheckbox>\n\n\t\t\t\t<!-- create permission -->\n\t\t\t\t<NcActionCheckbox v-if=\"isFolder\"\n\t\t\t\t\tref=\"canCreate\"\n\t\t\t\t\t:checked.sync=\"canCreate\"\n\t\t\t\t\t:value=\"permissionsCreate\"\n\t\t\t\t\t:disabled=\"saving || !canSetCreate\">\n\t\t\t\t\t{{ t('files_sharing', 'Allow creating') }}\n\t\t\t\t</NcActionCheckbox>\n\n\t\t\t\t<!-- delete permission -->\n\t\t\t\t<NcActionCheckbox v-if=\"isFolder\"\n\t\t\t\t\tref=\"canDelete\"\n\t\t\t\t\t:checked.sync=\"canDelete\"\n\t\t\t\t\t:value=\"permissionsDelete\"\n\t\t\t\t\t:disabled=\"saving || !canSetDelete\">\n\t\t\t\t\t{{ t('files_sharing', 'Allow deleting') }}\n\t\t\t\t</NcActionCheckbox>\n\n\t\t\t\t<!-- reshare permission -->\n\t\t\t\t<NcActionCheckbox v-if=\"config.isResharingAllowed\"\n\t\t\t\t\tref=\"canReshare\"\n\t\t\t\t\t:checked.sync=\"canReshare\"\n\t\t\t\t\t:value=\"permissionsShare\"\n\t\t\t\t\t:disabled=\"saving || !canSetReshare\">\n\t\t\t\t\t{{ t('files_sharing', 'Allow resharing') }}\n\t\t\t\t</NcActionCheckbox>\n\n\t\t\t\t<NcActionCheckbox v-if=\"isSetDownloadButtonVisible\"\n\t\t\t\t\tref=\"canDownload\"\n\t\t\t\t\t:checked.sync=\"canDownload\"\n\t\t\t\t\t:disabled=\"saving || !canSetDownload\">\n\t\t\t\t\t{{ allowDownloadText }}\n\t\t\t\t</NcActionCheckbox>\n\n\t\t\t\t<!-- expiration date -->\n\t\t\t\t<NcActionCheckbox :checked.sync=\"hasExpirationDate\"\n\t\t\t\t\t:disabled=\"config.isDefaultInternalExpireDateEnforced || saving\"\n\t\t\t\t\t@uncheck=\"onExpirationDisable\">\n\t\t\t\t\t{{ config.isDefaultInternalExpireDateEnforced\n\t\t\t\t\t\t? t('files_sharing', 'Expiration date enforced')\n\t\t\t\t\t\t: t('files_sharing', 'Set expiration date') }}\n\t\t\t\t</NcActionCheckbox>\n\t\t\t\t<NcActionInput v-if=\"hasExpirationDate\"\n\t\t\t\t\tref=\"expireDate\"\n\t\t\t\t\t:is-native-picker=\"true\"\n\t\t\t\t\t:hide-label=\"true\"\n\t\t\t\t\t:class=\"{ error: errors.expireDate}\"\n\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t:value=\"new Date(share.expireDate)\"\n\t\t\t\t\ttype=\"date\"\n\t\t\t\t\t:min=\"dateTomorrow\"\n\t\t\t\t\t:max=\"dateMaxEnforced\"\n\t\t\t\t\t@input=\"onExpirationChange\">\n\t\t\t\t\t{{ t('files_sharing', 'Enter a date') }}\n\t\t\t\t</NcActionInput>\n\n\t\t\t\t<!-- note -->\n\t\t\t\t<template v-if=\"canHaveNote\">\n\t\t\t\t\t<NcActionCheckbox :checked.sync=\"hasNote\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t@uncheck=\"queueUpdate('note')\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Note to recipient') }}\n\t\t\t\t\t</NcActionCheckbox>\n\t\t\t\t\t<NcActionTextEditable v-if=\"hasNote\"\n\t\t\t\t\t\tref=\"note\"\n\t\t\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\t\t\tcontent: errors.note,\n\t\t\t\t\t\t\tshow: errors.note,\n\t\t\t\t\t\t\ttrigger: 'manual'\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\t:class=\"{ error: errors.note}\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:value=\"share.newNote || share.note\"\n\t\t\t\t\t\ticon=\"icon-edit\"\n\t\t\t\t\t\t@update:value=\"onNoteChange\"\n\t\t\t\t\t\t@submit=\"onNoteSubmit\" />\n\t\t\t\t</template>\n\t\t\t</template>\n\n\t\t\t<NcActionButton v-if=\"share.canDelete\"\n\t\t\t\ticon=\"icon-close\"\n\t\t\t\t:disabled=\"saving\"\n\t\t\t\t@click.prevent=\"onDelete\">\n\t\t\t\t{{ t('files_sharing', 'Unshare') }}\n\t\t\t</NcActionButton>\n\t\t</NcActions>\n\t</li>\n</template>\n\n<script>\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar'\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions'\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton'\nimport NcActionCheckbox from '@nextcloud/vue/dist/Components/NcActionCheckbox'\nimport NcActionInput from '@nextcloud/vue/dist/Components/NcActionInput'\nimport NcActionTextEditable from '@nextcloud/vue/dist/Components/NcActionTextEditable'\nimport Tooltip from '@nextcloud/vue/dist/Directives/Tooltip'\n\nimport SharesMixin from '../mixins/SharesMixin.js'\n\nexport default {\n\tname: 'SharingEntry',\n\n\tcomponents: {\n\t\tNcActions,\n\t\tNcActionButton,\n\t\tNcActionCheckbox,\n\t\tNcActionInput,\n\t\tNcActionTextEditable,\n\t\tNcAvatar,\n\t},\n\n\tdirectives: {\n\t\tTooltip,\n\t},\n\n\tmixins: [SharesMixin],\n\n\tdata() {\n\t\treturn {\n\t\t\tpermissionsEdit: OC.PERMISSION_UPDATE,\n\t\t\tpermissionsCreate: OC.PERMISSION_CREATE,\n\t\t\tpermissionsDelete: OC.PERMISSION_DELETE,\n\t\t\tpermissionsRead: OC.PERMISSION_READ,\n\t\t\tpermissionsShare: OC.PERMISSION_SHARE,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\ttitle() {\n\t\t\tlet title = this.share.shareWithDisplayName\n\t\t\tif (this.share.type === this.SHARE_TYPES.SHARE_TYPE_GROUP) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'group')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_ROOM) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'conversation')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'remote')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'remote group')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_GUEST) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'guest')})`\n\t\t\t}\n\t\t\treturn title\n\t\t},\n\n\t\ttooltip() {\n\t\t\tif (this.share.owner !== this.share.uidFileOwner) {\n\t\t\t\tconst data = {\n\t\t\t\t\t// todo: strong or italic?\n\t\t\t\t\t// but the t function escape any html from the data :/\n\t\t\t\t\tuser: this.share.shareWithDisplayName,\n\t\t\t\t\towner: this.share.ownerDisplayName,\n\t\t\t\t}\n\n\t\t\t\tif (this.share.type === this.SHARE_TYPES.SHARE_TYPE_GROUP) {\n\t\t\t\t\treturn t('files_sharing', 'Shared with the group {user} by {owner}', data)\n\t\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_ROOM) {\n\t\t\t\t\treturn t('files_sharing', 'Shared with the conversation {user} by {owner}', data)\n\t\t\t\t}\n\n\t\t\t\treturn t('files_sharing', 'Shared with {user} by {owner}', data)\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\tcanHaveNote() {\n\t\t\treturn !this.isRemote\n\t\t},\n\n\t\tisRemote() {\n\t\t\treturn this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE\n\t\t\t\t|| this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP\n\t\t},\n\n\t\t/**\n\t\t * Can the sharer set whether the sharee can edit the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetEdit() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.sharePermissions & OC.PERMISSION_UPDATE) || this.canEdit\n\t\t},\n\n\t\t/**\n\t\t * Can the sharer set whether the sharee can create the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetCreate() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.sharePermissions & OC.PERMISSION_CREATE) || this.canCreate\n\t\t},\n\n\t\t/**\n\t\t * Can the sharer set whether the sharee can delete the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetDelete() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.sharePermissions & OC.PERMISSION_DELETE) || this.canDelete\n\t\t},\n\n\t\t/**\n\t\t * Can the sharer set whether the sharee can reshare the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetReshare() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.sharePermissions & OC.PERMISSION_SHARE) || this.canReshare\n\t\t},\n\n\t\t/**\n\t\t * Can the sharer set whether the sharee can download the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetDownload() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.canDownload() || this.canDownload)\n\t\t},\n\n\t\t/**\n\t\t * Can the sharee edit the shared file ?\n\t\t */\n\t\tcanEdit: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasUpdatePermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updatePermissions({ isEditChecked: checked })\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Can the sharee create the shared file ?\n\t\t */\n\t\tcanCreate: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasCreatePermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updatePermissions({ isCreateChecked: checked })\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Can the sharee delete the shared file ?\n\t\t */\n\t\tcanDelete: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasDeletePermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updatePermissions({ isDeleteChecked: checked })\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Can the sharee reshare the file ?\n\t\t */\n\t\tcanReshare: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasSharePermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updatePermissions({ isReshareChecked: checked })\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Can the sharee download files or only view them ?\n\t\t */\n\t\tcanDownload: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasDownloadPermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updatePermissions({ isDownloadChecked: checked })\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Is this share readable\n\t\t * Needed for some federated shares that might have been added from file drop links\n\t\t */\n\t\thasRead: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasReadPermission\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Is the current share a folder ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisFolder() {\n\t\t\treturn this.fileInfo.type === 'dir'\n\t\t},\n\n\t\t/**\n\t\t * Does the current share have an expiration date\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasExpirationDate: {\n\t\t\tget() {\n\t\t\t\treturn this.config.isDefaultInternalExpireDateEnforced || !!this.share.expireDate\n\t\t\t},\n\t\t\tset(enabled) {\n\t\t\t\tconst defaultExpirationDate = this.config.defaultInternalExpirationDate\n\t\t\t\t\t|| new Date(new Date().setDate(new Date().getDate() + 1))\n\t\t\t\tthis.share.expireDate = enabled\n\t\t\t\t\t? this.formatDateToString(defaultExpirationDate)\n\t\t\t\t\t: ''\n\t\t\t\tconsole.debug('Expiration date status', enabled, this.share.expireDate)\n\t\t\t},\n\t\t},\n\n\t\tdateMaxEnforced() {\n\t\t\tif (!this.isRemote && this.config.isDefaultInternalExpireDateEnforced) {\n\t\t\t\treturn new Date(new Date().setDate(new Date().getDate() + 1 + this.config.defaultInternalExpireDate))\n\t\t\t} else if (this.config.isDefaultRemoteExpireDateEnforced) {\n\t\t\t\treturn new Date(new Date().setDate(new Date().getDate() + 1 + this.config.defaultRemoteExpireDate))\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\t/**\n\t\t * @return {boolean}\n\t\t */\n\t\thasStatus() {\n\t\t\tif (this.share.type !== this.SHARE_TYPES.SHARE_TYPE_USER) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\treturn (typeof this.share.status === 'object' && !Array.isArray(this.share.status))\n\t\t},\n\n\t\t/**\n\t\t * @return {string}\n\t\t */\n\t\tallowDownloadText() {\n\t\t\treturn t('files_sharing', 'Allow download')\n\t\t},\n\n\t\t/**\n\t\t * @return {boolean}\n\t\t */\n\t\tisSetDownloadButtonVisible() {\n\t\t\tconst allowedMimetypes = [\n\t\t\t\t// Office documents\n\t\t\t\t'application/msword',\n\t\t\t\t'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n\t\t\t\t'application/vnd.ms-powerpoint',\n\t\t\t\t'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n\t\t\t\t'application/vnd.ms-excel',\n\t\t\t\t'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n\t\t\t\t'application/vnd.oasis.opendocument.text',\n\t\t\t\t'application/vnd.oasis.opendocument.spreadsheet',\n\t\t\t\t'application/vnd.oasis.opendocument.presentation',\n\t\t\t]\n\n\t\t\treturn this.isFolder || allowedMimetypes.includes(this.fileInfo.mimetype)\n\t\t},\n\t},\n\n\tmethods: {\n\t\tupdatePermissions({\n\t\t\tisEditChecked = this.canEdit,\n\t\t\tisCreateChecked = this.canCreate,\n\t\t\tisDeleteChecked = this.canDelete,\n\t\t\tisReshareChecked = this.canReshare,\n\t\t\tisDownloadChecked = this.canDownload,\n\t\t} = {}) {\n\t\t\t// calc permissions if checked\n\t\t\tconst permissions = 0\n\t\t\t\t| (this.hasRead ? this.permissionsRead : 0)\n\t\t\t\t| (isCreateChecked ? this.permissionsCreate : 0)\n\t\t\t\t| (isDeleteChecked ? this.permissionsDelete : 0)\n\t\t\t\t| (isEditChecked ? this.permissionsEdit : 0)\n\t\t\t\t| (isReshareChecked ? this.permissionsShare : 0)\n\n\t\t\tthis.share.permissions = permissions\n\t\t\tif (this.share.hasDownloadPermission !== isDownloadChecked) {\n\t\t\t\tthis.share.hasDownloadPermission = isDownloadChecked\n\t\t\t}\n\t\t\tthis.queueUpdate('permissions', 'attributes')\n\t\t},\n\n\t\t/**\n\t\t * Save potential changed data on menu close\n\t\t */\n\t\tonMenuClose() {\n\t\t\tthis.onNoteSubmit()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t\t&-unique {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntry.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntry.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntry.vue?vue&type=style&index=0&id=708928fe&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntry.vue?vue&type=style&index=0&id=708928fe&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntry.vue?vue&type=template&id=708928fe&scoped=true&\"\nimport script from \"./SharingEntry.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntry.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntry.vue?vue&type=style&index=0&id=708928fe&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"708928fe\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{staticClass:\"sharing-entry\"},[_c('NcAvatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"is-no-user\":_vm.share.type !== _vm.SHARE_TYPES.SHARE_TYPE_USER,\"user\":_vm.share.shareWith,\"display-name\":_vm.share.shareWithDisplayName,\"tooltip-message\":_vm.share.type === _vm.SHARE_TYPES.SHARE_TYPE_USER ? _vm.share.shareWith : '',\"menu-position\":'left',\"url\":_vm.share.shareWithAvatar}}),_vm._v(\" \"),_c(_vm.share.shareWithLink ? 'a' : 'div',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.tooltip),expression:\"tooltip\",modifiers:{\"auto\":true}}],tag:\"component\",staticClass:\"sharing-entry__desc\",attrs:{\"href\":_vm.share.shareWithLink}},[_c('span',[_vm._v(_vm._s(_vm.title)),(!_vm.isUnique)?_c('span',{staticClass:\"sharing-entry__desc-unique\"},[_vm._v(\" (\"+_vm._s(_vm.share.shareWithDisplayNameUnique)+\")\")]):_vm._e()]),_vm._v(\" \"),(_vm.hasStatus)?_c('p',[_c('span',[_vm._v(_vm._s(_vm.share.status.icon || ''))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.share.status.message || ''))])]):_vm._e()]),_vm._v(\" \"),_c('NcActions',{staticClass:\"sharing-entry__actions\",attrs:{\"menu-align\":\"right\"},on:{\"close\":_vm.onMenuClose}},[(_vm.share.canEdit)?[_c('NcActionCheckbox',{ref:\"canEdit\",attrs:{\"checked\":_vm.canEdit,\"value\":_vm.permissionsEdit,\"disabled\":_vm.saving || !_vm.canSetEdit},on:{\"update:checked\":function($event){_vm.canEdit=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow editing'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),(_vm.isFolder)?_c('NcActionCheckbox',{ref:\"canCreate\",attrs:{\"checked\":_vm.canCreate,\"value\":_vm.permissionsCreate,\"disabled\":_vm.saving || !_vm.canSetCreate},on:{\"update:checked\":function($event){_vm.canCreate=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow creating'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isFolder)?_c('NcActionCheckbox',{ref:\"canDelete\",attrs:{\"checked\":_vm.canDelete,\"value\":_vm.permissionsDelete,\"disabled\":_vm.saving || !_vm.canSetDelete},on:{\"update:checked\":function($event){_vm.canDelete=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow deleting'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.config.isResharingAllowed)?_c('NcActionCheckbox',{ref:\"canReshare\",attrs:{\"checked\":_vm.canReshare,\"value\":_vm.permissionsShare,\"disabled\":_vm.saving || !_vm.canSetReshare},on:{\"update:checked\":function($event){_vm.canReshare=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow resharing'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isSetDownloadButtonVisible)?_c('NcActionCheckbox',{ref:\"canDownload\",attrs:{\"checked\":_vm.canDownload,\"disabled\":_vm.saving || !_vm.canSetDownload},on:{\"update:checked\":function($event){_vm.canDownload=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.allowDownloadText)+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcActionCheckbox',{attrs:{\"checked\":_vm.hasExpirationDate,\"disabled\":_vm.config.isDefaultInternalExpireDateEnforced || _vm.saving},on:{\"update:checked\":function($event){_vm.hasExpirationDate=$event},\"uncheck\":_vm.onExpirationDisable}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.config.isDefaultInternalExpireDateEnforced\n\t\t\t\t\t? _vm.t('files_sharing', 'Expiration date enforced')\n\t\t\t\t\t: _vm.t('files_sharing', 'Set expiration date'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),(_vm.hasExpirationDate)?_c('NcActionInput',{ref:\"expireDate\",class:{ error: _vm.errors.expireDate},attrs:{\"is-native-picker\":true,\"hide-label\":true,\"disabled\":_vm.saving,\"value\":new Date(_vm.share.expireDate),\"type\":\"date\",\"min\":_vm.dateTomorrow,\"max\":_vm.dateMaxEnforced},on:{\"input\":_vm.onExpirationChange}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a date'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.canHaveNote)?[_c('NcActionCheckbox',{attrs:{\"checked\":_vm.hasNote,\"disabled\":_vm.saving},on:{\"update:checked\":function($event){_vm.hasNote=$event},\"uncheck\":function($event){return _vm.queueUpdate('note')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Note to recipient'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.hasNote)?_c('NcActionTextEditable',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\t\t\tcontent: _vm.errors.note,\n\t\t\t\t\t\tshow: _vm.errors.note,\n\t\t\t\t\t\ttrigger: 'manual'\n\t\t\t\t\t}),expression:\"{\\n\\t\\t\\t\\t\\t\\tcontent: errors.note,\\n\\t\\t\\t\\t\\t\\tshow: errors.note,\\n\\t\\t\\t\\t\\t\\ttrigger: 'manual'\\n\\t\\t\\t\\t\\t}\",modifiers:{\"auto\":true}}],ref:\"note\",class:{ error: _vm.errors.note},attrs:{\"disabled\":_vm.saving,\"value\":_vm.share.newNote || _vm.share.note,\"icon\":\"icon-edit\"},on:{\"update:value\":_vm.onNoteChange,\"submit\":_vm.onNoteSubmit}}):_vm._e()]:_vm._e()]:_vm._e(),_vm._v(\" \"),(_vm.share.canDelete)?_c('NcActionButton',{attrs:{\"icon\":\"icon-close\",\"disabled\":_vm.saving},on:{\"click\":function($event){$event.preventDefault();return _vm.onDelete.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Unshare'))+\"\\n\\t\\t\")]):_vm._e()],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<ul class=\"sharing-sharee-list\">\n\t\t<SharingEntry v-for=\"share in shares\"\n\t\t\t:key=\"share.id\"\n\t\t\t:file-info=\"fileInfo\"\n\t\t\t:share=\"share\"\n\t\t\t:is-unique=\"isUnique(share)\"\n\t\t\t@remove:share=\"removeShare\" />\n\t</ul>\n</template>\n\n<script>\n// eslint-disable-next-line no-unused-vars\nimport Share from '../models/Share'\nimport SharingEntry from '../components/SharingEntry'\nimport ShareTypes from '../mixins/ShareTypes'\n\nexport default {\n\tname: 'SharingList',\n\n\tcomponents: {\n\t\tSharingEntry,\n\t},\n\n\tmixins: [ShareTypes],\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\tshares: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\thasShares() {\n\t\t\treturn this.shares.length === 0\n\t\t},\n\t\tisUnique() {\n\t\t\treturn (share) => {\n\t\t\t\treturn [...this.shares].filter((item) => {\n\t\t\t\t\treturn share.type === this.SHARE_TYPES.SHARE_TYPE_USER && share.shareWithDisplayName === item.shareWithDisplayName\n\t\t\t\t}).length <= 1\n\t\t\t}\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Remove a share from the shares list\n\t\t *\n\t\t * @param {Share} share the share to remove\n\t\t */\n\t\tremoveShare(share) {\n\t\t\tconst index = this.shares.findIndex(item => item === share)\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.shares.splice(index, 1)\n\t\t},\n\t},\n}\n</script>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingList.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SharingList.vue?vue&type=template&id=0b29d4c0&\"\nimport script from \"./SharingList.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',{staticClass:\"sharing-sharee-list\"},_vm._l((_vm.shares),function(share){return _c('SharingEntry',{key:share.id,attrs:{\"file-info\":_vm.fileInfo,\"share\":share,\"is-unique\":_vm.isUnique(share)},on:{\"remove:share\":_vm.removeShare}})}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div :class=\"{ 'icon-loading': loading }\">\n\t\t<!-- error message -->\n\t\t<div v-if=\"error\" class=\"emptycontent\" :class=\"{ emptyContentWithSections: sections.length > 0 }\">\n\t\t\t<div class=\"icon icon-error\" />\n\t\t\t<h2>{{ error }}</h2>\n\t\t</div>\n\n\t\t<!-- shares content -->\n\t\t<div v-else class=\"sharingTab__content\">\n\t\t\t<!-- shared with me information -->\n\t\t\t<SharingEntrySimple v-if=\"isSharedWithMe\" v-bind=\"sharedWithMe\" class=\"sharing-entry__reshare\">\n\t\t\t\t<template #avatar>\n\t\t\t\t\t<NcAvatar :user=\"sharedWithMe.user\"\n\t\t\t\t\t\t:display-name=\"sharedWithMe.displayName\"\n\t\t\t\t\t\tclass=\"sharing-entry__avatar\"\n\t\t\t\t\t\ttooltip-message=\"\" />\n\t\t\t\t</template>\n\t\t\t</SharingEntrySimple>\n\n\t\t\t<!-- add new share input -->\n\t\t\t<SharingInput v-if=\"!loading\"\n\t\t\t\t:can-reshare=\"canReshare\"\n\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t:link-shares=\"linkShares\"\n\t\t\t\t:reshare=\"reshare\"\n\t\t\t\t:shares=\"shares\"\n\t\t\t\t@add:share=\"addShare\" />\n\n\t\t\t<!-- link shares list -->\n\t\t\t<SharingLinkList v-if=\"!loading\"\n\t\t\t\tref=\"linkShareList\"\n\t\t\t\t:can-reshare=\"canReshare\"\n\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t:shares=\"linkShares\" />\n\n\t\t\t<!-- other shares list -->\n\t\t\t<SharingList v-if=\"!loading\"\n\t\t\t\tref=\"shareList\"\n\t\t\t\t:shares=\"shares\"\n\t\t\t\t:file-info=\"fileInfo\" />\n\n\t\t\t<!-- inherited shares -->\n\t\t\t<SharingInherited v-if=\"canReshare && !loading\" :file-info=\"fileInfo\" />\n\n\t\t\t<!-- internal link copy -->\n\t\t\t<SharingEntryInternal :file-info=\"fileInfo\" />\n\n\t\t\t<!-- projects -->\n\t\t\t<CollectionList v-if=\"projectsEnabled && fileInfo\"\n\t\t\t\t:id=\"`${fileInfo.id}`\"\n\t\t\t\ttype=\"file\"\n\t\t\t\t:name=\"fileInfo.name\" />\n\t\t</div>\n\n\t\t<!-- additional entries, use it with cautious -->\n\t\t<div v-for=\"(section, index) in sections\"\n\t\t\t:ref=\"'section-' + index\"\n\t\t\t:key=\"index\"\n\t\t\tclass=\"sharingTab__additionalContent\">\n\t\t\t<component :is=\"section($refs['section-'+index], fileInfo)\" :file-info=\"fileInfo\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { CollectionList } from 'nextcloud-vue-collections'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar'\nimport axios from '@nextcloud/axios'\nimport { loadState } from '@nextcloud/initial-state'\n\nimport Config from '../services/ConfigService'\nimport { shareWithTitle } from '../utils/SharedWithMe'\nimport Share from '../models/Share'\nimport ShareTypes from '../mixins/ShareTypes'\nimport SharingEntryInternal from '../components/SharingEntryInternal'\nimport SharingEntrySimple from '../components/SharingEntrySimple'\nimport SharingInput from '../components/SharingInput'\n\nimport SharingInherited from './SharingInherited'\nimport SharingLinkList from './SharingLinkList'\nimport SharingList from './SharingList'\n\nexport default {\n\tname: 'SharingTab',\n\n\tcomponents: {\n\t\tNcAvatar,\n\t\tCollectionList,\n\t\tSharingEntryInternal,\n\t\tSharingEntrySimple,\n\t\tSharingInherited,\n\t\tSharingInput,\n\t\tSharingLinkList,\n\t\tSharingList,\n\t},\n\n\tmixins: [ShareTypes],\n\n\tdata() {\n\t\treturn {\n\t\t\tconfig: new Config(),\n\n\t\t\terror: '',\n\t\t\texpirationInterval: null,\n\t\t\tloading: true,\n\n\t\t\tfileInfo: null,\n\n\t\t\t// reshare Share object\n\t\t\treshare: null,\n\t\t\tsharedWithMe: {},\n\t\t\tshares: [],\n\t\t\tlinkShares: [],\n\n\t\t\tsections: OCA.Sharing.ShareTabSections.getSections(),\n\t\t\tprojectsEnabled: loadState('core', 'projects_enabled', false),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Is this share shared with me?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisSharedWithMe() {\n\t\t\treturn Object.keys(this.sharedWithMe).length > 0\n\t\t},\n\n\t\tcanReshare() {\n\t\t\treturn !!(this.fileInfo.permissions & OC.PERMISSION_SHARE)\n\t\t\t\t|| !!(this.reshare && this.reshare.hasSharePermission && this.config.isResharingAllowed)\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Update current fileInfo and fetch new data\n\t\t *\n\t\t * @param {object} fileInfo the current file FileInfo\n\t\t */\n\t\tasync update(fileInfo) {\n\t\t\tthis.fileInfo = fileInfo\n\t\t\tthis.resetState()\n\t\t\tthis.getShares()\n\t\t},\n\n\t\t/**\n\t\t * Get the existing shares infos\n\t\t */\n\t\tasync getShares() {\n\t\t\ttry {\n\t\t\t\tthis.loading = true\n\n\t\t\t\t// init params\n\t\t\t\tconst shareUrl = generateOcsUrl('apps/files_sharing/api/v1/shares')\n\t\t\t\tconst format = 'json'\n\t\t\t\t// TODO: replace with proper getFUllpath implementation of our own FileInfo model\n\t\t\t\tconst path = (this.fileInfo.path + '/' + this.fileInfo.name).replace('//', '/')\n\n\t\t\t\t// fetch shares\n\t\t\t\tconst fetchShares = axios.get(shareUrl, {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat,\n\t\t\t\t\t\tpath,\n\t\t\t\t\t\treshares: true,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tconst fetchSharedWithMe = axios.get(shareUrl, {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat,\n\t\t\t\t\t\tpath,\n\t\t\t\t\t\tshared_with_me: true,\n\t\t\t\t\t},\n\t\t\t\t})\n\n\t\t\t\t// wait for data\n\t\t\t\tconst [shares, sharedWithMe] = await Promise.all([fetchShares, fetchSharedWithMe])\n\t\t\t\tthis.loading = false\n\n\t\t\t\t// process results\n\t\t\t\tthis.processSharedWithMe(sharedWithMe)\n\t\t\t\tthis.processShares(shares)\n\t\t\t} catch (error) {\n\t\t\t\tif (error.response.data?.ocs?.meta?.message) {\n\t\t\t\t\tthis.error = error.response.data.ocs.meta.message\n\t\t\t\t} else {\n\t\t\t\t\tthis.error = t('files_sharing', 'Unable to load the shares list')\n\t\t\t\t}\n\t\t\t\tthis.loading = false\n\t\t\t\tconsole.error('Error loading the shares list', error)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Reset the current view to its default state\n\t\t */\n\t\tresetState() {\n\t\t\tclearInterval(this.expirationInterval)\n\t\t\tthis.loading = true\n\t\t\tthis.error = ''\n\t\t\tthis.sharedWithMe = {}\n\t\t\tthis.shares = []\n\t\t\tthis.linkShares = []\n\t\t},\n\n\t\t/**\n\t\t * Update sharedWithMe.subtitle with the appropriate\n\t\t * expiration time left\n\t\t *\n\t\t * @param {Share} share the sharedWith Share object\n\t\t */\n\t\tupdateExpirationSubtitle(share) {\n\t\t\tconst expiration = moment(share.expireDate).unix()\n\t\t\tthis.$set(this.sharedWithMe, 'subtitle', t('files_sharing', 'Expires {relativetime}', {\n\t\t\t\trelativetime: OC.Util.relativeModifiedDate(expiration * 1000),\n\t\t\t}))\n\n\t\t\t// share have expired\n\t\t\tif (moment().unix() > expiration) {\n\t\t\t\tclearInterval(this.expirationInterval)\n\t\t\t\t// TODO: clear ui if share is expired\n\t\t\t\tthis.$set(this.sharedWithMe, 'subtitle', t('files_sharing', 'this share just expired.'))\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Process the current shares data\n\t\t * and init shares[]\n\t\t *\n\t\t * @param {object} share the share ocs api request data\n\t\t * @param {object} share.data the request data\n\t\t */\n\t\tprocessShares({ data }) {\n\t\t\tif (data.ocs && data.ocs.data && data.ocs.data.length > 0) {\n\t\t\t\t// create Share objects and sort by newest\n\t\t\t\tconst shares = data.ocs.data\n\t\t\t\t\t.map(share => new Share(share))\n\t\t\t\t\t.sort((a, b) => b.createdTime - a.createdTime)\n\n\t\t\t\tthis.linkShares = shares.filter(share => share.type === this.SHARE_TYPES.SHARE_TYPE_LINK || share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL)\n\t\t\t\tthis.shares = shares.filter(share => share.type !== this.SHARE_TYPES.SHARE_TYPE_LINK && share.type !== this.SHARE_TYPES.SHARE_TYPE_EMAIL)\n\n\t\t\t\tconsole.debug('Processed', this.linkShares.length, 'link share(s)')\n\t\t\t\tconsole.debug('Processed', this.shares.length, 'share(s)')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Process the sharedWithMe share data\n\t\t * and init sharedWithMe\n\t\t *\n\t\t * @param {object} share the share ocs api request data\n\t\t * @param {object} share.data the request data\n\t\t */\n\t\tprocessSharedWithMe({ data }) {\n\t\t\tif (data.ocs && data.ocs.data && data.ocs.data[0]) {\n\t\t\t\tconst share = new Share(data)\n\t\t\t\tconst title = shareWithTitle(share)\n\t\t\t\tconst displayName = share.ownerDisplayName\n\t\t\t\tconst user = share.owner\n\n\t\t\t\tthis.sharedWithMe = {\n\t\t\t\t\tdisplayName,\n\t\t\t\t\ttitle,\n\t\t\t\t\tuser,\n\t\t\t\t}\n\t\t\t\tthis.reshare = share\n\n\t\t\t\t// If we have an expiration date, use it as subtitle\n\t\t\t\t// Refresh the status every 10s and clear if expired\n\t\t\t\tif (share.expireDate && moment(share.expireDate).unix() > moment().unix()) {\n\t\t\t\t\t// first update\n\t\t\t\t\tthis.updateExpirationSubtitle(share)\n\t\t\t\t\t// interval update\n\t\t\t\t\tthis.expirationInterval = setInterval(this.updateExpirationSubtitle, 10000, share)\n\t\t\t\t}\n\t\t\t} else if (this.fileInfo && this.fileInfo.shareOwnerId !== undefined ? this.fileInfo.shareOwnerId !== OC.currentUser : false) {\n\t\t\t\t// Fallback to compare owner and current user.\n\t\t\t\tthis.sharedWithMe = {\n\t\t\t\t\tdisplayName: this.fileInfo.shareOwner,\n\t\t\t\t\ttitle: t(\n\t\t\t\t\t\t'files_sharing',\n\t\t\t\t\t\t'Shared with you by {owner}',\n\t\t\t\t\t\t{ owner: this.fileInfo.shareOwner },\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t{ escape: false }\n\t\t\t\t\t),\n\t\t\t\t\tuser: this.fileInfo.shareOwnerId,\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Add a new share into the shares list\n\t\t * and return the newly created share component\n\t\t *\n\t\t * @param {Share} share the share to add to the array\n\t\t * @param {Function} [resolve] a function to run after the share is added and its component initialized\n\t\t */\n\t\taddShare(share, resolve = () => {}) {\n\t\t\t// only catching share type MAIL as link shares are added differently\n\t\t\t// meaning: not from the ShareInput\n\t\t\tif (share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\tthis.linkShares.unshift(share)\n\t\t\t} else {\n\t\t\t\tthis.shares.unshift(share)\n\t\t\t}\n\t\t\tthis.awaitForShare(share, resolve)\n\t\t},\n\n\t\t/**\n\t\t * Await for next tick and render after the list updated\n\t\t * Then resolve with the matched vue component of the\n\t\t * provided share object\n\t\t *\n\t\t * @param {Share} share newly created share\n\t\t * @param {Function} resolve a function to execute after\n\t\t */\n\t\tawaitForShare(share, resolve) {\n\t\t\tlet listComponent = this.$refs.shareList\n\t\t\t// Only mail shares comes from the input, link shares\n\t\t\t// are managed internally in the SharingLinkList component\n\t\t\tif (share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\tlistComponent = this.$refs.linkShareList\n\t\t\t}\n\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tconst newShare = listComponent.$children.find(component => component.share === share)\n\t\t\t\tif (newShare) {\n\t\t\t\t\tresolve(newShare)\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.emptyContentWithSections {\n\tmargin: 1rem auto;\n}\n\n.sharingTab {\n\t&__content {\n\t\tpadding: 0 6px;\n\t}\n\t&__additionalContent {\n\t\tmargin: 44px 0;\n\t}\n}\n</style>\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { Type as ShareTypes } from '@nextcloud/sharing'\n\nconst shareWithTitle = function(share) {\n\tif (share.type === ShareTypes.SHARE_TYPE_GROUP) {\n\t\treturn t(\n\t\t\t'files_sharing',\n\t\t\t'Shared with you and the group {group} by {owner}',\n\t\t\t{\n\t\t\t\tgroup: share.shareWithDisplayName,\n\t\t\t\towner: share.ownerDisplayName,\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{ escape: false }\n\t\t)\n\t} else if (share.type === ShareTypes.SHARE_TYPE_CIRCLE) {\n\t\treturn t(\n\t\t\t'files_sharing',\n\t\t\t'Shared with you and {circle} by {owner}',\n\t\t\t{\n\t\t\t\tcircle: share.shareWithDisplayName,\n\t\t\t\towner: share.ownerDisplayName,\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{ escape: false }\n\t\t)\n\t} else if (share.type === ShareTypes.SHARE_TYPE_ROOM) {\n\t\tif (share.shareWithDisplayName) {\n\t\t\treturn t(\n\t\t\t\t'files_sharing',\n\t\t\t\t'Shared with you and the conversation {conversation} by {owner}',\n\t\t\t\t{\n\t\t\t\t\tconversation: share.shareWithDisplayName,\n\t\t\t\t\towner: share.ownerDisplayName,\n\t\t\t\t},\n\t\t\t\tundefined,\n\t\t\t\t{ escape: false }\n\t\t\t)\n\t\t} else {\n\t\t\treturn t(\n\t\t\t\t'files_sharing',\n\t\t\t\t'Shared with you in a conversation by {owner}',\n\t\t\t\t{\n\t\t\t\t\towner: share.ownerDisplayName,\n\t\t\t\t},\n\t\t\t\tundefined,\n\t\t\t\t{ escape: false }\n\t\t\t)\n\t\t}\n\t} else {\n\t\treturn t(\n\t\t\t'files_sharing',\n\t\t\t'Shared with you by {owner}',\n\t\t\t{ owner: share.ownerDisplayName },\n\t\t\tundefined,\n\t\t\t{ escape: false }\n\t\t)\n\t}\n}\n\nexport { shareWithTitle }\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingTab.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingTab.vue?vue&type=style&index=0&id=59d829c2&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingTab.vue?vue&type=style&index=0&id=59d829c2&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingTab.vue?vue&type=template&id=59d829c2&scoped=true&\"\nimport script from \"./SharingTab.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingTab.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingTab.vue?vue&type=style&index=0&id=59d829c2&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"59d829c2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:{ 'icon-loading': _vm.loading }},[(_vm.error)?_c('div',{staticClass:\"emptycontent\",class:{ emptyContentWithSections: _vm.sections.length > 0 }},[_c('div',{staticClass:\"icon icon-error\"}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.error))])]):_c('div',{staticClass:\"sharingTab__content\"},[(_vm.isSharedWithMe)?_c('SharingEntrySimple',_vm._b({staticClass:\"sharing-entry__reshare\",scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('NcAvatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"user\":_vm.sharedWithMe.user,\"display-name\":_vm.sharedWithMe.displayName,\"tooltip-message\":\"\"}})]},proxy:true}],null,false,1656378807)},'SharingEntrySimple',_vm.sharedWithMe,false)):_vm._e(),_vm._v(\" \"),(!_vm.loading)?_c('SharingInput',{attrs:{\"can-reshare\":_vm.canReshare,\"file-info\":_vm.fileInfo,\"link-shares\":_vm.linkShares,\"reshare\":_vm.reshare,\"shares\":_vm.shares},on:{\"add:share\":_vm.addShare}}):_vm._e(),_vm._v(\" \"),(!_vm.loading)?_c('SharingLinkList',{ref:\"linkShareList\",attrs:{\"can-reshare\":_vm.canReshare,\"file-info\":_vm.fileInfo,\"shares\":_vm.linkShares}}):_vm._e(),_vm._v(\" \"),(!_vm.loading)?_c('SharingList',{ref:\"shareList\",attrs:{\"shares\":_vm.shares,\"file-info\":_vm.fileInfo}}):_vm._e(),_vm._v(\" \"),(_vm.canReshare && !_vm.loading)?_c('SharingInherited',{attrs:{\"file-info\":_vm.fileInfo}}):_vm._e(),_vm._v(\" \"),_c('SharingEntryInternal',{attrs:{\"file-info\":_vm.fileInfo}}),_vm._v(\" \"),(_vm.projectsEnabled && _vm.fileInfo)?_c('CollectionList',{attrs:{\"id\":(\"\" + (_vm.fileInfo.id)),\"type\":\"file\",\"name\":_vm.fileInfo.name}}):_vm._e()],1),_vm._v(\" \"),_vm._l((_vm.sections),function(section,index){return _c('div',{key:index,ref:'section-' + index,refInFor:true,staticClass:\"sharingTab__additionalContent\"},[_c(section(_vm.$refs['section-'+index], _vm.fileInfo),{tag:\"component\",attrs:{\"file-info\":_vm.fileInfo}})],1)})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class ShareSearch {\n\n\t_state\n\n\tconstructor() {\n\t\t// init empty state\n\t\tthis._state = {}\n\n\t\t// init default values\n\t\tthis._state.results = []\n\t\tconsole.debug('OCA.Sharing.ShareSearch initialized')\n\t}\n\n\t/**\n\t * Get the state\n\t *\n\t * @readonly\n\t * @memberof ShareSearch\n\t * @return {object} the data state\n\t */\n\tget state() {\n\t\treturn this._state\n\t}\n\n\t/**\n\t * Register a new result\n\t * Mostly used by the guests app.\n\t * We should consider deprecation and add results via php ?\n\t *\n\t * @param {object} result entry to append\n\t * @param {string} [result.user] entry user\n\t * @param {string} result.displayName entry first line\n\t * @param {string} [result.desc] entry second line\n\t * @param {string} [result.icon] entry icon\n\t * @param {Function} result.handler function to run on entry selection\n\t * @param {Function} [result.condition] condition to add entry or not\n\t * @return {boolean}\n\t */\n\taddNewResult(result) {\n\t\tif (result.displayName.trim() !== ''\n\t\t\t&& typeof result.handler === 'function') {\n\t\t\tthis._state.results.push(result)\n\t\t\treturn true\n\t\t}\n\t\tconsole.error('Invalid search result provided', result)\n\t\treturn false\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class ExternalLinkActions {\n\n\t_state\n\n\tconstructor() {\n\t\t// init empty state\n\t\tthis._state = {}\n\n\t\t// init default values\n\t\tthis._state.actions = []\n\t\tconsole.debug('OCA.Sharing.ExternalLinkActions initialized')\n\t}\n\n\t/**\n\t * Get the state\n\t *\n\t * @readonly\n\t * @memberof ExternalLinkActions\n\t * @return {object} the data state\n\t */\n\tget state() {\n\t\treturn this._state\n\t}\n\n\t/**\n\t * Register a new action for the link share\n\t * Mostly used by the social sharing app.\n\t *\n\t * @param {object} action new action component to register\n\t * @return {boolean}\n\t */\n\tregisterAction(action) {\n\t\tconsole.warn('OCA.Sharing.ExternalLinkActions is deprecated, use OCA.Sharing.ExternalShareAction instead')\n\n\t\tif (typeof action === 'object' && action.icon && action.name && action.url) {\n\t\t\tthis._state.actions.push(action)\n\t\t\treturn true\n\t\t}\n\t\tconsole.error('Invalid action provided', action)\n\t\treturn false\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class ExternalShareActions {\n\n\t_state\n\n\tconstructor() {\n\t\t// init empty state\n\t\tthis._state = {}\n\n\t\t// init default values\n\t\tthis._state.actions = []\n\t\tconsole.debug('OCA.Sharing.ExternalShareActions initialized')\n\t}\n\n\t/**\n\t * Get the state\n\t *\n\t * @readonly\n\t * @memberof ExternalLinkActions\n\t * @return {object} the data state\n\t */\n\tget state() {\n\t\treturn this._state\n\t}\n\n\t/**\n\t * Register a new option/entry for the a given share type\n\t *\n\t * @param {object} action new action component to register\n\t * @param {string} action.id unique action id\n\t * @param {Function} action.data data to bind the component to\n\t * @param {Array} action.shareType list of \\@nextcloud/sharing.Types.SHARE_XXX to be mounted on\n\t * @param {object} action.handlers list of listeners\n\t * @return {boolean}\n\t */\n\tregisterAction(action) {\n\t\t// Validate action\n\t\tif (typeof action !== 'object'\n\t\t\t|| typeof action.id !== 'string'\n\t\t\t|| typeof action.data !== 'function' // () => {disabled: true}\n\t\t\t|| !Array.isArray(action.shareType) // [\\@nextcloud/sharing.Types.SHARE_TYPE_LINK, ...]\n\t\t\t|| typeof action.handlers !== 'object' // {click: () => {}, ...}\n\t\t\t|| !Object.values(action.handlers).every(handler => typeof handler === 'function')) {\n\t\t\tconsole.error('Invalid action provided', action)\n\t\t\treturn false\n\t\t}\n\n\t\t// Check duplicates\n\t\tconst hasDuplicate = this._state.actions.findIndex(check => check.id === action.id) > -1\n\t\tif (hasDuplicate) {\n\t\t\tconsole.error(`An action with the same id ${action.id} already exists`, action)\n\t\t\treturn false\n\t\t}\n\n\t\tthis._state.actions.push(action)\n\t\treturn true\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class TabSections {\n\n\t_sections\n\n\tconstructor() {\n\t\tthis._sections = []\n\t}\n\n\t/**\n\t * @param {registerSectionCallback} section To be called to mount the section to the sharing sidebar\n\t */\n\tregisterSection(section) {\n\t\tthis._sections.push(section)\n\t}\n\n\tgetSections() {\n\t\treturn this._sections\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport VueClipboard from 'vue-clipboard2'\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n'\n\nimport SharingTab from './views/SharingTab.vue'\nimport ShareSearch from './services/ShareSearch.js'\nimport ExternalLinkActions from './services/ExternalLinkActions.js'\nimport ExternalShareActions from './services/ExternalShareActions.js'\nimport TabSections from './services/TabSections.js'\n\n// eslint-disable-next-line node/no-missing-import, import/no-unresolved\nimport ShareVariant from '@mdi/svg/svg/share-variant.svg?raw'\n\n// Init Sharing Tab Service\nif (!window.OCA.Sharing) {\n\twindow.OCA.Sharing = {}\n}\nObject.assign(window.OCA.Sharing, { ShareSearch: new ShareSearch() })\nObject.assign(window.OCA.Sharing, { ExternalLinkActions: new ExternalLinkActions() })\nObject.assign(window.OCA.Sharing, { ExternalShareActions: new ExternalShareActions() })\nObject.assign(window.OCA.Sharing, { ShareTabSections: new TabSections() })\n\nVue.prototype.t = t\nVue.prototype.n = n\nVue.use(VueClipboard)\n\n// Init Sharing tab component\nconst View = Vue.extend(SharingTab)\nlet TabInstance = null\n\nwindow.addEventListener('DOMContentLoaded', function() {\n\tif (OCA.Files && OCA.Files.Sidebar) {\n\t\tOCA.Files.Sidebar.registerTab(new OCA.Files.Sidebar.Tab({\n\t\t\tid: 'sharing',\n\t\t\tname: t('files_sharing', 'Sharing'),\n\t\t\ticonSvg: ShareVariant,\n\n\t\t\tasync mount(el, fileInfo, context) {\n\t\t\t\tif (TabInstance) {\n\t\t\t\t\tTabInstance.$destroy()\n\t\t\t\t}\n\t\t\t\tTabInstance = new View({\n\t\t\t\t\t// Better integration with vue parent component\n\t\t\t\t\tparent: context,\n\t\t\t\t})\n\t\t\t\t// Only mount after we have all the info we need\n\t\t\t\tawait TabInstance.update(fileInfo)\n\t\t\t\tTabInstance.$mount(el)\n\t\t\t},\n\t\t\tupdate(fileInfo) {\n\t\t\t\tTabInstance.update(fileInfo)\n\t\t\t},\n\t\t\tdestroy() {\n\t\t\t\tTabInstance.$destroy()\n\t\t\t\tTabInstance = null\n\t\t\t},\n\t\t}))\n\t}\n})\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".error[data-v-5e957d09] .action-checkbox__label:before{border:1px solid var(--color-error)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharePermissionsEditor.vue\"],\"names\":[],\"mappings\":\"AAiSC,wDACC,mCAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.error {\\n\\t::v-deep .action-checkbox__label:before {\\n\\t\\tborder: 1px solid var(--color-error);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry[data-v-708928fe]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-708928fe]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-708928fe]{color:var(--color-text-maxcontrast)}.sharing-entry__desc-unique[data-v-708928fe]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-708928fe]{margin-left:auto}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntry.vue\"],\"names\":[],\"mappings\":\"AAmdA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAED,6CACC,mCAAA,CAGF,yCACC,gBAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\theight: 44px;\\n\\t&__desc {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: space-between;\\n\\t\\tpadding: 8px;\\n\\t\\tline-height: 1.2em;\\n\\t\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t\\t&-unique {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\t&__actions {\\n\\t\\tmargin-left: auto;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry[data-v-2bbe78b4]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-2bbe78b4]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-2bbe78b4]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-2bbe78b4]{margin-left:auto}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryInherited.vue\"],\"names\":[],\"mappings\":\"AAgGA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAGF,yCACC,gBAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\theight: 44px;\\n\\t&__desc {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: space-between;\\n\\t\\tpadding: 8px;\\n\\t\\tline-height: 1.2em;\\n\\t\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\t&__actions {\\n\\t\\tmargin-left: auto;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry__internal .avatar-external[data-v-95f87a66]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}.sharing-entry__internal .icon-checkmark-color[data-v-95f87a66]{opacity:1}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryInternal.vue\"],\"names\":[],\"mappings\":\"AAiHC,2DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA,CAED,gEACC,SAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.sharing-entry__internal {\\n\\t.avatar-external {\\n\\t\\twidth: 32px;\\n\\t\\theight: 32px;\\n\\t\\tline-height: 32px;\\n\\t\\tfont-size: 18px;\\n\\t\\tbackground-color: var(--color-text-maxcontrast);\\n\\t\\tborder-radius: 50%;\\n\\t\\tflex-shrink: 0;\\n\\t}\\n\\t.icon-checkmark-color {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry[data-v-182f91a3]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-182f91a3]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em;overflow:hidden}.sharing-entry__desc p[data-v-182f91a3]{color:var(--color-text-maxcontrast)}.sharing-entry__title[data-v-182f91a3]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.sharing-entry:not(.sharing-entry--share) .sharing-entry__actions .new-share-link[data-v-182f91a3]{border-top:1px solid var(--color-border)}.sharing-entry[data-v-182f91a3] .avatar-link-share{background-color:var(--color-primary)}.sharing-entry .sharing-entry__action--public-upload[data-v-182f91a3]{border-bottom:1px solid var(--color-border)}.sharing-entry__loading[data-v-182f91a3]{width:44px;height:44px;margin:0;padding:14px;margin-left:auto}.sharing-entry .action-item[data-v-182f91a3]{margin-left:auto}.sharing-entry .action-item~.action-item[data-v-182f91a3],.sharing-entry .action-item~.sharing-entry__loading[data-v-182f91a3]{margin-left:0}.sharing-entry .icon-checkmark-color[data-v-182f91a3]{opacity:1}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryLink.vue\"],\"names\":[],\"mappings\":\"AAu3BA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,eAAA,CAEA,wCACC,mCAAA,CAGF,uCACC,sBAAA,CACA,eAAA,CACA,kBAAA,CAIA,mGACC,wCAAA,CAIF,oDACC,qCAAA,CAGD,sEACC,2CAAA,CAGD,yCACC,UAAA,CACA,WAAA,CACA,QAAA,CACA,YAAA,CACA,gBAAA,CAKD,6CACC,gBAAA,CACA,+HAEC,aAAA,CAIF,sDACC,SAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tmin-height: 44px;\\n\\t&__desc {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: space-between;\\n\\t\\tpadding: 8px;\\n\\t\\tline-height: 1.2em;\\n\\t\\toverflow: hidden;\\n\\n\\t\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\t&__title {\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\toverflow: hidden;\\n\\t\\twhite-space: nowrap;\\n\\t}\\n\\n\\t&:not(.sharing-entry--share) &__actions {\\n\\t\\t.new-share-link {\\n\\t\\t\\tborder-top: 1px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t::v-deep .avatar-link-share {\\n\\t\\tbackground-color: var(--color-primary);\\n\\t}\\n\\n\\t.sharing-entry__action--public-upload {\\n\\t\\tborder-bottom: 1px solid var(--color-border);\\n\\t}\\n\\n\\t&__loading {\\n\\t\\twidth: 44px;\\n\\t\\theight: 44px;\\n\\t\\tmargin: 0;\\n\\t\\tpadding: 14px;\\n\\t\\tmargin-left: auto;\\n\\t}\\n\\n\\t// put menus to the left\\n\\t// but only the first one\\n\\t.action-item {\\n\\t\\tmargin-left: auto;\\n\\t\\t~ .action-item,\\n\\t\\t~ .sharing-entry__loading {\\n\\t\\t\\tmargin-left: 0;\\n\\t\\t}\\n\\t}\\n\\n\\t.icon-checkmark-color {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry[data-v-73184f79]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-73184f79]{padding:8px;line-height:1.2em;position:relative;flex:1 1;min-width:0}.sharing-entry__desc p[data-v-73184f79]{color:var(--color-text-maxcontrast)}.sharing-entry__title[data-v-73184f79]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:inherit}.sharing-entry__actions[data-v-73184f79]{margin-left:auto !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntrySimple.vue\"],\"names\":[],\"mappings\":\"AA4FA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,WAAA,CACA,iBAAA,CACA,iBAAA,CACA,QAAA,CACA,WAAA,CACA,wCACC,mCAAA,CAGF,uCACC,kBAAA,CACA,sBAAA,CACA,eAAA,CACA,iBAAA,CAED,yCACC,2BAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tmin-height: 44px;\\n\\t&__desc {\\n\\t\\tpadding: 8px;\\n\\t\\tline-height: 1.2em;\\n\\t\\tposition: relative;\\n\\t\\tflex: 1 1;\\n\\t\\tmin-width: 0;\\n\\t\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\t&__title {\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\toverflow: hidden;\\n\\t\\tmax-width: inherit;\\n\\t}\\n\\t&__actions {\\n\\t\\tmargin-left: auto !important;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-search{display:flex;flex-direction:column;margin-bottom:4px}.sharing-search label[for=sharing-search-input]{margin-bottom:2px}.sharing-search__input{width:100%;margin:10px 0}.sharing-search__input .multiselect__option span[lookup] .avatardiv{background-image:var(--icon-search-white);background-repeat:no-repeat;background-position:center;background-color:var(--color-text-maxcontrast) !important}.sharing-search__input .multiselect__option span[lookup] .avatardiv div{display:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingInput.vue\"],\"names\":[],\"mappings\":\"AA+gBA,gBACC,YAAA,CACA,qBAAA,CACA,iBAAA,CAEA,gDACC,iBAAA,CAGD,uBACC,UAAA,CACA,aAAA,CAKE,oEACC,yCAAA,CACA,2BAAA,CACA,0BAAA,CACA,yDAAA,CACA,wEACC,YAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.sharing-search {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tmargin-bottom: 4px;\\n\\n\\tlabel[for=\\\"sharing-search-input\\\"] {\\n\\t\\tmargin-bottom: 2px;\\n\\t}\\n\\n\\t&__input {\\n\\t\\twidth: 100%;\\n\\t\\tmargin: 10px 0;\\n\\n\\t\\t// properly style the lookup entry\\n\\t\\t.multiselect__option {\\n\\t\\t\\tspan[lookup] {\\n\\t\\t\\t\\t.avatardiv {\\n\\t\\t\\t\\t\\tbackground-image: var(--icon-search-white);\\n\\t\\t\\t\\t\\tbackground-repeat: no-repeat;\\n\\t\\t\\t\\t\\tbackground-position: center;\\n\\t\\t\\t\\t\\tbackground-color: var(--color-text-maxcontrast) !important;\\n\\t\\t\\t\\t\\tdiv {\\n\\t\\t\\t\\t\\t\\tdisplay: none;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry__inherited .avatar-shared[data-v-6a277822]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/views/SharingInherited.vue\"],\"names\":[],\"mappings\":\"AAgKC,0DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.sharing-entry__inherited {\\n\\t.avatar-shared {\\n\\t\\twidth: 32px;\\n\\t\\theight: 32px;\\n\\t\\tline-height: 32px;\\n\\t\\tfont-size: 18px;\\n\\t\\tbackground-color: var(--color-text-maxcontrast);\\n\\t\\tborder-radius: 50%;\\n\\t\\tflex-shrink: 0;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".emptyContentWithSections[data-v-59d829c2]{margin:1rem auto}.sharingTab__content[data-v-59d829c2]{padding:0 6px}.sharingTab__additionalContent[data-v-59d829c2]{margin:44px 0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/views/SharingTab.vue\"],\"names\":[],\"mappings\":\"AA2WA,2CACC,gBAAA,CAIA,sCACC,aAAA,CAED,gDACC,aAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.emptyContentWithSections {\\n\\tmargin: 1rem auto;\\n}\\n\\n.sharingTab {\\n\\t&__content {\\n\\t\\tpadding: 0 6px;\\n\\t}\\n\\t&__additionalContent {\\n\\t\\tmargin: 44px 0;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 7870;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t7870: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], function() { return __webpack_require__(77217); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","Config","document","getElementsByClassName","dataset","allowPublicUpload","getElementById","value","OC","appConfig","core","federatedCloudShareDoc","this","isDefaultExpireDateEnabled","Date","setDate","getDate","defaultExpireDate","isDefaultInternalExpireDateEnabled","defaultInternalExpireDate","isDefaultRemoteExpireDateEnabled","defaultRemoteExpireDate","enforcePasswordForPublicLink","enableLinkPasswordByDefault","defaultExpireDateEnforced","defaultExpireDateEnabled","defaultInternalExpireDateEnforced","defaultRemoteExpireDateEnforced","defaultInternalExpireDateEnabled","defaultRemoteExpireDateEnabled","remoteShareAllowed","capabilities","getCapabilities","undefined","files_sharing","sharebymail","public","enabled","resharingAllowed","password","enforced","sharee","always_show_unique","allowGroupSharing","parseInt","config","password_policy","Share","ocsData","ocs","data","hide_download","mail_send","attributes","JSON","parse","e","console","warn","_share","id","share_type","permissions","uid_owner","displayname_owner","share_with","share_with_displayname","share_with_displayname_unique","share_with_link","share_with_avatar","uid_file_owner","displayname_file_owner","stime","expiration","date","token","note","label","state","password_expiration_time","passwordExpirationTime","send_password_by_talk","sendPasswordByTalk","path","item_type","mimetype","file_source","file_target","file_parent","PERMISSION_READ","PERMISSION_CREATE","PERMISSION_DELETE","PERMISSION_UPDATE","PERMISSION_SHARE","i","attr","scope","key","setAttribute","attrUpdate","push","can_edit","can_delete","via_fileid","via_path","parent","storage_id","storage","item_source","status","SHARE_TYPES","ShareTypes","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","_h","$createElement","_c","_self","staticClass","_t","_v","directives","name","rawName","expression","_s","title","subtitle","_e","$slots","ref","attrs","ariaExpandedValue","t","internalLinkSubtitle","scopedSlots","_u","fn","proxy","on","$event","preventDefault","copyLink","apply","arguments","copied","copySuccess","clipboardTooltip","passwordSet","passwordPolicy","api","generate","axios","request","info","Array","fill","reduce","prev","curr","charAt","Math","floor","random","length","shareUrl","generateOcsUrl","methods","createShare","shareType","shareWith","publicUpload","expireDate","error","errorMessage","response","meta","message","Notification","showTemporary","type","deleteShare","updateShare","properties","Error","canReshare","loading","inputPlaceholder","asyncFind","addShare","noResultText","mixins","SharesRequests","props","fileInfo","Object","default","required","share","isUnique","Boolean","errors","saving","open","updateQueue","PQueue","concurrency","reactiveState","computed","hasNote","get","set","dateTomorrow","lang","weekdaysShort","window","dayNamesShort","monthsShort","monthNamesShort","formatLocale","firstDayOfWeek","firstDay","weekdaysMin","monthFormat","isShareOwner","owner","getCurrentUser","uid","checkShare","trim","expirationDate","isValid","parseDateString","match","pop","formatDateToString","UTC","getFullYear","getMonth","toISOString","split","onExpirationChange","queueUpdate","onExpirationDisable","onNoteChange","$set","onNoteSubmit","newNote","$delete","showSuccess","onDelete","debug","itemType","$emit","propertyNames","forEach","stringify","toString","add","updatedShare","indexOf","onSyncError","property","propertyEl","$refs","$el","focusable","querySelector","focus","debounceQueueUpdate","debounce","shareWithDisplayName","initiator","ownerDisplayName","viaPath","viaFileid","viaFileTargetUrl","folder","viaFolderName","mainTitle","subTitle","showInheritedShares","showInheritedSharesIcon","stopPropagation","toggleInheritedShares","toggleTooltip","_l","is","_g","_b","tag","action","handlers","text","ATOMIC_PERMISSIONS","NONE","READ","UPDATE","CREATE","DELETE","SHARE","BUNDLED_PERMISSIONS","READ_ONLY","UPLOAD_AND_UPDATE","FILE_DROP","ALL","hasPermissions","initialPermissionSet","permissionsToCheck","permissionsSetIsValid","permissionsSet","togglePermissions","permissionsToToggle","permissionsToSubtract","subtractPermissions","permissionsToAdd","addPermissions","permissionSet","isFolder","shareHasPermissions","atomicPermissions","toggleSharePermissions","fileHasCreatePermission","isPublicUploadEnabled","showCustomPermissionsForm","class","sharePermissionsSetIsValid","canToggleSharePermissions","sharePermissionEqual","bundledPermissions","randomFormName","setSharePermissions","sharePermissionsIsBundle","sharePermissionsSummary","isEmailShareType","pending","pendingPassword","pendingExpirationDate","onMenuClose","canEdit","content","show","trigger","defaultContainer","modifiers","newLabel","onLabelChange","onLabelSubmit","hideDownload","canChangeHideDownload","isPasswordProtected","onPasswordDisable","hasUnsavedPassword","newPassword","onPasswordChange","onPasswordSubmit","isPasswordProtectedByTalk","canTogglePasswordProtectedByTalkAvailable","onPasswordProtectedByTalkChange","hasExpirationDate","isDefaultExpireDateEnforced","dateMaxEnforced","index","icon","url","shareLink","onNewLinkShare","isPasswordPolicyEnabled","minLength","onCancel","hasLinkShares","shares","awaitForShare","removeShare","SHARE_TYPE_USER","shareWithAvatar","shareWithLink","shareWithDisplayNameUnique","permissionsEdit","canSetEdit","canCreate","permissionsCreate","canSetCreate","canDelete","permissionsDelete","canSetDelete","permissionsShare","canSetReshare","canDownload","canSetDownload","allowDownloadText","isDefaultInternalExpireDateEnforced","group","escape","circle","conversation","emptyContentWithSections","sections","sharedWithMe","user","displayName","linkShares","reshare","projectsEnabled","section","refInFor","ShareSearch","_state","results","result","handler","ExternalLinkActions","actions","ExternalShareActions","isArray","values","every","findIndex","check","TabSections","_sections","OCA","Sharing","assign","ShareTabSections","Vue","n","VueClipboard","View","SharingTab","TabInstance","addEventListener","Files","Sidebar","registerTab","Tab","iconSvg","ShareVariant","mount","el","context","$destroy","update","$mount","destroy","___CSS_LOADER_EXPORT___","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","call","m","amdD","amdO","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","keys","splice","r","getter","__esModule","d","a","definition","o","defineProperty","enumerable","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","bind","nc","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file +{"version":3,"file":"files_sharing-files_sharing_tab.js?v=501652bacf5cd1e734a8","mappings":"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eAJA,uBAOA,aAPA,SAQA,4BARA,4CAUA,EAQA,eAnBA,SAmBA,iOACA,cAEA,qEACA,MAGA,GACA,8BACA,+BACA,gCACA,sCACA,gCACA,8BACA,+BACA,gCAGA,uDACA,uCAGA,OAtBA,kBAwBA,yEACA,QACA,cACA,iDACA,SACA,SACA,wCACA,eA/BA,OAwBA,EAxBA,gEAmCA,iDAnCA,2BAuCA,kBACA,wBACA,WAGA,kEACA,kEAGA,+BACA,qDAEA,sDACA,+BACA,qDAEA,sDAIA,KACA,qBACA,QACA,mBACA,YACA,iDACA,YAKA,8EAEA,kCAGA,0BACA,sBAGA,mBACA,oBAEA,mBACA,GANA,CAOA,OAEA,iCAEA,mCACA,oDAEA,CACA,IAEA,aACA,0CA/FA,2DAgGA,EAOA,wCACA,yCACA,QAKA,mBAjIA,WAiIA,4JACA,aAEA,OAHA,kBAKA,qFACA,QACA,cACA,4BARA,OAKA,EALA,8DAYA,qDAZA,2BAiBA,8EAGA,uCACA,+CAGA,+CACA,qDACA,UAEA,aACA,kDA7BA,0DA8BA,EASA,wBAxKA,SAwKA,cACA,+BAEA,oBACA,SAEA,IACA,sDAEA,kDACA,SAIA,kDACA,QAEA,CAGA,uDAEA,QADA,oDACA,kCACA,aAEA,CAEA,qCAEA,OADA,sBACA,CACA,OAGA,2BACA,WACA,yBACA,QAEA,CAIA,SAGA,CAFA,SACA,QACA,CACA,QACA,MACA,EAQA,gBAhOA,SAgOA,GACA,UACA,uCAKA,kBACA,8CACA,uCACA,mBACA,uCACA,kBACA,wCACA,oBACA,sCACA,kBACA,sCACA,kBAEA,QACA,SAEA,EAQA,qBA/PA,SA+PA,GACA,MACA,8FACA,gEACA,2DACA,+DACA,eAEA,yDACA,wBACA,OACA,oDACA,MALA,2DAOA,OACA,8DACA,4BACA,4BACA,+BACA,8DACA,4BACA,WACA,4DACA,6CAEA,EAOA,SA/RA,SA+RA,sKACA,SADA,gCAEA,6BAFA,cAKA,wBACA,oEACA,IAPA,mBAQA,GARA,WAYA,UAZA,iCAaA,aAbA,cAaA,EAbA,OAcA,8BAdA,mBAeA,GAfA,WAkBA,aACA,yD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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/files_sharing/src/services/ConfigService.js","webpack:///nextcloud/apps/files_sharing/src/models/Share.js","webpack:///nextcloud/apps/files_sharing/src/mixins/ShareTypes.js","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntrySimple.vue?2231","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntrySimple.vue?cb12","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue?vue&type=template&id=73184f79&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInternal.vue?cb7c","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInternal.vue?4c20","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue?vue&type=template&id=257ca35d&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/utils/GeneratePassword.js","webpack:///nextcloud/apps/files_sharing/src/mixins/ShareRequests.js","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingInput.vue?1f8b","webpack://nextcloud/./apps/files_sharing/src/components/SharingInput.vue?3d7c","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue?vue&type=template&id=16a26106&","webpack:///nextcloud/apps/files_sharing/src/mixins/SharesMixin.js","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInherited.vue?fbbc","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryInherited.vue?0e5a","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue?vue&type=template&id=2bbe78b4&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/views/SharingInherited.vue?3a90","webpack://nextcloud/./apps/files_sharing/src/views/SharingInherited.vue?1677","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue?vue&type=template&id=6a277822&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/ExternalShareAction.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/components/ExternalShareAction.vue","webpack://nextcloud/./apps/files_sharing/src/components/ExternalShareAction.vue?9bf3","webpack:///nextcloud/apps/files_sharing/src/components/ExternalShareAction.vue?vue&type=template&id=29f555e7&","webpack:///nextcloud/apps/files_sharing/src/lib/SharePermissionsToolBox.js","webpack:///nextcloud/apps/files_sharing/src/components/SharePermissionsEditor.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/components/SharePermissionsEditor.vue","webpack://nextcloud/./apps/files_sharing/src/components/SharePermissionsEditor.vue?7624","webpack://nextcloud/./apps/files_sharing/src/components/SharePermissionsEditor.vue?f133","webpack:///nextcloud/apps/files_sharing/src/components/SharePermissionsEditor.vue?vue&type=template&id=5e957d09&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryLink.vue?fc46","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntryLink.vue?af90","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue?vue&type=template&id=eb63f3b4&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/views/SharingLinkList.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/files_sharing/src/views/SharingLinkList.vue","webpack://nextcloud/./apps/files_sharing/src/views/SharingLinkList.vue?a70b","webpack:///nextcloud/apps/files_sharing/src/views/SharingLinkList.vue?vue&type=template&id=8be1a6a2&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntry.vue?36e0","webpack://nextcloud/./apps/files_sharing/src/components/SharingEntry.vue?10a7","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue?vue&type=template&id=708928fe&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/views/SharingList.vue","webpack:///nextcloud/apps/files_sharing/src/views/SharingList.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/views/SharingList.vue?9f9c","webpack:///nextcloud/apps/files_sharing/src/views/SharingList.vue?vue&type=template&id=0b29d4c0&","webpack:///nextcloud/apps/files_sharing/src/views/SharingTab.vue","webpack:///nextcloud/apps/files_sharing/src/utils/SharedWithMe.js","webpack:///nextcloud/apps/files_sharing/src/views/SharingTab.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/files_sharing/src/views/SharingTab.vue?2bc8","webpack://nextcloud/./apps/files_sharing/src/views/SharingTab.vue?6997","webpack:///nextcloud/apps/files_sharing/src/views/SharingTab.vue?vue&type=template&id=59d829c2&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/services/ShareSearch.js","webpack:///nextcloud/apps/files_sharing/src/services/ExternalLinkActions.js","webpack:///nextcloud/apps/files_sharing/src/services/ExternalShareActions.js","webpack:///nextcloud/apps/files_sharing/src/services/TabSections.js","webpack:///nextcloud/apps/files_sharing/src/files_sharing_tab.js","webpack:///nextcloud/apps/files_sharing/src/components/SharePermissionsEditor.vue?vue&type=style&index=0&id=5e957d09&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntry.vue?vue&type=style&index=0&id=708928fe&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInherited.vue?vue&type=style&index=0&id=2bbe78b4&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryInternal.vue?vue&type=style&index=0&id=257ca35d&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntryLink.vue?vue&type=style&index=0&id=eb63f3b4&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingEntrySimple.vue?vue&type=style&index=0&id=73184f79&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/components/SharingInput.vue?vue&type=style&index=0&lang=scss&","webpack:///nextcloud/apps/files_sharing/src/views/SharingInherited.vue?vue&type=style&index=0&id=6a277822&lang=scss&scoped=true&","webpack:///nextcloud/apps/files_sharing/src/views/SharingTab.vue?vue&type=style&index=0&id=59d829c2&scoped=true&lang=scss&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/amd define","webpack:///nextcloud/webpack/runtime/amd options","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class Config {\n\n\t/**\n\t * Is public upload allowed on link shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isPublicUploadEnabled() {\n\t\treturn document.getElementsByClassName('files-filestable')[0]\n\t\t\t&& document.getElementsByClassName('files-filestable')[0].dataset.allowPublicUpload === 'yes'\n\t}\n\n\t/**\n\t * Are link share allowed ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isShareWithLinkAllowed() {\n\t\treturn document.getElementById('allowShareWithLink')\n\t\t\t&& document.getElementById('allowShareWithLink').value === 'yes'\n\t}\n\n\t/**\n\t * Get the federated sharing documentation link\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget federatedShareDocLink() {\n\t\treturn OC.appConfig.core.federatedCloudShareDoc\n\t}\n\n\t/**\n\t * Get the default link share expiration date\n\t *\n\t * @return {Date|null}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultExpirationDate() {\n\t\tif (this.isDefaultExpireDateEnabled) {\n\t\t\treturn new Date(new Date().setDate(new Date().getDate() + this.defaultExpireDate))\n\t\t}\n\t\treturn null\n\t}\n\n\t/**\n\t * Get the default internal expiration date\n\t *\n\t * @return {Date|null}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultInternalExpirationDate() {\n\t\tif (this.isDefaultInternalExpireDateEnabled) {\n\t\t\treturn new Date(new Date().setDate(new Date().getDate() + this.defaultInternalExpireDate))\n\t\t}\n\t\treturn null\n\t}\n\n\t/**\n\t * Get the default remote expiration date\n\t *\n\t * @return {Date|null}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultRemoteExpirationDateString() {\n\t\tif (this.isDefaultRemoteExpireDateEnabled) {\n\t\t\treturn new Date(new Date().setDate(new Date().getDate() + this.defaultRemoteExpireDate))\n\t\t}\n\t\treturn null\n\t}\n\n\t/**\n\t * Are link shares password-enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget enforcePasswordForPublicLink() {\n\t\treturn OC.appConfig.core.enforcePasswordForPublicLink === true\n\t}\n\n\t/**\n\t * Is password asked by default on link shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget enableLinkPasswordByDefault() {\n\t\treturn OC.appConfig.core.enableLinkPasswordByDefault === true\n\t}\n\n\t/**\n\t * Is link shares expiration enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultExpireDateEnforced() {\n\t\treturn OC.appConfig.core.defaultExpireDateEnforced === true\n\t}\n\n\t/**\n\t * Is there a default expiration date for new link shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultExpireDateEnabled() {\n\t\treturn OC.appConfig.core.defaultExpireDateEnabled === true\n\t}\n\n\t/**\n\t * Is internal shares expiration enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultInternalExpireDateEnforced() {\n\t\treturn OC.appConfig.core.defaultInternalExpireDateEnforced === true\n\t}\n\n\t/**\n\t * Is remote shares expiration enforced ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultRemoteExpireDateEnforced() {\n\t\treturn OC.appConfig.core.defaultRemoteExpireDateEnforced === true\n\t}\n\n\t/**\n\t * Is there a default expiration date for new internal shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultInternalExpireDateEnabled() {\n\t\treturn OC.appConfig.core.defaultInternalExpireDateEnabled === true\n\t}\n\n\t/**\n\t * Is there a default expiration date for new remote shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isDefaultRemoteExpireDateEnabled() {\n\t\treturn OC.appConfig.core.defaultRemoteExpireDateEnabled === true\n\t}\n\n\t/**\n\t * Are users on this server allowed to send shares to other servers ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isRemoteShareAllowed() {\n\t\treturn OC.appConfig.core.remoteShareAllowed === true\n\t}\n\n\t/**\n\t * Is sharing my mail (link share) enabled ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isMailShareAllowed() {\n\t\tconst capabilities = OC.getCapabilities()\n\t\t// eslint-disable-next-line camelcase\n\t\treturn capabilities?.files_sharing?.sharebymail !== undefined\n\t\t\t// eslint-disable-next-line camelcase\n\t\t\t&& capabilities?.files_sharing?.public?.enabled === true\n\t}\n\n\t/**\n\t * Get the default days to link shares expiration\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultExpireDate() {\n\t\treturn OC.appConfig.core.defaultExpireDate\n\t}\n\n\t/**\n\t * Get the default days to internal shares expiration\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultInternalExpireDate() {\n\t\treturn OC.appConfig.core.defaultInternalExpireDate\n\t}\n\n\t/**\n\t * Get the default days to remote shares expiration\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget defaultRemoteExpireDate() {\n\t\treturn OC.appConfig.core.defaultRemoteExpireDate\n\t}\n\n\t/**\n\t * Is resharing allowed ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isResharingAllowed() {\n\t\treturn OC.appConfig.core.resharingAllowed === true\n\t}\n\n\t/**\n\t * Is password enforced for mail shares ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget isPasswordForMailSharesRequired() {\n\t\treturn (OC.getCapabilities().files_sharing.sharebymail === undefined) ? false : OC.getCapabilities().files_sharing.sharebymail.password.enforced\n\t}\n\n\t/**\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget shouldAlwaysShowUnique() {\n\t\treturn (OC.getCapabilities().files_sharing?.sharee?.always_show_unique === true)\n\t}\n\n\t/**\n\t * Is sharing with groups allowed ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget allowGroupSharing() {\n\t\treturn OC.appConfig.core.allowGroupSharing === true\n\t}\n\n\t/**\n\t * Get the maximum results of a share search\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget maxAutocompleteResults() {\n\t\treturn parseInt(OC.config['sharing.maxAutocompleteResults'], 10) || 25\n\t}\n\n\t/**\n\t * Get the minimal string length\n\t * to initiate a share search\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget minSearchStringLength() {\n\t\treturn parseInt(OC.config['sharing.minSearchStringLength'], 10) || 0\n\t}\n\n\t/**\n\t * Get the password policy config\n\t *\n\t * @return {object}\n\t * @readonly\n\t * @memberof Config\n\t */\n\tget passwordPolicy() {\n\t\tconst capabilities = OC.getCapabilities()\n\t\treturn capabilities.password_policy ? capabilities.password_policy : {}\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Gary Kim <gary@garykim.dev>\n * @author Georg Ehrke <oc.list@georgehrke.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class Share {\n\n\t_share\n\n\t/**\n\t * Create the share object\n\t *\n\t * @param {object} ocsData ocs request response\n\t */\n\tconstructor(ocsData) {\n\t\tif (ocsData.ocs && ocsData.ocs.data && ocsData.ocs.data[0]) {\n\t\t\tocsData = ocsData.ocs.data[0]\n\t\t}\n\n\t\t// convert int into boolean\n\t\tocsData.hide_download = !!ocsData.hide_download\n\t\tocsData.mail_send = !!ocsData.mail_send\n\n\t\tif (ocsData.attributes) {\n\t\t\ttry {\n\t\t\t\tocsData.attributes = JSON.parse(ocsData.attributes)\n\t\t\t} catch (e) {\n\t\t\t\tconsole.warn('Could not parse share attributes returned by server: \"' + ocsData.attributes + '\"')\n\t\t\t}\n\t\t}\n\t\tocsData.attributes = ocsData.attributes ?? []\n\n\t\t// store state\n\t\tthis._share = ocsData\n\t}\n\n\t/**\n\t * Get the share state\n\t * ! used for reactivity purpose\n\t * Do not remove. It allow vuejs to\n\t * inject its watchers into the #share\n\t * state and make the whole class reactive\n\t *\n\t * @return {object} the share raw state\n\t * @readonly\n\t * @memberof Sidebar\n\t */\n\tget state() {\n\t\treturn this._share\n\t}\n\n\t/**\n\t * get the share id\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget id() {\n\t\treturn this._share.id\n\t}\n\n\t/**\n\t * Get the share type\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget type() {\n\t\treturn this._share.share_type\n\t}\n\n\t/**\n\t * Get the share permissions\n\t * See OC.PERMISSION_* variables\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget permissions() {\n\t\treturn this._share.permissions\n\t}\n\n\t/**\n\t * Get the share attributes\n\t *\n\t * @return {Array}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget attributes() {\n\t\treturn this._share.attributes\n\t}\n\n\t/**\n\t * Set the share permissions\n\t * See OC.PERMISSION_* variables\n\t *\n\t * @param {number} permissions valid permission, See OC.PERMISSION_* variables\n\t * @memberof Share\n\t */\n\tset permissions(permissions) {\n\t\tthis._share.permissions = permissions\n\t}\n\n\t// SHARE OWNER --------------------------------------------------\n\t/**\n\t * Get the share owner uid\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget owner() {\n\t\treturn this._share.uid_owner\n\t}\n\n\t/**\n\t * Get the share owner's display name\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget ownerDisplayName() {\n\t\treturn this._share.displayname_owner\n\t}\n\n\t// SHARED WITH --------------------------------------------------\n\t/**\n\t * Get the share with entity uid\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWith() {\n\t\treturn this._share.share_with\n\t}\n\n\t/**\n\t * Get the share with entity display name\n\t * fallback to its uid if none\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithDisplayName() {\n\t\treturn this._share.share_with_displayname\n\t\t\t|| this._share.share_with\n\t}\n\n\t/**\n\t * Unique display name in case of multiple\n\t * duplicates results with the same name.\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithDisplayNameUnique() {\n\t\treturn this._share.share_with_displayname_unique\n\t\t\t|| this._share.share_with\n\t}\n\n\t/**\n\t * Get the share with entity link\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithLink() {\n\t\treturn this._share.share_with_link\n\t}\n\n\t/**\n\t * Get the share with avatar if any\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget shareWithAvatar() {\n\t\treturn this._share.share_with_avatar\n\t}\n\n\t// SHARED FILE OR FOLDER OWNER ----------------------------------\n\t/**\n\t * Get the shared item owner uid\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget uidFileOwner() {\n\t\treturn this._share.uid_file_owner\n\t}\n\n\t/**\n\t * Get the shared item display name\n\t * fallback to its uid if none\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget displaynameFileOwner() {\n\t\treturn this._share.displayname_file_owner\n\t\t\t|| this._share.uid_file_owner\n\t}\n\n\t// TIME DATA ----------------------------------------------------\n\t/**\n\t * Get the share creation timestamp\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget createdTime() {\n\t\treturn this._share.stime\n\t}\n\n\t/**\n\t * Get the expiration date\n\t *\n\t * @return {string} date with YYYY-MM-DD format\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget expireDate() {\n\t\treturn this._share.expiration\n\t}\n\n\t/**\n\t * Set the expiration date\n\t *\n\t * @param {string} date the share expiration date with YYYY-MM-DD format\n\t * @memberof Share\n\t */\n\tset expireDate(date) {\n\t\tthis._share.expiration = date\n\t}\n\n\t// EXTRA DATA ---------------------------------------------------\n\t/**\n\t * Get the public share token\n\t *\n\t * @return {string} the token\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget token() {\n\t\treturn this._share.token\n\t}\n\n\t/**\n\t * Get the share note if any\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget note() {\n\t\treturn this._share.note\n\t}\n\n\t/**\n\t * Set the share note if any\n\t *\n\t * @param {string} note the note\n\t * @memberof Share\n\t */\n\tset note(note) {\n\t\tthis._share.note = note\n\t}\n\n\t/**\n\t * Get the share label if any\n\t * Should only exist on link shares\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget label() {\n\t\treturn this._share.label\n\t}\n\n\t/**\n\t * Set the share label if any\n\t * Should only be set on link shares\n\t *\n\t * @param {string} label the label\n\t * @memberof Share\n\t */\n\tset label(label) {\n\t\tthis._share.label = label\n\t}\n\n\t/**\n\t * Have a mail been sent\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget mailSend() {\n\t\treturn this._share.mail_send === true\n\t}\n\n\t/**\n\t * Hide the download button on public page\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hideDownload() {\n\t\treturn this._share.hide_download === true\n\t}\n\n\t/**\n\t * Hide the download button on public page\n\t *\n\t * @param {boolean} state hide the button ?\n\t * @memberof Share\n\t */\n\tset hideDownload(state) {\n\t\tthis._share.hide_download = state === true\n\t}\n\n\t/**\n\t * Password protection of the share\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget password() {\n\t\treturn this._share.password\n\t}\n\n\t/**\n\t * Password protection of the share\n\t *\n\t * @param {string} password the share password\n\t * @memberof Share\n\t */\n\tset password(password) {\n\t\tthis._share.password = password\n\t}\n\n\t/**\n\t * Password expiration time\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget passwordExpirationTime() {\n\t\treturn this._share.password_expiration_time\n\t}\n\n\t/**\n\t * Password expiration time\n\t *\n\t * @param {string} password expiration time\n\t * @memberof Share\n\t */\n\tset passwordExpirationTime(passwordExpirationTime) {\n\t\tthis._share.password_expiration_time = passwordExpirationTime\n\t}\n\n\t/**\n\t * Password protection by Talk of the share\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget sendPasswordByTalk() {\n\t\treturn this._share.send_password_by_talk\n\t}\n\n\t/**\n\t * Password protection by Talk of the share\n\t *\n\t * @param {boolean} sendPasswordByTalk whether to send the password by Talk\n\t * or not\n\t * @memberof Share\n\t */\n\tset sendPasswordByTalk(sendPasswordByTalk) {\n\t\tthis._share.send_password_by_talk = sendPasswordByTalk\n\t}\n\n\t// SHARED ITEM DATA ---------------------------------------------\n\t/**\n\t * Get the shared item absolute full path\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget path() {\n\t\treturn this._share.path\n\t}\n\n\t/**\n\t * Return the item type: file or folder\n\t *\n\t * @return {string} 'folder' or 'file'\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget itemType() {\n\t\treturn this._share.item_type\n\t}\n\n\t/**\n\t * Get the shared item mimetype\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget mimetype() {\n\t\treturn this._share.mimetype\n\t}\n\n\t/**\n\t * Get the shared item id\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget fileSource() {\n\t\treturn this._share.file_source\n\t}\n\n\t/**\n\t * Get the target path on the receiving end\n\t * e.g the file /xxx/aaa will be shared in\n\t * the receiving root as /aaa, the fileTarget is /aaa\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget fileTarget() {\n\t\treturn this._share.file_target\n\t}\n\n\t/**\n\t * Get the parent folder id if any\n\t *\n\t * @return {number}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget fileParent() {\n\t\treturn this._share.file_parent\n\t}\n\n\t// PERMISSIONS Shortcuts\n\n\t/**\n\t * Does this share have READ permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasReadPermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_READ))\n\t}\n\n\t/**\n\t * Does this share have CREATE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasCreatePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_CREATE))\n\t}\n\n\t/**\n\t * Does this share have DELETE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasDeletePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_DELETE))\n\t}\n\n\t/**\n\t * Does this share have UPDATE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasUpdatePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_UPDATE))\n\t}\n\n\t/**\n\t * Does this share have SHARE permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasSharePermission() {\n\t\treturn !!((this.permissions & OC.PERMISSION_SHARE))\n\t}\n\n\t/**\n\t * Does this share have download permissions\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget hasDownloadPermission() {\n\t\tfor (const i in this._share.attributes) {\n\t\t\tconst attr = this._share.attributes[i]\n\t\t\tif (attr.scope === 'permissions' && attr.key === 'download') {\n\t\t\t\treturn attr.enabled\n\t\t\t}\n\t\t}\n\n\t\treturn true\n\t}\n\n\tset hasDownloadPermission(enabled) {\n\t\tthis.setAttribute('permissions', 'download', !!enabled)\n\t}\n\n\tsetAttribute(scope, key, enabled) {\n\t\tconst attrUpdate = {\n\t\t\tscope,\n\t\t\tkey,\n\t\t\tenabled,\n\t\t}\n\n\t\t// try and replace existing\n\t\tfor (const i in this._share.attributes) {\n\t\t\tconst attr = this._share.attributes[i]\n\t\t\tif (attr.scope === attrUpdate.scope && attr.key === attrUpdate.key) {\n\t\t\t\tthis._share.attributes[i] = attrUpdate\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\n\t\tthis._share.attributes.push(attrUpdate)\n\t}\n\n\t// PERMISSIONS Shortcuts for the CURRENT USER\n\t// ! the permissions above are the share settings,\n\t// ! meaning the permissions for the recipient\n\t/**\n\t * Can the current user EDIT this share ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget canEdit() {\n\t\treturn this._share.can_edit === true\n\t}\n\n\t/**\n\t * Can the current user DELETE this share ?\n\t *\n\t * @return {boolean}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget canDelete() {\n\t\treturn this._share.can_delete === true\n\t}\n\n\t/**\n\t * Top level accessible shared folder fileid for the current user\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget viaFileid() {\n\t\treturn this._share.via_fileid\n\t}\n\n\t/**\n\t * Top level accessible shared folder path for the current user\n\t *\n\t * @return {string}\n\t * @readonly\n\t * @memberof Share\n\t */\n\tget viaPath() {\n\t\treturn this._share.via_path\n\t}\n\n\t// TODO: SORT THOSE PROPERTIES\n\n\tget parent() {\n\t\treturn this._share.parent\n\t}\n\n\tget storageId() {\n\t\treturn this._share.storage_id\n\t}\n\n\tget storage() {\n\t\treturn this._share.storage\n\t}\n\n\tget itemSource() {\n\t\treturn this._share.item_source\n\t}\n\n\tget status() {\n\t\treturn this._share.status\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { Type as ShareTypes } from '@nextcloud/sharing'\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tSHARE_TYPES: ShareTypes,\n\t\t}\n\t},\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntrySimple.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntrySimple.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<li class=\"sharing-entry\">\n\t\t<slot name=\"avatar\" />\n\t\t<div v-tooltip=\"tooltip\" class=\"sharing-entry__desc\">\n\t\t\t<span class=\"sharing-entry__title\">{{ title }}</span>\n\t\t\t<p v-if=\"subtitle\">\n\t\t\t\t{{ subtitle }}\n\t\t\t</p>\n\t\t</div>\n\t\t<NcActions ref=\"actionsComponent\"\n\t\t\tv-if=\"$slots['default']\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\tmenu-align=\"right\"\n\t\t\t:aria-expanded=\"ariaExpandedValue\">\n\t\t\t<slot />\n\t\t</NcActions>\n\t</li>\n</template>\n\n<script>\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions'\nimport Tooltip from '@nextcloud/vue/dist/Directives/Tooltip'\n\nexport default {\n\tname: 'SharingEntrySimple',\n\n\tcomponents: {\n\t\tNcActions,\n\t},\n\n\tdirectives: {\n\t\tTooltip,\n\t},\n\n\tprops: {\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t\trequired: true,\n\t\t},\n\t\ttooltip: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tsubtitle: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tisUnique: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tariaExpanded: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tariaExpandedValue() {\n\t\t\tif (this.ariaExpanded === null) {\n\t\t\t\treturn this.ariaExpanded\n\t\t\t}\n\t\t\treturn this.ariaExpanded ? 'true' : 'false'\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\t&__desc {\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tposition: relative;\n\t\tflex: 1 1;\n\t\tmin-width: 0;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__title {\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\tmax-width: inherit;\n\t}\n\t&__actions {\n\t\tmargin-left: auto !important;\n\t}\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntrySimple.vue?vue&type=style&index=0&id=73184f79&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntrySimple.vue?vue&type=style&index=0&id=73184f79&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntrySimple.vue?vue&type=template&id=73184f79&scoped=true&\"\nimport script from \"./SharingEntrySimple.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntrySimple.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntrySimple.vue?vue&type=style&index=0&id=73184f79&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"73184f79\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{staticClass:\"sharing-entry\"},[_vm._t(\"avatar\"),_vm._v(\" \"),_c('div',{directives:[{name:\"tooltip\",rawName:\"v-tooltip\",value:(_vm.tooltip),expression:\"tooltip\"}],staticClass:\"sharing-entry__desc\"},[_c('span',{staticClass:\"sharing-entry__title\"},[_vm._v(_vm._s(_vm.title))]),_vm._v(\" \"),(_vm.subtitle)?_c('p',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.subtitle)+\"\\n\\t\\t\")]):_vm._e()]),_vm._v(\" \"),(_vm.$slots['default'])?_c('NcActions',{ref:\"actionsComponent\",staticClass:\"sharing-entry__actions\",attrs:{\"menu-align\":\"right\",\"aria-expanded\":_vm.ariaExpandedValue}},[_vm._t(\"default\")],2):_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n<template>\n\t<ul>\n\t\t<SharingEntrySimple ref=\"shareEntrySimple\"\n\t\t\tclass=\"sharing-entry__internal\"\n\t\t\t:title=\"t('files_sharing', 'Internal link')\"\n\t\t\t:subtitle=\"internalLinkSubtitle\">\n\t\t\t<template #avatar>\n\t\t\t\t<div class=\"avatar-external icon-external-white\" />\n\t\t\t</template>\n\n\t\t\t<NcActionButton :aria-label=\"t('files_sharing', 'Copy internal link to clipboard')\"\n\t\t\t\t@click.prevent=\"copyLink\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Check v-if=\"copied && copySuccess\" :size=\"20\" />\n\t\t\t\t\t<ClipboardTextMultipleOutline v-else :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\t{{ clipboardTooltip }}\n\t\t\t</NcActionButton>\n\t\t</SharingEntrySimple>\n\t</ul>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { showSuccess } from '@nextcloud/dialogs'\nimport { NcActionButton } from '@nextcloud/vue'\nimport SharingEntrySimple from './SharingEntrySimple'\n\nimport Check from 'vue-material-design-icons/Check.vue'\nimport ClipboardTextMultipleOutline from 'vue-material-design-icons/ClipboardTextMultipleOutline.vue'\n\nexport default {\n\tname: 'SharingEntryInternal',\n\n\tcomponents: {\n\t\tCheck,\n\t\tClipboardTextMultipleOutline,\n\t\tNcActionButton,\n\t\tSharingEntrySimple,\n\t},\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tcopied: false,\n\t\t\tcopySuccess: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Get the internal link to this file id\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tinternalLink() {\n\t\t\treturn window.location.protocol + '//' + window.location.host + generateUrl('/f/') + this.fileInfo.id\n\t\t},\n\n\t\t/**\n\t\t * Clipboard v-tooltip message\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tclipboardTooltip() {\n\t\t\tif (this.copied) {\n\t\t\t\tif (this.copySuccess) {\n\t\t\t\t\treturn ''\n\t\t\t\t}\n\t\t\t\treturn t('files_sharing', 'Cannot copy, please copy the link manually')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Copy to clipboard')\n\t\t},\n\n\t\tinternalLinkSubtitle() {\n\t\t\tif (this.fileInfo.type === 'dir') {\n\t\t\t\treturn t('files_sharing', 'Only works for users with access to this folder')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Only works for users with access to this file')\n\t\t},\n\t},\n\n\tmethods: {\n\t\tasync copyLink() {\n\t\t\ttry {\n\t\t\t\tawait this.$copyText(this.internalLink)\n\t\t\t\tshowSuccess(t('files_sharing', 'Link copied'))\n\t\t\t\t// focus and show the tooltip (note: cannot set ref on NcActionLink)\n\t\t\t\tthis.$refs.shareEntrySimple.$refs.actionsComponent.$el.focus()\n\t\t\t\tthis.copySuccess = true\n\t\t\t\tthis.copied = true\n\t\t\t} catch (error) {\n\t\t\t\tthis.copySuccess = false\n\t\t\t\tthis.copied = true\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.copySuccess = false\n\t\t\t\t\tthis.copied = false\n\t\t\t\t}, 4000)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry__internal {\n\t.avatar-external {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInternal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInternal.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInternal.vue?vue&type=style&index=0&id=257ca35d&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInternal.vue?vue&type=style&index=0&id=257ca35d&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntryInternal.vue?vue&type=template&id=257ca35d&scoped=true&\"\nimport script from \"./SharingEntryInternal.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntryInternal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntryInternal.vue?vue&type=style&index=0&id=257ca35d&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"257ca35d\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',[_c('SharingEntrySimple',{ref:\"shareEntrySimple\",staticClass:\"sharing-entry__internal\",attrs:{\"title\":_vm.t('files_sharing', 'Internal link'),\"subtitle\":_vm.internalLinkSubtitle},scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('div',{staticClass:\"avatar-external icon-external-white\"})]},proxy:true}])},[_vm._v(\" \"),_c('NcActionButton',{attrs:{\"aria-label\":_vm.t('files_sharing', 'Copy internal link to clipboard')},on:{\"click\":function($event){$event.preventDefault();return _vm.copyLink.apply(null, arguments)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.copied && _vm.copySuccess)?_c('Check',{attrs:{\"size\":20}}):_c('ClipboardTextMultipleOutline',{attrs:{\"size\":20}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.clipboardTooltip)+\"\\n\\t\\t\")])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport Config from '../services/ConfigService'\n\nconst config = new Config()\nconst passwordSet = 'abcdefgijkmnopqrstwxyzABCDEFGHJKLMNPQRSTWXYZ23456789'\n\n/**\n * Generate a valid policy password or\n * request a valid password if password_policy\n * is enabled\n *\n * @return {string} a valid password\n */\nexport default async function() {\n\t// password policy is enabled, let's request a pass\n\tif (config.passwordPolicy.api && config.passwordPolicy.api.generate) {\n\t\ttry {\n\t\t\tconst request = await axios.get(config.passwordPolicy.api.generate)\n\t\t\tif (request.data.ocs.data.password) {\n\t\t\t\treturn request.data.ocs.data.password\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.info('Error generating password from password_policy', error)\n\t\t}\n\t}\n\n\t// generate password of 10 length based on passwordSet\n\treturn Array(10).fill(0)\n\t\t.reduce((prev, curr) => {\n\t\t\tprev += passwordSet.charAt(Math.floor(Math.random() * passwordSet.length))\n\t\t\treturn prev\n\t\t}, '')\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n// TODO: remove when ie not supported\nimport 'url-search-params-polyfill'\n\nimport { generateOcsUrl } from '@nextcloud/router'\nimport axios from '@nextcloud/axios'\nimport Share from '../models/Share'\n\nconst shareUrl = generateOcsUrl('apps/files_sharing/api/v1/shares')\n\nexport default {\n\tmethods: {\n\t\t/**\n\t\t * Create a new share\n\t\t *\n\t\t * @param {object} data destructuring object\n\t\t * @param {string} data.path path to the file/folder which should be shared\n\t\t * @param {number} data.shareType 0 = user; 1 = group; 3 = public link; 6 = federated cloud share\n\t\t * @param {string} data.shareWith user/group id with which the file should be shared (optional for shareType > 1)\n\t\t * @param {boolean} [data.publicUpload=false] allow public upload to a public shared folder\n\t\t * @param {string} [data.password] password to protect public link Share with\n\t\t * @param {number} [data.permissions=31] 1 = read; 2 = update; 4 = create; 8 = delete; 16 = share; 31 = all (default: 31, for public shares: 1)\n\t\t * @param {boolean} [data.sendPasswordByTalk=false] send the password via a talk conversation\n\t\t * @param {string} [data.expireDate=''] expire the shareautomatically after\n\t\t * @param {string} [data.label=''] custom label\n\t\t * @param {string} [data.attributes=null] Share attributes encoded as json\n\t\t * @return {Share} the new share\n\t\t * @throws {Error}\n\t\t */\n\t\tasync createShare({ path, permissions, shareType, shareWith, publicUpload, password, sendPasswordByTalk, expireDate, label, attributes }) {\n\t\t\ttry {\n\t\t\t\tconst request = await axios.post(shareUrl, { path, permissions, shareType, shareWith, publicUpload, password, sendPasswordByTalk, expireDate, label, attributes })\n\t\t\t\tif (!request?.data?.ocs) {\n\t\t\t\t\tthrow request\n\t\t\t\t}\n\t\t\t\treturn new Share(request.data.ocs.data)\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error while creating share', error)\n\t\t\t\tconst errorMessage = error?.response?.data?.ocs?.meta?.message\n\t\t\t\tOC.Notification.showTemporary(\n\t\t\t\t\terrorMessage ? t('files_sharing', 'Error creating the share: {errorMessage}', { errorMessage }) : t('files_sharing', 'Error creating the share'),\n\t\t\t\t\t{ type: 'error' }\n\t\t\t\t)\n\t\t\t\tthrow error\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Delete a share\n\t\t *\n\t\t * @param {number} id share id\n\t\t * @throws {Error}\n\t\t */\n\t\tasync deleteShare(id) {\n\t\t\ttry {\n\t\t\t\tconst request = await axios.delete(shareUrl + `/${id}`)\n\t\t\t\tif (!request?.data?.ocs) {\n\t\t\t\t\tthrow request\n\t\t\t\t}\n\t\t\t\treturn true\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error while deleting share', error)\n\t\t\t\tconst errorMessage = error?.response?.data?.ocs?.meta?.message\n\t\t\t\tOC.Notification.showTemporary(\n\t\t\t\t\terrorMessage ? t('files_sharing', 'Error deleting the share: {errorMessage}', { errorMessage }) : t('files_sharing', 'Error deleting the share'),\n\t\t\t\t\t{ type: 'error' }\n\t\t\t\t)\n\t\t\t\tthrow error\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Update a share\n\t\t *\n\t\t * @param {number} id share id\n\t\t * @param {object} properties key-value object of the properties to update\n\t\t */\n\t\tasync updateShare(id, properties) {\n\t\t\ttry {\n\t\t\t\tconst request = await axios.put(shareUrl + `/${id}`, properties)\n\t\t\t\tif (!request?.data?.ocs) {\n\t\t\t\t\tthrow request\n\t\t\t\t} else {\n\t\t\t\t\treturn request.data.ocs.data\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error while updating share', error)\n\t\t\t\tif (error.response.status !== 400) {\n\t\t\t\t\tconst errorMessage = error?.response?.data?.ocs?.meta?.message\n\t\t\t\t\tOC.Notification.showTemporary(\n\t\t\t\t\t\terrorMessage ? t('files_sharing', 'Error updating the share: {errorMessage}', { errorMessage }) : t('files_sharing', 'Error updating the share'),\n\t\t\t\t\t\t{ type: 'error' }\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\tconst message = error.response.data.ocs.meta.message\n\t\t\t\tthrow new Error(message)\n\t\t\t}\n\t\t},\n\t},\n}\n","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"sharing-search\">\n\t\t<label for=\"sharing-search-input\">{{ t('files_sharing', 'Search for share recipients') }}</label>\n\t\t<NcMultiselect ref=\"multiselect\"\n\t\t\tid=\"sharing-search-input\"\n\t\t\tclass=\"sharing-search__input\"\n\t\t\t:clear-on-select=\"true\"\n\t\t\t:disabled=\"!canReshare\"\n\t\t\t:hide-selected=\"true\"\n\t\t\t:internal-search=\"false\"\n\t\t\t:loading=\"loading\"\n\t\t\t:options=\"options\"\n\t\t\t:placeholder=\"inputPlaceholder\"\n\t\t\t:preselect-first=\"true\"\n\t\t\t:preserve-search=\"true\"\n\t\t\t:searchable=\"true\"\n\t\t\t:user-select=\"true\"\n\t\t\topen-direction=\"below\"\n\t\t\tlabel=\"displayName\"\n\t\t\ttrack-by=\"id\"\n\t\t\t@search-change=\"asyncFind\"\n\t\t\t@select=\"addShare\">\n\t\t\t<template #noOptions>\n\t\t\t\t{{ t('files_sharing', 'No recommendations. Start typing.') }}\n\t\t\t</template>\n\t\t\t<template #noResult>\n\t\t\t\t{{ noResultText }}\n\t\t\t</template>\n\t\t</NcMultiselect>\n\t</div>\n</template>\n\n<script>\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport axios from '@nextcloud/axios'\nimport debounce from 'debounce'\nimport NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect'\n\nimport Config from '../services/ConfigService'\nimport GeneratePassword from '../utils/GeneratePassword'\nimport Share from '../models/Share'\nimport ShareRequests from '../mixins/ShareRequests'\nimport ShareTypes from '../mixins/ShareTypes'\n\nexport default {\n\tname: 'SharingInput',\n\n\tcomponents: {\n\t\tNcMultiselect,\n\t},\n\n\tmixins: [ShareTypes, ShareRequests],\n\n\tprops: {\n\t\tshares: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\trequired: true,\n\t\t},\n\t\tlinkShares: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\trequired: true,\n\t\t},\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\treshare: {\n\t\t\ttype: Share,\n\t\t\tdefault: null,\n\t\t},\n\t\tcanReshare: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tconfig: new Config(),\n\t\t\tloading: false,\n\t\t\tquery: '',\n\t\t\trecommendations: [],\n\t\t\tShareSearch: OCA.Sharing.ShareSearch.state,\n\t\t\tsuggestions: [],\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Implement ShareSearch\n\t\t * allows external appas to inject new\n\t\t * results into the autocomplete dropdown\n\t\t * Used for the guests app\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\texternalResults() {\n\t\t\treturn this.ShareSearch.results\n\t\t},\n\t\tinputPlaceholder() {\n\t\t\tconst allowRemoteSharing = this.config.isRemoteShareAllowed\n\n\t\t\tif (!this.canReshare) {\n\t\t\t\treturn t('files_sharing', 'Resharing is not allowed')\n\t\t\t}\n\t\t\t// We can always search with email addresses for users too\n\t\t\tif (!allowRemoteSharing) {\n\t\t\t\treturn t('files_sharing', 'Name or email …')\n\t\t\t}\n\n\t\t\treturn t('files_sharing', 'Name, email, or Federated Cloud ID …')\n\t\t},\n\n\t\tisValidQuery() {\n\t\t\treturn this.query && this.query.trim() !== '' && this.query.length > this.config.minSearchStringLength\n\t\t},\n\n\t\toptions() {\n\t\t\tif (this.isValidQuery) {\n\t\t\t\treturn this.suggestions\n\t\t\t}\n\t\t\treturn this.recommendations\n\t\t},\n\n\t\tnoResultText() {\n\t\t\tif (this.loading) {\n\t\t\t\treturn t('files_sharing', 'Searching …')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'No elements found.')\n\t\t},\n\t},\n\n\tmounted() {\n\t\tthis.getRecommendations()\n\t},\n\n\tmethods: {\n\t\tasync asyncFind(query, id) {\n\t\t\t// save current query to check if we display\n\t\t\t// recommendations or search results\n\t\t\tthis.query = query.trim()\n\t\t\tif (this.isValidQuery) {\n\t\t\t\t// start loading now to have proper ux feedback\n\t\t\t\t// during the debounce\n\t\t\t\tthis.loading = true\n\t\t\t\tawait this.debounceGetSuggestions(query)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Get suggestions\n\t\t *\n\t\t * @param {string} search the search query\n\t\t * @param {boolean} [lookup=false] search on lookup server\n\t\t */\n\t\tasync getSuggestions(search, lookup = false) {\n\t\t\tthis.loading = true\n\n\t\t\tif (OC.getCapabilities().files_sharing.sharee.query_lookup_default === true) {\n\t\t\t\tlookup = true\n\t\t\t}\n\n\t\t\tconst shareType = [\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_USER,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_GROUP,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_REMOTE,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_CIRCLE,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_ROOM,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_GUEST,\n\t\t\t\tthis.SHARE_TYPES.SHARE_TYPE_DECK,\n\t\t\t]\n\n\t\t\tif (OC.getCapabilities().files_sharing.public.enabled === true) {\n\t\t\t\tshareType.push(this.SHARE_TYPES.SHARE_TYPE_EMAIL)\n\t\t\t}\n\n\t\t\tlet request = null\n\t\t\ttry {\n\t\t\t\trequest = await axios.get(generateOcsUrl('apps/files_sharing/api/v1/sharees'), {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat: 'json',\n\t\t\t\t\t\titemType: this.fileInfo.type === 'dir' ? 'folder' : 'file',\n\t\t\t\t\t\tsearch,\n\t\t\t\t\t\tlookup,\n\t\t\t\t\t\tperPage: this.config.maxAutocompleteResults,\n\t\t\t\t\t\tshareType,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error fetching suggestions', error)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst data = request.data.ocs.data\n\t\t\tconst exact = request.data.ocs.data.exact\n\t\t\tdata.exact = [] // removing exact from general results\n\n\t\t\t// flatten array of arrays\n\t\t\tconst rawExactSuggestions = Object.values(exact).reduce((arr, elem) => arr.concat(elem), [])\n\t\t\tconst rawSuggestions = Object.values(data).reduce((arr, elem) => arr.concat(elem), [])\n\n\t\t\t// remove invalid data and format to user-select layout\n\t\t\tconst exactSuggestions = this.filterOutExistingShares(rawExactSuggestions)\n\t\t\t\t.map(share => this.formatForMultiselect(share))\n\t\t\t\t// sort by type so we can get user&groups first...\n\t\t\t\t.sort((a, b) => a.shareType - b.shareType)\n\t\t\tconst suggestions = this.filterOutExistingShares(rawSuggestions)\n\t\t\t\t.map(share => this.formatForMultiselect(share))\n\t\t\t\t// sort by type so we can get user&groups first...\n\t\t\t\t.sort((a, b) => a.shareType - b.shareType)\n\n\t\t\t// lookup clickable entry\n\t\t\t// show if enabled and not already requested\n\t\t\tconst lookupEntry = []\n\t\t\tif (data.lookupEnabled && !lookup) {\n\t\t\t\tlookupEntry.push({\n\t\t\t\t\tid: 'global-lookup',\n\t\t\t\t\tisNoUser: true,\n\t\t\t\t\tdisplayName: t('files_sharing', 'Search globally'),\n\t\t\t\t\tlookup: true,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\t// if there is a condition specified, filter it\n\t\t\tconst externalResults = this.externalResults.filter(result => !result.condition || result.condition(this))\n\n\t\t\tconst allSuggestions = exactSuggestions.concat(suggestions).concat(externalResults).concat(lookupEntry)\n\n\t\t\t// Count occurrences of display names in order to provide a distinguishable description if needed\n\t\t\tconst nameCounts = allSuggestions.reduce((nameCounts, result) => {\n\t\t\t\tif (!result.displayName) {\n\t\t\t\t\treturn nameCounts\n\t\t\t\t}\n\t\t\t\tif (!nameCounts[result.displayName]) {\n\t\t\t\t\tnameCounts[result.displayName] = 0\n\t\t\t\t}\n\t\t\t\tnameCounts[result.displayName]++\n\t\t\t\treturn nameCounts\n\t\t\t}, {})\n\n\t\t\tthis.suggestions = allSuggestions.map(item => {\n\t\t\t\t// Make sure that items with duplicate displayName get the shareWith applied as a description\n\t\t\t\tif (nameCounts[item.displayName] > 1 && !item.desc) {\n\t\t\t\t\treturn { ...item, desc: item.shareWithDisplayNameUnique }\n\t\t\t\t}\n\t\t\t\treturn item\n\t\t\t})\n\n\t\t\tthis.loading = false\n\t\t\tconsole.info('suggestions', this.suggestions)\n\t\t},\n\n\t\t/**\n\t\t * Debounce getSuggestions\n\t\t *\n\t\t * @param {...*} args the arguments\n\t\t */\n\t\tdebounceGetSuggestions: debounce(function(...args) {\n\t\t\tthis.getSuggestions(...args)\n\t\t}, 300),\n\n\t\t/**\n\t\t * Get the sharing recommendations\n\t\t */\n\t\tasync getRecommendations() {\n\t\t\tthis.loading = true\n\n\t\t\tlet request = null\n\t\t\ttry {\n\t\t\t\trequest = await axios.get(generateOcsUrl('apps/files_sharing/api/v1/sharees_recommended'), {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat: 'json',\n\t\t\t\t\t\titemType: this.fileInfo.type,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error fetching recommendations', error)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Add external results from the OCA.Sharing.ShareSearch api\n\t\t\tconst externalResults = this.externalResults.filter(result => !result.condition || result.condition(this))\n\n\t\t\t// flatten array of arrays\n\t\t\tconst rawRecommendations = Object.values(request.data.ocs.data.exact)\n\t\t\t\t.reduce((arr, elem) => arr.concat(elem), [])\n\n\t\t\t// remove invalid data and format to user-select layout\n\t\t\tthis.recommendations = this.filterOutExistingShares(rawRecommendations)\n\t\t\t\t.map(share => this.formatForMultiselect(share))\n\t\t\t\t.concat(externalResults)\n\n\t\t\tthis.loading = false\n\t\t\tconsole.info('recommendations', this.recommendations)\n\t\t},\n\n\t\t/**\n\t\t * Filter out existing shares from\n\t\t * the provided shares search results\n\t\t *\n\t\t * @param {object[]} shares the array of shares object\n\t\t * @return {object[]}\n\t\t */\n\t\tfilterOutExistingShares(shares) {\n\t\t\treturn shares.reduce((arr, share) => {\n\t\t\t\t// only check proper objects\n\t\t\t\tif (typeof share !== 'object') {\n\t\t\t\t\treturn arr\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tif (share.value.shareType === this.SHARE_TYPES.SHARE_TYPE_USER) {\n\t\t\t\t\t\t// filter out current user\n\t\t\t\t\t\tif (share.value.shareWith === getCurrentUser().uid) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// filter out the owner of the share\n\t\t\t\t\t\tif (this.reshare && share.value.shareWith === this.reshare.owner) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// filter out existing mail shares\n\t\t\t\t\tif (share.value.shareType === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\t\t\tconst emails = this.linkShares.map(elem => elem.shareWith)\n\t\t\t\t\t\tif (emails.indexOf(share.value.shareWith.trim()) !== -1) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\t\t\t\t\t} else { // filter out existing shares\n\t\t\t\t\t\t// creating an object of uid => type\n\t\t\t\t\t\tconst sharesObj = this.shares.reduce((obj, elem) => {\n\t\t\t\t\t\t\tobj[elem.shareWith] = elem.type\n\t\t\t\t\t\t\treturn obj\n\t\t\t\t\t\t}, {})\n\n\t\t\t\t\t\t// if shareWith is the same and the share type too, ignore it\n\t\t\t\t\t\tconst key = share.value.shareWith.trim()\n\t\t\t\t\t\tif (key in sharesObj\n\t\t\t\t\t\t\t&& sharesObj[key] === share.value.shareType) {\n\t\t\t\t\t\t\treturn arr\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// ALL GOOD\n\t\t\t\t\t// let's add the suggestion\n\t\t\t\t\tarr.push(share)\n\t\t\t\t} catch {\n\t\t\t\t\treturn arr\n\t\t\t\t}\n\t\t\t\treturn arr\n\t\t\t}, [])\n\t\t},\n\n\t\t/**\n\t\t * Get the icon based on the share type\n\t\t *\n\t\t * @param {number} type the share type\n\t\t * @return {string} the icon class\n\t\t */\n\t\tshareTypeToIcon(type) {\n\t\t\tswitch (type) {\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_GUEST:\n\t\t\t\t// default is a user, other icons are here to differentiate\n\t\t\t\t// themselves from it, so let's not display the user icon\n\t\t\t\t// case this.SHARE_TYPES.SHARE_TYPE_REMOTE:\n\t\t\t\t// case this.SHARE_TYPES.SHARE_TYPE_USER:\n\t\t\t\treturn 'icon-user'\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP:\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_GROUP:\n\t\t\t\treturn 'icon-group'\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_EMAIL:\n\t\t\t\treturn 'icon-mail'\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_CIRCLE:\n\t\t\t\treturn 'icon-circle'\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_ROOM:\n\t\t\t\treturn 'icon-room'\n\t\t\tcase this.SHARE_TYPES.SHARE_TYPE_DECK:\n\t\t\t\treturn 'icon-deck'\n\n\t\t\tdefault:\n\t\t\t\treturn ''\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Format shares for the multiselect options\n\t\t *\n\t\t * @param {object} result select entry item\n\t\t * @return {object}\n\t\t */\n\t\tformatForMultiselect(result) {\n\t\t\tlet subtitle\n\t\t\tif (result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_USER && this.config.shouldAlwaysShowUnique) {\n\t\t\t\tsubtitle = result.shareWithDisplayNameUnique ?? ''\n\t\t\t} else if ((result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_REMOTE\n\t\t\t\t\t|| result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP\n\t\t\t) && result.value.server) {\n\t\t\t\tsubtitle = t('files_sharing', 'on {server}', { server: result.value.server })\n\t\t\t} else if (result.value.shareType === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\tsubtitle = result.value.shareWith\n\t\t\t} else {\n\t\t\t\tsubtitle = result.shareWithDescription ?? ''\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tid: `${result.value.shareType}-${result.value.shareWith}`,\n\t\t\t\tshareWith: result.value.shareWith,\n\t\t\t\tshareType: result.value.shareType,\n\t\t\t\tuser: result.uuid || result.value.shareWith,\n\t\t\t\tisNoUser: result.value.shareType !== this.SHARE_TYPES.SHARE_TYPE_USER,\n\t\t\t\tdisplayName: result.name || result.label,\n\t\t\t\tsubtitle,\n\t\t\t\tshareWithDisplayNameUnique: result.shareWithDisplayNameUnique || '',\n\t\t\t\ticon: this.shareTypeToIcon(result.value.shareType),\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Process the new share request\n\t\t *\n\t\t * @param {object} value the multiselect option\n\t\t */\n\t\tasync addShare(value) {\n\t\t\tif (value.lookup) {\n\t\t\t\tawait this.getSuggestions(this.query, true)\n\n\t\t\t\t// focus the input again\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tthis.$refs.multiselect.$el.querySelector('.multiselect__input').focus()\n\t\t\t\t})\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\t// handle externalResults from OCA.Sharing.ShareSearch\n\t\t\tif (value.handler) {\n\t\t\t\tconst share = await value.handler(this)\n\t\t\t\tthis.$emit('add:share', new Share(share))\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\tthis.loading = true\n\t\t\tconsole.debug('Adding a new share from the input for', value)\n\t\t\ttry {\n\t\t\t\tlet password = null\n\n\t\t\t\tif (this.config.enforcePasswordForPublicLink\n\t\t\t\t\t&& value.shareType === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\t\tpassword = await GeneratePassword()\n\t\t\t\t}\n\n\t\t\t\tconst path = (this.fileInfo.path + '/' + this.fileInfo.name).replace('//', '/')\n\t\t\t\tconst share = await this.createShare({\n\t\t\t\t\tpath,\n\t\t\t\t\tshareType: value.shareType,\n\t\t\t\t\tshareWith: value.shareWith,\n\t\t\t\t\tpassword,\n\t\t\t\t\tpermissions: this.fileInfo.sharePermissions & OC.getCapabilities().files_sharing.default_permissions,\n\t\t\t\t\tattributes: JSON.stringify(this.fileInfo.shareAttributes),\n\t\t\t\t})\n\n\t\t\t\t// If we had a password, we need to show it to the user as it was generated\n\t\t\t\tif (password) {\n\t\t\t\t\tshare.newPassword = password\n\t\t\t\t\t// Wait for the newly added share\n\t\t\t\t\tconst component = await new Promise(resolve => {\n\t\t\t\t\t\tthis.$emit('add:share', share, resolve)\n\t\t\t\t\t})\n\n\t\t\t\t\t// open the menu on the\n\t\t\t\t\t// freshly created share component\n\t\t\t\t\tcomponent.open = true\n\t\t\t\t} else {\n\t\t\t\t\t// Else we just add it normally\n\t\t\t\t\tthis.$emit('add:share', share)\n\t\t\t\t}\n\n\t\t\t\t// reset the search string when done\n\t\t\t\t// FIXME: https://github.com/shentao/vue-multiselect/issues/633\n\t\t\t\tif (this.$refs.multiselect?.$refs?.VueMultiselect?.search) {\n\t\t\t\t\tthis.$refs.multiselect.$refs.VueMultiselect.search = ''\n\t\t\t\t}\n\n\t\t\t\tawait this.getRecommendations()\n\t\t\t} catch (error) {\n\t\t\t\t// focus back if any error\n\t\t\t\tconst input = this.$refs.multiselect.$el.querySelector('input')\n\t\t\t\tif (input) {\n\t\t\t\t\tinput.focus()\n\t\t\t\t}\n\t\t\t\tthis.query = value.shareWith\n\t\t\t\tconsole.error('Error while adding new share', error)\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\n.sharing-search {\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin-bottom: 4px;\n\n\tlabel[for=\"sharing-search-input\"] {\n\t\tmargin-bottom: 2px;\n\t}\n\n\t&__input {\n\t\twidth: 100%;\n\t\tmargin: 10px 0;\n\n\t\t// properly style the lookup entry\n\t\t.multiselect__option {\n\t\t\tspan[lookup] {\n\t\t\t\t.avatardiv {\n\t\t\t\t\tbackground-image: var(--icon-search-white);\n\t\t\t\t\tbackground-repeat: no-repeat;\n\t\t\t\t\tbackground-position: center;\n\t\t\t\t\tbackground-color: var(--color-text-maxcontrast) !important;\n\t\t\t\t\tdiv {\n\t\t\t\t\t\tdisplay: none;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.vue?vue&type=style&index=0&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInput.vue?vue&type=style&index=0&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingInput.vue?vue&type=template&id=16a26106&\"\nimport script from \"./SharingInput.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingInput.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"sharing-search\"},[_c('label',{attrs:{\"for\":\"sharing-search-input\"}},[_vm._v(_vm._s(_vm.t('files_sharing', 'Search for share recipients')))]),_vm._v(\" \"),_c('NcMultiselect',{ref:\"multiselect\",staticClass:\"sharing-search__input\",attrs:{\"id\":\"sharing-search-input\",\"clear-on-select\":true,\"disabled\":!_vm.canReshare,\"hide-selected\":true,\"internal-search\":false,\"loading\":_vm.loading,\"options\":_vm.options,\"placeholder\":_vm.inputPlaceholder,\"preselect-first\":true,\"preserve-search\":true,\"searchable\":true,\"user-select\":true,\"open-direction\":\"below\",\"label\":\"displayName\",\"track-by\":\"id\"},on:{\"search-change\":_vm.asyncFind,\"select\":_vm.addShare},scopedSlots:_vm._u([{key:\"noOptions\",fn:function(){return [_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'No recommendations. Start typing.'))+\"\\n\\t\\t\")]},proxy:true},{key:\"noResult\",fn:function(){return [_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.noResultText)+\"\\n\\t\\t\")]},proxy:true}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Gary Kim <gary@garykim.dev>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { showSuccess } from '@nextcloud/dialogs'\nimport { getCurrentUser } from '@nextcloud/auth'\n// eslint-disable-next-line import/no-unresolved, node/no-missing-import\nimport PQueue from 'p-queue'\nimport debounce from 'debounce'\n\nimport Share from '../models/Share.js'\nimport SharesRequests from './ShareRequests.js'\nimport ShareTypes from './ShareTypes.js'\nimport Config from '../services/ConfigService.js'\n\nexport default {\n\tmixins: [SharesRequests, ShareTypes],\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\tshare: {\n\t\t\ttype: Share,\n\t\t\tdefault: null,\n\t\t},\n\t\tisUnique: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tconfig: new Config(),\n\n\t\t\t// errors helpers\n\t\t\terrors: {},\n\n\t\t\t// component status toggles\n\t\t\tloading: false,\n\t\t\tsaving: false,\n\t\t\topen: false,\n\n\t\t\t// concurrency management queue\n\t\t\t// we want one queue per share\n\t\t\tupdateQueue: new PQueue({ concurrency: 1 }),\n\n\t\t\t/**\n\t\t\t * ! This allow vue to make the Share class state reactive\n\t\t\t * ! do not remove it ot you'll lose all reactivity here\n\t\t\t */\n\t\t\treactiveState: this.share?.state,\n\t\t}\n\t},\n\n\tcomputed: {\n\n\t\t/**\n\t\t * Does the current share have a note\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasNote: {\n\t\t\tget() {\n\t\t\t\treturn this.share.note !== ''\n\t\t\t},\n\t\t\tset(enabled) {\n\t\t\t\tthis.share.note = enabled\n\t\t\t\t\t? null // enabled but user did not changed the content yet\n\t\t\t\t\t: '' // empty = no note = disabled\n\t\t\t},\n\t\t},\n\n\t\tdateTomorrow() {\n\t\t\treturn new Date(new Date().setDate(new Date().getDate() + 1))\n\t\t},\n\n\t\t// Datepicker language\n\t\tlang() {\n\t\t\tconst weekdaysShort = window.dayNamesShort\n\t\t\t\t? window.dayNamesShort // provided by nextcloud\n\t\t\t\t: ['Sun.', 'Mon.', 'Tue.', 'Wed.', 'Thu.', 'Fri.', 'Sat.']\n\t\t\tconst monthsShort = window.monthNamesShort\n\t\t\t\t? window.monthNamesShort // provided by nextcloud\n\t\t\t\t: ['Jan.', 'Feb.', 'Mar.', 'Apr.', 'May.', 'Jun.', 'Jul.', 'Aug.', 'Sep.', 'Oct.', 'Nov.', 'Dec.']\n\t\t\tconst firstDayOfWeek = window.firstDay ? window.firstDay : 0\n\n\t\t\treturn {\n\t\t\t\tformatLocale: {\n\t\t\t\t\tfirstDayOfWeek,\n\t\t\t\t\tmonthsShort,\n\t\t\t\t\tweekdaysMin: weekdaysShort,\n\t\t\t\t\tweekdaysShort,\n\t\t\t\t},\n\t\t\t\tmonthFormat: 'MMM',\n\t\t\t}\n\t\t},\n\n\t\tisShareOwner() {\n\t\t\treturn this.share && this.share.owner === getCurrentUser().uid\n\t\t},\n\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Check if a share is valid before\n\t\t * firing the request\n\t\t *\n\t\t * @param {Share} share the share to check\n\t\t * @return {boolean}\n\t\t */\n\t\tcheckShare(share) {\n\t\t\tif (share.password) {\n\t\t\t\tif (typeof share.password !== 'string' || share.password.trim() === '') {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (share.expirationDate) {\n\t\t\t\tconst date = share.expirationDate\n\t\t\t\tif (!date.isValid()) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\n\t\t/**\n\t\t * @param {string} date a date with YYYY-MM-DD format\n\t\t * @return {Date} date\n\t\t */\n\t\tparseDateString(date) {\n\t\t\tif (!date) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst regex = /([0-9]{4}-[0-9]{2}-[0-9]{2})/i\n\t\t\treturn new Date(date.match(regex)?.pop())\n\t\t},\n\n\t\t/**\n\t\t * @param {Date} date\n\t\t * @return {string} date a date with YYYY-MM-DD format\n\t\t */\n\t\tformatDateToString(date) {\n\t\t\t// Force utc time. Drop time information to be timezone-less\n\t\t\tconst utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()))\n\t\t\t// Format to YYYY-MM-DD\n\t\t\treturn utcDate.toISOString().split('T')[0]\n\t\t},\n\n\t\t/**\n\t\t * Save given value to expireDate and trigger queueUpdate\n\t\t *\n\t\t * @param {Date} date\n\t\t */\n\t\tonExpirationChange(date) {\n\t\t\tthis.share.expireDate = this.formatDateToString(date)\n\t\t\tthis.queueUpdate('expireDate')\n\t\t},\n\n\t\t/**\n\t\t * Uncheck expire date\n\t\t * We need this method because @update:checked\n\t\t * is ran simultaneously as @uncheck, so\n\t\t * so we cannot ensure data is up-to-date\n\t\t */\n\t\tonExpirationDisable() {\n\t\t\tthis.share.expireDate = ''\n\t\t\tthis.queueUpdate('expireDate')\n\t\t},\n\n\t\t/**\n\t\t * Note changed, let's save it to a different key\n\t\t *\n\t\t * @param {string} note the share note\n\t\t */\n\t\tonNoteChange(note) {\n\t\t\tthis.$set(this.share, 'newNote', note.trim())\n\t\t},\n\n\t\t/**\n\t\t * When the note change, we trim, save and dispatch\n\t\t *\n\t\t */\n\t\tonNoteSubmit() {\n\t\t\tif (this.share.newNote) {\n\t\t\t\tthis.share.note = this.share.newNote\n\t\t\t\tthis.$delete(this.share, 'newNote')\n\t\t\t\tshowSuccess(t('files_sharing', 'Share note saved'))\n\t\t\t\tthis.queueUpdate('note')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Delete share button handler\n\t\t */\n\t\tasync onDelete() {\n\t\t\ttry {\n\t\t\t\tthis.loading = true\n\t\t\t\tthis.open = false\n\t\t\t\tawait this.deleteShare(this.share.id)\n\t\t\t\tconsole.debug('Share deleted', this.share.id)\n\t\t\t\tconst message = this.share.itemType === 'file'\n\t\t\t\t\t? t('files_sharing', 'File \"{path}\" has been unshared', { path: this.share.path })\n\t\t\t\t\t: t('files_sharing', 'Folder \"{path}\" has been unshared', { path: this.share.path })\n\t\t\t\tshowSuccess(message)\n\t\t\t\tthis.$emit('remove:share', this.share)\n\t\t\t} catch (error) {\n\t\t\t\t// re-open menu if error\n\t\t\t\tthis.open = true\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Send an update of the share to the queue\n\t\t *\n\t\t * @param {Array<string>} propertyNames the properties to sync\n\t\t */\n\t\tqueueUpdate(...propertyNames) {\n\t\t\tif (propertyNames.length === 0) {\n\t\t\t\t// Nothing to update\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (this.share.id) {\n\t\t\t\tconst properties = {}\n\t\t\t\t// force value to string because that is what our\n\t\t\t\t// share api controller accepts\n\t\t\t\tpropertyNames.forEach(name => {\n\t\t\t\t\tif ((typeof this.share[name]) === 'object') {\n\t\t\t\t\t\tproperties[name] = JSON.stringify(this.share[name])\n\t\t\t\t\t} else {\n\t\t\t\t\t\tproperties[name] = this.share[name].toString()\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t\tthis.updateQueue.add(async () => {\n\t\t\t\t\tthis.saving = true\n\t\t\t\t\tthis.errors = {}\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst updatedShare = await this.updateShare(this.share.id, properties)\n\n\t\t\t\t\t\tif (propertyNames.indexOf('password') >= 0) {\n\t\t\t\t\t\t\t// reset password state after sync\n\t\t\t\t\t\t\tthis.$delete(this.share, 'newPassword')\n\n\t\t\t\t\t\t\t// updates password expiration time after sync\n\t\t\t\t\t\t\tthis.share.passwordExpirationTime = updatedShare.password_expiration_time\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// clear any previous errors\n\t\t\t\t\t\tthis.$delete(this.errors, propertyNames[0])\n\n\t\t\t\t\t} catch ({ message }) {\n\t\t\t\t\t\tif (message && message !== '') {\n\t\t\t\t\t\t\tthis.onSyncError(propertyNames[0], message)\n\t\t\t\t\t\t}\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tthis.saving = false\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// This share does not exists on the server yet\n\t\t\tconsole.debug('Updated local share', this.share)\n\t\t},\n\n\t\t/**\n\t\t * Manage sync errors\n\t\t *\n\t\t * @param {string} property the errored property, e.g. 'password'\n\t\t * @param {string} message the error message\n\t\t */\n\t\tonSyncError(property, message) {\n\t\t\t// re-open menu if closed\n\t\t\tthis.open = true\n\t\t\tswitch (property) {\n\t\t\tcase 'password':\n\t\t\tcase 'pending':\n\t\t\tcase 'expireDate':\n\t\t\tcase 'label':\n\t\t\tcase 'note': {\n\t\t\t\t// show error\n\t\t\t\tthis.$set(this.errors, property, message)\n\n\t\t\t\tlet propertyEl = this.$refs[property]\n\t\t\t\tif (propertyEl) {\n\t\t\t\t\tif (propertyEl.$el) {\n\t\t\t\t\t\tpropertyEl = propertyEl.$el\n\t\t\t\t\t}\n\t\t\t\t\t// focus if there is a focusable action element\n\t\t\t\t\tconst focusable = propertyEl.querySelector('.focusable')\n\t\t\t\t\tif (focusable) {\n\t\t\t\t\t\tfocusable.focus()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'sendPasswordByTalk': {\n\t\t\t\t// show error\n\t\t\t\tthis.$set(this.errors, property, message)\n\n\t\t\t\t// Restore previous state\n\t\t\t\tthis.share.sendPasswordByTalk = !this.share.sendPasswordByTalk\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Debounce queueUpdate to avoid requests spamming\n\t\t * more importantly for text data\n\t\t *\n\t\t * @param {string} property the property to sync\n\t\t */\n\t\tdebounceQueueUpdate: debounce(function(property) {\n\t\t\tthis.queueUpdate(property)\n\t\t}, 500),\n\t},\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInherited.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInherited.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<SharingEntrySimple :key=\"share.id\"\n\t\tclass=\"sharing-entry__inherited\"\n\t\t:title=\"share.shareWithDisplayName\">\n\t\t<template #avatar>\n\t\t\t<NcAvatar :user=\"share.shareWith\"\n\t\t\t\t:display-name=\"share.shareWithDisplayName\"\n\t\t\t\tclass=\"sharing-entry__avatar\"\n\t\t\t\ttooltip-message=\"\" />\n\t\t</template>\n\t\t<NcActionText icon=\"icon-user\">\n\t\t\t{{ t('files_sharing', 'Added by {initiator}', { initiator: share.ownerDisplayName }) }}\n\t\t</NcActionText>\n\t\t<NcActionLink v-if=\"share.viaPath && share.viaFileid\"\n\t\t\ticon=\"icon-folder\"\n\t\t\t:href=\"viaFileTargetUrl\">\n\t\t\t{{ t('files_sharing', 'Via “{folder}”', {folder: viaFolderName} ) }}\n\t\t</NcActionLink>\n\t\t<NcActionButton v-if=\"share.canDelete\"\n\t\t\ticon=\"icon-close\"\n\t\t\t@click.prevent=\"onDelete\">\n\t\t\t{{ t('files_sharing', 'Unshare') }}\n\t\t</NcActionButton>\n\t</SharingEntrySimple>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { basename } from '@nextcloud/paths'\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar'\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton'\nimport NcActionLink from '@nextcloud/vue/dist/Components/NcActionLink'\nimport NcActionText from '@nextcloud/vue/dist/Components/NcActionText'\n\n// eslint-disable-next-line no-unused-vars\nimport Share from '../models/Share'\nimport SharesMixin from '../mixins/SharesMixin'\nimport SharingEntrySimple from '../components/SharingEntrySimple'\n\nexport default {\n\tname: 'SharingEntryInherited',\n\n\tcomponents: {\n\t\tNcActionButton,\n\t\tNcActionLink,\n\t\tNcActionText,\n\t\tNcAvatar,\n\t\tSharingEntrySimple,\n\t},\n\n\tmixins: [SharesMixin],\n\n\tprops: {\n\t\tshare: {\n\t\t\ttype: Share,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tviaFileTargetUrl() {\n\t\t\treturn generateUrl('/f/{fileid}', {\n\t\t\t\tfileid: this.share.viaFileid,\n\t\t\t})\n\t\t},\n\n\t\tviaFolderName() {\n\t\t\treturn basename(this.share.viaPath)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto;\n\t}\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInherited.vue?vue&type=style&index=0&id=2bbe78b4&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryInherited.vue?vue&type=style&index=0&id=2bbe78b4&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntryInherited.vue?vue&type=template&id=2bbe78b4&scoped=true&\"\nimport script from \"./SharingEntryInherited.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntryInherited.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntryInherited.vue?vue&type=style&index=0&id=2bbe78b4&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2bbe78b4\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('SharingEntrySimple',{key:_vm.share.id,staticClass:\"sharing-entry__inherited\",attrs:{\"title\":_vm.share.shareWithDisplayName},scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('NcAvatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"user\":_vm.share.shareWith,\"display-name\":_vm.share.shareWithDisplayName,\"tooltip-message\":\"\"}})]},proxy:true}])},[_vm._v(\" \"),_c('NcActionText',{attrs:{\"icon\":\"icon-user\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Added by {initiator}', { initiator: _vm.share.ownerDisplayName }))+\"\\n\\t\")]),_vm._v(\" \"),(_vm.share.viaPath && _vm.share.viaFileid)?_c('NcActionLink',{attrs:{\"icon\":\"icon-folder\",\"href\":_vm.viaFileTargetUrl}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Via “{folder}”', {folder: _vm.viaFolderName} ))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.share.canDelete)?_c('NcActionButton',{attrs:{\"icon\":\"icon-close\"},on:{\"click\":function($event){$event.preventDefault();return _vm.onDelete.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Unshare'))+\"\\n\\t\")]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<ul id=\"sharing-inherited-shares\">\n\t\t<!-- Main collapsible entry -->\n\t\t<SharingEntrySimple class=\"sharing-entry__inherited\"\n\t\t\t:title=\"mainTitle\"\n\t\t\t:subtitle=\"subTitle\"\n\t\t\t:aria-expanded=\"showInheritedShares\">\n\t\t\t<template #avatar>\n\t\t\t\t<div class=\"avatar-shared icon-more-white\" />\n\t\t\t</template>\n\t\t\t<NcActionButton :icon=\"showInheritedSharesIcon\"\n\t\t\t\t:aria-label=\"mainTitle\"\n\t\t\t\t@click.prevent.stop=\"toggleInheritedShares\">\n\t\t\t\t{{ toggleTooltip }}\n\t\t\t</NcActionButton>\n\t\t</SharingEntrySimple>\n\n\t\t<!-- Inherited shares list -->\n\t\t<SharingEntryInherited v-for=\"share in shares\"\n\t\t\t:key=\"share.id\"\n\t\t\t:file-info=\"fileInfo\"\n\t\t\t:share=\"share\" />\n\t</ul>\n</template>\n\n<script>\nimport { generateOcsUrl } from '@nextcloud/router'\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton'\nimport axios from '@nextcloud/axios'\n\nimport Share from '../models/Share'\nimport SharingEntryInherited from '../components/SharingEntryInherited'\nimport SharingEntrySimple from '../components/SharingEntrySimple'\n\nexport default {\n\tname: 'SharingInherited',\n\n\tcomponents: {\n\t\tNcActionButton,\n\t\tSharingEntryInherited,\n\t\tSharingEntrySimple,\n\t},\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloaded: false,\n\t\t\tloading: false,\n\t\t\tshowInheritedShares: false,\n\t\t\tshares: [],\n\t\t}\n\t},\n\tcomputed: {\n\t\tshowInheritedSharesIcon() {\n\t\t\tif (this.loading) {\n\t\t\t\treturn 'icon-loading-small'\n\t\t\t}\n\t\t\tif (this.showInheritedShares) {\n\t\t\t\treturn 'icon-triangle-n'\n\t\t\t}\n\t\t\treturn 'icon-triangle-s'\n\t\t},\n\t\tmainTitle() {\n\t\t\treturn t('files_sharing', 'Others with access')\n\t\t},\n\t\tsubTitle() {\n\t\t\treturn (this.showInheritedShares && this.shares.length === 0)\n\t\t\t\t? t('files_sharing', 'No other users with access found')\n\t\t\t\t: ''\n\t\t},\n\t\ttoggleTooltip() {\n\t\t\treturn this.fileInfo.type === 'dir'\n\t\t\t\t? t('files_sharing', 'Toggle list of others with access to this directory')\n\t\t\t\t: t('files_sharing', 'Toggle list of others with access to this file')\n\t\t},\n\t\tfullPath() {\n\t\t\tconst path = `${this.fileInfo.path}/${this.fileInfo.name}`\n\t\t\treturn path.replace('//', '/')\n\t\t},\n\t},\n\twatch: {\n\t\tfileInfo() {\n\t\t\tthis.resetState()\n\t\t},\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Toggle the list view and fetch/reset the state\n\t\t */\n\t\ttoggleInheritedShares() {\n\t\t\tthis.showInheritedShares = !this.showInheritedShares\n\t\t\tif (this.showInheritedShares) {\n\t\t\t\tthis.fetchInheritedShares()\n\t\t\t} else {\n\t\t\t\tthis.resetState()\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Fetch the Inherited Shares array\n\t\t */\n\t\tasync fetchInheritedShares() {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tconst url = generateOcsUrl('apps/files_sharing/api/v1/shares/inherited?format=json&path={path}', { path: this.fullPath })\n\t\t\t\tconst shares = await axios.get(url)\n\t\t\t\tthis.shares = shares.data.ocs.data\n\t\t\t\t\t.map(share => new Share(share))\n\t\t\t\t\t.sort((a, b) => b.createdTime - a.createdTime)\n\t\t\t\tconsole.info(this.shares)\n\t\t\t\tthis.loaded = true\n\t\t\t} catch (error) {\n\t\t\t\tOC.Notification.showTemporary(t('files_sharing', 'Unable to fetch inherited shares'), { type: 'error' })\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Reset current component state\n\t\t */\n\t\tresetState() {\n\t\t\tthis.loaded = false\n\t\t\tthis.loading = false\n\t\t\tthis.showInheritedShares = false\n\t\t\tthis.shares = []\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry__inherited {\n\t.avatar-shared {\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tline-height: 32px;\n\t\tfont-size: 18px;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInherited.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInherited.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInherited.vue?vue&type=style&index=0&id=6a277822&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingInherited.vue?vue&type=style&index=0&id=6a277822&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingInherited.vue?vue&type=template&id=6a277822&scoped=true&\"\nimport script from \"./SharingInherited.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingInherited.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingInherited.vue?vue&type=style&index=0&id=6a277822&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6a277822\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',{attrs:{\"id\":\"sharing-inherited-shares\"}},[_c('SharingEntrySimple',{staticClass:\"sharing-entry__inherited\",attrs:{\"title\":_vm.mainTitle,\"subtitle\":_vm.subTitle,\"aria-expanded\":_vm.showInheritedShares},scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('div',{staticClass:\"avatar-shared icon-more-white\"})]},proxy:true}])},[_vm._v(\" \"),_c('NcActionButton',{attrs:{\"icon\":_vm.showInheritedSharesIcon,\"aria-label\":_vm.mainTitle},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.toggleInheritedShares.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.toggleTooltip)+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_vm._l((_vm.shares),function(share){return _c('SharingEntryInherited',{key:share.id,attrs:{\"file-info\":_vm.fileInfo,\"share\":share}})})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExternalShareAction.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExternalShareAction.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2021 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<Component :is=\"data.is\"\n\t\tv-bind=\"data\"\n\t\tv-on=\"action.handlers\">\n\t\t{{ data.text }}\n\t</Component>\n</template>\n\n<script>\nimport Share from '../models/Share'\n\nexport default {\n\tname: 'ExternalShareAction',\n\n\tprops: {\n\t\tid: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\taction: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => ({}),\n\t\t},\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\tshare: {\n\t\t\ttype: Share,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tdata() {\n\t\t\treturn this.action.data(this)\n\t\t},\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./ExternalShareAction.vue?vue&type=template&id=29f555e7&\"\nimport script from \"./ExternalShareAction.vue?vue&type=script&lang=js&\"\nexport * from \"./ExternalShareAction.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(_vm.data.is,_vm._g(_vm._b({tag:\"Component\"},'Component',_vm.data,false),_vm.action.handlers),[_vm._v(\"\\n\\t\"+_vm._s(_vm.data.text)+\"\\n\")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright 2022 Louis Chmn <louis@chmn.me>\n *\n * @author Louis Chmn <louis@chmn.me>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const ATOMIC_PERMISSIONS = {\n\tNONE: 0,\n\tREAD: 1,\n\tUPDATE: 2,\n\tCREATE: 4,\n\tDELETE: 8,\n\tSHARE: 16,\n}\n\nexport const BUNDLED_PERMISSIONS = {\n\tREAD_ONLY: ATOMIC_PERMISSIONS.READ,\n\tUPLOAD_AND_UPDATE: ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.DELETE,\n\tFILE_DROP: ATOMIC_PERMISSIONS.CREATE,\n\tALL: ATOMIC_PERMISSIONS.UPDATE | ATOMIC_PERMISSIONS.CREATE | ATOMIC_PERMISSIONS.READ | ATOMIC_PERMISSIONS.DELETE | ATOMIC_PERMISSIONS.SHARE,\n}\n\n/**\n * Return whether a given permissions set contains some permissions.\n *\n * @param {number} initialPermissionSet - the permissions set.\n * @param {number} permissionsToCheck - the permissions to check.\n * @return {boolean}\n */\nexport function hasPermissions(initialPermissionSet, permissionsToCheck) {\n\treturn initialPermissionSet !== ATOMIC_PERMISSIONS.NONE && (initialPermissionSet & permissionsToCheck) === permissionsToCheck\n}\n\n/**\n * Return whether a given permissions set is valid.\n *\n * @param {number} permissionsSet - the permissions set.\n *\n * @return {boolean}\n */\nexport function permissionsSetIsValid(permissionsSet) {\n\t// Must have at least READ or CREATE permission.\n\tif (!hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.READ) && !hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.CREATE)) {\n\t\treturn false\n\t}\n\n\t// Must have READ permission if have UPDATE or DELETE.\n\tif (!hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.READ) && (\n\t\thasPermissions(permissionsSet, ATOMIC_PERMISSIONS.UPDATE) || hasPermissions(permissionsSet, ATOMIC_PERMISSIONS.DELETE)\n\t)) {\n\t\treturn false\n\t}\n\n\treturn true\n}\n\n/**\n * Add some permissions to an initial set of permissions.\n *\n * @param {number} initialPermissionSet - the initial permissions.\n * @param {number} permissionsToAdd - the permissions to add.\n *\n * @return {number}\n */\nexport function addPermissions(initialPermissionSet, permissionsToAdd) {\n\treturn initialPermissionSet | permissionsToAdd\n}\n\n/**\n * Remove some permissions from an initial set of permissions.\n *\n * @param {number} initialPermissionSet - the initial permissions.\n * @param {number} permissionsToSubtract - the permissions to remove.\n *\n * @return {number}\n */\nexport function subtractPermissions(initialPermissionSet, permissionsToSubtract) {\n\treturn initialPermissionSet & ~permissionsToSubtract\n}\n\n/**\n * Toggle some permissions from an initial set of permissions.\n *\n * @param {number} initialPermissionSet - the permissions set.\n * @param {number} permissionsToToggle - the permissions to toggle.\n *\n * @return {number}\n */\nexport function togglePermissions(initialPermissionSet, permissionsToToggle) {\n\tif (hasPermissions(initialPermissionSet, permissionsToToggle)) {\n\t\treturn subtractPermissions(initialPermissionSet, permissionsToToggle)\n\t} else {\n\t\treturn addPermissions(initialPermissionSet, permissionsToToggle)\n\t}\n}\n\n/**\n * Return whether some given permissions can be toggled from a permission set.\n *\n * @param {number} permissionSet - the initial permissions set.\n * @param {number} permissionsToToggle - the permissions to toggle.\n *\n * @return {boolean}\n */\nexport function canTogglePermissions(permissionSet, permissionsToToggle) {\n\treturn permissionsSetIsValid(togglePermissions(permissionSet, permissionsToToggle))\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharePermissionsEditor.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharePermissionsEditor.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2022 Louis Chmn <louis@chmn.me>\n -\n - @author Louis Chmn <louis@chmn.me>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<li>\n\t\t<ul>\n\t\t\t<!-- file -->\n\t\t\t<NcActionCheckbox v-if=\"!isFolder\"\n\t\t\t\t:checked=\"shareHasPermissions(atomicPermissions.UPDATE)\"\n\t\t\t\t:disabled=\"saving\"\n\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.UPDATE)\">\n\t\t\t\t{{ t('files_sharing', 'Allow editing') }}\n\t\t\t</NcActionCheckbox>\n\n\t\t\t<!-- folder -->\n\t\t\t<template v-if=\"isFolder && fileHasCreatePermission && config.isPublicUploadEnabled\">\n\t\t\t\t<template v-if=\"!showCustomPermissionsForm\">\n\t\t\t\t\t<NcActionRadio :checked=\"sharePermissionEqual(bundledPermissions.READ_ONLY)\"\n\t\t\t\t\t\t:value=\"bundledPermissions.READ_ONLY\"\n\t\t\t\t\t\t:name=\"randomFormName\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t@change=\"setSharePermissions(bundledPermissions.READ_ONLY)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Read only') }}\n\t\t\t\t\t</NcActionRadio>\n\n\t\t\t\t\t<NcActionRadio :checked=\"sharePermissionEqual(bundledPermissions.UPLOAD_AND_UPDATE)\"\n\t\t\t\t\t\t:value=\"bundledPermissions.UPLOAD_AND_UPDATE\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:name=\"randomFormName\"\n\t\t\t\t\t\t@change=\"setSharePermissions(bundledPermissions.UPLOAD_AND_UPDATE)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Allow upload and editing') }}\n\t\t\t\t\t</NcActionRadio>\n\t\t\t\t\t<NcActionRadio :checked=\"sharePermissionEqual(bundledPermissions.FILE_DROP)\"\n\t\t\t\t\t\t:value=\"bundledPermissions.FILE_DROP\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:name=\"randomFormName\"\n\t\t\t\t\t\tclass=\"sharing-entry__action--public-upload\"\n\t\t\t\t\t\t@change=\"setSharePermissions(bundledPermissions.FILE_DROP)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'File drop (upload only)') }}\n\t\t\t\t\t</NcActionRadio>\n\n\t\t\t\t\t<!-- custom permissions button -->\n\t\t\t\t\t<NcActionButton :title=\"t('files_sharing', 'Custom permissions')\"\n\t\t\t\t\t\t@click=\"showCustomPermissionsForm = true\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<Tune />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t{{ sharePermissionsIsBundle ? \"\" : sharePermissionsSummary }}\n\t\t\t\t\t</NcActionButton>\n\t\t\t\t</template>\n\n\t\t\t\t<!-- custom permissions -->\n\t\t\t\t<span v-else :class=\"{error: !sharePermissionsSetIsValid}\">\n\t\t\t\t\t<NcActionCheckbox :checked=\"shareHasPermissions(atomicPermissions.READ)\"\n\t\t\t\t\t\t:disabled=\"saving || !canToggleSharePermissions(atomicPermissions.READ)\"\n\t\t\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.READ)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Read') }}\n\t\t\t\t\t</NcActionCheckbox>\n\t\t\t\t\t<NcActionCheckbox :checked=\"shareHasPermissions(atomicPermissions.CREATE)\"\n\t\t\t\t\t\t:disabled=\"saving || !canToggleSharePermissions(atomicPermissions.CREATE)\"\n\t\t\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.CREATE)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Upload') }}\n\t\t\t\t\t</NcActionCheckbox>\n\t\t\t\t\t<NcActionCheckbox :checked=\"shareHasPermissions(atomicPermissions.UPDATE)\"\n\t\t\t\t\t\t:disabled=\"saving || !canToggleSharePermissions(atomicPermissions.UPDATE)\"\n\t\t\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.UPDATE)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Edit') }}\n\t\t\t\t\t</NcActionCheckbox>\n\t\t\t\t\t<NcActionCheckbox :checked=\"shareHasPermissions(atomicPermissions.DELETE)\"\n\t\t\t\t\t\t:disabled=\"saving || !canToggleSharePermissions(atomicPermissions.DELETE)\"\n\t\t\t\t\t\t@update:checked=\"toggleSharePermissions(atomicPermissions.DELETE)\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Delete') }}\n\t\t\t\t\t</NcActionCheckbox>\n\n\t\t\t\t\t<NcActionButton @click=\"showCustomPermissionsForm = false\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<ChevronLeft />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t{{ t('files_sharing', 'Bundled permissions') }}\n\t\t\t\t\t</NcActionButton>\n\t\t\t\t</span>\n\t\t\t</template>\n\t\t</ul>\n\t</li>\n</template>\n\n<script>\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton'\nimport NcActionRadio from '@nextcloud/vue/dist/Components/NcActionRadio'\nimport NcActionCheckbox from '@nextcloud/vue/dist/Components/NcActionCheckbox'\n\nimport SharesMixin from '../mixins/SharesMixin'\nimport {\n\tATOMIC_PERMISSIONS,\n\tBUNDLED_PERMISSIONS,\n\thasPermissions,\n\tpermissionsSetIsValid,\n\ttogglePermissions,\n\tcanTogglePermissions,\n} from '../lib/SharePermissionsToolBox'\n\nimport Tune from 'vue-material-design-icons/Tune'\nimport ChevronLeft from 'vue-material-design-icons/ChevronLeft'\n\nexport default {\n\tname: 'SharePermissionsEditor',\n\n\tcomponents: {\n\t\tNcActionButton,\n\t\tNcActionCheckbox,\n\t\tNcActionRadio,\n\t\tTune,\n\t\tChevronLeft,\n\t},\n\n\tmixins: [SharesMixin],\n\n\tdata() {\n\t\treturn {\n\t\t\trandomFormName: Math.random().toString(27).substring(2),\n\n\t\t\tshowCustomPermissionsForm: false,\n\n\t\t\tatomicPermissions: ATOMIC_PERMISSIONS,\n\t\t\tbundledPermissions: BUNDLED_PERMISSIONS,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Return the summary of custom checked permissions.\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tsharePermissionsSummary() {\n\t\t\treturn Object.values(this.atomicPermissions)\n\t\t\t\t.filter(permission => this.shareHasPermissions(permission))\n\t\t\t\t.map(permission => {\n\t\t\t\t\tswitch (permission) {\n\t\t\t\t\tcase this.atomicPermissions.CREATE:\n\t\t\t\t\t\treturn this.t('files_sharing', 'Upload')\n\t\t\t\t\tcase this.atomicPermissions.READ:\n\t\t\t\t\t\treturn this.t('files_sharing', 'Read')\n\t\t\t\t\tcase this.atomicPermissions.UPDATE:\n\t\t\t\t\t\treturn this.t('files_sharing', 'Edit')\n\t\t\t\t\tcase this.atomicPermissions.DELETE:\n\t\t\t\t\t\treturn this.t('files_sharing', 'Delete')\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn null\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.filter(permissionLabel => permissionLabel !== null)\n\t\t\t\t.join(', ')\n\t\t},\n\n\t\t/**\n\t\t * Return whether the share's permission is a bundle.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tsharePermissionsIsBundle() {\n\t\t\treturn Object.values(BUNDLED_PERMISSIONS)\n\t\t\t\t.map(bundle => this.sharePermissionEqual(bundle))\n\t\t\t\t.filter(isBundle => isBundle)\n\t\t\t\t.length > 0\n\t\t},\n\n\t\t/**\n\t\t * Return whether the share's permission is valid.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tsharePermissionsSetIsValid() {\n\t\t\treturn permissionsSetIsValid(this.share.permissions)\n\t\t},\n\n\t\t/**\n\t\t * Is the current share a folder ?\n\t\t * TODO: move to a proper FileInfo model?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisFolder() {\n\t\t\treturn this.fileInfo.type === 'dir'\n\t\t},\n\n\t\t/**\n\t\t * Does the current file/folder have create permissions.\n\t\t * TODO: move to a proper FileInfo model?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tfileHasCreatePermission() {\n\t\t\treturn !!(this.fileInfo.permissions & ATOMIC_PERMISSIONS.CREATE)\n\t\t},\n\t},\n\n\tmounted() {\n\t\t// Show the Custom Permissions view on open if the permissions set is not a bundle.\n\t\tthis.showCustomPermissionsForm = !this.sharePermissionsIsBundle\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Return whether the share has the exact given permissions.\n\t\t *\n\t\t * @param {number} permissions - the permissions to check.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tsharePermissionEqual(permissions) {\n\t\t\t// We use the share's permission without PERMISSION_SHARE as it is not relevant here.\n\t\t\treturn (this.share.permissions & ~ATOMIC_PERMISSIONS.SHARE) === permissions\n\t\t},\n\n\t\t/**\n\t\t * Return whether the share has the given permissions.\n\t\t *\n\t\t * @param {number} permissions - the permissions to check.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tshareHasPermissions(permissions) {\n\t\t\treturn hasPermissions(this.share.permissions, permissions)\n\t\t},\n\n\t\t/**\n\t\t * Set the share permissions to the given permissions.\n\t\t *\n\t\t * @param {number} permissions - the permissions to set.\n\t\t *\n\t\t * @return {void}\n\t\t */\n\t\tsetSharePermissions(permissions) {\n\t\t\tthis.share.permissions = permissions\n\t\t\tthis.queueUpdate('permissions')\n\t\t},\n\n\t\t/**\n\t\t * Return whether some given permissions can be toggled.\n\t\t *\n\t\t * @param {number} permissionsToToggle - the permissions to toggle.\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanToggleSharePermissions(permissionsToToggle) {\n\t\t\treturn canTogglePermissions(this.share.permissions, permissionsToToggle)\n\t\t},\n\n\t\t/**\n\t\t * Toggle a given permission.\n\t\t *\n\t\t * @param {number} permissions - the permissions to toggle.\n\t\t *\n\t\t * @return {void}\n\t\t */\n\t\ttoggleSharePermissions(permissions) {\n\t\t\tthis.share.permissions = togglePermissions(this.share.permissions, permissions)\n\n\t\t\tif (!permissionsSetIsValid(this.share.permissions)) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.queueUpdate('permissions')\n\t\t},\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n.error {\n\t::v-deep .action-checkbox__label:before {\n\t\tborder: 1px solid var(--color-error);\n\t}\n}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharePermissionsEditor.vue?vue&type=style&index=0&id=5e957d09&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharePermissionsEditor.vue?vue&type=style&index=0&id=5e957d09&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharePermissionsEditor.vue?vue&type=template&id=5e957d09&scoped=true&\"\nimport script from \"./SharePermissionsEditor.vue?vue&type=script&lang=js&\"\nexport * from \"./SharePermissionsEditor.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharePermissionsEditor.vue?vue&type=style&index=0&id=5e957d09&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5e957d09\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',[_c('ul',[(!_vm.isFolder)?_c('NcActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.UPDATE),\"disabled\":_vm.saving},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.UPDATE)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow editing'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isFolder && _vm.fileHasCreatePermission && _vm.config.isPublicUploadEnabled)?[(!_vm.showCustomPermissionsForm)?[_c('NcActionRadio',{attrs:{\"checked\":_vm.sharePermissionEqual(_vm.bundledPermissions.READ_ONLY),\"value\":_vm.bundledPermissions.READ_ONLY,\"name\":_vm.randomFormName,\"disabled\":_vm.saving},on:{\"change\":function($event){return _vm.setSharePermissions(_vm.bundledPermissions.READ_ONLY)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Read only'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionRadio',{attrs:{\"checked\":_vm.sharePermissionEqual(_vm.bundledPermissions.UPLOAD_AND_UPDATE),\"value\":_vm.bundledPermissions.UPLOAD_AND_UPDATE,\"disabled\":_vm.saving,\"name\":_vm.randomFormName},on:{\"change\":function($event){return _vm.setSharePermissions(_vm.bundledPermissions.UPLOAD_AND_UPDATE)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow upload and editing'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionRadio',{staticClass:\"sharing-entry__action--public-upload\",attrs:{\"checked\":_vm.sharePermissionEqual(_vm.bundledPermissions.FILE_DROP),\"value\":_vm.bundledPermissions.FILE_DROP,\"disabled\":_vm.saving,\"name\":_vm.randomFormName},on:{\"change\":function($event){return _vm.setSharePermissions(_vm.bundledPermissions.FILE_DROP)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'File drop (upload only)'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"title\":_vm.t('files_sharing', 'Custom permissions')},on:{\"click\":function($event){_vm.showCustomPermissionsForm = true}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Tune')]},proxy:true}],null,false,961531849)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.sharePermissionsIsBundle ? \"\" : _vm.sharePermissionsSummary)+\"\\n\\t\\t\\t\\t\")])]:_c('span',{class:{error: !_vm.sharePermissionsSetIsValid}},[_c('NcActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.READ),\"disabled\":_vm.saving || !_vm.canToggleSharePermissions(_vm.atomicPermissions.READ)},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.READ)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Read'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.CREATE),\"disabled\":_vm.saving || !_vm.canToggleSharePermissions(_vm.atomicPermissions.CREATE)},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.CREATE)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Upload'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.UPDATE),\"disabled\":_vm.saving || !_vm.canToggleSharePermissions(_vm.atomicPermissions.UPDATE)},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.UPDATE)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Edit'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionCheckbox',{attrs:{\"checked\":_vm.shareHasPermissions(_vm.atomicPermissions.DELETE),\"disabled\":_vm.saving || !_vm.canToggleSharePermissions(_vm.atomicPermissions.DELETE)},on:{\"update:checked\":function($event){return _vm.toggleSharePermissions(_vm.atomicPermissions.DELETE)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Delete'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionButton',{on:{\"click\":function($event){_vm.showCustomPermissionsForm = false}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('ChevronLeft')]},proxy:true}],null,false,1018742195)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Bundled permissions'))+\"\\n\\t\\t\\t\\t\")])],1)]:_vm._e()],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<li :class=\"{'sharing-entry--share': share}\" class=\"sharing-entry sharing-entry__link\">\n\t\t<NcAvatar :is-no-user=\"true\"\n\t\t\t:icon-class=\"isEmailShareType ? 'avatar-link-share icon-mail-white' : 'avatar-link-share icon-public-white'\"\n\t\t\tclass=\"sharing-entry__avatar\" />\n\t\t<div class=\"sharing-entry__desc\">\n\t\t\t<span class=\"sharing-entry__title\" :title=\"title\">\n\t\t\t\t{{ title }}\n\t\t\t</span>\n\t\t\t<p v-if=\"subtitle\">\n\t\t\t\t{{ subtitle }}\n\t\t\t</p>\n\t\t</div>\n\n\t\t<!-- clipboard -->\n\t\t<NcActions v-if=\"share && !isEmailShareType && share.token\"\n\t\t\tref=\"copyButton\"\n\t\t\tclass=\"sharing-entry__copy\">\n\t\t\t<NcActionButton :aria-label=\"t('files_sharing', 'Copy public link to clipboard')\"\n\t\t\t\t@click.stop.prevent=\"copyLink\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Check v-if=\"copied && copySuccess\" :size=\"20\" />\n\t\t\t\t\t<ClipboardTextMultipleOutline v-else :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\t{{ clipboardTooltip }}\n\t\t\t</NcActionButton>\n\t\t</NcActions>\n\n\t\t<!-- pending actions -->\n\t\t<NcActions v-if=\"!pending && (pendingPassword || pendingExpirationDate)\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\tmenu-align=\"right\"\n\t\t\t:open.sync=\"open\"\n\t\t\t@close=\"onNewLinkShare\">\n\t\t\t<!-- pending data menu -->\n\t\t\t<NcActionText v-if=\"errors.pending\"\n\t\t\t\ticon=\"icon-error\"\n\t\t\t\t:class=\"{ error: errors.pending}\">\n\t\t\t\t{{ errors.pending }}\n\t\t\t</NcActionText>\n\t\t\t<NcActionText v-else icon=\"icon-info\">\n\t\t\t\t{{ t('files_sharing', 'Please enter the following required information before creating the share') }}\n\t\t\t</NcActionText>\n\n\t\t\t<!-- password -->\n\t\t\t<NcActionText v-if=\"pendingPassword\" icon=\"icon-password\">\n\t\t\t\t{{ t('files_sharing', 'Password protection (enforced)') }}\n\t\t\t</NcActionText>\n\t\t\t<NcActionCheckbox v-else-if=\"config.enableLinkPasswordByDefault\"\n\t\t\t\t:checked.sync=\"isPasswordProtected\"\n\t\t\t\t:disabled=\"config.enforcePasswordForPublicLink || saving\"\n\t\t\t\tclass=\"share-link-password-checkbox\"\n\t\t\t\t@uncheck=\"onPasswordDisable\">\n\t\t\t\t{{ t('files_sharing', 'Password protection') }}\n\t\t\t</NcActionCheckbox>\n\t\t\t<NcActionInput v-if=\"pendingPassword || share.password\"\n\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\tcontent: errors.password,\n\t\t\t\t\tshow: errors.password,\n\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t}\"\n\t\t\t\tclass=\"share-link-password\"\n\t\t\t\t:value.sync=\"share.password\"\n\t\t\t\t:disabled=\"saving\"\n\t\t\t\t:required=\"config.enableLinkPasswordByDefault || config.enforcePasswordForPublicLink\"\n\t\t\t\t:minlength=\"isPasswordPolicyEnabled && config.passwordPolicy.minLength\"\n\t\t\t\ticon=\"\"\n\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t@submit=\"onNewLinkShare\">\n\t\t\t\t{{ t('files_sharing', 'Enter a password') }}\n\t\t\t</NcActionInput>\n\n\t\t\t<!-- expiration date -->\n\t\t\t<NcActionText v-if=\"pendingExpirationDate\" icon=\"icon-calendar-dark\">\n\t\t\t\t{{ t('files_sharing', 'Expiration date (enforced)') }}\n\t\t\t</NcActionText>\n\t\t\t<NcActionInput v-if=\"pendingExpirationDate\"\n\t\t\t\tclass=\"share-link-expire-date\"\n\t\t\t\t:disabled=\"saving\"\n\t\t\t\t:is-native-picker=\"true\"\n\t\t\t\t:hide-label=\"true\"\n\t\t\t\t:value=\"new Date(share.expireDate)\"\n\t\t\t\ttype=\"date\"\n\t\t\t\t:min=\"dateTomorrow\"\n\t\t\t\t:max=\"dateMaxEnforced\"\n\t\t\t\t@input=\"onExpirationChange\">\n\t\t\t\t<!-- let's not submit when picked, the user\n\t\t\t\t\tmight want to still edit or copy the password -->\n\t\t\t\t{{ t('files_sharing', 'Enter a date') }}\n\t\t\t</NcActionInput>\n\n\t\t\t<NcActionButton icon=\"icon-checkmark\" @click.prevent.stop=\"onNewLinkShare\">\n\t\t\t\t{{ t('files_sharing', 'Create share') }}\n\t\t\t</NcActionButton>\n\t\t\t<NcActionButton icon=\"icon-close\" @click.prevent.stop=\"onCancel\">\n\t\t\t\t{{ t('files_sharing', 'Cancel') }}\n\t\t\t</NcActionButton>\n\t\t</NcActions>\n\n\t\t<!-- actions -->\n\t\t<NcActions v-else-if=\"!loading\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\tmenu-align=\"right\"\n\t\t\t:open.sync=\"open\"\n\t\t\t@close=\"onMenuClose\">\n\t\t\t<template v-if=\"share\">\n\t\t\t\t<template v-if=\"share.canEdit && canReshare\">\n\t\t\t\t\t<!-- Custom Label -->\n\t\t\t\t\t<NcActionInput ref=\"label\"\n\t\t\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\t\t\tcontent: errors.label,\n\t\t\t\t\t\t\tshow: errors.label,\n\t\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\t\tdefaultContainer: '.app-sidebar'\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\t:class=\"{ error: errors.label }\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:aria-label=\"t('files_sharing', 'Share label')\"\n\t\t\t\t\t\t:value=\"share.newLabel !== undefined ? share.newLabel : share.label\"\n\t\t\t\t\t\ticon=\"icon-edit\"\n\t\t\t\t\t\tmaxlength=\"255\"\n\t\t\t\t\t\t@update:value=\"onLabelChange\"\n\t\t\t\t\t\t@submit=\"onLabelSubmit\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Share label') }}\n\t\t\t\t\t</NcActionInput>\n\n\t\t\t\t\t<SharePermissionsEditor :can-reshare=\"canReshare\"\n\t\t\t\t\t\t:share.sync=\"share\"\n\t\t\t\t\t\t:file-info=\"fileInfo\" />\n\n\t\t\t\t\t<NcActionSeparator />\n\n\t\t\t\t\t<NcActionCheckbox :checked.sync=\"share.hideDownload\"\n\t\t\t\t\t\t:disabled=\"saving || canChangeHideDownload\"\n\t\t\t\t\t\t@change=\"queueUpdate('hideDownload')\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Hide download') }}\n\t\t\t\t\t</NcActionCheckbox>\n\n\t\t\t\t\t<!-- password -->\n\t\t\t\t\t<NcActionCheckbox :checked.sync=\"isPasswordProtected\"\n\t\t\t\t\t\t:disabled=\"config.enforcePasswordForPublicLink || saving\"\n\t\t\t\t\t\tclass=\"share-link-password-checkbox\"\n\t\t\t\t\t\t@uncheck=\"onPasswordDisable\">\n\t\t\t\t\t\t{{ config.enforcePasswordForPublicLink\n\t\t\t\t\t\t\t? t('files_sharing', 'Password protection (enforced)')\n\t\t\t\t\t\t\t: t('files_sharing', 'Password protect') }}\n\t\t\t\t\t</NcActionCheckbox>\n\t\t\t\t\t<NcActionInput v-if=\"isPasswordProtected\"\n\t\t\t\t\t\tref=\"password\"\n\t\t\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\t\t\tcontent: errors.password,\n\t\t\t\t\t\t\tshow: errors.password,\n\t\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\tclass=\"share-link-password\"\n\t\t\t\t\t\t:class=\"{ error: errors.password}\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:required=\"config.enforcePasswordForPublicLink\"\n\t\t\t\t\t\t:value=\"hasUnsavedPassword ? share.newPassword : '***************'\"\n\t\t\t\t\t\ticon=\"icon-password\"\n\t\t\t\t\t\tautocomplete=\"new-password\"\n\t\t\t\t\t\t:type=\"hasUnsavedPassword ? 'text': 'password'\"\n\t\t\t\t\t\t@update:value=\"onPasswordChange\"\n\t\t\t\t\t\t@submit=\"onPasswordSubmit\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Enter a password') }}\n\t\t\t\t\t</NcActionInput>\n\t\t\t\t\t<NcActionText v-if=\"isEmailShareType && passwordExpirationTime\" icon=\"icon-info\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Password expires {passwordExpirationTime}', {passwordExpirationTime}) }}\n\t\t\t\t\t</NcActionText>\n\t\t\t\t\t<NcActionText v-else-if=\"isEmailShareType && passwordExpirationTime !== null\" icon=\"icon-error\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Password expired') }}\n\t\t\t\t\t</NcActionText>\n\n\t\t\t\t\t<!-- password protected by Talk -->\n\t\t\t\t\t<NcActionCheckbox v-if=\"isPasswordProtectedByTalkAvailable\"\n\t\t\t\t\t\t:checked.sync=\"isPasswordProtectedByTalk\"\n\t\t\t\t\t\t:disabled=\"!canTogglePasswordProtectedByTalkAvailable || saving\"\n\t\t\t\t\t\tclass=\"share-link-password-talk-checkbox\"\n\t\t\t\t\t\t@change=\"onPasswordProtectedByTalkChange\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Video verification') }}\n\t\t\t\t\t</NcActionCheckbox>\n\n\t\t\t\t\t<!-- expiration date -->\n\t\t\t\t\t<NcActionCheckbox :checked.sync=\"hasExpirationDate\"\n\t\t\t\t\t\t:disabled=\"config.isDefaultExpireDateEnforced || saving\"\n\t\t\t\t\t\tclass=\"share-link-expire-date-checkbox\"\n\t\t\t\t\t\t@uncheck=\"onExpirationDisable\">\n\t\t\t\t\t\t{{ config.isDefaultExpireDateEnforced\n\t\t\t\t\t\t\t? t('files_sharing', 'Expiration date (enforced)')\n\t\t\t\t\t\t\t: t('files_sharing', 'Set expiration date') }}\n\t\t\t\t\t</NcActionCheckbox>\n\t\t\t\t\t<NcActionInput v-if=\"hasExpirationDate\"\n\t\t\t\t\t\tref=\"expireDate\"\n\t\t\t\t\t\t:is-native-picker=\"true\"\n\t\t\t\t\t\t:hide-label=\"true\"\n\t\t\t\t\t\tclass=\"share-link-expire-date\"\n\t\t\t\t\t\t:class=\"{ error: errors.expireDate}\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:value=\"new Date(share.expireDate)\"\n\t\t\t\t\t\ttype=\"date\"\n\t\t\t\t\t\t:min=\"dateTomorrow\"\n\t\t\t\t\t\t:max=\"dateMaxEnforced\"\n\t\t\t\t\t\t@input=\"onExpirationChange\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Enter a date') }}\n\t\t\t\t\t</NcActionInput>\n\n\t\t\t\t\t<!-- note -->\n\t\t\t\t\t<NcActionCheckbox :checked.sync=\"hasNote\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t@uncheck=\"queueUpdate('note')\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Note to recipient') }}\n\t\t\t\t\t</NcActionCheckbox>\n\t\t\t\t\t<NcActionTextEditable v-if=\"hasNote\"\n\t\t\t\t\t\tref=\"note\"\n\t\t\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\t\t\tcontent: errors.note,\n\t\t\t\t\t\t\tshow: errors.note,\n\t\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\t:class=\"{ error: errors.note}\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:placeholder=\"t('files_sharing', 'Enter a note for the share recipient')\"\n\t\t\t\t\t\t:value=\"share.newNote || share.note\"\n\t\t\t\t\t\ticon=\"icon-edit\"\n\t\t\t\t\t\t@update:value=\"onNoteChange\"\n\t\t\t\t\t\t@submit=\"onNoteSubmit\" />\n\t\t\t\t</template>\n\n\t\t\t\t<NcActionSeparator />\n\n\t\t\t\t<!-- external actions -->\n\t\t\t\t<ExternalShareAction v-for=\"action in externalLinkActions\"\n\t\t\t\t\t:id=\"action.id\"\n\t\t\t\t\t:key=\"action.id\"\n\t\t\t\t\t:action=\"action\"\n\t\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t\t:share=\"share\" />\n\n\t\t\t\t<!-- external legacy sharing via url (social...) -->\n\t\t\t\t<NcActionLink v-for=\"({icon, url, name}, index) in externalLegacyLinkActions\"\n\t\t\t\t\t:key=\"index\"\n\t\t\t\t\t:href=\"url(shareLink)\"\n\t\t\t\t\t:icon=\"icon\"\n\t\t\t\t\ttarget=\"_blank\">\n\t\t\t\t\t{{ name }}\n\t\t\t\t</NcActionLink>\n\n\t\t\t\t<NcActionButton v-if=\"share.canDelete\"\n\t\t\t\t\ticon=\"icon-close\"\n\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t@click.prevent=\"onDelete\">\n\t\t\t\t\t{{ t('files_sharing', 'Unshare') }}\n\t\t\t\t</NcActionButton>\n\t\t\t\t<NcActionButton v-if=\"!isEmailShareType && canReshare\"\n\t\t\t\t\tclass=\"new-share-link\"\n\t\t\t\t\ticon=\"icon-add\"\n\t\t\t\t\t@click.prevent.stop=\"onNewLinkShare\">\n\t\t\t\t\t{{ t('files_sharing', 'Add another link') }}\n\t\t\t\t</NcActionButton>\n\t\t\t</template>\n\n\t\t\t<!-- Create new share -->\n\t\t\t<NcActionButton v-else-if=\"canReshare\"\n\t\t\t\tclass=\"new-share-link\"\n\t\t\t\t:icon=\"loading ? 'icon-loading-small' : 'icon-add'\"\n\t\t\t\t@click.prevent.stop=\"onNewLinkShare\">\n\t\t\t\t{{ t('files_sharing', 'Create a new share link') }}\n\t\t\t</NcActionButton>\n\t\t</NcActions>\n\n\t\t<!-- loading indicator to replace the menu -->\n\t\t<div v-else class=\"icon-loading-small sharing-entry__loading\" />\n\t</li>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\nimport { showError, showSuccess } from '@nextcloud/dialogs'\nimport { Type as ShareTypes } from '@nextcloud/sharing'\nimport Vue from 'vue'\n\nimport {\n\tNcActionButton,\n\tNcActionCheckbox,\n\tNcActionInput,\n\tNcActionLink,\n\tNcActions,\n\tNcActionSeparator,\n\tNcActionText,\n\tNcActionTextEditable,\n\tNcAvatar,\n\tTooltip,\n} from '@nextcloud/vue'\n\nimport ExternalShareAction from './ExternalShareAction.vue'\nimport SharePermissionsEditor from './SharePermissionsEditor.vue'\nimport GeneratePassword from '../utils/GeneratePassword.js'\nimport Share from '../models/Share.js'\nimport SharesMixin from '../mixins/SharesMixin.js'\n\nimport Check from 'vue-material-design-icons/Check.vue'\nimport ClipboardTextMultipleOutline from 'vue-material-design-icons/ClipboardTextMultipleOutline.vue'\n\nexport default {\n\tname: 'SharingEntryLink',\n\n\tcomponents: {\n\t\tCheck,\n\t\tClipboardTextMultipleOutline,\n\t\tExternalShareAction,\n\t\tNcActionButton,\n\t\tNcActionCheckbox,\n\t\tNcActionInput,\n\t\tNcActionLink,\n\t\tNcActions,\n\t\tNcActionSeparator,\n\t\tNcActionText,\n\t\tNcActionTextEditable,\n\t\tNcAvatar,\n\t\tSharePermissionsEditor,\n\t},\n\n\tdirectives: {\n\t\tTooltip,\n\t},\n\n\tmixins: [SharesMixin],\n\n\tprops: {\n\t\tcanReshare: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tcopySuccess: true,\n\t\t\tcopied: false,\n\n\t\t\t// Are we waiting for password/expiration date\n\t\t\tpending: false,\n\n\t\t\tExternalLegacyLinkActions: OCA.Sharing.ExternalLinkActions.state,\n\t\t\tExternalShareActions: OCA.Sharing.ExternalShareActions.state,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Link share label\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\ttitle() {\n\t\t\t// if we have a valid existing share (not pending)\n\t\t\tif (this.share && this.share.id) {\n\t\t\t\tif (!this.isShareOwner && this.share.ownerDisplayName) {\n\t\t\t\t\tif (this.isEmailShareType) {\n\t\t\t\t\t\treturn t('files_sharing', '{shareWith} by {initiator}', {\n\t\t\t\t\t\t\tshareWith: this.share.shareWith,\n\t\t\t\t\t\t\tinitiator: this.share.ownerDisplayName,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\treturn t('files_sharing', 'Shared via link by {initiator}', {\n\t\t\t\t\t\tinitiator: this.share.ownerDisplayName,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (this.share.label && this.share.label.trim() !== '') {\n\t\t\t\t\tif (this.isEmailShareType) {\n\t\t\t\t\t\treturn t('files_sharing', 'Mail share ({label})', {\n\t\t\t\t\t\t\tlabel: this.share.label.trim(),\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\treturn t('files_sharing', 'Share link ({label})', {\n\t\t\t\t\t\tlabel: this.share.label.trim(),\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (this.isEmailShareType) {\n\t\t\t\t\treturn this.share.shareWith\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Share link')\n\t\t},\n\n\t\t/**\n\t\t * Show the email on a second line if a label is set for mail shares\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tsubtitle() {\n\t\t\tif (this.isEmailShareType\n\t\t\t\t&& this.title !== this.share.shareWith) {\n\t\t\t\treturn this.share.shareWith\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\t/**\n\t\t * Does the current share have an expiration date\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasExpirationDate: {\n\t\t\tget() {\n\t\t\t\treturn this.config.isDefaultExpireDateEnforced\n\t\t\t\t\t|| !!this.share.expireDate\n\t\t\t},\n\t\t\tset(enabled) {\n\t\t\t\tconst defaultExpirationDate = this.config.defaultExpirationDate\n\t\t\t\t\t|| new Date(new Date().setDate(new Date().getDate() + 1))\n\t\t\t\tthis.share.expireDate = enabled\n\t\t\t\t\t? this.formatDateToString(defaultExpirationDate)\n\t\t\t\t\t: ''\n\t\t\t\tconsole.debug('Expiration date status', enabled, this.share.expireDate)\n\t\t\t},\n\t\t},\n\n\t\tdateMaxEnforced() {\n\t\t\tif (this.config.isDefaultExpireDateEnforced) {\n\t\t\t\treturn new Date(new Date().setDate(new Date().getDate() + this.config.defaultExpireDate))\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\t/**\n\t\t * Is the current share password protected ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisPasswordProtected: {\n\t\t\tget() {\n\t\t\t\treturn this.config.enforcePasswordForPublicLink\n\t\t\t\t\t|| !!this.share.password\n\t\t\t},\n\t\t\tasync set(enabled) {\n\t\t\t\t// TODO: directly save after generation to make sure the share is always protected\n\t\t\t\tVue.set(this.share, 'password', enabled ? await GeneratePassword() : '')\n\t\t\t\tVue.set(this.share, 'newPassword', this.share.password)\n\t\t\t},\n\t\t},\n\n\t\tpasswordExpirationTime() {\n\t\t\tif (this.share.passwordExpirationTime === null) {\n\t\t\t\treturn null\n\t\t\t}\n\n\t\t\tconst expirationTime = moment(this.share.passwordExpirationTime)\n\n\t\t\tif (expirationTime.diff(moment()) < 0) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\treturn expirationTime.fromNow()\n\t\t},\n\n\t\t/**\n\t\t * Is Talk enabled?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisTalkEnabled() {\n\t\t\treturn OC.appswebroots.spreed !== undefined\n\t\t},\n\n\t\t/**\n\t\t * Is it possible to protect the password by Talk?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisPasswordProtectedByTalkAvailable() {\n\t\t\treturn this.isPasswordProtected && this.isTalkEnabled\n\t\t},\n\n\t\t/**\n\t\t * Is the current share password protected by Talk?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisPasswordProtectedByTalk: {\n\t\t\tget() {\n\t\t\t\treturn this.share.sendPasswordByTalk\n\t\t\t},\n\t\t\tasync set(enabled) {\n\t\t\t\tthis.share.sendPasswordByTalk = enabled\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Is the current share an email share ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisEmailShareType() {\n\t\t\treturn this.share\n\t\t\t\t? this.share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL\n\t\t\t\t: false\n\t\t},\n\n\t\tcanTogglePasswordProtectedByTalkAvailable() {\n\t\t\tif (!this.isPasswordProtected) {\n\t\t\t\t// Makes no sense\n\t\t\t\treturn false\n\t\t\t} else if (this.isEmailShareType && !this.hasUnsavedPassword) {\n\t\t\t\t// For email shares we need a new password in order to enable or\n\t\t\t\t// disable\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\t// Anything else should be fine\n\t\t\treturn true\n\t\t},\n\n\t\t/**\n\t\t * Pending data.\n\t\t * If the share still doesn't have an id, it is not synced\n\t\t * Therefore this is still not valid and requires user input\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tpendingPassword() {\n\t\t\treturn this.config.enforcePasswordForPublicLink && this.share && !this.share.id\n\t\t},\n\t\tpendingExpirationDate() {\n\t\t\treturn this.config.isDefaultExpireDateEnforced && this.share && !this.share.id\n\t\t},\n\n\t\t// if newPassword exists, but is empty, it means\n\t\t// the user deleted the original password\n\t\thasUnsavedPassword() {\n\t\t\treturn this.share.newPassword !== undefined\n\t\t},\n\n\t\t/**\n\t\t * Return the public share link\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tshareLink() {\n\t\t\treturn window.location.protocol + '//' + window.location.host + generateUrl('/s/') + this.share.token\n\t\t},\n\n\t\t/**\n\t\t * Clipboard v-tooltip message\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tclipboardTooltip() {\n\t\t\tif (this.copied) {\n\t\t\t\tif (this.copySuccess) {\n\t\t\t\t\treturn ''\n\t\t\t\t}\n\t\t\t\treturn t('files_sharing', 'Cannot copy, please copy the link manually')\n\t\t\t}\n\t\t\treturn t('files_sharing', 'Copy to clipboard')\n\t\t},\n\n\t\t/**\n\t\t * External additionnai actions for the menu\n\t\t *\n\t\t * @deprecated use OCA.Sharing.ExternalShareActions\n\t\t * @return {Array}\n\t\t */\n\t\texternalLegacyLinkActions() {\n\t\t\treturn this.ExternalLegacyLinkActions.actions\n\t\t},\n\n\t\t/**\n\t\t * Additional actions for the menu\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\texternalLinkActions() {\n\t\t\t// filter only the registered actions for said link\n\t\t\treturn this.ExternalShareActions.actions\n\t\t\t\t.filter(action => action.shareType.includes(ShareTypes.SHARE_TYPE_LINK)\n\t\t\t\t\t|| action.shareType.includes(ShareTypes.SHARE_TYPE_EMAIL))\n\t\t},\n\n\t\tisPasswordPolicyEnabled() {\n\t\t\treturn typeof this.config.passwordPolicy === 'object'\n\t\t},\n\n\t\tcanChangeHideDownload() {\n\t\t\tconst hasDisabledDownload = (shareAttribute) => shareAttribute.key === 'download' && shareAttribute.scope === 'permissions' && shareAttribute.enabled === false\n\n\t\t\treturn this.fileInfo.shareAttributes.some(hasDisabledDownload)\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Create a new share link and append it to the list\n\t\t */\n\t\tasync onNewLinkShare() {\n\t\t\t// do not run again if already loading\n\t\t\tif (this.loading) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst shareDefaults = {\n\t\t\t\tshare_type: ShareTypes.SHARE_TYPE_LINK,\n\t\t\t}\n\t\t\tif (this.config.isDefaultExpireDateEnforced) {\n\t\t\t\t// default is empty string if not set\n\t\t\t\t// expiration is the share object key, not expireDate\n\t\t\t\tshareDefaults.expiration = this.formatDateToString(this.config.defaultExpirationDate)\n\t\t\t}\n\t\t\tif (this.config.enableLinkPasswordByDefault) {\n\t\t\t\tshareDefaults.password = await GeneratePassword()\n\t\t\t}\n\n\t\t\t// do not push yet if we need a password or an expiration date: show pending menu\n\t\t\tif (this.config.enforcePasswordForPublicLink || this.config.isDefaultExpireDateEnforced) {\n\t\t\t\tthis.pending = true\n\n\t\t\t\t// if a share already exists, pushing it\n\t\t\t\tif (this.share && !this.share.id) {\n\t\t\t\t\t// if the share is valid, create it on the server\n\t\t\t\t\tif (this.checkShare(this.share)) {\n\t\t\t\t\t\tawait this.pushNewLinkShare(this.share, true)\n\t\t\t\t\t\treturn true\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.open = true\n\t\t\t\t\t\tOC.Notification.showTemporary(t('files_sharing', 'Error, please enter proper password and/or expiration date'))\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// ELSE, show the pending popovermenu\n\t\t\t\t// if password enforced, pre-fill with random one\n\t\t\t\tif (this.config.enforcePasswordForPublicLink) {\n\t\t\t\t\tshareDefaults.password = await GeneratePassword()\n\t\t\t\t}\n\n\t\t\t\t// create share & close menu\n\t\t\t\tconst share = new Share(shareDefaults)\n\t\t\t\tconst component = await new Promise(resolve => {\n\t\t\t\t\tthis.$emit('add:share', share, resolve)\n\t\t\t\t})\n\n\t\t\t\t// open the menu on the\n\t\t\t\t// freshly created share component\n\t\t\t\tthis.open = false\n\t\t\t\tthis.pending = false\n\t\t\t\tcomponent.open = true\n\n\t\t\t// Nothing is enforced, creating share directly\n\t\t\t} else {\n\t\t\t\tconst share = new Share(shareDefaults)\n\t\t\t\tawait this.pushNewLinkShare(share)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Push a new link share to the server\n\t\t * And update or append to the list\n\t\t * accordingly\n\t\t *\n\t\t * @param {Share} share the new share\n\t\t * @param {boolean} [update=false] do we update the current share ?\n\t\t */\n\t\tasync pushNewLinkShare(share, update) {\n\t\t\ttry {\n\t\t\t\t// do nothing if we're already pending creation\n\t\t\t\tif (this.loading) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\n\t\t\t\tthis.loading = true\n\t\t\t\tthis.errors = {}\n\n\t\t\t\tconst path = (this.fileInfo.path + '/' + this.fileInfo.name).replace('//', '/')\n\t\t\t\tconst options = {\n\t\t\t\t\tpath,\n\t\t\t\t\tshareType: ShareTypes.SHARE_TYPE_LINK,\n\t\t\t\t\tpassword: share.password,\n\t\t\t\t\texpireDate: share.expireDate,\n\t\t\t\t\tattributes: JSON.stringify(this.fileInfo.shareAttributes),\n\t\t\t\t\t// we do not allow setting the publicUpload\n\t\t\t\t\t// before the share creation.\n\t\t\t\t\t// Todo: We also need to fix the createShare method in\n\t\t\t\t\t// lib/Controller/ShareAPIController.php to allow file drop\n\t\t\t\t\t// (currently not supported on create, only update)\n\t\t\t\t}\n\n\t\t\t\tconsole.debug('Creating link share with options', options)\n\t\t\t\tconst newShare = await this.createShare(options)\n\n\t\t\t\tthis.open = false\n\t\t\t\tconsole.debug('Link share created', newShare)\n\n\t\t\t\t// if share already exists, copy link directly on next tick\n\t\t\t\tlet component\n\t\t\t\tif (update) {\n\t\t\t\t\tcomponent = await new Promise(resolve => {\n\t\t\t\t\t\tthis.$emit('update:share', newShare, resolve)\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\t// adding new share to the array and copying link to clipboard\n\t\t\t\t\t// using promise so that we can copy link in the same click function\n\t\t\t\t\t// and avoid firefox copy permissions issue\n\t\t\t\t\tcomponent = await new Promise(resolve => {\n\t\t\t\t\t\tthis.$emit('add:share', newShare, resolve)\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\t// Execute the copy link method\n\t\t\t\t// freshly created share component\n\t\t\t\t// ! somehow does not works on firefox !\n\t\t\t\tif (!this.config.enforcePasswordForPublicLink) {\n\t\t\t\t\t// Only copy the link when the password was not forced,\n\t\t\t\t\t// otherwise the user needs to copy/paste the password before finishing the share.\n\t\t\t\t\tcomponent.copyLink()\n\t\t\t\t}\n\n\t\t\t} catch (data) {\n\t\t\t\tconst message = data?.response?.data?.ocs?.meta?.message\n\t\t\t\tif (!message) {\n\t\t\t\t\tshowError(t('sharing', 'Error while creating the share'))\n\t\t\t\t\tconsole.error(data)\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tif (message.match(/password/i)) {\n\t\t\t\t\tthis.onSyncError('password', message)\n\t\t\t\t} else if (message.match(/date/i)) {\n\t\t\t\t\tthis.onSyncError('expireDate', message)\n\t\t\t\t} else {\n\t\t\t\t\tthis.onSyncError('pending', message)\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Label changed, let's save it to a different key\n\t\t *\n\t\t * @param {string} label the share label\n\t\t */\n\t\tonLabelChange(label) {\n\t\t\tthis.$set(this.share, 'newLabel', label.trim())\n\t\t},\n\n\t\t/**\n\t\t * When the note change, we trim, save and dispatch\n\t\t */\n\t\tonLabelSubmit() {\n\t\t\tif (typeof this.share.newLabel === 'string') {\n\t\t\t\tthis.share.label = this.share.newLabel\n\t\t\t\tthis.$delete(this.share, 'newLabel')\n\t\t\t\tshowSuccess(t('files_sharing', 'Share label saved'))\n\t\t\t\tthis.queueUpdate('label')\n\t\t\t}\n\t\t},\n\t\tasync copyLink() {\n\t\t\ttry {\n\t\t\t\tawait this.$copyText(this.shareLink)\n\t\t\t\tshowSuccess(t('files_sharing', 'Link copied'))\n\t\t\t\t// focus and show the tooltip\n\t\t\t\tthis.$refs.copyButton.$el.focus()\n\t\t\t\tthis.copySuccess = true\n\t\t\t\tthis.copied = true\n\t\t\t} catch (error) {\n\t\t\t\tthis.copySuccess = false\n\t\t\t\tthis.copied = true\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.copySuccess = false\n\t\t\t\t\tthis.copied = false\n\t\t\t\t}, 4000)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Update newPassword values\n\t\t * of share. If password is set but not newPassword\n\t\t * then the user did not changed the password\n\t\t * If both co-exists, the password have changed and\n\t\t * we show it in plain text.\n\t\t * Then on submit (or menu close), we sync it.\n\t\t *\n\t\t * @param {string} password the changed password\n\t\t */\n\t\tonPasswordChange(password) {\n\t\t\tthis.$set(this.share, 'newPassword', password)\n\t\t},\n\n\t\t/**\n\t\t * Uncheck password protection\n\t\t * We need this method because @update:checked\n\t\t * is ran simultaneously as @uncheck, so we\n\t\t * cannot ensure data is up-to-date\n\t\t */\n\t\tonPasswordDisable() {\n\t\t\tthis.share.password = ''\n\n\t\t\t// reset password state after sync\n\t\t\tthis.$delete(this.share, 'newPassword')\n\n\t\t\t// only update if valid share.\n\t\t\tif (this.share.id) {\n\t\t\t\tthis.queueUpdate('password')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Menu have been closed or password has been submitted.\n\t\t * The only property that does not get\n\t\t * synced automatically is the password\n\t\t * So let's check if we have an unsaved\n\t\t * password.\n\t\t * expireDate is saved on datepicker pick\n\t\t * or close.\n\t\t */\n\t\tonPasswordSubmit() {\n\t\t\tif (this.hasUnsavedPassword) {\n\t\t\t\tthis.share.password = this.share.newPassword.trim()\n\t\t\t\tshowSuccess(t('files_sharing', 'Share password saved'))\n\t\t\t\tthis.queueUpdate('password')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Update the password along with \"sendPasswordByTalk\".\n\t\t *\n\t\t * If the password was modified the new password is sent; otherwise\n\t\t * updating a mail share would fail, as in that case it is required that\n\t\t * a new password is set when enabling or disabling\n\t\t * \"sendPasswordByTalk\".\n\t\t */\n\t\tonPasswordProtectedByTalkChange() {\n\t\t\tif (this.hasUnsavedPassword) {\n\t\t\t\tthis.share.password = this.share.newPassword.trim()\n\t\t\t}\n\n\t\t\tthis.queueUpdate('sendPasswordByTalk', 'password')\n\t\t},\n\n\t\t/**\n\t\t * Save potential changed data on menu close\n\t\t */\n\t\tonMenuClose() {\n\t\t\tthis.onPasswordSubmit()\n\t\t\tthis.onNoteSubmit()\n\t\t},\n\n\t\t/**\n\t\t * Cancel the share creation\n\t\t * Used in the pending popover\n\t\t */\n\t\tonCancel() {\n\t\t\t// this.share already exists at this point,\n\t\t\t// but is incomplete as not pushed to server\n\t\t\t// YET. We can safely delete the share :)\n\t\t\tthis.$emit('remove:share', this.share)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\tmin-height: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\toverflow: hidden;\n\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__title {\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t}\n\n\t&:not(.sharing-entry--share) &__actions {\n\t\t.new-share-link {\n\t\t\tborder-top: 1px solid var(--color-border);\n\t\t}\n\t}\n\n\t::v-deep .avatar-link-share {\n\t\tbackground-color: var(--color-primary);\n\t}\n\n\t.sharing-entry__action--public-upload {\n\t\tborder-bottom: 1px solid var(--color-border);\n\t}\n\n\t&__loading {\n\t\twidth: 44px;\n\t\theight: 44px;\n\t\tmargin: 0;\n\t\tpadding: 14px;\n\t\tmargin-left: auto;\n\t}\n\n\t// put menus to the left\n\t// but only the first one\n\t.action-item {\n\t\tmargin-left: auto;\n\t\t~ .action-item,\n\t\t~ .sharing-entry__loading {\n\t\t\tmargin-left: 0;\n\t\t}\n\t}\n\n\t.icon-checkmark-color {\n\t\topacity: 1;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryLink.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryLink.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryLink.vue?vue&type=style&index=0&id=eb63f3b4&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntryLink.vue?vue&type=style&index=0&id=eb63f3b4&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntryLink.vue?vue&type=template&id=eb63f3b4&scoped=true&\"\nimport script from \"./SharingEntryLink.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntryLink.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntryLink.vue?vue&type=style&index=0&id=eb63f3b4&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"eb63f3b4\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{staticClass:\"sharing-entry sharing-entry__link\",class:{'sharing-entry--share': _vm.share}},[_c('NcAvatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"is-no-user\":true,\"icon-class\":_vm.isEmailShareType ? 'avatar-link-share icon-mail-white' : 'avatar-link-share icon-public-white'}}),_vm._v(\" \"),_c('div',{staticClass:\"sharing-entry__desc\"},[_c('span',{staticClass:\"sharing-entry__title\",attrs:{\"title\":_vm.title}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.title)+\"\\n\\t\\t\")]),_vm._v(\" \"),(_vm.subtitle)?_c('p',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.subtitle)+\"\\n\\t\\t\")]):_vm._e()]),_vm._v(\" \"),(_vm.share && !_vm.isEmailShareType && _vm.share.token)?_c('NcActions',{ref:\"copyButton\",staticClass:\"sharing-entry__copy\"},[_c('NcActionButton',{attrs:{\"aria-label\":_vm.t('files_sharing', 'Copy public link to clipboard')},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.copyLink.apply(null, arguments)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.copied && _vm.copySuccess)?_c('Check',{attrs:{\"size\":20}}):_c('ClipboardTextMultipleOutline',{attrs:{\"size\":20}})]},proxy:true}],null,false,2976921391)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.clipboardTooltip)+\"\\n\\t\\t\")])],1):_vm._e(),_vm._v(\" \"),(!_vm.pending && (_vm.pendingPassword || _vm.pendingExpirationDate))?_c('NcActions',{staticClass:\"sharing-entry__actions\",attrs:{\"menu-align\":\"right\",\"open\":_vm.open},on:{\"update:open\":function($event){_vm.open=$event},\"close\":_vm.onNewLinkShare}},[(_vm.errors.pending)?_c('NcActionText',{class:{ error: _vm.errors.pending},attrs:{\"icon\":\"icon-error\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.errors.pending)+\"\\n\\t\\t\")]):_c('NcActionText',{attrs:{\"icon\":\"icon-info\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Please enter the following required information before creating the share'))+\"\\n\\t\\t\")]),_vm._v(\" \"),(_vm.pendingPassword)?_c('NcActionText',{attrs:{\"icon\":\"icon-password\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password protection (enforced)'))+\"\\n\\t\\t\")]):(_vm.config.enableLinkPasswordByDefault)?_c('NcActionCheckbox',{staticClass:\"share-link-password-checkbox\",attrs:{\"checked\":_vm.isPasswordProtected,\"disabled\":_vm.config.enforcePasswordForPublicLink || _vm.saving},on:{\"update:checked\":function($event){_vm.isPasswordProtected=$event},\"uncheck\":_vm.onPasswordDisable}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password protection'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.pendingPassword || _vm.share.password)?_c('NcActionInput',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\tcontent: _vm.errors.password,\n\t\t\t\tshow: _vm.errors.password,\n\t\t\t\ttrigger: 'manual',\n\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t}),expression:\"{\\n\\t\\t\\t\\tcontent: errors.password,\\n\\t\\t\\t\\tshow: errors.password,\\n\\t\\t\\t\\ttrigger: 'manual',\\n\\t\\t\\t\\tdefaultContainer: '#app-sidebar'\\n\\t\\t\\t}\",modifiers:{\"auto\":true}}],staticClass:\"share-link-password\",attrs:{\"value\":_vm.share.password,\"disabled\":_vm.saving,\"required\":_vm.config.enableLinkPasswordByDefault || _vm.config.enforcePasswordForPublicLink,\"minlength\":_vm.isPasswordPolicyEnabled && _vm.config.passwordPolicy.minLength,\"icon\":\"\",\"autocomplete\":\"new-password\"},on:{\"update:value\":function($event){return _vm.$set(_vm.share, \"password\", $event)},\"submit\":_vm.onNewLinkShare}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a password'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.pendingExpirationDate)?_c('NcActionText',{attrs:{\"icon\":\"icon-calendar-dark\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Expiration date (enforced)'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.pendingExpirationDate)?_c('NcActionInput',{staticClass:\"share-link-expire-date\",attrs:{\"disabled\":_vm.saving,\"is-native-picker\":true,\"hide-label\":true,\"value\":new Date(_vm.share.expireDate),\"type\":\"date\",\"min\":_vm.dateTomorrow,\"max\":_vm.dateMaxEnforced},on:{\"input\":_vm.onExpirationChange}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a date'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"icon\":\"icon-checkmark\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onNewLinkShare.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Create share'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"icon\":\"icon-close\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onCancel.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Cancel'))+\"\\n\\t\\t\")])],1):(!_vm.loading)?_c('NcActions',{staticClass:\"sharing-entry__actions\",attrs:{\"menu-align\":\"right\",\"open\":_vm.open},on:{\"update:open\":function($event){_vm.open=$event},\"close\":_vm.onMenuClose}},[(_vm.share)?[(_vm.share.canEdit && _vm.canReshare)?[_c('NcActionInput',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\t\t\tcontent: _vm.errors.label,\n\t\t\t\t\t\tshow: _vm.errors.label,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '.app-sidebar'\n\t\t\t\t\t}),expression:\"{\\n\\t\\t\\t\\t\\t\\tcontent: errors.label,\\n\\t\\t\\t\\t\\t\\tshow: errors.label,\\n\\t\\t\\t\\t\\t\\ttrigger: 'manual',\\n\\t\\t\\t\\t\\t\\tdefaultContainer: '.app-sidebar'\\n\\t\\t\\t\\t\\t}\",modifiers:{\"auto\":true}}],ref:\"label\",class:{ error: _vm.errors.label },attrs:{\"disabled\":_vm.saving,\"aria-label\":_vm.t('files_sharing', 'Share label'),\"value\":_vm.share.newLabel !== undefined ? _vm.share.newLabel : _vm.share.label,\"icon\":\"icon-edit\",\"maxlength\":\"255\"},on:{\"update:value\":_vm.onLabelChange,\"submit\":_vm.onLabelSubmit}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Share label'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('SharePermissionsEditor',{attrs:{\"can-reshare\":_vm.canReshare,\"share\":_vm.share,\"file-info\":_vm.fileInfo},on:{\"update:share\":function($event){_vm.share=$event}}}),_vm._v(\" \"),_c('NcActionSeparator'),_vm._v(\" \"),_c('NcActionCheckbox',{attrs:{\"checked\":_vm.share.hideDownload,\"disabled\":_vm.saving || _vm.canChangeHideDownload},on:{\"update:checked\":function($event){return _vm.$set(_vm.share, \"hideDownload\", $event)},\"change\":function($event){return _vm.queueUpdate('hideDownload')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Hide download'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionCheckbox',{staticClass:\"share-link-password-checkbox\",attrs:{\"checked\":_vm.isPasswordProtected,\"disabled\":_vm.config.enforcePasswordForPublicLink || _vm.saving},on:{\"update:checked\":function($event){_vm.isPasswordProtected=$event},\"uncheck\":_vm.onPasswordDisable}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.config.enforcePasswordForPublicLink\n\t\t\t\t\t\t? _vm.t('files_sharing', 'Password protection (enforced)')\n\t\t\t\t\t\t: _vm.t('files_sharing', 'Password protect'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.isPasswordProtected)?_c('NcActionInput',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\t\t\tcontent: _vm.errors.password,\n\t\t\t\t\t\tshow: _vm.errors.password,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t}),expression:\"{\\n\\t\\t\\t\\t\\t\\tcontent: errors.password,\\n\\t\\t\\t\\t\\t\\tshow: errors.password,\\n\\t\\t\\t\\t\\t\\ttrigger: 'manual',\\n\\t\\t\\t\\t\\t\\tdefaultContainer: '#app-sidebar'\\n\\t\\t\\t\\t\\t}\",modifiers:{\"auto\":true}}],ref:\"password\",staticClass:\"share-link-password\",class:{ error: _vm.errors.password},attrs:{\"disabled\":_vm.saving,\"required\":_vm.config.enforcePasswordForPublicLink,\"value\":_vm.hasUnsavedPassword ? _vm.share.newPassword : '***************',\"icon\":\"icon-password\",\"autocomplete\":\"new-password\",\"type\":_vm.hasUnsavedPassword ? 'text': 'password'},on:{\"update:value\":_vm.onPasswordChange,\"submit\":_vm.onPasswordSubmit}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a password'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isEmailShareType && _vm.passwordExpirationTime)?_c('NcActionText',{attrs:{\"icon\":\"icon-info\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password expires {passwordExpirationTime}', {passwordExpirationTime: _vm.passwordExpirationTime}))+\"\\n\\t\\t\\t\\t\")]):(_vm.isEmailShareType && _vm.passwordExpirationTime !== null)?_c('NcActionText',{attrs:{\"icon\":\"icon-error\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Password expired'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isPasswordProtectedByTalkAvailable)?_c('NcActionCheckbox',{staticClass:\"share-link-password-talk-checkbox\",attrs:{\"checked\":_vm.isPasswordProtectedByTalk,\"disabled\":!_vm.canTogglePasswordProtectedByTalkAvailable || _vm.saving},on:{\"update:checked\":function($event){_vm.isPasswordProtectedByTalk=$event},\"change\":_vm.onPasswordProtectedByTalkChange}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Video verification'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcActionCheckbox',{staticClass:\"share-link-expire-date-checkbox\",attrs:{\"checked\":_vm.hasExpirationDate,\"disabled\":_vm.config.isDefaultExpireDateEnforced || _vm.saving},on:{\"update:checked\":function($event){_vm.hasExpirationDate=$event},\"uncheck\":_vm.onExpirationDisable}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.config.isDefaultExpireDateEnforced\n\t\t\t\t\t\t? _vm.t('files_sharing', 'Expiration date (enforced)')\n\t\t\t\t\t\t: _vm.t('files_sharing', 'Set expiration date'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.hasExpirationDate)?_c('NcActionInput',{ref:\"expireDate\",staticClass:\"share-link-expire-date\",class:{ error: _vm.errors.expireDate},attrs:{\"is-native-picker\":true,\"hide-label\":true,\"disabled\":_vm.saving,\"value\":new Date(_vm.share.expireDate),\"type\":\"date\",\"min\":_vm.dateTomorrow,\"max\":_vm.dateMaxEnforced},on:{\"input\":_vm.onExpirationChange}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a date'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcActionCheckbox',{attrs:{\"checked\":_vm.hasNote,\"disabled\":_vm.saving},on:{\"update:checked\":function($event){_vm.hasNote=$event},\"uncheck\":function($event){return _vm.queueUpdate('note')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Note to recipient'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.hasNote)?_c('NcActionTextEditable',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\t\t\tcontent: _vm.errors.note,\n\t\t\t\t\t\tshow: _vm.errors.note,\n\t\t\t\t\t\ttrigger: 'manual',\n\t\t\t\t\t\tdefaultContainer: '#app-sidebar'\n\t\t\t\t\t}),expression:\"{\\n\\t\\t\\t\\t\\t\\tcontent: errors.note,\\n\\t\\t\\t\\t\\t\\tshow: errors.note,\\n\\t\\t\\t\\t\\t\\ttrigger: 'manual',\\n\\t\\t\\t\\t\\t\\tdefaultContainer: '#app-sidebar'\\n\\t\\t\\t\\t\\t}\",modifiers:{\"auto\":true}}],ref:\"note\",class:{ error: _vm.errors.note},attrs:{\"disabled\":_vm.saving,\"placeholder\":_vm.t('files_sharing', 'Enter a note for the share recipient'),\"value\":_vm.share.newNote || _vm.share.note,\"icon\":\"icon-edit\"},on:{\"update:value\":_vm.onNoteChange,\"submit\":_vm.onNoteSubmit}}):_vm._e()]:_vm._e(),_vm._v(\" \"),_c('NcActionSeparator'),_vm._v(\" \"),_vm._l((_vm.externalLinkActions),function(action){return _c('ExternalShareAction',{key:action.id,attrs:{\"id\":action.id,\"action\":action,\"file-info\":_vm.fileInfo,\"share\":_vm.share}})}),_vm._v(\" \"),_vm._l((_vm.externalLegacyLinkActions),function(ref,index){\n\t\t\t\t\tvar icon = ref.icon;\n\t\t\t\t\tvar url = ref.url;\n\t\t\t\t\tvar name = ref.name;\nreturn _c('NcActionLink',{key:index,attrs:{\"href\":url(_vm.shareLink),\"icon\":icon,\"target\":\"_blank\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(name)+\"\\n\\t\\t\\t\")])}),_vm._v(\" \"),(_vm.share.canDelete)?_c('NcActionButton',{attrs:{\"icon\":\"icon-close\",\"disabled\":_vm.saving},on:{\"click\":function($event){$event.preventDefault();return _vm.onDelete.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Unshare'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(!_vm.isEmailShareType && _vm.canReshare)?_c('NcActionButton',{staticClass:\"new-share-link\",attrs:{\"icon\":\"icon-add\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onNewLinkShare.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Add another link'))+\"\\n\\t\\t\\t\")]):_vm._e()]:(_vm.canReshare)?_c('NcActionButton',{staticClass:\"new-share-link\",attrs:{\"icon\":_vm.loading ? 'icon-loading-small' : 'icon-add'},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onNewLinkShare.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Create a new share link'))+\"\\n\\t\\t\")]):_vm._e()],2):_c('div',{staticClass:\"icon-loading-small sharing-entry__loading\"})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingLinkList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingLinkList.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<ul v-if=\"canLinkShare\" class=\"sharing-link-list\">\n\t\t<!-- If no link shares, show the add link default entry -->\n\t\t<SharingEntryLink v-if=\"!hasLinkShares && canReshare\"\n\t\t\t:can-reshare=\"canReshare\"\n\t\t\t:file-info=\"fileInfo\"\n\t\t\t@add:share=\"addShare\" />\n\n\t\t<!-- Else we display the list -->\n\t\t<template v-if=\"hasShares\">\n\t\t\t<!-- using shares[index] to work with .sync -->\n\t\t\t<SharingEntryLink v-for=\"(share, index) in shares\"\n\t\t\t\t:key=\"share.id\"\n\t\t\t\t:can-reshare=\"canReshare\"\n\t\t\t\t:share.sync=\"shares[index]\"\n\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t@add:share=\"addShare(...arguments)\"\n\t\t\t\t@update:share=\"awaitForShare(...arguments)\"\n\t\t\t\t@remove:share=\"removeShare\" />\n\t\t</template>\n\t</ul>\n</template>\n\n<script>\n// eslint-disable-next-line no-unused-vars\nimport Share from '../models/Share'\nimport ShareTypes from '../mixins/ShareTypes'\nimport SharingEntryLink from '../components/SharingEntryLink'\n\nexport default {\n\tname: 'SharingLinkList',\n\n\tcomponents: {\n\t\tSharingEntryLink,\n\t},\n\n\tmixins: [ShareTypes],\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\tshares: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\trequired: true,\n\t\t},\n\t\tcanReshare: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tcanLinkShare: OC.getCapabilities().files_sharing.public.enabled,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Do we have link shares?\n\t\t * Using this to still show the `new link share`\n\t\t * button regardless of mail shares\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\thasLinkShares() {\n\t\t\treturn this.shares.filter(share => share.type === this.SHARE_TYPES.SHARE_TYPE_LINK).length > 0\n\t\t},\n\n\t\t/**\n\t\t * Do we have any link or email shares?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasShares() {\n\t\t\treturn this.shares.length > 0\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Add a new share into the link shares list\n\t\t * and return the newly created share component\n\t\t *\n\t\t * @param {Share} share the share to add to the array\n\t\t * @param {Function} resolve a function to run after the share is added and its component initialized\n\t\t */\n\t\taddShare(share, resolve) {\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.shares.unshift(share)\n\t\t\tthis.awaitForShare(share, resolve)\n\t\t},\n\n\t\t/**\n\t\t * Await for next tick and render after the list updated\n\t\t * Then resolve with the matched vue component of the\n\t\t * provided share object\n\t\t *\n\t\t * @param {Share} share newly created share\n\t\t * @param {Function} resolve a function to execute after\n\t\t */\n\t\tawaitForShare(share, resolve) {\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tconst newShare = this.$children.find(component => component.share === share)\n\t\t\t\tif (newShare) {\n\t\t\t\t\tresolve(newShare)\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Remove a share from the shares list\n\t\t *\n\t\t * @param {Share} share the share to remove\n\t\t */\n\t\tremoveShare(share) {\n\t\t\tconst index = this.shares.findIndex(item => item === share)\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.shares.splice(index, 1)\n\t\t},\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./SharingLinkList.vue?vue&type=template&id=8be1a6a2&\"\nimport script from \"./SharingLinkList.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingLinkList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.canLinkShare)?_c('ul',{staticClass:\"sharing-link-list\"},[(!_vm.hasLinkShares && _vm.canReshare)?_c('SharingEntryLink',{attrs:{\"can-reshare\":_vm.canReshare,\"file-info\":_vm.fileInfo},on:{\"add:share\":_vm.addShare}}):_vm._e(),_vm._v(\" \"),(_vm.hasShares)?_vm._l((_vm.shares),function(share,index){return _c('SharingEntryLink',{key:share.id,attrs:{\"can-reshare\":_vm.canReshare,\"share\":_vm.shares[index],\"file-info\":_vm.fileInfo},on:{\"update:share\":[function($event){return _vm.$set(_vm.shares, index, $event)},function($event){return _vm.awaitForShare.apply(void 0, arguments)}],\"add:share\":function($event){return _vm.addShare.apply(void 0, arguments)},\"remove:share\":_vm.removeShare}})}):_vm._e()],2):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<li class=\"sharing-entry\">\n\t\t<NcAvatar class=\"sharing-entry__avatar\"\n\t\t\t:is-no-user=\"share.type !== SHARE_TYPES.SHARE_TYPE_USER\"\n\t\t\t:user=\"share.shareWith\"\n\t\t\t:display-name=\"share.shareWithDisplayName\"\n\t\t\t:tooltip-message=\"share.type === SHARE_TYPES.SHARE_TYPE_USER ? share.shareWith : ''\"\n\t\t\t:menu-position=\"'left'\"\n\t\t\t:url=\"share.shareWithAvatar\" />\n\t\t<component :is=\"share.shareWithLink ? 'a' : 'div'\"\n\t\t\tv-tooltip.auto=\"tooltip\"\n\t\t\t:href=\"share.shareWithLink\"\n\t\t\tclass=\"sharing-entry__desc\">\n\t\t\t<span>{{ title }}<span v-if=\"!isUnique\" class=\"sharing-entry__desc-unique\"> ({{ share.shareWithDisplayNameUnique }})</span></span>\n\t\t\t<p v-if=\"hasStatus\">\n\t\t\t\t<span>{{ share.status.icon || '' }}</span>\n\t\t\t\t<span>{{ share.status.message || '' }}</span>\n\t\t\t</p>\n\t\t</component>\n\t\t<NcActions menu-align=\"right\"\n\t\t\tclass=\"sharing-entry__actions\"\n\t\t\t@close=\"onMenuClose\">\n\t\t\t<template v-if=\"share.canEdit\">\n\t\t\t\t<!-- edit permission -->\n\t\t\t\t<NcActionCheckbox ref=\"canEdit\"\n\t\t\t\t\t:checked.sync=\"canEdit\"\n\t\t\t\t\t:value=\"permissionsEdit\"\n\t\t\t\t\t:disabled=\"saving || !canSetEdit\">\n\t\t\t\t\t{{ t('files_sharing', 'Allow editing') }}\n\t\t\t\t</NcActionCheckbox>\n\n\t\t\t\t<!-- create permission -->\n\t\t\t\t<NcActionCheckbox v-if=\"isFolder\"\n\t\t\t\t\tref=\"canCreate\"\n\t\t\t\t\t:checked.sync=\"canCreate\"\n\t\t\t\t\t:value=\"permissionsCreate\"\n\t\t\t\t\t:disabled=\"saving || !canSetCreate\">\n\t\t\t\t\t{{ t('files_sharing', 'Allow creating') }}\n\t\t\t\t</NcActionCheckbox>\n\n\t\t\t\t<!-- delete permission -->\n\t\t\t\t<NcActionCheckbox v-if=\"isFolder\"\n\t\t\t\t\tref=\"canDelete\"\n\t\t\t\t\t:checked.sync=\"canDelete\"\n\t\t\t\t\t:value=\"permissionsDelete\"\n\t\t\t\t\t:disabled=\"saving || !canSetDelete\">\n\t\t\t\t\t{{ t('files_sharing', 'Allow deleting') }}\n\t\t\t\t</NcActionCheckbox>\n\n\t\t\t\t<!-- reshare permission -->\n\t\t\t\t<NcActionCheckbox v-if=\"config.isResharingAllowed\"\n\t\t\t\t\tref=\"canReshare\"\n\t\t\t\t\t:checked.sync=\"canReshare\"\n\t\t\t\t\t:value=\"permissionsShare\"\n\t\t\t\t\t:disabled=\"saving || !canSetReshare\">\n\t\t\t\t\t{{ t('files_sharing', 'Allow resharing') }}\n\t\t\t\t</NcActionCheckbox>\n\n\t\t\t\t<NcActionCheckbox v-if=\"isSetDownloadButtonVisible\"\n\t\t\t\t\tref=\"canDownload\"\n\t\t\t\t\t:checked.sync=\"canDownload\"\n\t\t\t\t\t:disabled=\"saving || !canSetDownload\">\n\t\t\t\t\t{{ allowDownloadText }}\n\t\t\t\t</NcActionCheckbox>\n\n\t\t\t\t<!-- expiration date -->\n\t\t\t\t<NcActionCheckbox :checked.sync=\"hasExpirationDate\"\n\t\t\t\t\t:disabled=\"config.isDefaultInternalExpireDateEnforced || saving\"\n\t\t\t\t\t@uncheck=\"onExpirationDisable\">\n\t\t\t\t\t{{ config.isDefaultInternalExpireDateEnforced\n\t\t\t\t\t\t? t('files_sharing', 'Expiration date enforced')\n\t\t\t\t\t\t: t('files_sharing', 'Set expiration date') }}\n\t\t\t\t</NcActionCheckbox>\n\t\t\t\t<NcActionInput v-if=\"hasExpirationDate\"\n\t\t\t\t\tref=\"expireDate\"\n\t\t\t\t\t:is-native-picker=\"true\"\n\t\t\t\t\t:hide-label=\"true\"\n\t\t\t\t\t:class=\"{ error: errors.expireDate}\"\n\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t:value=\"new Date(share.expireDate)\"\n\t\t\t\t\ttype=\"date\"\n\t\t\t\t\t:min=\"dateTomorrow\"\n\t\t\t\t\t:max=\"dateMaxEnforced\"\n\t\t\t\t\t@input=\"onExpirationChange\">\n\t\t\t\t\t{{ t('files_sharing', 'Enter a date') }}\n\t\t\t\t</NcActionInput>\n\n\t\t\t\t<!-- note -->\n\t\t\t\t<template v-if=\"canHaveNote\">\n\t\t\t\t\t<NcActionCheckbox :checked.sync=\"hasNote\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t@uncheck=\"queueUpdate('note')\">\n\t\t\t\t\t\t{{ t('files_sharing', 'Note to recipient') }}\n\t\t\t\t\t</NcActionCheckbox>\n\t\t\t\t\t<NcActionTextEditable v-if=\"hasNote\"\n\t\t\t\t\t\tref=\"note\"\n\t\t\t\t\t\tv-tooltip.auto=\"{\n\t\t\t\t\t\t\tcontent: errors.note,\n\t\t\t\t\t\t\tshow: errors.note,\n\t\t\t\t\t\t\ttrigger: 'manual'\n\t\t\t\t\t\t}\"\n\t\t\t\t\t\t:class=\"{ error: errors.note}\"\n\t\t\t\t\t\t:disabled=\"saving\"\n\t\t\t\t\t\t:value=\"share.newNote || share.note\"\n\t\t\t\t\t\ticon=\"icon-edit\"\n\t\t\t\t\t\t@update:value=\"onNoteChange\"\n\t\t\t\t\t\t@submit=\"onNoteSubmit\" />\n\t\t\t\t</template>\n\t\t\t</template>\n\n\t\t\t<NcActionButton v-if=\"share.canDelete\"\n\t\t\t\ticon=\"icon-close\"\n\t\t\t\t:disabled=\"saving\"\n\t\t\t\t@click.prevent=\"onDelete\">\n\t\t\t\t{{ t('files_sharing', 'Unshare') }}\n\t\t\t</NcActionButton>\n\t\t</NcActions>\n\t</li>\n</template>\n\n<script>\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar'\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions'\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton'\nimport NcActionCheckbox from '@nextcloud/vue/dist/Components/NcActionCheckbox'\nimport NcActionInput from '@nextcloud/vue/dist/Components/NcActionInput'\nimport NcActionTextEditable from '@nextcloud/vue/dist/Components/NcActionTextEditable'\nimport Tooltip from '@nextcloud/vue/dist/Directives/Tooltip'\n\nimport SharesMixin from '../mixins/SharesMixin.js'\n\nexport default {\n\tname: 'SharingEntry',\n\n\tcomponents: {\n\t\tNcActions,\n\t\tNcActionButton,\n\t\tNcActionCheckbox,\n\t\tNcActionInput,\n\t\tNcActionTextEditable,\n\t\tNcAvatar,\n\t},\n\n\tdirectives: {\n\t\tTooltip,\n\t},\n\n\tmixins: [SharesMixin],\n\n\tdata() {\n\t\treturn {\n\t\t\tpermissionsEdit: OC.PERMISSION_UPDATE,\n\t\t\tpermissionsCreate: OC.PERMISSION_CREATE,\n\t\t\tpermissionsDelete: OC.PERMISSION_DELETE,\n\t\t\tpermissionsRead: OC.PERMISSION_READ,\n\t\t\tpermissionsShare: OC.PERMISSION_SHARE,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\ttitle() {\n\t\t\tlet title = this.share.shareWithDisplayName\n\t\t\tif (this.share.type === this.SHARE_TYPES.SHARE_TYPE_GROUP) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'group')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_ROOM) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'conversation')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'remote')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'remote group')})`\n\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_GUEST) {\n\t\t\t\ttitle += ` (${t('files_sharing', 'guest')})`\n\t\t\t}\n\t\t\treturn title\n\t\t},\n\n\t\ttooltip() {\n\t\t\tif (this.share.owner !== this.share.uidFileOwner) {\n\t\t\t\tconst data = {\n\t\t\t\t\t// todo: strong or italic?\n\t\t\t\t\t// but the t function escape any html from the data :/\n\t\t\t\t\tuser: this.share.shareWithDisplayName,\n\t\t\t\t\towner: this.share.ownerDisplayName,\n\t\t\t\t}\n\n\t\t\t\tif (this.share.type === this.SHARE_TYPES.SHARE_TYPE_GROUP) {\n\t\t\t\t\treturn t('files_sharing', 'Shared with the group {user} by {owner}', data)\n\t\t\t\t} else if (this.share.type === this.SHARE_TYPES.SHARE_TYPE_ROOM) {\n\t\t\t\t\treturn t('files_sharing', 'Shared with the conversation {user} by {owner}', data)\n\t\t\t\t}\n\n\t\t\t\treturn t('files_sharing', 'Shared with {user} by {owner}', data)\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\tcanHaveNote() {\n\t\t\treturn !this.isRemote\n\t\t},\n\n\t\tisRemote() {\n\t\t\treturn this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE\n\t\t\t\t|| this.share.type === this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP\n\t\t},\n\n\t\t/**\n\t\t * Can the sharer set whether the sharee can edit the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetEdit() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.sharePermissions & OC.PERMISSION_UPDATE) || this.canEdit\n\t\t},\n\n\t\t/**\n\t\t * Can the sharer set whether the sharee can create the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetCreate() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.sharePermissions & OC.PERMISSION_CREATE) || this.canCreate\n\t\t},\n\n\t\t/**\n\t\t * Can the sharer set whether the sharee can delete the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetDelete() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.sharePermissions & OC.PERMISSION_DELETE) || this.canDelete\n\t\t},\n\n\t\t/**\n\t\t * Can the sharer set whether the sharee can reshare the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetReshare() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.sharePermissions & OC.PERMISSION_SHARE) || this.canReshare\n\t\t},\n\n\t\t/**\n\t\t * Can the sharer set whether the sharee can download the file ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanSetDownload() {\n\t\t\t// If the owner revoked the permission after the resharer granted it\n\t\t\t// the share still has the permission, and the resharer is still\n\t\t\t// allowed to revoke it too (but not to grant it again).\n\t\t\treturn (this.fileInfo.canDownload() || this.canDownload)\n\t\t},\n\n\t\t/**\n\t\t * Can the sharee edit the shared file ?\n\t\t */\n\t\tcanEdit: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasUpdatePermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updatePermissions({ isEditChecked: checked })\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Can the sharee create the shared file ?\n\t\t */\n\t\tcanCreate: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasCreatePermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updatePermissions({ isCreateChecked: checked })\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Can the sharee delete the shared file ?\n\t\t */\n\t\tcanDelete: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasDeletePermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updatePermissions({ isDeleteChecked: checked })\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Can the sharee reshare the file ?\n\t\t */\n\t\tcanReshare: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasSharePermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updatePermissions({ isReshareChecked: checked })\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Can the sharee download files or only view them ?\n\t\t */\n\t\tcanDownload: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasDownloadPermission\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tthis.updatePermissions({ isDownloadChecked: checked })\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Is this share readable\n\t\t * Needed for some federated shares that might have been added from file drop links\n\t\t */\n\t\thasRead: {\n\t\t\tget() {\n\t\t\t\treturn this.share.hasReadPermission\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Is the current share a folder ?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisFolder() {\n\t\t\treturn this.fileInfo.type === 'dir'\n\t\t},\n\n\t\t/**\n\t\t * Does the current share have an expiration date\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasExpirationDate: {\n\t\t\tget() {\n\t\t\t\treturn this.config.isDefaultInternalExpireDateEnforced || !!this.share.expireDate\n\t\t\t},\n\t\t\tset(enabled) {\n\t\t\t\tconst defaultExpirationDate = this.config.defaultInternalExpirationDate\n\t\t\t\t\t|| new Date(new Date().setDate(new Date().getDate() + 1))\n\t\t\t\tthis.share.expireDate = enabled\n\t\t\t\t\t? this.formatDateToString(defaultExpirationDate)\n\t\t\t\t\t: ''\n\t\t\t\tconsole.debug('Expiration date status', enabled, this.share.expireDate)\n\t\t\t},\n\t\t},\n\n\t\tdateMaxEnforced() {\n\t\t\tif (!this.isRemote && this.config.isDefaultInternalExpireDateEnforced) {\n\t\t\t\treturn new Date(new Date().setDate(new Date().getDate() + 1 + this.config.defaultInternalExpireDate))\n\t\t\t} else if (this.config.isDefaultRemoteExpireDateEnforced) {\n\t\t\t\treturn new Date(new Date().setDate(new Date().getDate() + 1 + this.config.defaultRemoteExpireDate))\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\n\t\t/**\n\t\t * @return {boolean}\n\t\t */\n\t\thasStatus() {\n\t\t\tif (this.share.type !== this.SHARE_TYPES.SHARE_TYPE_USER) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\treturn (typeof this.share.status === 'object' && !Array.isArray(this.share.status))\n\t\t},\n\n\t\t/**\n\t\t * @return {string}\n\t\t */\n\t\tallowDownloadText() {\n\t\t\treturn t('files_sharing', 'Allow download')\n\t\t},\n\n\t\t/**\n\t\t * @return {boolean}\n\t\t */\n\t\tisSetDownloadButtonVisible() {\n\t\t\tconst allowedMimetypes = [\n\t\t\t\t// Office documents\n\t\t\t\t'application/msword',\n\t\t\t\t'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n\t\t\t\t'application/vnd.ms-powerpoint',\n\t\t\t\t'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n\t\t\t\t'application/vnd.ms-excel',\n\t\t\t\t'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n\t\t\t\t'application/vnd.oasis.opendocument.text',\n\t\t\t\t'application/vnd.oasis.opendocument.spreadsheet',\n\t\t\t\t'application/vnd.oasis.opendocument.presentation',\n\t\t\t]\n\n\t\t\treturn this.isFolder || allowedMimetypes.includes(this.fileInfo.mimetype)\n\t\t},\n\t},\n\n\tmethods: {\n\t\tupdatePermissions({\n\t\t\tisEditChecked = this.canEdit,\n\t\t\tisCreateChecked = this.canCreate,\n\t\t\tisDeleteChecked = this.canDelete,\n\t\t\tisReshareChecked = this.canReshare,\n\t\t\tisDownloadChecked = this.canDownload,\n\t\t} = {}) {\n\t\t\t// calc permissions if checked\n\t\t\tconst permissions = 0\n\t\t\t\t| (this.hasRead ? this.permissionsRead : 0)\n\t\t\t\t| (isCreateChecked ? this.permissionsCreate : 0)\n\t\t\t\t| (isDeleteChecked ? this.permissionsDelete : 0)\n\t\t\t\t| (isEditChecked ? this.permissionsEdit : 0)\n\t\t\t\t| (isReshareChecked ? this.permissionsShare : 0)\n\n\t\t\tthis.share.permissions = permissions\n\t\t\tif (this.share.hasDownloadPermission !== isDownloadChecked) {\n\t\t\t\tthis.share.hasDownloadPermission = isDownloadChecked\n\t\t\t}\n\t\t\tthis.queueUpdate('permissions', 'attributes')\n\t\t},\n\n\t\t/**\n\t\t * Save potential changed data on menu close\n\t\t */\n\t\tonMenuClose() {\n\t\t\tthis.onNoteSubmit()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.sharing-entry {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 44px;\n\t&__desc {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tpadding: 8px;\n\t\tline-height: 1.2em;\n\t\tp {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t\t&-unique {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\t&__actions {\n\t\tmargin-left: auto;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntry.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntry.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntry.vue?vue&type=style&index=0&id=708928fe&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingEntry.vue?vue&type=style&index=0&id=708928fe&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingEntry.vue?vue&type=template&id=708928fe&scoped=true&\"\nimport script from \"./SharingEntry.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingEntry.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingEntry.vue?vue&type=style&index=0&id=708928fe&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"708928fe\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{staticClass:\"sharing-entry\"},[_c('NcAvatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"is-no-user\":_vm.share.type !== _vm.SHARE_TYPES.SHARE_TYPE_USER,\"user\":_vm.share.shareWith,\"display-name\":_vm.share.shareWithDisplayName,\"tooltip-message\":_vm.share.type === _vm.SHARE_TYPES.SHARE_TYPE_USER ? _vm.share.shareWith : '',\"menu-position\":'left',\"url\":_vm.share.shareWithAvatar}}),_vm._v(\" \"),_c(_vm.share.shareWithLink ? 'a' : 'div',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.tooltip),expression:\"tooltip\",modifiers:{\"auto\":true}}],tag:\"component\",staticClass:\"sharing-entry__desc\",attrs:{\"href\":_vm.share.shareWithLink}},[_c('span',[_vm._v(_vm._s(_vm.title)),(!_vm.isUnique)?_c('span',{staticClass:\"sharing-entry__desc-unique\"},[_vm._v(\" (\"+_vm._s(_vm.share.shareWithDisplayNameUnique)+\")\")]):_vm._e()]),_vm._v(\" \"),(_vm.hasStatus)?_c('p',[_c('span',[_vm._v(_vm._s(_vm.share.status.icon || ''))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.share.status.message || ''))])]):_vm._e()]),_vm._v(\" \"),_c('NcActions',{staticClass:\"sharing-entry__actions\",attrs:{\"menu-align\":\"right\"},on:{\"close\":_vm.onMenuClose}},[(_vm.share.canEdit)?[_c('NcActionCheckbox',{ref:\"canEdit\",attrs:{\"checked\":_vm.canEdit,\"value\":_vm.permissionsEdit,\"disabled\":_vm.saving || !_vm.canSetEdit},on:{\"update:checked\":function($event){_vm.canEdit=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow editing'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),(_vm.isFolder)?_c('NcActionCheckbox',{ref:\"canCreate\",attrs:{\"checked\":_vm.canCreate,\"value\":_vm.permissionsCreate,\"disabled\":_vm.saving || !_vm.canSetCreate},on:{\"update:checked\":function($event){_vm.canCreate=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow creating'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isFolder)?_c('NcActionCheckbox',{ref:\"canDelete\",attrs:{\"checked\":_vm.canDelete,\"value\":_vm.permissionsDelete,\"disabled\":_vm.saving || !_vm.canSetDelete},on:{\"update:checked\":function($event){_vm.canDelete=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow deleting'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.config.isResharingAllowed)?_c('NcActionCheckbox',{ref:\"canReshare\",attrs:{\"checked\":_vm.canReshare,\"value\":_vm.permissionsShare,\"disabled\":_vm.saving || !_vm.canSetReshare},on:{\"update:checked\":function($event){_vm.canReshare=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Allow resharing'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.isSetDownloadButtonVisible)?_c('NcActionCheckbox',{ref:\"canDownload\",attrs:{\"checked\":_vm.canDownload,\"disabled\":_vm.saving || !_vm.canSetDownload},on:{\"update:checked\":function($event){_vm.canDownload=$event}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.allowDownloadText)+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcActionCheckbox',{attrs:{\"checked\":_vm.hasExpirationDate,\"disabled\":_vm.config.isDefaultInternalExpireDateEnforced || _vm.saving},on:{\"update:checked\":function($event){_vm.hasExpirationDate=$event},\"uncheck\":_vm.onExpirationDisable}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.config.isDefaultInternalExpireDateEnforced\n\t\t\t\t\t? _vm.t('files_sharing', 'Expiration date enforced')\n\t\t\t\t\t: _vm.t('files_sharing', 'Set expiration date'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),(_vm.hasExpirationDate)?_c('NcActionInput',{ref:\"expireDate\",class:{ error: _vm.errors.expireDate},attrs:{\"is-native-picker\":true,\"hide-label\":true,\"disabled\":_vm.saving,\"value\":new Date(_vm.share.expireDate),\"type\":\"date\",\"min\":_vm.dateTomorrow,\"max\":_vm.dateMaxEnforced},on:{\"input\":_vm.onExpirationChange}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Enter a date'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.canHaveNote)?[_c('NcActionCheckbox',{attrs:{\"checked\":_vm.hasNote,\"disabled\":_vm.saving},on:{\"update:checked\":function($event){_vm.hasNote=$event},\"uncheck\":function($event){return _vm.queueUpdate('note')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Note to recipient'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(_vm.hasNote)?_c('NcActionTextEditable',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:({\n\t\t\t\t\t\tcontent: _vm.errors.note,\n\t\t\t\t\t\tshow: _vm.errors.note,\n\t\t\t\t\t\ttrigger: 'manual'\n\t\t\t\t\t}),expression:\"{\\n\\t\\t\\t\\t\\t\\tcontent: errors.note,\\n\\t\\t\\t\\t\\t\\tshow: errors.note,\\n\\t\\t\\t\\t\\t\\ttrigger: 'manual'\\n\\t\\t\\t\\t\\t}\",modifiers:{\"auto\":true}}],ref:\"note\",class:{ error: _vm.errors.note},attrs:{\"disabled\":_vm.saving,\"value\":_vm.share.newNote || _vm.share.note,\"icon\":\"icon-edit\"},on:{\"update:value\":_vm.onNoteChange,\"submit\":_vm.onNoteSubmit}}):_vm._e()]:_vm._e()]:_vm._e(),_vm._v(\" \"),(_vm.share.canDelete)?_c('NcActionButton',{attrs:{\"icon\":\"icon-close\",\"disabled\":_vm.saving},on:{\"click\":function($event){$event.preventDefault();return _vm.onDelete.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files_sharing', 'Unshare'))+\"\\n\\t\\t\")]):_vm._e()],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<ul class=\"sharing-sharee-list\">\n\t\t<SharingEntry v-for=\"share in shares\"\n\t\t\t:key=\"share.id\"\n\t\t\t:file-info=\"fileInfo\"\n\t\t\t:share=\"share\"\n\t\t\t:is-unique=\"isUnique(share)\"\n\t\t\t@remove:share=\"removeShare\" />\n\t</ul>\n</template>\n\n<script>\n// eslint-disable-next-line no-unused-vars\nimport Share from '../models/Share'\nimport SharingEntry from '../components/SharingEntry'\nimport ShareTypes from '../mixins/ShareTypes'\n\nexport default {\n\tname: 'SharingList',\n\n\tcomponents: {\n\t\tSharingEntry,\n\t},\n\n\tmixins: [ShareTypes],\n\n\tprops: {\n\t\tfileInfo: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {},\n\t\t\trequired: true,\n\t\t},\n\t\tshares: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\thasShares() {\n\t\t\treturn this.shares.length === 0\n\t\t},\n\t\tisUnique() {\n\t\t\treturn (share) => {\n\t\t\t\treturn [...this.shares].filter((item) => {\n\t\t\t\t\treturn share.type === this.SHARE_TYPES.SHARE_TYPE_USER && share.shareWithDisplayName === item.shareWithDisplayName\n\t\t\t\t}).length <= 1\n\t\t\t}\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Remove a share from the shares list\n\t\t *\n\t\t * @param {Share} share the share to remove\n\t\t */\n\t\tremoveShare(share) {\n\t\t\tconst index = this.shares.findIndex(item => item === share)\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.shares.splice(index, 1)\n\t\t},\n\t},\n}\n</script>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingList.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SharingList.vue?vue&type=template&id=0b29d4c0&\"\nimport script from \"./SharingList.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',{staticClass:\"sharing-sharee-list\"},_vm._l((_vm.shares),function(share){return _c('SharingEntry',{key:share.id,attrs:{\"file-info\":_vm.fileInfo,\"share\":share,\"is-unique\":_vm.isUnique(share)},on:{\"remove:share\":_vm.removeShare}})}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div :class=\"{ 'icon-loading': loading }\">\n\t\t<!-- error message -->\n\t\t<div v-if=\"error\" class=\"emptycontent\" :class=\"{ emptyContentWithSections: sections.length > 0 }\">\n\t\t\t<div class=\"icon icon-error\" />\n\t\t\t<h2>{{ error }}</h2>\n\t\t</div>\n\n\t\t<!-- shares content -->\n\t\t<div v-else class=\"sharingTab__content\">\n\t\t\t<!-- shared with me information -->\n\t\t\t<SharingEntrySimple v-if=\"isSharedWithMe\" v-bind=\"sharedWithMe\" class=\"sharing-entry__reshare\">\n\t\t\t\t<template #avatar>\n\t\t\t\t\t<NcAvatar :user=\"sharedWithMe.user\"\n\t\t\t\t\t\t:display-name=\"sharedWithMe.displayName\"\n\t\t\t\t\t\tclass=\"sharing-entry__avatar\"\n\t\t\t\t\t\ttooltip-message=\"\" />\n\t\t\t\t</template>\n\t\t\t</SharingEntrySimple>\n\n\t\t\t<!-- add new share input -->\n\t\t\t<SharingInput v-if=\"!loading\"\n\t\t\t\t:can-reshare=\"canReshare\"\n\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t:link-shares=\"linkShares\"\n\t\t\t\t:reshare=\"reshare\"\n\t\t\t\t:shares=\"shares\"\n\t\t\t\t@add:share=\"addShare\" />\n\n\t\t\t<!-- link shares list -->\n\t\t\t<SharingLinkList v-if=\"!loading\"\n\t\t\t\tref=\"linkShareList\"\n\t\t\t\t:can-reshare=\"canReshare\"\n\t\t\t\t:file-info=\"fileInfo\"\n\t\t\t\t:shares=\"linkShares\" />\n\n\t\t\t<!-- other shares list -->\n\t\t\t<SharingList v-if=\"!loading\"\n\t\t\t\tref=\"shareList\"\n\t\t\t\t:shares=\"shares\"\n\t\t\t\t:file-info=\"fileInfo\" />\n\n\t\t\t<!-- inherited shares -->\n\t\t\t<SharingInherited v-if=\"canReshare && !loading\" :file-info=\"fileInfo\" />\n\n\t\t\t<!-- internal link copy -->\n\t\t\t<SharingEntryInternal :file-info=\"fileInfo\" />\n\n\t\t\t<!-- projects -->\n\t\t\t<CollectionList v-if=\"projectsEnabled && fileInfo\"\n\t\t\t\t:id=\"`${fileInfo.id}`\"\n\t\t\t\ttype=\"file\"\n\t\t\t\t:name=\"fileInfo.name\" />\n\t\t</div>\n\n\t\t<!-- additional entries, use it with cautious -->\n\t\t<div v-for=\"(section, index) in sections\"\n\t\t\t:ref=\"'section-' + index\"\n\t\t\t:key=\"index\"\n\t\t\tclass=\"sharingTab__additionalContent\">\n\t\t\t<component :is=\"section($refs['section-'+index], fileInfo)\" :file-info=\"fileInfo\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { CollectionList } from 'nextcloud-vue-collections'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar'\nimport axios from '@nextcloud/axios'\nimport { loadState } from '@nextcloud/initial-state'\n\nimport Config from '../services/ConfigService'\nimport { shareWithTitle } from '../utils/SharedWithMe'\nimport Share from '../models/Share'\nimport ShareTypes from '../mixins/ShareTypes'\nimport SharingEntryInternal from '../components/SharingEntryInternal'\nimport SharingEntrySimple from '../components/SharingEntrySimple'\nimport SharingInput from '../components/SharingInput'\n\nimport SharingInherited from './SharingInherited'\nimport SharingLinkList from './SharingLinkList'\nimport SharingList from './SharingList'\n\nexport default {\n\tname: 'SharingTab',\n\n\tcomponents: {\n\t\tNcAvatar,\n\t\tCollectionList,\n\t\tSharingEntryInternal,\n\t\tSharingEntrySimple,\n\t\tSharingInherited,\n\t\tSharingInput,\n\t\tSharingLinkList,\n\t\tSharingList,\n\t},\n\n\tmixins: [ShareTypes],\n\n\tdata() {\n\t\treturn {\n\t\t\tconfig: new Config(),\n\n\t\t\terror: '',\n\t\t\texpirationInterval: null,\n\t\t\tloading: true,\n\n\t\t\tfileInfo: null,\n\n\t\t\t// reshare Share object\n\t\t\treshare: null,\n\t\t\tsharedWithMe: {},\n\t\t\tshares: [],\n\t\t\tlinkShares: [],\n\n\t\t\tsections: OCA.Sharing.ShareTabSections.getSections(),\n\t\t\tprojectsEnabled: loadState('core', 'projects_enabled', false),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Is this share shared with me?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisSharedWithMe() {\n\t\t\treturn Object.keys(this.sharedWithMe).length > 0\n\t\t},\n\n\t\tcanReshare() {\n\t\t\treturn !!(this.fileInfo.permissions & OC.PERMISSION_SHARE)\n\t\t\t\t|| !!(this.reshare && this.reshare.hasSharePermission && this.config.isResharingAllowed)\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Update current fileInfo and fetch new data\n\t\t *\n\t\t * @param {object} fileInfo the current file FileInfo\n\t\t */\n\t\tasync update(fileInfo) {\n\t\t\tthis.fileInfo = fileInfo\n\t\t\tthis.resetState()\n\t\t\tthis.getShares()\n\t\t},\n\n\t\t/**\n\t\t * Get the existing shares infos\n\t\t */\n\t\tasync getShares() {\n\t\t\ttry {\n\t\t\t\tthis.loading = true\n\n\t\t\t\t// init params\n\t\t\t\tconst shareUrl = generateOcsUrl('apps/files_sharing/api/v1/shares')\n\t\t\t\tconst format = 'json'\n\t\t\t\t// TODO: replace with proper getFUllpath implementation of our own FileInfo model\n\t\t\t\tconst path = (this.fileInfo.path + '/' + this.fileInfo.name).replace('//', '/')\n\n\t\t\t\t// fetch shares\n\t\t\t\tconst fetchShares = axios.get(shareUrl, {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat,\n\t\t\t\t\t\tpath,\n\t\t\t\t\t\treshares: true,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tconst fetchSharedWithMe = axios.get(shareUrl, {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tformat,\n\t\t\t\t\t\tpath,\n\t\t\t\t\t\tshared_with_me: true,\n\t\t\t\t\t},\n\t\t\t\t})\n\n\t\t\t\t// wait for data\n\t\t\t\tconst [shares, sharedWithMe] = await Promise.all([fetchShares, fetchSharedWithMe])\n\t\t\t\tthis.loading = false\n\n\t\t\t\t// process results\n\t\t\t\tthis.processSharedWithMe(sharedWithMe)\n\t\t\t\tthis.processShares(shares)\n\t\t\t} catch (error) {\n\t\t\t\tif (error.response.data?.ocs?.meta?.message) {\n\t\t\t\t\tthis.error = error.response.data.ocs.meta.message\n\t\t\t\t} else {\n\t\t\t\t\tthis.error = t('files_sharing', 'Unable to load the shares list')\n\t\t\t\t}\n\t\t\t\tthis.loading = false\n\t\t\t\tconsole.error('Error loading the shares list', error)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Reset the current view to its default state\n\t\t */\n\t\tresetState() {\n\t\t\tclearInterval(this.expirationInterval)\n\t\t\tthis.loading = true\n\t\t\tthis.error = ''\n\t\t\tthis.sharedWithMe = {}\n\t\t\tthis.shares = []\n\t\t\tthis.linkShares = []\n\t\t},\n\n\t\t/**\n\t\t * Update sharedWithMe.subtitle with the appropriate\n\t\t * expiration time left\n\t\t *\n\t\t * @param {Share} share the sharedWith Share object\n\t\t */\n\t\tupdateExpirationSubtitle(share) {\n\t\t\tconst expiration = moment(share.expireDate).unix()\n\t\t\tthis.$set(this.sharedWithMe, 'subtitle', t('files_sharing', 'Expires {relativetime}', {\n\t\t\t\trelativetime: OC.Util.relativeModifiedDate(expiration * 1000),\n\t\t\t}))\n\n\t\t\t// share have expired\n\t\t\tif (moment().unix() > expiration) {\n\t\t\t\tclearInterval(this.expirationInterval)\n\t\t\t\t// TODO: clear ui if share is expired\n\t\t\t\tthis.$set(this.sharedWithMe, 'subtitle', t('files_sharing', 'this share just expired.'))\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Process the current shares data\n\t\t * and init shares[]\n\t\t *\n\t\t * @param {object} share the share ocs api request data\n\t\t * @param {object} share.data the request data\n\t\t */\n\t\tprocessShares({ data }) {\n\t\t\tif (data.ocs && data.ocs.data && data.ocs.data.length > 0) {\n\t\t\t\t// create Share objects and sort by newest\n\t\t\t\tconst shares = data.ocs.data\n\t\t\t\t\t.map(share => new Share(share))\n\t\t\t\t\t.sort((a, b) => b.createdTime - a.createdTime)\n\n\t\t\t\tthis.linkShares = shares.filter(share => share.type === this.SHARE_TYPES.SHARE_TYPE_LINK || share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL)\n\t\t\t\tthis.shares = shares.filter(share => share.type !== this.SHARE_TYPES.SHARE_TYPE_LINK && share.type !== this.SHARE_TYPES.SHARE_TYPE_EMAIL)\n\n\t\t\t\tconsole.debug('Processed', this.linkShares.length, 'link share(s)')\n\t\t\t\tconsole.debug('Processed', this.shares.length, 'share(s)')\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Process the sharedWithMe share data\n\t\t * and init sharedWithMe\n\t\t *\n\t\t * @param {object} share the share ocs api request data\n\t\t * @param {object} share.data the request data\n\t\t */\n\t\tprocessSharedWithMe({ data }) {\n\t\t\tif (data.ocs && data.ocs.data && data.ocs.data[0]) {\n\t\t\t\tconst share = new Share(data)\n\t\t\t\tconst title = shareWithTitle(share)\n\t\t\t\tconst displayName = share.ownerDisplayName\n\t\t\t\tconst user = share.owner\n\n\t\t\t\tthis.sharedWithMe = {\n\t\t\t\t\tdisplayName,\n\t\t\t\t\ttitle,\n\t\t\t\t\tuser,\n\t\t\t\t}\n\t\t\t\tthis.reshare = share\n\n\t\t\t\t// If we have an expiration date, use it as subtitle\n\t\t\t\t// Refresh the status every 10s and clear if expired\n\t\t\t\tif (share.expireDate && moment(share.expireDate).unix() > moment().unix()) {\n\t\t\t\t\t// first update\n\t\t\t\t\tthis.updateExpirationSubtitle(share)\n\t\t\t\t\t// interval update\n\t\t\t\t\tthis.expirationInterval = setInterval(this.updateExpirationSubtitle, 10000, share)\n\t\t\t\t}\n\t\t\t} else if (this.fileInfo && this.fileInfo.shareOwnerId !== undefined ? this.fileInfo.shareOwnerId !== OC.currentUser : false) {\n\t\t\t\t// Fallback to compare owner and current user.\n\t\t\t\tthis.sharedWithMe = {\n\t\t\t\t\tdisplayName: this.fileInfo.shareOwner,\n\t\t\t\t\ttitle: t(\n\t\t\t\t\t\t'files_sharing',\n\t\t\t\t\t\t'Shared with you by {owner}',\n\t\t\t\t\t\t{ owner: this.fileInfo.shareOwner },\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t{ escape: false }\n\t\t\t\t\t),\n\t\t\t\t\tuser: this.fileInfo.shareOwnerId,\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Add a new share into the shares list\n\t\t * and return the newly created share component\n\t\t *\n\t\t * @param {Share} share the share to add to the array\n\t\t * @param {Function} [resolve] a function to run after the share is added and its component initialized\n\t\t */\n\t\taddShare(share, resolve = () => {}) {\n\t\t\t// only catching share type MAIL as link shares are added differently\n\t\t\t// meaning: not from the ShareInput\n\t\t\tif (share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\tthis.linkShares.unshift(share)\n\t\t\t} else {\n\t\t\t\tthis.shares.unshift(share)\n\t\t\t}\n\t\t\tthis.awaitForShare(share, resolve)\n\t\t},\n\n\t\t/**\n\t\t * Await for next tick and render after the list updated\n\t\t * Then resolve with the matched vue component of the\n\t\t * provided share object\n\t\t *\n\t\t * @param {Share} share newly created share\n\t\t * @param {Function} resolve a function to execute after\n\t\t */\n\t\tawaitForShare(share, resolve) {\n\t\t\tlet listComponent = this.$refs.shareList\n\t\t\t// Only mail shares comes from the input, link shares\n\t\t\t// are managed internally in the SharingLinkList component\n\t\t\tif (share.type === this.SHARE_TYPES.SHARE_TYPE_EMAIL) {\n\t\t\t\tlistComponent = this.$refs.linkShareList\n\t\t\t}\n\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tconst newShare = listComponent.$children.find(component => component.share === share)\n\t\t\t\tif (newShare) {\n\t\t\t\t\tresolve(newShare)\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.emptyContentWithSections {\n\tmargin: 1rem auto;\n}\n\n.sharingTab {\n\t&__content {\n\t\tpadding: 0 6px;\n\t}\n\t&__additionalContent {\n\t\tmargin: 44px 0;\n\t}\n}\n</style>\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { Type as ShareTypes } from '@nextcloud/sharing'\n\nconst shareWithTitle = function(share) {\n\tif (share.type === ShareTypes.SHARE_TYPE_GROUP) {\n\t\treturn t(\n\t\t\t'files_sharing',\n\t\t\t'Shared with you and the group {group} by {owner}',\n\t\t\t{\n\t\t\t\tgroup: share.shareWithDisplayName,\n\t\t\t\towner: share.ownerDisplayName,\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{ escape: false }\n\t\t)\n\t} else if (share.type === ShareTypes.SHARE_TYPE_CIRCLE) {\n\t\treturn t(\n\t\t\t'files_sharing',\n\t\t\t'Shared with you and {circle} by {owner}',\n\t\t\t{\n\t\t\t\tcircle: share.shareWithDisplayName,\n\t\t\t\towner: share.ownerDisplayName,\n\t\t\t},\n\t\t\tundefined,\n\t\t\t{ escape: false }\n\t\t)\n\t} else if (share.type === ShareTypes.SHARE_TYPE_ROOM) {\n\t\tif (share.shareWithDisplayName) {\n\t\t\treturn t(\n\t\t\t\t'files_sharing',\n\t\t\t\t'Shared with you and the conversation {conversation} by {owner}',\n\t\t\t\t{\n\t\t\t\t\tconversation: share.shareWithDisplayName,\n\t\t\t\t\towner: share.ownerDisplayName,\n\t\t\t\t},\n\t\t\t\tundefined,\n\t\t\t\t{ escape: false }\n\t\t\t)\n\t\t} else {\n\t\t\treturn t(\n\t\t\t\t'files_sharing',\n\t\t\t\t'Shared with you in a conversation by {owner}',\n\t\t\t\t{\n\t\t\t\t\towner: share.ownerDisplayName,\n\t\t\t\t},\n\t\t\t\tundefined,\n\t\t\t\t{ escape: false }\n\t\t\t)\n\t\t}\n\t} else {\n\t\treturn t(\n\t\t\t'files_sharing',\n\t\t\t'Shared with you by {owner}',\n\t\t\t{ owner: share.ownerDisplayName },\n\t\t\tundefined,\n\t\t\t{ escape: false }\n\t\t)\n\t}\n}\n\nexport { shareWithTitle }\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingTab.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingTab.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingTab.vue?vue&type=style&index=0&id=59d829c2&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharingTab.vue?vue&type=style&index=0&id=59d829c2&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharingTab.vue?vue&type=template&id=59d829c2&scoped=true&\"\nimport script from \"./SharingTab.vue?vue&type=script&lang=js&\"\nexport * from \"./SharingTab.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SharingTab.vue?vue&type=style&index=0&id=59d829c2&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"59d829c2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:{ 'icon-loading': _vm.loading }},[(_vm.error)?_c('div',{staticClass:\"emptycontent\",class:{ emptyContentWithSections: _vm.sections.length > 0 }},[_c('div',{staticClass:\"icon icon-error\"}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.error))])]):_c('div',{staticClass:\"sharingTab__content\"},[(_vm.isSharedWithMe)?_c('SharingEntrySimple',_vm._b({staticClass:\"sharing-entry__reshare\",scopedSlots:_vm._u([{key:\"avatar\",fn:function(){return [_c('NcAvatar',{staticClass:\"sharing-entry__avatar\",attrs:{\"user\":_vm.sharedWithMe.user,\"display-name\":_vm.sharedWithMe.displayName,\"tooltip-message\":\"\"}})]},proxy:true}],null,false,1656378807)},'SharingEntrySimple',_vm.sharedWithMe,false)):_vm._e(),_vm._v(\" \"),(!_vm.loading)?_c('SharingInput',{attrs:{\"can-reshare\":_vm.canReshare,\"file-info\":_vm.fileInfo,\"link-shares\":_vm.linkShares,\"reshare\":_vm.reshare,\"shares\":_vm.shares},on:{\"add:share\":_vm.addShare}}):_vm._e(),_vm._v(\" \"),(!_vm.loading)?_c('SharingLinkList',{ref:\"linkShareList\",attrs:{\"can-reshare\":_vm.canReshare,\"file-info\":_vm.fileInfo,\"shares\":_vm.linkShares}}):_vm._e(),_vm._v(\" \"),(!_vm.loading)?_c('SharingList',{ref:\"shareList\",attrs:{\"shares\":_vm.shares,\"file-info\":_vm.fileInfo}}):_vm._e(),_vm._v(\" \"),(_vm.canReshare && !_vm.loading)?_c('SharingInherited',{attrs:{\"file-info\":_vm.fileInfo}}):_vm._e(),_vm._v(\" \"),_c('SharingEntryInternal',{attrs:{\"file-info\":_vm.fileInfo}}),_vm._v(\" \"),(_vm.projectsEnabled && _vm.fileInfo)?_c('CollectionList',{attrs:{\"id\":(\"\" + (_vm.fileInfo.id)),\"type\":\"file\",\"name\":_vm.fileInfo.name}}):_vm._e()],1),_vm._v(\" \"),_vm._l((_vm.sections),function(section,index){return _c('div',{key:index,ref:'section-' + index,refInFor:true,staticClass:\"sharingTab__additionalContent\"},[_c(section(_vm.$refs['section-'+index], _vm.fileInfo),{tag:\"component\",attrs:{\"file-info\":_vm.fileInfo}})],1)})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class ShareSearch {\n\n\t_state\n\n\tconstructor() {\n\t\t// init empty state\n\t\tthis._state = {}\n\n\t\t// init default values\n\t\tthis._state.results = []\n\t\tconsole.debug('OCA.Sharing.ShareSearch initialized')\n\t}\n\n\t/**\n\t * Get the state\n\t *\n\t * @readonly\n\t * @memberof ShareSearch\n\t * @return {object} the data state\n\t */\n\tget state() {\n\t\treturn this._state\n\t}\n\n\t/**\n\t * Register a new result\n\t * Mostly used by the guests app.\n\t * We should consider deprecation and add results via php ?\n\t *\n\t * @param {object} result entry to append\n\t * @param {string} [result.user] entry user\n\t * @param {string} result.displayName entry first line\n\t * @param {string} [result.desc] entry second line\n\t * @param {string} [result.icon] entry icon\n\t * @param {Function} result.handler function to run on entry selection\n\t * @param {Function} [result.condition] condition to add entry or not\n\t * @return {boolean}\n\t */\n\taddNewResult(result) {\n\t\tif (result.displayName.trim() !== ''\n\t\t\t&& typeof result.handler === 'function') {\n\t\t\tthis._state.results.push(result)\n\t\t\treturn true\n\t\t}\n\t\tconsole.error('Invalid search result provided', result)\n\t\treturn false\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class ExternalLinkActions {\n\n\t_state\n\n\tconstructor() {\n\t\t// init empty state\n\t\tthis._state = {}\n\n\t\t// init default values\n\t\tthis._state.actions = []\n\t\tconsole.debug('OCA.Sharing.ExternalLinkActions initialized')\n\t}\n\n\t/**\n\t * Get the state\n\t *\n\t * @readonly\n\t * @memberof ExternalLinkActions\n\t * @return {object} the data state\n\t */\n\tget state() {\n\t\treturn this._state\n\t}\n\n\t/**\n\t * Register a new action for the link share\n\t * Mostly used by the social sharing app.\n\t *\n\t * @param {object} action new action component to register\n\t * @return {boolean}\n\t */\n\tregisterAction(action) {\n\t\tconsole.warn('OCA.Sharing.ExternalLinkActions is deprecated, use OCA.Sharing.ExternalShareAction instead')\n\n\t\tif (typeof action === 'object' && action.icon && action.name && action.url) {\n\t\t\tthis._state.actions.push(action)\n\t\t\treturn true\n\t\t}\n\t\tconsole.error('Invalid action provided', action)\n\t\treturn false\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class ExternalShareActions {\n\n\t_state\n\n\tconstructor() {\n\t\t// init empty state\n\t\tthis._state = {}\n\n\t\t// init default values\n\t\tthis._state.actions = []\n\t\tconsole.debug('OCA.Sharing.ExternalShareActions initialized')\n\t}\n\n\t/**\n\t * Get the state\n\t *\n\t * @readonly\n\t * @memberof ExternalLinkActions\n\t * @return {object} the data state\n\t */\n\tget state() {\n\t\treturn this._state\n\t}\n\n\t/**\n\t * Register a new option/entry for the a given share type\n\t *\n\t * @param {object} action new action component to register\n\t * @param {string} action.id unique action id\n\t * @param {Function} action.data data to bind the component to\n\t * @param {Array} action.shareType list of \\@nextcloud/sharing.Types.SHARE_XXX to be mounted on\n\t * @param {object} action.handlers list of listeners\n\t * @return {boolean}\n\t */\n\tregisterAction(action) {\n\t\t// Validate action\n\t\tif (typeof action !== 'object'\n\t\t\t|| typeof action.id !== 'string'\n\t\t\t|| typeof action.data !== 'function' // () => {disabled: true}\n\t\t\t|| !Array.isArray(action.shareType) // [\\@nextcloud/sharing.Types.SHARE_TYPE_LINK, ...]\n\t\t\t|| typeof action.handlers !== 'object' // {click: () => {}, ...}\n\t\t\t|| !Object.values(action.handlers).every(handler => typeof handler === 'function')) {\n\t\t\tconsole.error('Invalid action provided', action)\n\t\t\treturn false\n\t\t}\n\n\t\t// Check duplicates\n\t\tconst hasDuplicate = this._state.actions.findIndex(check => check.id === action.id) > -1\n\t\tif (hasDuplicate) {\n\t\t\tconsole.error(`An action with the same id ${action.id} already exists`, action)\n\t\t\treturn false\n\t\t}\n\n\t\tthis._state.actions.push(action)\n\t\treturn true\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport default class TabSections {\n\n\t_sections\n\n\tconstructor() {\n\t\tthis._sections = []\n\t}\n\n\t/**\n\t * @param {registerSectionCallback} section To be called to mount the section to the sharing sidebar\n\t */\n\tregisterSection(section) {\n\t\tthis._sections.push(section)\n\t}\n\n\tgetSections() {\n\t\treturn this._sections\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport VueClipboard from 'vue-clipboard2'\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n'\n\nimport SharingTab from './views/SharingTab.vue'\nimport ShareSearch from './services/ShareSearch.js'\nimport ExternalLinkActions from './services/ExternalLinkActions.js'\nimport ExternalShareActions from './services/ExternalShareActions.js'\nimport TabSections from './services/TabSections.js'\n\n// eslint-disable-next-line node/no-missing-import, import/no-unresolved\nimport ShareVariant from '@mdi/svg/svg/share-variant.svg?raw'\n\n// Init Sharing Tab Service\nif (!window.OCA.Sharing) {\n\twindow.OCA.Sharing = {}\n}\nObject.assign(window.OCA.Sharing, { ShareSearch: new ShareSearch() })\nObject.assign(window.OCA.Sharing, { ExternalLinkActions: new ExternalLinkActions() })\nObject.assign(window.OCA.Sharing, { ExternalShareActions: new ExternalShareActions() })\nObject.assign(window.OCA.Sharing, { ShareTabSections: new TabSections() })\n\nVue.prototype.t = t\nVue.prototype.n = n\nVue.use(VueClipboard)\n\n// Init Sharing tab component\nconst View = Vue.extend(SharingTab)\nlet TabInstance = null\n\nwindow.addEventListener('DOMContentLoaded', function() {\n\tif (OCA.Files && OCA.Files.Sidebar) {\n\t\tOCA.Files.Sidebar.registerTab(new OCA.Files.Sidebar.Tab({\n\t\t\tid: 'sharing',\n\t\t\tname: t('files_sharing', 'Sharing'),\n\t\t\ticonSvg: ShareVariant,\n\n\t\t\tasync mount(el, fileInfo, context) {\n\t\t\t\tif (TabInstance) {\n\t\t\t\t\tTabInstance.$destroy()\n\t\t\t\t}\n\t\t\t\tTabInstance = new View({\n\t\t\t\t\t// Better integration with vue parent component\n\t\t\t\t\tparent: context,\n\t\t\t\t})\n\t\t\t\t// Only mount after we have all the info we need\n\t\t\t\tawait TabInstance.update(fileInfo)\n\t\t\t\tTabInstance.$mount(el)\n\t\t\t},\n\t\t\tupdate(fileInfo) {\n\t\t\t\tTabInstance.update(fileInfo)\n\t\t\t},\n\t\t\tdestroy() {\n\t\t\t\tTabInstance.$destroy()\n\t\t\t\tTabInstance = null\n\t\t\t},\n\t\t}))\n\t}\n})\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".error[data-v-5e957d09] .action-checkbox__label:before{border:1px solid var(--color-error)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharePermissionsEditor.vue\"],\"names\":[],\"mappings\":\"AAiSC,wDACC,mCAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.error {\\n\\t::v-deep .action-checkbox__label:before {\\n\\t\\tborder: 1px solid var(--color-error);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry[data-v-708928fe]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-708928fe]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-708928fe]{color:var(--color-text-maxcontrast)}.sharing-entry__desc-unique[data-v-708928fe]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-708928fe]{margin-left:auto}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntry.vue\"],\"names\":[],\"mappings\":\"AAmdA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAED,6CACC,mCAAA,CAGF,yCACC,gBAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\theight: 44px;\\n\\t&__desc {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: space-between;\\n\\t\\tpadding: 8px;\\n\\t\\tline-height: 1.2em;\\n\\t\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t\\t&-unique {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\t&__actions {\\n\\t\\tmargin-left: auto;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry[data-v-2bbe78b4]{display:flex;align-items:center;height:44px}.sharing-entry__desc[data-v-2bbe78b4]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em}.sharing-entry__desc p[data-v-2bbe78b4]{color:var(--color-text-maxcontrast)}.sharing-entry__actions[data-v-2bbe78b4]{margin-left:auto}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryInherited.vue\"],\"names\":[],\"mappings\":\"AAgGA,gCACC,YAAA,CACA,kBAAA,CACA,WAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,wCACC,mCAAA,CAGF,yCACC,gBAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\theight: 44px;\\n\\t&__desc {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: space-between;\\n\\t\\tpadding: 8px;\\n\\t\\tline-height: 1.2em;\\n\\t\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\t&__actions {\\n\\t\\tmargin-left: auto;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry__internal .avatar-external[data-v-257ca35d]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}.sharing-entry__internal .icon-checkmark-color[data-v-257ca35d]{opacity:1}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryInternal.vue\"],\"names\":[],\"mappings\":\"AAoHC,2DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA,CAED,gEACC,SAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.sharing-entry__internal {\\n\\t.avatar-external {\\n\\t\\twidth: 32px;\\n\\t\\theight: 32px;\\n\\t\\tline-height: 32px;\\n\\t\\tfont-size: 18px;\\n\\t\\tbackground-color: var(--color-text-maxcontrast);\\n\\t\\tborder-radius: 50%;\\n\\t\\tflex-shrink: 0;\\n\\t}\\n\\t.icon-checkmark-color {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry[data-v-eb63f3b4]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-eb63f3b4]{display:flex;flex-direction:column;justify-content:space-between;padding:8px;line-height:1.2em;overflow:hidden}.sharing-entry__desc p[data-v-eb63f3b4]{color:var(--color-text-maxcontrast)}.sharing-entry__title[data-v-eb63f3b4]{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.sharing-entry:not(.sharing-entry--share) .sharing-entry__actions .new-share-link[data-v-eb63f3b4]{border-top:1px solid var(--color-border)}.sharing-entry[data-v-eb63f3b4] .avatar-link-share{background-color:var(--color-primary)}.sharing-entry .sharing-entry__action--public-upload[data-v-eb63f3b4]{border-bottom:1px solid var(--color-border)}.sharing-entry__loading[data-v-eb63f3b4]{width:44px;height:44px;margin:0;padding:14px;margin-left:auto}.sharing-entry .action-item[data-v-eb63f3b4]{margin-left:auto}.sharing-entry .action-item~.action-item[data-v-eb63f3b4],.sharing-entry .action-item~.sharing-entry__loading[data-v-eb63f3b4]{margin-left:0}.sharing-entry .icon-checkmark-color[data-v-eb63f3b4]{opacity:1}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntryLink.vue\"],\"names\":[],\"mappings\":\"AAy3BA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,YAAA,CACA,qBAAA,CACA,6BAAA,CACA,WAAA,CACA,iBAAA,CACA,eAAA,CAEA,wCACC,mCAAA,CAGF,uCACC,sBAAA,CACA,eAAA,CACA,kBAAA,CAIA,mGACC,wCAAA,CAIF,oDACC,qCAAA,CAGD,sEACC,2CAAA,CAGD,yCACC,UAAA,CACA,WAAA,CACA,QAAA,CACA,YAAA,CACA,gBAAA,CAKD,6CACC,gBAAA,CACA,+HAEC,aAAA,CAIF,sDACC,SAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tmin-height: 44px;\\n\\t&__desc {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: space-between;\\n\\t\\tpadding: 8px;\\n\\t\\tline-height: 1.2em;\\n\\t\\toverflow: hidden;\\n\\n\\t\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\t&__title {\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\toverflow: hidden;\\n\\t\\twhite-space: nowrap;\\n\\t}\\n\\n\\t&:not(.sharing-entry--share) &__actions {\\n\\t\\t.new-share-link {\\n\\t\\t\\tborder-top: 1px solid var(--color-border);\\n\\t\\t}\\n\\t}\\n\\n\\t::v-deep .avatar-link-share {\\n\\t\\tbackground-color: var(--color-primary);\\n\\t}\\n\\n\\t.sharing-entry__action--public-upload {\\n\\t\\tborder-bottom: 1px solid var(--color-border);\\n\\t}\\n\\n\\t&__loading {\\n\\t\\twidth: 44px;\\n\\t\\theight: 44px;\\n\\t\\tmargin: 0;\\n\\t\\tpadding: 14px;\\n\\t\\tmargin-left: auto;\\n\\t}\\n\\n\\t// put menus to the left\\n\\t// but only the first one\\n\\t.action-item {\\n\\t\\tmargin-left: auto;\\n\\t\\t~ .action-item,\\n\\t\\t~ .sharing-entry__loading {\\n\\t\\t\\tmargin-left: 0;\\n\\t\\t}\\n\\t}\\n\\n\\t.icon-checkmark-color {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry[data-v-73184f79]{display:flex;align-items:center;min-height:44px}.sharing-entry__desc[data-v-73184f79]{padding:8px;line-height:1.2em;position:relative;flex:1 1;min-width:0}.sharing-entry__desc p[data-v-73184f79]{color:var(--color-text-maxcontrast)}.sharing-entry__title[data-v-73184f79]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:inherit}.sharing-entry__actions[data-v-73184f79]{margin-left:auto !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingEntrySimple.vue\"],\"names\":[],\"mappings\":\"AA4FA,gCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sCACC,WAAA,CACA,iBAAA,CACA,iBAAA,CACA,QAAA,CACA,WAAA,CACA,wCACC,mCAAA,CAGF,uCACC,kBAAA,CACA,sBAAA,CACA,eAAA,CACA,iBAAA,CAED,yCACC,2BAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.sharing-entry {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tmin-height: 44px;\\n\\t&__desc {\\n\\t\\tpadding: 8px;\\n\\t\\tline-height: 1.2em;\\n\\t\\tposition: relative;\\n\\t\\tflex: 1 1;\\n\\t\\tmin-width: 0;\\n\\t\\tp {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\t&__title {\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\toverflow: hidden;\\n\\t\\tmax-width: inherit;\\n\\t}\\n\\t&__actions {\\n\\t\\tmargin-left: auto !important;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-search{display:flex;flex-direction:column;margin-bottom:4px}.sharing-search label[for=sharing-search-input]{margin-bottom:2px}.sharing-search__input{width:100%;margin:10px 0}.sharing-search__input .multiselect__option span[lookup] .avatardiv{background-image:var(--icon-search-white);background-repeat:no-repeat;background-position:center;background-color:var(--color-text-maxcontrast) !important}.sharing-search__input .multiselect__option span[lookup] .avatardiv div{display:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/SharingInput.vue\"],\"names\":[],\"mappings\":\"AA+gBA,gBACC,YAAA,CACA,qBAAA,CACA,iBAAA,CAEA,gDACC,iBAAA,CAGD,uBACC,UAAA,CACA,aAAA,CAKE,oEACC,yCAAA,CACA,2BAAA,CACA,0BAAA,CACA,yDAAA,CACA,wEACC,YAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.sharing-search {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tmargin-bottom: 4px;\\n\\n\\tlabel[for=\\\"sharing-search-input\\\"] {\\n\\t\\tmargin-bottom: 2px;\\n\\t}\\n\\n\\t&__input {\\n\\t\\twidth: 100%;\\n\\t\\tmargin: 10px 0;\\n\\n\\t\\t// properly style the lookup entry\\n\\t\\t.multiselect__option {\\n\\t\\t\\tspan[lookup] {\\n\\t\\t\\t\\t.avatardiv {\\n\\t\\t\\t\\t\\tbackground-image: var(--icon-search-white);\\n\\t\\t\\t\\t\\tbackground-repeat: no-repeat;\\n\\t\\t\\t\\t\\tbackground-position: center;\\n\\t\\t\\t\\t\\tbackground-color: var(--color-text-maxcontrast) !important;\\n\\t\\t\\t\\t\\tdiv {\\n\\t\\t\\t\\t\\t\\tdisplay: none;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sharing-entry__inherited .avatar-shared[data-v-6a277822]{width:32px;height:32px;line-height:32px;font-size:18px;background-color:var(--color-text-maxcontrast);border-radius:50%;flex-shrink:0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/views/SharingInherited.vue\"],\"names\":[],\"mappings\":\"AAgKC,0DACC,UAAA,CACA,WAAA,CACA,gBAAA,CACA,cAAA,CACA,8CAAA,CACA,iBAAA,CACA,aAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.sharing-entry__inherited {\\n\\t.avatar-shared {\\n\\t\\twidth: 32px;\\n\\t\\theight: 32px;\\n\\t\\tline-height: 32px;\\n\\t\\tfont-size: 18px;\\n\\t\\tbackground-color: var(--color-text-maxcontrast);\\n\\t\\tborder-radius: 50%;\\n\\t\\tflex-shrink: 0;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".emptyContentWithSections[data-v-59d829c2]{margin:1rem auto}.sharingTab__content[data-v-59d829c2]{padding:0 6px}.sharingTab__additionalContent[data-v-59d829c2]{margin:44px 0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/views/SharingTab.vue\"],\"names\":[],\"mappings\":\"AA2WA,2CACC,gBAAA,CAIA,sCACC,aAAA,CAED,gDACC,aAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.emptyContentWithSections {\\n\\tmargin: 1rem auto;\\n}\\n\\n.sharingTab {\\n\\t&__content {\\n\\t\\tpadding: 0 6px;\\n\\t}\\n\\t&__additionalContent {\\n\\t\\tmargin: 44px 0;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 7870;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t7870: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], function() { return __webpack_require__(83559); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","Config","document","getElementsByClassName","dataset","allowPublicUpload","getElementById","value","OC","appConfig","core","federatedCloudShareDoc","this","isDefaultExpireDateEnabled","Date","setDate","getDate","defaultExpireDate","isDefaultInternalExpireDateEnabled","defaultInternalExpireDate","isDefaultRemoteExpireDateEnabled","defaultRemoteExpireDate","enforcePasswordForPublicLink","enableLinkPasswordByDefault","defaultExpireDateEnforced","defaultExpireDateEnabled","defaultInternalExpireDateEnforced","defaultRemoteExpireDateEnforced","defaultInternalExpireDateEnabled","defaultRemoteExpireDateEnabled","remoteShareAllowed","capabilities","getCapabilities","undefined","files_sharing","sharebymail","public","enabled","resharingAllowed","password","enforced","sharee","always_show_unique","allowGroupSharing","parseInt","config","password_policy","Share","ocsData","ocs","data","hide_download","mail_send","attributes","JSON","parse","e","console","warn","_share","id","share_type","permissions","uid_owner","displayname_owner","share_with","share_with_displayname","share_with_displayname_unique","share_with_link","share_with_avatar","uid_file_owner","displayname_file_owner","stime","expiration","date","token","note","label","state","password_expiration_time","passwordExpirationTime","send_password_by_talk","sendPasswordByTalk","path","item_type","mimetype","file_source","file_target","file_parent","PERMISSION_READ","PERMISSION_CREATE","PERMISSION_DELETE","PERMISSION_UPDATE","PERMISSION_SHARE","i","attr","scope","key","setAttribute","attrUpdate","push","can_edit","can_delete","via_fileid","via_path","parent","storage_id","storage","item_source","status","SHARE_TYPES","ShareTypes","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","_h","$createElement","_c","_self","staticClass","_t","_v","directives","name","rawName","expression","_s","title","subtitle","_e","$slots","ref","attrs","ariaExpandedValue","t","internalLinkSubtitle","scopedSlots","_u","fn","proxy","on","$event","preventDefault","copyLink","apply","arguments","copied","copySuccess","clipboardTooltip","passwordSet","passwordPolicy","api","generate","axios","request","info","Array","fill","reduce","prev","curr","charAt","Math","floor","random","length","shareUrl","generateOcsUrl","methods","createShare","shareType","shareWith","publicUpload","expireDate","error","errorMessage","response","meta","message","Notification","showTemporary","type","deleteShare","updateShare","properties","Error","canReshare","loading","inputPlaceholder","asyncFind","addShare","noResultText","mixins","SharesRequests","props","fileInfo","Object","default","required","share","isUnique","Boolean","errors","saving","open","updateQueue","PQueue","concurrency","reactiveState","computed","hasNote","get","set","dateTomorrow","lang","weekdaysShort","window","dayNamesShort","monthsShort","monthNamesShort","formatLocale","firstDayOfWeek","firstDay","weekdaysMin","monthFormat","isShareOwner","owner","getCurrentUser","uid","checkShare","trim","expirationDate","isValid","parseDateString","match","pop","formatDateToString","UTC","getFullYear","getMonth","toISOString","split","onExpirationChange","queueUpdate","onExpirationDisable","onNoteChange","$set","onNoteSubmit","newNote","$delete","showSuccess","onDelete","debug","itemType","$emit","propertyNames","forEach","stringify","toString","add","updatedShare","indexOf","onSyncError","property","propertyEl","$refs","$el","focusable","querySelector","focus","debounceQueueUpdate","debounce","shareWithDisplayName","initiator","ownerDisplayName","viaPath","viaFileid","viaFileTargetUrl","folder","viaFolderName","mainTitle","subTitle","showInheritedShares","showInheritedSharesIcon","stopPropagation","toggleInheritedShares","toggleTooltip","_l","is","_g","_b","tag","action","handlers","text","ATOMIC_PERMISSIONS","NONE","READ","UPDATE","CREATE","DELETE","SHARE","BUNDLED_PERMISSIONS","READ_ONLY","UPLOAD_AND_UPDATE","FILE_DROP","ALL","hasPermissions","initialPermissionSet","permissionsToCheck","permissionsSetIsValid","permissionsSet","togglePermissions","permissionsToToggle","permissionsToSubtract","subtractPermissions","permissionsToAdd","addPermissions","permissionSet","isFolder","shareHasPermissions","atomicPermissions","toggleSharePermissions","fileHasCreatePermission","isPublicUploadEnabled","showCustomPermissionsForm","class","sharePermissionsSetIsValid","canToggleSharePermissions","sharePermissionEqual","bundledPermissions","randomFormName","setSharePermissions","sharePermissionsIsBundle","sharePermissionsSummary","isEmailShareType","pending","pendingPassword","pendingExpirationDate","onMenuClose","canEdit","content","show","trigger","defaultContainer","modifiers","newLabel","onLabelChange","onLabelSubmit","hideDownload","canChangeHideDownload","isPasswordProtected","onPasswordDisable","hasUnsavedPassword","newPassword","onPasswordChange","onPasswordSubmit","isPasswordProtectedByTalk","canTogglePasswordProtectedByTalkAvailable","onPasswordProtectedByTalkChange","hasExpirationDate","isDefaultExpireDateEnforced","dateMaxEnforced","index","icon","url","shareLink","onNewLinkShare","isPasswordPolicyEnabled","minLength","onCancel","hasLinkShares","shares","awaitForShare","removeShare","SHARE_TYPE_USER","shareWithAvatar","shareWithLink","shareWithDisplayNameUnique","permissionsEdit","canSetEdit","canCreate","permissionsCreate","canSetCreate","canDelete","permissionsDelete","canSetDelete","permissionsShare","canSetReshare","canDownload","canSetDownload","allowDownloadText","isDefaultInternalExpireDateEnforced","group","escape","circle","conversation","emptyContentWithSections","sections","sharedWithMe","user","displayName","linkShares","reshare","projectsEnabled","section","refInFor","ShareSearch","_state","results","result","handler","ExternalLinkActions","actions","ExternalShareActions","isArray","values","every","findIndex","check","TabSections","_sections","OCA","Sharing","assign","ShareTabSections","Vue","n","VueClipboard","View","SharingTab","TabInstance","addEventListener","Files","Sidebar","registerTab","Tab","iconSvg","ShareVariant","mount","el","context","$destroy","update","$mount","destroy","___CSS_LOADER_EXPORT___","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","call","m","amdD","amdO","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","keys","splice","r","getter","__esModule","d","a","definition","o","defineProperty","enumerable","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","bind","nc","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file diff --git a/dist/settings-vue-settings-apps-users-management.js b/dist/settings-vue-settings-apps-users-management.js index 58d3e56bd49..1a561854e03 100644 --- a/dist/settings-vue-settings-apps-users-management.js +++ b/dist/settings-vue-settings-apps-users-management.js @@ -1,3 +1,3 @@ /*! For license information please see settings-vue-settings-apps-users-management.js.LICENSE.txt */ -!function(){"use strict";var e,r,o,i={92652:function(e,t,r){r.d(t,{J:function(){return o}});var n=r(9944),o=Object.freeze({enabled:(0,n.translate)("settings","Active apps"),disabled:(0,n.translate)("settings","Disabled apps"),updates:(0,n.translate)("settings","Updates"),"app-bundles":(0,n.translate)("settings","App bundles"),featured:(0,n.translate)("settings","Featured apps")})},78778:function(e,r,o){var i=o(20144),u=o(34741),a=o(83678),s={name:"App",beforeMount:function(){null!==document.getElementById("serverData")&&this.$store.commit("setServerData",JSON.parse(document.getElementById("serverData").dataset.server))}},c=(0,o(51900).Z)(s,(function(){var e=this.$createElement;return(this._self._c||e)("router-view")}),[],!1,null,null,null).exports,d=o(78345),p=o(79753),f=o(92652),l=o(20629),m=o(4820),g=o(10128),h=(o(65509),function(e){return e.replace(/\/$/,"")}),v=function(){return(0,g.confirmPassword)()},A=function(e,t){return m.default.get(h(e),t)},I=function(e,t){return m.default.post(h(e),t)},b=function(e,t){return m.default.put(h(e),t)},y=function(e,t){return m.default.delete(h(e),{params:t})},U=(0,o(17499).IY)().setApp("settings").detectUser().build(),P=function(e,t){return 1===t?e.sort((function(e,t){return e.usercount-e.disabled<t.usercount-t.disabled})):e.sort((function(e,t){return e.name.localeCompare(t.name)}))},L={id:"",name:"",usercount:0,disabled:0,canAdd:!0,canRemove:!0},C={appendUsers:function(e,t){var r=e.users.concat(Object.keys(t).map((function(e){return t[e]})));e.usersOffset+=e.usersLimit,e.users=r},setPasswordPolicyMinLength:function(e,t){e.minPasswordLength=""!==t?t:0},initGroups:function(e,t){var r=t.groups,n=t.orderBy,o=t.userCount;e.groups=r.map((function(e){return Object.assign({},L,e)})),e.orderBy=n,e.userCount=o,e.groups=P(e.groups,e.orderBy)},addGroup:function(e,t){var r=t.gid,n=t.displayName;try{if(void 0!==e.groups.find((function(e){return e.id===r})))return;var o=Object.assign({},L,{id:r,name:n});e.groups.push(o),e.groups=P(e.groups,e.orderBy)}catch(e){console.error("Can't create group",e)}},renameGroup:function(e,t){var r=t.gid,n=t.displayName,o=e.groups.findIndex((function(e){return e.id===r}));if(o>=0){var i=e.groups[o];i.name=n,e.groups.splice(o,1,i),e.groups=P(e.groups,e.orderBy)}},removeGroup:function(e,t){var r=e.groups.findIndex((function(e){return e.id===t}));r>=0&&e.groups.splice(r,1)},addUserGroup:function(e,t){var r=t.userid,n=t.gid,o=e.groups.find((function(e){return e.id===n})),i=e.users.find((function(e){return e.id===r}));o&&i.enabled&&e.userCount>0&&o.usercount++,i.groups.push(n),e.groups=P(e.groups,e.orderBy)},removeUserGroup:function(e,t){var r=t.userid,n=t.gid,o=e.groups.find((function(e){return e.id===n})),i=e.users.find((function(e){return e.id===r}));o&&i.enabled&&e.userCount>0&&o.usercount--;var u=i.groups;u.splice(u.indexOf(n),1),e.groups=P(e.groups,e.orderBy)},addUserSubAdmin:function(e,t){var r=t.userid,n=t.gid;e.users.find((function(e){return e.id===r})).subadmin.push(n)},removeUserSubAdmin:function(e,t){var r=t.userid,n=t.gid,o=e.users.find((function(e){return e.id===r})).subadmin;o.splice(o.indexOf(n),1)},deleteUser:function(e,t){var r=e.users.findIndex((function(e){return e.id===t}));this.commit("updateUserCounts",{user:e.users[r],actionType:"remove"}),e.users.splice(r,1)},addUserData:function(e,t){var r=t.data.ocs.data;e.users.push(r),this.commit("updateUserCounts",{user:r,actionType:"create"})},enableDisableUser:function(e,t){var r=t.userid,n=t.enabled,o=e.users.find((function(e){return e.id===r}));o.enabled=n,this.commit("updateUserCounts",{user:o,actionType:n?"enable":"disable"})},updateUserCounts:function(e,t){var r=t.user,n=t.actionType,o=e.groups.find((function(e){return"disabled"===e.id}));switch(n){case"enable":case"disable":o.usercount+=r.enabled?-1:1,e.userCount+=r.enabled?1:-1,r.groups.forEach((function(t){e.groups.find((function(e){return e.id===t})).disabled+=r.enabled?-1:1}));break;case"create":e.userCount++,r.groups.forEach((function(t){e.groups.find((function(e){return e.id===t})).usercount++}));break;case"remove":r.enabled?(e.userCount--,r.groups.forEach((function(t){e.groups.find((function(e){return e.id===t})).usercount--}))):(o.usercount--,r.groups.forEach((function(t){e.groups.find((function(e){return e.id===t})).disabled--})));break;default:U.error("Unknown action type in updateUserCounts: '".concat(n,"'"))}},setUserData:function(e,t){var r=t.userid,n=t.key,o=t.value;if("quota"===n){var i=OC.Util.computerFileSize(o);e.users.find((function(e){return e.id===r}))[n][n]=null!==i?i:o}else e.users.find((function(e){return e.id===r}))[n]=o},resetUsers:function(e){e.users=[],e.usersOffset=0}},w=m.default.CancelToken,E=null,O={state:{users:[],groups:[],orderBy:1,minPasswordLength:0,usersOffset:0,usersLimit:25,userCount:0},mutations:C,getters:{getUsers:function(e){return e.users},getGroups:function(e){return e.groups},getSubadminGroups:function(e){return e.groups.filter((function(e){return"admin"!==e.id&&"disabled"!==e.id}))},getPasswordPolicyMinLength:function(e){return e.minPasswordLength},getUsersOffset:function(e){return e.usersOffset},getUsersLimit:function(e){return e.usersLimit},getUserCount:function(e){return e.userCount}},actions:{getUsers:function(e,t){var r=t.offset,n=t.limit,o=t.search,i=t.group;return E&&E.cancel("Operation canceled by another search request."),E=w.source(),o="string"==typeof o?o:"",""!==(i="string"==typeof i?i:"")?A((0,p.generateOcsUrl)("cloud/groups/{group}/users/details?offset={offset}&limit={limit}&search={search}",{group:encodeURIComponent(i),offset:r,limit:n,search:o}),{cancelToken:E.token}).then((function(t){var r=Object.keys(t.data.ocs.data.users).length;return r>0&&e.commit("appendUsers",t.data.ocs.data.users),r})).catch((function(t){m.default.isCancel(t)||e.commit("API_FAILURE",t)})):A((0,p.generateOcsUrl)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:r,limit:n,search:o}),{cancelToken:E.token}).then((function(t){var r=Object.keys(t.data.ocs.data.users).length;return r>0&&e.commit("appendUsers",t.data.ocs.data.users),r})).catch((function(t){m.default.isCancel(t)||e.commit("API_FAILURE",t)}))},getGroups:function(e,t){var r=t.offset,n=t.limit,o=t.search;o="string"==typeof o?o:"";var i=-1===n?"":"&limit=".concat(n);return A((0,p.generateOcsUrl)("cloud/groups?offset={offset}&search={search}",{offset:r,search:o})+i).then((function(t){return Object.keys(t.data.ocs.data.groups).length>0&&(t.data.ocs.data.groups.forEach((function(t){e.commit("addGroup",{gid:t,displayName:t})})),!0)})).catch((function(t){return e.commit("API_FAILURE",t)}))},getUsersFromList:function(e,t){var r=t.offset,n=t.limit,o=t.search;return o="string"==typeof o?o:"",A((0,p.generateOcsUrl)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:r,limit:n,search:o})).then((function(t){return Object.keys(t.data.ocs.data.users).length>0&&(e.commit("appendUsers",t.data.ocs.data.users),!0)})).catch((function(t){return e.commit("API_FAILURE",t)}))},getUsersFromGroup:function(e,t){var r=t.groupid,n=t.offset,o=t.limit;return A((0,p.generateOcsUrl)("cloud/users/{groupId}/details?offset={offset}&limit={limit}",{groupId:encodeURIComponent(r),offset:n,limit:o})).then((function(t){return e.commit("getUsersFromList",t.data.ocs.data.users)})).catch((function(t){return e.commit("API_FAILURE",t)}))},getPasswordPolicyMinLength:function(e){return!(!OC.getCapabilities().password_policy||!OC.getCapabilities().password_policy.minLength)&&(e.commit("setPasswordPolicyMinLength",OC.getCapabilities().password_policy.minLength),OC.getCapabilities().password_policy.minLength)},addGroup:function(e,t){return v().then((function(r){return I((0,p.generateOcsUrl)("cloud/groups"),{groupid:t}).then((function(r){return e.commit("addGroup",{gid:t,displayName:t}),{gid:t,displayName:t}})).catch((function(e){throw e}))})).catch((function(r){throw e.commit("API_FAILURE",{gid:t,error:r}),r}))},renameGroup:function(e,t){var r=t.groupid,n=t.displayName;return v().then((function(t){return b((0,p.generateOcsUrl)("cloud/groups/{groupId}",{groupId:encodeURIComponent(r)}),{key:"displayname",value:n}).then((function(t){return e.commit("renameGroup",{gid:r,displayName:n}),{groupid:r,displayName:n}})).catch((function(e){throw e}))})).catch((function(t){throw e.commit("API_FAILURE",{groupid:r,error:t}),t}))},removeGroup:function(e,t){return v().then((function(r){return y((0,p.generateOcsUrl)("cloud/groups/{groupId}",{groupId:encodeURIComponent(t)})).then((function(r){return e.commit("removeGroup",t)})).catch((function(e){throw e}))})).catch((function(r){return e.commit("API_FAILURE",{gid:t,error:r})}))},addUserGroup:function(e,t){var r=t.userid,n=t.gid;return v().then((function(t){return I((0,p.generateOcsUrl)("cloud/users/{userid}/groups",{userid:r}),{groupid:n}).then((function(t){return e.commit("addUserGroup",{userid:r,gid:n})})).catch((function(e){throw e}))})).catch((function(t){return e.commit("API_FAILURE",{userid:r,error:t})}))},removeUserGroup:function(e,t){var r=t.userid,n=t.gid;return v().then((function(t){return y((0,p.generateOcsUrl)("cloud/users/{userid}/groups",{userid:r}),{groupid:n}).then((function(t){return e.commit("removeUserGroup",{userid:r,gid:n})})).catch((function(e){throw e}))})).catch((function(t){throw e.commit("API_FAILURE",{userid:r,error:t}),t}))},addUserSubAdmin:function(e,t){var r=t.userid,n=t.gid;return v().then((function(t){return I((0,p.generateOcsUrl)("cloud/users/{userid}/subadmins",{userid:r}),{groupid:n}).then((function(t){return e.commit("addUserSubAdmin",{userid:r,gid:n})})).catch((function(e){throw e}))})).catch((function(t){return e.commit("API_FAILURE",{userid:r,error:t})}))},removeUserSubAdmin:function(e,t){var r=t.userid,n=t.gid;return v().then((function(t){return y((0,p.generateOcsUrl)("cloud/users/{userid}/subadmins",{userid:r}),{groupid:n}).then((function(t){return e.commit("removeUserSubAdmin",{userid:r,gid:n})})).catch((function(e){throw e}))})).catch((function(t){return e.commit("API_FAILURE",{userid:r,error:t})}))},wipeUserDevices:function(e,t){return v().then((function(e){return I((0,p.generateOcsUrl)("cloud/users/{userid}/wipe",{userid:t})).catch((function(e){throw e}))})).catch((function(r){return e.commit("API_FAILURE",{userid:t,error:r})}))},deleteUser:function(e,t){return v().then((function(r){return y((0,p.generateOcsUrl)("cloud/users/{userid}",{userid:t})).then((function(r){return e.commit("deleteUser",t)})).catch((function(e){throw e}))})).catch((function(r){return e.commit("API_FAILURE",{userid:t,error:r})}))},addUser:function(e,t){var r=e.commit,n=e.dispatch,o=t.userid,i=t.password,u=t.displayName,a=t.email,s=t.groups,c=t.subadmin,d=t.quota,f=t.language;return v().then((function(e){return I((0,p.generateOcsUrl)("cloud/users"),{userid:o,password:i,displayName:u,email:a,groups:s,subadmin:c,quota:d,language:f}).then((function(e){return n("addUserData",o||e.data.ocs.data.id)})).catch((function(e){throw e}))})).catch((function(e){throw r("API_FAILURE",{userid:o,error:e}),e}))},addUserData:function(e,t){return v().then((function(r){return A((0,p.generateOcsUrl)("cloud/users/{userid}",{userid:t})).then((function(t){return e.commit("addUserData",t)})).catch((function(e){throw e}))})).catch((function(r){return e.commit("API_FAILURE",{userid:t,error:r})}))},enableDisableUser:function(e,t){var r=t.userid,n=t.enabled,o=void 0===n||n,i=o?"enable":"disable";return v().then((function(t){return b((0,p.generateOcsUrl)("cloud/users/{userid}/{userStatus}",{userid:r,userStatus:i})).then((function(t){return e.commit("enableDisableUser",{userid:r,enabled:o})})).catch((function(e){throw e}))})).catch((function(t){return e.commit("API_FAILURE",{userid:r,error:t})}))},setUserData:function(e,t){var r=t.userid,n=t.key,o=t.value,i=["email","displayname"];return-1!==["email","language","quota","displayname","password"].indexOf(n)&&"string"==typeof o&&(-1===i.indexOf(n)&&o.length>0||-1!==i.indexOf(n))?v().then((function(t){return b((0,p.generateOcsUrl)("cloud/users/{userid}",{userid:r}),{key:n,value:o}).then((function(t){return e.commit("setUserData",{userid:r,key:n,value:o})})).catch((function(e){throw e}))})).catch((function(t){return e.commit("API_FAILURE",{userid:r,error:t})})):Promise.reject(new Error("Invalid request data"))},sendWelcomeMail:function(e,t){return v().then((function(e){return I((0,p.generateOcsUrl)("cloud/users/{userid}/welcome",{userid:t})).then((function(e){return!0})).catch((function(e){throw e}))})).catch((function(r){return e.commit("API_FAILURE",{userid:t,error:r})}))}}},_=o(26932);function R(e,t,r,n,o,i,u){try{var a=e[i](u),s=a.value}catch(e){return void r(e)}a.done?t(s):Promise.resolve(s).then(n,o)}function x(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function u(e){R(i,n,o,u,a,"next",e)}function a(e){R(i,n,o,u,a,"throw",e)}u(void 0)}))}}o(36144);var k={APPS_API_FAILURE:function(e,r){(0,_.x2)(t("settings","An error occurred during the request. Unable to proceed.")+"<br>"+r.error.response.data.data.message,{isHTML:!0}),console.error(e,r)},initCategories:function(e,t){var r=t.categories,n=t.updateCount;e.categories=r,e.updateCount=n},updateCategories:function(e,t){e.gettingCategoriesPromise=t},setUpdateCount:function(e,t){e.updateCount=t},addCategory:function(e,t){e.categories.push(t)},appendCategories:function(e,t){e.categories=t},setAllApps:function(e,t){e.apps=t},setError:function(e,t){var r=t.appId,n=t.error;Array.isArray(r)||(r=[r]),r.forEach((function(t){e.apps.find((function(e){return e.id===t})).error=n}))},clearError:function(e,t){var r=t.appId;t.error,e.apps.find((function(e){return e.id===r})).error=null},enableApp:function(e,t){var r=t.appId,n=t.groups,o=e.apps.find((function(e){return e.id===r}));o.active=!0,o.groups=n},disableApp:function(e,t){var r=e.apps.find((function(e){return e.id===t}));r.active=!1,r.groups=[],r.removable&&(r.canUnInstall=!0)},uninstallApp:function(e,t){e.apps.find((function(e){return e.id===t})).active=!1,e.apps.find((function(e){return e.id===t})).groups=[],e.apps.find((function(e){return e.id===t})).needsDownload=!0,e.apps.find((function(e){return e.id===t})).installed=!1,e.apps.find((function(e){return e.id===t})).canUnInstall=!1,e.apps.find((function(e){return e.id===t})).canInstall=!0},updateApp:function(e,t){var r=e.apps.find((function(e){return e.id===t})),n=r.update;r.update=null,r.version=n,e.updateCount--},resetApps:function(e){e.apps=[]},reset:function(e){e.apps=[],e.categories=[],e.updateCount=0},startLoading:function(e,t){Array.isArray(t)?t.forEach((function(t){i.ZP.set(e.loading,t,!0)})):i.ZP.set(e.loading,t,!0)},stopLoading:function(e,t){Array.isArray(t)?t.forEach((function(t){i.ZP.set(e.loading,t,!1)})):i.ZP.set(e.loading,t,!1)}},D={enableApp:function(e,r){var n,o=r.appId,i=r.groups;return n=Array.isArray(o)?o:[o],v().then((function(r){return e.commit("startLoading",n),e.commit("startLoading","install"),I((0,p.generateUrl)("settings/apps/enable"),{appIds:n,groups:i}).then((function(r){return e.commit("stopLoading",n),e.commit("stopLoading","install"),n.forEach((function(t){e.commit("enableApp",{appId:t,groups:i})})),A((0,p.generateUrl)("apps/files")).then((function(){r.data.update_required&&((0,_.JQ)(t("settings","The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds."),{onClick:function(){return window.location.reload()},close:!1}),setTimeout((function(){location.reload()}),5e3))})).catch((function(){Array.isArray(o)||e.commit("setError",{appId:n,error:t("settings","Error: This app cannot be enabled because it makes the server unstable")})}))})).catch((function(t){e.commit("stopLoading",n),e.commit("stopLoading","install"),e.commit("setError",{appId:n,error:t.response.data.data.message}),e.commit("APPS_API_FAILURE",{appId:o,error:t})}))})).catch((function(t){return e.commit("API_FAILURE",{appId:o,error:t})}))},forceEnableApp:function(e,t){var r,n=t.appId;return t.groups,r=Array.isArray(n)?n:[n],v().then((function(){return e.commit("startLoading",r),e.commit("startLoading","install"),I((0,p.generateUrl)("settings/apps/force"),{appId:n}).then((function(e){location.reload()})).catch((function(t){e.commit("stopLoading",r),e.commit("stopLoading","install"),e.commit("setError",{appId:r,error:t.response.data.data.message}),e.commit("APPS_API_FAILURE",{appId:n,error:t})}))})).catch((function(t){return e.commit("API_FAILURE",{appId:n,error:t})}))},disableApp:function(e,t){var r,n=t.appId;return r=Array.isArray(n)?n:[n],v().then((function(t){return e.commit("startLoading",r),I((0,p.generateUrl)("settings/apps/disable"),{appIds:r}).then((function(t){return e.commit("stopLoading",r),r.forEach((function(t){e.commit("disableApp",t)})),!0})).catch((function(t){e.commit("stopLoading",r),e.commit("APPS_API_FAILURE",{appId:n,error:t})}))})).catch((function(t){return e.commit("API_FAILURE",{appId:n,error:t})}))},uninstallApp:function(e,t){var r=t.appId;return v().then((function(t){return e.commit("startLoading",r),A((0,p.generateUrl)("settings/apps/uninstall/".concat(r))).then((function(t){return e.commit("stopLoading",r),e.commit("uninstallApp",r),!0})).catch((function(t){e.commit("stopLoading",r),e.commit("APPS_API_FAILURE",{appId:r,error:t})}))})).catch((function(t){return e.commit("API_FAILURE",{appId:r,error:t})}))},updateApp:function(e,t){var r=t.appId;return v().then((function(t){return e.commit("startLoading",r),e.commit("startLoading","install"),A((0,p.generateUrl)("settings/apps/update/".concat(r))).then((function(t){return e.commit("stopLoading","install"),e.commit("stopLoading",r),e.commit("updateApp",r),!0})).catch((function(t){e.commit("stopLoading",r),e.commit("stopLoading","install"),e.commit("APPS_API_FAILURE",{appId:r,error:t})}))})).catch((function(t){return e.commit("API_FAILURE",{appId:r,error:t})}))},getAllApps:function(e){return e.commit("startLoading","list"),A((0,p.generateUrl)("settings/apps/list")).then((function(t){return e.commit("setAllApps",t.data.apps),e.commit("stopLoading","list"),!0})).catch((function(t){return e.commit("API_FAILURE",t)}))},getCategories:function(e){var t=arguments;return x(regeneratorRuntime.mark((function r(){var n,o,i,u;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(n=t.length>1&&void 0!==t[1]?t[1]:{},(void 0===(o=n.shouldRefetchCategories)||!o)&&e.state.gettingCategoriesPromise){r.next=20;break}return e.commit("startLoading","categories"),r.prev=3,i=A((0,p.generateUrl)("settings/apps/categories")),e.commit("updateCategories",i),r.next=8,i;case 8:if(!((u=r.sent).data.length>0)){r.next=13;break}return e.commit("appendCategories",u.data),e.commit("stopLoading","categories"),r.abrupt("return",!0);case 13:return e.commit("stopLoading","categories"),r.abrupt("return",!1);case 17:r.prev=17,r.t0=r.catch(3),e.commit("API_FAILURE",r.t0);case 20:return r.abrupt("return",e.state.gettingCategoriesPromise);case 21:case"end":return r.stop()}}),r,null,[[3,17]])})))()}},F={state:{apps:[],categories:[],updateCount:0,loading:{},loadingList:!1,gettingCategoriesPromise:null},mutations:k,getters:{loading:function(e){return function(t){return e.loading[t]}},getCategories:function(e){return e.categories},getAllApps:function(e){return e.apps},getUpdateCount:function(e){return e.updateCount},getCategoryById:function(e){return function(t){return e.categories.find((function(e){return e.id===t}))}}},actions:D},M={state:{},mutations:{},getters:{},actions:{setAppConfig:function(e,t){var r=t.app,n=t.key,o=t.value;return v().then((function(e){return I((0,p.generateOcsUrl)("apps/provisioning_api/api/v1/config/apps/{app}/{key}",{app:r,key:n}),{value:o}).catch((function(e){throw e}))})).catch((function(t){return e.commit("API_FAILURE",{app:r,key:n,value:o,error:t})}))}}};i.ZP.use(l.ZP);var j={API_FAILURE:function(e,r){try{var n=r.error.response.data.ocs.meta.message;(0,_.x2)(t("settings","An error occurred during the request. Unable to proceed.")+"<br>"+n,{isHTML:!0})}catch(e){(0,_.x2)(t("settings","An error occurred during the request. Unable to proceed."))}console.error(e,r)}},N=new l.yh({modules:{users:O,apps:F,settings:{state:{serverData:{}},mutations:{setServerData:function(e,t){e.serverData=t}},getters:{getServerData:function(e){return e.serverData}},actions:{}},oc:M},strict:!1,mutations:j});function Z(e,t,r,n,o,i,u){try{var a=e[i](u),s=a.value}catch(e){return void r(e)}a.done?t(s):Promise.resolve(s).then(n,o)}function S(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function u(e){Z(i,n,o,u,a,"next",e)}function a(e){Z(i,n,o,u,a,"throw",e)}u(void 0)}))}}var T=function(){return Promise.all([o.e(7874),o.e(8351)]).then(o.bind(o,2709))},G=function(){return Promise.all([o.e(7874),o.e(7418)]).then(o.bind(o,71933))};i.ZP.use(d.Z);var B,z=document.title,H=new d.Z({mode:"history",base:(0,p.generateUrl)(""),linkActiveClass:"active",routes:[{path:"/:index(index.php/)?settings/users",component:T,props:!0,name:"users",children:[{path:":selectedGroup",name:"group",component:T}]},{path:"/:index(index.php/)?settings/apps",component:G,props:!0,name:"apps",meta:{title:function(){return t("settings","Your apps")}},children:[{path:":category",name:"apps-category",meta:{title:(B=S(regeneratorRuntime.mark((function e(r){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if("apps"!==r.name){e.next=4;break}return e.abrupt("return",t("settings","Your apps"));case 4:if(!f.J[r.params.category]){e.next=6;break}return e.abrupt("return",f.J[r.params.category]);case 6:return e.next=8,N.dispatch("getCategories");case 8:if(!(n=N.getters.getCategoryById(r.params.category)).displayName){e.next=11;break}return e.abrupt("return",n.displayName);case 11:case"end":return e.stop()}}),e)}))),function(e){return B.apply(this,arguments)})},component:G,children:[{path:":id",name:"apps-details",component:G}]}]}]});H.afterEach(function(){var e=S(regeneratorRuntime.mark((function e(t){var r,n,o;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,null===(r=(n=t.meta).title)||void 0===r?void 0:r.call(n,t);case 2:o=e.sent,document.title=o?"".concat(o," - ").concat(z):z;case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}());var q=H;i.ZP.use(u.default,{defaultHtml:!1}),(0,a.Z)(N,q),o.nc=btoa(OC.requestToken),i.ZP.prototype.t=t,i.ZP.prototype.n=n,i.ZP.prototype.OC=OC,i.ZP.prototype.OCA=OCA,i.ZP.prototype.oc_userconfig=oc_userconfig,new i.ZP({router:q,store:N,render:function(e){return e(c)}}).$mount("#content")},81490:function(e){e.exports="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTYiIHdpZHRoPSIxNiI+CiAgPHBhdGggZD0iTTE0IDEyLjNMMTIuMyAxNCA4IDkuNyAzLjcgMTQgMiAxMi4zIDYuMyA4IDIgMy43IDMuNyAyIDggNi4zIDEyLjMgMiAxNCAzLjcgOS43IDh6Ii8+Cjwvc3ZnPgo="},90888:function(e){e.exports="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTYiIHdpZHRoPSIxNiI+CiAgPHBhdGggZD0iTTE0IDEyLjNMMTIuMyAxNCA4IDkuNyAzLjcgMTQgMiAxMi4zIDYuMyA4IDIgMy43IDMuNyAyIDggNi4zIDEyLjMgMiAxNCAzLjcgOS43IDh6IiBzdHlsZT0iZmlsbC1vcGFjaXR5OjE7ZmlsbDojZmZmZmZmIi8+Cjwvc3ZnPgo="}},u={};function a(e){var t=u[e];if(void 0!==t)return t.exports;var r=u[e]={id:e,loaded:!1,exports:{}};return i[e].call(r.exports,r,r.exports,a),r.loaded=!0,r.exports}a.m=i,a.amdD=function(){throw new Error("define cannot be used indirect")},a.amdO={},e=[],a.O=function(t,r,n,o){if(!r){var i=1/0;for(d=0;d<e.length;d++){r=e[d][0],n=e[d][1],o=e[d][2];for(var u=!0,s=0;s<r.length;s++)(!1&o||i>=o)&&Object.keys(a.O).every((function(e){return a.O[e](r[s])}))?r.splice(s--,1):(u=!1,o<i&&(i=o));if(u){e.splice(d--,1);var c=n();void 0!==c&&(t=c)}}return t}o=o||0;for(var d=e.length;d>0&&e[d-1][2]>o;d--)e[d]=e[d-1];e[d]=[r,n,o]},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,{a:t}),t},a.d=function(e,t){for(var r in t)a.o(t,r)&&!a.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},a.f={},a.e=function(e){return Promise.all(Object.keys(a.f).reduce((function(t,r){return a.f[r](e,t),t}),[]))},a.u=function(e){return{7418:"settings-apps-view",8351:"settings-users"}[e]+"-"+e+".js?v="+{7418:"827ab69edc8cdf6aa5a4",8351:"5bbb5adb47591ba69511"}[e]},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r={},o="nextcloud:",a.l=function(e,t,n,i){if(r[e])r[e].push(t);else{var u,s;if(void 0!==n)for(var c=document.getElementsByTagName("script"),d=0;d<c.length;d++){var p=c[d];if(p.getAttribute("src")==e||p.getAttribute("data-webpack")==o+n){u=p;break}}u||(s=!0,(u=document.createElement("script")).charset="utf-8",u.timeout=120,a.nc&&u.setAttribute("nonce",a.nc),u.setAttribute("data-webpack",o+n),u.src=e),r[e]=[t];var f=function(t,n){u.onerror=u.onload=null,clearTimeout(l);var o=r[e];if(delete r[e],u.parentNode&&u.parentNode.removeChild(u),o&&o.forEach((function(e){return e(n)})),t)return t(n)},l=setTimeout(f.bind(null,void 0,{type:"timeout",target:u}),12e4);u.onerror=f.bind(null,u.onerror),u.onload=f.bind(null,u.onload),s&&document.head.appendChild(u)}},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},a.j=8562,function(){var e;a.g.importScripts&&(e=a.g.location+"");var t=a.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");r.length&&(e=r[r.length-1].src)}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),a.p=e}(),function(){a.b=document.baseURI||self.location.href;var e={8562:0};a.f.j=function(t,r){var n=a.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise((function(r,o){n=e[t]=[r,o]}));r.push(n[2]=o);var i=a.p+a.u(t),u=new Error;a.l(i,(function(r){if(a.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),i=r&&r.target&&r.target.src;u.message="Loading chunk "+t+" failed.\n("+o+": "+i+")",u.name="ChunkLoadError",u.type=o,u.request=i,n[1](u)}}),"chunk-"+t,t)}},a.O.j=function(t){return 0===e[t]};var t=function(t,r){var n,o,i=r[0],u=r[1],s=r[2],c=0;if(i.some((function(t){return 0!==e[t]}))){for(n in u)a.o(u,n)&&(a.m[n]=u[n]);if(s)var d=s(a)}for(t&&t(r);c<i.length;c++)o=i[c],a.o(e,o)&&e[o]&&e[o][0](),e[o]=0;return a.O(d)},r=self.webpackChunknextcloud=self.webpackChunknextcloud||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))}(),a.nc=void 0;var s=a.O(void 0,[7874],(function(){return a(78778)}));s=a.O(s)}(); -//# sourceMappingURL=settings-vue-settings-apps-users-management.js.map?v=320b024828e38aacd484
\ No newline at end of file +!function(){"use strict";var e,r,o,i={92652:function(e,t,r){r.d(t,{J:function(){return o}});var n=r(9944),o=Object.freeze({enabled:(0,n.translate)("settings","Active apps"),disabled:(0,n.translate)("settings","Disabled apps"),updates:(0,n.translate)("settings","Updates"),"app-bundles":(0,n.translate)("settings","App bundles"),featured:(0,n.translate)("settings","Featured apps")})},78778:function(e,r,o){var i=o(20144),u=o(34741),a=o(83678),s={name:"App",beforeMount:function(){null!==document.getElementById("serverData")&&this.$store.commit("setServerData",JSON.parse(document.getElementById("serverData").dataset.server))}},c=(0,o(51900).Z)(s,(function(){var e=this.$createElement;return(this._self._c||e)("router-view")}),[],!1,null,null,null).exports,d=o(78345),p=o(79753),f=o(92652),l=o(20629),m=o(4820),g=o(10128),h=(o(65509),function(e){return e.replace(/\/$/,"")}),v=function(){return(0,g.confirmPassword)()},A=function(e,t){return m.default.get(h(e),t)},b=function(e,t){return m.default.post(h(e),t)},I=function(e,t){return m.default.put(h(e),t)},y=function(e,t){return m.default.delete(h(e),{params:t})},U=(0,o(17499).IY)().setApp("settings").detectUser().build(),P=function(e,t){return 1===t?e.sort((function(e,t){return e.usercount-e.disabled<t.usercount-t.disabled})):e.sort((function(e,t){return e.name.localeCompare(t.name)}))},L={id:"",name:"",usercount:0,disabled:0,canAdd:!0,canRemove:!0},C={appendUsers:function(e,t){var r=e.users.concat(Object.keys(t).map((function(e){return t[e]})));e.usersOffset+=e.usersLimit,e.users=r},setPasswordPolicyMinLength:function(e,t){e.minPasswordLength=""!==t?t:0},initGroups:function(e,t){var r=t.groups,n=t.orderBy,o=t.userCount;e.groups=r.map((function(e){return Object.assign({},L,e)})),e.orderBy=n,e.userCount=o,e.groups=P(e.groups,e.orderBy)},addGroup:function(e,t){var r=t.gid,n=t.displayName;try{if(void 0!==e.groups.find((function(e){return e.id===r})))return;var o=Object.assign({},L,{id:r,name:n});e.groups.push(o),e.groups=P(e.groups,e.orderBy)}catch(e){console.error("Can't create group",e)}},renameGroup:function(e,t){var r=t.gid,n=t.displayName,o=e.groups.findIndex((function(e){return e.id===r}));if(o>=0){var i=e.groups[o];i.name=n,e.groups.splice(o,1,i),e.groups=P(e.groups,e.orderBy)}},removeGroup:function(e,t){var r=e.groups.findIndex((function(e){return e.id===t}));r>=0&&e.groups.splice(r,1)},addUserGroup:function(e,t){var r=t.userid,n=t.gid,o=e.groups.find((function(e){return e.id===n})),i=e.users.find((function(e){return e.id===r}));o&&i.enabled&&e.userCount>0&&o.usercount++,i.groups.push(n),e.groups=P(e.groups,e.orderBy)},removeUserGroup:function(e,t){var r=t.userid,n=t.gid,o=e.groups.find((function(e){return e.id===n})),i=e.users.find((function(e){return e.id===r}));o&&i.enabled&&e.userCount>0&&o.usercount--;var u=i.groups;u.splice(u.indexOf(n),1),e.groups=P(e.groups,e.orderBy)},addUserSubAdmin:function(e,t){var r=t.userid,n=t.gid;e.users.find((function(e){return e.id===r})).subadmin.push(n)},removeUserSubAdmin:function(e,t){var r=t.userid,n=t.gid,o=e.users.find((function(e){return e.id===r})).subadmin;o.splice(o.indexOf(n),1)},deleteUser:function(e,t){var r=e.users.findIndex((function(e){return e.id===t}));this.commit("updateUserCounts",{user:e.users[r],actionType:"remove"}),e.users.splice(r,1)},addUserData:function(e,t){var r=t.data.ocs.data;e.users.push(r),this.commit("updateUserCounts",{user:r,actionType:"create"})},enableDisableUser:function(e,t){var r=t.userid,n=t.enabled,o=e.users.find((function(e){return e.id===r}));o.enabled=n,this.commit("updateUserCounts",{user:o,actionType:n?"enable":"disable"})},updateUserCounts:function(e,t){var r=t.user,n=t.actionType,o=e.groups.find((function(e){return"disabled"===e.id}));switch(n){case"enable":case"disable":o.usercount+=r.enabled?-1:1,e.userCount+=r.enabled?1:-1,r.groups.forEach((function(t){e.groups.find((function(e){return e.id===t})).disabled+=r.enabled?-1:1}));break;case"create":e.userCount++,r.groups.forEach((function(t){e.groups.find((function(e){return e.id===t})).usercount++}));break;case"remove":r.enabled?(e.userCount--,r.groups.forEach((function(t){e.groups.find((function(e){return e.id===t})).usercount--}))):(o.usercount--,r.groups.forEach((function(t){e.groups.find((function(e){return e.id===t})).disabled--})));break;default:U.error("Unknown action type in updateUserCounts: '".concat(n,"'"))}},setUserData:function(e,t){var r=t.userid,n=t.key,o=t.value;if("quota"===n){var i=OC.Util.computerFileSize(o);e.users.find((function(e){return e.id===r}))[n][n]=null!==i?i:o}else e.users.find((function(e){return e.id===r}))[n]=o},resetUsers:function(e){e.users=[],e.usersOffset=0}},w=m.default.CancelToken,E=null,O={state:{users:[],groups:[],orderBy:1,minPasswordLength:0,usersOffset:0,usersLimit:25,userCount:0},mutations:C,getters:{getUsers:function(e){return e.users},getGroups:function(e){return e.groups},getSubadminGroups:function(e){return e.groups.filter((function(e){return"admin"!==e.id&&"disabled"!==e.id}))},getPasswordPolicyMinLength:function(e){return e.minPasswordLength},getUsersOffset:function(e){return e.usersOffset},getUsersLimit:function(e){return e.usersLimit},getUserCount:function(e){return e.userCount}},actions:{getUsers:function(e,t){var r=t.offset,n=t.limit,o=t.search,i=t.group;return E&&E.cancel("Operation canceled by another search request."),E=w.source(),o="string"==typeof o?o:"",""!==(i="string"==typeof i?i:"")?A((0,p.generateOcsUrl)("cloud/groups/{group}/users/details?offset={offset}&limit={limit}&search={search}",{group:encodeURIComponent(i),offset:r,limit:n,search:o}),{cancelToken:E.token}).then((function(t){var r=Object.keys(t.data.ocs.data.users).length;return r>0&&e.commit("appendUsers",t.data.ocs.data.users),r})).catch((function(t){m.default.isCancel(t)||e.commit("API_FAILURE",t)})):A((0,p.generateOcsUrl)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:r,limit:n,search:o}),{cancelToken:E.token}).then((function(t){var r=Object.keys(t.data.ocs.data.users).length;return r>0&&e.commit("appendUsers",t.data.ocs.data.users),r})).catch((function(t){m.default.isCancel(t)||e.commit("API_FAILURE",t)}))},getGroups:function(e,t){var r=t.offset,n=t.limit,o=t.search;o="string"==typeof o?o:"";var i=-1===n?"":"&limit=".concat(n);return A((0,p.generateOcsUrl)("cloud/groups?offset={offset}&search={search}",{offset:r,search:o})+i).then((function(t){return Object.keys(t.data.ocs.data.groups).length>0&&(t.data.ocs.data.groups.forEach((function(t){e.commit("addGroup",{gid:t,displayName:t})})),!0)})).catch((function(t){return e.commit("API_FAILURE",t)}))},getUsersFromList:function(e,t){var r=t.offset,n=t.limit,o=t.search;return o="string"==typeof o?o:"",A((0,p.generateOcsUrl)("cloud/users/details?offset={offset}&limit={limit}&search={search}",{offset:r,limit:n,search:o})).then((function(t){return Object.keys(t.data.ocs.data.users).length>0&&(e.commit("appendUsers",t.data.ocs.data.users),!0)})).catch((function(t){return e.commit("API_FAILURE",t)}))},getUsersFromGroup:function(e,t){var r=t.groupid,n=t.offset,o=t.limit;return A((0,p.generateOcsUrl)("cloud/users/{groupId}/details?offset={offset}&limit={limit}",{groupId:encodeURIComponent(r),offset:n,limit:o})).then((function(t){return e.commit("getUsersFromList",t.data.ocs.data.users)})).catch((function(t){return e.commit("API_FAILURE",t)}))},getPasswordPolicyMinLength:function(e){return!(!OC.getCapabilities().password_policy||!OC.getCapabilities().password_policy.minLength)&&(e.commit("setPasswordPolicyMinLength",OC.getCapabilities().password_policy.minLength),OC.getCapabilities().password_policy.minLength)},addGroup:function(e,t){return v().then((function(r){return b((0,p.generateOcsUrl)("cloud/groups"),{groupid:t}).then((function(r){return e.commit("addGroup",{gid:t,displayName:t}),{gid:t,displayName:t}})).catch((function(e){throw e}))})).catch((function(r){throw e.commit("API_FAILURE",{gid:t,error:r}),r}))},renameGroup:function(e,t){var r=t.groupid,n=t.displayName;return v().then((function(t){return I((0,p.generateOcsUrl)("cloud/groups/{groupId}",{groupId:encodeURIComponent(r)}),{key:"displayname",value:n}).then((function(t){return e.commit("renameGroup",{gid:r,displayName:n}),{groupid:r,displayName:n}})).catch((function(e){throw e}))})).catch((function(t){throw e.commit("API_FAILURE",{groupid:r,error:t}),t}))},removeGroup:function(e,t){return v().then((function(r){return y((0,p.generateOcsUrl)("cloud/groups/{groupId}",{groupId:encodeURIComponent(t)})).then((function(r){return e.commit("removeGroup",t)})).catch((function(e){throw e}))})).catch((function(r){return e.commit("API_FAILURE",{gid:t,error:r})}))},addUserGroup:function(e,t){var r=t.userid,n=t.gid;return v().then((function(t){return b((0,p.generateOcsUrl)("cloud/users/{userid}/groups",{userid:r}),{groupid:n}).then((function(t){return e.commit("addUserGroup",{userid:r,gid:n})})).catch((function(e){throw e}))})).catch((function(t){return e.commit("API_FAILURE",{userid:r,error:t})}))},removeUserGroup:function(e,t){var r=t.userid,n=t.gid;return v().then((function(t){return y((0,p.generateOcsUrl)("cloud/users/{userid}/groups",{userid:r}),{groupid:n}).then((function(t){return e.commit("removeUserGroup",{userid:r,gid:n})})).catch((function(e){throw e}))})).catch((function(t){throw e.commit("API_FAILURE",{userid:r,error:t}),t}))},addUserSubAdmin:function(e,t){var r=t.userid,n=t.gid;return v().then((function(t){return b((0,p.generateOcsUrl)("cloud/users/{userid}/subadmins",{userid:r}),{groupid:n}).then((function(t){return e.commit("addUserSubAdmin",{userid:r,gid:n})})).catch((function(e){throw e}))})).catch((function(t){return e.commit("API_FAILURE",{userid:r,error:t})}))},removeUserSubAdmin:function(e,t){var r=t.userid,n=t.gid;return v().then((function(t){return y((0,p.generateOcsUrl)("cloud/users/{userid}/subadmins",{userid:r}),{groupid:n}).then((function(t){return e.commit("removeUserSubAdmin",{userid:r,gid:n})})).catch((function(e){throw e}))})).catch((function(t){return e.commit("API_FAILURE",{userid:r,error:t})}))},wipeUserDevices:function(e,t){return v().then((function(e){return b((0,p.generateOcsUrl)("cloud/users/{userid}/wipe",{userid:t})).catch((function(e){throw e}))})).catch((function(r){return e.commit("API_FAILURE",{userid:t,error:r})}))},deleteUser:function(e,t){return v().then((function(r){return y((0,p.generateOcsUrl)("cloud/users/{userid}",{userid:t})).then((function(r){return e.commit("deleteUser",t)})).catch((function(e){throw e}))})).catch((function(r){return e.commit("API_FAILURE",{userid:t,error:r})}))},addUser:function(e,t){var r=e.commit,n=e.dispatch,o=t.userid,i=t.password,u=t.displayName,a=t.email,s=t.groups,c=t.subadmin,d=t.quota,f=t.language;return v().then((function(e){return b((0,p.generateOcsUrl)("cloud/users"),{userid:o,password:i,displayName:u,email:a,groups:s,subadmin:c,quota:d,language:f}).then((function(e){return n("addUserData",o||e.data.ocs.data.id)})).catch((function(e){throw e}))})).catch((function(e){throw r("API_FAILURE",{userid:o,error:e}),e}))},addUserData:function(e,t){return v().then((function(r){return A((0,p.generateOcsUrl)("cloud/users/{userid}",{userid:t})).then((function(t){return e.commit("addUserData",t)})).catch((function(e){throw e}))})).catch((function(r){return e.commit("API_FAILURE",{userid:t,error:r})}))},enableDisableUser:function(e,t){var r=t.userid,n=t.enabled,o=void 0===n||n,i=o?"enable":"disable";return v().then((function(t){return I((0,p.generateOcsUrl)("cloud/users/{userid}/{userStatus}",{userid:r,userStatus:i})).then((function(t){return e.commit("enableDisableUser",{userid:r,enabled:o})})).catch((function(e){throw e}))})).catch((function(t){return e.commit("API_FAILURE",{userid:r,error:t})}))},setUserData:function(e,t){var r=t.userid,n=t.key,o=t.value,i=["email","displayname"];return-1!==["email","language","quota","displayname","password"].indexOf(n)&&"string"==typeof o&&(-1===i.indexOf(n)&&o.length>0||-1!==i.indexOf(n))?v().then((function(t){return I((0,p.generateOcsUrl)("cloud/users/{userid}",{userid:r}),{key:n,value:o}).then((function(t){return e.commit("setUserData",{userid:r,key:n,value:o})})).catch((function(e){throw e}))})).catch((function(t){return e.commit("API_FAILURE",{userid:r,error:t})})):Promise.reject(new Error("Invalid request data"))},sendWelcomeMail:function(e,t){return v().then((function(e){return b((0,p.generateOcsUrl)("cloud/users/{userid}/welcome",{userid:t})).then((function(e){return!0})).catch((function(e){throw e}))})).catch((function(r){return e.commit("API_FAILURE",{userid:t,error:r})}))}}},_=o(26932);function R(e,t,r,n,o,i,u){try{var a=e[i](u),s=a.value}catch(e){return void r(e)}a.done?t(s):Promise.resolve(s).then(n,o)}function x(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function u(e){R(i,n,o,u,a,"next",e)}function a(e){R(i,n,o,u,a,"throw",e)}u(void 0)}))}}o(36144);var k={APPS_API_FAILURE:function(e,r){(0,_.x2)(t("settings","An error occurred during the request. Unable to proceed.")+"<br>"+r.error.response.data.data.message,{isHTML:!0}),console.error(e,r)},initCategories:function(e,t){var r=t.categories,n=t.updateCount;e.categories=r,e.updateCount=n},updateCategories:function(e,t){e.gettingCategoriesPromise=t},setUpdateCount:function(e,t){e.updateCount=t},addCategory:function(e,t){e.categories.push(t)},appendCategories:function(e,t){e.categories=t},setAllApps:function(e,t){e.apps=t},setError:function(e,t){var r=t.appId,n=t.error;Array.isArray(r)||(r=[r]),r.forEach((function(t){e.apps.find((function(e){return e.id===t})).error=n}))},clearError:function(e,t){var r=t.appId;t.error,e.apps.find((function(e){return e.id===r})).error=null},enableApp:function(e,t){var r=t.appId,n=t.groups,o=e.apps.find((function(e){return e.id===r}));o.active=!0,o.groups=n},disableApp:function(e,t){var r=e.apps.find((function(e){return e.id===t}));r.active=!1,r.groups=[],r.removable&&(r.canUnInstall=!0)},uninstallApp:function(e,t){e.apps.find((function(e){return e.id===t})).active=!1,e.apps.find((function(e){return e.id===t})).groups=[],e.apps.find((function(e){return e.id===t})).needsDownload=!0,e.apps.find((function(e){return e.id===t})).installed=!1,e.apps.find((function(e){return e.id===t})).canUnInstall=!1,e.apps.find((function(e){return e.id===t})).canInstall=!0},updateApp:function(e,t){var r=e.apps.find((function(e){return e.id===t})),n=r.update;r.update=null,r.version=n,e.updateCount--},resetApps:function(e){e.apps=[]},reset:function(e){e.apps=[],e.categories=[],e.updateCount=0},startLoading:function(e,t){Array.isArray(t)?t.forEach((function(t){i.ZP.set(e.loading,t,!0)})):i.ZP.set(e.loading,t,!0)},stopLoading:function(e,t){Array.isArray(t)?t.forEach((function(t){i.ZP.set(e.loading,t,!1)})):i.ZP.set(e.loading,t,!1)}},D={enableApp:function(e,r){var n,o=r.appId,i=r.groups;return n=Array.isArray(o)?o:[o],v().then((function(r){return e.commit("startLoading",n),e.commit("startLoading","install"),b((0,p.generateUrl)("settings/apps/enable"),{appIds:n,groups:i}).then((function(r){return e.commit("stopLoading",n),e.commit("stopLoading","install"),n.forEach((function(t){e.commit("enableApp",{appId:t,groups:i})})),A((0,p.generateUrl)("apps/files")).then((function(){r.data.update_required&&((0,_.JQ)(t("settings","The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds."),{onClick:function(){return window.location.reload()},close:!1}),setTimeout((function(){location.reload()}),5e3))})).catch((function(){Array.isArray(o)||e.commit("setError",{appId:n,error:t("settings","Error: This app cannot be enabled because it makes the server unstable")})}))})).catch((function(t){e.commit("stopLoading",n),e.commit("stopLoading","install"),e.commit("setError",{appId:n,error:t.response.data.data.message}),e.commit("APPS_API_FAILURE",{appId:o,error:t})}))})).catch((function(t){return e.commit("API_FAILURE",{appId:o,error:t})}))},forceEnableApp:function(e,t){var r,n=t.appId;return t.groups,r=Array.isArray(n)?n:[n],v().then((function(){return e.commit("startLoading",r),e.commit("startLoading","install"),b((0,p.generateUrl)("settings/apps/force"),{appId:n}).then((function(e){location.reload()})).catch((function(t){e.commit("stopLoading",r),e.commit("stopLoading","install"),e.commit("setError",{appId:r,error:t.response.data.data.message}),e.commit("APPS_API_FAILURE",{appId:n,error:t})}))})).catch((function(t){return e.commit("API_FAILURE",{appId:n,error:t})}))},disableApp:function(e,t){var r,n=t.appId;return r=Array.isArray(n)?n:[n],v().then((function(t){return e.commit("startLoading",r),b((0,p.generateUrl)("settings/apps/disable"),{appIds:r}).then((function(t){return e.commit("stopLoading",r),r.forEach((function(t){e.commit("disableApp",t)})),!0})).catch((function(t){e.commit("stopLoading",r),e.commit("APPS_API_FAILURE",{appId:n,error:t})}))})).catch((function(t){return e.commit("API_FAILURE",{appId:n,error:t})}))},uninstallApp:function(e,t){var r=t.appId;return v().then((function(t){return e.commit("startLoading",r),A((0,p.generateUrl)("settings/apps/uninstall/".concat(r))).then((function(t){return e.commit("stopLoading",r),e.commit("uninstallApp",r),!0})).catch((function(t){e.commit("stopLoading",r),e.commit("APPS_API_FAILURE",{appId:r,error:t})}))})).catch((function(t){return e.commit("API_FAILURE",{appId:r,error:t})}))},updateApp:function(e,t){var r=t.appId;return v().then((function(t){return e.commit("startLoading",r),e.commit("startLoading","install"),A((0,p.generateUrl)("settings/apps/update/".concat(r))).then((function(t){return e.commit("stopLoading","install"),e.commit("stopLoading",r),e.commit("updateApp",r),!0})).catch((function(t){e.commit("stopLoading",r),e.commit("stopLoading","install"),e.commit("APPS_API_FAILURE",{appId:r,error:t})}))})).catch((function(t){return e.commit("API_FAILURE",{appId:r,error:t})}))},getAllApps:function(e){return e.commit("startLoading","list"),A((0,p.generateUrl)("settings/apps/list")).then((function(t){return e.commit("setAllApps",t.data.apps),e.commit("stopLoading","list"),!0})).catch((function(t){return e.commit("API_FAILURE",t)}))},getCategories:function(e){var t=arguments;return x(regeneratorRuntime.mark((function r(){var n,o,i,u;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(n=t.length>1&&void 0!==t[1]?t[1]:{},(void 0===(o=n.shouldRefetchCategories)||!o)&&e.state.gettingCategoriesPromise){r.next=20;break}return e.commit("startLoading","categories"),r.prev=3,i=A((0,p.generateUrl)("settings/apps/categories")),e.commit("updateCategories",i),r.next=8,i;case 8:if(!((u=r.sent).data.length>0)){r.next=13;break}return e.commit("appendCategories",u.data),e.commit("stopLoading","categories"),r.abrupt("return",!0);case 13:return e.commit("stopLoading","categories"),r.abrupt("return",!1);case 17:r.prev=17,r.t0=r.catch(3),e.commit("API_FAILURE",r.t0);case 20:return r.abrupt("return",e.state.gettingCategoriesPromise);case 21:case"end":return r.stop()}}),r,null,[[3,17]])})))()}},F={state:{apps:[],categories:[],updateCount:0,loading:{},loadingList:!1,gettingCategoriesPromise:null},mutations:k,getters:{loading:function(e){return function(t){return e.loading[t]}},getCategories:function(e){return e.categories},getAllApps:function(e){return e.apps},getUpdateCount:function(e){return e.updateCount},getCategoryById:function(e){return function(t){return e.categories.find((function(e){return e.id===t}))}}},actions:D},M={state:{},mutations:{},getters:{},actions:{setAppConfig:function(e,t){var r=t.app,n=t.key,o=t.value;return v().then((function(e){return b((0,p.generateOcsUrl)("apps/provisioning_api/api/v1/config/apps/{app}/{key}",{app:r,key:n}),{value:o}).catch((function(e){throw e}))})).catch((function(t){return e.commit("API_FAILURE",{app:r,key:n,value:o,error:t})}))}}};i.ZP.use(l.ZP);var j={API_FAILURE:function(e,r){try{var n=r.error.response.data.ocs.meta.message;(0,_.x2)(t("settings","An error occurred during the request. Unable to proceed.")+"<br>"+n,{isHTML:!0})}catch(e){(0,_.x2)(t("settings","An error occurred during the request. Unable to proceed."))}console.error(e,r)}},N=new l.yh({modules:{users:O,apps:F,settings:{state:{serverData:{}},mutations:{setServerData:function(e,t){e.serverData=t}},getters:{getServerData:function(e){return e.serverData}},actions:{}},oc:M},strict:!1,mutations:j});function Z(e,t,r,n,o,i,u){try{var a=e[i](u),s=a.value}catch(e){return void r(e)}a.done?t(s):Promise.resolve(s).then(n,o)}function S(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function u(e){Z(i,n,o,u,a,"next",e)}function a(e){Z(i,n,o,u,a,"throw",e)}u(void 0)}))}}var T=function(){return Promise.all([o.e(7874),o.e(8351)]).then(o.bind(o,2709))},G=function(){return Promise.all([o.e(7874),o.e(7418)]).then(o.bind(o,71933))};i.ZP.use(d.Z);var B,z=document.title,H=new d.Z({mode:"history",base:(0,p.generateUrl)(""),linkActiveClass:"active",routes:[{path:"/:index(index.php/)?settings/users",component:T,props:!0,name:"users",meta:{title:function(){return t("settings","Active users")}},children:[{path:":selectedGroup",name:"group",meta:{title:function(e){return"admin"===e.params.selectedGroup?t("settings","Admins"):"disabled"===e.params.selectedGroup?t("settings","Disabled users"):decodeURIComponent(e.params.selectedGroup)}},component:T}]},{path:"/:index(index.php/)?settings/apps",component:G,props:!0,name:"apps",meta:{title:function(){return t("settings","Your apps")}},children:[{path:":category",name:"apps-category",meta:{title:(B=S(regeneratorRuntime.mark((function e(r){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if("apps"!==r.name){e.next=2;break}return e.abrupt("return",t("settings","Your apps"));case 2:if(!f.J[r.params.category]){e.next=4;break}return e.abrupt("return",f.J[r.params.category]);case 4:return e.next=6,N.dispatch("getCategories");case 6:if(!(n=N.getters.getCategoryById(r.params.category)).displayName){e.next=9;break}return e.abrupt("return",n.displayName);case 9:case"end":return e.stop()}}),e)}))),function(e){return B.apply(this,arguments)})},component:G,children:[{path:":id",name:"apps-details",component:G}]}]}]});H.afterEach(function(){var e=S(regeneratorRuntime.mark((function e(t){var r,n,o;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,null===(r=(n=t.meta).title)||void 0===r?void 0:r.call(n,t);case 2:o=e.sent,document.title=o?"".concat(o," - ").concat(z):z;case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}());var q=H;i.ZP.use(u.default,{defaultHtml:!1}),(0,a.Z)(N,q),o.nc=btoa(OC.requestToken),i.ZP.prototype.t=t,i.ZP.prototype.n=n,i.ZP.prototype.OC=OC,i.ZP.prototype.OCA=OCA,i.ZP.prototype.oc_userconfig=oc_userconfig,new i.ZP({router:q,store:N,render:function(e){return e(c)}}).$mount("#content")},81490:function(e){e.exports="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTYiIHdpZHRoPSIxNiI+CiAgPHBhdGggZD0iTTE0IDEyLjNMMTIuMyAxNCA4IDkuNyAzLjcgMTQgMiAxMi4zIDYuMyA4IDIgMy43IDMuNyAyIDggNi4zIDEyLjMgMiAxNCAzLjcgOS43IDh6Ii8+Cjwvc3ZnPgo="},90888:function(e){e.exports="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTYiIHdpZHRoPSIxNiI+CiAgPHBhdGggZD0iTTE0IDEyLjNMMTIuMyAxNCA4IDkuNyAzLjcgMTQgMiAxMi4zIDYuMyA4IDIgMy43IDMuNyAyIDggNi4zIDEyLjMgMiAxNCAzLjcgOS43IDh6IiBzdHlsZT0iZmlsbC1vcGFjaXR5OjE7ZmlsbDojZmZmZmZmIi8+Cjwvc3ZnPgo="}},u={};function a(e){var t=u[e];if(void 0!==t)return t.exports;var r=u[e]={id:e,loaded:!1,exports:{}};return i[e].call(r.exports,r,r.exports,a),r.loaded=!0,r.exports}a.m=i,a.amdD=function(){throw new Error("define cannot be used indirect")},a.amdO={},e=[],a.O=function(t,r,n,o){if(!r){var i=1/0;for(d=0;d<e.length;d++){r=e[d][0],n=e[d][1],o=e[d][2];for(var u=!0,s=0;s<r.length;s++)(!1&o||i>=o)&&Object.keys(a.O).every((function(e){return a.O[e](r[s])}))?r.splice(s--,1):(u=!1,o<i&&(i=o));if(u){e.splice(d--,1);var c=n();void 0!==c&&(t=c)}}return t}o=o||0;for(var d=e.length;d>0&&e[d-1][2]>o;d--)e[d]=e[d-1];e[d]=[r,n,o]},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,{a:t}),t},a.d=function(e,t){for(var r in t)a.o(t,r)&&!a.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},a.f={},a.e=function(e){return Promise.all(Object.keys(a.f).reduce((function(t,r){return a.f[r](e,t),t}),[]))},a.u=function(e){return{7418:"settings-apps-view",8351:"settings-users"}[e]+"-"+e+".js?v="+{7418:"827ab69edc8cdf6aa5a4",8351:"5bbb5adb47591ba69511"}[e]},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r={},o="nextcloud:",a.l=function(e,t,n,i){if(r[e])r[e].push(t);else{var u,s;if(void 0!==n)for(var c=document.getElementsByTagName("script"),d=0;d<c.length;d++){var p=c[d];if(p.getAttribute("src")==e||p.getAttribute("data-webpack")==o+n){u=p;break}}u||(s=!0,(u=document.createElement("script")).charset="utf-8",u.timeout=120,a.nc&&u.setAttribute("nonce",a.nc),u.setAttribute("data-webpack",o+n),u.src=e),r[e]=[t];var f=function(t,n){u.onerror=u.onload=null,clearTimeout(l);var o=r[e];if(delete r[e],u.parentNode&&u.parentNode.removeChild(u),o&&o.forEach((function(e){return e(n)})),t)return t(n)},l=setTimeout(f.bind(null,void 0,{type:"timeout",target:u}),12e4);u.onerror=f.bind(null,u.onerror),u.onload=f.bind(null,u.onload),s&&document.head.appendChild(u)}},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e},a.j=8562,function(){var e;a.g.importScripts&&(e=a.g.location+"");var t=a.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");r.length&&(e=r[r.length-1].src)}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),a.p=e}(),function(){a.b=document.baseURI||self.location.href;var e={8562:0};a.f.j=function(t,r){var n=a.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise((function(r,o){n=e[t]=[r,o]}));r.push(n[2]=o);var i=a.p+a.u(t),u=new Error;a.l(i,(function(r){if(a.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),i=r&&r.target&&r.target.src;u.message="Loading chunk "+t+" failed.\n("+o+": "+i+")",u.name="ChunkLoadError",u.type=o,u.request=i,n[1](u)}}),"chunk-"+t,t)}},a.O.j=function(t){return 0===e[t]};var t=function(t,r){var n,o,i=r[0],u=r[1],s=r[2],c=0;if(i.some((function(t){return 0!==e[t]}))){for(n in u)a.o(u,n)&&(a.m[n]=u[n]);if(s)var d=s(a)}for(t&&t(r);c<i.length;c++)o=i[c],a.o(e,o)&&e[o]&&e[o][0](),e[o]=0;return a.O(d)},r=self.webpackChunknextcloud=self.webpackChunknextcloud||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))}(),a.nc=void 0;var s=a.O(void 0,[7874],(function(){return a(78778)}));s=a.O(s)}(); +//# sourceMappingURL=settings-vue-settings-apps-users-management.js.map?v=8a4e517c64b55e3e87a6
\ No newline at end of file diff --git a/dist/settings-vue-settings-apps-users-management.js.map b/dist/settings-vue-settings-apps-users-management.js.map index c506c277dce..65fd521c6e3 100644 --- a/dist/settings-vue-settings-apps-users-management.js.map +++ b/dist/settings-vue-settings-apps-users-management.js.map @@ -1 +1 @@ -{"version":3,"file":"settings-vue-settings-apps-users-management.js?v=320b024828e38aacd484","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/settings/src/constants/AppsConstants.js","webpack:///nextcloud/apps/settings/src/App.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/App.vue","webpack://nextcloud/./apps/settings/src/App.vue?536c","webpack:///nextcloud/apps/settings/src/App.vue?vue&type=template&id=50420604&","webpack:///nextcloud/apps/settings/src/store/api.js","webpack:///nextcloud/apps/settings/src/logger.js","webpack:///nextcloud/apps/settings/src/store/users.js","webpack:///nextcloud/apps/settings/src/store/apps.js","webpack:///nextcloud/apps/settings/src/store/oc.js","webpack:///nextcloud/apps/settings/src/store/index.js","webpack:///nextcloud/apps/settings/src/store/settings.js","webpack:///nextcloud/apps/settings/src/router.js","webpack:///nextcloud/apps/settings/src/main-apps-users-management.js","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/amd define","webpack:///nextcloud/webpack/runtime/amd options","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t};\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/**\n * @copyright 2022, Julia Kirschenheuter <julia.kirschenheuter@nextcloud.com>\n *\n * @author Julia Kirschenheuter <julia.kirschenheuter@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { translate as t } from '@nextcloud/l10n'\n\n/** Enum of verification constants, according to Apps */\nexport const APPS_SECTION_ENUM = Object.freeze({\n\tenabled: t('settings', 'Active apps'),\n\tdisabled: t('settings', 'Disabled apps'),\n\tupdates: t('settings', 'Updates'),\n\t'app-bundles': t('settings', 'App bundles'),\n\tfeatured: t('settings', 'Featured apps'),\n})\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<router-view />\n</template>\n\n<script>\nexport default {\n\tname: 'App',\n\tbeforeMount() {\n\t\t// importing server data into the store\n\t\tconst serverDataElmt = document.getElementById('serverData')\n\t\tif (serverDataElmt !== null) {\n\t\t\tthis.$store.commit('setServerData', JSON.parse(document.getElementById('serverData').dataset.server))\n\t\t}\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=50420604&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('router-view')}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Sujith Haridasan <sujith.h@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport { confirmPassword } from '@nextcloud/password-confirmation'\nimport '@nextcloud/password-confirmation/dist/style.css'\n\nconst sanitize = function(url) {\n\treturn url.replace(/\\/$/, '') // Remove last url slash\n}\n\nexport default {\n\n\t/**\n\t * This Promise is used to chain a request that require an admin password confirmation\n\t * Since chaining Promise have a very precise behavior concerning catch and then,\n\t * you'll need to be careful when using it.\n\t * e.g\n\t * // store\n\t * action(context) {\n\t * return api.requireAdmin().then((response) => {\n\t * return api.get('url')\n\t * .then((response) => {API success})\n\t * .catch((error) => {API failure});\n\t * }).catch((error) => {requireAdmin failure});\n\t * }\n\t * // vue\n\t * this.$store.dispatch('action').then(() => {always executed})\n\t *\n\t * Since Promise.then().catch().then() will always execute the last then\n\t * this.$store.dispatch('action').then will always be executed\n\t *\n\t * If you want requireAdmin failure to also catch the API request failure\n\t * you will need to throw a new error in the api.get.catch()\n\t *\n\t * e.g\n\t * api.requireAdmin().then((response) => {\n\t * api.get('url')\n\t * .then((response) => {API success})\n\t * .catch((error) => {throw error;});\n\t * }).catch((error) => {requireAdmin OR API failure});\n\t *\n\t * @return {Promise}\n\t */\n\trequireAdmin() {\n\t\treturn confirmPassword()\n\t},\n\tget(url, options) {\n\t\treturn axios.get(sanitize(url), options)\n\t},\n\tpost(url, data) {\n\t\treturn axios.post(sanitize(url), data)\n\t},\n\tpatch(url, data) {\n\t\treturn axios.patch(sanitize(url), data)\n\t},\n\tput(url, data) {\n\t\treturn axios.put(sanitize(url), data)\n\t},\n\tdelete(url, data) {\n\t\treturn axios.delete(sanitize(url), { params: data })\n\t},\n}\n","/**\n * @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('settings')\n\t.detectUser()\n\t.build()\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport api from './api'\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport logger from '../logger'\n\nconst orderGroups = function(groups, orderBy) {\n\t/* const SORT_USERCOUNT = 1;\n\t * const SORT_GROUPNAME = 2;\n\t * https://github.com/nextcloud/server/blob/208e38e84e1a07a49699aa90dc5b7272d24489f0/lib/private/Group/MetaData.php#L34\n\t */\n\tif (orderBy === 1) {\n\t\treturn groups.sort((a, b) => a.usercount - a.disabled < b.usercount - b.disabled)\n\t} else {\n\t\treturn groups.sort((a, b) => a.name.localeCompare(b.name))\n\t}\n}\n\nconst defaults = {\n\tgroup: {\n\t\tid: '',\n\t\tname: '',\n\t\tusercount: 0,\n\t\tdisabled: 0,\n\t\tcanAdd: true,\n\t\tcanRemove: true,\n\t},\n}\n\nconst state = {\n\tusers: [],\n\tgroups: [],\n\torderBy: 1,\n\tminPasswordLength: 0,\n\tusersOffset: 0,\n\tusersLimit: 25,\n\tuserCount: 0,\n}\n\nconst mutations = {\n\tappendUsers(state, usersObj) {\n\t\t// convert obj to array\n\t\tconst users = state.users.concat(Object.keys(usersObj).map(userid => usersObj[userid]))\n\t\tstate.usersOffset += state.usersLimit\n\t\tstate.users = users\n\t},\n\tsetPasswordPolicyMinLength(state, length) {\n\t\tstate.minPasswordLength = length !== '' ? length : 0\n\t},\n\tinitGroups(state, { groups, orderBy, userCount }) {\n\t\tstate.groups = groups.map(group => Object.assign({}, defaults.group, group))\n\t\tstate.orderBy = orderBy\n\t\tstate.userCount = userCount\n\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\n\t},\n\taddGroup(state, { gid, displayName }) {\n\t\ttry {\n\t\t\tif (typeof state.groups.find((group) => group.id === gid) !== 'undefined') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// extend group to default values\n\t\t\tconst group = Object.assign({}, defaults.group, {\n\t\t\t\tid: gid,\n\t\t\t\tname: displayName,\n\t\t\t})\n\t\t\tstate.groups.push(group)\n\t\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\t\t} catch (e) {\n\t\t\tconsole.error('Can\\'t create group', e)\n\t\t}\n\t},\n\trenameGroup(state, { gid, displayName }) {\n\t\tconst groupIndex = state.groups.findIndex(groupSearch => groupSearch.id === gid)\n\t\tif (groupIndex >= 0) {\n\t\t\tconst updatedGroup = state.groups[groupIndex]\n\t\t\tupdatedGroup.name = displayName\n\t\t\tstate.groups.splice(groupIndex, 1, updatedGroup)\n\t\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\t\t}\n\t},\n\tremoveGroup(state, gid) {\n\t\tconst groupIndex = state.groups.findIndex(groupSearch => groupSearch.id === gid)\n\t\tif (groupIndex >= 0) {\n\t\t\tstate.groups.splice(groupIndex, 1)\n\t\t}\n\t},\n\taddUserGroup(state, { userid, gid }) {\n\t\tconst group = state.groups.find(groupSearch => groupSearch.id === gid)\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\t// increase count if user is enabled\n\t\tif (group && user.enabled && state.userCount > 0) {\n\t\t\tgroup.usercount++\n\t\t}\n\t\tconst groups = user.groups\n\t\tgroups.push(gid)\n\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\t},\n\tremoveUserGroup(state, { userid, gid }) {\n\t\tconst group = state.groups.find(groupSearch => groupSearch.id === gid)\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\t// lower count if user is enabled\n\t\tif (group && user.enabled && state.userCount > 0) {\n\t\t\tgroup.usercount--\n\t\t}\n\t\tconst groups = user.groups\n\t\tgroups.splice(groups.indexOf(gid), 1)\n\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\t},\n\taddUserSubAdmin(state, { userid, gid }) {\n\t\tconst groups = state.users.find(user => user.id === userid).subadmin\n\t\tgroups.push(gid)\n\t},\n\tremoveUserSubAdmin(state, { userid, gid }) {\n\t\tconst groups = state.users.find(user => user.id === userid).subadmin\n\t\tgroups.splice(groups.indexOf(gid), 1)\n\t},\n\tdeleteUser(state, userid) {\n\t\tconst userIndex = state.users.findIndex(user => user.id === userid)\n\t\tthis.commit('updateUserCounts', { user: state.users[userIndex], actionType: 'remove' })\n\t\tstate.users.splice(userIndex, 1)\n\t},\n\taddUserData(state, response) {\n\t\tconst user = response.data.ocs.data\n\t\tstate.users.push(user)\n\t\tthis.commit('updateUserCounts', { user, actionType: 'create' })\n\t},\n\tenableDisableUser(state, { userid, enabled }) {\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\tuser.enabled = enabled\n\t\tthis.commit('updateUserCounts', { user, actionType: enabled ? 'enable' : 'disable' })\n\t},\n\t// update active/disabled counts, groups counts\n\tupdateUserCounts(state, { user, actionType }) {\n\t\tconst disabledGroup = state.groups.find(group => group.id === 'disabled')\n\t\tswitch (actionType) {\n\t\tcase 'enable':\n\t\tcase 'disable':\n\t\t\tdisabledGroup.usercount += user.enabled ? -1 : 1 // update Disabled Users count\n\t\t\tstate.userCount += user.enabled ? 1 : -1 // update Active Users count\n\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\tgroup.disabled += user.enabled ? -1 : 1 // update group disabled count\n\t\t\t})\n\t\t\tbreak\n\t\tcase 'create':\n\t\t\tstate.userCount++ // increment Active Users count\n\n\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\tstate.groups\n\t\t\t\t\t.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\t .usercount++ // increment group total count\n\t\t\t})\n\t\t\tbreak\n\t\tcase 'remove':\n\t\t\tif (user.enabled) {\n\t\t\t\tstate.userCount-- // decrement Active Users count\n\t\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\t\tgroup.usercount-- // decrement group total count\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tdisabledGroup.usercount-- // decrement Disabled Users count\n\t\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\t\tgroup.disabled-- // decrement group disabled count\n\t\t\t\t})\n\t\t\t}\n\t\t\tbreak\n\t\tdefault:\n\t\t\tlogger.error(`Unknown action type in updateUserCounts: '${actionType}'`)\n\t\t\t// not throwing error to interrupt execution as this is not fatal\n\t\t}\n\t},\n\tsetUserData(state, { userid, key, value }) {\n\t\tif (key === 'quota') {\n\t\t\tconst humanValue = OC.Util.computerFileSize(value)\n\t\t\tstate.users.find(user => user.id === userid)[key][key] = humanValue !== null ? humanValue : value\n\t\t} else {\n\t\t\tstate.users.find(user => user.id === userid)[key] = value\n\t\t}\n\t},\n\n\t/**\n\t * Reset users list\n\t *\n\t * @param {object} state the store state\n\t */\n\tresetUsers(state) {\n\t\tstate.users = []\n\t\tstate.usersOffset = 0\n\t},\n}\n\nconst getters = {\n\tgetUsers(state) {\n\t\treturn state.users\n\t},\n\tgetGroups(state) {\n\t\treturn state.groups\n\t},\n\tgetSubadminGroups(state) {\n\t\t// Can't be subadmin of admin or disabled\n\t\treturn state.groups.filter(group => group.id !== 'admin' && group.id !== 'disabled')\n\t},\n\tgetPasswordPolicyMinLength(state) {\n\t\treturn state.minPasswordLength\n\t},\n\tgetUsersOffset(state) {\n\t\treturn state.usersOffset\n\t},\n\tgetUsersLimit(state) {\n\t\treturn state.usersLimit\n\t},\n\tgetUserCount(state) {\n\t\treturn state.userCount\n\t},\n}\n\nconst CancelToken = axios.CancelToken\nlet searchRequestCancelSource = null\n\nconst actions = {\n\n\t/**\n\t * Get all users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search Search amongst users\n\t * @param {string} options.group Get users from group\n\t * @return {Promise}\n\t */\n\tgetUsers(context, { offset, limit, search, group }) {\n\t\tif (searchRequestCancelSource) {\n\t\t\tsearchRequestCancelSource.cancel('Operation canceled by another search request.')\n\t\t}\n\t\tsearchRequestCancelSource = CancelToken.source()\n\t\tsearch = typeof search === 'string' ? search : ''\n\t\tgroup = typeof group === 'string' ? group : ''\n\t\tif (group !== '') {\n\t\t\treturn api.get(generateOcsUrl('cloud/groups/{group}/users/details?offset={offset}&limit={limit}&search={search}', { group: encodeURIComponent(group), offset, limit, search }), {\n\t\t\t\tcancelToken: searchRequestCancelSource.token,\n\t\t\t})\n\t\t\t\t.then((response) => {\n\t\t\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\t\t\tif (usersCount > 0) {\n\t\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t\t}\n\t\t\t\t\treturn usersCount\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}\n\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search }), {\n\t\t\tcancelToken: searchRequestCancelSource.token,\n\t\t})\n\t\t\t.then((response) => {\n\t\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\t\tif (usersCount > 0) {\n\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t}\n\t\t\t\treturn usersCount\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t\t}\n\t\t\t})\n\t},\n\n\tgetGroups(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\t\tconst limitParam = limit === -1 ? '' : `&limit=${limit}`\n\t\treturn api.get(generateOcsUrl('cloud/groups?offset={offset}&search={search}', { offset, search }) + limitParam)\n\t\t\t.then((response) => {\n\t\t\t\tif (Object.keys(response.data.ocs.data.groups).length > 0) {\n\t\t\t\t\tresponse.data.ocs.data.groups.forEach(function(group) {\n\t\t\t\t\t\tcontext.commit('addGroup', { gid: group, displayName: group })\n\t\t\t\t\t})\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\t/**\n\t * Get all users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search -\n\t * @return {Promise}\n\t */\n\tgetUsersFromList(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search }))\n\t\t\t.then((response) => {\n\t\t\t\tif (Object.keys(response.data.ocs.data.users).length > 0) {\n\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\t/**\n\t * Get all users with full details from a groupid\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.groupid -\n\t * @return {Promise}\n\t */\n\tgetUsersFromGroup(context, { groupid, offset, limit }) {\n\t\treturn api.get(generateOcsUrl('cloud/users/{groupId}/details?offset={offset}&limit={limit}', { groupId: encodeURIComponent(groupid), offset, limit }))\n\t\t\t.then((response) => context.commit('getUsersFromList', response.data.ocs.data.users))\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\tgetPasswordPolicyMinLength(context) {\n\t\tif (OC.getCapabilities().password_policy && OC.getCapabilities().password_policy.minLength) {\n\t\t\tcontext.commit('setPasswordPolicyMinLength', OC.getCapabilities().password_policy.minLength)\n\t\t\treturn OC.getCapabilities().password_policy.minLength\n\t\t}\n\t\treturn false\n\t},\n\n\t/**\n\t * Add group\n\t *\n\t * @param {object} context store context\n\t * @param {string} gid Group id\n\t * @return {Promise}\n\t */\n\taddGroup(context, gid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/groups'), { groupid: gid })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('addGroup', { gid, displayName: gid })\n\t\t\t\t\treturn { gid, displayName: gid }\n\t\t\t\t})\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { gid, error })\n\t\t\t// let's throw one more time to prevent the view\n\t\t\t// from adding the user to a group that doesn't exists\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Rename group\n\t *\n\t * @param {object} context store context\n\t * @param {string} groupid Group id\n\t * @param {string} displayName Group display name\n\t * @return {Promise}\n\t */\n\trenameGroup(context, { groupid, displayName }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.put(generateOcsUrl('cloud/groups/{groupId}', { groupId: encodeURIComponent(groupid) }), { key: 'displayname', value: displayName })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('renameGroup', { gid: groupid, displayName })\n\t\t\t\t\treturn { groupid, displayName }\n\t\t\t\t})\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { groupid, error })\n\t\t\t// let's throw one more time to prevent the view\n\t\t\t// from renaming the group\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Remove group\n\t *\n\t * @param {object} context store context\n\t * @param {string} gid Group id\n\t * @return {Promise}\n\t */\n\tremoveGroup(context, gid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/groups/{groupId}', { groupId: encodeURIComponent(gid) }))\n\t\t\t\t.then((response) => context.commit('removeGroup', gid))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { gid, error }))\n\t},\n\n\t/**\n\t * Add user to group\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\taddUserGroup(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/groups', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('addUserGroup', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Remove user from group\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\tremoveUserGroup(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}/groups', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('removeUserGroup', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { userid, error })\n\t\t\t// let's throw one more time to prevent\n\t\t\t// the view from removing the user row on failure\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Add user to group admin\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\taddUserSubAdmin(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/subadmins', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('addUserSubAdmin', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Remove user from group admin\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\tremoveUserSubAdmin(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}/subadmins', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('removeUserSubAdmin', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Mark all user devices for remote wipe\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\twipeUserDevices(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/wipe', { userid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Delete a user\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\tdeleteUser(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}', { userid }))\n\t\t\t\t.then((response) => context.commit('deleteUser', userid))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Add a user\n\t *\n\t * @param {object} context store context\n\t * @param {Function} context.commit -\n\t * @param {Function} context.dispatch -\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.password User password\n\t * @param {string} options.displayName User display name\n\t * @param {string} options.email User email\n\t * @param {string} options.groups User groups\n\t * @param {string} options.subadmin User subadmin groups\n\t * @param {string} options.quota User email\n\t * @param {string} options.language User language\n\t * @return {Promise}\n\t */\n\taddUser({ commit, dispatch }, { userid, password, displayName, email, groups, subadmin, quota, language }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users'), { userid, password, displayName, email, groups, subadmin, quota, language })\n\t\t\t\t.then((response) => dispatch('addUserData', userid || response.data.ocs.data.id))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcommit('API_FAILURE', { userid, error })\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Get user data and commit addition\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\taddUserData(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.get(generateOcsUrl('cloud/users/{userid}', { userid }))\n\t\t\t\t.then((response) => context.commit('addUserData', response))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Enable or disable user\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {boolean} options.enabled User enablement status\n\t * @return {Promise}\n\t */\n\tenableDisableUser(context, { userid, enabled = true }) {\n\t\tconst userStatus = enabled ? 'enable' : 'disable'\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.put(generateOcsUrl('cloud/users/{userid}/{userStatus}', { userid, userStatus }))\n\t\t\t\t.then((response) => context.commit('enableDisableUser', { userid, enabled }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Edit user data\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.key User field to edit\n\t * @param {string} options.value Value of the change\n\t * @return {Promise}\n\t */\n\tsetUserData(context, { userid, key, value }) {\n\t\tconst allowedEmpty = ['email', 'displayname']\n\t\tif (['email', 'language', 'quota', 'displayname', 'password'].indexOf(key) !== -1) {\n\t\t\t// We allow empty email or displayname\n\t\t\tif (typeof value === 'string'\n\t\t\t\t&& (\n\t\t\t\t\t(allowedEmpty.indexOf(key) === -1 && value.length > 0)\n\t\t\t\t\t|| allowedEmpty.indexOf(key) !== -1\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn api.requireAdmin().then((response) => {\n\t\t\t\t\treturn api.put(generateOcsUrl('cloud/users/{userid}', { userid }), { key, value })\n\t\t\t\t\t\t.then((response) => context.commit('setUserData', { userid, key, value }))\n\t\t\t\t\t\t.catch((error) => { throw error })\n\t\t\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t\t\t}\n\t\t}\n\t\treturn Promise.reject(new Error('Invalid request data'))\n\t},\n\n\t/**\n\t * Send welcome mail\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\tsendWelcomeMail(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/welcome', { userid }))\n\t\t\t\t.then(response => true)\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport api from './api'\nimport Vue from 'vue'\nimport { generateUrl } from '@nextcloud/router'\nimport { showError, showInfo } from '@nextcloud/dialogs'\nimport '@nextcloud/dialogs/dist/index.css'\n\nconst state = {\n\tapps: [],\n\tcategories: [],\n\tupdateCount: 0,\n\tloading: {},\n\tloadingList: false,\n\tgettingCategoriesPromise: null,\n}\n\nconst mutations = {\n\n\tAPPS_API_FAILURE(state, error) {\n\t\tshowError(t('settings', 'An error occurred during the request. Unable to proceed.') + '<br>' + error.error.response.data.data.message, { isHTML: true })\n\t\tconsole.error(state, error)\n\t},\n\n\tinitCategories(state, { categories, updateCount }) {\n\t\tstate.categories = categories\n\t\tstate.updateCount = updateCount\n\t},\n\n\tupdateCategories(state, categoriesPromise) {\n\t\tstate.gettingCategoriesPromise = categoriesPromise\n\t},\n\n\tsetUpdateCount(state, updateCount) {\n\t\tstate.updateCount = updateCount\n\t},\n\n\taddCategory(state, category) {\n\t\tstate.categories.push(category)\n\t},\n\n\tappendCategories(state, categoriesArray) {\n\t\t// convert obj to array\n\t\tstate.categories = categoriesArray\n\t},\n\n\tsetAllApps(state, apps) {\n\t\tstate.apps = apps\n\t},\n\n\tsetError(state, { appId, error }) {\n\t\tif (!Array.isArray(appId)) {\n\t\t\tappId = [appId]\n\t\t}\n\t\tappId.forEach((_id) => {\n\t\t\tconst app = state.apps.find(app => app.id === _id)\n\t\t\tapp.error = error\n\t\t})\n\t},\n\n\tclearError(state, { appId, error }) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.error = null\n\t},\n\n\tenableApp(state, { appId, groups }) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.active = true\n\t\tapp.groups = groups\n\t},\n\n\tdisableApp(state, appId) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.active = false\n\t\tapp.groups = []\n\t\tif (app.removable) {\n\t\t\tapp.canUnInstall = true\n\t\t}\n\t},\n\n\tuninstallApp(state, appId) {\n\t\tstate.apps.find(app => app.id === appId).active = false\n\t\tstate.apps.find(app => app.id === appId).groups = []\n\t\tstate.apps.find(app => app.id === appId).needsDownload = true\n\t\tstate.apps.find(app => app.id === appId).installed = false\n\t\tstate.apps.find(app => app.id === appId).canUnInstall = false\n\t\tstate.apps.find(app => app.id === appId).canInstall = true\n\t},\n\n\tupdateApp(state, appId) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tconst version = app.update\n\t\tapp.update = null\n\t\tapp.version = version\n\t\tstate.updateCount--\n\n\t},\n\n\tresetApps(state) {\n\t\tstate.apps = []\n\t},\n\treset(state) {\n\t\tstate.apps = []\n\t\tstate.categories = []\n\t\tstate.updateCount = 0\n\t},\n\tstartLoading(state, id) {\n\t\tif (Array.isArray(id)) {\n\t\t\tid.forEach((_id) => {\n\t\t\t\tVue.set(state.loading, _id, true)\n\t\t\t})\n\t\t} else {\n\t\t\tVue.set(state.loading, id, true)\n\t\t}\n\t},\n\tstopLoading(state, id) {\n\t\tif (Array.isArray(id)) {\n\t\t\tid.forEach((_id) => {\n\t\t\t\tVue.set(state.loading, _id, false)\n\t\t\t})\n\t\t} else {\n\t\t\tVue.set(state.loading, id, false)\n\t\t}\n\t},\n}\n\nconst getters = {\n\tloading(state) {\n\t\treturn function(id) {\n\t\t\treturn state.loading[id]\n\t\t}\n\t},\n\tgetCategories(state) {\n\t\treturn state.categories\n\t},\n\tgetAllApps(state) {\n\t\treturn state.apps\n\t},\n\tgetUpdateCount(state) {\n\t\treturn state.updateCount\n\t},\n\tgetCategoryById: (state) => (selectedCategoryId) => {\n\t\treturn state.categories.find((category) => category.id === selectedCategoryId)\n\t},\n}\n\nconst actions = {\n\n\tenableApp(context, { appId, groups }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.post(generateUrl('settings/apps/enable'), { appIds: apps, groups })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tapps.forEach(_appId => {\n\t\t\t\t\t\tcontext.commit('enableApp', { appId: _appId, groups })\n\t\t\t\t\t})\n\n\t\t\t\t\t// check for server health\n\t\t\t\t\treturn api.get(generateUrl('apps/files'))\n\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\tif (response.data.update_required) {\n\t\t\t\t\t\t\t\tshowInfo(\n\t\t\t\t\t\t\t\t\tt(\n\t\t\t\t\t\t\t\t\t\t'settings',\n\t\t\t\t\t\t\t\t\t\t'The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds.'\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tonClick: () => window.location.reload(),\n\t\t\t\t\t\t\t\t\t\tclose: false,\n\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\t\t\tlocation.reload()\n\t\t\t\t\t\t\t\t}, 5000)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch(() => {\n\t\t\t\t\t\t\tif (!Array.isArray(appId)) {\n\t\t\t\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\t\t\t\terror: t('settings', 'Error: This app cannot be enabled because it makes the server unstable'),\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\terror: error.response.data.data.message,\n\t\t\t\t\t})\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tforceEnableApp(context, { appId, groups }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then(() => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.post(generateUrl('settings/apps/force'), { appId })\n\t\t\t\t.then((response) => {\n\t\t\t\t\t// TODO: find a cleaner solution\n\t\t\t\t\tlocation.reload()\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\terror: error.response.data.data.message,\n\t\t\t\t\t})\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tdisableApp(context, { appId }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\treturn api.post(generateUrl('settings/apps/disable'), { appIds: apps })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tapps.forEach(_appId => {\n\t\t\t\t\t\tcontext.commit('disableApp', _appId)\n\t\t\t\t\t})\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tuninstallApp(context, { appId }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', appId)\n\t\t\treturn api.get(generateUrl(`settings/apps/uninstall/${appId}`))\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('uninstallApp', appId)\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\n\tupdateApp(context, { appId }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', appId)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.get(generateUrl(`settings/apps/update/${appId}`))\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('updateApp', appId)\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\n\tgetAllApps(context) {\n\t\tcontext.commit('startLoading', 'list')\n\t\treturn api.get(generateUrl('settings/apps/list'))\n\t\t\t.then((response) => {\n\t\t\t\tcontext.commit('setAllApps', response.data.apps)\n\t\t\t\tcontext.commit('stopLoading', 'list')\n\t\t\t\treturn true\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\tasync getCategories(context, { shouldRefetchCategories = false } = {}) {\n\t\tif (shouldRefetchCategories || !context.state.gettingCategoriesPromise) {\n\t\t\tcontext.commit('startLoading', 'categories')\n\t\t\ttry {\n\t\t\t\tconst categoriesPromise = api.get(generateUrl('settings/apps/categories'))\n\t\t\t\tcontext.commit('updateCategories', categoriesPromise)\n\t\t\t\tconst categoriesPromiseResponse = await categoriesPromise\n\t\t\t\tif (categoriesPromiseResponse.data.length > 0) {\n\t\t\t\t\tcontext.commit('appendCategories', categoriesPromiseResponse.data)\n\t\t\t\t\tcontext.commit('stopLoading', 'categories')\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\tcontext.commit('stopLoading', 'categories')\n\t\t\t\treturn false\n\t\t\t} catch (error) {\n\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t}\n\t\t}\n\t\treturn context.state.gettingCategoriesPromise\n\t},\n\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport api from './api'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nconst state = {}\nconst mutations = {}\nconst getters = {}\nconst actions = {\n\t/**\n\t * Set application config in database\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.app Application name\n\t * @param {boolean} options.key Config key\n\t * @param {boolean} options.value Value to set\n\t * @return {Promise}\n\t */\n\tsetAppConfig(context, { app, key, value }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('apps/provisioning_api/api/v1/config/apps/{app}/{key}', { app, key }), { value })\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { app, key, value, error }))\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport Vuex, { Store } from 'vuex'\nimport users from './users'\nimport apps from './apps'\nimport settings from './settings'\nimport oc from './oc'\nimport { showError } from '@nextcloud/dialogs'\n\nVue.use(Vuex)\n\nconst debug = process.env.NODE_ENV !== 'production'\n\nconst mutations = {\n\tAPI_FAILURE(state, error) {\n\t\ttry {\n\t\t\tconst message = error.error.response.data.ocs.meta.message\n\t\t\tshowError(t('settings', 'An error occurred during the request. Unable to proceed.') + '<br>' + message, { isHTML: true })\n\t\t} catch (e) {\n\t\t\tshowError(t('settings', 'An error occurred during the request. Unable to proceed.'))\n\t\t}\n\t\tconsole.error(state, error)\n\t},\n}\n\nexport default new Store({\n\tmodules: {\n\t\tusers,\n\t\tapps,\n\t\tsettings,\n\t\toc,\n\t},\n\tstrict: debug,\n\n\tmutations,\n})\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst state = {\n\tserverData: {},\n}\nconst mutations = {\n\tsetServerData(state, data) {\n\t\tstate.serverData = data\n\t},\n}\nconst getters = {\n\tgetServerData(state) {\n\t\treturn state.serverData\n\t},\n}\nconst actions = {}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport Router from 'vue-router'\nimport { generateUrl } from '@nextcloud/router'\nimport { APPS_SECTION_ENUM } from './constants/AppsConstants.js'\nimport store from './store/index.js'\n\n// Dynamic loading\nconst Users = () => import(/* webpackChunkName: 'settings-users' */'./views/Users')\nconst Apps = () => import(/* webpackChunkName: 'settings-apps-view' */'./views/Apps')\n\nVue.use(Router)\n\n/*\n * This is the list of routes where the vuejs app will\n * take over php to provide data\n * You need to forward the php routing (routes.php) to\n * the settings-vue template, where the vue-router will\n * ensure the proper route.\n * ⚠️ Routes needs to match the php routes.\n */\nconst baseTitle = document.title\nconst router = new Router({\n\tmode: 'history',\n\t// if index.php is in the url AND we got this far, then it's working:\n\t// let's keep using index.php in the url\n\tbase: generateUrl(''),\n\tlinkActiveClass: 'active',\n\troutes: [\n\t\t{\n\t\t\tpath: '/:index(index.php/)?settings/users',\n\t\t\tcomponent: Users,\n\t\t\tprops: true,\n\t\t\tname: 'users',\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\tpath: ':selectedGroup',\n\t\t\t\t\tname: 'group',\n\t\t\t\t\tcomponent: Users,\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tpath: '/:index(index.php/)?settings/apps',\n\t\t\tcomponent: Apps,\n\t\t\tprops: true,\n\t\t\tname: 'apps',\n\t\t\tmeta: {\n\t\t\t\ttitle: () => {\n\t\t\t\t\treturn t('settings', 'Your apps')\n\t\t\t\t},\n\t\t\t},\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\tpath: ':category',\n\t\t\t\t\tname: 'apps-category',\n\t\t\t\t\tmeta: {\n\t\t\t\t\t\ttitle: async (to) => {\n\t\t\t\t\t\t\tif (to.name === 'apps') {\n\t\t\t\t\t\t\t\treturn t('settings', 'Your apps')\n\t\t\t\t\t\t\t} else if (APPS_SECTION_ENUM[to.params.category]) {\n\t\t\t\t\t\t\t\treturn APPS_SECTION_ENUM[to.params.category]\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tawait store.dispatch('getCategories')\n\t\t\t\t\t\t\tconst category = store.getters.getCategoryById(to.params.category)\n\t\t\t\t\t\t\tif (category.displayName) {\n\t\t\t\t\t\t\t\treturn category.displayName\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tcomponent: Apps,\n\t\t\t\t\tchildren: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpath: ':id',\n\t\t\t\t\t\t\tname: 'apps-details',\n\t\t\t\t\t\t\tcomponent: Apps,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t],\n})\n\nrouter.afterEach(async (to) => {\n\tconst metaTitle = await to.meta.title?.(to)\n\tif (metaTitle) {\n\t\tdocument.title = `${metaTitle} - ${baseTitle}`\n\t} else {\n\t\tdocument.title = baseTitle\n\t}\n})\n\nexport default router\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author rakekniven <mark.ziegler@rakekniven.de>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport VTooltip from 'v-tooltip'\nimport { sync } from 'vuex-router-sync'\n\nimport App from './App.vue'\nimport router from './router'\nimport store from './store'\n\nVue.use(VTooltip, { defaultHtml: false })\n\nsync(store, router)\n\n// CSP config for webpack dynamic chunk loading\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(OC.requestToken)\n\n// bind to window\nVue.prototype.t = t\nVue.prototype.n = n\nVue.prototype.OC = OC\nVue.prototype.OCA = OCA\n// eslint-disable-next-line camelcase\nVue.prototype.oc_userconfig = oc_userconfig\n\nconst app = new Vue({\n\trouter,\n\tstore,\n\trender: h => h(App),\n}).$mount('#content')\n\nexport { app, router, store }\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + {\"7418\":\"settings-apps-view\",\"8351\":\"settings-users\"}[chunkId] + \"-\" + chunkId + \".js?v=\" + {\"7418\":\"827ab69edc8cdf6aa5a4\",\"8351\":\"5bbb5adb47591ba69511\"}[chunkId] + \"\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 8562;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) scriptUrl = scripts[scripts.length - 1].src\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t8562: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], function() { return __webpack_require__(78778); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","APPS_SECTION_ENUM","Object","freeze","enabled","t","disabled","updates","featured","_h","this","$createElement","_self","_c","sanitize","url","replace","confirmPassword","options","axios","data","params","getLoggerBuilder","setApp","detectUser","build","orderGroups","groups","orderBy","sort","a","b","usercount","name","localeCompare","defaults","id","canAdd","canRemove","mutations","appendUsers","state","usersObj","users","concat","keys","map","userid","usersOffset","usersLimit","setPasswordPolicyMinLength","length","minPasswordLength","initGroups","userCount","group","assign","addGroup","gid","displayName","find","push","e","console","error","renameGroup","groupIndex","findIndex","groupSearch","updatedGroup","splice","removeGroup","addUserGroup","user","removeUserGroup","indexOf","addUserSubAdmin","subadmin","removeUserSubAdmin","deleteUser","userIndex","commit","actionType","addUserData","response","ocs","enableDisableUser","updateUserCounts","disabledGroup","forEach","userGroup","logger","setUserData","key","value","humanValue","OC","Util","computerFileSize","resetUsers","CancelToken","searchRequestCancelSource","getters","getUsers","getGroups","getSubadminGroups","filter","getPasswordPolicyMinLength","getUsersOffset","getUsersLimit","getUserCount","actions","context","offset","limit","search","cancel","source","api","generateOcsUrl","encodeURIComponent","cancelToken","token","then","usersCount","catch","limitParam","getUsersFromList","getUsersFromGroup","groupid","groupId","getCapabilities","password_policy","minLength","wipeUserDevices","addUser","dispatch","password","email","quota","language","userStatus","allowedEmpty","Promise","reject","Error","sendWelcomeMail","APPS_API_FAILURE","showError","message","isHTML","initCategories","categories","updateCount","updateCategories","categoriesPromise","gettingCategoriesPromise","setUpdateCount","addCategory","category","appendCategories","categoriesArray","setAllApps","apps","setError","appId","Array","isArray","_id","app","clearError","enableApp","active","disableApp","removable","canUnInstall","uninstallApp","needsDownload","installed","canInstall","updateApp","version","update","resetApps","reset","startLoading","Vue","loading","stopLoading","generateUrl","appIds","_appId","update_required","showInfo","onClick","window","location","reload","close","setTimeout","forceEnableApp","getAllApps","getCategories","shouldRefetchCategories","categoriesPromiseResponse","loadingList","getUpdateCount","getCategoryById","selectedCategoryId","setAppConfig","Vuex","API_FAILURE","meta","Store","modules","settings","serverData","setServerData","getServerData","oc","strict","process","Users","Apps","Router","baseTitle","document","title","router","mode","base","linkActiveClass","routes","path","component","props","children","to","store","afterEach","metaTitle","VTooltip","defaultHtml","sync","__webpack_nonce__","btoa","requestToken","n","OCA","oc_userconfig","render","h","App","$mount","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","loaded","__webpack_modules__","call","m","amdD","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","r","getter","__esModule","d","definition","o","defineProperty","enumerable","get","f","chunkId","all","reduce","promises","u","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","l","done","script","needAttach","scripts","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","bind","type","target","head","appendChild","Symbol","toStringTag","nmd","paths","scriptUrl","importScripts","currentScript","p","baseURI","self","href","installedChunks","installedChunkData","promise","resolve","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file +{"version":3,"file":"settings-vue-settings-apps-users-management.js?v=8a4e517c64b55e3e87a6","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/settings/src/constants/AppsConstants.js","webpack:///nextcloud/apps/settings/src/App.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/settings/src/App.vue","webpack://nextcloud/./apps/settings/src/App.vue?536c","webpack:///nextcloud/apps/settings/src/App.vue?vue&type=template&id=50420604&","webpack:///nextcloud/apps/settings/src/store/api.js","webpack:///nextcloud/apps/settings/src/logger.js","webpack:///nextcloud/apps/settings/src/store/users.js","webpack:///nextcloud/apps/settings/src/store/apps.js","webpack:///nextcloud/apps/settings/src/store/oc.js","webpack:///nextcloud/apps/settings/src/store/index.js","webpack:///nextcloud/apps/settings/src/store/settings.js","webpack:///nextcloud/apps/settings/src/router.js","webpack:///nextcloud/apps/settings/src/main-apps-users-management.js","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/amd define","webpack:///nextcloud/webpack/runtime/amd options","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t};\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/**\n * @copyright 2022, Julia Kirschenheuter <julia.kirschenheuter@nextcloud.com>\n *\n * @author Julia Kirschenheuter <julia.kirschenheuter@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { translate as t } from '@nextcloud/l10n'\n\n/** Enum of verification constants, according to Apps */\nexport const APPS_SECTION_ENUM = Object.freeze({\n\tenabled: t('settings', 'Active apps'),\n\tdisabled: t('settings', 'Disabled apps'),\n\tupdates: t('settings', 'Updates'),\n\t'app-bundles': t('settings', 'App bundles'),\n\tfeatured: t('settings', 'Featured apps'),\n})\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<router-view />\n</template>\n\n<script>\nexport default {\n\tname: 'App',\n\tbeforeMount() {\n\t\t// importing server data into the store\n\t\tconst serverDataElmt = document.getElementById('serverData')\n\t\tif (serverDataElmt !== null) {\n\t\t\tthis.$store.commit('setServerData', JSON.parse(document.getElementById('serverData').dataset.server))\n\t\t}\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=50420604&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('router-view')}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Sujith Haridasan <sujith.h@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport axios from '@nextcloud/axios'\nimport { confirmPassword } from '@nextcloud/password-confirmation'\nimport '@nextcloud/password-confirmation/dist/style.css'\n\nconst sanitize = function(url) {\n\treturn url.replace(/\\/$/, '') // Remove last url slash\n}\n\nexport default {\n\n\t/**\n\t * This Promise is used to chain a request that require an admin password confirmation\n\t * Since chaining Promise have a very precise behavior concerning catch and then,\n\t * you'll need to be careful when using it.\n\t * e.g\n\t * // store\n\t * action(context) {\n\t * return api.requireAdmin().then((response) => {\n\t * return api.get('url')\n\t * .then((response) => {API success})\n\t * .catch((error) => {API failure});\n\t * }).catch((error) => {requireAdmin failure});\n\t * }\n\t * // vue\n\t * this.$store.dispatch('action').then(() => {always executed})\n\t *\n\t * Since Promise.then().catch().then() will always execute the last then\n\t * this.$store.dispatch('action').then will always be executed\n\t *\n\t * If you want requireAdmin failure to also catch the API request failure\n\t * you will need to throw a new error in the api.get.catch()\n\t *\n\t * e.g\n\t * api.requireAdmin().then((response) => {\n\t * api.get('url')\n\t * .then((response) => {API success})\n\t * .catch((error) => {throw error;});\n\t * }).catch((error) => {requireAdmin OR API failure});\n\t *\n\t * @return {Promise}\n\t */\n\trequireAdmin() {\n\t\treturn confirmPassword()\n\t},\n\tget(url, options) {\n\t\treturn axios.get(sanitize(url), options)\n\t},\n\tpost(url, data) {\n\t\treturn axios.post(sanitize(url), data)\n\t},\n\tpatch(url, data) {\n\t\treturn axios.patch(sanitize(url), data)\n\t},\n\tput(url, data) {\n\t\treturn axios.put(sanitize(url), data)\n\t},\n\tdelete(url, data) {\n\t\treturn axios.delete(sanitize(url), { params: data })\n\t},\n}\n","/**\n * @copyright 2020 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('settings')\n\t.detectUser()\n\t.build()\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n * @author Vincent Petry <vincent@nextcloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport api from './api'\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport logger from '../logger'\n\nconst orderGroups = function(groups, orderBy) {\n\t/* const SORT_USERCOUNT = 1;\n\t * const SORT_GROUPNAME = 2;\n\t * https://github.com/nextcloud/server/blob/208e38e84e1a07a49699aa90dc5b7272d24489f0/lib/private/Group/MetaData.php#L34\n\t */\n\tif (orderBy === 1) {\n\t\treturn groups.sort((a, b) => a.usercount - a.disabled < b.usercount - b.disabled)\n\t} else {\n\t\treturn groups.sort((a, b) => a.name.localeCompare(b.name))\n\t}\n}\n\nconst defaults = {\n\tgroup: {\n\t\tid: '',\n\t\tname: '',\n\t\tusercount: 0,\n\t\tdisabled: 0,\n\t\tcanAdd: true,\n\t\tcanRemove: true,\n\t},\n}\n\nconst state = {\n\tusers: [],\n\tgroups: [],\n\torderBy: 1,\n\tminPasswordLength: 0,\n\tusersOffset: 0,\n\tusersLimit: 25,\n\tuserCount: 0,\n}\n\nconst mutations = {\n\tappendUsers(state, usersObj) {\n\t\t// convert obj to array\n\t\tconst users = state.users.concat(Object.keys(usersObj).map(userid => usersObj[userid]))\n\t\tstate.usersOffset += state.usersLimit\n\t\tstate.users = users\n\t},\n\tsetPasswordPolicyMinLength(state, length) {\n\t\tstate.minPasswordLength = length !== '' ? length : 0\n\t},\n\tinitGroups(state, { groups, orderBy, userCount }) {\n\t\tstate.groups = groups.map(group => Object.assign({}, defaults.group, group))\n\t\tstate.orderBy = orderBy\n\t\tstate.userCount = userCount\n\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\n\t},\n\taddGroup(state, { gid, displayName }) {\n\t\ttry {\n\t\t\tif (typeof state.groups.find((group) => group.id === gid) !== 'undefined') {\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// extend group to default values\n\t\t\tconst group = Object.assign({}, defaults.group, {\n\t\t\t\tid: gid,\n\t\t\t\tname: displayName,\n\t\t\t})\n\t\t\tstate.groups.push(group)\n\t\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\t\t} catch (e) {\n\t\t\tconsole.error('Can\\'t create group', e)\n\t\t}\n\t},\n\trenameGroup(state, { gid, displayName }) {\n\t\tconst groupIndex = state.groups.findIndex(groupSearch => groupSearch.id === gid)\n\t\tif (groupIndex >= 0) {\n\t\t\tconst updatedGroup = state.groups[groupIndex]\n\t\t\tupdatedGroup.name = displayName\n\t\t\tstate.groups.splice(groupIndex, 1, updatedGroup)\n\t\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\t\t}\n\t},\n\tremoveGroup(state, gid) {\n\t\tconst groupIndex = state.groups.findIndex(groupSearch => groupSearch.id === gid)\n\t\tif (groupIndex >= 0) {\n\t\t\tstate.groups.splice(groupIndex, 1)\n\t\t}\n\t},\n\taddUserGroup(state, { userid, gid }) {\n\t\tconst group = state.groups.find(groupSearch => groupSearch.id === gid)\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\t// increase count if user is enabled\n\t\tif (group && user.enabled && state.userCount > 0) {\n\t\t\tgroup.usercount++\n\t\t}\n\t\tconst groups = user.groups\n\t\tgroups.push(gid)\n\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\t},\n\tremoveUserGroup(state, { userid, gid }) {\n\t\tconst group = state.groups.find(groupSearch => groupSearch.id === gid)\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\t// lower count if user is enabled\n\t\tif (group && user.enabled && state.userCount > 0) {\n\t\t\tgroup.usercount--\n\t\t}\n\t\tconst groups = user.groups\n\t\tgroups.splice(groups.indexOf(gid), 1)\n\t\tstate.groups = orderGroups(state.groups, state.orderBy)\n\t},\n\taddUserSubAdmin(state, { userid, gid }) {\n\t\tconst groups = state.users.find(user => user.id === userid).subadmin\n\t\tgroups.push(gid)\n\t},\n\tremoveUserSubAdmin(state, { userid, gid }) {\n\t\tconst groups = state.users.find(user => user.id === userid).subadmin\n\t\tgroups.splice(groups.indexOf(gid), 1)\n\t},\n\tdeleteUser(state, userid) {\n\t\tconst userIndex = state.users.findIndex(user => user.id === userid)\n\t\tthis.commit('updateUserCounts', { user: state.users[userIndex], actionType: 'remove' })\n\t\tstate.users.splice(userIndex, 1)\n\t},\n\taddUserData(state, response) {\n\t\tconst user = response.data.ocs.data\n\t\tstate.users.push(user)\n\t\tthis.commit('updateUserCounts', { user, actionType: 'create' })\n\t},\n\tenableDisableUser(state, { userid, enabled }) {\n\t\tconst user = state.users.find(user => user.id === userid)\n\t\tuser.enabled = enabled\n\t\tthis.commit('updateUserCounts', { user, actionType: enabled ? 'enable' : 'disable' })\n\t},\n\t// update active/disabled counts, groups counts\n\tupdateUserCounts(state, { user, actionType }) {\n\t\tconst disabledGroup = state.groups.find(group => group.id === 'disabled')\n\t\tswitch (actionType) {\n\t\tcase 'enable':\n\t\tcase 'disable':\n\t\t\tdisabledGroup.usercount += user.enabled ? -1 : 1 // update Disabled Users count\n\t\t\tstate.userCount += user.enabled ? 1 : -1 // update Active Users count\n\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\tgroup.disabled += user.enabled ? -1 : 1 // update group disabled count\n\t\t\t})\n\t\t\tbreak\n\t\tcase 'create':\n\t\t\tstate.userCount++ // increment Active Users count\n\n\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\tstate.groups\n\t\t\t\t\t.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\t .usercount++ // increment group total count\n\t\t\t})\n\t\t\tbreak\n\t\tcase 'remove':\n\t\t\tif (user.enabled) {\n\t\t\t\tstate.userCount-- // decrement Active Users count\n\t\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\t\tgroup.usercount-- // decrement group total count\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tdisabledGroup.usercount-- // decrement Disabled Users count\n\t\t\t\tuser.groups.forEach(userGroup => {\n\t\t\t\t\tconst group = state.groups.find(groupSearch => groupSearch.id === userGroup)\n\t\t\t\t\tgroup.disabled-- // decrement group disabled count\n\t\t\t\t})\n\t\t\t}\n\t\t\tbreak\n\t\tdefault:\n\t\t\tlogger.error(`Unknown action type in updateUserCounts: '${actionType}'`)\n\t\t\t// not throwing error to interrupt execution as this is not fatal\n\t\t}\n\t},\n\tsetUserData(state, { userid, key, value }) {\n\t\tif (key === 'quota') {\n\t\t\tconst humanValue = OC.Util.computerFileSize(value)\n\t\t\tstate.users.find(user => user.id === userid)[key][key] = humanValue !== null ? humanValue : value\n\t\t} else {\n\t\t\tstate.users.find(user => user.id === userid)[key] = value\n\t\t}\n\t},\n\n\t/**\n\t * Reset users list\n\t *\n\t * @param {object} state the store state\n\t */\n\tresetUsers(state) {\n\t\tstate.users = []\n\t\tstate.usersOffset = 0\n\t},\n}\n\nconst getters = {\n\tgetUsers(state) {\n\t\treturn state.users\n\t},\n\tgetGroups(state) {\n\t\treturn state.groups\n\t},\n\tgetSubadminGroups(state) {\n\t\t// Can't be subadmin of admin or disabled\n\t\treturn state.groups.filter(group => group.id !== 'admin' && group.id !== 'disabled')\n\t},\n\tgetPasswordPolicyMinLength(state) {\n\t\treturn state.minPasswordLength\n\t},\n\tgetUsersOffset(state) {\n\t\treturn state.usersOffset\n\t},\n\tgetUsersLimit(state) {\n\t\treturn state.usersLimit\n\t},\n\tgetUserCount(state) {\n\t\treturn state.userCount\n\t},\n}\n\nconst CancelToken = axios.CancelToken\nlet searchRequestCancelSource = null\n\nconst actions = {\n\n\t/**\n\t * Get all users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search Search amongst users\n\t * @param {string} options.group Get users from group\n\t * @return {Promise}\n\t */\n\tgetUsers(context, { offset, limit, search, group }) {\n\t\tif (searchRequestCancelSource) {\n\t\t\tsearchRequestCancelSource.cancel('Operation canceled by another search request.')\n\t\t}\n\t\tsearchRequestCancelSource = CancelToken.source()\n\t\tsearch = typeof search === 'string' ? search : ''\n\t\tgroup = typeof group === 'string' ? group : ''\n\t\tif (group !== '') {\n\t\t\treturn api.get(generateOcsUrl('cloud/groups/{group}/users/details?offset={offset}&limit={limit}&search={search}', { group: encodeURIComponent(group), offset, limit, search }), {\n\t\t\t\tcancelToken: searchRequestCancelSource.token,\n\t\t\t})\n\t\t\t\t.then((response) => {\n\t\t\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\t\t\tif (usersCount > 0) {\n\t\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t\t}\n\t\t\t\t\treturn usersCount\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}\n\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search }), {\n\t\t\tcancelToken: searchRequestCancelSource.token,\n\t\t})\n\t\t\t.then((response) => {\n\t\t\t\tconst usersCount = Object.keys(response.data.ocs.data.users).length\n\t\t\t\tif (usersCount > 0) {\n\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t}\n\t\t\t\treturn usersCount\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tif (!axios.isCancel(error)) {\n\t\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t\t}\n\t\t\t})\n\t},\n\n\tgetGroups(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\t\tconst limitParam = limit === -1 ? '' : `&limit=${limit}`\n\t\treturn api.get(generateOcsUrl('cloud/groups?offset={offset}&search={search}', { offset, search }) + limitParam)\n\t\t\t.then((response) => {\n\t\t\t\tif (Object.keys(response.data.ocs.data.groups).length > 0) {\n\t\t\t\t\tresponse.data.ocs.data.groups.forEach(function(group) {\n\t\t\t\t\t\tcontext.commit('addGroup', { gid: group, displayName: group })\n\t\t\t\t\t})\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\t/**\n\t * Get all users with full details\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.search -\n\t * @return {Promise}\n\t */\n\tgetUsersFromList(context, { offset, limit, search }) {\n\t\tsearch = typeof search === 'string' ? search : ''\n\t\treturn api.get(generateOcsUrl('cloud/users/details?offset={offset}&limit={limit}&search={search}', { offset, limit, search }))\n\t\t\t.then((response) => {\n\t\t\t\tif (Object.keys(response.data.ocs.data.users).length > 0) {\n\t\t\t\t\tcontext.commit('appendUsers', response.data.ocs.data.users)\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\t/**\n\t * Get all users with full details from a groupid\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {number} options.offset List offset to request\n\t * @param {number} options.limit List number to return from offset\n\t * @param {string} options.groupid -\n\t * @return {Promise}\n\t */\n\tgetUsersFromGroup(context, { groupid, offset, limit }) {\n\t\treturn api.get(generateOcsUrl('cloud/users/{groupId}/details?offset={offset}&limit={limit}', { groupId: encodeURIComponent(groupid), offset, limit }))\n\t\t\t.then((response) => context.commit('getUsersFromList', response.data.ocs.data.users))\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\tgetPasswordPolicyMinLength(context) {\n\t\tif (OC.getCapabilities().password_policy && OC.getCapabilities().password_policy.minLength) {\n\t\t\tcontext.commit('setPasswordPolicyMinLength', OC.getCapabilities().password_policy.minLength)\n\t\t\treturn OC.getCapabilities().password_policy.minLength\n\t\t}\n\t\treturn false\n\t},\n\n\t/**\n\t * Add group\n\t *\n\t * @param {object} context store context\n\t * @param {string} gid Group id\n\t * @return {Promise}\n\t */\n\taddGroup(context, gid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/groups'), { groupid: gid })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('addGroup', { gid, displayName: gid })\n\t\t\t\t\treturn { gid, displayName: gid }\n\t\t\t\t})\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { gid, error })\n\t\t\t// let's throw one more time to prevent the view\n\t\t\t// from adding the user to a group that doesn't exists\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Rename group\n\t *\n\t * @param {object} context store context\n\t * @param {string} groupid Group id\n\t * @param {string} displayName Group display name\n\t * @return {Promise}\n\t */\n\trenameGroup(context, { groupid, displayName }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.put(generateOcsUrl('cloud/groups/{groupId}', { groupId: encodeURIComponent(groupid) }), { key: 'displayname', value: displayName })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('renameGroup', { gid: groupid, displayName })\n\t\t\t\t\treturn { groupid, displayName }\n\t\t\t\t})\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { groupid, error })\n\t\t\t// let's throw one more time to prevent the view\n\t\t\t// from renaming the group\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Remove group\n\t *\n\t * @param {object} context store context\n\t * @param {string} gid Group id\n\t * @return {Promise}\n\t */\n\tremoveGroup(context, gid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/groups/{groupId}', { groupId: encodeURIComponent(gid) }))\n\t\t\t\t.then((response) => context.commit('removeGroup', gid))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { gid, error }))\n\t},\n\n\t/**\n\t * Add user to group\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\taddUserGroup(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/groups', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('addUserGroup', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Remove user from group\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\tremoveUserGroup(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}/groups', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('removeUserGroup', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcontext.commit('API_FAILURE', { userid, error })\n\t\t\t// let's throw one more time to prevent\n\t\t\t// the view from removing the user row on failure\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Add user to group admin\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\taddUserSubAdmin(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/subadmins', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('addUserSubAdmin', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Remove user from group admin\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.gid Group id\n\t * @return {Promise}\n\t */\n\tremoveUserSubAdmin(context, { userid, gid }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}/subadmins', { userid }), { groupid: gid })\n\t\t\t\t.then((response) => context.commit('removeUserSubAdmin', { userid, gid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Mark all user devices for remote wipe\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\twipeUserDevices(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/wipe', { userid }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Delete a user\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\tdeleteUser(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.delete(generateOcsUrl('cloud/users/{userid}', { userid }))\n\t\t\t\t.then((response) => context.commit('deleteUser', userid))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Add a user\n\t *\n\t * @param {object} context store context\n\t * @param {Function} context.commit -\n\t * @param {Function} context.dispatch -\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.password User password\n\t * @param {string} options.displayName User display name\n\t * @param {string} options.email User email\n\t * @param {string} options.groups User groups\n\t * @param {string} options.subadmin User subadmin groups\n\t * @param {string} options.quota User email\n\t * @param {string} options.language User language\n\t * @return {Promise}\n\t */\n\taddUser({ commit, dispatch }, { userid, password, displayName, email, groups, subadmin, quota, language }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users'), { userid, password, displayName, email, groups, subadmin, quota, language })\n\t\t\t\t.then((response) => dispatch('addUserData', userid || response.data.ocs.data.id))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => {\n\t\t\tcommit('API_FAILURE', { userid, error })\n\t\t\tthrow error\n\t\t})\n\t},\n\n\t/**\n\t * Get user data and commit addition\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\taddUserData(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.get(generateOcsUrl('cloud/users/{userid}', { userid }))\n\t\t\t\t.then((response) => context.commit('addUserData', response))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Enable or disable user\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {boolean} options.enabled User enablement status\n\t * @return {Promise}\n\t */\n\tenableDisableUser(context, { userid, enabled = true }) {\n\t\tconst userStatus = enabled ? 'enable' : 'disable'\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.put(generateOcsUrl('cloud/users/{userid}/{userStatus}', { userid, userStatus }))\n\t\t\t\t.then((response) => context.commit('enableDisableUser', { userid, enabled }))\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n\n\t/**\n\t * Edit user data\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.userid User id\n\t * @param {string} options.key User field to edit\n\t * @param {string} options.value Value of the change\n\t * @return {Promise}\n\t */\n\tsetUserData(context, { userid, key, value }) {\n\t\tconst allowedEmpty = ['email', 'displayname']\n\t\tif (['email', 'language', 'quota', 'displayname', 'password'].indexOf(key) !== -1) {\n\t\t\t// We allow empty email or displayname\n\t\t\tif (typeof value === 'string'\n\t\t\t\t&& (\n\t\t\t\t\t(allowedEmpty.indexOf(key) === -1 && value.length > 0)\n\t\t\t\t\t|| allowedEmpty.indexOf(key) !== -1\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn api.requireAdmin().then((response) => {\n\t\t\t\t\treturn api.put(generateOcsUrl('cloud/users/{userid}', { userid }), { key, value })\n\t\t\t\t\t\t.then((response) => context.commit('setUserData', { userid, key, value }))\n\t\t\t\t\t\t.catch((error) => { throw error })\n\t\t\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t\t\t}\n\t\t}\n\t\treturn Promise.reject(new Error('Invalid request data'))\n\t},\n\n\t/**\n\t * Send welcome mail\n\t *\n\t * @param {object} context store context\n\t * @param {string} userid User id\n\t * @return {Promise}\n\t */\n\tsendWelcomeMail(context, userid) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('cloud/users/{userid}/welcome', { userid }))\n\t\t\t\t.then(response => true)\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { userid, error }))\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport api from './api'\nimport Vue from 'vue'\nimport { generateUrl } from '@nextcloud/router'\nimport { showError, showInfo } from '@nextcloud/dialogs'\nimport '@nextcloud/dialogs/dist/index.css'\n\nconst state = {\n\tapps: [],\n\tcategories: [],\n\tupdateCount: 0,\n\tloading: {},\n\tloadingList: false,\n\tgettingCategoriesPromise: null,\n}\n\nconst mutations = {\n\n\tAPPS_API_FAILURE(state, error) {\n\t\tshowError(t('settings', 'An error occurred during the request. Unable to proceed.') + '<br>' + error.error.response.data.data.message, { isHTML: true })\n\t\tconsole.error(state, error)\n\t},\n\n\tinitCategories(state, { categories, updateCount }) {\n\t\tstate.categories = categories\n\t\tstate.updateCount = updateCount\n\t},\n\n\tupdateCategories(state, categoriesPromise) {\n\t\tstate.gettingCategoriesPromise = categoriesPromise\n\t},\n\n\tsetUpdateCount(state, updateCount) {\n\t\tstate.updateCount = updateCount\n\t},\n\n\taddCategory(state, category) {\n\t\tstate.categories.push(category)\n\t},\n\n\tappendCategories(state, categoriesArray) {\n\t\t// convert obj to array\n\t\tstate.categories = categoriesArray\n\t},\n\n\tsetAllApps(state, apps) {\n\t\tstate.apps = apps\n\t},\n\n\tsetError(state, { appId, error }) {\n\t\tif (!Array.isArray(appId)) {\n\t\t\tappId = [appId]\n\t\t}\n\t\tappId.forEach((_id) => {\n\t\t\tconst app = state.apps.find(app => app.id === _id)\n\t\t\tapp.error = error\n\t\t})\n\t},\n\n\tclearError(state, { appId, error }) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.error = null\n\t},\n\n\tenableApp(state, { appId, groups }) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.active = true\n\t\tapp.groups = groups\n\t},\n\n\tdisableApp(state, appId) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tapp.active = false\n\t\tapp.groups = []\n\t\tif (app.removable) {\n\t\t\tapp.canUnInstall = true\n\t\t}\n\t},\n\n\tuninstallApp(state, appId) {\n\t\tstate.apps.find(app => app.id === appId).active = false\n\t\tstate.apps.find(app => app.id === appId).groups = []\n\t\tstate.apps.find(app => app.id === appId).needsDownload = true\n\t\tstate.apps.find(app => app.id === appId).installed = false\n\t\tstate.apps.find(app => app.id === appId).canUnInstall = false\n\t\tstate.apps.find(app => app.id === appId).canInstall = true\n\t},\n\n\tupdateApp(state, appId) {\n\t\tconst app = state.apps.find(app => app.id === appId)\n\t\tconst version = app.update\n\t\tapp.update = null\n\t\tapp.version = version\n\t\tstate.updateCount--\n\n\t},\n\n\tresetApps(state) {\n\t\tstate.apps = []\n\t},\n\treset(state) {\n\t\tstate.apps = []\n\t\tstate.categories = []\n\t\tstate.updateCount = 0\n\t},\n\tstartLoading(state, id) {\n\t\tif (Array.isArray(id)) {\n\t\t\tid.forEach((_id) => {\n\t\t\t\tVue.set(state.loading, _id, true)\n\t\t\t})\n\t\t} else {\n\t\t\tVue.set(state.loading, id, true)\n\t\t}\n\t},\n\tstopLoading(state, id) {\n\t\tif (Array.isArray(id)) {\n\t\t\tid.forEach((_id) => {\n\t\t\t\tVue.set(state.loading, _id, false)\n\t\t\t})\n\t\t} else {\n\t\t\tVue.set(state.loading, id, false)\n\t\t}\n\t},\n}\n\nconst getters = {\n\tloading(state) {\n\t\treturn function(id) {\n\t\t\treturn state.loading[id]\n\t\t}\n\t},\n\tgetCategories(state) {\n\t\treturn state.categories\n\t},\n\tgetAllApps(state) {\n\t\treturn state.apps\n\t},\n\tgetUpdateCount(state) {\n\t\treturn state.updateCount\n\t},\n\tgetCategoryById: (state) => (selectedCategoryId) => {\n\t\treturn state.categories.find((category) => category.id === selectedCategoryId)\n\t},\n}\n\nconst actions = {\n\n\tenableApp(context, { appId, groups }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.post(generateUrl('settings/apps/enable'), { appIds: apps, groups })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tapps.forEach(_appId => {\n\t\t\t\t\t\tcontext.commit('enableApp', { appId: _appId, groups })\n\t\t\t\t\t})\n\n\t\t\t\t\t// check for server health\n\t\t\t\t\treturn api.get(generateUrl('apps/files'))\n\t\t\t\t\t\t.then(() => {\n\t\t\t\t\t\t\tif (response.data.update_required) {\n\t\t\t\t\t\t\t\tshowInfo(\n\t\t\t\t\t\t\t\t\tt(\n\t\t\t\t\t\t\t\t\t\t'settings',\n\t\t\t\t\t\t\t\t\t\t'The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds.'\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tonClick: () => window.location.reload(),\n\t\t\t\t\t\t\t\t\t\tclose: false,\n\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\t\t\tlocation.reload()\n\t\t\t\t\t\t\t\t}, 5000)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch(() => {\n\t\t\t\t\t\t\tif (!Array.isArray(appId)) {\n\t\t\t\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\t\t\t\terror: t('settings', 'Error: This app cannot be enabled because it makes the server unstable'),\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\terror: error.response.data.data.message,\n\t\t\t\t\t})\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tforceEnableApp(context, { appId, groups }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then(() => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.post(generateUrl('settings/apps/force'), { appId })\n\t\t\t\t.then((response) => {\n\t\t\t\t\t// TODO: find a cleaner solution\n\t\t\t\t\tlocation.reload()\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('setError', {\n\t\t\t\t\t\tappId: apps,\n\t\t\t\t\t\terror: error.response.data.data.message,\n\t\t\t\t\t})\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tdisableApp(context, { appId }) {\n\t\tlet apps\n\t\tif (Array.isArray(appId)) {\n\t\t\tapps = appId\n\t\t} else {\n\t\t\tapps = [appId]\n\t\t}\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', apps)\n\t\t\treturn api.post(generateUrl('settings/apps/disable'), { appIds: apps })\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tapps.forEach(_appId => {\n\t\t\t\t\t\tcontext.commit('disableApp', _appId)\n\t\t\t\t\t})\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', apps)\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\tuninstallApp(context, { appId }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', appId)\n\t\t\treturn api.get(generateUrl(`settings/apps/uninstall/${appId}`))\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('uninstallApp', appId)\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\n\tupdateApp(context, { appId }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\tcontext.commit('startLoading', appId)\n\t\t\tcontext.commit('startLoading', 'install')\n\t\t\treturn api.get(generateUrl(`settings/apps/update/${appId}`))\n\t\t\t\t.then((response) => {\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('updateApp', appId)\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tcontext.commit('stopLoading', appId)\n\t\t\t\t\tcontext.commit('stopLoading', 'install')\n\t\t\t\t\tcontext.commit('APPS_API_FAILURE', { appId, error })\n\t\t\t\t})\n\t\t}).catch((error) => context.commit('API_FAILURE', { appId, error }))\n\t},\n\n\tgetAllApps(context) {\n\t\tcontext.commit('startLoading', 'list')\n\t\treturn api.get(generateUrl('settings/apps/list'))\n\t\t\t.then((response) => {\n\t\t\t\tcontext.commit('setAllApps', response.data.apps)\n\t\t\t\tcontext.commit('stopLoading', 'list')\n\t\t\t\treturn true\n\t\t\t})\n\t\t\t.catch((error) => context.commit('API_FAILURE', error))\n\t},\n\n\tasync getCategories(context, { shouldRefetchCategories = false } = {}) {\n\t\tif (shouldRefetchCategories || !context.state.gettingCategoriesPromise) {\n\t\t\tcontext.commit('startLoading', 'categories')\n\t\t\ttry {\n\t\t\t\tconst categoriesPromise = api.get(generateUrl('settings/apps/categories'))\n\t\t\t\tcontext.commit('updateCategories', categoriesPromise)\n\t\t\t\tconst categoriesPromiseResponse = await categoriesPromise\n\t\t\t\tif (categoriesPromiseResponse.data.length > 0) {\n\t\t\t\t\tcontext.commit('appendCategories', categoriesPromiseResponse.data)\n\t\t\t\t\tcontext.commit('stopLoading', 'categories')\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\tcontext.commit('stopLoading', 'categories')\n\t\t\t\treturn false\n\t\t\t} catch (error) {\n\t\t\t\tcontext.commit('API_FAILURE', error)\n\t\t\t}\n\t\t}\n\t\treturn context.state.gettingCategoriesPromise\n\t},\n\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport api from './api'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nconst state = {}\nconst mutations = {}\nconst getters = {}\nconst actions = {\n\t/**\n\t * Set application config in database\n\t *\n\t * @param {object} context store context\n\t * @param {object} options destructuring object\n\t * @param {string} options.app Application name\n\t * @param {boolean} options.key Config key\n\t * @param {boolean} options.value Value to set\n\t * @return {Promise}\n\t */\n\tsetAppConfig(context, { app, key, value }) {\n\t\treturn api.requireAdmin().then((response) => {\n\t\t\treturn api.post(generateOcsUrl('apps/provisioning_api/api/v1/config/apps/{app}/{key}', { app, key }), { value })\n\t\t\t\t.catch((error) => { throw error })\n\t\t}).catch((error) => context.commit('API_FAILURE', { app, key, value, error }))\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport Vuex, { Store } from 'vuex'\nimport users from './users'\nimport apps from './apps'\nimport settings from './settings'\nimport oc from './oc'\nimport { showError } from '@nextcloud/dialogs'\n\nVue.use(Vuex)\n\nconst debug = process.env.NODE_ENV !== 'production'\n\nconst mutations = {\n\tAPI_FAILURE(state, error) {\n\t\ttry {\n\t\t\tconst message = error.error.response.data.ocs.meta.message\n\t\t\tshowError(t('settings', 'An error occurred during the request. Unable to proceed.') + '<br>' + message, { isHTML: true })\n\t\t} catch (e) {\n\t\t\tshowError(t('settings', 'An error occurred during the request. Unable to proceed.'))\n\t\t}\n\t\tconsole.error(state, error)\n\t},\n}\n\nexport default new Store({\n\tmodules: {\n\t\tusers,\n\t\tapps,\n\t\tsettings,\n\t\toc,\n\t},\n\tstrict: debug,\n\n\tmutations,\n})\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst state = {\n\tserverData: {},\n}\nconst mutations = {\n\tsetServerData(state, data) {\n\t\tstate.serverData = data\n\t},\n}\nconst getters = {\n\tgetServerData(state) {\n\t\treturn state.serverData\n\t},\n}\nconst actions = {}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport Router from 'vue-router'\nimport { generateUrl } from '@nextcloud/router'\nimport { APPS_SECTION_ENUM } from './constants/AppsConstants.js'\nimport store from './store/index.js'\n\n// Dynamic loading\nconst Users = () => import(/* webpackChunkName: 'settings-users' */'./views/Users')\nconst Apps = () => import(/* webpackChunkName: 'settings-apps-view' */'./views/Apps')\n\nVue.use(Router)\n\n/*\n * This is the list of routes where the vuejs app will\n * take over php to provide data\n * You need to forward the php routing (routes.php) to\n * the settings-vue template, where the vue-router will\n * ensure the proper route.\n * ⚠️ Routes needs to match the php routes.\n */\nconst baseTitle = document.title\nconst router = new Router({\n\tmode: 'history',\n\t// if index.php is in the url AND we got this far, then it's working:\n\t// let's keep using index.php in the url\n\tbase: generateUrl(''),\n\tlinkActiveClass: 'active',\n\troutes: [\n\t\t{\n\t\t\tpath: '/:index(index.php/)?settings/users',\n\t\t\tcomponent: Users,\n\t\t\tprops: true,\n\t\t\tname: 'users',\n\t\t\tmeta: {\n\t\t\t\ttitle: () => {\n\t\t\t\t\treturn t('settings', 'Active users')\n\t\t\t\t},\n\t\t\t},\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\tpath: ':selectedGroup',\n\t\t\t\t\tname: 'group',\n\t\t\t\t\tmeta: {\n\t\t\t\t\t\ttitle: (to) => {\n\t\t\t\t\t\t\tif (to.params.selectedGroup === 'admin') {\n\t\t\t\t\t\t\t\treturn t('settings', 'Admins')\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (to.params.selectedGroup === 'disabled') {\n\t\t\t\t\t\t\t\treturn t('settings', 'Disabled users')\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn decodeURIComponent(to.params.selectedGroup)\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tcomponent: Users,\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tpath: '/:index(index.php/)?settings/apps',\n\t\t\tcomponent: Apps,\n\t\t\tprops: true,\n\t\t\tname: 'apps',\n\t\t\tmeta: {\n\t\t\t\ttitle: () => {\n\t\t\t\t\treturn t('settings', 'Your apps')\n\t\t\t\t},\n\t\t\t},\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\tpath: ':category',\n\t\t\t\t\tname: 'apps-category',\n\t\t\t\t\tmeta: {\n\t\t\t\t\t\ttitle: async (to) => {\n\t\t\t\t\t\t\tif (to.name === 'apps') {\n\t\t\t\t\t\t\t\treturn t('settings', 'Your apps')\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (APPS_SECTION_ENUM[to.params.category]) {\n\t\t\t\t\t\t\t\treturn APPS_SECTION_ENUM[to.params.category]\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tawait store.dispatch('getCategories')\n\t\t\t\t\t\t\tconst category = store.getters.getCategoryById(to.params.category)\n\t\t\t\t\t\t\tif (category.displayName) {\n\t\t\t\t\t\t\t\treturn category.displayName\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tcomponent: Apps,\n\t\t\t\t\tchildren: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpath: ':id',\n\t\t\t\t\t\t\tname: 'apps-details',\n\t\t\t\t\t\t\tcomponent: Apps,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t],\n})\n\nrouter.afterEach(async (to) => {\n\tconst metaTitle = await to.meta.title?.(to)\n\tif (metaTitle) {\n\t\tdocument.title = `${metaTitle} - ${baseTitle}`\n\t} else {\n\t\tdocument.title = baseTitle\n\t}\n})\n\nexport default router\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author rakekniven <mark.ziegler@rakekniven.de>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport VTooltip from 'v-tooltip'\nimport { sync } from 'vuex-router-sync'\n\nimport App from './App.vue'\nimport router from './router'\nimport store from './store'\n\nVue.use(VTooltip, { defaultHtml: false })\n\nsync(store, router)\n\n// CSP config for webpack dynamic chunk loading\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(OC.requestToken)\n\n// bind to window\nVue.prototype.t = t\nVue.prototype.n = n\nVue.prototype.OC = OC\nVue.prototype.OCA = OCA\n// eslint-disable-next-line camelcase\nVue.prototype.oc_userconfig = oc_userconfig\n\nconst app = new Vue({\n\trouter,\n\tstore,\n\trender: h => h(App),\n}).$mount('#content')\n\nexport { app, router, store }\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + {\"7418\":\"settings-apps-view\",\"8351\":\"settings-users\"}[chunkId] + \"-\" + chunkId + \".js?v=\" + {\"7418\":\"827ab69edc8cdf6aa5a4\",\"8351\":\"5bbb5adb47591ba69511\"}[chunkId] + \"\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 8562;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) scriptUrl = scripts[scripts.length - 1].src\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t8562: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], function() { return __webpack_require__(78778); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","APPS_SECTION_ENUM","Object","freeze","enabled","t","disabled","updates","featured","_h","this","$createElement","_self","_c","sanitize","url","replace","confirmPassword","options","axios","data","params","getLoggerBuilder","setApp","detectUser","build","orderGroups","groups","orderBy","sort","a","b","usercount","name","localeCompare","defaults","id","canAdd","canRemove","mutations","appendUsers","state","usersObj","users","concat","keys","map","userid","usersOffset","usersLimit","setPasswordPolicyMinLength","length","minPasswordLength","initGroups","userCount","group","assign","addGroup","gid","displayName","find","push","e","console","error","renameGroup","groupIndex","findIndex","groupSearch","updatedGroup","splice","removeGroup","addUserGroup","user","removeUserGroup","indexOf","addUserSubAdmin","subadmin","removeUserSubAdmin","deleteUser","userIndex","commit","actionType","addUserData","response","ocs","enableDisableUser","updateUserCounts","disabledGroup","forEach","userGroup","logger","setUserData","key","value","humanValue","OC","Util","computerFileSize","resetUsers","CancelToken","searchRequestCancelSource","getters","getUsers","getGroups","getSubadminGroups","filter","getPasswordPolicyMinLength","getUsersOffset","getUsersLimit","getUserCount","actions","context","offset","limit","search","cancel","source","api","generateOcsUrl","encodeURIComponent","cancelToken","token","then","usersCount","catch","limitParam","getUsersFromList","getUsersFromGroup","groupid","groupId","getCapabilities","password_policy","minLength","wipeUserDevices","addUser","dispatch","password","email","quota","language","userStatus","allowedEmpty","Promise","reject","Error","sendWelcomeMail","APPS_API_FAILURE","showError","message","isHTML","initCategories","categories","updateCount","updateCategories","categoriesPromise","gettingCategoriesPromise","setUpdateCount","addCategory","category","appendCategories","categoriesArray","setAllApps","apps","setError","appId","Array","isArray","_id","app","clearError","enableApp","active","disableApp","removable","canUnInstall","uninstallApp","needsDownload","installed","canInstall","updateApp","version","update","resetApps","reset","startLoading","Vue","loading","stopLoading","generateUrl","appIds","_appId","update_required","showInfo","onClick","window","location","reload","close","setTimeout","forceEnableApp","getAllApps","getCategories","shouldRefetchCategories","categoriesPromiseResponse","loadingList","getUpdateCount","getCategoryById","selectedCategoryId","setAppConfig","Vuex","API_FAILURE","meta","Store","modules","settings","serverData","setServerData","getServerData","oc","strict","process","Users","Apps","Router","baseTitle","document","title","router","mode","base","linkActiveClass","routes","path","component","props","children","to","selectedGroup","decodeURIComponent","store","afterEach","metaTitle","VTooltip","defaultHtml","sync","__webpack_nonce__","btoa","requestToken","n","OCA","oc_userconfig","render","h","App","$mount","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","loaded","__webpack_modules__","call","m","amdD","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","r","getter","__esModule","d","definition","o","defineProperty","enumerable","get","f","chunkId","all","reduce","promises","u","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","l","done","script","needAttach","scripts","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","bind","type","target","head","appendChild","Symbol","toStringTag","nmd","paths","scriptUrl","importScripts","currentScript","p","baseURI","self","href","installedChunks","installedChunkData","promise","resolve","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file diff --git a/dist/workflowengine-workflowengine.js b/dist/workflowengine-workflowengine.js index cb1931e41aa..6ed2ea8ff91 100644 --- a/dist/workflowengine-workflowengine.js +++ b/dist/workflowengine-workflowengine.js @@ -1,3 +1,3 @@ /*! For license information please see workflowengine-workflowengine.js.LICENSE.txt */ -!function(){var n,e={36620:function(n,e,i){"use strict";var o=i(20144),r=i(20629),a=i(4820),s=i(16453),l=i(79753),c=0===(0,s.loadState)("workflowengine","scope")?"global":"user",u=function(t){return(0,l.generateOcsUrl)("apps/workflowengine/api/v1/workflows/{scopeValue}",{scopeValue:c})+t+"?format=json"},p=i(10128);function A(t,n,e,i,o,r,a){try{var s=t[r](a),l=s.value}catch(t){return void e(t)}s.done?n(l):Promise.resolve(l).then(i,o)}function d(t){return function(){var n=this,e=arguments;return new Promise((function(i,o){var r=t.apply(n,e);function a(t){A(r,i,o,a,s,"next",t)}function s(t){A(r,i,o,a,s,"throw",t)}a(void 0)}))}}function m(t,n){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable}))),e.push.apply(e,i)}return e}function f(t){for(var n=1;n<arguments.length;n++){var e=null!=arguments[n]?arguments[n]:{};n%2?m(Object(e),!0).forEach((function(n){h(t,n,e[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):m(Object(e)).forEach((function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))}))}return t}function h(t,n,e){return n in t?Object.defineProperty(t,n,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[n]=e,t}i(65509),o.ZP.use(r.ZP);var g=new r.yh({state:{rules:[],scope:(0,s.loadState)("workflowengine","scope"),appstoreEnabled:(0,s.loadState)("workflowengine","appstoreenabled"),operations:(0,s.loadState)("workflowengine","operators"),plugins:o.ZP.observable({checks:{},operators:{}}),entities:(0,s.loadState)("workflowengine","entities"),events:(0,s.loadState)("workflowengine","entities").map((function(t){return t.events.map((function(n){return f({id:"".concat(t.id,"::").concat(n.eventName),entity:t},n)}))})).flat(),checks:(0,s.loadState)("workflowengine","checks")},mutations:{addRule:function(t,n){t.rules.push(f(f({},n),{},{valid:!0}))},updateRule:function(t,n){var e=t.rules.findIndex((function(t){return n.id===t.id})),i=Object.assign({},n);o.ZP.set(t.rules,e,i)},removeRule:function(t,n){var e=t.rules.findIndex((function(t){return n.id===t.id}));t.rules.splice(e,1)},addPluginCheck:function(t,n){o.ZP.set(t.plugins.checks,n.class,n)},addPluginOperator:function(t,n){n=Object.assign({color:"var(--color-primary-element)"},n,t.operations[n.id]||{}),void 0!==t.operations[n.id]&&o.ZP.set(t.operations,n.id,n)}},actions:{fetchRules:function(t){return d(regeneratorRuntime.mark((function n(){var e,i;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,a.default.get(u(""));case 2:e=n.sent,i=e.data,Object.values(i.ocs.data).flat().forEach((function(n){t.commit("addRule",n)}));case 5:case"end":return n.stop()}}),n)})))()},createNewRule:function(t,n){var e=null,i=[];!1===n.isComplex&&""===n.fixedEntity&&(i=[(e=(e=t.state.entities.find((function(t){return n.entities&&n.entities[0]===t.id})))||Object.values(t.state.entities)[0]).events[0].eventName]),t.commit("addRule",{id:-(new Date).getTime(),class:n.id,entity:e?e.id:n.fixedEntity,events:i,name:"",checks:[{class:null,operator:null,value:""}],operation:n.operation||""})},updateRule:function(t,n){t.commit("updateRule",f(f({},n),{},{events:"string"==typeof n.events?JSON.parse(n.events):n.events}))},removeRule:function(t,n){t.commit("removeRule",n)},pushUpdateRule:function(t,n){return d(regeneratorRuntime.mark((function e(){var i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(0!==t.state.scope){e.next=3;break}return e.next=3,(0,p.confirmPassword)();case 3:if(!(n.id<0)){e.next=9;break}return e.next=6,a.default.post(u(""),n);case 6:i=e.sent,e.next=12;break;case 9:return e.next=11,a.default.put(u("/".concat(n.id)),n);case 11:i=e.sent;case 12:o.ZP.set(n,"id",i.data.ocs.data.id),t.commit("updateRule",n);case 14:case"end":return e.stop()}}),e)})))()},deleteRule:function(t,n){return d(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,p.confirmPassword)();case 2:return e.next=4,a.default.delete(u("/".concat(n.id)));case 4:t.commit("removeRule",n);case 5:case"end":return e.stop()}}),e)})))()},setValid:function(t,n){var e=n.rule,i=n.valid;e.valid=i,t.commit("updateRule",e)}},getters:{getRules:function(t){return t.rules.filter((function(n){return void 0!==t.operations[n.class]})).sort((function(t,n){return t.id-n.id||n.class-t.class}))},getOperationForRule:function(t){return function(n){return t.operations[n.class]}},getEntityForOperation:function(t){return function(n){return t.entities.find((function(t){return n.fixedEntity===t.id}))}},getEventsForOperation:function(t){return function(n){return t.events}},getChecksForEntity:function(t){return function(n){return Object.values(t.checks).filter((function(t){return t.supportedEntities.indexOf(n)>-1||0===t.supportedEntities.length})).map((function(n){return t.plugins.checks[n.id]})).reduce((function(t,n){return t[n.class]=n,t}),{})}}}}),C=i(15168),v=i.n(C),w=i(12945),b=i.n(w),x=i(45400),k=i.n(x),_=i(10861),y=i.n(_),j=i(45947),O=i(14625),E=i(31894),B=i(98266),R=i.n(B),P=i(26932),S={name:"Event",components:{NcMultiselect:R()},props:{rule:{type:Object,required:!0}},computed:{entity:function(){return this.$store.getters.getEntityForOperation(this.operation)},operation:function(){return this.$store.getters.getOperationForRule(this.rule)},allEvents:function(){return this.$store.getters.getEventsForOperation(this.operation)},currentEvent:function(){var t=this;return this.allEvents.filter((function(n){return n.entity.id===t.rule.entity&&-1!==t.rule.events.indexOf(n.eventName)}))}},methods:{updateEvent:function(n){if(0!==n.length){var e,i=this.rule.entity,o=n.map((function(t){return t.entity.id})).filter((function(t,n,e){return e.indexOf(t)===n}));e=o.length>1?o.filter((function(t){return t!==i}))[0]:o[0],this.$set(this.rule,"entity",e),this.$set(this.rule,"events",n.filter((function(t){return t.entity.id===e})).map((function(t){return t.eventName}))),this.$emit("update",this.rule)}else(0,P.K2)(t("workflowengine","At least one event must be selected"))}}},V=i(93379),T=i.n(V),D=i(7795),N=i.n(D),$=i(90569),z=i.n($),F=i(3565),Z=i.n(F),U=i(19216),M=i.n(U),I=i(44589),G=i.n(I),L=i(69762),q={};q.styleTagTransform=G(),q.setAttributes=Z(),q.insert=z().bind(null,"head"),q.domAPI=N(),q.insertStyleElement=M(),T()(L.Z,q),L.Z&&L.Z.locals&&L.Z.locals;var W=i(51900),Y=(0,W.Z)(S,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",{staticClass:"event"},[t.operation.isComplex&&""!==t.operation.fixedEntity?e("div",{staticClass:"isComplex"},[e("img",{staticClass:"option__icon",attrs:{src:t.entity.icon,alt:""}}),t._v(" "),e("span",{staticClass:"option__title option__title_single"},[t._v(t._s(t.operation.triggerHint))])]):e("NcMultiselect",{attrs:{value:t.currentEvent,options:t.allEvents,"track-by":"id",multiple:!0,"auto-limit":!1,disabled:t.allEvents.length<=1},on:{input:t.updateEvent},scopedSlots:t._u([{key:"selection",fn:function(n){var i=n.values,o=n.isOpen;return[i.length&&!o?e("div",{staticClass:"eventlist"},[e("img",{staticClass:"option__icon",attrs:{src:i[0].entity.icon,alt:""}}),t._v(" "),t._l(i,(function(n,o){return e("span",{key:n.id,staticClass:"text option__title option__title_single"},[t._v(t._s(n.displayName)+" "),o+1<i.length?e("span",[t._v(", ")]):t._e()])}))],2):t._e()]}},{key:"option",fn:function(n){return[e("img",{staticClass:"option__icon",attrs:{src:n.option.entity.icon,alt:""}}),t._v(" "),e("span",{staticClass:"option__title"},[t._v(t._s(n.option.displayName))])]}}])})],1)}),[],!1,null,"01681aaa",null).exports,H=i(2649),J=i.n(H),Q={name:"Check",components:{NcActionButton:k(),NcActions:b(),NcMultiselect:R()},directives:{ClickOutside:J()},props:{check:{type:Object,required:!0},rule:{type:Object,required:!0}},data:function(){return{deleteVisible:!1,currentOption:null,currentOperator:null,options:[],valid:!1}},computed:{checks:function(){return this.$store.getters.getChecksForEntity(this.rule.entity)},operators:function(){if(!this.currentOption)return[];var t=this.checks[this.currentOption.class].operators;return"function"==typeof t?t(this.check):t},currentComponent:function(){return this.currentOption?this.checks[this.currentOption.class].component:[]},valuePlaceholder:function(){return this.currentOption&&this.currentOption.placeholder?this.currentOption.placeholder(this.check):""}},watch:{"check.operator":function(){this.validate()}},mounted:function(){var t=this;this.options=Object.values(this.checks),this.currentOption=this.checks[this.check.class],this.currentOperator=this.operators.find((function(n){return n.operator===t.check.operator})),null===this.check.class&&this.$nextTick((function(){return t.$refs.checkSelector.$el.focus()})),this.validate()},methods:{showDelete:function(){this.deleteVisible=!0},hideDelete:function(){this.deleteVisible=!1},validate:function(){this.valid=!0,this.currentOption&&this.currentOption.validate&&(this.valid=!!this.currentOption.validate(this.check)),this.check.invalid=!this.valid,this.$emit("validate",this.valid)},updateCheck:function(){var t=this,n=this.operators.findIndex((function(n){return t.check.operator===n.operator}));this.check.class===this.currentOption.class&&-1!==n||(this.currentOperator=this.operators[0]),this.check.class=this.currentOption.class,this.check.operator=this.currentOperator.operator,this.validate(),this.$emit("update",this.check)}}},K=i(52782),X={};X.styleTagTransform=G(),X.setAttributes=Z(),X.insert=z().bind(null,"head"),X.domAPI=N(),X.insertStyleElement=M(),T()(K.Z,X),K.Z&&K.Z.locals&&K.Z.locals;var tt=(0,W.Z)(Q,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",{directives:[{name:"click-outside",rawName:"v-click-outside",value:t.hideDelete,expression:"hideDelete"}],staticClass:"check",on:{click:t.showDelete}},[e("NcMultiselect",{ref:"checkSelector",attrs:{options:t.options,label:"name","track-by":"class","allow-empty":!1,placeholder:t.t("workflowengine","Select a filter")},on:{input:t.updateCheck},model:{value:t.currentOption,callback:function(n){t.currentOption=n},expression:"currentOption"}}),t._v(" "),e("NcMultiselect",{staticClass:"comparator",attrs:{disabled:!t.currentOption,options:t.operators,label:"name","track-by":"operator","allow-empty":!1,placeholder:t.t("workflowengine","Select a comparator")},on:{input:t.updateCheck},model:{value:t.currentOperator,callback:function(n){t.currentOperator=n},expression:"currentOperator"}}),t._v(" "),t.currentOperator&&t.currentComponent?e(t.currentOption.component,{tag:"component",staticClass:"option",attrs:{disabled:!t.currentOption,check:t.check},on:{input:t.updateCheck,valid:function(n){(t.valid=!0)&&t.validate()},invalid:function(n){!(t.valid=!1)&&t.validate()}},model:{value:t.check.value,callback:function(n){t.$set(t.check,"value",n)},expression:"check.value"}}):e("input",{directives:[{name:"model",rawName:"v-model",value:t.check.value,expression:"check.value"}],staticClass:"option",class:{invalid:!t.valid},attrs:{type:"text",disabled:!t.currentOption,placeholder:t.valuePlaceholder},domProps:{value:t.check.value},on:{input:[function(n){n.target.composing||t.$set(t.check,"value",n.target.value)},t.updateCheck]}}),t._v(" "),t.deleteVisible||!t.currentOption?e("NcActions",[e("NcActionButton",{attrs:{icon:"icon-close"},on:{click:function(n){return t.$emit("remove")}}})],1):t._e()],1)}),[],!1,null,"fa8ae1f2",null).exports,nt={name:"Operation",components:{NcButton:y()},props:{operation:{type:Object,required:!0},colored:{type:Boolean,default:!0}}},et=i(11040),it={};it.styleTagTransform=G(),it.setAttributes=Z(),it.insert=z().bind(null,"head"),it.domAPI=N(),it.insertStyleElement=M(),T()(et.Z,it),et.Z&&et.Z.locals&&et.Z.locals;var ot=(0,W.Z)(nt,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",{staticClass:"actions__item",class:{colored:t.colored},style:{backgroundColor:t.colored?t.operation.color:"transparent"}},[e("div",{staticClass:"icon",class:t.operation.iconClass,style:{backgroundImage:t.operation.iconClass?"":"url("+t.operation.icon+")"}}),t._v(" "),e("div",{staticClass:"actions__item__description"},[e("h3",[t._v(t._s(t.operation.name))]),t._v(" "),e("small",[t._v(t._s(t.operation.description))]),t._v(" "),t.colored?e("NcButton",[t._v("\n\t\t\t"+t._s(t.t("workflowengine","Add new flow"))+"\n\t\t")]):t._e()],1),t._v(" "),e("div",{staticClass:"actions__item_options"},[t._t("default")],2)])}),[],!1,null,"90eae5ec",null).exports;function rt(t,n,e,i,o,r,a){try{var s=t[r](a),l=s.value}catch(t){return void e(t)}s.done?n(l):Promise.resolve(l).then(i,o)}function at(t){return function(){var n=this,e=arguments;return new Promise((function(i,o){var r=t.apply(n,e);function a(t){rt(r,i,o,a,s,"next",t)}function s(t){rt(r,i,o,a,s,"throw",t)}a(void 0)}))}}var st={name:"Rule",components:{ArrowRight:j.default,Check:tt,CheckMark:O.default,Close:E.default,Event:Y,NcActionButton:k(),NcActions:b(),NcButton:y(),Operation:ot},directives:{Tooltip:v()},props:{rule:{type:Object,required:!0}},data:function(){return{editing:!1,checks:[],error:null,dirty:this.rule.id<0,originalRule:null}},computed:{operation:function(){return this.$store.getters.getOperationForRule(this.rule)},ruleStatus:function(){return this.error||!this.rule.valid||0===this.rule.checks.length||this.rule.checks.some((function(t){return!0===t.invalid}))?{title:t("workflowengine","The configuration is invalid"),icon:"Close",type:"warning",tooltip:{placement:"bottom",show:!0,content:this.error}}:this.dirty?{title:t("workflowengine","Save"),icon:"ArrowRight",type:"primary"}:{title:t("workflowengine","Active"),icon:"CheckMark",type:"success"}},lastCheckComplete:function(){var t=this.rule.checks[this.rule.checks.length-1];return void 0===t||null!==t.class}},mounted:function(){this.originalRule=JSON.parse(JSON.stringify(this.rule))},methods:{updateOperation:function(t){var n=this;return at(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.$set(n.rule,"operation",t),e.next=3,n.updateRule();case 3:case"end":return e.stop()}}),e)})))()},validate:function(t){this.error=null,this.$store.dispatch("updateRule",this.rule)},updateRule:function(){this.dirty||(this.dirty=!0),this.error=null,this.$store.dispatch("updateRule",this.rule)},saveRule:function(){var t=this;return at(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,t.$store.dispatch("pushUpdateRule",t.rule);case 3:t.dirty=!1,t.error=null,t.originalRule=JSON.parse(JSON.stringify(t.rule)),n.next=12;break;case 8:n.prev=8,n.t0=n.catch(0),console.error("Failed to save operation"),t.error=n.t0.response.data.ocs.meta.message;case 12:case"end":return n.stop()}}),n,null,[[0,8]])})))()},deleteRule:function(){var t=this;return at(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,t.$store.dispatch("deleteRule",t.rule);case 3:n.next=9;break;case 5:n.prev=5,n.t0=n.catch(0),console.error("Failed to delete operation"),t.error=n.t0.response.data.ocs.meta.message;case 9:case"end":return n.stop()}}),n,null,[[0,5]])})))()},cancelRule:function(){this.rule.id<0?this.$store.dispatch("removeRule",this.rule):(this.$store.dispatch("updateRule",this.originalRule),this.originalRule=JSON.parse(JSON.stringify(this.rule)),this.dirty=!1)},removeCheck:function(t){var n=this;return at(regeneratorRuntime.mark((function e(){var i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:(i=n.rule.checks.findIndex((function(n){return n===t})))>-1&&n.$delete(n.rule.checks,i),n.$store.dispatch("updateRule",n.rule);case 3:case"end":return e.stop()}}),e)})))()},onAddFilter:function(){this.rule.checks.push({class:null,operator:null,value:""})}}},lt=i(29413),ct={};ct.styleTagTransform=G(),ct.setAttributes=Z(),ct.insert=z().bind(null,"head"),ct.domAPI=N(),ct.insertStyleElement=M(),T()(lt.Z,ct),lt.Z&<.Z.locals&<.Z.locals;var ut=(0,W.Z)(st,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return t.operation?e("div",{staticClass:"section rule",style:{borderLeftColor:t.operation.color||""}},[e("div",{staticClass:"trigger"},[e("p",[e("span",[t._v(t._s(t.t("workflowengine","When")))]),t._v(" "),e("Event",{attrs:{rule:t.rule},on:{update:t.updateRule}})],1),t._v(" "),t._l(t.rule.checks,(function(n,i){return e("p",{key:i},[e("span",[t._v(t._s(t.t("workflowengine","and")))]),t._v(" "),e("Check",{attrs:{check:n,rule:t.rule},on:{update:t.updateRule,validate:t.validate,remove:function(e){return t.removeCheck(n)}}})],1)})),t._v(" "),e("p",[e("span"),t._v(" "),t.lastCheckComplete?e("input",{staticClass:"check--add",attrs:{type:"button",value:"Add a new filter"},on:{click:t.onAddFilter}}):t._e()])],2),t._v(" "),e("div",{staticClass:"flow-icon icon-confirm"}),t._v(" "),e("div",{staticClass:"action"},[e("Operation",{attrs:{operation:t.operation,colored:!1}},[t.operation.options?e(t.operation.options,{tag:"component",on:{input:t.updateOperation},model:{value:t.rule.operation,callback:function(n){t.$set(t.rule,"operation",n)},expression:"rule.operation"}}):t._e()],1),t._v(" "),e("div",{staticClass:"buttons"},[t.rule.id<-1||t.dirty?e("NcButton",{on:{click:t.cancelRule}},[t._v("\n\t\t\t\t"+t._s(t.t("workflowengine","Cancel"))+"\n\t\t\t")]):t.dirty?t._e():e("NcButton",{on:{click:t.deleteRule}},[t._v("\n\t\t\t\t"+t._s(t.t("workflowengine","Delete"))+"\n\t\t\t")]),t._v(" "),e("NcButton",{attrs:{type:t.ruleStatus.type},on:{click:t.saveRule},scopedSlots:t._u([{key:"icon",fn:function(){return[e(t.ruleStatus.icon,{tag:"component",attrs:{size:20}})]},proxy:!0}],null,!1,2383918876)},[t._v("\n\t\t\t\t"+t._s(t.ruleStatus.title)+"\n\t\t\t")])],1),t._v(" "),t.error?e("p",{staticClass:"error-message"},[t._v("\n\t\t\t"+t._s(t.error)+"\n\t\t")]):t._e()],1)]):t._e()}),[],!1,null,"a857d7a6",null).exports,pt=i(13299),At=i.n(pt),dt=i(65333),mt=i(874);function ft(t,n){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable}))),e.push.apply(e,i)}return e}function ht(t){for(var n=1;n<arguments.length;n++){var e=null!=arguments[n]?arguments[n]:{};n%2?ft(Object(e),!0).forEach((function(n){gt(t,n,e[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):ft(Object(e)).forEach((function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))}))}return t}function gt(t,n,e){return n in t?Object.defineProperty(t,n,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[n]=e,t}var Ct={name:"Workflow",components:{NcButton:y(),MenuDown:mt.Z,MenuUp:dt.Z,Operation:ot,Rule:ut,NcSettingsSection:At()},data:function(){return{showMoreOperations:!1,appstoreUrl:(0,l.generateUrl)("settings/apps/workflow"),workflowDocUrl:(0,s.loadState)("workflowengine","doc-url")}},computed:ht(ht(ht({},(0,r.Se)({rules:"getRules"})),(0,r.rn)({appstoreEnabled:"appstoreEnabled",scope:"scope",operations:"operations"})),{},{hasMoreOperations:function(){return Object.keys(this.operations).length>3},getMainOperations:function(){return this.showMoreOperations?Object.values(this.operations):Object.values(this.operations).slice(0,3)},showAppStoreHint:function(){return 0===this.scope&&this.appstoreEnabled&&OC.isUserAdmin()}}),mounted:function(){this.$store.dispatch("fetchRules")},methods:{createNewRule:function(t){this.$store.dispatch("createNewRule",t)}}},vt=i(24615),wt={};wt.styleTagTransform=G(),wt.setAttributes=Z(),wt.insert=z().bind(null,"head"),wt.domAPI=N(),wt.insertStyleElement=M(),T()(vt.Z,wt),vt.Z&&vt.Z.locals&&vt.Z.locals;var bt=(0,W.Z)(Ct,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",{attrs:{id:"workflowengine"}},[e("NcSettingsSection",{attrs:{title:t.t("workflowengine","Available flows"),"doc-url":t.workflowDocUrl}},[0===t.scope?e("p",{staticClass:"settings-hint"},[e("a",{attrs:{href:"https://nextcloud.com/developer/"}},[t._v(t._s(t.t("workflowengine","For details on how to write your own flow, check out the development documentation.")))])]):t._e(),t._v(" "),e("transition-group",{staticClass:"actions",attrs:{name:"slide",tag:"div"}},[t._l(t.getMainOperations,(function(n){return e("Operation",{key:n.id,attrs:{operation:n},nativeOn:{click:function(e){return t.createNewRule(n)}}})})),t._v(" "),t.showAppStoreHint?e("a",{key:"add",staticClass:"actions__item colored more",attrs:{href:t.appstoreUrl}},[e("div",{staticClass:"icon icon-add"}),t._v(" "),e("div",{staticClass:"actions__item__description"},[e("h3",[t._v(t._s(t.t("workflowengine","More flows")))]),t._v(" "),e("small",[t._v(t._s(t.t("workflowengine","Browse the App Store")))])])]):t._e()],2),t._v(" "),t.hasMoreOperations?e("div",{staticClass:"actions__more"},[e("NcButton",{on:{click:function(n){t.showMoreOperations=!t.showMoreOperations}},scopedSlots:t._u([{key:"icon",fn:function(){return[t.showMoreOperations?e("MenuUp",{attrs:{size:20}}):e("MenuDown",{attrs:{size:20}})]},proxy:!0}],null,!1,3801522717)},[t._v("\n\t\t\t\t"+t._s(t.showMoreOperations?t.t("workflowengine","Show less"):t.t("workflowengine","Show more"))+"\n\t\t\t")])],1):t._e(),t._v(" "),0===t.scope?e("h2",{staticClass:"configured-flows"},[t._v("\n\t\t\t"+t._s(t.t("workflowengine","Configured flows"))+"\n\t\t")]):e("h2",{staticClass:"configured-flows"},[t._v("\n\t\t\t"+t._s(t.t("workflowengine","Your flows"))+"\n\t\t")])],1),t._v(" "),t.rules.length>0?e("transition-group",{attrs:{name:"slide"}},t._l(t.rules,(function(t){return e("Rule",{key:t.id,attrs:{rule:t}})})),1):t._e()],1)}),[],!1,null,"38a7a2e5",null).exports,xt=/^\/(.*)\/([gui]{0,3})$/,kt=/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\/(3[0-2]|[1-2][0-9]|[1-9])$/,_t=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(1([01][0-9]|2[0-8])|[1-9][0-9]|[0-9])$/,yt={props:{value:{type:String,default:""},check:{type:Object,default:function(){return{}}}},data:function(){return{newValue:""}},watch:{value:{immediate:!0,handler:function(t){this.updateInternalValue(t)}}},methods:{updateInternalValue:function(t){this.newValue=t}}};function jt(t,n){(null==n||n>t.length)&&(n=t.length);for(var e=0,i=new Array(n);e<n;e++)i[e]=t[e];return i}var Ot={name:"FileMimeType",components:{NcMultiselect:R()},mixins:[yt],data:function(){return{predefinedTypes:[{icon:"icon-folder",label:t("workflowengine","Folder"),pattern:"httpd/unix-directory"},{icon:"icon-picture",label:t("workflowengine","Images"),pattern:"/image\\/.*/"},{iconUrl:(0,l.imagePath)("core","filetypes/x-office-document"),label:t("workflowengine","Office documents"),pattern:"/(vnd\\.(ms-|openxmlformats-|oasis\\.opendocument).*)$/"},{iconUrl:(0,l.imagePath)("core","filetypes/application-pdf"),label:t("workflowengine","PDF documents"),pattern:"application/pdf"}]}},computed:{options:function(){return[].concat(function(t){if(Array.isArray(t))return jt(t)}(t=this.predefinedTypes)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,n){if(t){if("string"==typeof t)return jt(t,n);var e=Object.prototype.toString.call(t).slice(8,-1);return"Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?jt(t,n):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),[this.customValue]);var t},isPredefined:function(){var t=this;return!!this.predefinedTypes.find((function(n){return t.newValue===n.pattern}))},customValue:function(){return{icon:"icon-settings-dark",label:t("workflowengine","Custom MIME type"),pattern:""}},currentValue:function(){var n=this;return this.predefinedTypes.find((function(t){return n.newValue===t.pattern}))||{icon:"icon-settings-dark",label:t("workflowengine","Custom mimetype"),pattern:this.newValue}}},methods:{validateRegex:function(t){return null!==/^\/(.*)\/([gui]{0,3})$/.exec(t)},setValue:function(t){null!==t&&(this.newValue=t.pattern,this.$emit("input",this.newValue))},updateCustom:function(t){this.newValue=t.target.value,this.$emit("input",this.newValue)}}},Et=i(62850),Bt={};Bt.styleTagTransform=G(),Bt.setAttributes=Z(),Bt.insert=z().bind(null,"head"),Bt.domAPI=N(),Bt.insertStyleElement=M(),T()(Et.Z,Bt),Et.Z&&Et.Z.locals&&Et.Z.locals;var Rt=(0,W.Z)(Ot,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",[e("NcMultiselect",{attrs:{value:t.currentValue,placeholder:t.t("workflowengine","Select a file type"),label:"label","track-by":"pattern",options:t.options,multiple:!1,tagging:!1},on:{input:t.setValue},scopedSlots:t._u([{key:"singleLabel",fn:function(n){return[n.option.icon?e("span",{staticClass:"option__icon",class:n.option.icon}):e("img",{staticClass:"option__icon-img",attrs:{src:n.option.iconUrl,alt:""}}),t._v(" "),e("span",{staticClass:"option__title option__title_single"},[t._v(t._s(n.option.label))])]}},{key:"option",fn:function(n){return[n.option.icon?e("span",{staticClass:"option__icon",class:n.option.icon}):e("img",{staticClass:"option__icon-img",attrs:{src:n.option.iconUrl,alt:""}}),t._v(" "),e("span",{staticClass:"option__title"},[t._v(t._s(n.option.label))])]}}])}),t._v(" "),t.isPredefined?t._e():e("input",{attrs:{type:"text",placeholder:t.t("workflowengine","e.g. httpd/unix-directory")},domProps:{value:t.currentValue.pattern},on:{input:t.updateCustom}})],1)}),[],!1,null,"2312566e",null).exports,Pt=i(32628),St={name:"FileSystemTag",components:{MultiselectTags:i.n(Pt)()},props:{value:{type:String,default:""}},data:function(){return{newValue:[]}},watch:{value:function(){this.updateValue()}},beforeMount:function(){this.updateValue()},methods:{updateValue:function(){""!==this.value?this.newValue=this.value:this.newValue=null},update:function(){this.$emit("input",this.newValue||"")}}},Vt=(0,W.Z)(St,(function(){var t=this,n=t.$createElement;return(t._self._c||n)("MultiselectTags",{attrs:{multiple:!1},on:{input:t.update},model:{value:t.newValue,callback:function(n){t.newValue=n},expression:"newValue"}})}),[],!1,null,"1611b92c",null).exports,Tt=function(){return[{operator:"matches",name:t("workflowengine","matches")},{operator:"!matches",name:t("workflowengine","does not match")},{operator:"is",name:t("workflowengine","is")},{operator:"!is",name:t("workflowengine","is not")}]},Dt=[{class:"OCA\\WorkflowEngine\\Check\\FileName",name:t("workflowengine","File name"),operators:Tt,placeholder:function(t){return"matches"===t.operator||"!matches"===t.operator?"/^dummy-.+$/i":"filename.txt"},validate:function(t){return"matches"!==t.operator&&"!matches"!==t.operator||!!(n=t.value)&&null!==xt.exec(n);var n}},{class:"OCA\\WorkflowEngine\\Check\\FileMimeType",name:t("workflowengine","File MIME type"),operators:Tt,component:Rt},{class:"OCA\\WorkflowEngine\\Check\\FileSize",name:t("workflowengine","File size (upload)"),operators:[{operator:"less",name:t("workflowengine","less")},{operator:"!greater",name:t("workflowengine","less or equals")},{operator:"!less",name:t("workflowengine","greater or equals")},{operator:"greater",name:t("workflowengine","greater")}],placeholder:function(t){return"5 MB"},validate:function(t){return!!t.value&&null!==t.value.match(/^[0-9]+[ ]?[kmgt]?b$/i)}},{class:"OCA\\WorkflowEngine\\Check\\RequestRemoteAddress",name:t("workflowengine","Request remote address"),operators:[{operator:"matchesIPv4",name:t("workflowengine","matches IPv4")},{operator:"!matchesIPv4",name:t("workflowengine","does not match IPv4")},{operator:"matchesIPv6",name:t("workflowengine","matches IPv6")},{operator:"!matchesIPv6",name:t("workflowengine","does not match IPv6")}],placeholder:function(t){return"matchesIPv6"===t.operator||"!matchesIPv6"===t.operator?"::1/128":"127.0.0.1/32"},validate:function(t){return"matchesIPv6"===t.operator||"!matchesIPv6"===t.operator?!!(n=t.value)&&null!==_t.exec(n):function(t){return!!t&&null!==kt.exec(t)}(t.value);var n}},{class:"OCA\\WorkflowEngine\\Check\\FileSystemTags",name:t("workflowengine","File system tag"),operators:[{operator:"is",name:t("workflowengine","is tagged with")},{operator:"!is",name:t("workflowengine","is not tagged with")}],component:Vt}];function Nt(t,n){(null==n||n>t.length)&&(n=t.length);for(var e=0,i=new Array(n);e<n;e++)i[e]=t[e];return i}var $t={name:"RequestUserAgent",components:{NcMultiselect:R()},mixins:[yt],data:function(){return{newValue:"",predefinedTypes:[{pattern:"android",label:t("workflowengine","Android client"),icon:"icon-phone"},{pattern:"ios",label:t("workflowengine","iOS client"),icon:"icon-phone"},{pattern:"desktop",label:t("workflowengine","Desktop client"),icon:"icon-desktop"},{pattern:"mail",label:t("workflowengine","Thunderbird & Outlook addons"),icon:"icon-mail"}]}},computed:{options:function(){return[].concat(function(t){if(Array.isArray(t))return Nt(t)}(t=this.predefinedTypes)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,n){if(t){if("string"==typeof t)return Nt(t,n);var e=Object.prototype.toString.call(t).slice(8,-1);return"Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?Nt(t,n):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),[this.customValue]);var t},matchingPredefined:function(){var t=this;return this.predefinedTypes.find((function(n){return t.newValue===n.pattern}))},isPredefined:function(){return!!this.matchingPredefined},customValue:function(){return{icon:"icon-settings-dark",label:t("workflowengine","Custom user agent"),pattern:""}},currentValue:function(){return this.matchingPredefined?this.matchingPredefined:{icon:"icon-settings-dark",label:t("workflowengine","Custom user agent"),pattern:this.newValue}}},methods:{validateRegex:function(t){return null!==/^\/(.*)\/([gui]{0,3})$/.exec(t)},setValue:function(t){null!==t&&(this.newValue=t.pattern,this.$emit("input",this.newValue))},updateCustom:function(t){this.newValue=t.target.value,this.$emit("input",this.newValue)}}},zt=i(53996),Ft={};Ft.styleTagTransform=G(),Ft.setAttributes=Z(),Ft.insert=z().bind(null,"head"),Ft.domAPI=N(),Ft.insertStyleElement=M(),T()(zt.Z,Ft),zt.Z&&zt.Z.locals&&zt.Z.locals;var Zt=(0,W.Z)($t,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",[e("NcMultiselect",{attrs:{value:t.currentValue,placeholder:t.t("workflowengine","Select a user agent"),label:"label","track-by":"pattern",options:t.options,multiple:!1,tagging:!1},on:{input:t.setValue},scopedSlots:t._u([{key:"singleLabel",fn:function(n){return[e("span",{staticClass:"option__icon",class:n.option.icon}),t._v(" "),e("span",{staticClass:"option__title option__title_single",domProps:{innerHTML:t._s(n.option.label)}})]}},{key:"option",fn:function(n){return[e("span",{staticClass:"option__icon",class:n.option.icon}),t._v(" "),n.option.$groupLabel?e("span",{staticClass:"option__title",domProps:{innerHTML:t._s(n.option.$groupLabel)}}):e("span",{staticClass:"option__title",domProps:{innerHTML:t._s(n.option.label)}})]}}])}),t._v(" "),t.isPredefined?t._e():e("input",{attrs:{type:"text"},domProps:{value:t.currentValue.pattern},on:{input:t.updateCustom}})],1)}),[],!1,null,"bd5cb750",null).exports,Ut=i(80008),Mt=i.n(Ut),It=Mt().tz.names(),Gt={name:"RequestTime",components:{NcMultiselect:R()},mixins:[yt],props:{value:{type:String,default:""}},data:function(){return{timezones:It,valid:!1,newValue:{startTime:null,endTime:null,timezone:Mt().tz.guess()}}},mounted:function(){this.validate()},methods:{updateInternalValue:function(t){try{var n=JSON.parse(t);2===n.length&&(this.newValue={startTime:n[0].split(" ",2)[0],endTime:n[1].split(" ",2)[0],timezone:n[0].split(" ",2)[1]})}catch(t){}},validate:function(){return this.valid=this.newValue.startTime&&null!==this.newValue.startTime.match(/^(0[0-9]|1[0-9]|2[0-3]|[0-9]):[0-5][0-9]$/i)&&this.newValue.endTime&&null!==this.newValue.endTime.match(/^(0[0-9]|1[0-9]|2[0-3]|[0-9]):[0-5][0-9]$/i)&&null!==Mt().tz.zone(this.newValue.timezone),this.valid?this.$emit("valid"):this.$emit("invalid"),this.valid},update:function(){if(null===this.newValue.timezone&&(this.newValue.timezone=Mt().tz.guess()),this.validate()){var t='["'.concat(this.newValue.startTime," ").concat(this.newValue.timezone,'","').concat(this.newValue.endTime," ").concat(this.newValue.timezone,'"]');this.$emit("input",t)}}}},Lt=i(4509),qt={};qt.styleTagTransform=G(),qt.setAttributes=Z(),qt.insert=z().bind(null,"head"),qt.domAPI=N(),qt.insertStyleElement=M(),T()(Lt.Z,qt),Lt.Z&&Lt.Z.locals&&Lt.Z.locals;var Wt=(0,W.Z)(Gt,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",{staticClass:"timeslot"},[e("input",{directives:[{name:"model",rawName:"v-model",value:t.newValue.startTime,expression:"newValue.startTime"}],staticClass:"timeslot--start",attrs:{type:"text",placeholder:"e.g. 08:00"},domProps:{value:t.newValue.startTime},on:{input:[function(n){n.target.composing||t.$set(t.newValue,"startTime",n.target.value)},t.update]}}),t._v(" "),e("input",{directives:[{name:"model",rawName:"v-model",value:t.newValue.endTime,expression:"newValue.endTime"}],attrs:{type:"text",placeholder:"e.g. 18:00"},domProps:{value:t.newValue.endTime},on:{input:[function(n){n.target.composing||t.$set(t.newValue,"endTime",n.target.value)},t.update]}}),t._v(" "),t.valid?t._e():e("p",{staticClass:"invalid-hint"},[t._v("\n\t\t"+t._s(t.t("workflowengine","Please enter a valid time span"))+"\n\t")]),t._v(" "),e("NcMultiselect",{directives:[{name:"show",rawName:"v-show",value:t.valid,expression:"valid"}],attrs:{options:t.timezones},on:{input:t.update},model:{value:t.newValue.timezone,callback:function(n){t.$set(t.newValue,"timezone",n)},expression:"newValue.timezone"}})],1)}),[],!1,null,"c064bb1a",null).exports;function Yt(t,n){(null==n||n>t.length)&&(n=t.length);for(var e=0,i=new Array(n);e<n;e++)i[e]=t[e];return i}var Ht={name:"RequestURL",components:{NcMultiselect:R()},mixins:[yt],data:function(){return{newValue:"",predefinedTypes:[{label:t("workflowengine","Predefined URLs"),children:[{pattern:"webdav",label:t("workflowengine","Files WebDAV")}]}]}},computed:{options:function(){return[].concat(function(t){if(Array.isArray(t))return Yt(t)}(t=this.predefinedTypes)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,n){if(t){if("string"==typeof t)return Yt(t,n);var e=Object.prototype.toString.call(t).slice(8,-1);return"Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?Yt(t,n):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),[this.customValue]);var t},placeholder:function(){return"matches"===this.check.operator||"!matches"===this.check.operator?"/^https\\:\\/\\/localhost\\/index\\.php$/i":"https://localhost/index.php"},matchingPredefined:function(){var t=this;return this.predefinedTypes.map((function(t){return t.children})).flat().find((function(n){return t.newValue===n.pattern}))},isPredefined:function(){return!!this.matchingPredefined},customValue:function(){return{label:t("workflowengine","Others"),children:[{icon:"icon-settings-dark",label:t("workflowengine","Custom URL"),pattern:""}]}},currentValue:function(){return this.matchingPredefined?this.matchingPredefined:{icon:"icon-settings-dark",label:t("workflowengine","Custom URL"),pattern:this.newValue}}},methods:{validateRegex:function(t){return null!==/^\/(.*)\/([gui]{0,3})$/.exec(t)},setValue:function(t){null!==t&&(this.newValue=t.pattern,this.$emit("input",this.newValue))},updateCustom:function(t){this.newValue=t.target.value,this.$emit("input",this.newValue)}}},Jt=Ht,Qt=i(37411),Kt={};Kt.styleTagTransform=G(),Kt.setAttributes=Z(),Kt.insert=z().bind(null,"head"),Kt.domAPI=N(),Kt.insertStyleElement=M(),T()(Qt.Z,Kt),Qt.Z&&Qt.Z.locals&&Qt.Z.locals;var Xt=(0,W.Z)(Jt,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",[e("NcMultiselect",{attrs:{value:t.currentValue,placeholder:t.t("workflowengine","Select a request URL"),label:"label","track-by":"pattern","group-values":"children","group-label":"label",options:t.options,multiple:!1,tagging:!1},on:{input:t.setValue},scopedSlots:t._u([{key:"singleLabel",fn:function(n){return[e("span",{staticClass:"option__icon",class:n.option.icon}),t._v(" "),e("span",{staticClass:"option__title option__title_single"},[t._v(t._s(n.option.label))])]}},{key:"option",fn:function(n){return[e("span",{staticClass:"option__icon",class:n.option.icon}),t._v(" "),e("span",{staticClass:"option__title"},[t._v(t._s(n.option.label)+" "+t._s(n.option.$groupLabel))])]}}])}),t._v(" "),t.isPredefined?t._e():e("input",{attrs:{type:"text",placeholder:t.placeholder},domProps:{value:t.currentValue.pattern},on:{input:t.updateCustom}})],1)}),[],!1,null,"efaa5484",null).exports;function tn(t,n,e,i,o,r,a){try{var s=t[r](a),l=s.value}catch(t){return void e(t)}s.done?n(l):Promise.resolve(l).then(i,o)}var nn=[],en={isLoading:!1},on={name:"RequestUserGroup",components:{NcMultiselect:R()},props:{value:{type:String,default:""},check:{type:Object,default:function(){return{}}}},data:function(){return{groups:nn,status:en}},computed:{currentValue:function(){var t=this;return this.groups.find((function(n){return n.id===t.value}))||null}},mounted:function(){var t,n=this;return(t=regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(0!==n.groups.length){t.next=3;break}return t.next=3,n.searchAsync("");case 3:if(null!==n.currentValue){t.next=6;break}return t.next=6,n.searchAsync(n.value);case 6:case"end":return t.stop()}}),t)})),function(){var n=this,e=arguments;return new Promise((function(i,o){var r=t.apply(n,e);function a(t){tn(r,i,o,a,s,"next",t)}function s(t){tn(r,i,o,a,s,"throw",t)}a(void 0)}))})()},methods:{searchAsync:function(t){var n=this;if(!this.status.isLoading)return this.status.isLoading=!0,a.default.get((0,l.generateOcsUrl)("cloud/groups/details?limit=20&search={searchQuery}",{searchQuery:t})).then((function(t){t.data.ocs.data.groups.forEach((function(t){n.addGroup({id:t.id,displayname:t.displayname})})),n.status.isLoading=!1}),(function(t){console.error("Error while loading group list",t.response)}))},addGroup:function(t){-1===this.groups.findIndex((function(n){return n.id===t.id}))&&this.groups.push(t)}}},rn=on,an=i(96906),sn={};sn.styleTagTransform=G(),sn.setAttributes=Z(),sn.insert=z().bind(null,"head"),sn.domAPI=N(),sn.insertStyleElement=M(),T()(an.Z,sn),an.Z&&an.Z.locals&&an.Z.locals;var ln=(0,W.Z)(rn,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",[e("NcMultiselect",{attrs:{value:t.currentValue,loading:t.status.isLoading&&0===t.groups.length,options:t.groups,multiple:!1,label:"displayname","track-by":"id"},on:{"search-change":t.searchAsync,input:function(n){return t.$emit("input",n.id)}}})],1)}),[],!1,null,"4bcec2a5",null).exports,cn=[{class:"OCA\\WorkflowEngine\\Check\\RequestURL",name:t("workflowengine","Request URL"),operators:[{operator:"is",name:t("workflowengine","is")},{operator:"!is",name:t("workflowengine","is not")},{operator:"matches",name:t("workflowengine","matches")},{operator:"!matches",name:t("workflowengine","does not match")}],component:Xt},{class:"OCA\\WorkflowEngine\\Check\\RequestTime",name:t("workflowengine","Request time"),operators:[{operator:"in",name:t("workflowengine","between")},{operator:"!in",name:t("workflowengine","not between")}],component:Wt},{class:"OCA\\WorkflowEngine\\Check\\RequestUserAgent",name:t("workflowengine","Request user agent"),operators:[{operator:"is",name:t("workflowengine","is")},{operator:"!is",name:t("workflowengine","is not")},{operator:"matches",name:t("workflowengine","matches")},{operator:"!matches",name:t("workflowengine","does not match")}],component:Zt},{class:"OCA\\WorkflowEngine\\Check\\UserGroupMembership",name:t("workflowengine","User group membership"),operators:[{operator:"is",name:t("workflowengine","is member of")},{operator:"!is",name:t("workflowengine","is not member of")}],component:ln}];function un(t){return function(t){if(Array.isArray(t))return pn(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,n){if(t){if("string"==typeof t)return pn(t,n);var e=Object.prototype.toString.call(t).slice(8,-1);return"Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?pn(t,n):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function pn(t,n){(null==n||n>t.length)&&(n=t.length);for(var e=0,i=new Array(n);e<n;e++)i[e]=t[e];return i}var An=[].concat(un(Dt),un(cn));window.OCA.WorkflowEngine=Object.assign({},OCA.WorkflowEngine,{registerCheck:function(t){g.commit("addPluginCheck",t)},registerOperator:function(t){g.commit("addPluginOperator",t)}}),An.forEach((function(t){return window.OCA.WorkflowEngine.registerCheck(t)})),o.ZP.use(r.ZP),o.ZP.prototype.t=t,new(o.ZP.extend(bt))({store:g}).$mount("#workflowengine")},52782:function(t,n,e){"use strict";var i=e(87537),o=e.n(i),r=e(23645),a=e.n(r)()(o());a.push([t.id,".check[data-v-fa8ae1f2]{display:flex;flex-wrap:wrap;width:100%;padding-right:20px}.check>*[data-v-fa8ae1f2]:not(.close){width:180px}.check>.comparator[data-v-fa8ae1f2]{min-width:130px;width:130px}.check>.option[data-v-fa8ae1f2]{min-width:230px;width:230px}.check>.multiselect[data-v-fa8ae1f2],.check>input[type=text][data-v-fa8ae1f2]{margin-right:5px;margin-bottom:5px}.check .multiselect[data-v-fa8ae1f2] .multiselect__content-wrapper li>span,.check .multiselect[data-v-fa8ae1f2] .multiselect__single{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}input[type=text][data-v-fa8ae1f2]{margin:0}[data-v-fa8ae1f2]::placeholder{font-size:10px}button.action-item.action-item--single.icon-close[data-v-fa8ae1f2]{height:44px;width:44px;margin-top:-5px;margin-bottom:-5px}.invalid[data-v-fa8ae1f2]{border-color:var(--color-error) !important}","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Check.vue"],names:[],mappings:"AAsJA,wBACC,YAAA,CACA,cAAA,CACA,UAAA,CACA,kBAAA,CACA,sCACC,WAAA,CAED,oCACC,eAAA,CACA,WAAA,CAED,gCACC,eAAA,CACA,WAAA,CAED,8EAEC,gBAAA,CACA,iBAAA,CAGD,qIAEC,aAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CAGF,kCACC,QAAA,CAED,+BACC,cAAA,CAED,mEACC,WAAA,CACA,UAAA,CACA,eAAA,CACA,kBAAA,CAED,0BACC,0CAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.check {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\twidth: 100%;\n\tpadding-right: 20px;\n\t& > *:not(.close) {\n\t\twidth: 180px;\n\t}\n\t& > .comparator {\n\t\tmin-width: 130px;\n\t\twidth: 130px;\n\t}\n\t& > .option {\n\t\tmin-width: 230px;\n\t\twidth: 230px;\n\t}\n\t& > .multiselect,\n\t& > input[type=text] {\n\t\tmargin-right: 5px;\n\t\tmargin-bottom: 5px;\n\t}\n\n\t.multiselect::v-deep .multiselect__content-wrapper li>span,\n\t.multiselect::v-deep .multiselect__single {\n\t\tdisplay: block;\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n}\ninput[type=text] {\n\tmargin: 0;\n}\n::placeholder {\n\tfont-size: 10px;\n}\nbutton.action-item.action-item--single.icon-close {\n\theight: 44px;\n\twidth: 44px;\n\tmargin-top: -5px;\n\tmargin-bottom: -5px;\n}\n.invalid {\n\tborder-color: var(--color-error) !important;\n}\n"],sourceRoot:""}]),n.Z=a},62850:function(t,n,e){"use strict";var i=e(87537),o=e.n(i),r=e(23645),a=e.n(r)()(o());a.push([t.id,".multiselect[data-v-2312566e],input[type=text][data-v-2312566e]{width:100%}.multiselect[data-v-2312566e] .multiselect__content-wrapper li>span,.multiselect[data-v-2312566e] .multiselect__single{display:flex;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.option__icon[data-v-2312566e]{display:inline-block;min-width:30px;background-position:left}.option__icon-img[data-v-2312566e]{margin-right:14px}","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Checks/FileMimeType.vue"],names:[],mappings:"AAkJA,gEACC,UAAA,CAED,uHAEC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CAGD,+BACC,oBAAA,CACA,cAAA,CACA,wBAAA,CAGD,mCACC,iBAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.multiselect, input[type='text'] {\n\twidth: 100%;\n}\n.multiselect >>> .multiselect__content-wrapper li>span,\n.multiselect >>> .multiselect__single {\n\tdisplay: flex;\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n\n.option__icon {\n\tdisplay: inline-block;\n\tmin-width: 30px;\n\tbackground-position: left;\n}\n\n.option__icon-img {\n\tmargin-right: 14px;\n}\n"],sourceRoot:""}]),n.Z=a},4509:function(t,n,e){"use strict";var i=e(87537),o=e.n(i),r=e(23645),a=e.n(r)()(o());a.push([t.id,".timeslot[data-v-c064bb1a]{display:flex;flex-grow:1;flex-wrap:wrap;max-width:180px}.timeslot .multiselect[data-v-c064bb1a]{width:100%;margin-bottom:5px}.timeslot .multiselect[data-v-c064bb1a] .multiselect__tags:not(:hover):not(:focus):not(:active){border:1px solid rgba(0,0,0,0)}.timeslot input[type=text][data-v-c064bb1a]{width:50%;margin:0;margin-bottom:5px}.timeslot input[type=text].timeslot--start[data-v-c064bb1a]{margin-right:5px;width:calc(50% - 5px)}.timeslot .invalid-hint[data-v-c064bb1a]{color:var(--color-text-maxcontrast)}","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Checks/RequestTime.vue"],names:[],mappings:"AA+FA,2BACC,YAAA,CACA,WAAA,CACA,cAAA,CACA,eAAA,CAEA,wCACC,UAAA,CACA,iBAAA,CAGD,gGACC,8BAAA,CAGD,4CACC,SAAA,CACA,QAAA,CACA,iBAAA,CAEA,4DACC,gBAAA,CACA,qBAAA,CAIF,yCACC,mCAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.timeslot {\n\tdisplay: flex;\n\tflex-grow: 1;\n\tflex-wrap: wrap;\n\tmax-width: 180px;\n\n\t.multiselect {\n\t\twidth: 100%;\n\t\tmargin-bottom: 5px;\n\t}\n\n\t.multiselect::v-deep .multiselect__tags:not(:hover):not(:focus):not(:active) {\n\t\tborder: 1px solid transparent;\n\t}\n\n\tinput[type=text] {\n\t\twidth: 50%;\n\t\tmargin: 0;\n\t\tmargin-bottom: 5px;\n\n\t\t&.timeslot--start {\n\t\t\tmargin-right: 5px;\n\t\t\twidth: calc(50% - 5px);\n\t\t}\n\t}\n\n\t.invalid-hint {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n}\n"],sourceRoot:""}]),n.Z=a},37411:function(t,n,e){"use strict";var i=e(87537),o=e.n(i),r=e(23645),a=e.n(r)()(o());a.push([t.id,".multiselect[data-v-efaa5484],input[type=text][data-v-efaa5484]{width:100%}.option__icon[data-v-efaa5484]{display:inline-block;min-width:30px;background-position:left}","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Checks/RequestURL.vue"],names:[],mappings:"AA2IA,gEACC,UAAA,CAGD,+BACC,oBAAA,CACA,cAAA,CACA,wBAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.multiselect, input[type='text'] {\n\twidth: 100%;\n}\n\n.option__icon {\n\tdisplay: inline-block;\n\tmin-width: 30px;\n\tbackground-position: left;\n}\n"],sourceRoot:""}]),n.Z=a},69762:function(t,n,e){"use strict";var i=e(87537),o=e.n(i),r=e(23645),a=e.n(r)()(o());a.push([t.id,".event[data-v-01681aaa]{margin-bottom:5px}.isComplex img[data-v-01681aaa]{vertical-align:text-top}.isComplex span[data-v-01681aaa]{padding-top:2px;display:inline-block}.multiselect[data-v-01681aaa]{width:100%;max-width:550px;margin-top:4px}.multiselect[data-v-01681aaa] .multiselect__single{display:flex}.multiselect[data-v-01681aaa]:not(.multiselect--active) .multiselect__tags{background-color:var(--color-main-background) !important;border:1px solid rgba(0,0,0,0)}.multiselect[data-v-01681aaa] .multiselect__tags{background-color:var(--color-main-background) !important;height:auto;min-height:34px}.multiselect[data-v-01681aaa]:not(.multiselect--disabled) .multiselect__tags .multiselect__single{background-image:var(--icon-triangle-s-dark);background-repeat:no-repeat;background-position:right center}input[data-v-01681aaa]{border:1px solid rgba(0,0,0,0)}.option__title[data-v-01681aaa]{margin-left:5px;color:var(--color-main-text)}.option__title_single[data-v-01681aaa]{font-weight:900}.option__icon[data-v-01681aaa]{width:16px;height:16px;filter:var(--background-invert-if-dark)}.eventlist img[data-v-01681aaa],.eventlist .text[data-v-01681aaa]{vertical-align:middle}","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Event.vue"],names:[],mappings:"AAiFA,wBACC,iBAAA,CAGA,gCACC,uBAAA,CAED,iCACC,eAAA,CACA,oBAAA,CAGF,8BACC,UAAA,CACA,eAAA,CACA,cAAA,CAED,mDACC,YAAA,CAED,2EACC,wDAAA,CACA,8BAAA,CAGD,iDACC,wDAAA,CACA,WAAA,CACA,eAAA,CAGD,kGACC,4CAAA,CACA,2BAAA,CACA,gCAAA,CAGD,uBACC,8BAAA,CAGD,gCACC,eAAA,CACA,4BAAA,CAED,uCACC,eAAA,CAGD,+BACC,UAAA,CACA,WAAA,CACA,uCAAA,CAGD,kEAEC,qBAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.event {\n\tmargin-bottom: 5px;\n}\n.isComplex {\n\timg {\n\t\tvertical-align: text-top;\n\t}\n\tspan {\n\t\tpadding-top: 2px;\n\t\tdisplay: inline-block;\n\t}\n}\n.multiselect {\n\twidth: 100%;\n\tmax-width: 550px;\n\tmargin-top: 4px;\n}\n.multiselect::v-deep .multiselect__single {\n\tdisplay: flex;\n}\n.multiselect:not(.multiselect--active)::v-deep .multiselect__tags {\n\tbackground-color: var(--color-main-background) !important;\n\tborder: 1px solid transparent;\n}\n\n.multiselect::v-deep .multiselect__tags {\n\tbackground-color: var(--color-main-background) !important;\n\theight: auto;\n\tmin-height: 34px;\n}\n\n.multiselect:not(.multiselect--disabled)::v-deep .multiselect__tags .multiselect__single {\n\tbackground-image: var(--icon-triangle-s-dark);\n\tbackground-repeat: no-repeat;\n\tbackground-position: right center;\n}\n\ninput {\n\tborder: 1px solid transparent;\n}\n\n.option__title {\n\tmargin-left: 5px;\n\tcolor: var(--color-main-text);\n}\n.option__title_single {\n\tfont-weight: 900;\n}\n\n.option__icon {\n\twidth: 16px;\n\theight: 16px;\n\tfilter: var(--background-invert-if-dark);\n}\n\n.eventlist img,\n.eventlist .text {\n\tvertical-align: middle;\n}\n"],sourceRoot:""}]),n.Z=a},11040:function(t,n,e){"use strict";var i=e(87537),o=e.n(i),r=e(23645),a=e.n(r)()(o());a.push([t.id,".actions__item[data-v-90eae5ec]{display:flex;flex-wrap:wrap;flex-direction:column;flex-grow:1;margin-left:-1px;padding:10px;border-radius:var(--border-radius-large);margin-right:20px;margin-bottom:20px}.actions__item .icon[data-v-90eae5ec]{display:block;width:100%;height:50px;background-size:50px 50px;background-position:center center;margin-top:10px;margin-bottom:10px;background-repeat:no-repeat}.actions__item__description[data-v-90eae5ec]{text-align:center;flex-grow:1;display:flex;flex-direction:column;align-items:center}.actions__item_options[data-v-90eae5ec]{width:100%;margin-top:10px;padding-left:60px}h3[data-v-90eae5ec],small[data-v-90eae5ec]{padding:6px;display:block}h3[data-v-90eae5ec]{margin:0;padding:0;font-weight:600}small[data-v-90eae5ec]{font-size:10pt;flex-grow:1}.colored[data-v-90eae5ec]:not(.more){background-color:var(--color-primary-element)}.colored:not(.more) h3[data-v-90eae5ec],.colored:not(.more) small[data-v-90eae5ec]{color:var(--color-primary-text)}.actions__item[data-v-90eae5ec]:not(.colored){flex-direction:row}.actions__item:not(.colored) .actions__item__description[data-v-90eae5ec]{padding-top:5px;text-align:left;width:calc(100% - 105px)}.actions__item:not(.colored) .actions__item__description small[data-v-90eae5ec]{padding:0}.actions__item:not(.colored) .icon[data-v-90eae5ec]{width:50px;margin:0;margin-right:10px}.actions__item:not(.colored) .icon[data-v-90eae5ec]:not(.icon-invert){filter:var(--background-invert-if-bright)}.colored .icon-invert[data-v-90eae5ec]{filter:var(--background-invert-if-bright)}","",{version:3,sources:["webpack://./apps/workflowengine/src/styles/operation.scss"],names:[],mappings:"AAAA,gCACC,YAAA,CACA,cAAA,CACA,qBAAA,CACA,WAAA,CACA,gBAAA,CACA,YAAA,CACA,wCAAA,CACA,iBAAA,CACA,kBAAA,CAED,sCACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,yBAAA,CACA,iCAAA,CACA,eAAA,CACA,kBAAA,CACA,2BAAA,CAED,6CACC,iBAAA,CACA,WAAA,CACA,YAAA,CACA,qBAAA,CACA,kBAAA,CAED,wCACC,UAAA,CACA,eAAA,CACA,iBAAA,CAED,2CACC,WAAA,CACA,aAAA,CAED,oBACC,QAAA,CACA,SAAA,CACA,eAAA,CAED,uBACC,cAAA,CACA,WAAA,CAGD,qCACC,6CAAA,CACA,mFACC,+BAAA,CAIF,8CACC,kBAAA,CAEA,0EACC,eAAA,CACA,eAAA,CACA,wBAAA,CACA,gFACC,SAAA,CAGF,oDACC,UAAA,CACA,QAAA,CACA,iBAAA,CACA,sEACC,yCAAA,CAKH,uCACC,yCAAA",sourcesContent:[".actions__item {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tflex-direction: column;\n\tflex-grow: 1;\n\tmargin-left: -1px;\n\tpadding: 10px;\n\tborder-radius: var(--border-radius-large);\n\tmargin-right: 20px;\n\tmargin-bottom: 20px;\n}\n.actions__item .icon {\n\tdisplay: block;\n\twidth: 100%;\n\theight: 50px;\n\tbackground-size: 50px 50px;\n\tbackground-position: center center;\n\tmargin-top: 10px;\n\tmargin-bottom: 10px;\n\tbackground-repeat: no-repeat;\n}\n.actions__item__description {\n\ttext-align: center;\n\tflex-grow: 1;\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n}\n.actions__item_options {\n\twidth: 100%;\n\tmargin-top: 10px;\n\tpadding-left: 60px;\n}\nh3, small {\n\tpadding: 6px;\n\tdisplay: block;\n}\nh3 {\n\tmargin: 0;\n\tpadding: 0;\n\tfont-weight: 600;\n}\nsmall {\n\tfont-size: 10pt;\n\tflex-grow: 1;\n}\n\n.colored:not(.more) {\n\tbackground-color: var(--color-primary-element);\n\th3, small {\n\t\tcolor: var(--color-primary-text)\n\t}\n}\n\n.actions__item:not(.colored) {\n\tflex-direction: row;\n\n\t.actions__item__description {\n\t\tpadding-top: 5px;\n\t\ttext-align: left;\n\t\twidth: calc(100% - 105px);\n\t\tsmall {\n\t\t\tpadding: 0;\n\t\t}\n\t}\n\t.icon {\n\t\twidth: 50px;\n\t\tmargin: 0;\n\t\tmargin-right: 10px;\n\t\t&:not(.icon-invert) {\n\t\t\tfilter: var(--background-invert-if-bright);\n\t\t}\n\t}\n}\n\n.colored .icon-invert {\n\tfilter: var(--background-invert-if-bright);\n}\n"],sourceRoot:""}]),n.Z=a},29413:function(t,n,e){"use strict";var i=e(87537),o=e.n(i),r=e(23645),a=e.n(r)()(o());a.push([t.id,".buttons[data-v-a857d7a6]{display:flex;justify-content:end}.buttons button[data-v-a857d7a6]{margin-left:5px}.buttons button[data-v-a857d7a6]:last-child{margin-right:10px}.error-message[data-v-a857d7a6]{float:right;margin-right:10px}.flow-icon[data-v-a857d7a6]{width:44px}.rule[data-v-a857d7a6]{display:flex;flex-wrap:wrap;border-left:5px solid var(--color-primary-element)}.rule .trigger[data-v-a857d7a6],.rule .action[data-v-a857d7a6]{flex-grow:1;min-height:100px;max-width:700px}.rule .action[data-v-a857d7a6]{max-width:400px;position:relative}.rule .icon-confirm[data-v-a857d7a6]{background-position:right 27px;padding-right:20px;margin-right:20px}.trigger p[data-v-a857d7a6],.action p[data-v-a857d7a6]{min-height:34px;display:flex}.trigger p>span[data-v-a857d7a6],.action p>span[data-v-a857d7a6]{min-width:50px;text-align:right;color:var(--color-text-maxcontrast);padding-right:10px;padding-top:6px}.trigger p .multiselect[data-v-a857d7a6],.action p .multiselect[data-v-a857d7a6]{flex-grow:1;max-width:300px}.trigger p:first-child span[data-v-a857d7a6]{padding-top:3px}.check--add[data-v-a857d7a6]{background-position:7px center;background-color:rgba(0,0,0,0);padding-left:6px;margin:0;width:180px;border-radius:var(--border-radius);color:var(--color-text-maxcontrast);font-weight:normal;text-align:left;font-size:1em}@media(max-width: 1400px){.rule[data-v-a857d7a6],.rule .trigger[data-v-a857d7a6],.rule .action[data-v-a857d7a6]{width:100%;max-width:100%}.rule .flow-icon[data-v-a857d7a6]{display:none}}","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Rule.vue"],names:[],mappings:"AA6LA,0BACC,YAAA,CACA,mBAAA,CAEA,iCACC,eAAA,CAED,4CACC,iBAAA,CAIF,gCACC,WAAA,CACA,iBAAA,CAGD,4BACC,UAAA,CAGD,uBACC,YAAA,CACA,cAAA,CACA,kDAAA,CAEA,+DACC,WAAA,CACA,gBAAA,CACA,eAAA,CAED,+BACC,eAAA,CACA,iBAAA,CAED,qCACC,8BAAA,CACA,kBAAA,CACA,iBAAA,CAGF,uDACC,eAAA,CACA,YAAA,CAEA,iEACC,cAAA,CACA,gBAAA,CACA,mCAAA,CACA,kBAAA,CACA,eAAA,CAED,iFACC,WAAA,CACA,eAAA,CAGF,6CACE,eAAA,CAGF,6BACC,8BAAA,CACA,8BAAA,CACA,gBAAA,CACA,QAAA,CACA,WAAA,CACA,kCAAA,CACA,mCAAA,CACA,kBAAA,CACA,eAAA,CACA,aAAA,CAGD,0BAEE,sFACC,UAAA,CACA,cAAA,CAED,kCACC,YAAA,CAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.buttons {\n\tdisplay: flex;\n\tjustify-content: end;\n\n\tbutton {\n\t\tmargin-left: 5px;\n\t}\n\tbutton:last-child{\n\t\tmargin-right: 10px;\n\t}\n}\n\n.error-message {\n\tfloat: right;\n\tmargin-right: 10px;\n}\n\n.flow-icon {\n\twidth: 44px;\n}\n\n.rule {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tborder-left: 5px solid var(--color-primary-element);\n\n\t.trigger, .action {\n\t\tflex-grow: 1;\n\t\tmin-height: 100px;\n\t\tmax-width: 700px;\n\t}\n\t.action {\n\t\tmax-width: 400px;\n\t\tposition: relative;\n\t}\n\t.icon-confirm {\n\t\tbackground-position: right 27px;\n\t\tpadding-right: 20px;\n\t\tmargin-right: 20px;\n\t}\n}\n.trigger p, .action p {\n\tmin-height: 34px;\n\tdisplay: flex;\n\n\t& > span {\n\t\tmin-width: 50px;\n\t\ttext-align: right;\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tpadding-right: 10px;\n\t\tpadding-top: 6px;\n\t}\n\t.multiselect {\n\t\tflex-grow: 1;\n\t\tmax-width: 300px;\n\t}\n}\n.trigger p:first-child span {\n\t\tpadding-top: 3px;\n}\n\n.check--add {\n\tbackground-position: 7px center;\n\tbackground-color: transparent;\n\tpadding-left: 6px;\n\tmargin: 0;\n\twidth: 180px;\n\tborder-radius: var(--border-radius);\n\tcolor: var(--color-text-maxcontrast);\n\tfont-weight: normal;\n\ttext-align: left;\n\tfont-size: 1em;\n}\n\n@media (max-width:1400px) {\n\t.rule {\n\t\t&, .trigger, .action {\n\t\t\twidth: 100%;\n\t\t\tmax-width: 100%;\n\t\t}\n\t\t.flow-icon {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n\n"],sourceRoot:""}]),n.Z=a},24615:function(t,n,e){"use strict";var i=e(87537),o=e.n(i),r=e(23645),a=e.n(r)()(o());a.push([t.id,"#workflowengine[data-v-38a7a2e5]{border-bottom:1px solid var(--color-border)}.section[data-v-38a7a2e5]{max-width:100vw}.section h2.configured-flows[data-v-38a7a2e5]{margin-top:50px;margin-bottom:0}.actions[data-v-38a7a2e5]{display:flex;flex-wrap:wrap;max-width:1200px}.actions .actions__item[data-v-38a7a2e5]{max-width:280px;flex-basis:250px}.actions__more[data-v-38a7a2e5]{margin-bottom:10px}.slide-enter-active[data-v-38a7a2e5]{-moz-transition-duration:.3s;-webkit-transition-duration:.3s;-o-transition-duration:.3s;transition-duration:.3s;-moz-transition-timing-function:ease-in;-webkit-transition-timing-function:ease-in;-o-transition-timing-function:ease-in;transition-timing-function:ease-in}.slide-leave-active[data-v-38a7a2e5]{-moz-transition-duration:.3s;-webkit-transition-duration:.3s;-o-transition-duration:.3s;transition-duration:.3s;-moz-transition-timing-function:cubic-bezier(0, 1, 0.5, 1);-webkit-transition-timing-function:cubic-bezier(0, 1, 0.5, 1);-o-transition-timing-function:cubic-bezier(0, 1, 0.5, 1);transition-timing-function:cubic-bezier(0, 1, 0.5, 1)}.slide-enter-to[data-v-38a7a2e5],.slide-leave[data-v-38a7a2e5]{max-height:500px;overflow:hidden}.slide-enter[data-v-38a7a2e5],.slide-leave-to[data-v-38a7a2e5]{overflow:hidden;max-height:0;padding-top:0;padding-bottom:0}.actions__item[data-v-38a7a2e5]{display:flex;flex-wrap:wrap;flex-direction:column;flex-grow:1;margin-left:-1px;padding:10px;border-radius:var(--border-radius-large);margin-right:20px;margin-bottom:20px}.actions__item .icon[data-v-38a7a2e5]{display:block;width:100%;height:50px;background-size:50px 50px;background-position:center center;margin-top:10px;margin-bottom:10px;background-repeat:no-repeat}.actions__item__description[data-v-38a7a2e5]{text-align:center;flex-grow:1;display:flex;flex-direction:column;align-items:center}.actions__item_options[data-v-38a7a2e5]{width:100%;margin-top:10px;padding-left:60px}h3[data-v-38a7a2e5],small[data-v-38a7a2e5]{padding:6px;display:block}h3[data-v-38a7a2e5]{margin:0;padding:0;font-weight:600}small[data-v-38a7a2e5]{font-size:10pt;flex-grow:1}.colored[data-v-38a7a2e5]:not(.more){background-color:var(--color-primary-element)}.colored:not(.more) h3[data-v-38a7a2e5],.colored:not(.more) small[data-v-38a7a2e5]{color:var(--color-primary-text)}.actions__item[data-v-38a7a2e5]:not(.colored){flex-direction:row}.actions__item:not(.colored) .actions__item__description[data-v-38a7a2e5]{padding-top:5px;text-align:left;width:calc(100% - 105px)}.actions__item:not(.colored) .actions__item__description small[data-v-38a7a2e5]{padding:0}.actions__item:not(.colored) .icon[data-v-38a7a2e5]{width:50px;margin:0;margin-right:10px}.actions__item:not(.colored) .icon[data-v-38a7a2e5]:not(.icon-invert){filter:var(--background-invert-if-bright)}.colored .icon-invert[data-v-38a7a2e5]{filter:var(--background-invert-if-bright)}.actions__item.more[data-v-38a7a2e5]{background-color:var(--color-background-dark)}","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Workflow.vue","webpack://./apps/workflowengine/src/styles/operation.scss"],names:[],mappings:"AAkHA,iCACC,2CAAA,CAED,0BACC,eAAA,CAEA,8CACC,eAAA,CACA,eAAA,CAGF,0BACC,YAAA,CACA,cAAA,CACA,gBAAA,CACA,yCACC,eAAA,CACA,gBAAA,CAGF,gCACC,kBAAA,CAGD,qCACC,4BAAA,CACA,+BAAA,CACA,0BAAA,CACA,uBAAA,CACA,uCAAA,CACA,0CAAA,CACA,qCAAA,CACA,kCAAA,CAGD,qCACC,4BAAA,CACA,+BAAA,CACA,0BAAA,CACA,uBAAA,CACA,0DAAA,CACA,6DAAA,CACA,wDAAA,CACA,qDAAA,CAGD,+DACC,gBAAA,CACA,eAAA,CAGD,+DACC,eAAA,CACA,YAAA,CACA,aAAA,CACA,gBAAA,CCzKD,gCACC,YAAA,CACA,cAAA,CACA,qBAAA,CACA,WAAA,CACA,gBAAA,CACA,YAAA,CACA,wCAAA,CACA,iBAAA,CACA,kBAAA,CAED,sCACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,yBAAA,CACA,iCAAA,CACA,eAAA,CACA,kBAAA,CACA,2BAAA,CAED,6CACC,iBAAA,CACA,WAAA,CACA,YAAA,CACA,qBAAA,CACA,kBAAA,CAED,wCACC,UAAA,CACA,eAAA,CACA,iBAAA,CAED,2CACC,WAAA,CACA,aAAA,CAED,oBACC,QAAA,CACA,SAAA,CACA,eAAA,CAED,uBACC,cAAA,CACA,WAAA,CAGD,qCACC,6CAAA,CACA,mFACC,+BAAA,CAIF,8CACC,kBAAA,CAEA,0EACC,eAAA,CACA,eAAA,CACA,wBAAA,CACA,gFACC,SAAA,CAGF,oDACC,UAAA,CACA,QAAA,CACA,iBAAA,CACA,sEACC,yCAAA,CAKH,uCACC,yCAAA,CDkGD,qCACC,6CAAA",sourcesContent:['\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n#workflowengine {\n\tborder-bottom: 1px solid var(--color-border);\n}\n.section {\n\tmax-width: 100vw;\n\n\th2.configured-flows {\n\t\tmargin-top: 50px;\n\t\tmargin-bottom: 0;\n\t}\n}\n.actions {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tmax-width: 1200px;\n\t.actions__item {\n\t\tmax-width: 280px;\n\t\tflex-basis: 250px;\n\t}\n}\n.actions__more {\n\tmargin-bottom: 10px;\n}\n\n.slide-enter-active {\n\t-moz-transition-duration: 0.3s;\n\t-webkit-transition-duration: 0.3s;\n\t-o-transition-duration: 0.3s;\n\ttransition-duration: 0.3s;\n\t-moz-transition-timing-function: ease-in;\n\t-webkit-transition-timing-function: ease-in;\n\t-o-transition-timing-function: ease-in;\n\ttransition-timing-function: ease-in;\n}\n\n.slide-leave-active {\n\t-moz-transition-duration: 0.3s;\n\t-webkit-transition-duration: 0.3s;\n\t-o-transition-duration: 0.3s;\n\ttransition-duration: 0.3s;\n\t-moz-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n\t-webkit-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n\t-o-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n\ttransition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n}\n\n.slide-enter-to, .slide-leave {\n\tmax-height: 500px;\n\toverflow: hidden;\n}\n\n.slide-enter, .slide-leave-to {\n\toverflow: hidden;\n\tmax-height: 0;\n\tpadding-top: 0;\n\tpadding-bottom: 0;\n}\n\n@import "./../styles/operation";\n\n.actions__item.more {\n\tbackground-color: var(--color-background-dark);\n}\n',".actions__item {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tflex-direction: column;\n\tflex-grow: 1;\n\tmargin-left: -1px;\n\tpadding: 10px;\n\tborder-radius: var(--border-radius-large);\n\tmargin-right: 20px;\n\tmargin-bottom: 20px;\n}\n.actions__item .icon {\n\tdisplay: block;\n\twidth: 100%;\n\theight: 50px;\n\tbackground-size: 50px 50px;\n\tbackground-position: center center;\n\tmargin-top: 10px;\n\tmargin-bottom: 10px;\n\tbackground-repeat: no-repeat;\n}\n.actions__item__description {\n\ttext-align: center;\n\tflex-grow: 1;\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n}\n.actions__item_options {\n\twidth: 100%;\n\tmargin-top: 10px;\n\tpadding-left: 60px;\n}\nh3, small {\n\tpadding: 6px;\n\tdisplay: block;\n}\nh3 {\n\tmargin: 0;\n\tpadding: 0;\n\tfont-weight: 600;\n}\nsmall {\n\tfont-size: 10pt;\n\tflex-grow: 1;\n}\n\n.colored:not(.more) {\n\tbackground-color: var(--color-primary-element);\n\th3, small {\n\t\tcolor: var(--color-primary-text)\n\t}\n}\n\n.actions__item:not(.colored) {\n\tflex-direction: row;\n\n\t.actions__item__description {\n\t\tpadding-top: 5px;\n\t\ttext-align: left;\n\t\twidth: calc(100% - 105px);\n\t\tsmall {\n\t\t\tpadding: 0;\n\t\t}\n\t}\n\t.icon {\n\t\twidth: 50px;\n\t\tmargin: 0;\n\t\tmargin-right: 10px;\n\t\t&:not(.icon-invert) {\n\t\t\tfilter: var(--background-invert-if-bright);\n\t\t}\n\t}\n}\n\n.colored .icon-invert {\n\tfilter: var(--background-invert-if-bright);\n}\n"],sourceRoot:""}]),n.Z=a},53996:function(t,n,e){"use strict";var i=e(87537),o=e.n(i),r=e(23645),a=e.n(r)()(o());a.push([t.id,"\n.multiselect[data-v-bd5cb750], input[type='text'][data-v-bd5cb750] {\n\twidth: 100%;\n}\n.multiselect .multiselect__content-wrapper li>span[data-v-bd5cb750] {\n\tdisplay: flex;\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n.multiselect[data-v-bd5cb750] .multiselect__single {\n\twidth: 100%;\n\tdisplay: flex;\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n.option__icon[data-v-bd5cb750] {\n\tdisplay: inline-block;\n\tmin-width: 30px;\n\tbackground-position: left;\n}\n.option__title[data-v-bd5cb750] {\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Checks/RequestUserAgent.vue"],names:[],mappings:";AA8HA;CACA,WAAA;AACA;AAEA;CACA,aAAA;CACA,mBAAA;CACA,gBAAA;CACA,uBAAA;AACA;AACA;CACA,WAAA;CACA,aAAA;CACA,mBAAA;CACA,gBAAA;CACA,uBAAA;AACA;AACA;CACA,qBAAA;CACA,eAAA;CACA,yBAAA;AACA;AACA;CACA,mBAAA;CACA,gBAAA;CACA,uBAAA;AACA",sourcesContent:["\x3c!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n --\x3e\n\n<template>\n\t<div>\n\t\t<NcMultiselect :value=\"currentValue\"\n\t\t\t:placeholder=\"t('workflowengine', 'Select a user agent')\"\n\t\t\tlabel=\"label\"\n\t\t\ttrack-by=\"pattern\"\n\t\t\t:options=\"options\"\n\t\t\t:multiple=\"false\"\n\t\t\t:tagging=\"false\"\n\t\t\t@input=\"setValue\">\n\t\t\t<template slot=\"singleLabel\" slot-scope=\"props\">\n\t\t\t\t<span class=\"option__icon\" :class=\"props.option.icon\" />\n\t\t\t\t\x3c!-- v-html can be used here as t() always passes our translated strings though DOMPurify.sanitize --\x3e\n\t\t\t\t\x3c!-- eslint-disable-next-line vue/no-v-html --\x3e\n\t\t\t\t<span class=\"option__title option__title_single\" v-html=\"props.option.label\" />\n\t\t\t</template>\n\t\t\t<template slot=\"option\" slot-scope=\"props\">\n\t\t\t\t<span class=\"option__icon\" :class=\"props.option.icon\" />\n\t\t\t\t\x3c!-- eslint-disable-next-line vue/no-v-html --\x3e\n\t\t\t\t<span v-if=\"props.option.$groupLabel\" class=\"option__title\" v-html=\"props.option.$groupLabel\" />\n\t\t\t\t\x3c!-- eslint-disable-next-line vue/no-v-html --\x3e\n\t\t\t\t<span v-else class=\"option__title\" v-html=\"props.option.label\" />\n\t\t\t</template>\n\t\t</NcMultiselect>\n\t\t<input v-if=\"!isPredefined\"\n\t\t\ttype=\"text\"\n\t\t\t:value=\"currentValue.pattern\"\n\t\t\t@input=\"updateCustom\">\n\t</div>\n</template>\n\n<script>\nimport NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect'\nimport valueMixin from '../../mixins/valueMixin'\n\nexport default {\n\tname: 'RequestUserAgent',\n\tcomponents: {\n\t\tNcMultiselect,\n\t},\n\tmixins: [\n\t\tvalueMixin,\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tnewValue: '',\n\t\t\tpredefinedTypes: [\n\t\t\t\t{ pattern: 'android', label: t('workflowengine', 'Android client'), icon: 'icon-phone' },\n\t\t\t\t{ pattern: 'ios', label: t('workflowengine', 'iOS client'), icon: 'icon-phone' },\n\t\t\t\t{ pattern: 'desktop', label: t('workflowengine', 'Desktop client'), icon: 'icon-desktop' },\n\t\t\t\t{ pattern: 'mail', label: t('workflowengine', 'Thunderbird & Outlook addons'), icon: 'icon-mail' },\n\t\t\t],\n\t\t}\n\t},\n\tcomputed: {\n\t\toptions() {\n\t\t\treturn [...this.predefinedTypes, this.customValue]\n\t\t},\n\t\tmatchingPredefined() {\n\t\t\treturn this.predefinedTypes\n\t\t\t\t.find((type) => this.newValue === type.pattern)\n\t\t},\n\t\tisPredefined() {\n\t\t\treturn !!this.matchingPredefined\n\t\t},\n\t\tcustomValue() {\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom user agent'),\n\t\t\t\tpattern: '',\n\t\t\t}\n\t\t},\n\t\tcurrentValue() {\n\t\t\tif (this.matchingPredefined) {\n\t\t\t\treturn this.matchingPredefined\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom user agent'),\n\t\t\t\tpattern: this.newValue,\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\tvalidateRegex(string) {\n\t\t\tconst regexRegex = /^\\/(.*)\\/([gui]{0,3})$/\n\t\t\tconst result = regexRegex.exec(string)\n\t\t\treturn result !== null\n\t\t},\n\t\tsetValue(value) {\n\t\t\t// TODO: check if value requires a regex and set the check operator according to that\n\t\t\tif (value !== null) {\n\t\t\t\tthis.newValue = value.pattern\n\t\t\t\tthis.$emit('input', this.newValue)\n\t\t\t}\n\t\t},\n\t\tupdateCustom(event) {\n\t\t\tthis.newValue = event.target.value\n\t\t\tthis.$emit('input', this.newValue)\n\t\t},\n\t},\n}\n<\/script>\n<style scoped>\n\t.multiselect, input[type='text'] {\n\t\twidth: 100%;\n\t}\n\n\t.multiselect .multiselect__content-wrapper li>span {\n\t\tdisplay: flex;\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n\t.multiselect::v-deep .multiselect__single {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n\t.option__icon {\n\t\tdisplay: inline-block;\n\t\tmin-width: 30px;\n\t\tbackground-position: left;\n\t}\n\t.option__title {\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n</style>\n"],sourceRoot:""}]),n.Z=a},96906:function(t,n,e){"use strict";var i=e(87537),o=e.n(i),r=e(23645),a=e.n(r)()(o());a.push([t.id,"\n.multiselect[data-v-4bcec2a5] {\n\twidth: 100%;\n}\n","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Checks/RequestUserGroup.vue"],names:[],mappings:";AA4GA;CACA,WAAA;AACA",sourcesContent:["\x3c!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n --\x3e\n\n<template>\n\t<div>\n\t\t<NcMultiselect :value=\"currentValue\"\n\t\t\t:loading=\"status.isLoading && groups.length === 0\"\n\t\t\t:options=\"groups\"\n\t\t\t:multiple=\"false\"\n\t\t\tlabel=\"displayname\"\n\t\t\ttrack-by=\"id\"\n\t\t\t@search-change=\"searchAsync\"\n\t\t\t@input=\"(value) => $emit('input', value.id)\" />\n\t</div>\n</template>\n\n<script>\nimport NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect'\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nconst groups = []\nconst status = {\n\tisLoading: false,\n}\n\nexport default {\n\tname: 'RequestUserGroup',\n\tcomponents: {\n\t\tNcMultiselect,\n\t},\n\tprops: {\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tcheck: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => { return {} },\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tgroups,\n\t\t\tstatus,\n\t\t}\n\t},\n\tcomputed: {\n\t\tcurrentValue() {\n\t\t\treturn this.groups.find(group => group.id === this.value) || null\n\t\t},\n\t},\n\tasync mounted() {\n\t\tif (this.groups.length === 0) {\n\t\t\tawait this.searchAsync('')\n\t\t}\n\t\tif (this.currentValue === null) {\n\t\t\tawait this.searchAsync(this.value)\n\t\t}\n\t},\n\tmethods: {\n\t\tsearchAsync(searchQuery) {\n\t\t\tif (this.status.isLoading) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.status.isLoading = true\n\t\t\treturn axios.get(generateOcsUrl('cloud/groups/details?limit=20&search={searchQuery}', { searchQuery })).then((response) => {\n\t\t\t\tresponse.data.ocs.data.groups.forEach((group) => {\n\t\t\t\t\tthis.addGroup({\n\t\t\t\t\t\tid: group.id,\n\t\t\t\t\t\tdisplayname: group.displayname,\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\tthis.status.isLoading = false\n\t\t\t}, (error) => {\n\t\t\t\tconsole.error('Error while loading group list', error.response)\n\t\t\t})\n\t\t},\n\t\taddGroup(group) {\n\t\t\tconst index = this.groups.findIndex((item) => item.id === group.id)\n\t\t\tif (index === -1) {\n\t\t\t\tthis.groups.push(group)\n\t\t\t}\n\t\t},\n\t},\n}\n<\/script>\n<style scoped>\n\t.multiselect {\n\t\twidth: 100%;\n\t}\n</style>\n"],sourceRoot:""}]),n.Z=a},46700:function(t,n,e){var i={"./af":42786,"./af.js":42786,"./ar":30867,"./ar-dz":14130,"./ar-dz.js":14130,"./ar-kw":96135,"./ar-kw.js":96135,"./ar-ly":56440,"./ar-ly.js":56440,"./ar-ma":47702,"./ar-ma.js":47702,"./ar-sa":16040,"./ar-sa.js":16040,"./ar-tn":37100,"./ar-tn.js":37100,"./ar.js":30867,"./az":31083,"./az.js":31083,"./be":9808,"./be.js":9808,"./bg":68338,"./bg.js":68338,"./bm":67438,"./bm.js":67438,"./bn":8905,"./bn-bd":76225,"./bn-bd.js":76225,"./bn.js":8905,"./bo":11560,"./bo.js":11560,"./br":1278,"./br.js":1278,"./bs":80622,"./bs.js":80622,"./ca":2468,"./ca.js":2468,"./cs":5822,"./cs.js":5822,"./cv":50877,"./cv.js":50877,"./cy":47373,"./cy.js":47373,"./da":24780,"./da.js":24780,"./de":59740,"./de-at":60217,"./de-at.js":60217,"./de-ch":60894,"./de-ch.js":60894,"./de.js":59740,"./dv":5300,"./dv.js":5300,"./el":50837,"./el.js":50837,"./en-au":78348,"./en-au.js":78348,"./en-ca":77925,"./en-ca.js":77925,"./en-gb":22243,"./en-gb.js":22243,"./en-ie":46436,"./en-ie.js":46436,"./en-il":47207,"./en-il.js":47207,"./en-in":44175,"./en-in.js":44175,"./en-nz":76319,"./en-nz.js":76319,"./en-sg":31662,"./en-sg.js":31662,"./eo":92915,"./eo.js":92915,"./es":55655,"./es-do":55251,"./es-do.js":55251,"./es-mx":96112,"./es-mx.js":96112,"./es-us":71146,"./es-us.js":71146,"./es.js":55655,"./et":5603,"./et.js":5603,"./eu":77763,"./eu.js":77763,"./fa":76959,"./fa.js":76959,"./fi":11897,"./fi.js":11897,"./fil":42549,"./fil.js":42549,"./fo":94694,"./fo.js":94694,"./fr":94470,"./fr-ca":63049,"./fr-ca.js":63049,"./fr-ch":52330,"./fr-ch.js":52330,"./fr.js":94470,"./fy":5044,"./fy.js":5044,"./ga":29295,"./ga.js":29295,"./gd":2101,"./gd.js":2101,"./gl":38794,"./gl.js":38794,"./gom-deva":27884,"./gom-deva.js":27884,"./gom-latn":23168,"./gom-latn.js":23168,"./gu":95349,"./gu.js":95349,"./he":24206,"./he.js":24206,"./hi":30094,"./hi.js":30094,"./hr":30316,"./hr.js":30316,"./hu":22138,"./hu.js":22138,"./hy-am":11423,"./hy-am.js":11423,"./id":29218,"./id.js":29218,"./is":90135,"./is.js":90135,"./it":90626,"./it-ch":10150,"./it-ch.js":10150,"./it.js":90626,"./ja":39183,"./ja.js":39183,"./jv":24286,"./jv.js":24286,"./ka":12105,"./ka.js":12105,"./kk":47772,"./kk.js":47772,"./km":18758,"./km.js":18758,"./kn":79282,"./kn.js":79282,"./ko":33730,"./ko.js":33730,"./ku":1408,"./ku.js":1408,"./ky":33291,"./ky.js":33291,"./lb":36841,"./lb.js":36841,"./lo":55466,"./lo.js":55466,"./lt":57010,"./lt.js":57010,"./lv":37595,"./lv.js":37595,"./me":39861,"./me.js":39861,"./mi":35493,"./mi.js":35493,"./mk":95966,"./mk.js":95966,"./ml":87341,"./ml.js":87341,"./mn":5115,"./mn.js":5115,"./mr":10370,"./mr.js":10370,"./ms":9847,"./ms-my":41237,"./ms-my.js":41237,"./ms.js":9847,"./mt":72126,"./mt.js":72126,"./my":56165,"./my.js":56165,"./nb":64924,"./nb.js":64924,"./ne":16744,"./ne.js":16744,"./nl":93901,"./nl-be":59814,"./nl-be.js":59814,"./nl.js":93901,"./nn":83877,"./nn.js":83877,"./oc-lnc":92135,"./oc-lnc.js":92135,"./pa-in":15858,"./pa-in.js":15858,"./pl":64495,"./pl.js":64495,"./pt":89520,"./pt-br":57971,"./pt-br.js":57971,"./pt.js":89520,"./ro":96459,"./ro.js":96459,"./ru":21793,"./ru.js":21793,"./sd":40950,"./sd.js":40950,"./se":10490,"./se.js":10490,"./si":90124,"./si.js":90124,"./sk":64249,"./sk.js":64249,"./sl":14985,"./sl.js":14985,"./sq":51104,"./sq.js":51104,"./sr":49131,"./sr-cyrl":79915,"./sr-cyrl.js":79915,"./sr.js":49131,"./ss":85893,"./ss.js":85893,"./sv":98760,"./sv.js":98760,"./sw":91172,"./sw.js":91172,"./ta":27333,"./ta.js":27333,"./te":23110,"./te.js":23110,"./tet":52095,"./tet.js":52095,"./tg":27321,"./tg.js":27321,"./th":9041,"./th.js":9041,"./tk":19005,"./tk.js":19005,"./tl-ph":75768,"./tl-ph.js":75768,"./tlh":89444,"./tlh.js":89444,"./tr":72397,"./tr.js":72397,"./tzl":28254,"./tzl.js":28254,"./tzm":51106,"./tzm-latn":30699,"./tzm-latn.js":30699,"./tzm.js":51106,"./ug-cn":9288,"./ug-cn.js":9288,"./uk":67691,"./uk.js":67691,"./ur":13795,"./ur.js":13795,"./uz":6791,"./uz-latn":60588,"./uz-latn.js":60588,"./uz.js":6791,"./vi":65666,"./vi.js":65666,"./x-pseudo":14378,"./x-pseudo.js":14378,"./yo":75805,"./yo.js":75805,"./zh-cn":83839,"./zh-cn.js":83839,"./zh-hk":55726,"./zh-hk.js":55726,"./zh-mo":99807,"./zh-mo.js":99807,"./zh-tw":74152,"./zh-tw.js":74152};function o(t){var n=r(t);return e(n)}function r(t){if(!e.o(i,t)){var n=new Error("Cannot find module '"+t+"'");throw n.code="MODULE_NOT_FOUND",n}return i[t]}o.keys=function(){return Object.keys(i)},o.resolve=r,t.exports=o,o.id=46700}},i={};function o(t){var n=i[t];if(void 0!==n)return n.exports;var r=i[t]={id:t,loaded:!1,exports:{}};return e[t].call(r.exports,r,r.exports,o),r.loaded=!0,r.exports}o.m=e,o.amdD=function(){throw new Error("define cannot be used indirect")},o.amdO={},n=[],o.O=function(t,e,i,r){if(!e){var a=1/0;for(u=0;u<n.length;u++){e=n[u][0],i=n[u][1],r=n[u][2];for(var s=!0,l=0;l<e.length;l++)(!1&r||a>=r)&&Object.keys(o.O).every((function(t){return o.O[t](e[l])}))?e.splice(l--,1):(s=!1,r<a&&(a=r));if(s){n.splice(u--,1);var c=i();void 0!==c&&(t=c)}}return t}r=r||0;for(var u=n.length;u>0&&n[u-1][2]>r;u--)n[u]=n[u-1];n[u]=[e,i,r]},o.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(n,{a:n}),n},o.d=function(t,n){for(var e in n)o.o(n,e)&&!o.o(t,e)&&Object.defineProperty(t,e,{enumerable:!0,get:n[e]})},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),o.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},o.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},o.nmd=function(t){return t.paths=[],t.children||(t.children=[]),t},o.j=8318,function(){o.b=document.baseURI||self.location.href;var t={8318:0};o.O.j=function(n){return 0===t[n]};var n=function(n,e){var i,r,a=e[0],s=e[1],l=e[2],c=0;if(a.some((function(n){return 0!==t[n]}))){for(i in s)o.o(s,i)&&(o.m[i]=s[i]);if(l)var u=l(o)}for(n&&n(e);c<a.length;c++)r=a[c],o.o(t,r)&&t[r]&&t[r][0](),t[r]=0;return o.O(u)},e=self.webpackChunknextcloud=self.webpackChunknextcloud||[];e.forEach(n.bind(null,0)),e.push=n.bind(null,e.push.bind(e))}(),o.nc=void 0;var r=o.O(void 0,[7874],(function(){return o(36620)}));r=o.O(r)}(); -//# sourceMappingURL=workflowengine-workflowengine.js.map?v=04a50174f84824030817
\ No newline at end of file +!function(){var n,e={36620:function(n,e,i){"use strict";var o=i(20144),r=i(20629),a=i(4820),s=i(16453),l=i(79753),c=0===(0,s.loadState)("workflowengine","scope")?"global":"user",u=function(t){return(0,l.generateOcsUrl)("apps/workflowengine/api/v1/workflows/{scopeValue}",{scopeValue:c})+t+"?format=json"},p=i(10128);function A(t,n,e,i,o,r,a){try{var s=t[r](a),l=s.value}catch(t){return void e(t)}s.done?n(l):Promise.resolve(l).then(i,o)}function d(t){return function(){var n=this,e=arguments;return new Promise((function(i,o){var r=t.apply(n,e);function a(t){A(r,i,o,a,s,"next",t)}function s(t){A(r,i,o,a,s,"throw",t)}a(void 0)}))}}function m(t,n){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable}))),e.push.apply(e,i)}return e}function f(t){for(var n=1;n<arguments.length;n++){var e=null!=arguments[n]?arguments[n]:{};n%2?m(Object(e),!0).forEach((function(n){h(t,n,e[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):m(Object(e)).forEach((function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))}))}return t}function h(t,n,e){return n in t?Object.defineProperty(t,n,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[n]=e,t}i(65509),o.ZP.use(r.ZP);var g=new r.yh({state:{rules:[],scope:(0,s.loadState)("workflowengine","scope"),appstoreEnabled:(0,s.loadState)("workflowengine","appstoreenabled"),operations:(0,s.loadState)("workflowengine","operators"),plugins:o.ZP.observable({checks:{},operators:{}}),entities:(0,s.loadState)("workflowengine","entities"),events:(0,s.loadState)("workflowengine","entities").map((function(t){return t.events.map((function(n){return f({id:"".concat(t.id,"::").concat(n.eventName),entity:t},n)}))})).flat(),checks:(0,s.loadState)("workflowengine","checks")},mutations:{addRule:function(t,n){t.rules.push(f(f({},n),{},{valid:!0}))},updateRule:function(t,n){var e=t.rules.findIndex((function(t){return n.id===t.id})),i=Object.assign({},n);o.ZP.set(t.rules,e,i)},removeRule:function(t,n){var e=t.rules.findIndex((function(t){return n.id===t.id}));t.rules.splice(e,1)},addPluginCheck:function(t,n){o.ZP.set(t.plugins.checks,n.class,n)},addPluginOperator:function(t,n){n=Object.assign({color:"var(--color-primary-element)"},n,t.operations[n.id]||{}),void 0!==t.operations[n.id]&&o.ZP.set(t.operations,n.id,n)}},actions:{fetchRules:function(t){return d(regeneratorRuntime.mark((function n(){var e,i;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,a.default.get(u(""));case 2:e=n.sent,i=e.data,Object.values(i.ocs.data).flat().forEach((function(n){t.commit("addRule",n)}));case 5:case"end":return n.stop()}}),n)})))()},createNewRule:function(t,n){var e=null,i=[];!1===n.isComplex&&""===n.fixedEntity&&(i=[(e=(e=t.state.entities.find((function(t){return n.entities&&n.entities[0]===t.id})))||Object.values(t.state.entities)[0]).events[0].eventName]),t.commit("addRule",{id:-(new Date).getTime(),class:n.id,entity:e?e.id:n.fixedEntity,events:i,name:"",checks:[{class:null,operator:null,value:""}],operation:n.operation||""})},updateRule:function(t,n){t.commit("updateRule",f(f({},n),{},{events:"string"==typeof n.events?JSON.parse(n.events):n.events}))},removeRule:function(t,n){t.commit("removeRule",n)},pushUpdateRule:function(t,n){return d(regeneratorRuntime.mark((function e(){var i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(0!==t.state.scope){e.next=3;break}return e.next=3,(0,p.confirmPassword)();case 3:if(!(n.id<0)){e.next=9;break}return e.next=6,a.default.post(u(""),n);case 6:i=e.sent,e.next=12;break;case 9:return e.next=11,a.default.put(u("/".concat(n.id)),n);case 11:i=e.sent;case 12:o.ZP.set(n,"id",i.data.ocs.data.id),t.commit("updateRule",n);case 14:case"end":return e.stop()}}),e)})))()},deleteRule:function(t,n){return d(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,p.confirmPassword)();case 2:return e.next=4,a.default.delete(u("/".concat(n.id)));case 4:t.commit("removeRule",n);case 5:case"end":return e.stop()}}),e)})))()},setValid:function(t,n){var e=n.rule,i=n.valid;e.valid=i,t.commit("updateRule",e)}},getters:{getRules:function(t){return t.rules.filter((function(n){return void 0!==t.operations[n.class]})).sort((function(t,n){return t.id-n.id||n.class-t.class}))},getOperationForRule:function(t){return function(n){return t.operations[n.class]}},getEntityForOperation:function(t){return function(n){return t.entities.find((function(t){return n.fixedEntity===t.id}))}},getEventsForOperation:function(t){return function(n){return t.events}},getChecksForEntity:function(t){return function(n){return Object.values(t.checks).filter((function(t){return t.supportedEntities.indexOf(n)>-1||0===t.supportedEntities.length})).map((function(n){return t.plugins.checks[n.id]})).reduce((function(t,n){return t[n.class]=n,t}),{})}}}}),C=i(15168),v=i.n(C),w=i(12945),b=i.n(w),x=i(45400),k=i.n(x),_=i(10861),y=i.n(_),j=i(45947),O=i(14625),E=i(31894),B=i(98266),R=i.n(B),P=i(26932),S={name:"Event",components:{NcMultiselect:R()},props:{rule:{type:Object,required:!0}},computed:{entity:function(){return this.$store.getters.getEntityForOperation(this.operation)},operation:function(){return this.$store.getters.getOperationForRule(this.rule)},allEvents:function(){return this.$store.getters.getEventsForOperation(this.operation)},currentEvent:function(){var t=this;return this.allEvents.filter((function(n){return n.entity.id===t.rule.entity&&-1!==t.rule.events.indexOf(n.eventName)}))}},methods:{updateEvent:function(n){if(0!==n.length){var e,i=this.rule.entity,o=n.map((function(t){return t.entity.id})).filter((function(t,n,e){return e.indexOf(t)===n}));e=o.length>1?o.filter((function(t){return t!==i}))[0]:o[0],this.$set(this.rule,"entity",e),this.$set(this.rule,"events",n.filter((function(t){return t.entity.id===e})).map((function(t){return t.eventName}))),this.$emit("update",this.rule)}else(0,P.K2)(t("workflowengine","At least one event must be selected"))}}},V=i(93379),T=i.n(V),D=i(7795),N=i.n(D),$=i(90569),z=i.n($),F=i(3565),Z=i.n(F),U=i(19216),M=i.n(U),I=i(44589),G=i.n(I),L=i(69762),q={};q.styleTagTransform=G(),q.setAttributes=Z(),q.insert=z().bind(null,"head"),q.domAPI=N(),q.insertStyleElement=M(),T()(L.Z,q),L.Z&&L.Z.locals&&L.Z.locals;var W=i(51900),Y=(0,W.Z)(S,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",{staticClass:"event"},[t.operation.isComplex&&""!==t.operation.fixedEntity?e("div",{staticClass:"isComplex"},[e("img",{staticClass:"option__icon",attrs:{src:t.entity.icon,alt:""}}),t._v(" "),e("span",{staticClass:"option__title option__title_single"},[t._v(t._s(t.operation.triggerHint))])]):e("NcMultiselect",{attrs:{value:t.currentEvent,options:t.allEvents,"track-by":"id",multiple:!0,"auto-limit":!1,disabled:t.allEvents.length<=1},on:{input:t.updateEvent},scopedSlots:t._u([{key:"selection",fn:function(n){var i=n.values,o=n.isOpen;return[i.length&&!o?e("div",{staticClass:"eventlist"},[e("img",{staticClass:"option__icon",attrs:{src:i[0].entity.icon,alt:""}}),t._v(" "),t._l(i,(function(n,o){return e("span",{key:n.id,staticClass:"text option__title option__title_single"},[t._v(t._s(n.displayName)+" "),o+1<i.length?e("span",[t._v(", ")]):t._e()])}))],2):t._e()]}},{key:"option",fn:function(n){return[e("img",{staticClass:"option__icon",attrs:{src:n.option.entity.icon,alt:""}}),t._v(" "),e("span",{staticClass:"option__title"},[t._v(t._s(n.option.displayName))])]}}])})],1)}),[],!1,null,"01681aaa",null).exports,H=i(2649),J=i.n(H),Q={name:"Check",components:{NcActionButton:k(),NcActions:b(),NcMultiselect:R()},directives:{ClickOutside:J()},props:{check:{type:Object,required:!0},rule:{type:Object,required:!0}},data:function(){return{deleteVisible:!1,currentOption:null,currentOperator:null,options:[],valid:!1}},computed:{checks:function(){return this.$store.getters.getChecksForEntity(this.rule.entity)},operators:function(){if(!this.currentOption)return[];var t=this.checks[this.currentOption.class].operators;return"function"==typeof t?t(this.check):t},currentComponent:function(){return this.currentOption?this.checks[this.currentOption.class].component:[]},valuePlaceholder:function(){return this.currentOption&&this.currentOption.placeholder?this.currentOption.placeholder(this.check):""}},watch:{"check.operator":function(){this.validate()}},mounted:function(){var t=this;this.options=Object.values(this.checks),this.currentOption=this.checks[this.check.class],this.currentOperator=this.operators.find((function(n){return n.operator===t.check.operator})),null===this.check.class&&this.$nextTick((function(){return t.$refs.checkSelector.$el.focus()})),this.validate()},methods:{showDelete:function(){this.deleteVisible=!0},hideDelete:function(){this.deleteVisible=!1},validate:function(){this.valid=!0,this.currentOption&&this.currentOption.validate&&(this.valid=!!this.currentOption.validate(this.check)),this.check.invalid=!this.valid,this.$emit("validate",this.valid)},updateCheck:function(){var t=this,n=this.operators.findIndex((function(n){return t.check.operator===n.operator}));this.check.class===this.currentOption.class&&-1!==n||(this.currentOperator=this.operators[0]),this.check.class=this.currentOption.class,this.check.operator=this.currentOperator.operator,this.validate(),this.$emit("update",this.check)}}},K=i(52782),X={};X.styleTagTransform=G(),X.setAttributes=Z(),X.insert=z().bind(null,"head"),X.domAPI=N(),X.insertStyleElement=M(),T()(K.Z,X),K.Z&&K.Z.locals&&K.Z.locals;var tt=(0,W.Z)(Q,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",{directives:[{name:"click-outside",rawName:"v-click-outside",value:t.hideDelete,expression:"hideDelete"}],staticClass:"check",on:{click:t.showDelete}},[e("NcMultiselect",{ref:"checkSelector",attrs:{options:t.options,label:"name","track-by":"class","allow-empty":!1,placeholder:t.t("workflowengine","Select a filter")},on:{input:t.updateCheck},model:{value:t.currentOption,callback:function(n){t.currentOption=n},expression:"currentOption"}}),t._v(" "),e("NcMultiselect",{staticClass:"comparator",attrs:{disabled:!t.currentOption,options:t.operators,label:"name","track-by":"operator","allow-empty":!1,placeholder:t.t("workflowengine","Select a comparator")},on:{input:t.updateCheck},model:{value:t.currentOperator,callback:function(n){t.currentOperator=n},expression:"currentOperator"}}),t._v(" "),t.currentOperator&&t.currentComponent?e(t.currentOption.component,{tag:"component",staticClass:"option",attrs:{disabled:!t.currentOption,check:t.check},on:{input:t.updateCheck,valid:function(n){(t.valid=!0)&&t.validate()},invalid:function(n){!(t.valid=!1)&&t.validate()}},model:{value:t.check.value,callback:function(n){t.$set(t.check,"value",n)},expression:"check.value"}}):e("input",{directives:[{name:"model",rawName:"v-model",value:t.check.value,expression:"check.value"}],staticClass:"option",class:{invalid:!t.valid},attrs:{type:"text",disabled:!t.currentOption,placeholder:t.valuePlaceholder},domProps:{value:t.check.value},on:{input:[function(n){n.target.composing||t.$set(t.check,"value",n.target.value)},t.updateCheck]}}),t._v(" "),t.deleteVisible||!t.currentOption?e("NcActions",[e("NcActionButton",{attrs:{icon:"icon-close"},on:{click:function(n){return t.$emit("remove")}}})],1):t._e()],1)}),[],!1,null,"fa8ae1f2",null).exports,nt={name:"Operation",components:{NcButton:y()},props:{operation:{type:Object,required:!0},colored:{type:Boolean,default:!0}}},et=i(11040),it={};it.styleTagTransform=G(),it.setAttributes=Z(),it.insert=z().bind(null,"head"),it.domAPI=N(),it.insertStyleElement=M(),T()(et.Z,it),et.Z&&et.Z.locals&&et.Z.locals;var ot=(0,W.Z)(nt,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",{staticClass:"actions__item",class:{colored:t.colored},style:{backgroundColor:t.colored?t.operation.color:"transparent"}},[e("div",{staticClass:"icon",class:t.operation.iconClass,style:{backgroundImage:t.operation.iconClass?"":"url("+t.operation.icon+")"}}),t._v(" "),e("div",{staticClass:"actions__item__description"},[e("h3",[t._v(t._s(t.operation.name))]),t._v(" "),e("small",[t._v(t._s(t.operation.description))]),t._v(" "),t.colored?e("NcButton",[t._v("\n\t\t\t"+t._s(t.t("workflowengine","Add new flow"))+"\n\t\t")]):t._e()],1),t._v(" "),e("div",{staticClass:"actions__item_options"},[t._t("default")],2)])}),[],!1,null,"90eae5ec",null).exports;function rt(t,n,e,i,o,r,a){try{var s=t[r](a),l=s.value}catch(t){return void e(t)}s.done?n(l):Promise.resolve(l).then(i,o)}function at(t){return function(){var n=this,e=arguments;return new Promise((function(i,o){var r=t.apply(n,e);function a(t){rt(r,i,o,a,s,"next",t)}function s(t){rt(r,i,o,a,s,"throw",t)}a(void 0)}))}}var st={name:"Rule",components:{ArrowRight:j.default,Check:tt,CheckMark:O.default,Close:E.default,Event:Y,NcActionButton:k(),NcActions:b(),NcButton:y(),Operation:ot},directives:{Tooltip:v()},props:{rule:{type:Object,required:!0}},data:function(){return{editing:!1,checks:[],error:null,dirty:this.rule.id<0,originalRule:null}},computed:{operation:function(){return this.$store.getters.getOperationForRule(this.rule)},ruleStatus:function(){return this.error||!this.rule.valid||0===this.rule.checks.length||this.rule.checks.some((function(t){return!0===t.invalid}))?{title:t("workflowengine","The configuration is invalid"),icon:"Close",type:"warning",tooltip:{placement:"bottom",show:!0,content:this.error}}:this.dirty?{title:t("workflowengine","Save"),icon:"ArrowRight",type:"primary"}:{title:t("workflowengine","Active"),icon:"CheckMark",type:"success"}},lastCheckComplete:function(){var t=this.rule.checks[this.rule.checks.length-1];return void 0===t||null!==t.class}},mounted:function(){this.originalRule=JSON.parse(JSON.stringify(this.rule))},methods:{updateOperation:function(t){var n=this;return at(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.$set(n.rule,"operation",t),e.next=3,n.updateRule();case 3:case"end":return e.stop()}}),e)})))()},validate:function(t){this.error=null,this.$store.dispatch("updateRule",this.rule)},updateRule:function(){this.dirty||(this.dirty=!0),this.error=null,this.$store.dispatch("updateRule",this.rule)},saveRule:function(){var t=this;return at(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,t.$store.dispatch("pushUpdateRule",t.rule);case 3:t.dirty=!1,t.error=null,t.originalRule=JSON.parse(JSON.stringify(t.rule)),n.next=12;break;case 8:n.prev=8,n.t0=n.catch(0),console.error("Failed to save operation"),t.error=n.t0.response.data.ocs.meta.message;case 12:case"end":return n.stop()}}),n,null,[[0,8]])})))()},deleteRule:function(){var t=this;return at(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,t.$store.dispatch("deleteRule",t.rule);case 3:n.next=9;break;case 5:n.prev=5,n.t0=n.catch(0),console.error("Failed to delete operation"),t.error=n.t0.response.data.ocs.meta.message;case 9:case"end":return n.stop()}}),n,null,[[0,5]])})))()},cancelRule:function(){this.rule.id<0?this.$store.dispatch("removeRule",this.rule):(this.$store.dispatch("updateRule",this.originalRule),this.originalRule=JSON.parse(JSON.stringify(this.rule)),this.dirty=!1)},removeCheck:function(t){var n=this;return at(regeneratorRuntime.mark((function e(){var i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:(i=n.rule.checks.findIndex((function(n){return n===t})))>-1&&n.$delete(n.rule.checks,i),n.$store.dispatch("updateRule",n.rule);case 3:case"end":return e.stop()}}),e)})))()},onAddFilter:function(){this.rule.checks.push({class:null,operator:null,value:""})}}},lt=i(29413),ct={};ct.styleTagTransform=G(),ct.setAttributes=Z(),ct.insert=z().bind(null,"head"),ct.domAPI=N(),ct.insertStyleElement=M(),T()(lt.Z,ct),lt.Z&<.Z.locals&<.Z.locals;var ut=(0,W.Z)(st,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return t.operation?e("div",{staticClass:"section rule",style:{borderLeftColor:t.operation.color||""}},[e("div",{staticClass:"trigger"},[e("p",[e("span",[t._v(t._s(t.t("workflowengine","When")))]),t._v(" "),e("Event",{attrs:{rule:t.rule},on:{update:t.updateRule}})],1),t._v(" "),t._l(t.rule.checks,(function(n,i){return e("p",{key:i},[e("span",[t._v(t._s(t.t("workflowengine","and")))]),t._v(" "),e("Check",{attrs:{check:n,rule:t.rule},on:{update:t.updateRule,validate:t.validate,remove:function(e){return t.removeCheck(n)}}})],1)})),t._v(" "),e("p",[e("span"),t._v(" "),t.lastCheckComplete?e("input",{staticClass:"check--add",attrs:{type:"button",value:"Add a new filter"},on:{click:t.onAddFilter}}):t._e()])],2),t._v(" "),e("div",{staticClass:"flow-icon icon-confirm"}),t._v(" "),e("div",{staticClass:"action"},[e("Operation",{attrs:{operation:t.operation,colored:!1}},[t.operation.options?e(t.operation.options,{tag:"component",on:{input:t.updateOperation},model:{value:t.rule.operation,callback:function(n){t.$set(t.rule,"operation",n)},expression:"rule.operation"}}):t._e()],1),t._v(" "),e("div",{staticClass:"buttons"},[t.rule.id<-1||t.dirty?e("NcButton",{on:{click:t.cancelRule}},[t._v("\n\t\t\t\t"+t._s(t.t("workflowengine","Cancel"))+"\n\t\t\t")]):t.dirty?t._e():e("NcButton",{on:{click:t.deleteRule}},[t._v("\n\t\t\t\t"+t._s(t.t("workflowengine","Delete"))+"\n\t\t\t")]),t._v(" "),e("NcButton",{attrs:{type:t.ruleStatus.type},on:{click:t.saveRule},scopedSlots:t._u([{key:"icon",fn:function(){return[e(t.ruleStatus.icon,{tag:"component",attrs:{size:20}})]},proxy:!0}],null,!1,2383918876)},[t._v("\n\t\t\t\t"+t._s(t.ruleStatus.title)+"\n\t\t\t")])],1),t._v(" "),t.error?e("p",{staticClass:"error-message"},[t._v("\n\t\t\t"+t._s(t.error)+"\n\t\t")]):t._e()],1)]):t._e()}),[],!1,null,"a857d7a6",null).exports,pt=i(13299),At=i.n(pt),dt=i(65333),mt=i(874);function ft(t,n){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable}))),e.push.apply(e,i)}return e}function ht(t){for(var n=1;n<arguments.length;n++){var e=null!=arguments[n]?arguments[n]:{};n%2?ft(Object(e),!0).forEach((function(n){gt(t,n,e[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):ft(Object(e)).forEach((function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))}))}return t}function gt(t,n,e){return n in t?Object.defineProperty(t,n,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[n]=e,t}var Ct={name:"Workflow",components:{NcButton:y(),MenuDown:mt.Z,MenuUp:dt.Z,Operation:ot,Rule:ut,NcSettingsSection:At()},data:function(){return{showMoreOperations:!1,appstoreUrl:(0,l.generateUrl)("settings/apps/workflow"),workflowDocUrl:(0,s.loadState)("workflowengine","doc-url")}},computed:ht(ht(ht({},(0,r.Se)({rules:"getRules"})),(0,r.rn)({appstoreEnabled:"appstoreEnabled",scope:"scope",operations:"operations"})),{},{hasMoreOperations:function(){return Object.keys(this.operations).length>3},getMainOperations:function(){return this.showMoreOperations?Object.values(this.operations):Object.values(this.operations).slice(0,3)},showAppStoreHint:function(){return 0===this.scope&&this.appstoreEnabled&&OC.isUserAdmin()}}),mounted:function(){this.$store.dispatch("fetchRules")},methods:{createNewRule:function(t){this.$store.dispatch("createNewRule",t)}}},vt=i(24615),wt={};wt.styleTagTransform=G(),wt.setAttributes=Z(),wt.insert=z().bind(null,"head"),wt.domAPI=N(),wt.insertStyleElement=M(),T()(vt.Z,wt),vt.Z&&vt.Z.locals&&vt.Z.locals;var bt=(0,W.Z)(Ct,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",{attrs:{id:"workflowengine"}},[e("NcSettingsSection",{attrs:{title:t.t("workflowengine","Available flows"),"doc-url":t.workflowDocUrl}},[0===t.scope?e("p",{staticClass:"settings-hint"},[e("a",{attrs:{href:"https://nextcloud.com/developer/"}},[t._v(t._s(t.t("workflowengine","For details on how to write your own flow, check out the development documentation.")))])]):t._e(),t._v(" "),e("transition-group",{staticClass:"actions",attrs:{name:"slide",tag:"div"}},[t._l(t.getMainOperations,(function(n){return e("Operation",{key:n.id,attrs:{operation:n},nativeOn:{click:function(e){return t.createNewRule(n)}}})})),t._v(" "),t.showAppStoreHint?e("a",{key:"add",staticClass:"actions__item colored more",attrs:{href:t.appstoreUrl}},[e("div",{staticClass:"icon icon-add"}),t._v(" "),e("div",{staticClass:"actions__item__description"},[e("h3",[t._v(t._s(t.t("workflowengine","More flows")))]),t._v(" "),e("small",[t._v(t._s(t.t("workflowengine","Browse the App Store")))])])]):t._e()],2),t._v(" "),t.hasMoreOperations?e("div",{staticClass:"actions__more"},[e("NcButton",{on:{click:function(n){t.showMoreOperations=!t.showMoreOperations}},scopedSlots:t._u([{key:"icon",fn:function(){return[t.showMoreOperations?e("MenuUp",{attrs:{size:20}}):e("MenuDown",{attrs:{size:20}})]},proxy:!0}],null,!1,3801522717)},[t._v("\n\t\t\t\t"+t._s(t.showMoreOperations?t.t("workflowengine","Show less"):t.t("workflowengine","Show more"))+"\n\t\t\t")])],1):t._e(),t._v(" "),0===t.scope?e("h2",{staticClass:"configured-flows"},[t._v("\n\t\t\t"+t._s(t.t("workflowengine","Configured flows"))+"\n\t\t")]):e("h2",{staticClass:"configured-flows"},[t._v("\n\t\t\t"+t._s(t.t("workflowengine","Your flows"))+"\n\t\t")])],1),t._v(" "),t.rules.length>0?e("transition-group",{attrs:{name:"slide"}},t._l(t.rules,(function(t){return e("Rule",{key:t.id,attrs:{rule:t}})})),1):t._e()],1)}),[],!1,null,"38a7a2e5",null).exports,xt=/^\/(.*)\/([gui]{0,3})$/,kt=/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\/(3[0-2]|[1-2][0-9]|[1-9])$/,_t=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(1([01][0-9]|2[0-8])|[1-9][0-9]|[0-9])$/,yt={props:{value:{type:String,default:""},check:{type:Object,default:function(){return{}}}},data:function(){return{newValue:""}},watch:{value:{immediate:!0,handler:function(t){this.updateInternalValue(t)}}},methods:{updateInternalValue:function(t){this.newValue=t}}};function jt(t,n){(null==n||n>t.length)&&(n=t.length);for(var e=0,i=new Array(n);e<n;e++)i[e]=t[e];return i}var Ot={name:"FileMimeType",components:{NcMultiselect:R()},mixins:[yt],data:function(){return{predefinedTypes:[{icon:"icon-folder",label:t("workflowengine","Folder"),pattern:"httpd/unix-directory"},{icon:"icon-picture",label:t("workflowengine","Images"),pattern:"/image\\/.*/"},{iconUrl:(0,l.imagePath)("core","filetypes/x-office-document"),label:t("workflowengine","Office documents"),pattern:"/(vnd\\.(ms-|openxmlformats-|oasis\\.opendocument).*)$/"},{iconUrl:(0,l.imagePath)("core","filetypes/application-pdf"),label:t("workflowengine","PDF documents"),pattern:"application/pdf"}]}},computed:{options:function(){return[].concat(function(t){if(Array.isArray(t))return jt(t)}(t=this.predefinedTypes)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,n){if(t){if("string"==typeof t)return jt(t,n);var e=Object.prototype.toString.call(t).slice(8,-1);return"Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?jt(t,n):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),[this.customValue]);var t},isPredefined:function(){var t=this;return!!this.predefinedTypes.find((function(n){return t.newValue===n.pattern}))},customValue:function(){return{icon:"icon-settings-dark",label:t("workflowengine","Custom MIME type"),pattern:""}},currentValue:function(){var n=this;return this.predefinedTypes.find((function(t){return n.newValue===t.pattern}))||{icon:"icon-settings-dark",label:t("workflowengine","Custom mimetype"),pattern:this.newValue}}},methods:{validateRegex:function(t){return null!==/^\/(.*)\/([gui]{0,3})$/.exec(t)},setValue:function(t){null!==t&&(this.newValue=t.pattern,this.$emit("input",this.newValue))},updateCustom:function(t){this.newValue=t.target.value,this.$emit("input",this.newValue)}}},Et=i(62850),Bt={};Bt.styleTagTransform=G(),Bt.setAttributes=Z(),Bt.insert=z().bind(null,"head"),Bt.domAPI=N(),Bt.insertStyleElement=M(),T()(Et.Z,Bt),Et.Z&&Et.Z.locals&&Et.Z.locals;var Rt=(0,W.Z)(Ot,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",[e("NcMultiselect",{attrs:{value:t.currentValue,placeholder:t.t("workflowengine","Select a file type"),label:"label","track-by":"pattern",options:t.options,multiple:!1,tagging:!1},on:{input:t.setValue},scopedSlots:t._u([{key:"singleLabel",fn:function(n){return[n.option.icon?e("span",{staticClass:"option__icon",class:n.option.icon}):e("img",{staticClass:"option__icon-img",attrs:{src:n.option.iconUrl,alt:""}}),t._v(" "),e("span",{staticClass:"option__title option__title_single"},[t._v(t._s(n.option.label))])]}},{key:"option",fn:function(n){return[n.option.icon?e("span",{staticClass:"option__icon",class:n.option.icon}):e("img",{staticClass:"option__icon-img",attrs:{src:n.option.iconUrl,alt:""}}),t._v(" "),e("span",{staticClass:"option__title"},[t._v(t._s(n.option.label))])]}}])}),t._v(" "),t.isPredefined?t._e():e("input",{attrs:{type:"text",placeholder:t.t("workflowengine","e.g. httpd/unix-directory")},domProps:{value:t.currentValue.pattern},on:{input:t.updateCustom}})],1)}),[],!1,null,"2312566e",null).exports,Pt=i(32628),St={name:"FileSystemTag",components:{MultiselectTags:i.n(Pt)()},props:{value:{type:String,default:""}},data:function(){return{newValue:[]}},watch:{value:function(){this.updateValue()}},beforeMount:function(){this.updateValue()},methods:{updateValue:function(){""!==this.value?this.newValue=this.value:this.newValue=null},update:function(){this.$emit("input",this.newValue||"")}}},Vt=(0,W.Z)(St,(function(){var t=this,n=t.$createElement;return(t._self._c||n)("MultiselectTags",{attrs:{multiple:!1},on:{input:t.update},model:{value:t.newValue,callback:function(n){t.newValue=n},expression:"newValue"}})}),[],!1,null,"1611b92c",null).exports,Tt=function(){return[{operator:"matches",name:t("workflowengine","matches")},{operator:"!matches",name:t("workflowengine","does not match")},{operator:"is",name:t("workflowengine","is")},{operator:"!is",name:t("workflowengine","is not")}]},Dt=[{class:"OCA\\WorkflowEngine\\Check\\FileName",name:t("workflowengine","File name"),operators:Tt,placeholder:function(t){return"matches"===t.operator||"!matches"===t.operator?"/^dummy-.+$/i":"filename.txt"},validate:function(t){return"matches"!==t.operator&&"!matches"!==t.operator||!!(n=t.value)&&null!==xt.exec(n);var n}},{class:"OCA\\WorkflowEngine\\Check\\FileMimeType",name:t("workflowengine","File MIME type"),operators:Tt,component:Rt},{class:"OCA\\WorkflowEngine\\Check\\FileSize",name:t("workflowengine","File size (upload)"),operators:[{operator:"less",name:t("workflowengine","less")},{operator:"!greater",name:t("workflowengine","less or equals")},{operator:"!less",name:t("workflowengine","greater or equals")},{operator:"greater",name:t("workflowengine","greater")}],placeholder:function(t){return"5 MB"},validate:function(t){return!!t.value&&null!==t.value.match(/^[0-9]+[ ]?[kmgt]?b$/i)}},{class:"OCA\\WorkflowEngine\\Check\\RequestRemoteAddress",name:t("workflowengine","Request remote address"),operators:[{operator:"matchesIPv4",name:t("workflowengine","matches IPv4")},{operator:"!matchesIPv4",name:t("workflowengine","does not match IPv4")},{operator:"matchesIPv6",name:t("workflowengine","matches IPv6")},{operator:"!matchesIPv6",name:t("workflowengine","does not match IPv6")}],placeholder:function(t){return"matchesIPv6"===t.operator||"!matchesIPv6"===t.operator?"::1/128":"127.0.0.1/32"},validate:function(t){return"matchesIPv6"===t.operator||"!matchesIPv6"===t.operator?!!(n=t.value)&&null!==_t.exec(n):function(t){return!!t&&null!==kt.exec(t)}(t.value);var n}},{class:"OCA\\WorkflowEngine\\Check\\FileSystemTags",name:t("workflowengine","File system tag"),operators:[{operator:"is",name:t("workflowengine","is tagged with")},{operator:"!is",name:t("workflowengine","is not tagged with")}],component:Vt}];function Nt(t,n){(null==n||n>t.length)&&(n=t.length);for(var e=0,i=new Array(n);e<n;e++)i[e]=t[e];return i}var $t={name:"RequestUserAgent",components:{NcMultiselect:R()},mixins:[yt],data:function(){return{newValue:"",predefinedTypes:[{pattern:"android",label:t("workflowengine","Android client"),icon:"icon-phone"},{pattern:"ios",label:t("workflowengine","iOS client"),icon:"icon-phone"},{pattern:"desktop",label:t("workflowengine","Desktop client"),icon:"icon-desktop"},{pattern:"mail",label:t("workflowengine","Thunderbird & Outlook addons"),icon:"icon-mail"}]}},computed:{options:function(){return[].concat(function(t){if(Array.isArray(t))return Nt(t)}(t=this.predefinedTypes)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,n){if(t){if("string"==typeof t)return Nt(t,n);var e=Object.prototype.toString.call(t).slice(8,-1);return"Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?Nt(t,n):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),[this.customValue]);var t},matchingPredefined:function(){var t=this;return this.predefinedTypes.find((function(n){return t.newValue===n.pattern}))},isPredefined:function(){return!!this.matchingPredefined},customValue:function(){return{icon:"icon-settings-dark",label:t("workflowengine","Custom user agent"),pattern:""}},currentValue:function(){return this.matchingPredefined?this.matchingPredefined:{icon:"icon-settings-dark",label:t("workflowengine","Custom user agent"),pattern:this.newValue}}},methods:{validateRegex:function(t){return null!==/^\/(.*)\/([gui]{0,3})$/.exec(t)},setValue:function(t){null!==t&&(this.newValue=t.pattern,this.$emit("input",this.newValue))},updateCustom:function(t){this.newValue=t.target.value,this.$emit("input",this.newValue)}}},zt=i(53996),Ft={};Ft.styleTagTransform=G(),Ft.setAttributes=Z(),Ft.insert=z().bind(null,"head"),Ft.domAPI=N(),Ft.insertStyleElement=M(),T()(zt.Z,Ft),zt.Z&&zt.Z.locals&&zt.Z.locals;var Zt=(0,W.Z)($t,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",[e("NcMultiselect",{attrs:{value:t.currentValue,placeholder:t.t("workflowengine","Select a user agent"),label:"label","track-by":"pattern",options:t.options,multiple:!1,tagging:!1},on:{input:t.setValue},scopedSlots:t._u([{key:"singleLabel",fn:function(n){return[e("span",{staticClass:"option__icon",class:n.option.icon}),t._v(" "),e("span",{staticClass:"option__title option__title_single",domProps:{innerHTML:t._s(n.option.label)}})]}},{key:"option",fn:function(n){return[e("span",{staticClass:"option__icon",class:n.option.icon}),t._v(" "),n.option.$groupLabel?e("span",{staticClass:"option__title",domProps:{innerHTML:t._s(n.option.$groupLabel)}}):e("span",{staticClass:"option__title",domProps:{innerHTML:t._s(n.option.label)}})]}}])}),t._v(" "),t.isPredefined?t._e():e("input",{attrs:{type:"text"},domProps:{value:t.currentValue.pattern},on:{input:t.updateCustom}})],1)}),[],!1,null,"bd5cb750",null).exports,Ut=i(80008),Mt=i.n(Ut),It=Mt().tz.names(),Gt={name:"RequestTime",components:{NcMultiselect:R()},mixins:[yt],props:{value:{type:String,default:""}},data:function(){return{timezones:It,valid:!1,newValue:{startTime:null,endTime:null,timezone:Mt().tz.guess()}}},mounted:function(){this.validate()},methods:{updateInternalValue:function(t){try{var n=JSON.parse(t);2===n.length&&(this.newValue={startTime:n[0].split(" ",2)[0],endTime:n[1].split(" ",2)[0],timezone:n[0].split(" ",2)[1]})}catch(t){}},validate:function(){return this.valid=this.newValue.startTime&&null!==this.newValue.startTime.match(/^(0[0-9]|1[0-9]|2[0-3]|[0-9]):[0-5][0-9]$/i)&&this.newValue.endTime&&null!==this.newValue.endTime.match(/^(0[0-9]|1[0-9]|2[0-3]|[0-9]):[0-5][0-9]$/i)&&null!==Mt().tz.zone(this.newValue.timezone),this.valid?this.$emit("valid"):this.$emit("invalid"),this.valid},update:function(){if(null===this.newValue.timezone&&(this.newValue.timezone=Mt().tz.guess()),this.validate()){var t='["'.concat(this.newValue.startTime," ").concat(this.newValue.timezone,'","').concat(this.newValue.endTime," ").concat(this.newValue.timezone,'"]');this.$emit("input",t)}}}},Lt=i(4509),qt={};qt.styleTagTransform=G(),qt.setAttributes=Z(),qt.insert=z().bind(null,"head"),qt.domAPI=N(),qt.insertStyleElement=M(),T()(Lt.Z,qt),Lt.Z&&Lt.Z.locals&&Lt.Z.locals;var Wt=(0,W.Z)(Gt,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",{staticClass:"timeslot"},[e("input",{directives:[{name:"model",rawName:"v-model",value:t.newValue.startTime,expression:"newValue.startTime"}],staticClass:"timeslot--start",attrs:{type:"text",placeholder:"e.g. 08:00"},domProps:{value:t.newValue.startTime},on:{input:[function(n){n.target.composing||t.$set(t.newValue,"startTime",n.target.value)},t.update]}}),t._v(" "),e("input",{directives:[{name:"model",rawName:"v-model",value:t.newValue.endTime,expression:"newValue.endTime"}],attrs:{type:"text",placeholder:"e.g. 18:00"},domProps:{value:t.newValue.endTime},on:{input:[function(n){n.target.composing||t.$set(t.newValue,"endTime",n.target.value)},t.update]}}),t._v(" "),t.valid?t._e():e("p",{staticClass:"invalid-hint"},[t._v("\n\t\t"+t._s(t.t("workflowengine","Please enter a valid time span"))+"\n\t")]),t._v(" "),e("NcMultiselect",{directives:[{name:"show",rawName:"v-show",value:t.valid,expression:"valid"}],attrs:{options:t.timezones},on:{input:t.update},model:{value:t.newValue.timezone,callback:function(n){t.$set(t.newValue,"timezone",n)},expression:"newValue.timezone"}})],1)}),[],!1,null,"c064bb1a",null).exports;function Yt(t,n){(null==n||n>t.length)&&(n=t.length);for(var e=0,i=new Array(n);e<n;e++)i[e]=t[e];return i}var Ht={name:"RequestURL",components:{NcMultiselect:R()},mixins:[yt],data:function(){return{newValue:"",predefinedTypes:[{label:t("workflowengine","Predefined URLs"),children:[{pattern:"webdav",label:t("workflowengine","Files WebDAV")}]}]}},computed:{options:function(){return[].concat(function(t){if(Array.isArray(t))return Yt(t)}(t=this.predefinedTypes)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,n){if(t){if("string"==typeof t)return Yt(t,n);var e=Object.prototype.toString.call(t).slice(8,-1);return"Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?Yt(t,n):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),[this.customValue]);var t},placeholder:function(){return"matches"===this.check.operator||"!matches"===this.check.operator?"/^https\\:\\/\\/localhost\\/index\\.php$/i":"https://localhost/index.php"},matchingPredefined:function(){var t=this;return this.predefinedTypes.map((function(t){return t.children})).flat().find((function(n){return t.newValue===n.pattern}))},isPredefined:function(){return!!this.matchingPredefined},customValue:function(){return{label:t("workflowengine","Others"),children:[{icon:"icon-settings-dark",label:t("workflowengine","Custom URL"),pattern:""}]}},currentValue:function(){return this.matchingPredefined?this.matchingPredefined:{icon:"icon-settings-dark",label:t("workflowengine","Custom URL"),pattern:this.newValue}}},methods:{validateRegex:function(t){return null!==/^\/(.*)\/([gui]{0,3})$/.exec(t)},setValue:function(t){null!==t&&(this.newValue=t.pattern,this.$emit("input",this.newValue))},updateCustom:function(t){this.newValue=t.target.value,this.$emit("input",this.newValue)}}},Jt=Ht,Qt=i(37411),Kt={};Kt.styleTagTransform=G(),Kt.setAttributes=Z(),Kt.insert=z().bind(null,"head"),Kt.domAPI=N(),Kt.insertStyleElement=M(),T()(Qt.Z,Kt),Qt.Z&&Qt.Z.locals&&Qt.Z.locals;var Xt=(0,W.Z)(Jt,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",[e("NcMultiselect",{attrs:{value:t.currentValue,placeholder:t.t("workflowengine","Select a request URL"),label:"label","track-by":"pattern","group-values":"children","group-label":"label",options:t.options,multiple:!1,tagging:!1},on:{input:t.setValue},scopedSlots:t._u([{key:"singleLabel",fn:function(n){return[e("span",{staticClass:"option__icon",class:n.option.icon}),t._v(" "),e("span",{staticClass:"option__title option__title_single"},[t._v(t._s(n.option.label))])]}},{key:"option",fn:function(n){return[e("span",{staticClass:"option__icon",class:n.option.icon}),t._v(" "),e("span",{staticClass:"option__title"},[t._v(t._s(n.option.label)+" "+t._s(n.option.$groupLabel))])]}}])}),t._v(" "),t.isPredefined?t._e():e("input",{attrs:{type:"text",placeholder:t.placeholder},domProps:{value:t.currentValue.pattern},on:{input:t.updateCustom}})],1)}),[],!1,null,"efaa5484",null).exports;function tn(t,n,e,i,o,r,a){try{var s=t[r](a),l=s.value}catch(t){return void e(t)}s.done?n(l):Promise.resolve(l).then(i,o)}var nn=[],en={isLoading:!1},on={name:"RequestUserGroup",components:{NcMultiselect:R()},props:{value:{type:String,default:""},check:{type:Object,default:function(){return{}}}},data:function(){return{groups:nn,status:en}},computed:{currentValue:function(){var t=this;return this.groups.find((function(n){return n.id===t.value}))||null}},mounted:function(){var t,n=this;return(t=regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(0!==n.groups.length){t.next=3;break}return t.next=3,n.searchAsync("");case 3:if(null!==n.currentValue){t.next=6;break}return t.next=6,n.searchAsync(n.value);case 6:case"end":return t.stop()}}),t)})),function(){var n=this,e=arguments;return new Promise((function(i,o){var r=t.apply(n,e);function a(t){tn(r,i,o,a,s,"next",t)}function s(t){tn(r,i,o,a,s,"throw",t)}a(void 0)}))})()},methods:{searchAsync:function(t){var n=this;if(!this.status.isLoading)return this.status.isLoading=!0,a.default.get((0,l.generateOcsUrl)("cloud/groups/details?limit=20&search={searchQuery}",{searchQuery:t})).then((function(t){t.data.ocs.data.groups.forEach((function(t){n.addGroup({id:t.id,displayname:t.displayname})})),n.status.isLoading=!1}),(function(t){console.error("Error while loading group list",t.response)}))},addGroup:function(t){-1===this.groups.findIndex((function(n){return n.id===t.id}))&&this.groups.push(t)}}},rn=on,an=i(96906),sn={};sn.styleTagTransform=G(),sn.setAttributes=Z(),sn.insert=z().bind(null,"head"),sn.domAPI=N(),sn.insertStyleElement=M(),T()(an.Z,sn),an.Z&&an.Z.locals&&an.Z.locals;var ln=(0,W.Z)(rn,(function(){var t=this,n=t.$createElement,e=t._self._c||n;return e("div",[e("NcMultiselect",{attrs:{value:t.currentValue,loading:t.status.isLoading&&0===t.groups.length,options:t.groups,multiple:!1,label:"displayname","track-by":"id"},on:{"search-change":t.searchAsync,input:function(n){return t.$emit("input",n.id)}}})],1)}),[],!1,null,"4bcec2a5",null).exports,cn=[{class:"OCA\\WorkflowEngine\\Check\\RequestURL",name:t("workflowengine","Request URL"),operators:[{operator:"is",name:t("workflowengine","is")},{operator:"!is",name:t("workflowengine","is not")},{operator:"matches",name:t("workflowengine","matches")},{operator:"!matches",name:t("workflowengine","does not match")}],component:Xt},{class:"OCA\\WorkflowEngine\\Check\\RequestTime",name:t("workflowengine","Request time"),operators:[{operator:"in",name:t("workflowengine","between")},{operator:"!in",name:t("workflowengine","not between")}],component:Wt},{class:"OCA\\WorkflowEngine\\Check\\RequestUserAgent",name:t("workflowengine","Request user agent"),operators:[{operator:"is",name:t("workflowengine","is")},{operator:"!is",name:t("workflowengine","is not")},{operator:"matches",name:t("workflowengine","matches")},{operator:"!matches",name:t("workflowengine","does not match")}],component:Zt},{class:"OCA\\WorkflowEngine\\Check\\UserGroupMembership",name:t("workflowengine","User group membership"),operators:[{operator:"is",name:t("workflowengine","is member of")},{operator:"!is",name:t("workflowengine","is not member of")}],component:ln}];function un(t){return function(t){if(Array.isArray(t))return pn(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,n){if(t){if("string"==typeof t)return pn(t,n);var e=Object.prototype.toString.call(t).slice(8,-1);return"Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?pn(t,n):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function pn(t,n){(null==n||n>t.length)&&(n=t.length);for(var e=0,i=new Array(n);e<n;e++)i[e]=t[e];return i}var An=[].concat(un(Dt),un(cn));window.OCA.WorkflowEngine=Object.assign({},OCA.WorkflowEngine,{registerCheck:function(t){g.commit("addPluginCheck",t)},registerOperator:function(t){g.commit("addPluginOperator",t)}}),An.forEach((function(t){return window.OCA.WorkflowEngine.registerCheck(t)})),o.ZP.use(r.ZP),o.ZP.prototype.t=t,new(o.ZP.extend(bt))({store:g}).$mount("#workflowengine")},52782:function(t,n,e){"use strict";var i=e(87537),o=e.n(i),r=e(23645),a=e.n(r)()(o());a.push([t.id,".check[data-v-fa8ae1f2]{display:flex;flex-wrap:wrap;width:100%;padding-right:20px}.check>*[data-v-fa8ae1f2]:not(.close){width:180px}.check>.comparator[data-v-fa8ae1f2]{min-width:130px;width:130px}.check>.option[data-v-fa8ae1f2]{min-width:230px;width:230px}.check>.multiselect[data-v-fa8ae1f2],.check>input[type=text][data-v-fa8ae1f2]{margin-right:5px;margin-bottom:5px}.check .multiselect[data-v-fa8ae1f2] .multiselect__content-wrapper li>span,.check .multiselect[data-v-fa8ae1f2] .multiselect__single{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}input[type=text][data-v-fa8ae1f2]{margin:0}[data-v-fa8ae1f2]::placeholder{font-size:10px}button.action-item.action-item--single.icon-close[data-v-fa8ae1f2]{height:44px;width:44px;margin-top:-5px;margin-bottom:-5px}.invalid[data-v-fa8ae1f2]{border-color:var(--color-error) !important}","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Check.vue"],names:[],mappings:"AAsJA,wBACC,YAAA,CACA,cAAA,CACA,UAAA,CACA,kBAAA,CACA,sCACC,WAAA,CAED,oCACC,eAAA,CACA,WAAA,CAED,gCACC,eAAA,CACA,WAAA,CAED,8EAEC,gBAAA,CACA,iBAAA,CAGD,qIAEC,aAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CAGF,kCACC,QAAA,CAED,+BACC,cAAA,CAED,mEACC,WAAA,CACA,UAAA,CACA,eAAA,CACA,kBAAA,CAED,0BACC,0CAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.check {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\twidth: 100%;\n\tpadding-right: 20px;\n\t& > *:not(.close) {\n\t\twidth: 180px;\n\t}\n\t& > .comparator {\n\t\tmin-width: 130px;\n\t\twidth: 130px;\n\t}\n\t& > .option {\n\t\tmin-width: 230px;\n\t\twidth: 230px;\n\t}\n\t& > .multiselect,\n\t& > input[type=text] {\n\t\tmargin-right: 5px;\n\t\tmargin-bottom: 5px;\n\t}\n\n\t.multiselect::v-deep .multiselect__content-wrapper li>span,\n\t.multiselect::v-deep .multiselect__single {\n\t\tdisplay: block;\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n}\ninput[type=text] {\n\tmargin: 0;\n}\n::placeholder {\n\tfont-size: 10px;\n}\nbutton.action-item.action-item--single.icon-close {\n\theight: 44px;\n\twidth: 44px;\n\tmargin-top: -5px;\n\tmargin-bottom: -5px;\n}\n.invalid {\n\tborder-color: var(--color-error) !important;\n}\n"],sourceRoot:""}]),n.Z=a},62850:function(t,n,e){"use strict";var i=e(87537),o=e.n(i),r=e(23645),a=e.n(r)()(o());a.push([t.id,".multiselect[data-v-2312566e],input[type=text][data-v-2312566e]{width:100%}.option__icon[data-v-2312566e]{display:inline-block;min-width:30px;background-position:left}.option__icon-img[data-v-2312566e]{margin-right:14px}","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Checks/FileMimeType.vue"],names:[],mappings:"AAkJA,gEACC,UAAA,CAUD,+BACC,oBAAA,CACA,cAAA,CACA,wBAAA,CAGD,mCACC,iBAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.multiselect, input[type='text'] {\n\twidth: 100%;\n}\n.multiselect >>> .multiselect__content-wrapper li>span,\n.multiselect >>> .multiselect__single {\n\tdisplay: flex;\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n\n.option__icon {\n\tdisplay: inline-block;\n\tmin-width: 30px;\n\tbackground-position: left;\n}\n\n.option__icon-img {\n\tmargin-right: 14px;\n}\n"],sourceRoot:""}]),n.Z=a},4509:function(t,n,e){"use strict";var i=e(87537),o=e.n(i),r=e(23645),a=e.n(r)()(o());a.push([t.id,".timeslot[data-v-c064bb1a]{display:flex;flex-grow:1;flex-wrap:wrap;max-width:180px}.timeslot .multiselect[data-v-c064bb1a]{width:100%;margin-bottom:5px}.timeslot .multiselect[data-v-c064bb1a] .multiselect__tags:not(:hover):not(:focus):not(:active){border:1px solid rgba(0,0,0,0)}.timeslot input[type=text][data-v-c064bb1a]{width:50%;margin:0;margin-bottom:5px}.timeslot input[type=text].timeslot--start[data-v-c064bb1a]{margin-right:5px;width:calc(50% - 5px)}.timeslot .invalid-hint[data-v-c064bb1a]{color:var(--color-text-maxcontrast)}","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Checks/RequestTime.vue"],names:[],mappings:"AA+FA,2BACC,YAAA,CACA,WAAA,CACA,cAAA,CACA,eAAA,CAEA,wCACC,UAAA,CACA,iBAAA,CAGD,gGACC,8BAAA,CAGD,4CACC,SAAA,CACA,QAAA,CACA,iBAAA,CAEA,4DACC,gBAAA,CACA,qBAAA,CAIF,yCACC,mCAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.timeslot {\n\tdisplay: flex;\n\tflex-grow: 1;\n\tflex-wrap: wrap;\n\tmax-width: 180px;\n\n\t.multiselect {\n\t\twidth: 100%;\n\t\tmargin-bottom: 5px;\n\t}\n\n\t.multiselect::v-deep .multiselect__tags:not(:hover):not(:focus):not(:active) {\n\t\tborder: 1px solid transparent;\n\t}\n\n\tinput[type=text] {\n\t\twidth: 50%;\n\t\tmargin: 0;\n\t\tmargin-bottom: 5px;\n\n\t\t&.timeslot--start {\n\t\t\tmargin-right: 5px;\n\t\t\twidth: calc(50% - 5px);\n\t\t}\n\t}\n\n\t.invalid-hint {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n}\n"],sourceRoot:""}]),n.Z=a},37411:function(t,n,e){"use strict";var i=e(87537),o=e.n(i),r=e(23645),a=e.n(r)()(o());a.push([t.id,".multiselect[data-v-efaa5484],input[type=text][data-v-efaa5484]{width:100%}.option__icon[data-v-efaa5484]{display:inline-block;min-width:30px;background-position:left}","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Checks/RequestURL.vue"],names:[],mappings:"AA2IA,gEACC,UAAA,CAGD,+BACC,oBAAA,CACA,cAAA,CACA,wBAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.multiselect, input[type='text'] {\n\twidth: 100%;\n}\n\n.option__icon {\n\tdisplay: inline-block;\n\tmin-width: 30px;\n\tbackground-position: left;\n}\n"],sourceRoot:""}]),n.Z=a},69762:function(t,n,e){"use strict";var i=e(87537),o=e.n(i),r=e(23645),a=e.n(r)()(o());a.push([t.id,".event[data-v-01681aaa]{margin-bottom:5px}.isComplex img[data-v-01681aaa]{vertical-align:text-top}.isComplex span[data-v-01681aaa]{padding-top:2px;display:inline-block}.multiselect[data-v-01681aaa]{width:100%;max-width:550px;margin-top:4px}.multiselect[data-v-01681aaa] .multiselect__single{display:flex}.multiselect[data-v-01681aaa]:not(.multiselect--active) .multiselect__tags{background-color:var(--color-main-background) !important;border:1px solid rgba(0,0,0,0)}.multiselect[data-v-01681aaa] .multiselect__tags{background-color:var(--color-main-background) !important;height:auto;min-height:34px}.multiselect[data-v-01681aaa]:not(.multiselect--disabled) .multiselect__tags .multiselect__single{background-image:var(--icon-triangle-s-dark);background-repeat:no-repeat;background-position:right center}input[data-v-01681aaa]{border:1px solid rgba(0,0,0,0)}.option__title[data-v-01681aaa]{margin-left:5px;color:var(--color-main-text)}.option__title_single[data-v-01681aaa]{font-weight:900}.option__icon[data-v-01681aaa]{width:16px;height:16px;filter:var(--background-invert-if-dark)}.eventlist img[data-v-01681aaa],.eventlist .text[data-v-01681aaa]{vertical-align:middle}","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Event.vue"],names:[],mappings:"AAiFA,wBACC,iBAAA,CAGA,gCACC,uBAAA,CAED,iCACC,eAAA,CACA,oBAAA,CAGF,8BACC,UAAA,CACA,eAAA,CACA,cAAA,CAED,mDACC,YAAA,CAED,2EACC,wDAAA,CACA,8BAAA,CAGD,iDACC,wDAAA,CACA,WAAA,CACA,eAAA,CAGD,kGACC,4CAAA,CACA,2BAAA,CACA,gCAAA,CAGD,uBACC,8BAAA,CAGD,gCACC,eAAA,CACA,4BAAA,CAED,uCACC,eAAA,CAGD,+BACC,UAAA,CACA,WAAA,CACA,uCAAA,CAGD,kEAEC,qBAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.event {\n\tmargin-bottom: 5px;\n}\n.isComplex {\n\timg {\n\t\tvertical-align: text-top;\n\t}\n\tspan {\n\t\tpadding-top: 2px;\n\t\tdisplay: inline-block;\n\t}\n}\n.multiselect {\n\twidth: 100%;\n\tmax-width: 550px;\n\tmargin-top: 4px;\n}\n.multiselect::v-deep .multiselect__single {\n\tdisplay: flex;\n}\n.multiselect:not(.multiselect--active)::v-deep .multiselect__tags {\n\tbackground-color: var(--color-main-background) !important;\n\tborder: 1px solid transparent;\n}\n\n.multiselect::v-deep .multiselect__tags {\n\tbackground-color: var(--color-main-background) !important;\n\theight: auto;\n\tmin-height: 34px;\n}\n\n.multiselect:not(.multiselect--disabled)::v-deep .multiselect__tags .multiselect__single {\n\tbackground-image: var(--icon-triangle-s-dark);\n\tbackground-repeat: no-repeat;\n\tbackground-position: right center;\n}\n\ninput {\n\tborder: 1px solid transparent;\n}\n\n.option__title {\n\tmargin-left: 5px;\n\tcolor: var(--color-main-text);\n}\n.option__title_single {\n\tfont-weight: 900;\n}\n\n.option__icon {\n\twidth: 16px;\n\theight: 16px;\n\tfilter: var(--background-invert-if-dark);\n}\n\n.eventlist img,\n.eventlist .text {\n\tvertical-align: middle;\n}\n"],sourceRoot:""}]),n.Z=a},11040:function(t,n,e){"use strict";var i=e(87537),o=e.n(i),r=e(23645),a=e.n(r)()(o());a.push([t.id,".actions__item[data-v-90eae5ec]{display:flex;flex-wrap:wrap;flex-direction:column;flex-grow:1;margin-left:-1px;padding:10px;border-radius:var(--border-radius-large);margin-right:20px;margin-bottom:20px}.actions__item .icon[data-v-90eae5ec]{display:block;width:100%;height:50px;background-size:50px 50px;background-position:center center;margin-top:10px;margin-bottom:10px;background-repeat:no-repeat}.actions__item__description[data-v-90eae5ec]{text-align:center;flex-grow:1;display:flex;flex-direction:column;align-items:center}.actions__item_options[data-v-90eae5ec]{width:100%;margin-top:10px;padding-left:60px}h3[data-v-90eae5ec],small[data-v-90eae5ec]{padding:6px;display:block}h3[data-v-90eae5ec]{margin:0;padding:0;font-weight:600}small[data-v-90eae5ec]{font-size:10pt;flex-grow:1}.colored[data-v-90eae5ec]:not(.more){background-color:var(--color-primary-element)}.colored:not(.more) h3[data-v-90eae5ec],.colored:not(.more) small[data-v-90eae5ec]{color:var(--color-primary-text)}.actions__item[data-v-90eae5ec]:not(.colored){flex-direction:row}.actions__item:not(.colored) .actions__item__description[data-v-90eae5ec]{padding-top:5px;text-align:left;width:calc(100% - 105px)}.actions__item:not(.colored) .actions__item__description small[data-v-90eae5ec]{padding:0}.actions__item:not(.colored) .icon[data-v-90eae5ec]{width:50px;margin:0;margin-right:10px}.actions__item:not(.colored) .icon[data-v-90eae5ec]:not(.icon-invert){filter:var(--background-invert-if-bright)}.colored .icon-invert[data-v-90eae5ec]{filter:var(--background-invert-if-bright)}","",{version:3,sources:["webpack://./apps/workflowengine/src/styles/operation.scss"],names:[],mappings:"AAAA,gCACC,YAAA,CACA,cAAA,CACA,qBAAA,CACA,WAAA,CACA,gBAAA,CACA,YAAA,CACA,wCAAA,CACA,iBAAA,CACA,kBAAA,CAED,sCACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,yBAAA,CACA,iCAAA,CACA,eAAA,CACA,kBAAA,CACA,2BAAA,CAED,6CACC,iBAAA,CACA,WAAA,CACA,YAAA,CACA,qBAAA,CACA,kBAAA,CAED,wCACC,UAAA,CACA,eAAA,CACA,iBAAA,CAED,2CACC,WAAA,CACA,aAAA,CAED,oBACC,QAAA,CACA,SAAA,CACA,eAAA,CAED,uBACC,cAAA,CACA,WAAA,CAGD,qCACC,6CAAA,CACA,mFACC,+BAAA,CAIF,8CACC,kBAAA,CAEA,0EACC,eAAA,CACA,eAAA,CACA,wBAAA,CACA,gFACC,SAAA,CAGF,oDACC,UAAA,CACA,QAAA,CACA,iBAAA,CACA,sEACC,yCAAA,CAKH,uCACC,yCAAA",sourcesContent:[".actions__item {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tflex-direction: column;\n\tflex-grow: 1;\n\tmargin-left: -1px;\n\tpadding: 10px;\n\tborder-radius: var(--border-radius-large);\n\tmargin-right: 20px;\n\tmargin-bottom: 20px;\n}\n.actions__item .icon {\n\tdisplay: block;\n\twidth: 100%;\n\theight: 50px;\n\tbackground-size: 50px 50px;\n\tbackground-position: center center;\n\tmargin-top: 10px;\n\tmargin-bottom: 10px;\n\tbackground-repeat: no-repeat;\n}\n.actions__item__description {\n\ttext-align: center;\n\tflex-grow: 1;\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n}\n.actions__item_options {\n\twidth: 100%;\n\tmargin-top: 10px;\n\tpadding-left: 60px;\n}\nh3, small {\n\tpadding: 6px;\n\tdisplay: block;\n}\nh3 {\n\tmargin: 0;\n\tpadding: 0;\n\tfont-weight: 600;\n}\nsmall {\n\tfont-size: 10pt;\n\tflex-grow: 1;\n}\n\n.colored:not(.more) {\n\tbackground-color: var(--color-primary-element);\n\th3, small {\n\t\tcolor: var(--color-primary-text)\n\t}\n}\n\n.actions__item:not(.colored) {\n\tflex-direction: row;\n\n\t.actions__item__description {\n\t\tpadding-top: 5px;\n\t\ttext-align: left;\n\t\twidth: calc(100% - 105px);\n\t\tsmall {\n\t\t\tpadding: 0;\n\t\t}\n\t}\n\t.icon {\n\t\twidth: 50px;\n\t\tmargin: 0;\n\t\tmargin-right: 10px;\n\t\t&:not(.icon-invert) {\n\t\t\tfilter: var(--background-invert-if-bright);\n\t\t}\n\t}\n}\n\n.colored .icon-invert {\n\tfilter: var(--background-invert-if-bright);\n}\n"],sourceRoot:""}]),n.Z=a},29413:function(t,n,e){"use strict";var i=e(87537),o=e.n(i),r=e(23645),a=e.n(r)()(o());a.push([t.id,".buttons[data-v-a857d7a6]{display:flex;justify-content:end}.buttons button[data-v-a857d7a6]{margin-left:5px}.buttons button[data-v-a857d7a6]:last-child{margin-right:10px}.error-message[data-v-a857d7a6]{float:right;margin-right:10px}.flow-icon[data-v-a857d7a6]{width:44px}.rule[data-v-a857d7a6]{display:flex;flex-wrap:wrap;border-left:5px solid var(--color-primary-element)}.rule .trigger[data-v-a857d7a6],.rule .action[data-v-a857d7a6]{flex-grow:1;min-height:100px;max-width:700px}.rule .action[data-v-a857d7a6]{max-width:400px;position:relative}.rule .icon-confirm[data-v-a857d7a6]{background-position:right 27px;padding-right:20px;margin-right:20px}.trigger p[data-v-a857d7a6],.action p[data-v-a857d7a6]{min-height:34px;display:flex}.trigger p>span[data-v-a857d7a6],.action p>span[data-v-a857d7a6]{min-width:50px;text-align:right;color:var(--color-text-maxcontrast);padding-right:10px;padding-top:6px}.trigger p .multiselect[data-v-a857d7a6],.action p .multiselect[data-v-a857d7a6]{flex-grow:1;max-width:300px}.trigger p:first-child span[data-v-a857d7a6]{padding-top:3px}.check--add[data-v-a857d7a6]{background-position:7px center;background-color:rgba(0,0,0,0);padding-left:6px;margin:0;width:180px;border-radius:var(--border-radius);color:var(--color-text-maxcontrast);font-weight:normal;text-align:left;font-size:1em}@media(max-width: 1400px){.rule[data-v-a857d7a6],.rule .trigger[data-v-a857d7a6],.rule .action[data-v-a857d7a6]{width:100%;max-width:100%}.rule .flow-icon[data-v-a857d7a6]{display:none}}","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Rule.vue"],names:[],mappings:"AA6LA,0BACC,YAAA,CACA,mBAAA,CAEA,iCACC,eAAA,CAED,4CACC,iBAAA,CAIF,gCACC,WAAA,CACA,iBAAA,CAGD,4BACC,UAAA,CAGD,uBACC,YAAA,CACA,cAAA,CACA,kDAAA,CAEA,+DACC,WAAA,CACA,gBAAA,CACA,eAAA,CAED,+BACC,eAAA,CACA,iBAAA,CAED,qCACC,8BAAA,CACA,kBAAA,CACA,iBAAA,CAGF,uDACC,eAAA,CACA,YAAA,CAEA,iEACC,cAAA,CACA,gBAAA,CACA,mCAAA,CACA,kBAAA,CACA,eAAA,CAED,iFACC,WAAA,CACA,eAAA,CAGF,6CACE,eAAA,CAGF,6BACC,8BAAA,CACA,8BAAA,CACA,gBAAA,CACA,QAAA,CACA,WAAA,CACA,kCAAA,CACA,mCAAA,CACA,kBAAA,CACA,eAAA,CACA,aAAA,CAGD,0BAEE,sFACC,UAAA,CACA,cAAA,CAED,kCACC,YAAA,CAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.buttons {\n\tdisplay: flex;\n\tjustify-content: end;\n\n\tbutton {\n\t\tmargin-left: 5px;\n\t}\n\tbutton:last-child{\n\t\tmargin-right: 10px;\n\t}\n}\n\n.error-message {\n\tfloat: right;\n\tmargin-right: 10px;\n}\n\n.flow-icon {\n\twidth: 44px;\n}\n\n.rule {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tborder-left: 5px solid var(--color-primary-element);\n\n\t.trigger, .action {\n\t\tflex-grow: 1;\n\t\tmin-height: 100px;\n\t\tmax-width: 700px;\n\t}\n\t.action {\n\t\tmax-width: 400px;\n\t\tposition: relative;\n\t}\n\t.icon-confirm {\n\t\tbackground-position: right 27px;\n\t\tpadding-right: 20px;\n\t\tmargin-right: 20px;\n\t}\n}\n.trigger p, .action p {\n\tmin-height: 34px;\n\tdisplay: flex;\n\n\t& > span {\n\t\tmin-width: 50px;\n\t\ttext-align: right;\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tpadding-right: 10px;\n\t\tpadding-top: 6px;\n\t}\n\t.multiselect {\n\t\tflex-grow: 1;\n\t\tmax-width: 300px;\n\t}\n}\n.trigger p:first-child span {\n\t\tpadding-top: 3px;\n}\n\n.check--add {\n\tbackground-position: 7px center;\n\tbackground-color: transparent;\n\tpadding-left: 6px;\n\tmargin: 0;\n\twidth: 180px;\n\tborder-radius: var(--border-radius);\n\tcolor: var(--color-text-maxcontrast);\n\tfont-weight: normal;\n\ttext-align: left;\n\tfont-size: 1em;\n}\n\n@media (max-width:1400px) {\n\t.rule {\n\t\t&, .trigger, .action {\n\t\t\twidth: 100%;\n\t\t\tmax-width: 100%;\n\t\t}\n\t\t.flow-icon {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n\n"],sourceRoot:""}]),n.Z=a},24615:function(t,n,e){"use strict";var i=e(87537),o=e.n(i),r=e(23645),a=e.n(r)()(o());a.push([t.id,"#workflowengine[data-v-38a7a2e5]{border-bottom:1px solid var(--color-border)}.section[data-v-38a7a2e5]{max-width:100vw}.section h2.configured-flows[data-v-38a7a2e5]{margin-top:50px;margin-bottom:0}.actions[data-v-38a7a2e5]{display:flex;flex-wrap:wrap;max-width:1200px}.actions .actions__item[data-v-38a7a2e5]{max-width:280px;flex-basis:250px}.actions__more[data-v-38a7a2e5]{margin-bottom:10px}.slide-enter-active[data-v-38a7a2e5]{-moz-transition-duration:.3s;-webkit-transition-duration:.3s;-o-transition-duration:.3s;transition-duration:.3s;-moz-transition-timing-function:ease-in;-webkit-transition-timing-function:ease-in;-o-transition-timing-function:ease-in;transition-timing-function:ease-in}.slide-leave-active[data-v-38a7a2e5]{-moz-transition-duration:.3s;-webkit-transition-duration:.3s;-o-transition-duration:.3s;transition-duration:.3s;-moz-transition-timing-function:cubic-bezier(0, 1, 0.5, 1);-webkit-transition-timing-function:cubic-bezier(0, 1, 0.5, 1);-o-transition-timing-function:cubic-bezier(0, 1, 0.5, 1);transition-timing-function:cubic-bezier(0, 1, 0.5, 1)}.slide-enter-to[data-v-38a7a2e5],.slide-leave[data-v-38a7a2e5]{max-height:500px;overflow:hidden}.slide-enter[data-v-38a7a2e5],.slide-leave-to[data-v-38a7a2e5]{overflow:hidden;max-height:0;padding-top:0;padding-bottom:0}.actions__item[data-v-38a7a2e5]{display:flex;flex-wrap:wrap;flex-direction:column;flex-grow:1;margin-left:-1px;padding:10px;border-radius:var(--border-radius-large);margin-right:20px;margin-bottom:20px}.actions__item .icon[data-v-38a7a2e5]{display:block;width:100%;height:50px;background-size:50px 50px;background-position:center center;margin-top:10px;margin-bottom:10px;background-repeat:no-repeat}.actions__item__description[data-v-38a7a2e5]{text-align:center;flex-grow:1;display:flex;flex-direction:column;align-items:center}.actions__item_options[data-v-38a7a2e5]{width:100%;margin-top:10px;padding-left:60px}h3[data-v-38a7a2e5],small[data-v-38a7a2e5]{padding:6px;display:block}h3[data-v-38a7a2e5]{margin:0;padding:0;font-weight:600}small[data-v-38a7a2e5]{font-size:10pt;flex-grow:1}.colored[data-v-38a7a2e5]:not(.more){background-color:var(--color-primary-element)}.colored:not(.more) h3[data-v-38a7a2e5],.colored:not(.more) small[data-v-38a7a2e5]{color:var(--color-primary-text)}.actions__item[data-v-38a7a2e5]:not(.colored){flex-direction:row}.actions__item:not(.colored) .actions__item__description[data-v-38a7a2e5]{padding-top:5px;text-align:left;width:calc(100% - 105px)}.actions__item:not(.colored) .actions__item__description small[data-v-38a7a2e5]{padding:0}.actions__item:not(.colored) .icon[data-v-38a7a2e5]{width:50px;margin:0;margin-right:10px}.actions__item:not(.colored) .icon[data-v-38a7a2e5]:not(.icon-invert){filter:var(--background-invert-if-bright)}.colored .icon-invert[data-v-38a7a2e5]{filter:var(--background-invert-if-bright)}.actions__item.more[data-v-38a7a2e5]{background-color:var(--color-background-dark)}","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Workflow.vue","webpack://./apps/workflowengine/src/styles/operation.scss"],names:[],mappings:"AAkHA,iCACC,2CAAA,CAED,0BACC,eAAA,CAEA,8CACC,eAAA,CACA,eAAA,CAGF,0BACC,YAAA,CACA,cAAA,CACA,gBAAA,CACA,yCACC,eAAA,CACA,gBAAA,CAGF,gCACC,kBAAA,CAGD,qCACC,4BAAA,CACA,+BAAA,CACA,0BAAA,CACA,uBAAA,CACA,uCAAA,CACA,0CAAA,CACA,qCAAA,CACA,kCAAA,CAGD,qCACC,4BAAA,CACA,+BAAA,CACA,0BAAA,CACA,uBAAA,CACA,0DAAA,CACA,6DAAA,CACA,wDAAA,CACA,qDAAA,CAGD,+DACC,gBAAA,CACA,eAAA,CAGD,+DACC,eAAA,CACA,YAAA,CACA,aAAA,CACA,gBAAA,CCzKD,gCACC,YAAA,CACA,cAAA,CACA,qBAAA,CACA,WAAA,CACA,gBAAA,CACA,YAAA,CACA,wCAAA,CACA,iBAAA,CACA,kBAAA,CAED,sCACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,yBAAA,CACA,iCAAA,CACA,eAAA,CACA,kBAAA,CACA,2BAAA,CAED,6CACC,iBAAA,CACA,WAAA,CACA,YAAA,CACA,qBAAA,CACA,kBAAA,CAED,wCACC,UAAA,CACA,eAAA,CACA,iBAAA,CAED,2CACC,WAAA,CACA,aAAA,CAED,oBACC,QAAA,CACA,SAAA,CACA,eAAA,CAED,uBACC,cAAA,CACA,WAAA,CAGD,qCACC,6CAAA,CACA,mFACC,+BAAA,CAIF,8CACC,kBAAA,CAEA,0EACC,eAAA,CACA,eAAA,CACA,wBAAA,CACA,gFACC,SAAA,CAGF,oDACC,UAAA,CACA,QAAA,CACA,iBAAA,CACA,sEACC,yCAAA,CAKH,uCACC,yCAAA,CDkGD,qCACC,6CAAA",sourcesContent:['\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n#workflowengine {\n\tborder-bottom: 1px solid var(--color-border);\n}\n.section {\n\tmax-width: 100vw;\n\n\th2.configured-flows {\n\t\tmargin-top: 50px;\n\t\tmargin-bottom: 0;\n\t}\n}\n.actions {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tmax-width: 1200px;\n\t.actions__item {\n\t\tmax-width: 280px;\n\t\tflex-basis: 250px;\n\t}\n}\n.actions__more {\n\tmargin-bottom: 10px;\n}\n\n.slide-enter-active {\n\t-moz-transition-duration: 0.3s;\n\t-webkit-transition-duration: 0.3s;\n\t-o-transition-duration: 0.3s;\n\ttransition-duration: 0.3s;\n\t-moz-transition-timing-function: ease-in;\n\t-webkit-transition-timing-function: ease-in;\n\t-o-transition-timing-function: ease-in;\n\ttransition-timing-function: ease-in;\n}\n\n.slide-leave-active {\n\t-moz-transition-duration: 0.3s;\n\t-webkit-transition-duration: 0.3s;\n\t-o-transition-duration: 0.3s;\n\ttransition-duration: 0.3s;\n\t-moz-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n\t-webkit-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n\t-o-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n\ttransition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n}\n\n.slide-enter-to, .slide-leave {\n\tmax-height: 500px;\n\toverflow: hidden;\n}\n\n.slide-enter, .slide-leave-to {\n\toverflow: hidden;\n\tmax-height: 0;\n\tpadding-top: 0;\n\tpadding-bottom: 0;\n}\n\n@import "./../styles/operation";\n\n.actions__item.more {\n\tbackground-color: var(--color-background-dark);\n}\n',".actions__item {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tflex-direction: column;\n\tflex-grow: 1;\n\tmargin-left: -1px;\n\tpadding: 10px;\n\tborder-radius: var(--border-radius-large);\n\tmargin-right: 20px;\n\tmargin-bottom: 20px;\n}\n.actions__item .icon {\n\tdisplay: block;\n\twidth: 100%;\n\theight: 50px;\n\tbackground-size: 50px 50px;\n\tbackground-position: center center;\n\tmargin-top: 10px;\n\tmargin-bottom: 10px;\n\tbackground-repeat: no-repeat;\n}\n.actions__item__description {\n\ttext-align: center;\n\tflex-grow: 1;\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n}\n.actions__item_options {\n\twidth: 100%;\n\tmargin-top: 10px;\n\tpadding-left: 60px;\n}\nh3, small {\n\tpadding: 6px;\n\tdisplay: block;\n}\nh3 {\n\tmargin: 0;\n\tpadding: 0;\n\tfont-weight: 600;\n}\nsmall {\n\tfont-size: 10pt;\n\tflex-grow: 1;\n}\n\n.colored:not(.more) {\n\tbackground-color: var(--color-primary-element);\n\th3, small {\n\t\tcolor: var(--color-primary-text)\n\t}\n}\n\n.actions__item:not(.colored) {\n\tflex-direction: row;\n\n\t.actions__item__description {\n\t\tpadding-top: 5px;\n\t\ttext-align: left;\n\t\twidth: calc(100% - 105px);\n\t\tsmall {\n\t\t\tpadding: 0;\n\t\t}\n\t}\n\t.icon {\n\t\twidth: 50px;\n\t\tmargin: 0;\n\t\tmargin-right: 10px;\n\t\t&:not(.icon-invert) {\n\t\t\tfilter: var(--background-invert-if-bright);\n\t\t}\n\t}\n}\n\n.colored .icon-invert {\n\tfilter: var(--background-invert-if-bright);\n}\n"],sourceRoot:""}]),n.Z=a},53996:function(t,n,e){"use strict";var i=e(87537),o=e.n(i),r=e(23645),a=e.n(r)()(o());a.push([t.id,"\n.multiselect[data-v-bd5cb750], input[type='text'][data-v-bd5cb750] {\n\twidth: 100%;\n}\n.multiselect .multiselect__content-wrapper li>span[data-v-bd5cb750] {\n\tdisplay: flex;\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n.multiselect[data-v-bd5cb750] .multiselect__single {\n\twidth: 100%;\n\tdisplay: flex;\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n.option__icon[data-v-bd5cb750] {\n\tdisplay: inline-block;\n\tmin-width: 30px;\n\tbackground-position: left;\n}\n.option__title[data-v-bd5cb750] {\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n}\n","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Checks/RequestUserAgent.vue"],names:[],mappings:";AA8HA;CACA,WAAA;AACA;AAEA;CACA,aAAA;CACA,mBAAA;CACA,gBAAA;CACA,uBAAA;AACA;AACA;CACA,WAAA;CACA,aAAA;CACA,mBAAA;CACA,gBAAA;CACA,uBAAA;AACA;AACA;CACA,qBAAA;CACA,eAAA;CACA,yBAAA;AACA;AACA;CACA,mBAAA;CACA,gBAAA;CACA,uBAAA;AACA",sourcesContent:["\x3c!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n --\x3e\n\n<template>\n\t<div>\n\t\t<NcMultiselect :value=\"currentValue\"\n\t\t\t:placeholder=\"t('workflowengine', 'Select a user agent')\"\n\t\t\tlabel=\"label\"\n\t\t\ttrack-by=\"pattern\"\n\t\t\t:options=\"options\"\n\t\t\t:multiple=\"false\"\n\t\t\t:tagging=\"false\"\n\t\t\t@input=\"setValue\">\n\t\t\t<template slot=\"singleLabel\" slot-scope=\"props\">\n\t\t\t\t<span class=\"option__icon\" :class=\"props.option.icon\" />\n\t\t\t\t\x3c!-- v-html can be used here as t() always passes our translated strings though DOMPurify.sanitize --\x3e\n\t\t\t\t\x3c!-- eslint-disable-next-line vue/no-v-html --\x3e\n\t\t\t\t<span class=\"option__title option__title_single\" v-html=\"props.option.label\" />\n\t\t\t</template>\n\t\t\t<template slot=\"option\" slot-scope=\"props\">\n\t\t\t\t<span class=\"option__icon\" :class=\"props.option.icon\" />\n\t\t\t\t\x3c!-- eslint-disable-next-line vue/no-v-html --\x3e\n\t\t\t\t<span v-if=\"props.option.$groupLabel\" class=\"option__title\" v-html=\"props.option.$groupLabel\" />\n\t\t\t\t\x3c!-- eslint-disable-next-line vue/no-v-html --\x3e\n\t\t\t\t<span v-else class=\"option__title\" v-html=\"props.option.label\" />\n\t\t\t</template>\n\t\t</NcMultiselect>\n\t\t<input v-if=\"!isPredefined\"\n\t\t\ttype=\"text\"\n\t\t\t:value=\"currentValue.pattern\"\n\t\t\t@input=\"updateCustom\">\n\t</div>\n</template>\n\n<script>\nimport NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect'\nimport valueMixin from '../../mixins/valueMixin'\n\nexport default {\n\tname: 'RequestUserAgent',\n\tcomponents: {\n\t\tNcMultiselect,\n\t},\n\tmixins: [\n\t\tvalueMixin,\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tnewValue: '',\n\t\t\tpredefinedTypes: [\n\t\t\t\t{ pattern: 'android', label: t('workflowengine', 'Android client'), icon: 'icon-phone' },\n\t\t\t\t{ pattern: 'ios', label: t('workflowengine', 'iOS client'), icon: 'icon-phone' },\n\t\t\t\t{ pattern: 'desktop', label: t('workflowengine', 'Desktop client'), icon: 'icon-desktop' },\n\t\t\t\t{ pattern: 'mail', label: t('workflowengine', 'Thunderbird & Outlook addons'), icon: 'icon-mail' },\n\t\t\t],\n\t\t}\n\t},\n\tcomputed: {\n\t\toptions() {\n\t\t\treturn [...this.predefinedTypes, this.customValue]\n\t\t},\n\t\tmatchingPredefined() {\n\t\t\treturn this.predefinedTypes\n\t\t\t\t.find((type) => this.newValue === type.pattern)\n\t\t},\n\t\tisPredefined() {\n\t\t\treturn !!this.matchingPredefined\n\t\t},\n\t\tcustomValue() {\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom user agent'),\n\t\t\t\tpattern: '',\n\t\t\t}\n\t\t},\n\t\tcurrentValue() {\n\t\t\tif (this.matchingPredefined) {\n\t\t\t\treturn this.matchingPredefined\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom user agent'),\n\t\t\t\tpattern: this.newValue,\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\tvalidateRegex(string) {\n\t\t\tconst regexRegex = /^\\/(.*)\\/([gui]{0,3})$/\n\t\t\tconst result = regexRegex.exec(string)\n\t\t\treturn result !== null\n\t\t},\n\t\tsetValue(value) {\n\t\t\t// TODO: check if value requires a regex and set the check operator according to that\n\t\t\tif (value !== null) {\n\t\t\t\tthis.newValue = value.pattern\n\t\t\t\tthis.$emit('input', this.newValue)\n\t\t\t}\n\t\t},\n\t\tupdateCustom(event) {\n\t\t\tthis.newValue = event.target.value\n\t\t\tthis.$emit('input', this.newValue)\n\t\t},\n\t},\n}\n<\/script>\n<style scoped>\n\t.multiselect, input[type='text'] {\n\t\twidth: 100%;\n\t}\n\n\t.multiselect .multiselect__content-wrapper li>span {\n\t\tdisplay: flex;\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n\t.multiselect::v-deep .multiselect__single {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n\t.option__icon {\n\t\tdisplay: inline-block;\n\t\tmin-width: 30px;\n\t\tbackground-position: left;\n\t}\n\t.option__title {\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n</style>\n"],sourceRoot:""}]),n.Z=a},96906:function(t,n,e){"use strict";var i=e(87537),o=e.n(i),r=e(23645),a=e.n(r)()(o());a.push([t.id,"\n.multiselect[data-v-4bcec2a5] {\n\twidth: 100%;\n}\n","",{version:3,sources:["webpack://./apps/workflowengine/src/components/Checks/RequestUserGroup.vue"],names:[],mappings:";AA4GA;CACA,WAAA;AACA",sourcesContent:["\x3c!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n --\x3e\n\n<template>\n\t<div>\n\t\t<NcMultiselect :value=\"currentValue\"\n\t\t\t:loading=\"status.isLoading && groups.length === 0\"\n\t\t\t:options=\"groups\"\n\t\t\t:multiple=\"false\"\n\t\t\tlabel=\"displayname\"\n\t\t\ttrack-by=\"id\"\n\t\t\t@search-change=\"searchAsync\"\n\t\t\t@input=\"(value) => $emit('input', value.id)\" />\n\t</div>\n</template>\n\n<script>\nimport NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect'\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nconst groups = []\nconst status = {\n\tisLoading: false,\n}\n\nexport default {\n\tname: 'RequestUserGroup',\n\tcomponents: {\n\t\tNcMultiselect,\n\t},\n\tprops: {\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tcheck: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => { return {} },\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tgroups,\n\t\t\tstatus,\n\t\t}\n\t},\n\tcomputed: {\n\t\tcurrentValue() {\n\t\t\treturn this.groups.find(group => group.id === this.value) || null\n\t\t},\n\t},\n\tasync mounted() {\n\t\tif (this.groups.length === 0) {\n\t\t\tawait this.searchAsync('')\n\t\t}\n\t\tif (this.currentValue === null) {\n\t\t\tawait this.searchAsync(this.value)\n\t\t}\n\t},\n\tmethods: {\n\t\tsearchAsync(searchQuery) {\n\t\t\tif (this.status.isLoading) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.status.isLoading = true\n\t\t\treturn axios.get(generateOcsUrl('cloud/groups/details?limit=20&search={searchQuery}', { searchQuery })).then((response) => {\n\t\t\t\tresponse.data.ocs.data.groups.forEach((group) => {\n\t\t\t\t\tthis.addGroup({\n\t\t\t\t\t\tid: group.id,\n\t\t\t\t\t\tdisplayname: group.displayname,\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\tthis.status.isLoading = false\n\t\t\t}, (error) => {\n\t\t\t\tconsole.error('Error while loading group list', error.response)\n\t\t\t})\n\t\t},\n\t\taddGroup(group) {\n\t\t\tconst index = this.groups.findIndex((item) => item.id === group.id)\n\t\t\tif (index === -1) {\n\t\t\t\tthis.groups.push(group)\n\t\t\t}\n\t\t},\n\t},\n}\n<\/script>\n<style scoped>\n\t.multiselect {\n\t\twidth: 100%;\n\t}\n</style>\n"],sourceRoot:""}]),n.Z=a},46700:function(t,n,e){var i={"./af":42786,"./af.js":42786,"./ar":30867,"./ar-dz":14130,"./ar-dz.js":14130,"./ar-kw":96135,"./ar-kw.js":96135,"./ar-ly":56440,"./ar-ly.js":56440,"./ar-ma":47702,"./ar-ma.js":47702,"./ar-sa":16040,"./ar-sa.js":16040,"./ar-tn":37100,"./ar-tn.js":37100,"./ar.js":30867,"./az":31083,"./az.js":31083,"./be":9808,"./be.js":9808,"./bg":68338,"./bg.js":68338,"./bm":67438,"./bm.js":67438,"./bn":8905,"./bn-bd":76225,"./bn-bd.js":76225,"./bn.js":8905,"./bo":11560,"./bo.js":11560,"./br":1278,"./br.js":1278,"./bs":80622,"./bs.js":80622,"./ca":2468,"./ca.js":2468,"./cs":5822,"./cs.js":5822,"./cv":50877,"./cv.js":50877,"./cy":47373,"./cy.js":47373,"./da":24780,"./da.js":24780,"./de":59740,"./de-at":60217,"./de-at.js":60217,"./de-ch":60894,"./de-ch.js":60894,"./de.js":59740,"./dv":5300,"./dv.js":5300,"./el":50837,"./el.js":50837,"./en-au":78348,"./en-au.js":78348,"./en-ca":77925,"./en-ca.js":77925,"./en-gb":22243,"./en-gb.js":22243,"./en-ie":46436,"./en-ie.js":46436,"./en-il":47207,"./en-il.js":47207,"./en-in":44175,"./en-in.js":44175,"./en-nz":76319,"./en-nz.js":76319,"./en-sg":31662,"./en-sg.js":31662,"./eo":92915,"./eo.js":92915,"./es":55655,"./es-do":55251,"./es-do.js":55251,"./es-mx":96112,"./es-mx.js":96112,"./es-us":71146,"./es-us.js":71146,"./es.js":55655,"./et":5603,"./et.js":5603,"./eu":77763,"./eu.js":77763,"./fa":76959,"./fa.js":76959,"./fi":11897,"./fi.js":11897,"./fil":42549,"./fil.js":42549,"./fo":94694,"./fo.js":94694,"./fr":94470,"./fr-ca":63049,"./fr-ca.js":63049,"./fr-ch":52330,"./fr-ch.js":52330,"./fr.js":94470,"./fy":5044,"./fy.js":5044,"./ga":29295,"./ga.js":29295,"./gd":2101,"./gd.js":2101,"./gl":38794,"./gl.js":38794,"./gom-deva":27884,"./gom-deva.js":27884,"./gom-latn":23168,"./gom-latn.js":23168,"./gu":95349,"./gu.js":95349,"./he":24206,"./he.js":24206,"./hi":30094,"./hi.js":30094,"./hr":30316,"./hr.js":30316,"./hu":22138,"./hu.js":22138,"./hy-am":11423,"./hy-am.js":11423,"./id":29218,"./id.js":29218,"./is":90135,"./is.js":90135,"./it":90626,"./it-ch":10150,"./it-ch.js":10150,"./it.js":90626,"./ja":39183,"./ja.js":39183,"./jv":24286,"./jv.js":24286,"./ka":12105,"./ka.js":12105,"./kk":47772,"./kk.js":47772,"./km":18758,"./km.js":18758,"./kn":79282,"./kn.js":79282,"./ko":33730,"./ko.js":33730,"./ku":1408,"./ku.js":1408,"./ky":33291,"./ky.js":33291,"./lb":36841,"./lb.js":36841,"./lo":55466,"./lo.js":55466,"./lt":57010,"./lt.js":57010,"./lv":37595,"./lv.js":37595,"./me":39861,"./me.js":39861,"./mi":35493,"./mi.js":35493,"./mk":95966,"./mk.js":95966,"./ml":87341,"./ml.js":87341,"./mn":5115,"./mn.js":5115,"./mr":10370,"./mr.js":10370,"./ms":9847,"./ms-my":41237,"./ms-my.js":41237,"./ms.js":9847,"./mt":72126,"./mt.js":72126,"./my":56165,"./my.js":56165,"./nb":64924,"./nb.js":64924,"./ne":16744,"./ne.js":16744,"./nl":93901,"./nl-be":59814,"./nl-be.js":59814,"./nl.js":93901,"./nn":83877,"./nn.js":83877,"./oc-lnc":92135,"./oc-lnc.js":92135,"./pa-in":15858,"./pa-in.js":15858,"./pl":64495,"./pl.js":64495,"./pt":89520,"./pt-br":57971,"./pt-br.js":57971,"./pt.js":89520,"./ro":96459,"./ro.js":96459,"./ru":21793,"./ru.js":21793,"./sd":40950,"./sd.js":40950,"./se":10490,"./se.js":10490,"./si":90124,"./si.js":90124,"./sk":64249,"./sk.js":64249,"./sl":14985,"./sl.js":14985,"./sq":51104,"./sq.js":51104,"./sr":49131,"./sr-cyrl":79915,"./sr-cyrl.js":79915,"./sr.js":49131,"./ss":85893,"./ss.js":85893,"./sv":98760,"./sv.js":98760,"./sw":91172,"./sw.js":91172,"./ta":27333,"./ta.js":27333,"./te":23110,"./te.js":23110,"./tet":52095,"./tet.js":52095,"./tg":27321,"./tg.js":27321,"./th":9041,"./th.js":9041,"./tk":19005,"./tk.js":19005,"./tl-ph":75768,"./tl-ph.js":75768,"./tlh":89444,"./tlh.js":89444,"./tr":72397,"./tr.js":72397,"./tzl":28254,"./tzl.js":28254,"./tzm":51106,"./tzm-latn":30699,"./tzm-latn.js":30699,"./tzm.js":51106,"./ug-cn":9288,"./ug-cn.js":9288,"./uk":67691,"./uk.js":67691,"./ur":13795,"./ur.js":13795,"./uz":6791,"./uz-latn":60588,"./uz-latn.js":60588,"./uz.js":6791,"./vi":65666,"./vi.js":65666,"./x-pseudo":14378,"./x-pseudo.js":14378,"./yo":75805,"./yo.js":75805,"./zh-cn":83839,"./zh-cn.js":83839,"./zh-hk":55726,"./zh-hk.js":55726,"./zh-mo":99807,"./zh-mo.js":99807,"./zh-tw":74152,"./zh-tw.js":74152};function o(t){var n=r(t);return e(n)}function r(t){if(!e.o(i,t)){var n=new Error("Cannot find module '"+t+"'");throw n.code="MODULE_NOT_FOUND",n}return i[t]}o.keys=function(){return Object.keys(i)},o.resolve=r,t.exports=o,o.id=46700}},i={};function o(t){var n=i[t];if(void 0!==n)return n.exports;var r=i[t]={id:t,loaded:!1,exports:{}};return e[t].call(r.exports,r,r.exports,o),r.loaded=!0,r.exports}o.m=e,o.amdD=function(){throw new Error("define cannot be used indirect")},o.amdO={},n=[],o.O=function(t,e,i,r){if(!e){var a=1/0;for(u=0;u<n.length;u++){e=n[u][0],i=n[u][1],r=n[u][2];for(var s=!0,l=0;l<e.length;l++)(!1&r||a>=r)&&Object.keys(o.O).every((function(t){return o.O[t](e[l])}))?e.splice(l--,1):(s=!1,r<a&&(a=r));if(s){n.splice(u--,1);var c=i();void 0!==c&&(t=c)}}return t}r=r||0;for(var u=n.length;u>0&&n[u-1][2]>r;u--)n[u]=n[u-1];n[u]=[e,i,r]},o.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(n,{a:n}),n},o.d=function(t,n){for(var e in n)o.o(n,e)&&!o.o(t,e)&&Object.defineProperty(t,e,{enumerable:!0,get:n[e]})},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),o.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},o.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},o.nmd=function(t){return t.paths=[],t.children||(t.children=[]),t},o.j=8318,function(){o.b=document.baseURI||self.location.href;var t={8318:0};o.O.j=function(n){return 0===t[n]};var n=function(n,e){var i,r,a=e[0],s=e[1],l=e[2],c=0;if(a.some((function(n){return 0!==t[n]}))){for(i in s)o.o(s,i)&&(o.m[i]=s[i]);if(l)var u=l(o)}for(n&&n(e);c<a.length;c++)r=a[c],o.o(t,r)&&t[r]&&t[r][0](),t[r]=0;return o.O(u)},e=self.webpackChunknextcloud=self.webpackChunknextcloud||[];e.forEach(n.bind(null,0)),e.push=n.bind(null,e.push.bind(e))}(),o.nc=void 0;var r=o.O(void 0,[7874],(function(){return o(36620)}));r=o.O(r)}(); +//# sourceMappingURL=workflowengine-workflowengine.js.map?v=f2b72e4b17490ddf5a5c
\ No newline at end of file diff --git a/dist/workflowengine-workflowengine.js.map b/dist/workflowengine-workflowengine.js.map index 4cd2e79ccc9..f42518d8241 100644 --- a/dist/workflowengine-workflowengine.js.map +++ b/dist/workflowengine-workflowengine.js.map @@ -1 +1 @@ -{"version":3,"file":"workflowengine-workflowengine.js?v=04a50174f84824030817","mappings":";gBAAIA,kGC2BEC,EAAsD,KAAzCC,EAAAA,EAAAA,WAAU,iBAAkB,SAAiB,SAAW,OAErEC,EAAY,SAACC,GAClB,OAAOC,EAAAA,EAAAA,gBAAe,oDAAqD,CAAEJ,WAAAA,IAAgBG,EAAM,cACnG,ygCCGDE,EAAAA,GAAAA,IAAQC,EAAAA,IAER,IAgJA,EAhJc,IAAIC,EAAAA,GAAM,CACvBC,MAAO,CACNC,MAAO,GACPC,OAAOT,EAAAA,EAAAA,WAAU,iBAAkB,SACnCU,iBAAiBV,EAAAA,EAAAA,WAAU,iBAAkB,mBAC7CW,YAAYX,EAAAA,EAAAA,WAAU,iBAAkB,aAExCY,QAASR,EAAAA,GAAAA,WAAe,CACvBS,OAAQ,CAAC,EACTC,UAAW,CAAC,IAGbC,UAAUf,EAAAA,EAAAA,WAAU,iBAAkB,YACtCgB,QAAQhB,EAAAA,EAAAA,WAAU,iBAAkB,YAClCiB,KAAI,SAACC,GAAD,OAAYA,EAAOF,OAAOC,KAAI,SAAAE,GAClC,UACCC,GAAI,GAAF,OAAKF,EAAOE,GAAZ,aAAmBD,EAAME,WAC3BH,OAAAA,GACGC,EAEJ,GANI,IAMDG,OACLT,QAAQb,EAAAA,EAAAA,WAAU,iBAAkB,WAErCuB,UAAW,CACVC,QADU,SACFjB,EAAOkB,GACdlB,EAAMC,MAAMkB,KAAZ,OAAsBD,GAAtB,IAA4BE,OAAO,IACnC,EACDC,WAJU,SAICrB,EAAOkB,GACjB,IAAMI,EAAQtB,EAAMC,MAAMsB,WAAU,SAACC,GAAD,OAAUN,EAAKL,KAAOW,EAAKX,EAA3B,IAC9BY,EAAUC,OAAOC,OAAO,CAAC,EAAGT,GAClCrB,EAAAA,GAAAA,IAAQG,EAAMC,MAAOqB,EAAOG,EAC5B,EACDG,WATU,SASC5B,EAAOkB,GACjB,IAAMI,EAAQtB,EAAMC,MAAMsB,WAAU,SAACC,GAAD,OAAUN,EAAKL,KAAOW,EAAKX,EAA3B,IACpCb,EAAMC,MAAM4B,OAAOP,EAAO,EAC1B,EACDQ,eAbU,SAaK9B,EAAO+B,GACrBlC,EAAAA,GAAAA,IAAQG,EAAMK,QAAQC,OAAQyB,EAAOC,MAAOD,EAC5C,EACDE,kBAhBU,SAgBQjC,EAAO+B,GACxBA,EAASL,OAAOC,OACf,CAAEO,MAAO,gCACTH,EAAQ/B,EAAMI,WAAW2B,EAAOlB,KAAO,CAAC,QACE,IAAhCb,EAAMI,WAAW2B,EAAOlB,KAClChB,EAAAA,GAAAA,IAAQG,EAAMI,WAAY2B,EAAOlB,GAAIkB,EAEtC,GAEFI,QAAS,CACFC,WADE,SACSC,GAAS,uJACFC,EAAAA,QAAAA,IAAU5C,EAAU,KADlB,gBACjB6C,EADiB,EACjBA,KACRb,OAAOc,OAAOD,EAAKE,IAAIF,MAAMxB,OAAO2B,SAAQ,SAACxB,GAC5CmB,EAAQM,OAAO,UAAWzB,EAC1B,IAJwB,4CAKzB,EACD0B,cAPQ,SAOMP,EAASnB,GACtB,IAAIP,EAAS,KACTF,EAAS,IACU,IAAnBS,EAAK2B,WAA4C,KAArB3B,EAAK4B,cAGpCrC,EAAS,EADTE,GADAA,EAAS0B,EAAQrC,MAAMQ,SAASuC,MAAK,SAACvB,GAAD,OAAUN,EAAKV,UAAYU,EAAKV,SAAS,KAAOgB,EAAKX,EAArD,MAClBa,OAAOc,OAAOH,EAAQrC,MAAMQ,UAAU,IACxCC,OAAO,GAAGK,YAG5BuB,EAAQM,OAAO,UAAW,CACzB9B,KAAM,IAAImC,MAAOC,UACjBjB,MAAOd,EAAKL,GACZF,OAAQA,EAASA,EAAOE,GAAKK,EAAK4B,YAClCrC,OAAAA,EACAyC,KAAM,GACN5C,OAAQ,CACP,CAAE0B,MAAO,KAAMmB,SAAU,KAAMC,MAAO,KAEvCC,UAAWnC,EAAKmC,WAAa,IAE9B,EACDhC,WA5BQ,SA4BGgB,EAASnB,GACnBmB,EAAQM,OAAO,aAAf,OACIzB,GADJ,IAECT,OAA+B,iBAAhBS,EAAKT,OAAsB6C,KAAKC,MAAMrC,EAAKT,QAAUS,EAAKT,SAE1E,EACDmB,WAlCQ,SAkCGS,EAASnB,GACnBmB,EAAQM,OAAO,aAAczB,EAC7B,EACKsC,eArCE,SAqCanB,EAASnB,GAAM,wIACP,IAAxBmB,EAAQrC,MAAME,MADiB,iCAE5BuD,EAAAA,EAAAA,mBAF4B,YAK/BvC,EAAKL,GAAK,GALqB,gCAMnByB,EAAAA,QAAAA,KAAW5C,EAAU,IAAKwB,GANP,OAMlCwC,EANkC,+CAQnBpB,EAAAA,QAAAA,IAAU5C,EAAU,IAAD,OAAKwB,EAAKL,KAAOK,GARjB,QAQlCwC,EARkC,eAUnC7D,EAAAA,GAAAA,IAAQqB,EAAM,KAAMwC,EAAOnB,KAAKE,IAAIF,KAAK1B,IACzCwB,EAAQM,OAAO,aAAczB,GAXM,6CAYnC,EACKyC,WAlDE,SAkDStB,EAASnB,GAAM,gJACzBuC,EAAAA,EAAAA,mBADyB,uBAEzBnB,EAAAA,QAAAA,OAAa5C,EAAU,IAAD,OAAKwB,EAAKL,MAFP,OAG/BwB,EAAQM,OAAO,aAAczB,GAHE,4CAI/B,EACD0C,SAvDQ,SAuDCvB,EAvDD,GAuD2B,IAAfnB,EAAe,EAAfA,KAAME,EAAS,EAATA,MACzBF,EAAKE,MAAQA,EACbiB,EAAQM,OAAO,aAAczB,EAC7B,GAEF2C,QAAS,CACRC,SADQ,SACC9D,GACR,OAAOA,EAAMC,MAAM8D,QAAO,SAAC7C,GAAD,YAAkD,IAAjClB,EAAMI,WAAWc,EAAKc,MAAvC,IAA+DgC,MAAK,SAACC,EAAOC,GACrG,OAAOD,EAAMpD,GAAKqD,EAAMrD,IAAMqD,EAAMlC,MAAQiC,EAAMjC,KAClD,GACD,EACDmC,oBANQ,SAMYnE,GACnB,OAAO,SAACkB,GAAD,OAAUlB,EAAMI,WAAWc,EAAKc,MAAhC,CACP,EACDoC,sBATQ,SAScpE,GACrB,OAAO,SAACqD,GAAD,OAAerD,EAAMQ,SAASuC,MAAK,SAACpC,GAAD,OAAY0C,EAAUP,cAAgBnC,EAAOE,EAA7C,GAAnC,CACP,EACDwD,sBAZQ,SAYcrE,GACrB,OAAO,SAACqD,GAAD,OAAerD,EAAMS,MAArB,CACP,EAQD6D,mBAtBQ,SAsBWtE,GAClB,OAAO,SAACW,GACP,OAAOe,OAAOc,OAAOxC,EAAMM,QACzByD,QAAO,SAACQ,GAAD,OAAWA,EAAMC,kBAAkBC,QAAQ9D,IAAW,GAAwC,IAAnC4D,EAAMC,kBAAkBE,MAAnF,IACPhE,KAAI,SAAC6D,GAAD,OAAWvE,EAAMK,QAAQC,OAAOiE,EAAM1D,GAAtC,IACJ8D,QAAO,SAACC,EAAKpD,GAEb,OADAoD,EAAIpD,EAAKQ,OAASR,EACXoD,CACP,GAAE,CAAC,EACL,CACD,qJChL+K,ECgClL,CACA,aACA,YACA,mBAEA,OACA,MACA,YACA,cAGA,UACA,OADA,WAEA,gEACA,EACA,UAJA,WAKA,yDACA,EACA,UAPA,WAQA,gEACA,EACA,aAVA,WAUA,WACA,wHACA,GAEA,SACA,YADA,SACA,GACA,iBAIA,IAEA,EAFA,mBACA,8FAGA,EADA,WACA,yCAEA,KAGA,gCACA,qHACA,8BAZA,MAFA,kEAeA,qIChEIC,EAAU,CAAC,EAEfA,EAAQC,kBAAoB,IAC5BD,EAAQE,cAAgB,IAElBF,EAAQG,OAAS,SAAc,KAAM,QAE3CH,EAAQI,OAAS,IACjBJ,EAAQK,mBAAqB,IAEhB,IAAI,IAASL,GAKJ,KAAW,YAAiB,WALlD,eCFA,GAXgB,OACd,GCTW,WAAa,IAAIM,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACE,YAAY,SAAS,CAAEN,EAAI9B,UAAUR,WAA2C,KAA9BsC,EAAI9B,UAAUP,YAAoByC,EAAG,MAAM,CAACE,YAAY,aAAa,CAACF,EAAG,MAAM,CAACE,YAAY,eAAeC,MAAM,CAAC,IAAMP,EAAIxE,OAAOgF,KAAK,IAAM,MAAMR,EAAIS,GAAG,KAAKL,EAAG,OAAO,CAACE,YAAY,sCAAsC,CAACN,EAAIS,GAAGT,EAAIU,GAAGV,EAAI9B,UAAUyC,kBAAkBP,EAAG,gBAAgB,CAACG,MAAM,CAAC,MAAQP,EAAIY,aAAa,QAAUZ,EAAIa,UAAU,WAAW,KAAK,UAAW,EAAK,cAAa,EAAM,SAAWb,EAAIa,UAAUtB,QAAU,GAAGuB,GAAG,CAAC,MAAQd,EAAIe,aAAaC,YAAYhB,EAAIiB,GAAG,CAAC,CAACC,IAAI,YAAYC,GAAG,SAASC,GAC3pB,IAAI/D,EAAS+D,EAAI/D,OACbgE,EAASD,EAAIC,OACjB,MAAO,CAAEhE,EAAOkC,SAAW8B,EAAQjB,EAAG,MAAM,CAACE,YAAY,aAAa,CAACF,EAAG,MAAM,CAACE,YAAY,eAAeC,MAAM,CAAC,IAAMlD,EAAO,GAAG7B,OAAOgF,KAAK,IAAM,MAAMR,EAAIS,GAAG,KAAKT,EAAIsB,GAAG,GAAS,SAASrD,EAAM9B,GAAO,OAAOiE,EAAG,OAAO,CAACc,IAAIjD,EAAMvC,GAAG4E,YAAY,2CAA2C,CAACN,EAAIS,GAAGT,EAAIU,GAAGzC,EAAMsD,aAAa,KAAMpF,EAAM,EAAIkB,EAAOkC,OAAQa,EAAG,OAAO,CAACJ,EAAIS,GAAG,QAAQT,EAAIwB,MAAM,KAAI,GAAGxB,EAAIwB,KAAK,GAAG,CAACN,IAAI,SAASC,GAAG,SAASM,GAAO,MAAO,CAACrB,EAAG,MAAM,CAACE,YAAY,eAAeC,MAAM,CAAC,IAAMkB,EAAMC,OAAOlG,OAAOgF,KAAK,IAAM,MAAMR,EAAIS,GAAG,KAAKL,EAAG,OAAO,CAACE,YAAY,iBAAiB,CAACN,EAAIS,GAAGT,EAAIU,GAAGe,EAAMC,OAAOH,gBAAgB,QAAQ,EAAE,GAC/mB,IDQpB,EACA,KACA,WACA,MAI8B,2BEnBkJ,ECgDlL,CACA,aACA,YACA,mBACA,cACA,mBAEA,YACA,kBAEA,OACA,OACA,YACA,aAEA,MACA,YACA,cAGA,KApBA,WAqBA,OACA,iBACA,mBACA,qBACA,WACA,SAEA,EACA,UACA,OADA,WAEA,+DACA,EACA,UAJA,WAKA,gCACA,sDACA,2BACA,cAEA,CACA,EACA,iBAZA,WAaA,0BACA,gDADA,EAEA,EACA,iBAhBA,WAiBA,0DACA,2CAEA,EACA,GAEA,OACA,iBADA,WAEA,eACA,GAEA,QAzDA,WAyDA,WACA,wCACA,iDACA,8FAEA,yBACA,uEAEA,eACA,EACA,SACA,WADA,WAEA,qBACA,EACA,WAJA,WAKA,qBACA,EACA,SAPA,WAQA,cACA,kDACA,sDAGA,+BACA,iCACA,EACA,YAhBA,WAgBA,WACA,gFACA,sDACA,wCAGA,0CAEA,kDAEA,gBAEA,+BACA,eCrII,EAAU,CAAC,EAEf,EAAQ5B,kBAAoB,IAC5B,EAAQC,cAAgB,IAElB,EAAQC,OAAS,SAAc,KAAM,QAE3C,EAAQC,OAAS,IACjB,EAAQC,mBAAqB,IAEhB,IAAI,IAAS,GAKJ,KAAW,YAAiB,WALlD,ICFA,IAXgB,OACd,GCTW,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACuB,WAAW,CAAC,CAAC5D,KAAK,gBAAgB6D,QAAQ,kBAAkB3D,MAAO+B,EAAc,WAAE6B,WAAW,eAAevB,YAAY,QAAQQ,GAAG,CAAC,MAAQd,EAAI8B,aAAa,CAAC1B,EAAG,gBAAgB,CAACgB,IAAI,gBAAgBb,MAAM,CAAC,QAAUP,EAAIN,QAAQ,MAAQ,OAAO,WAAW,QAAQ,eAAc,EAAM,YAAcM,EAAI+B,EAAE,iBAAkB,oBAAoBjB,GAAG,CAAC,MAAQd,EAAIgC,aAAaC,MAAM,CAAChE,MAAO+B,EAAiB,cAAEkC,SAAS,SAAUC,GAAMnC,EAAIoC,cAAcD,CAAG,EAAEN,WAAW,mBAAmB7B,EAAIS,GAAG,KAAKL,EAAG,gBAAgB,CAACE,YAAY,aAAaC,MAAM,CAAC,UAAYP,EAAIoC,cAAc,QAAUpC,EAAI5E,UAAU,MAAQ,OAAO,WAAW,WAAW,eAAc,EAAM,YAAc4E,EAAI+B,EAAE,iBAAkB,wBAAwBjB,GAAG,CAAC,MAAQd,EAAIgC,aAAaC,MAAM,CAAChE,MAAO+B,EAAmB,gBAAEkC,SAAS,SAAUC,GAAMnC,EAAIqC,gBAAgBF,CAAG,EAAEN,WAAW,qBAAqB7B,EAAIS,GAAG,KAAMT,EAAIqC,iBAAmBrC,EAAIsC,iBAAkBlC,EAAGJ,EAAIoC,cAAcG,UAAU,CAACC,IAAI,YAAYlC,YAAY,SAASC,MAAM,CAAC,UAAYP,EAAIoC,cAAc,MAAQpC,EAAIZ,OAAO0B,GAAG,CAAC,MAAQd,EAAIgC,YAAY,MAAQ,SAASS,IAASzC,EAAI/D,OAAM,IAAS+D,EAAI0C,UAAU,EAAE,QAAU,SAASD,KAAUzC,EAAI/D,OAAM,IAAU+D,EAAI0C,UAAU,GAAGT,MAAM,CAAChE,MAAO+B,EAAIZ,MAAW,MAAE8C,SAAS,SAAUC,GAAMnC,EAAI2C,KAAK3C,EAAIZ,MAAO,QAAS+C,EAAI,EAAEN,WAAW,iBAAiBzB,EAAG,QAAQ,CAACuB,WAAW,CAAC,CAAC5D,KAAK,QAAQ6D,QAAQ,UAAU3D,MAAO+B,EAAIZ,MAAW,MAAEyC,WAAW,gBAAgBvB,YAAY,SAASzD,MAAM,CAAE+F,SAAU5C,EAAI/D,OAAQsE,MAAM,CAAC,KAAO,OAAO,UAAYP,EAAIoC,cAAc,YAAcpC,EAAI6C,kBAAkBC,SAAS,CAAC,MAAS9C,EAAIZ,MAAW,OAAG0B,GAAG,CAAC,MAAQ,CAAC,SAAS2B,GAAWA,EAAOM,OAAOC,WAAqBhD,EAAI2C,KAAK3C,EAAIZ,MAAO,QAASqD,EAAOM,OAAO9E,MAAM,EAAE+B,EAAIgC,gBAAgBhC,EAAIS,GAAG,KAAMT,EAAIiD,gBAAkBjD,EAAIoC,cAAehC,EAAG,YAAY,CAACA,EAAG,iBAAiB,CAACG,MAAM,CAAC,KAAO,cAAcO,GAAG,CAAC,MAAQ,SAAS2B,GAAQ,OAAOzC,EAAIkD,MAAM,SAAS,MAAM,GAAGlD,EAAIwB,MAAM,EAAE,GACp+D,IDWpB,EACA,KACA,WACA,MAI8B,QEnBsJ,GCmBtL,CACA,iBACA,YACA,cAEA,OACA,WACA,YACA,aAEA,SACA,aACA,0BCpBI,GAAU,CAAC,EAEf,GAAQ7B,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICFA,IAXgB,OACd,ICTW,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACE,YAAY,gBAAgBzD,MAAM,CAAC,QAAWmD,EAAImD,SAASC,MAAM,CAAGC,gBAAiBrD,EAAImD,QAAUnD,EAAI9B,UAAUnB,MAAQ,gBAAkB,CAACqD,EAAG,MAAM,CAACE,YAAY,OAAOzD,MAAMmD,EAAI9B,UAAUoF,UAAUF,MAAM,CAAGG,gBAAiBvD,EAAI9B,UAAUoF,UAAY,GAAM,OAAUtD,EAAI9B,UAAc,KAAI,OAAU8B,EAAIS,GAAG,KAAKL,EAAG,MAAM,CAACE,YAAY,8BAA8B,CAACF,EAAG,KAAK,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAI9B,UAAUH,SAASiC,EAAIS,GAAG,KAAKL,EAAG,QAAQ,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAI9B,UAAUsF,gBAAgBxD,EAAIS,GAAG,KAAMT,EAAW,QAAEI,EAAG,WAAW,CAACJ,EAAIS,GAAG,WAAWT,EAAIU,GAAGV,EAAI+B,EAAE,iBAAkB,iBAAiB,YAAY/B,EAAIwB,MAAM,GAAGxB,EAAIS,GAAG,KAAKL,EAAG,MAAM,CAACE,YAAY,yBAAyB,CAACN,EAAIyD,GAAG,YAAY,IAAI,GACzwB,IDWpB,EACA,KACA,WACA,MAI8B,wUEgDhC,ICnEiL,GDmEjL,CACA,YACA,YACA,qBACA,SACA,oBACA,gBACA,QACA,mBACA,cACA,aACA,cAEA,YACA,aAEA,OACA,MACA,YACA,cAGA,KAtBA,WAuBA,OACA,WACA,UACA,WACA,qBACA,kBAEA,EACA,UACA,UADA,WAEA,yDACA,EACA,WAJA,WAKA,6HACA,CACA,yDACA,aACA,eACA,yDAGA,WAGA,oEAFA,oEAIA,EACA,kBAnBA,WAoBA,kDACA,iCACA,GAEA,QAvDA,WAwDA,uDACA,EACA,SACA,gBADA,SACA,qJACA,6BADA,SAEA,eAFA,4CAGA,EACA,SALA,SAKA,GACA,gBACA,4CACA,EACA,WATA,WAUA,aACA,eAGA,gBACA,4CACA,EACA,SAjBA,WAiBA,oKAEA,2CAFA,OAGA,WACA,aACA,kDALA,gDAOA,0CACA,4CARA,0DAUA,EACA,WA5BA,WA4BA,oKAEA,uCAFA,sDAIA,4CACA,4CALA,yDAOA,EACA,WApCA,WAqCA,eACA,8CAEA,qDACA,wDACA,cAEA,EAEA,YA9CA,SA8CA,qJACA,yDACA,GACA,2BAEA,uCALA,4CAMA,EAEA,YAtDA,WAwDA,0DACA,gBE3KI,GAAU,CAAC,EAEf,GAAQ9D,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICFA,IAXgB,OACd,ICTW,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAQF,EAAa,UAAEI,EAAG,MAAM,CAACE,YAAY,eAAe8C,MAAM,CAAGM,gBAAiB1D,EAAI9B,UAAUnB,OAAS,KAAO,CAACqD,EAAG,MAAM,CAACE,YAAY,WAAW,CAACF,EAAG,IAAI,CAACA,EAAG,OAAO,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAI+B,EAAE,iBAAkB,YAAY/B,EAAIS,GAAG,KAAKL,EAAG,QAAQ,CAACG,MAAM,CAAC,KAAOP,EAAIjE,MAAM+E,GAAG,CAAC,OAASd,EAAI9D,eAAe,GAAG8D,EAAIS,GAAG,KAAKT,EAAIsB,GAAItB,EAAIjE,KAAW,QAAE,SAASqD,EAAMjD,GAAO,OAAOiE,EAAG,IAAI,CAACc,IAAI/E,GAAO,CAACiE,EAAG,OAAO,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAI+B,EAAE,iBAAkB,WAAW/B,EAAIS,GAAG,KAAKL,EAAG,QAAQ,CAACG,MAAM,CAAC,MAAQnB,EAAM,KAAOY,EAAIjE,MAAM+E,GAAG,CAAC,OAASd,EAAI9D,WAAW,SAAW8D,EAAI0C,SAAS,OAAS,SAASD,GAAQ,OAAOzC,EAAI2D,YAAYvE,EAAM,MAAM,EAAE,IAAGY,EAAIS,GAAG,KAAKL,EAAG,IAAI,CAACA,EAAG,QAAQJ,EAAIS,GAAG,KAAMT,EAAqB,kBAAEI,EAAG,QAAQ,CAACE,YAAY,aAAaC,MAAM,CAAC,KAAO,SAAS,MAAQ,oBAAoBO,GAAG,CAAC,MAAQd,EAAI4D,eAAe5D,EAAIwB,QAAQ,GAAGxB,EAAIS,GAAG,KAAKL,EAAG,MAAM,CAACE,YAAY,2BAA2BN,EAAIS,GAAG,KAAKL,EAAG,MAAM,CAACE,YAAY,UAAU,CAACF,EAAG,YAAY,CAACG,MAAM,CAAC,UAAYP,EAAI9B,UAAU,SAAU,IAAQ,CAAE8B,EAAI9B,UAAiB,QAAEkC,EAAGJ,EAAI9B,UAAUwB,QAAQ,CAAC8C,IAAI,YAAY1B,GAAG,CAAC,MAAQd,EAAI6D,iBAAiB5B,MAAM,CAAChE,MAAO+B,EAAIjE,KAAc,UAAEmG,SAAS,SAAUC,GAAMnC,EAAI2C,KAAK3C,EAAIjE,KAAM,YAAaoG,EAAI,EAAEN,WAAW,oBAAoB7B,EAAIwB,MAAM,GAAGxB,EAAIS,GAAG,KAAKL,EAAG,MAAM,CAACE,YAAY,WAAW,CAAEN,EAAIjE,KAAKL,IAAM,GAAKsE,EAAI8D,MAAO1D,EAAG,WAAW,CAACU,GAAG,CAAC,MAAQd,EAAI+D,aAAa,CAAC/D,EAAIS,GAAG,aAAaT,EAAIU,GAAGV,EAAI+B,EAAE,iBAAkB,WAAW,cAAgB/B,EAAI8D,MAAgI9D,EAAIwB,KAA7HpB,EAAG,WAAW,CAACU,GAAG,CAAC,MAAQd,EAAIxB,aAAa,CAACwB,EAAIS,GAAG,aAAaT,EAAIU,GAAGV,EAAI+B,EAAE,iBAAkB,WAAW,cAAuB/B,EAAIS,GAAG,KAAKL,EAAG,WAAW,CAACG,MAAM,CAAC,KAAOP,EAAIgE,WAAWC,MAAMnD,GAAG,CAAC,MAAQd,EAAIkE,UAAUlD,YAAYhB,EAAIiB,GAAG,CAAC,CAACC,IAAI,OAAOC,GAAG,WAAW,MAAO,CAACf,EAAGJ,EAAIgE,WAAWxD,KAAK,CAACgC,IAAI,YAAYjC,MAAM,CAAC,KAAO,MAAM,EAAE4D,OAAM,IAAO,MAAK,EAAM,aAAa,CAACnE,EAAIS,GAAG,aAAaT,EAAIU,GAAGV,EAAIgE,WAAWI,OAAO,eAAe,GAAGpE,EAAIS,GAAG,KAAMT,EAAS,MAAEI,EAAG,IAAI,CAACE,YAAY,iBAAiB,CAACN,EAAIS,GAAG,WAAWT,EAAIU,GAAGV,EAAIqE,OAAO,YAAYrE,EAAIwB,MAAM,KAAKxB,EAAIwB,IAAI,GAC/iE,IDWpB,EACA,KACA,WACA,MAI8B,kvBE0ChC,IC7DqL,GD+DrL,CACA,gBACA,YACA,aACA,cACA,YACA,aACA,QACA,wBAEA,KAVA,WAWA,OACA,sBACA,wDACA,2DAEA,EACA,sBACA,SACA,qBAEA,SACA,kCACA,cACA,2BAPA,IASA,kBATA,WAUA,2CA7BA,CA8BA,EACA,kBAZA,WAaA,+BACA,+BAEA,uCAnCA,EAoCA,EACA,iBAlBA,WAmBA,6DACA,IAEA,QAvCA,WAwCA,kCACA,EACA,SACA,cADA,SACA,GACA,uCACA,gBEjGI,GAAU,CAAC,EAEf,GAAQ7B,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICFA,IAXgB,OACd,ICTW,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACG,MAAM,CAAC,GAAK,mBAAmB,CAACH,EAAG,oBAAoB,CAACG,MAAM,CAAC,MAAQP,EAAI+B,EAAE,iBAAkB,mBAAmB,UAAU/B,EAAIsE,iBAAiB,CAAgB,IAAdtE,EAAIjF,MAAaqF,EAAG,IAAI,CAACE,YAAY,iBAAiB,CAACF,EAAG,IAAI,CAACG,MAAM,CAAC,KAAO,qCAAqC,CAACP,EAAIS,GAAGT,EAAIU,GAAGV,EAAI+B,EAAE,iBAAkB,6FAA6F/B,EAAIwB,KAAKxB,EAAIS,GAAG,KAAKL,EAAG,mBAAmB,CAACE,YAAY,UAAUC,MAAM,CAAC,KAAO,QAAQ,IAAM,QAAQ,CAACP,EAAIsB,GAAItB,EAAqB,mBAAE,SAAS9B,GAAW,OAAOkC,EAAG,YAAY,CAACc,IAAIhD,EAAUxC,GAAG6E,MAAM,CAAC,UAAYrC,GAAWqG,SAAS,CAAC,MAAQ,SAAS9B,GAAQ,OAAOzC,EAAIvC,cAAcS,EAAU,IAAI,IAAG8B,EAAIS,GAAG,KAAMT,EAAoB,iBAAEI,EAAG,IAAI,CAACc,IAAI,MAAMZ,YAAY,6BAA6BC,MAAM,CAAC,KAAOP,EAAIwE,cAAc,CAACpE,EAAG,MAAM,CAACE,YAAY,kBAAkBN,EAAIS,GAAG,KAAKL,EAAG,MAAM,CAACE,YAAY,8BAA8B,CAACF,EAAG,KAAK,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAI+B,EAAE,iBAAkB,kBAAkB/B,EAAIS,GAAG,KAAKL,EAAG,QAAQ,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAI+B,EAAE,iBAAkB,gCAAgC/B,EAAIwB,MAAM,GAAGxB,EAAIS,GAAG,KAAMT,EAAqB,kBAAEI,EAAG,MAAM,CAACE,YAAY,iBAAiB,CAACF,EAAG,WAAW,CAACU,GAAG,CAAC,MAAQ,SAAS2B,GAAQzC,EAAIyE,oBAAsBzE,EAAIyE,kBAAkB,GAAGzD,YAAYhB,EAAIiB,GAAG,CAAC,CAACC,IAAI,OAAOC,GAAG,WAAW,MAAO,CAAEnB,EAAsB,mBAAEI,EAAG,SAAS,CAACG,MAAM,CAAC,KAAO,MAAMH,EAAG,WAAW,CAACG,MAAM,CAAC,KAAO,MAAM,EAAE4D,OAAM,IAAO,MAAK,EAAM,aAAa,CAACnE,EAAIS,GAAG,aAAaT,EAAIU,GAAGV,EAAIyE,mBAAqBzE,EAAI+B,EAAE,iBAAkB,aAAe/B,EAAI+B,EAAE,iBAAkB,cAAc,eAAe,GAAG/B,EAAIwB,KAAKxB,EAAIS,GAAG,KAAoB,IAAdT,EAAIjF,MAAaqF,EAAG,KAAK,CAACE,YAAY,oBAAoB,CAACN,EAAIS,GAAG,WAAWT,EAAIU,GAAGV,EAAI+B,EAAE,iBAAkB,qBAAqB,YAAY3B,EAAG,KAAK,CAACE,YAAY,oBAAoB,CAACN,EAAIS,GAAG,WAAWT,EAAIU,GAAGV,EAAI+B,EAAE,iBAAkB,eAAe,aAAa,GAAG/B,EAAIS,GAAG,KAAMT,EAAIlF,MAAMyE,OAAS,EAAGa,EAAG,mBAAmB,CAACG,MAAM,CAAC,KAAO,UAAUP,EAAIsB,GAAItB,EAAS,OAAE,SAASjE,GAAM,OAAOqE,EAAG,OAAO,CAACc,IAAInF,EAAKL,GAAG6E,MAAM,CAAC,KAAOxE,IAAO,IAAG,GAAGiE,EAAIwB,MAAM,EAAE,GAC7mE,IDWpB,EACA,KACA,WACA,MAI8B,QEG1BkD,GAAa,yBACbC,GAAY,8LACZC,GAAY,gsBC8BlB,GA/BmB,CAClBnD,MAAO,CACNxD,MAAO,CACNgG,KAAMY,OACNC,QAAS,IAEV1F,MAAO,CACN6E,KAAM1H,OACNuI,QAAS,WAAQ,MAAO,CAAC,CAAG,IAG9B1H,KAXkB,WAYjB,MAAO,CACN2H,SAAU,GAEX,EACDC,MAAO,CACN/G,MAAO,CACNgH,WAAW,EACXC,QAFM,SAEEjH,GACPgC,KAAKkF,oBAAoBlH,EACzB,IAGHmH,QAAS,CACRD,oBADQ,SACYlH,GACnBgC,KAAK8E,SAAW9G,CAChB,+GCYH,IC9D+L,GD8D/L,CACA,oBACA,YACA,mBAEA,QACA,IAEA,KARA,WASA,OACA,iBACA,CACA,mBACA,mCACA,gCAEA,CACA,oBACA,mCACA,wBAEA,CACA,8DACA,6CACA,mEAEA,CACA,4DACA,0CACA,4BAIA,EACA,UACA,QADA,WAEA,krBACA,EACA,aAJA,WAIA,WAEA,QADA,uEAKA,EACA,YAXA,WAYA,OACA,0BACA,6CACA,WAEA,EACA,aAlBA,WAkBA,WAEA,OADA,yEAIA,CACA,0BACA,4CACA,sBAEA,GAEA,SACA,cADA,SACA,GAGA,cAFA,yBACA,OAEA,EACA,SANA,SAMA,GACA,WACA,wBACA,kCAEA,EACA,aAZA,SAYA,GACA,6BACA,iCACA,gBElII,GAAU,CAAC,EAEf,GAAQ0B,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICFA,IAXgB,OACd,ICTW,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACA,EAAG,gBAAgB,CAACG,MAAM,CAAC,MAAQP,EAAIqF,aAAa,YAAcrF,EAAI+B,EAAE,iBAAkB,sBAAsB,MAAQ,QAAQ,WAAW,UAAU,QAAU/B,EAAIN,QAAQ,UAAW,EAAM,SAAU,GAAOoB,GAAG,CAAC,MAAQd,EAAIsF,UAAUtE,YAAYhB,EAAIiB,GAAG,CAAC,CAACC,IAAI,cAAcC,GAAG,SAASM,GAAO,MAAO,CAAEA,EAAMC,OAAW,KAAEtB,EAAG,OAAO,CAACE,YAAY,eAAezD,MAAM4E,EAAMC,OAAOlB,OAAOJ,EAAG,MAAM,CAACE,YAAY,mBAAmBC,MAAM,CAAC,IAAMkB,EAAMC,OAAO6D,QAAQ,IAAM,MAAMvF,EAAIS,GAAG,KAAKL,EAAG,OAAO,CAACE,YAAY,sCAAsC,CAACN,EAAIS,GAAGT,EAAIU,GAAGe,EAAMC,OAAO8D,UAAU,GAAG,CAACtE,IAAI,SAASC,GAAG,SAASM,GAAO,MAAO,CAAEA,EAAMC,OAAW,KAAEtB,EAAG,OAAO,CAACE,YAAY,eAAezD,MAAM4E,EAAMC,OAAOlB,OAAOJ,EAAG,MAAM,CAACE,YAAY,mBAAmBC,MAAM,CAAC,IAAMkB,EAAMC,OAAO6D,QAAQ,IAAM,MAAMvF,EAAIS,GAAG,KAAKL,EAAG,OAAO,CAACE,YAAY,iBAAiB,CAACN,EAAIS,GAAGT,EAAIU,GAAGe,EAAMC,OAAO8D,UAAU,OAAOxF,EAAIS,GAAG,KAAOT,EAAIyF,aAA+LzF,EAAIwB,KAArLpB,EAAG,QAAQ,CAACG,MAAM,CAAC,KAAO,OAAO,YAAcP,EAAI+B,EAAE,iBAAkB,8BAA8Be,SAAS,CAAC,MAAQ9C,EAAIqF,aAAaK,SAAS5E,GAAG,CAAC,MAAQd,EAAI2F,iBAA0B,EAAE,GAC5qC,IDWpB,EACA,KACA,WACA,MAI8B,oBEnBgK,GC+BhM,CACA,qBACA,YACA,2BAEA,OACA,OACA,YACA,aAGA,KAXA,WAYA,OACA,YAEA,EACA,OACA,MADA,WAEA,kBACA,GAEA,YArBA,WAsBA,kBACA,EACA,SACA,YADA,WAEA,gBACA,yBAEA,kBAEA,EACA,OARA,WASA,qCACA,IC/CA,IAXgB,OACd,ICRW,WAAa,IAAI3F,EAAIC,KAASC,EAAGF,EAAIG,eAAuC,OAAjBH,EAAIK,MAAMD,IAAIF,GAAa,kBAAkB,CAACK,MAAM,CAAC,UAAW,GAAOO,GAAG,CAAC,MAAQd,EAAI4F,QAAQ3D,MAAM,CAAChE,MAAO+B,EAAY,SAAEkC,SAAS,SAAUC,GAAMnC,EAAI+E,SAAS5C,CAAG,EAAEN,WAAW,aAAa,GAChP,IDUpB,EACA,KACA,WACA,MAI8B,QES1BgE,GAAyB,WAC9B,MAAO,CACN,CAAE7H,SAAU,UAAWD,KAAMgE,EAAE,iBAAkB,YACjD,CAAE/D,SAAU,WAAYD,KAAMgE,EAAE,iBAAkB,mBAClD,CAAE/D,SAAU,KAAMD,KAAMgE,EAAE,iBAAkB,OAC5C,CAAE/D,SAAU,MAAOD,KAAMgE,EAAE,iBAAkB,WAE9C,EAsED,GApEmB,CAClB,CACClF,MAAO,uCACPkB,KAAMgE,EAAE,iBAAkB,aAC1B3G,UAAWyK,GACXC,YAAa,SAAC1G,GACb,MAAuB,YAAnBA,EAAMpB,UAA6C,aAAnBoB,EAAMpB,SAClC,gBAED,cACP,EACD0E,SXAsB,SAACtD,GACxB,MAAuB,YAAnBA,EAAMpB,UAA6C,aAAnBoB,EAAMpB,aAtBZ+H,EAuBR3G,EAAMnB,QAnBO,OAA5ByG,GAAWsB,KAAKD,GAJF,IAASA,CA0B9B,GWFA,CACClJ,MAAO,2CACPkB,KAAMgE,EAAE,iBAAkB,kBAC1B3G,UAAWyK,GACXtD,UAAW0D,IAGZ,CACCpJ,MAAO,uCACPkB,KAAMgE,EAAE,iBAAkB,sBAC1B3G,UAAW,CACV,CAAE4C,SAAU,OAAQD,KAAMgE,EAAE,iBAAkB,SAC9C,CAAE/D,SAAU,WAAYD,KAAMgE,EAAE,iBAAkB,mBAClD,CAAE/D,SAAU,QAASD,KAAMgE,EAAE,iBAAkB,sBAC/C,CAAE/D,SAAU,UAAWD,KAAMgE,EAAE,iBAAkB,aAElD+D,YAAa,SAAC1G,GAAD,MAAW,MAAX,EACbsD,SAAU,SAACtD,GAAD,QAAWA,EAAMnB,OAAuD,OAA/CmB,EAAMnB,MAAMiI,MAAM,wBAA3C,GAGX,CACCrJ,MAAO,mDACPkB,KAAMgE,EAAE,iBAAkB,0BAC1B3G,UAAW,CACV,CAAE4C,SAAU,cAAeD,KAAMgE,EAAE,iBAAkB,iBACrD,CAAE/D,SAAU,eAAgBD,KAAMgE,EAAE,iBAAkB,wBACtD,CAAE/D,SAAU,cAAeD,KAAMgE,EAAE,iBAAkB,iBACrD,CAAE/D,SAAU,eAAgBD,KAAMgE,EAAE,iBAAkB,yBAEvD+D,YAAa,SAAC1G,GACb,MAAuB,gBAAnBA,EAAMpB,UAAiD,iBAAnBoB,EAAMpB,SACtC,UAED,cACP,EACD0E,SAAU,SAACtD,GACV,MAAuB,gBAAnBA,EAAMpB,UAAiD,iBAAnBoB,EAAMpB,YX9CnB+H,EW+CN3G,EAAMnB,QX3CK,OAA3B2G,GAAUoB,KAAKD,GAXF,SAASA,GAC7B,QAAKA,GAG6B,OAA3BpB,GAAUqB,KAAKD,EACtB,CWmDSI,CAAa/G,EAAMnB,OXjDR,IAAS8H,CWkD3B,GAGF,CACClJ,MAAO,6CACPkB,KAAMgE,EAAE,iBAAkB,mBAC1B3G,UAAW,CACV,CAAE4C,SAAU,KAAMD,KAAMgE,EAAE,iBAAkB,mBAC5C,CAAE/D,SAAU,MAAOD,KAAMgE,EAAE,iBAAkB,wBAE9CQ,UAAW6D,gHC3Cb,ICzDmM,GDyDnM,CACA,wBACA,YACA,mBAEA,QACA,IAEA,KARA,WASA,OACA,YACA,iBACA,iFACA,yEACA,mFACA,4FAGA,EACA,UACA,QADA,WAEA,krBACA,EACA,mBAJA,WAIA,WACA,4BACA,kDACA,EACA,aARA,WASA,+BACA,EACA,YAXA,WAYA,OACA,0BACA,8CACA,WAEA,EACA,aAlBA,WAmBA,+BACA,wBAEA,CACA,0BACA,8CACA,sBAEA,GAEA,SACA,cADA,SACA,GAGA,cAFA,yBACA,OAEA,EACA,SANA,SAMA,GAEA,WACA,wBACA,kCAEA,EACA,aAbA,SAaA,GACA,6BACA,iCACA,gBE9GI,GAAU,CAAC,EAEf,GAAQzG,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICFA,IAXgB,OACd,ICTW,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACA,EAAG,gBAAgB,CAACG,MAAM,CAAC,MAAQP,EAAIqF,aAAa,YAAcrF,EAAI+B,EAAE,iBAAkB,uBAAuB,MAAQ,QAAQ,WAAW,UAAU,QAAU/B,EAAIN,QAAQ,UAAW,EAAM,SAAU,GAAOoB,GAAG,CAAC,MAAQd,EAAIsF,UAAUtE,YAAYhB,EAAIiB,GAAG,CAAC,CAACC,IAAI,cAAcC,GAAG,SAASM,GAAO,MAAO,CAACrB,EAAG,OAAO,CAACE,YAAY,eAAezD,MAAM4E,EAAMC,OAAOlB,OAAOR,EAAIS,GAAG,KAAKL,EAAG,OAAO,CAACE,YAAY,qCAAqCwC,SAAS,CAAC,UAAY9C,EAAIU,GAAGe,EAAMC,OAAO8D,UAAU,GAAG,CAACtE,IAAI,SAASC,GAAG,SAASM,GAAO,MAAO,CAACrB,EAAG,OAAO,CAACE,YAAY,eAAezD,MAAM4E,EAAMC,OAAOlB,OAAOR,EAAIS,GAAG,KAAMgB,EAAMC,OAAkB,YAAEtB,EAAG,OAAO,CAACE,YAAY,gBAAgBwC,SAAS,CAAC,UAAY9C,EAAIU,GAAGe,EAAMC,OAAO2E,gBAAgBjG,EAAG,OAAO,CAACE,YAAY,gBAAgBwC,SAAS,CAAC,UAAY9C,EAAIU,GAAGe,EAAMC,OAAO8D,UAAU,OAAOxF,EAAIS,GAAG,KAAOT,EAAIyF,aAA4HzF,EAAIwB,KAAlHpB,EAAG,QAAQ,CAACG,MAAM,CAAC,KAAO,QAAQuC,SAAS,CAAC,MAAQ9C,EAAIqF,aAAaK,SAAS5E,GAAG,CAAC,MAAQd,EAAI2F,iBAA0B,EAAE,GAC1iC,IDWpB,EACA,KACA,WACA,MAI8B,+BEOhC,mBC1B8L,GD2B9L,CACA,mBACA,YACA,mBAEA,QACA,IAEA,OACA,OACA,YACA,aAGA,KAdA,WAeA,OACA,aACA,SACA,UACA,eACA,aACA,0BAGA,EACA,QAzBA,WA0BA,eACA,EACA,SACA,oBADA,SACA,GACA,IACA,oBACA,eACA,eACA,+BACA,6BACA,+BAKA,CAFA,SAEA,CACA,EACA,SAfA,WAwBA,OARA,wHACA,yGACA,4CACA,WACA,oBAEA,sBAEA,UACA,EACA,OA1BA,WA8BA,GAHA,gCACA,wCAEA,iBACA,0JACA,qBACA,CACA,eE9EI,GAAU,CAAC,EAEf,GAAQhG,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICFA,IAXgB,OACd,ICTW,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACE,YAAY,YAAY,CAACF,EAAG,QAAQ,CAACuB,WAAW,CAAC,CAAC5D,KAAK,QAAQ6D,QAAQ,UAAU3D,MAAO+B,EAAI+E,SAAkB,UAAElD,WAAW,uBAAuBvB,YAAY,kBAAkBC,MAAM,CAAC,KAAO,OAAO,YAAc,cAAcuC,SAAS,CAAC,MAAS9C,EAAI+E,SAAkB,WAAGjE,GAAG,CAAC,MAAQ,CAAC,SAAS2B,GAAWA,EAAOM,OAAOC,WAAqBhD,EAAI2C,KAAK3C,EAAI+E,SAAU,YAAatC,EAAOM,OAAO9E,MAAM,EAAE+B,EAAI4F,WAAW5F,EAAIS,GAAG,KAAKL,EAAG,QAAQ,CAACuB,WAAW,CAAC,CAAC5D,KAAK,QAAQ6D,QAAQ,UAAU3D,MAAO+B,EAAI+E,SAAgB,QAAElD,WAAW,qBAAqBtB,MAAM,CAAC,KAAO,OAAO,YAAc,cAAcuC,SAAS,CAAC,MAAS9C,EAAI+E,SAAgB,SAAGjE,GAAG,CAAC,MAAQ,CAAC,SAAS2B,GAAWA,EAAOM,OAAOC,WAAqBhD,EAAI2C,KAAK3C,EAAI+E,SAAU,UAAWtC,EAAOM,OAAO9E,MAAM,EAAE+B,EAAI4F,WAAW5F,EAAIS,GAAG,KAAOT,EAAI/D,MAAwI+D,EAAIwB,KAArIpB,EAAG,IAAI,CAACE,YAAY,gBAAgB,CAACN,EAAIS,GAAG,SAAST,EAAIU,GAAGV,EAAI+B,EAAE,iBAAkB,mCAAmC,UAAmB/B,EAAIS,GAAG,KAAKL,EAAG,gBAAgB,CAACuB,WAAW,CAAC,CAAC5D,KAAK,OAAO6D,QAAQ,SAAS3D,MAAO+B,EAAS,MAAE6B,WAAW,UAAUtB,MAAM,CAAC,QAAUP,EAAIsG,WAAWxF,GAAG,CAAC,MAAQd,EAAI4F,QAAQ3D,MAAM,CAAChE,MAAO+B,EAAI+E,SAAiB,SAAE7C,SAAS,SAAUC,GAAMnC,EAAI2C,KAAK3C,EAAI+E,SAAU,WAAY5C,EAAI,EAAEN,WAAW,wBAAwB,EAAE,GAC7yC,IDWpB,EACA,KACA,WACA,MAI8B,mHEoChC,QACA,kBACA,YACA,mBAEA,QACA,IAEA,KARA,WASA,OACA,YACA,iBACA,CACA,4CACA,UACA,+DAKA,EACA,UACA,QADA,WAEA,krBACA,EACA,YAJA,WAKA,wEACA,6CAEA,6BACA,EACA,mBAVA,WAUA,WACA,4BACA,sCACA,OACA,kDACA,EACA,aAhBA,WAiBA,+BACA,EACA,YAnBA,WAoBA,OACA,mCACA,UACA,CACA,0BACA,uCACA,aAIA,EACA,aA/BA,WAgCA,+BACA,wBAEA,CACA,0BACA,uCACA,sBAEA,GAEA,SACA,cADA,SACA,GAGA,cAFA,yBACA,OAEA,EACA,SANA,SAMA,GAEA,WACA,wBACA,kCAEA,EACA,aAbA,SAaA,GACA,6BACA,iCACA,ICtI6L,kBCWzL,GAAU,CAAC,EAEf,GAAQlC,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICFA,IAXgB,OACd,ICTW,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACA,EAAG,gBAAgB,CAACG,MAAM,CAAC,MAAQP,EAAIqF,aAAa,YAAcrF,EAAI+B,EAAE,iBAAkB,wBAAwB,MAAQ,QAAQ,WAAW,UAAU,eAAe,WAAW,cAAc,QAAQ,QAAU/B,EAAIN,QAAQ,UAAW,EAAM,SAAU,GAAOoB,GAAG,CAAC,MAAQd,EAAIsF,UAAUtE,YAAYhB,EAAIiB,GAAG,CAAC,CAACC,IAAI,cAAcC,GAAG,SAASM,GAAO,MAAO,CAACrB,EAAG,OAAO,CAACE,YAAY,eAAezD,MAAM4E,EAAMC,OAAOlB,OAAOR,EAAIS,GAAG,KAAKL,EAAG,OAAO,CAACE,YAAY,sCAAsC,CAACN,EAAIS,GAAGT,EAAIU,GAAGe,EAAMC,OAAO8D,UAAU,GAAG,CAACtE,IAAI,SAASC,GAAG,SAASM,GAAO,MAAO,CAACrB,EAAG,OAAO,CAACE,YAAY,eAAezD,MAAM4E,EAAMC,OAAOlB,OAAOR,EAAIS,GAAG,KAAKL,EAAG,OAAO,CAACE,YAAY,iBAAiB,CAACN,EAAIS,GAAGT,EAAIU,GAAGe,EAAMC,OAAO8D,OAAO,IAAIxF,EAAIU,GAAGe,EAAMC,OAAO2E,gBAAgB,OAAOrG,EAAIS,GAAG,KAAOT,EAAIyF,aAA0JzF,EAAIwB,KAAhJpB,EAAG,QAAQ,CAACG,MAAM,CAAC,KAAO,OAAO,YAAcP,EAAI8F,aAAahD,SAAS,CAAC,MAAQ9C,EAAIqF,aAAaK,SAAS5E,GAAG,CAAC,MAAQd,EAAI2F,iBAA0B,EAAE,GACxgC,IDWpB,EACA,KACA,WACA,MAI8B,kIEqBhC,UACA,IACA,cAGA,IACA,wBACA,YACA,mBAEA,OACA,OACA,YACA,YAEA,OACA,YACA,+BAGA,KAfA,WAgBA,OACA,UACA,UAEA,EACA,UACA,aADA,WACA,WACA,mEACA,GAEA,QA1BA,WA0BA,+IACA,oBADA,gCAEA,kBAFA,UAIA,sBAJA,gCAKA,uBALA,4NAOA,EACA,SACA,YADA,SACA,cACA,0BAKA,OADA,yBACA,4HACA,4CACA,YACA,QACA,2BAEA,IACA,qBACA,gBACA,0DACA,GACA,EACA,SAnBA,SAmBA,IAEA,IADA,0DAEA,mBAEA,ICvGmM,kBCW/L,GAAU,CAAC,EAEf,GAAQhG,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICFA,IAXgB,OACd,ICTW,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACA,EAAG,gBAAgB,CAACG,MAAM,CAAC,MAAQP,EAAIqF,aAAa,QAAUrF,EAAIuG,OAAOC,WAAmC,IAAtBxG,EAAIyG,OAAOlH,OAAa,QAAUS,EAAIyG,OAAO,UAAW,EAAM,MAAQ,cAAc,WAAW,MAAM3F,GAAG,CAAC,gBAAgBd,EAAI0G,YAAY,MAAQ,SAAUzI,GAAS,OAAO+B,EAAIkD,MAAM,QAASjF,EAAMvC,GAAK,MAAM,EAAE,GAC3X,IDWpB,EACA,KACA,WACA,MAI8B,QEmDhC,GA3CsB,CACrB,CACCmB,MAAO,yCACPkB,KAAMgE,EAAE,iBAAkB,eAC1B3G,UAAW,CACV,CAAE4C,SAAU,KAAMD,KAAMgE,EAAE,iBAAkB,OAC5C,CAAE/D,SAAU,MAAOD,KAAMgE,EAAE,iBAAkB,WAC7C,CAAE/D,SAAU,UAAWD,KAAMgE,EAAE,iBAAkB,YACjD,CAAE/D,SAAU,WAAYD,KAAMgE,EAAE,iBAAkB,oBAEnDQ,UAAWoE,IAEZ,CACC9J,MAAO,0CACPkB,KAAMgE,EAAE,iBAAkB,gBAC1B3G,UAAW,CACV,CAAE4C,SAAU,KAAMD,KAAMgE,EAAE,iBAAkB,YAC5C,CAAE/D,SAAU,MAAOD,KAAMgE,EAAE,iBAAkB,iBAE9CQ,UAAWqE,IAEZ,CACC/J,MAAO,+CACPkB,KAAMgE,EAAE,iBAAkB,sBAC1B3G,UAAW,CACV,CAAE4C,SAAU,KAAMD,KAAMgE,EAAE,iBAAkB,OAC5C,CAAE/D,SAAU,MAAOD,KAAMgE,EAAE,iBAAkB,WAC7C,CAAE/D,SAAU,UAAWD,KAAMgE,EAAE,iBAAkB,YACjD,CAAE/D,SAAU,WAAYD,KAAMgE,EAAE,iBAAkB,oBAEnDQ,UAAWsE,IAEZ,CACChK,MAAO,kDACPkB,KAAMgE,EAAE,iBAAkB,yBAC1B3G,UAAW,CACV,CAAE4C,SAAU,KAAMD,KAAMgE,EAAE,iBAAkB,iBAC5C,CAAE/D,SAAU,MAAOD,KAAMgE,EAAE,iBAAkB,sBAE9CQ,UAAWuE,0vBCzCb,OAAe,aAAIC,IAAnB,GAAkCC,KCwClCC,OAAOC,IAAIC,eAAiB5K,OAAOC,OAAO,CAAC,EAAG0K,IAAIC,eAAgB,CAMjEC,cANiE,SAMnDC,GACbC,EAAAA,OAAa,iBAAkBD,EAC/B,EAKDE,iBAbiE,SAahDF,GAChBC,EAAAA,OAAa,oBAAqBD,EAClC,IAIFG,GAAAA,SAAsB,SAACC,GAAD,OAAiBR,OAAOC,IAAIC,eAAeC,cAAcK,EAAzD,IAEtB/M,EAAAA,GAAAA,IAAQC,EAAAA,IACRD,EAAAA,GAAAA,UAAAA,EAAkBqH,EAGK,IADVrH,EAAAA,GAAAA,OAAWgN,IACD,CAAS,CAC/BJ,MAAAA,IAEcK,OAAO,0FC1FlBC,QAA0B,GAA4B,KAE1DA,EAAwB5L,KAAK,CAAC6L,EAAOnM,GAAI,41BAA61B,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,4DAA4D,MAAQ,GAAG,SAAW,kSAAkS,eAAiB,CAAC,8oCAA8oC,WAAa,MAEl8E,6ECJIkM,QAA0B,GAA4B,KAE1DA,EAAwB5L,KAAK,CAAC6L,EAAOnM,GAAI,6ZAA8Z,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,0EAA0E,MAAQ,GAAG,SAAW,0HAA0H,eAAiB,CAAC,krBAAkrB,WAAa,MAE74C,4ECJIkM,QAA0B,GAA4B,KAE1DA,EAAwB5L,KAAK,CAAC6L,EAAOnM,GAAI,2hBAA4hB,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,yEAAyE,MAAQ,GAAG,SAAW,+KAA+K,eAAiB,CAAC,stBAAstB,WAAa,MAEnmD,6ECJIkM,QAA0B,GAA4B,KAE1DA,EAAwB5L,KAAK,CAAC6L,EAAOnM,GAAI,0KAA2K,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,wEAAwE,MAAQ,GAAG,SAAW,yDAAyD,eAAiB,CAAC,mbAAmb,WAAa,MAEx1B,6ECJIkM,QAA0B,GAA4B,KAE1DA,EAAwB5L,KAAK,CAAC6L,EAAOnM,GAAI,wpCAAypC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,4DAA4D,MAAQ,GAAG,SAAW,8UAA8U,eAAiB,CAAC,s0CAAs0C,WAAa,MAEl+F,6ECJIkM,QAA0B,GAA4B,KAE1DA,EAAwB5L,KAAK,CAAC6L,EAAOnM,GAAI,shDAAuhD,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,6DAA6D,MAAQ,GAAG,SAAW,wiBAAwiB,eAAiB,CAAC,26CAA26C,WAAa,MAEhqH,6ECJIkM,QAA0B,GAA4B,KAE1DA,EAAwB5L,KAAK,CAAC6L,EAAOnM,GAAI,u+CAAw+C,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,2DAA2D,MAAQ,GAAG,SAAW,0hBAA0hB,eAAiB,CAAC,qyDAAqyD,WAAa,MAE39H,6ECJIkM,QAA0B,GAA4B,KAE1DA,EAAwB5L,KAAK,CAAC6L,EAAOnM,GAAI,23FAA43F,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,8DAA8D,6DAA6D,MAAQ,GAAG,SAAW,88BAA88B,eAAiB,CAAC,8oDAAgpD,26CAA26C,WAAa,MAEznO,6ECJIkM,QAA0B,GAA4B,KAE1DA,EAAwB5L,KAAK,CAAC6L,EAAOnM,GAAI,uoBAAwoB,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,8EAA8E,MAAQ,GAAG,SAAW,iOAAiO,eAAiB,CAAC,80JAA+yJ,WAAa,MAE/1L,6ECJIkM,QAA0B,GAA4B,KAE1DA,EAAwB5L,KAAK,CAAC6L,EAAOnM,GAAI,yDAA0D,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,8EAA8E,MAAQ,GAAG,SAAW,wBAAwB,eAAiB,CAAC,27FAAo7F,WAAa,MAE7sG,6BCPA,IAAIH,EAAM,CACT,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,MACX,aAAc,MACd,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,QAAS,MACT,WAAY,MACZ,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,gBAAiB,MACjB,aAAc,MACd,gBAAiB,MACjB,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,MACX,aAAc,MACd,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,WAAY,MACZ,cAAe,MACf,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,YAAa,MACb,eAAgB,MAChB,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,QAAS,MACT,WAAY,MACZ,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,QAAS,MACT,WAAY,MACZ,OAAQ,MACR,UAAW,MACX,QAAS,MACT,WAAY,MACZ,QAAS,MACT,aAAc,MACd,gBAAiB,MACjB,WAAY,MACZ,UAAW,KACX,aAAc,KACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,YAAa,MACb,eAAgB,MAChB,UAAW,KACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,gBAAiB,MACjB,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,OAIf,SAASuM,EAAeC,GACvB,IAAIrM,EAAKsM,EAAsBD,GAC/B,OAAOE,EAAoBvM,EAC5B,CACA,SAASsM,EAAsBD,GAC9B,IAAIE,EAAoBC,EAAE3M,EAAKwM,GAAM,CACpC,IAAII,EAAI,IAAIC,MAAM,uBAAyBL,EAAM,KAEjD,MADAI,EAAEE,KAAO,mBACHF,CACP,CACA,OAAO5M,EAAIwM,EACZ,CACAD,EAAeQ,KAAO,WACrB,OAAO/L,OAAO+L,KAAK/M,EACpB,EACAuM,EAAeS,QAAUP,EACzBH,EAAOW,QAAUV,EACjBA,EAAepM,GAAK,QClShB+M,EAA2B,CAAC,EAGhC,SAASR,EAAoBS,GAE5B,IAAIC,EAAeF,EAAyBC,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAaH,QAGrB,IAAIX,EAASY,EAAyBC,GAAY,CACjDhN,GAAIgN,EACJG,QAAQ,EACRL,QAAS,CAAC,GAUX,OANAM,EAAoBJ,GAAUK,KAAKlB,EAAOW,QAASX,EAAQA,EAAOW,QAASP,GAG3EJ,EAAOgB,QAAS,EAGThB,EAAOW,OACf,CAGAP,EAAoBe,EAAIF,EC5BxBb,EAAoBgB,KAAO,WAC1B,MAAM,IAAIb,MAAM,iCACjB,ECFAH,EAAoBiB,KAAO,CAAC,E5EAxB9O,EAAW,GACf6N,EAAoBkB,EAAI,SAAS5K,EAAQ6K,EAAUjI,EAAIkI,GACtD,IAAGD,EAAH,CAMA,IAAIE,EAAeC,IACnB,IAASC,EAAI,EAAGA,EAAIpP,EAASmF,OAAQiK,IAAK,CACrCJ,EAAWhP,EAASoP,GAAG,GACvBrI,EAAK/G,EAASoP,GAAG,GACjBH,EAAWjP,EAASoP,GAAG,GAE3B,IAJA,IAGIC,GAAY,EACPC,EAAI,EAAGA,EAAIN,EAAS7J,OAAQmK,MACpB,EAAXL,GAAsBC,GAAgBD,IAAa9M,OAAO+L,KAAKL,EAAoBkB,GAAGQ,OAAM,SAASzI,GAAO,OAAO+G,EAAoBkB,EAAEjI,GAAKkI,EAASM,GAAK,IAChKN,EAAS1M,OAAOgN,IAAK,IAErBD,GAAY,EACTJ,EAAWC,IAAcA,EAAeD,IAG7C,GAAGI,EAAW,CACbrP,EAASsC,OAAO8M,IAAK,GACrB,IAAII,EAAIzI,SACEyH,IAANgB,IAAiBrL,EAASqL,EAC/B,CACD,CACA,OAAOrL,CArBP,CAJC8K,EAAWA,GAAY,EACvB,IAAI,IAAIG,EAAIpP,EAASmF,OAAQiK,EAAI,GAAKpP,EAASoP,EAAI,GAAG,GAAKH,EAAUG,IAAKpP,EAASoP,GAAKpP,EAASoP,EAAI,GACrGpP,EAASoP,GAAK,CAACJ,EAAUjI,EAAIkI,EAwB/B,E6E5BApB,EAAoB4B,EAAI,SAAShC,GAChC,IAAIiC,EAASjC,GAAUA,EAAOkC,WAC7B,WAAa,OAAOlC,EAAgB,OAAG,EACvC,WAAa,OAAOA,CAAQ,EAE7B,OADAI,EAAoB+B,EAAEF,EAAQ,CAAEG,EAAGH,IAC5BA,CACR,ECNA7B,EAAoB+B,EAAI,SAASxB,EAAS0B,GACzC,IAAI,IAAIhJ,KAAOgJ,EACXjC,EAAoBC,EAAEgC,EAAYhJ,KAAS+G,EAAoBC,EAAEM,EAAStH,IAC5E3E,OAAO4N,eAAe3B,EAAStH,EAAK,CAAEkJ,YAAY,EAAMC,IAAKH,EAAWhJ,IAG3E,ECPA+G,EAAoBqC,EAAI,WACvB,GAA0B,iBAAfC,WAAyB,OAAOA,WAC3C,IACC,OAAOtK,MAAQ,IAAIuK,SAAS,cAAb,EAGhB,CAFE,MAAOrC,GACR,GAAsB,iBAAXlB,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxBgB,EAAoBC,EAAI,SAASzI,EAAKgL,GAAQ,OAAOlO,OAAOmO,UAAUC,eAAe5B,KAAKtJ,EAAKgL,EAAO,ECCtGxC,EAAoB2B,EAAI,SAASpB,GACX,oBAAXoC,QAA0BA,OAAOC,aAC1CtO,OAAO4N,eAAe3B,EAASoC,OAAOC,YAAa,CAAE5M,MAAO,WAE7D1B,OAAO4N,eAAe3B,EAAS,aAAc,CAAEvK,OAAO,GACvD,ECNAgK,EAAoB6C,IAAM,SAASjD,GAGlC,OAFAA,EAAOkD,MAAQ,GACVlD,EAAOmD,WAAUnD,EAAOmD,SAAW,IACjCnD,CACR,ECJAI,EAAoByB,EAAI,gBCAxBzB,EAAoBgD,EAAIC,SAASC,SAAWC,KAAKC,SAASC,KAK1D,IAAIC,EAAkB,CACrB,KAAM,GAaPtD,EAAoBkB,EAAEO,EAAI,SAAS8B,GAAW,OAAoC,IAA7BD,EAAgBC,EAAgB,EAGrF,IAAIC,EAAuB,SAASC,EAA4BtO,GAC/D,IAKIsL,EAAU8C,EALVpC,EAAWhM,EAAK,GAChBuO,EAAcvO,EAAK,GACnBwO,EAAUxO,EAAK,GAGIoM,EAAI,EAC3B,GAAGJ,EAASyC,MAAK,SAASnQ,GAAM,OAA+B,IAAxB6P,EAAgB7P,EAAW,IAAI,CACrE,IAAIgN,KAAYiD,EACZ1D,EAAoBC,EAAEyD,EAAajD,KACrCT,EAAoBe,EAAEN,GAAYiD,EAAYjD,IAGhD,GAAGkD,EAAS,IAAIrN,EAASqN,EAAQ3D,EAClC,CAEA,IADGyD,GAA4BA,EAA2BtO,GACrDoM,EAAIJ,EAAS7J,OAAQiK,IACzBgC,EAAUpC,EAASI,GAChBvB,EAAoBC,EAAEqD,EAAiBC,IAAYD,EAAgBC,IACrED,EAAgBC,GAAS,KAE1BD,EAAgBC,GAAW,EAE5B,OAAOvD,EAAoBkB,EAAE5K,EAC9B,EAEIuN,EAAqBV,KAA4B,sBAAIA,KAA4B,uBAAK,GAC1FU,EAAmBvO,QAAQkO,EAAqBM,KAAK,KAAM,IAC3DD,EAAmB9P,KAAOyP,EAAqBM,KAAK,KAAMD,EAAmB9P,KAAK+P,KAAKD,OClDvF7D,EAAoB+D,QAAKpD,ECGzB,IAAIqD,EAAsBhE,EAAoBkB,OAAEP,EAAW,CAAC,OAAO,WAAa,OAAOX,EAAoB,MAAQ,IACnHgE,EAAsBhE,EAAoBkB,EAAE8C","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/workflowengine/src/helpers/api.js","webpack:///nextcloud/apps/workflowengine/src/store.js","webpack:///nextcloud/apps/workflowengine/src/components/Event.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/workflowengine/src/components/Event.vue","webpack://nextcloud/./apps/workflowengine/src/components/Event.vue?26be","webpack://nextcloud/./apps/workflowengine/src/components/Event.vue?5115","webpack:///nextcloud/apps/workflowengine/src/components/Event.vue?vue&type=template&id=01681aaa&scoped=true&","webpack:///nextcloud/apps/workflowengine/src/components/Check.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/workflowengine/src/components/Check.vue","webpack://nextcloud/./apps/workflowengine/src/components/Check.vue?2b71","webpack://nextcloud/./apps/workflowengine/src/components/Check.vue?3fb8","webpack:///nextcloud/apps/workflowengine/src/components/Check.vue?vue&type=template&id=fa8ae1f2&scoped=true&","webpack:///nextcloud/apps/workflowengine/src/components/Operation.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/workflowengine/src/components/Operation.vue","webpack://nextcloud/./apps/workflowengine/src/components/Operation.vue?27c0","webpack://nextcloud/./apps/workflowengine/src/components/Operation.vue?3526","webpack:///nextcloud/apps/workflowengine/src/components/Operation.vue?vue&type=template&id=90eae5ec&scoped=true&","webpack:///nextcloud/apps/workflowengine/src/components/Rule.vue","webpack:///nextcloud/apps/workflowengine/src/components/Rule.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/workflowengine/src/components/Rule.vue?a113","webpack://nextcloud/./apps/workflowengine/src/components/Rule.vue?e711","webpack:///nextcloud/apps/workflowengine/src/components/Rule.vue?vue&type=template&id=a857d7a6&scoped=true&","webpack:///nextcloud/apps/workflowengine/src/components/Workflow.vue","webpack:///nextcloud/apps/workflowengine/src/components/Workflow.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/workflowengine/src/components/Workflow.vue?91e8","webpack://nextcloud/./apps/workflowengine/src/components/Workflow.vue?17b8","webpack:///nextcloud/apps/workflowengine/src/components/Workflow.vue?vue&type=template&id=38a7a2e5&scoped=true&","webpack:///nextcloud/apps/workflowengine/src/helpers/validators.js","webpack:///nextcloud/apps/workflowengine/src/mixins/valueMixin.js","webpack:///nextcloud/apps/workflowengine/src/components/Checks/FileMimeType.vue","webpack:///nextcloud/apps/workflowengine/src/components/Checks/FileMimeType.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/workflowengine/src/components/Checks/FileMimeType.vue?a984","webpack://nextcloud/./apps/workflowengine/src/components/Checks/FileMimeType.vue?c385","webpack:///nextcloud/apps/workflowengine/src/components/Checks/FileMimeType.vue?vue&type=template&id=2312566e&scoped=true&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/FileSystemTag.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/FileSystemTag.vue","webpack://nextcloud/./apps/workflowengine/src/components/Checks/FileSystemTag.vue?2d3e","webpack:///nextcloud/apps/workflowengine/src/components/Checks/FileSystemTag.vue?vue&type=template&id=1611b92c&scoped=true&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/file.js","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestUserAgent.vue","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestUserAgent.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestUserAgent.vue?b491","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestUserAgent.vue?81d6","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestUserAgent.vue?vue&type=template&id=bd5cb750&scoped=true&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestTime.vue","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestTime.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestTime.vue?2c0a","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestTime.vue?a55a","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestTime.vue?vue&type=template&id=c064bb1a&scoped=true&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestURL.vue","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestURL.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestURL.vue?b514","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestURL.vue?eee5","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestURL.vue?vue&type=template&id=efaa5484&scoped=true&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestUserGroup.vue","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestUserGroup.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestUserGroup.vue?0058","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestUserGroup.vue?f6d3","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestUserGroup.vue?vue&type=template&id=4bcec2a5&scoped=true&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/request.js","webpack:///nextcloud/apps/workflowengine/src/components/Checks/index.js","webpack:///nextcloud/apps/workflowengine/src/workflowengine.js","webpack:///nextcloud/apps/workflowengine/src/components/Check.vue?vue&type=style&index=0&id=fa8ae1f2&scoped=true&lang=scss&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/FileMimeType.vue?vue&type=style&index=0&id=2312566e&scoped=true&lang=scss&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestTime.vue?vue&type=style&index=0&id=c064bb1a&scoped=true&lang=scss&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestURL.vue?vue&type=style&index=0&id=efaa5484&scoped=true&lang=scss&","webpack:///nextcloud/apps/workflowengine/src/components/Event.vue?vue&type=style&index=0&id=01681aaa&scoped=true&lang=scss&","webpack:///nextcloud/apps/workflowengine/src/components/Operation.vue?vue&type=style&index=0&id=90eae5ec&scoped=true&lang=scss&","webpack:///nextcloud/apps/workflowengine/src/components/Rule.vue?vue&type=style&index=0&id=a857d7a6&scoped=true&lang=scss&","webpack:///nextcloud/apps/workflowengine/src/components/Workflow.vue?vue&type=style&index=0&id=38a7a2e5&scoped=true&lang=scss&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestUserAgent.vue?vue&type=style&index=0&id=bd5cb750&scoped=true&lang=css&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestUserGroup.vue?vue&type=style&index=0&id=4bcec2a5&scoped=true&lang=css&","webpack:///nextcloud/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/amd define","webpack:///nextcloud/webpack/runtime/amd options","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nconst scopeValue = loadState('workflowengine', 'scope') === 0 ? 'global' : 'user'\n\nconst getApiUrl = (url) => {\n\treturn generateOcsUrl('apps/workflowengine/api/v1/workflows/{scopeValue}', { scopeValue }) + url + '?format=json'\n}\n\nexport {\n\tgetApiUrl,\n}\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Kesselberg <mail@danielkesselberg.de>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport Vuex, { Store } from 'vuex'\nimport axios from '@nextcloud/axios'\nimport { getApiUrl } from './helpers/api'\nimport { confirmPassword } from '@nextcloud/password-confirmation'\nimport '@nextcloud/password-confirmation/dist/style.css'\nimport { loadState } from '@nextcloud/initial-state'\n\nVue.use(Vuex)\n\nconst store = new Store({\n\tstate: {\n\t\trules: [],\n\t\tscope: loadState('workflowengine', 'scope'),\n\t\tappstoreEnabled: loadState('workflowengine', 'appstoreenabled'),\n\t\toperations: loadState('workflowengine', 'operators'),\n\n\t\tplugins: Vue.observable({\n\t\t\tchecks: {},\n\t\t\toperators: {},\n\t\t}),\n\n\t\tentities: loadState('workflowengine', 'entities'),\n\t\tevents: loadState('workflowengine', 'entities')\n\t\t\t.map((entity) => entity.events.map(event => {\n\t\t\t\treturn {\n\t\t\t\t\tid: `${entity.id}::${event.eventName}`,\n\t\t\t\t\tentity,\n\t\t\t\t\t...event,\n\t\t\t\t}\n\t\t\t})).flat(),\n\t\tchecks: loadState('workflowengine', 'checks'),\n\t},\n\tmutations: {\n\t\taddRule(state, rule) {\n\t\t\tstate.rules.push({ ...rule, valid: true })\n\t\t},\n\t\tupdateRule(state, rule) {\n\t\t\tconst index = state.rules.findIndex((item) => rule.id === item.id)\n\t\t\tconst newRule = Object.assign({}, rule)\n\t\t\tVue.set(state.rules, index, newRule)\n\t\t},\n\t\tremoveRule(state, rule) {\n\t\t\tconst index = state.rules.findIndex((item) => rule.id === item.id)\n\t\t\tstate.rules.splice(index, 1)\n\t\t},\n\t\taddPluginCheck(state, plugin) {\n\t\t\tVue.set(state.plugins.checks, plugin.class, plugin)\n\t\t},\n\t\taddPluginOperator(state, plugin) {\n\t\t\tplugin = Object.assign(\n\t\t\t\t{ color: 'var(--color-primary-element)' },\n\t\t\t\tplugin, state.operations[plugin.id] || {})\n\t\t\tif (typeof state.operations[plugin.id] !== 'undefined') {\n\t\t\t\tVue.set(state.operations, plugin.id, plugin)\n\t\t\t}\n\t\t},\n\t},\n\tactions: {\n\t\tasync fetchRules(context) {\n\t\t\tconst { data } = await axios.get(getApiUrl(''))\n\t\t\tObject.values(data.ocs.data).flat().forEach((rule) => {\n\t\t\t\tcontext.commit('addRule', rule)\n\t\t\t})\n\t\t},\n\t\tcreateNewRule(context, rule) {\n\t\t\tlet entity = null\n\t\t\tlet events = []\n\t\t\tif (rule.isComplex === false && rule.fixedEntity === '') {\n\t\t\t\tentity = context.state.entities.find((item) => rule.entities && rule.entities[0] === item.id)\n\t\t\t\tentity = entity || Object.values(context.state.entities)[0]\n\t\t\t\tevents = [entity.events[0].eventName]\n\t\t\t}\n\n\t\t\tcontext.commit('addRule', {\n\t\t\t\tid: -(new Date().getTime()),\n\t\t\t\tclass: rule.id,\n\t\t\t\tentity: entity ? entity.id : rule.fixedEntity,\n\t\t\t\tevents,\n\t\t\t\tname: '', // unused in the new ui, there for legacy reasons\n\t\t\t\tchecks: [\n\t\t\t\t\t{ class: null, operator: null, value: '' },\n\t\t\t\t],\n\t\t\t\toperation: rule.operation || '',\n\t\t\t})\n\t\t},\n\t\tupdateRule(context, rule) {\n\t\t\tcontext.commit('updateRule', {\n\t\t\t\t...rule,\n\t\t\t\tevents: typeof rule.events === 'string' ? JSON.parse(rule.events) : rule.events,\n\t\t\t})\n\t\t},\n\t\tremoveRule(context, rule) {\n\t\t\tcontext.commit('removeRule', rule)\n\t\t},\n\t\tasync pushUpdateRule(context, rule) {\n\t\t\tif (context.state.scope === 0) {\n\t\t\t\tawait confirmPassword()\n\t\t\t}\n\t\t\tlet result\n\t\t\tif (rule.id < 0) {\n\t\t\t\tresult = await axios.post(getApiUrl(''), rule)\n\t\t\t} else {\n\t\t\t\tresult = await axios.put(getApiUrl(`/${rule.id}`), rule)\n\t\t\t}\n\t\t\tVue.set(rule, 'id', result.data.ocs.data.id)\n\t\t\tcontext.commit('updateRule', rule)\n\t\t},\n\t\tasync deleteRule(context, rule) {\n\t\t\tawait confirmPassword()\n\t\t\tawait axios.delete(getApiUrl(`/${rule.id}`))\n\t\t\tcontext.commit('removeRule', rule)\n\t\t},\n\t\tsetValid(context, { rule, valid }) {\n\t\t\trule.valid = valid\n\t\t\tcontext.commit('updateRule', rule)\n\t\t},\n\t},\n\tgetters: {\n\t\tgetRules(state) {\n\t\t\treturn state.rules.filter((rule) => typeof state.operations[rule.class] !== 'undefined').sort((rule1, rule2) => {\n\t\t\t\treturn rule1.id - rule2.id || rule2.class - rule1.class\n\t\t\t})\n\t\t},\n\t\tgetOperationForRule(state) {\n\t\t\treturn (rule) => state.operations[rule.class]\n\t\t},\n\t\tgetEntityForOperation(state) {\n\t\t\treturn (operation) => state.entities.find((entity) => operation.fixedEntity === entity.id)\n\t\t},\n\t\tgetEventsForOperation(state) {\n\t\t\treturn (operation) => state.events\n\t\t},\n\n\t\t/**\n\t\t * Return all available checker plugins for a given entity class\n\t\t *\n\t\t * @param {object} state the store state\n\t\t * @return {Function} the available plugins\n\t\t */\n\t\tgetChecksForEntity(state) {\n\t\t\treturn (entity) => {\n\t\t\t\treturn Object.values(state.checks)\n\t\t\t\t\t.filter((check) => check.supportedEntities.indexOf(entity) > -1 || check.supportedEntities.length === 0)\n\t\t\t\t\t.map((check) => state.plugins.checks[check.id])\n\t\t\t\t\t.reduce((obj, item) => {\n\t\t\t\t\t\tobj[item.class] = item\n\t\t\t\t\t\treturn obj\n\t\t\t\t\t}, {})\n\t\t\t}\n\t\t},\n\t},\n})\n\nexport default store\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Event.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Event.vue?vue&type=script&lang=js&\"","<template>\n\t<div class=\"event\">\n\t\t<div v-if=\"operation.isComplex && operation.fixedEntity !== ''\" class=\"isComplex\">\n\t\t\t<img class=\"option__icon\" :src=\"entity.icon\" alt=\"\">\n\t\t\t<span class=\"option__title option__title_single\">{{ operation.triggerHint }}</span>\n\t\t</div>\n\t\t<NcMultiselect v-else\n\t\t\t:value=\"currentEvent\"\n\t\t\t:options=\"allEvents\"\n\t\t\ttrack-by=\"id\"\n\t\t\t:multiple=\"true\"\n\t\t\t:auto-limit=\"false\"\n\t\t\t:disabled=\"allEvents.length <= 1\"\n\t\t\t@input=\"updateEvent\">\n\t\t\t<template slot=\"selection\" slot-scope=\"{ values, isOpen }\">\n\t\t\t\t<div v-if=\"values.length && !isOpen\" class=\"eventlist\">\n\t\t\t\t\t<img class=\"option__icon\" :src=\"values[0].entity.icon\" alt=\"\">\n\t\t\t\t\t<span v-for=\"(value, index) in values\" :key=\"value.id\" class=\"text option__title option__title_single\">{{ value.displayName }} <span v-if=\"index+1 < values.length\">, </span></span>\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t\t<template slot=\"option\" slot-scope=\"props\">\n\t\t\t\t<img class=\"option__icon\" :src=\"props.option.entity.icon\" alt=\"\">\n\t\t\t\t<span class=\"option__title\">{{ props.option.displayName }}</span>\n\t\t\t</template>\n\t\t</NcMultiselect>\n\t</div>\n</template>\n\n<script>\nimport NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect'\nimport { showWarning } from '@nextcloud/dialogs'\n\nexport default {\n\tname: 'Event',\n\tcomponents: {\n\t\tNcMultiselect,\n\t},\n\tprops: {\n\t\trule: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tcomputed: {\n\t\tentity() {\n\t\t\treturn this.$store.getters.getEntityForOperation(this.operation)\n\t\t},\n\t\toperation() {\n\t\t\treturn this.$store.getters.getOperationForRule(this.rule)\n\t\t},\n\t\tallEvents() {\n\t\t\treturn this.$store.getters.getEventsForOperation(this.operation)\n\t\t},\n\t\tcurrentEvent() {\n\t\t\treturn this.allEvents.filter(event => event.entity.id === this.rule.entity && this.rule.events.indexOf(event.eventName) !== -1)\n\t\t},\n\t},\n\tmethods: {\n\t\tupdateEvent(events) {\n\t\t\tif (events.length === 0) {\n\t\t\t\tshowWarning(t('workflowengine', 'At least one event must be selected'))\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst existingEntity = this.rule.entity\n\t\t\tconst newEntities = events.map(event => event.entity.id).filter((value, index, self) => self.indexOf(value) === index)\n\t\t\tlet newEntity = null\n\t\t\tif (newEntities.length > 1) {\n\t\t\t\tnewEntity = newEntities.filter(entity => entity !== existingEntity)[0]\n\t\t\t} else {\n\t\t\t\tnewEntity = newEntities[0]\n\t\t\t}\n\n\t\t\tthis.$set(this.rule, 'entity', newEntity)\n\t\t\tthis.$set(this.rule, 'events', events.filter(event => event.entity.id === newEntity).map(event => event.eventName))\n\t\t\tthis.$emit('update', this.rule)\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t.event {\n\t\tmargin-bottom: 5px;\n\t}\n\t.isComplex {\n\t\timg {\n\t\t\tvertical-align: text-top;\n\t\t}\n\t\tspan {\n\t\t\tpadding-top: 2px;\n\t\t\tdisplay: inline-block;\n\t\t}\n\t}\n\t.multiselect {\n\t\twidth: 100%;\n\t\tmax-width: 550px;\n\t\tmargin-top: 4px;\n\t}\n\t.multiselect::v-deep .multiselect__single {\n\t\tdisplay: flex;\n\t}\n\t.multiselect:not(.multiselect--active)::v-deep .multiselect__tags {\n\t\tbackground-color: var(--color-main-background) !important;\n\t\tborder: 1px solid transparent;\n\t}\n\n\t.multiselect::v-deep .multiselect__tags {\n\t\tbackground-color: var(--color-main-background) !important;\n\t\theight: auto;\n\t\tmin-height: 34px;\n\t}\n\n\t.multiselect:not(.multiselect--disabled)::v-deep .multiselect__tags .multiselect__single {\n\t\tbackground-image: var(--icon-triangle-s-dark);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: right center;\n\t}\n\n\tinput {\n\t\tborder: 1px solid transparent;\n\t}\n\n\t.option__title {\n\t\tmargin-left: 5px;\n\t\tcolor: var(--color-main-text);\n\t}\n\t.option__title_single {\n\t\tfont-weight: 900;\n\t}\n\n\t.option__icon {\n\t\twidth: 16px;\n\t\theight: 16px;\n\t\tfilter: var(--background-invert-if-dark);\n\t}\n\n\t.eventlist img,\n\t.eventlist .text {\n\t\tvertical-align: middle;\n\t}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Event.vue?vue&type=style&index=0&id=01681aaa&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Event.vue?vue&type=style&index=0&id=01681aaa&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Event.vue?vue&type=template&id=01681aaa&scoped=true&\"\nimport script from \"./Event.vue?vue&type=script&lang=js&\"\nexport * from \"./Event.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Event.vue?vue&type=style&index=0&id=01681aaa&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"01681aaa\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"event\"},[(_vm.operation.isComplex && _vm.operation.fixedEntity !== '')?_c('div',{staticClass:\"isComplex\"},[_c('img',{staticClass:\"option__icon\",attrs:{\"src\":_vm.entity.icon,\"alt\":\"\"}}),_vm._v(\" \"),_c('span',{staticClass:\"option__title option__title_single\"},[_vm._v(_vm._s(_vm.operation.triggerHint))])]):_c('NcMultiselect',{attrs:{\"value\":_vm.currentEvent,\"options\":_vm.allEvents,\"track-by\":\"id\",\"multiple\":true,\"auto-limit\":false,\"disabled\":_vm.allEvents.length <= 1},on:{\"input\":_vm.updateEvent},scopedSlots:_vm._u([{key:\"selection\",fn:function(ref){\nvar values = ref.values;\nvar isOpen = ref.isOpen;\nreturn [(values.length && !isOpen)?_c('div',{staticClass:\"eventlist\"},[_c('img',{staticClass:\"option__icon\",attrs:{\"src\":values[0].entity.icon,\"alt\":\"\"}}),_vm._v(\" \"),_vm._l((values),function(value,index){return _c('span',{key:value.id,staticClass:\"text option__title option__title_single\"},[_vm._v(_vm._s(value.displayName)+\" \"),(index+1 < values.length)?_c('span',[_vm._v(\", \")]):_vm._e()])})],2):_vm._e()]}},{key:\"option\",fn:function(props){return [_c('img',{staticClass:\"option__icon\",attrs:{\"src\":props.option.entity.icon,\"alt\":\"\"}}),_vm._v(\" \"),_c('span',{staticClass:\"option__title\"},[_vm._v(_vm._s(props.option.displayName))])]}}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Check.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Check.vue?vue&type=script&lang=js&\"","<template>\n\t<div v-click-outside=\"hideDelete\" class=\"check\" @click=\"showDelete\">\n\t\t<NcMultiselect ref=\"checkSelector\"\n\t\t\tv-model=\"currentOption\"\n\t\t\t:options=\"options\"\n\t\t\tlabel=\"name\"\n\t\t\ttrack-by=\"class\"\n\t\t\t:allow-empty=\"false\"\n\t\t\t:placeholder=\"t('workflowengine', 'Select a filter')\"\n\t\t\t@input=\"updateCheck\" />\n\t\t<NcMultiselect v-model=\"currentOperator\"\n\t\t\t:disabled=\"!currentOption\"\n\t\t\t:options=\"operators\"\n\t\t\tclass=\"comparator\"\n\t\t\tlabel=\"name\"\n\t\t\ttrack-by=\"operator\"\n\t\t\t:allow-empty=\"false\"\n\t\t\t:placeholder=\"t('workflowengine', 'Select a comparator')\"\n\t\t\t@input=\"updateCheck\" />\n\t\t<component :is=\"currentOption.component\"\n\t\t\tv-if=\"currentOperator && currentComponent\"\n\t\t\tv-model=\"check.value\"\n\t\t\t:disabled=\"!currentOption\"\n\t\t\t:check=\"check\"\n\t\t\tclass=\"option\"\n\t\t\t@input=\"updateCheck\"\n\t\t\t@valid=\"(valid=true) && validate()\"\n\t\t\t@invalid=\"!(valid=false) && validate()\" />\n\t\t<input v-else\n\t\t\tv-model=\"check.value\"\n\t\t\ttype=\"text\"\n\t\t\t:class=\"{ invalid: !valid }\"\n\t\t\t:disabled=\"!currentOption\"\n\t\t\t:placeholder=\"valuePlaceholder\"\n\t\t\tclass=\"option\"\n\t\t\t@input=\"updateCheck\">\n\t\t<NcActions v-if=\"deleteVisible || !currentOption\">\n\t\t\t<NcActionButton icon=\"icon-close\" @click=\"$emit('remove')\" />\n\t\t</NcActions>\n\t</div>\n</template>\n\n<script>\nimport NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect'\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions'\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton'\nimport ClickOutside from 'vue-click-outside'\n\nexport default {\n\tname: 'Check',\n\tcomponents: {\n\t\tNcActionButton,\n\t\tNcActions,\n\t\tNcMultiselect,\n\t},\n\tdirectives: {\n\t\tClickOutside,\n\t},\n\tprops: {\n\t\tcheck: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\trule: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tdeleteVisible: false,\n\t\t\tcurrentOption: null,\n\t\t\tcurrentOperator: null,\n\t\t\toptions: [],\n\t\t\tvalid: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\tchecks() {\n\t\t\treturn this.$store.getters.getChecksForEntity(this.rule.entity)\n\t\t},\n\t\toperators() {\n\t\t\tif (!this.currentOption) { return [] }\n\t\t\tconst operators = this.checks[this.currentOption.class].operators\n\t\t\tif (typeof operators === 'function') {\n\t\t\t\treturn operators(this.check)\n\t\t\t}\n\t\t\treturn operators\n\t\t},\n\t\tcurrentComponent() {\n\t\t\tif (!this.currentOption) { return [] }\n\t\t\treturn this.checks[this.currentOption.class].component\n\t\t},\n\t\tvaluePlaceholder() {\n\t\t\tif (this.currentOption && this.currentOption.placeholder) {\n\t\t\t\treturn this.currentOption.placeholder(this.check)\n\t\t\t}\n\t\t\treturn ''\n\t\t},\n\t},\n\twatch: {\n\t\t'check.operator'() {\n\t\t\tthis.validate()\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.options = Object.values(this.checks)\n\t\tthis.currentOption = this.checks[this.check.class]\n\t\tthis.currentOperator = this.operators.find((operator) => operator.operator === this.check.operator)\n\n\t\tif (this.check.class === null) {\n\t\t\tthis.$nextTick(() => this.$refs.checkSelector.$el.focus())\n\t\t}\n\t\tthis.validate()\n\t},\n\tmethods: {\n\t\tshowDelete() {\n\t\t\tthis.deleteVisible = true\n\t\t},\n\t\thideDelete() {\n\t\t\tthis.deleteVisible = false\n\t\t},\n\t\tvalidate() {\n\t\t\tthis.valid = true\n\t\t\tif (this.currentOption && this.currentOption.validate) {\n\t\t\t\tthis.valid = !!this.currentOption.validate(this.check)\n\t\t\t}\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.check.invalid = !this.valid\n\t\t\tthis.$emit('validate', this.valid)\n\t\t},\n\t\tupdateCheck() {\n\t\t\tconst matchingOperator = this.operators.findIndex((operator) => this.check.operator === operator.operator)\n\t\t\tif (this.check.class !== this.currentOption.class || matchingOperator === -1) {\n\t\t\t\tthis.currentOperator = this.operators[0]\n\t\t\t}\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.check.class = this.currentOption.class\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.check.operator = this.currentOperator.operator\n\n\t\t\tthis.validate()\n\n\t\t\tthis.$emit('update', this.check)\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t.check {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t\twidth: 100%;\n\t\tpadding-right: 20px;\n\t\t& > *:not(.close) {\n\t\t\twidth: 180px;\n\t\t}\n\t\t& > .comparator {\n\t\t\tmin-width: 130px;\n\t\t\twidth: 130px;\n\t\t}\n\t\t& > .option {\n\t\t\tmin-width: 230px;\n\t\t\twidth: 230px;\n\t\t}\n\t\t& > .multiselect,\n\t\t& > input[type=text] {\n\t\t\tmargin-right: 5px;\n\t\t\tmargin-bottom: 5px;\n\t\t}\n\n\t\t.multiselect::v-deep .multiselect__content-wrapper li>span,\n\t\t.multiselect::v-deep .multiselect__single {\n\t\t\tdisplay: block;\n\t\t\twhite-space: nowrap;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t}\n\t}\n\tinput[type=text] {\n\t\tmargin: 0;\n\t}\n\t::placeholder {\n\t\tfont-size: 10px;\n\t}\n\tbutton.action-item.action-item--single.icon-close {\n\t\theight: 44px;\n\t\twidth: 44px;\n\t\tmargin-top: -5px;\n\t\tmargin-bottom: -5px;\n\t}\n\t.invalid {\n\t\tborder-color: var(--color-error) !important;\n\t}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Check.vue?vue&type=style&index=0&id=fa8ae1f2&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Check.vue?vue&type=style&index=0&id=fa8ae1f2&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Check.vue?vue&type=template&id=fa8ae1f2&scoped=true&\"\nimport script from \"./Check.vue?vue&type=script&lang=js&\"\nexport * from \"./Check.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Check.vue?vue&type=style&index=0&id=fa8ae1f2&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"fa8ae1f2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"click-outside\",rawName:\"v-click-outside\",value:(_vm.hideDelete),expression:\"hideDelete\"}],staticClass:\"check\",on:{\"click\":_vm.showDelete}},[_c('NcMultiselect',{ref:\"checkSelector\",attrs:{\"options\":_vm.options,\"label\":\"name\",\"track-by\":\"class\",\"allow-empty\":false,\"placeholder\":_vm.t('workflowengine', 'Select a filter')},on:{\"input\":_vm.updateCheck},model:{value:(_vm.currentOption),callback:function ($$v) {_vm.currentOption=$$v},expression:\"currentOption\"}}),_vm._v(\" \"),_c('NcMultiselect',{staticClass:\"comparator\",attrs:{\"disabled\":!_vm.currentOption,\"options\":_vm.operators,\"label\":\"name\",\"track-by\":\"operator\",\"allow-empty\":false,\"placeholder\":_vm.t('workflowengine', 'Select a comparator')},on:{\"input\":_vm.updateCheck},model:{value:(_vm.currentOperator),callback:function ($$v) {_vm.currentOperator=$$v},expression:\"currentOperator\"}}),_vm._v(\" \"),(_vm.currentOperator && _vm.currentComponent)?_c(_vm.currentOption.component,{tag:\"component\",staticClass:\"option\",attrs:{\"disabled\":!_vm.currentOption,\"check\":_vm.check},on:{\"input\":_vm.updateCheck,\"valid\":function($event){(_vm.valid=true) && _vm.validate()},\"invalid\":function($event){!(_vm.valid=false) && _vm.validate()}},model:{value:(_vm.check.value),callback:function ($$v) {_vm.$set(_vm.check, \"value\", $$v)},expression:\"check.value\"}}):_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.check.value),expression:\"check.value\"}],staticClass:\"option\",class:{ invalid: !_vm.valid },attrs:{\"type\":\"text\",\"disabled\":!_vm.currentOption,\"placeholder\":_vm.valuePlaceholder},domProps:{\"value\":(_vm.check.value)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.$set(_vm.check, \"value\", $event.target.value)},_vm.updateCheck]}}),_vm._v(\" \"),(_vm.deleteVisible || !_vm.currentOption)?_c('NcActions',[_c('NcActionButton',{attrs:{\"icon\":\"icon-close\"},on:{\"click\":function($event){return _vm.$emit('remove')}}})],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Operation.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Operation.vue?vue&type=script&lang=js&\"","<template>\n\t<div class=\"actions__item\" :class=\"{'colored': colored}\" :style=\"{ backgroundColor: colored ? operation.color : 'transparent' }\">\n\t\t<div class=\"icon\" :class=\"operation.iconClass\" :style=\"{ backgroundImage: operation.iconClass ? '' : `url(${operation.icon})` }\" />\n\t\t<div class=\"actions__item__description\">\n\t\t\t<h3>{{ operation.name }}</h3>\n\t\t\t<small>{{ operation.description }}</small>\n\t\t\t<NcButton v-if=\"colored\">\n\t\t\t\t{{ t('workflowengine', 'Add new flow') }}\n\t\t\t</NcButton>\n\t\t</div>\n\t\t<div class=\"actions__item_options\">\n\t\t\t<slot />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton'\n\nexport default {\n\tname: 'Operation',\n\tcomponents: {\n\t\tNcButton,\n\t},\n\tprops: {\n\t\toperation: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tcolored: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t@import \"./../styles/operation\";\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Operation.vue?vue&type=style&index=0&id=90eae5ec&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Operation.vue?vue&type=style&index=0&id=90eae5ec&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Operation.vue?vue&type=template&id=90eae5ec&scoped=true&\"\nimport script from \"./Operation.vue?vue&type=script&lang=js&\"\nexport * from \"./Operation.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Operation.vue?vue&type=style&index=0&id=90eae5ec&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"90eae5ec\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"actions__item\",class:{'colored': _vm.colored},style:({ backgroundColor: _vm.colored ? _vm.operation.color : 'transparent' })},[_c('div',{staticClass:\"icon\",class:_vm.operation.iconClass,style:({ backgroundImage: _vm.operation.iconClass ? '' : (\"url(\" + (_vm.operation.icon) + \")\") })}),_vm._v(\" \"),_c('div',{staticClass:\"actions__item__description\"},[_c('h3',[_vm._v(_vm._s(_vm.operation.name))]),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.operation.description))]),_vm._v(\" \"),(_vm.colored)?_c('NcButton',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('workflowengine', 'Add new flow'))+\"\\n\\t\\t\")]):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"actions__item_options\"},[_vm._t(\"default\")],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<div v-if=\"operation\" class=\"section rule\" :style=\"{ borderLeftColor: operation.color || '' }\">\n\t\t<div class=\"trigger\">\n\t\t\t<p>\n\t\t\t\t<span>{{ t('workflowengine', 'When') }}</span>\n\t\t\t\t<Event :rule=\"rule\" @update=\"updateRule\" />\n\t\t\t</p>\n\t\t\t<p v-for=\"(check, index) in rule.checks\" :key=\"index\">\n\t\t\t\t<span>{{ t('workflowengine', 'and') }}</span>\n\t\t\t\t<Check :check=\"check\"\n\t\t\t\t\t:rule=\"rule\"\n\t\t\t\t\t@update=\"updateRule\"\n\t\t\t\t\t@validate=\"validate\"\n\t\t\t\t\t@remove=\"removeCheck(check)\" />\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t<span />\n\t\t\t\t<input v-if=\"lastCheckComplete\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclass=\"check--add\"\n\t\t\t\t\tvalue=\"Add a new filter\"\n\t\t\t\t\t@click=\"onAddFilter\">\n\t\t\t</p>\n\t\t</div>\n\t\t<div class=\"flow-icon icon-confirm\" />\n\t\t<div class=\"action\">\n\t\t\t<Operation :operation=\"operation\" :colored=\"false\">\n\t\t\t\t<component :is=\"operation.options\"\n\t\t\t\t\tv-if=\"operation.options\"\n\t\t\t\t\tv-model=\"rule.operation\"\n\t\t\t\t\t@input=\"updateOperation\" />\n\t\t\t</Operation>\n\t\t\t<div class=\"buttons\">\n\t\t\t\t<NcButton v-if=\"rule.id < -1 || dirty\" @click=\"cancelRule\">\n\t\t\t\t\t{{ t('workflowengine', 'Cancel') }}\n\t\t\t\t</NcButton>\n\t\t\t\t<NcButton v-else-if=\"!dirty\" @click=\"deleteRule\">\n\t\t\t\t\t{{ t('workflowengine', 'Delete') }}\n\t\t\t\t</NcButton>\n\t\t\t\t<NcButton :type=\"ruleStatus.type\"\n\t\t\t\t\t@click=\"saveRule\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<component :is=\"ruleStatus.icon\" :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ ruleStatus.title }}\n\t\t\t\t</NcButton>\n\t\t\t</div>\n\t\t\t<p v-if=\"error\" class=\"error-message\">\n\t\t\t\t{{ error }}\n\t\t\t</p>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport Tooltip from '@nextcloud/vue/dist/Directives/Tooltip'\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions'\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton'\nimport ArrowRight from 'vue-material-design-icons/ArrowRight.vue'\nimport CheckMark from 'vue-material-design-icons/Check.vue'\nimport Close from 'vue-material-design-icons/Close.vue'\n\nimport Event from './Event'\nimport Check from './Check'\nimport Operation from './Operation'\n\nexport default {\n\tname: 'Rule',\n\tcomponents: {\n\t\tArrowRight,\n\t\tCheck,\n\t\tCheckMark,\n\t\tClose,\n\t\tEvent,\n\t\tNcActionButton,\n\t\tNcActions,\n\t\tNcButton,\n\t\tOperation,\n\t},\n\tdirectives: {\n\t\tTooltip,\n\t},\n\tprops: {\n\t\trule: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tediting: false,\n\t\t\tchecks: [],\n\t\t\terror: null,\n\t\t\tdirty: this.rule.id < 0,\n\t\t\toriginalRule: null,\n\t\t}\n\t},\n\tcomputed: {\n\t\toperation() {\n\t\t\treturn this.$store.getters.getOperationForRule(this.rule)\n\t\t},\n\t\truleStatus() {\n\t\t\tif (this.error || !this.rule.valid || this.rule.checks.length === 0 || this.rule.checks.some((check) => check.invalid === true)) {\n\t\t\t\treturn {\n\t\t\t\t\ttitle: t('workflowengine', 'The configuration is invalid'),\n\t\t\t\t\ticon: 'Close',\n\t\t\t\t\ttype: 'warning',\n\t\t\t\t\ttooltip: { placement: 'bottom', show: true, content: this.error },\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!this.dirty) {\n\t\t\t\treturn { title: t('workflowengine', 'Active'), icon: 'CheckMark', type: 'success' }\n\t\t\t}\n\t\t\treturn { title: t('workflowengine', 'Save'), icon: 'ArrowRight', type: 'primary' }\n\n\t\t},\n\t\tlastCheckComplete() {\n\t\t\tconst lastCheck = this.rule.checks[this.rule.checks.length - 1]\n\t\t\treturn typeof lastCheck === 'undefined' || lastCheck.class !== null\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.originalRule = JSON.parse(JSON.stringify(this.rule))\n\t},\n\tmethods: {\n\t\tasync updateOperation(operation) {\n\t\t\tthis.$set(this.rule, 'operation', operation)\n\t\t\tawait this.updateRule()\n\t\t},\n\t\tvalidate(state) {\n\t\t\tthis.error = null\n\t\t\tthis.$store.dispatch('updateRule', this.rule)\n\t\t},\n\t\tupdateRule() {\n\t\t\tif (!this.dirty) {\n\t\t\t\tthis.dirty = true\n\t\t\t}\n\n\t\t\tthis.error = null\n\t\t\tthis.$store.dispatch('updateRule', this.rule)\n\t\t},\n\t\tasync saveRule() {\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('pushUpdateRule', this.rule)\n\t\t\t\tthis.dirty = false\n\t\t\t\tthis.error = null\n\t\t\t\tthis.originalRule = JSON.parse(JSON.stringify(this.rule))\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error('Failed to save operation')\n\t\t\t\tthis.error = e.response.data.ocs.meta.message\n\t\t\t}\n\t\t},\n\t\tasync deleteRule() {\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('deleteRule', this.rule)\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error('Failed to delete operation')\n\t\t\t\tthis.error = e.response.data.ocs.meta.message\n\t\t\t}\n\t\t},\n\t\tcancelRule() {\n\t\t\tif (this.rule.id < 0) {\n\t\t\t\tthis.$store.dispatch('removeRule', this.rule)\n\t\t\t} else {\n\t\t\t\tthis.$store.dispatch('updateRule', this.originalRule)\n\t\t\t\tthis.originalRule = JSON.parse(JSON.stringify(this.rule))\n\t\t\t\tthis.dirty = false\n\t\t\t}\n\t\t},\n\n\t\tasync removeCheck(check) {\n\t\t\tconst index = this.rule.checks.findIndex(item => item === check)\n\t\t\tif (index > -1) {\n\t\t\t\tthis.$delete(this.rule.checks, index)\n\t\t\t}\n\t\t\tthis.$store.dispatch('updateRule', this.rule)\n\t\t},\n\n\t\tonAddFilter() {\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.rule.checks.push({ class: null, operator: null, value: '' })\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\n\t.buttons {\n\t\tdisplay: flex;\n\t\tjustify-content: end;\n\n\t\tbutton {\n\t\t\tmargin-left: 5px;\n\t\t}\n\t\tbutton:last-child{\n\t\t\tmargin-right: 10px;\n\t\t}\n\t}\n\n\t.error-message {\n\t\tfloat: right;\n\t\tmargin-right: 10px;\n\t}\n\n\t.flow-icon {\n\t\twidth: 44px;\n\t}\n\n\t.rule {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t\tborder-left: 5px solid var(--color-primary-element);\n\n\t\t.trigger, .action {\n\t\t\tflex-grow: 1;\n\t\t\tmin-height: 100px;\n\t\t\tmax-width: 700px;\n\t\t}\n\t\t.action {\n\t\t\tmax-width: 400px;\n\t\t\tposition: relative;\n\t\t}\n\t\t.icon-confirm {\n\t\t\tbackground-position: right 27px;\n\t\t\tpadding-right: 20px;\n\t\t\tmargin-right: 20px;\n\t\t}\n\t}\n\t.trigger p, .action p {\n\t\tmin-height: 34px;\n\t\tdisplay: flex;\n\n\t\t& > span {\n\t\t\tmin-width: 50px;\n\t\t\ttext-align: right;\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\tpadding-right: 10px;\n\t\t\tpadding-top: 6px;\n\t\t}\n\t\t.multiselect {\n\t\t\tflex-grow: 1;\n\t\t\tmax-width: 300px;\n\t\t}\n\t}\n\t.trigger p:first-child span {\n\t\t\tpadding-top: 3px;\n\t}\n\n\t.check--add {\n\t\tbackground-position: 7px center;\n\t\tbackground-color: transparent;\n\t\tpadding-left: 6px;\n\t\tmargin: 0;\n\t\twidth: 180px;\n\t\tborder-radius: var(--border-radius);\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tfont-weight: normal;\n\t\ttext-align: left;\n\t\tfont-size: 1em;\n\t}\n\n\t@media (max-width:1400px) {\n\t\t.rule {\n\t\t\t&, .trigger, .action {\n\t\t\t\twidth: 100%;\n\t\t\t\tmax-width: 100%;\n\t\t\t}\n\t\t\t.flow-icon {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t}\n\t}\n\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Rule.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Rule.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Rule.vue?vue&type=style&index=0&id=a857d7a6&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Rule.vue?vue&type=style&index=0&id=a857d7a6&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Rule.vue?vue&type=template&id=a857d7a6&scoped=true&\"\nimport script from \"./Rule.vue?vue&type=script&lang=js&\"\nexport * from \"./Rule.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Rule.vue?vue&type=style&index=0&id=a857d7a6&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a857d7a6\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.operation)?_c('div',{staticClass:\"section rule\",style:({ borderLeftColor: _vm.operation.color || '' })},[_c('div',{staticClass:\"trigger\"},[_c('p',[_c('span',[_vm._v(_vm._s(_vm.t('workflowengine', 'When')))]),_vm._v(\" \"),_c('Event',{attrs:{\"rule\":_vm.rule},on:{\"update\":_vm.updateRule}})],1),_vm._v(\" \"),_vm._l((_vm.rule.checks),function(check,index){return _c('p',{key:index},[_c('span',[_vm._v(_vm._s(_vm.t('workflowengine', 'and')))]),_vm._v(\" \"),_c('Check',{attrs:{\"check\":check,\"rule\":_vm.rule},on:{\"update\":_vm.updateRule,\"validate\":_vm.validate,\"remove\":function($event){return _vm.removeCheck(check)}}})],1)}),_vm._v(\" \"),_c('p',[_c('span'),_vm._v(\" \"),(_vm.lastCheckComplete)?_c('input',{staticClass:\"check--add\",attrs:{\"type\":\"button\",\"value\":\"Add a new filter\"},on:{\"click\":_vm.onAddFilter}}):_vm._e()])],2),_vm._v(\" \"),_c('div',{staticClass:\"flow-icon icon-confirm\"}),_vm._v(\" \"),_c('div',{staticClass:\"action\"},[_c('Operation',{attrs:{\"operation\":_vm.operation,\"colored\":false}},[(_vm.operation.options)?_c(_vm.operation.options,{tag:\"component\",on:{\"input\":_vm.updateOperation},model:{value:(_vm.rule.operation),callback:function ($$v) {_vm.$set(_vm.rule, \"operation\", $$v)},expression:\"rule.operation\"}}):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"buttons\"},[(_vm.rule.id < -1 || _vm.dirty)?_c('NcButton',{on:{\"click\":_vm.cancelRule}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('workflowengine', 'Cancel'))+\"\\n\\t\\t\\t\")]):(!_vm.dirty)?_c('NcButton',{on:{\"click\":_vm.deleteRule}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('workflowengine', 'Delete'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcButton',{attrs:{\"type\":_vm.ruleStatus.type},on:{\"click\":_vm.saveRule},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_vm.ruleStatus.icon,{tag:\"component\",attrs:{\"size\":20}})]},proxy:true}],null,false,2383918876)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.ruleStatus.title)+\"\\n\\t\\t\\t\")])],1),_vm._v(\" \"),(_vm.error)?_c('p',{staticClass:\"error-message\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.error)+\"\\n\\t\\t\")]):_vm._e()],1)]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<div id=\"workflowengine\">\n\t\t<NcSettingsSection :title=\"t('workflowengine', 'Available flows')\"\n\t\t\t:doc-url=\"workflowDocUrl\">\n\t\t\t<p v-if=\"scope === 0\" class=\"settings-hint\">\n\t\t\t\t<a href=\"https://nextcloud.com/developer/\">{{ t('workflowengine', 'For details on how to write your own flow, check out the development documentation.') }}</a>\n\t\t\t</p>\n\n\t\t\t<transition-group name=\"slide\" tag=\"div\" class=\"actions\">\n\t\t\t\t<Operation v-for=\"operation in getMainOperations\"\n\t\t\t\t\t:key=\"operation.id\"\n\t\t\t\t\t:operation=\"operation\"\n\t\t\t\t\t@click.native=\"createNewRule(operation)\" />\n\n\t\t\t\t<a v-if=\"showAppStoreHint\"\n\t\t\t\t\t:key=\"'add'\"\n\t\t\t\t\t:href=\"appstoreUrl\"\n\t\t\t\t\tclass=\"actions__item colored more\">\n\t\t\t\t\t<div class=\"icon icon-add\" />\n\t\t\t\t\t<div class=\"actions__item__description\">\n\t\t\t\t\t\t<h3>{{ t('workflowengine', 'More flows') }}</h3>\n\t\t\t\t\t\t<small>{{ t('workflowengine', 'Browse the App Store') }}</small>\n\t\t\t\t\t</div>\n\t\t\t\t</a>\n\t\t\t</transition-group>\n\n\t\t\t<div v-if=\"hasMoreOperations\" class=\"actions__more\">\n\t\t\t\t<NcButton @click=\"showMoreOperations = !showMoreOperations\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<MenuUp v-if=\"showMoreOperations\" :size=\"20\" />\n\t\t\t\t\t\t<MenuDown v-else :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ showMoreOperations ? t('workflowengine', 'Show less') : t('workflowengine', 'Show more') }}\n\t\t\t\t</NcButton>\n\t\t\t</div>\n\n\t\t\t<h2 v-if=\"scope === 0\" class=\"configured-flows\">\n\t\t\t\t{{ t('workflowengine', 'Configured flows') }}\n\t\t\t</h2>\n\t\t\t<h2 v-else class=\"configured-flows\">\n\t\t\t\t{{ t('workflowengine', 'Your flows') }}\n\t\t\t</h2>\n\t\t</NcSettingsSection>\n\n\t\t<transition-group v-if=\"rules.length > 0\" name=\"slide\">\n\t\t\t<Rule v-for=\"rule in rules\" :key=\"rule.id\" :rule=\"rule\" />\n\t\t</transition-group>\n\t</div>\n</template>\n\n<script>\nimport Rule from './Rule'\nimport Operation from './Operation'\nimport NcSettingsSection from '@nextcloud/vue/dist/Components/NcSettingsSection'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton'\nimport { mapGetters, mapState } from 'vuex'\nimport { generateUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport MenuUp from 'vue-material-design-icons/MenuUp'\nimport MenuDown from 'vue-material-design-icons/MenuDown'\n\nconst ACTION_LIMIT = 3\n\nexport default {\n\tname: 'Workflow',\n\tcomponents: {\n\t\tNcButton,\n\t\tMenuDown,\n\t\tMenuUp,\n\t\tOperation,\n\t\tRule,\n\t\tNcSettingsSection,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tshowMoreOperations: false,\n\t\t\tappstoreUrl: generateUrl('settings/apps/workflow'),\n\t\t\tworkflowDocUrl: loadState('workflowengine', 'doc-url'),\n\t\t}\n\t},\n\tcomputed: {\n\t\t...mapGetters({\n\t\t\trules: 'getRules',\n\t\t}),\n\t\t...mapState({\n\t\t\tappstoreEnabled: 'appstoreEnabled',\n\t\t\tscope: 'scope',\n\t\t\toperations: 'operations',\n\t\t}),\n\t\thasMoreOperations() {\n\t\t\treturn Object.keys(this.operations).length > ACTION_LIMIT\n\t\t},\n\t\tgetMainOperations() {\n\t\t\tif (this.showMoreOperations) {\n\t\t\t\treturn Object.values(this.operations)\n\t\t\t}\n\t\t\treturn Object.values(this.operations).slice(0, ACTION_LIMIT)\n\t\t},\n\t\tshowAppStoreHint() {\n\t\t\treturn this.scope === 0 && this.appstoreEnabled && OC.isUserAdmin()\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.$store.dispatch('fetchRules')\n\t},\n\tmethods: {\n\t\tcreateNewRule(operation) {\n\t\t\tthis.$store.dispatch('createNewRule', operation)\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t#workflowengine {\n\t\tborder-bottom: 1px solid var(--color-border);\n\t}\n\t.section {\n\t\tmax-width: 100vw;\n\n\t\th2.configured-flows {\n\t\t\tmargin-top: 50px;\n\t\t\tmargin-bottom: 0;\n\t\t}\n\t}\n\t.actions {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t\tmax-width: 1200px;\n\t\t.actions__item {\n\t\t\tmax-width: 280px;\n\t\t\tflex-basis: 250px;\n\t\t}\n\t}\n\t.actions__more {\n\t\tmargin-bottom: 10px;\n\t}\n\n\t.slide-enter-active {\n\t\t-moz-transition-duration: 0.3s;\n\t\t-webkit-transition-duration: 0.3s;\n\t\t-o-transition-duration: 0.3s;\n\t\ttransition-duration: 0.3s;\n\t\t-moz-transition-timing-function: ease-in;\n\t\t-webkit-transition-timing-function: ease-in;\n\t\t-o-transition-timing-function: ease-in;\n\t\ttransition-timing-function: ease-in;\n\t}\n\n\t.slide-leave-active {\n\t\t-moz-transition-duration: 0.3s;\n\t\t-webkit-transition-duration: 0.3s;\n\t\t-o-transition-duration: 0.3s;\n\t\ttransition-duration: 0.3s;\n\t\t-moz-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n\t\t-webkit-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n\t\t-o-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n\t\ttransition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n\t}\n\n\t.slide-enter-to, .slide-leave {\n\t\tmax-height: 500px;\n\t\toverflow: hidden;\n\t}\n\n\t.slide-enter, .slide-leave-to {\n\t\toverflow: hidden;\n\t\tmax-height: 0;\n\t\tpadding-top: 0;\n\t\tpadding-bottom: 0;\n\t}\n\n\t@import \"./../styles/operation\";\n\n\t.actions__item.more {\n\t\tbackground-color: var(--color-background-dark);\n\t}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Workflow.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Workflow.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Workflow.vue?vue&type=style&index=0&id=38a7a2e5&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Workflow.vue?vue&type=style&index=0&id=38a7a2e5&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Workflow.vue?vue&type=template&id=38a7a2e5&scoped=true&\"\nimport script from \"./Workflow.vue?vue&type=script&lang=js&\"\nexport * from \"./Workflow.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Workflow.vue?vue&type=style&index=0&id=38a7a2e5&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"38a7a2e5\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"workflowengine\"}},[_c('NcSettingsSection',{attrs:{\"title\":_vm.t('workflowengine', 'Available flows'),\"doc-url\":_vm.workflowDocUrl}},[(_vm.scope === 0)?_c('p',{staticClass:\"settings-hint\"},[_c('a',{attrs:{\"href\":\"https://nextcloud.com/developer/\"}},[_vm._v(_vm._s(_vm.t('workflowengine', 'For details on how to write your own flow, check out the development documentation.')))])]):_vm._e(),_vm._v(\" \"),_c('transition-group',{staticClass:\"actions\",attrs:{\"name\":\"slide\",\"tag\":\"div\"}},[_vm._l((_vm.getMainOperations),function(operation){return _c('Operation',{key:operation.id,attrs:{\"operation\":operation},nativeOn:{\"click\":function($event){return _vm.createNewRule(operation)}}})}),_vm._v(\" \"),(_vm.showAppStoreHint)?_c('a',{key:'add',staticClass:\"actions__item colored more\",attrs:{\"href\":_vm.appstoreUrl}},[_c('div',{staticClass:\"icon icon-add\"}),_vm._v(\" \"),_c('div',{staticClass:\"actions__item__description\"},[_c('h3',[_vm._v(_vm._s(_vm.t('workflowengine', 'More flows')))]),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.t('workflowengine', 'Browse the App Store')))])])]):_vm._e()],2),_vm._v(\" \"),(_vm.hasMoreOperations)?_c('div',{staticClass:\"actions__more\"},[_c('NcButton',{on:{\"click\":function($event){_vm.showMoreOperations = !_vm.showMoreOperations}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.showMoreOperations)?_c('MenuUp',{attrs:{\"size\":20}}):_c('MenuDown',{attrs:{\"size\":20}})]},proxy:true}],null,false,3801522717)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.showMoreOperations ? _vm.t('workflowengine', 'Show less') : _vm.t('workflowengine', 'Show more'))+\"\\n\\t\\t\\t\")])],1):_vm._e(),_vm._v(\" \"),(_vm.scope === 0)?_c('h2',{staticClass:\"configured-flows\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('workflowengine', 'Configured flows'))+\"\\n\\t\\t\")]):_c('h2',{staticClass:\"configured-flows\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('workflowengine', 'Your flows'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),(_vm.rules.length > 0)?_c('transition-group',{attrs:{\"name\":\"slide\"}},_vm._l((_vm.rules),function(rule){return _c('Rule',{key:rule.id,attrs:{\"rule\":rule}})}),1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst regexRegex = /^\\/(.*)\\/([gui]{0,3})$/\nconst regexIPv4 = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\/(3[0-2]|[1-2][0-9]|[1-9])$/\nconst regexIPv6 = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(1([01][0-9]|2[0-8])|[1-9][0-9]|[0-9])$/\n\nconst validateRegex = function(string) {\n\tif (!string) {\n\t\treturn false\n\t}\n\treturn regexRegex.exec(string) !== null\n}\n\nconst validateIPv4 = function(string) {\n\tif (!string) {\n\t\treturn false\n\t}\n\treturn regexIPv4.exec(string) !== null\n}\n\nconst validateIPv6 = function(string) {\n\tif (!string) {\n\t\treturn false\n\t}\n\treturn regexIPv6.exec(string) !== null\n}\n\nconst stringValidator = (check) => {\n\tif (check.operator === 'matches' || check.operator === '!matches') {\n\t\treturn validateRegex(check.value)\n\t}\n\treturn true\n}\n\nexport { validateRegex, stringValidator, validateIPv4, validateIPv6 }\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst valueMixin = {\n\tprops: {\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tcheck: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => { return {} },\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tnewValue: '',\n\t\t}\n\t},\n\twatch: {\n\t\tvalue: {\n\t\t\timmediate: true,\n\t\t\thandler(value) {\n\t\t\t\tthis.updateInternalValue(value)\n\t\t\t},\n\t\t},\n\t},\n\tmethods: {\n\t\tupdateInternalValue(value) {\n\t\t\tthis.newValue = value\n\t\t},\n\t},\n}\n\nexport default valueMixin\n","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div>\n\t\t<NcMultiselect :value=\"currentValue\"\n\t\t\t:placeholder=\"t('workflowengine', 'Select a file type')\"\n\t\t\tlabel=\"label\"\n\t\t\ttrack-by=\"pattern\"\n\t\t\t:options=\"options\"\n\t\t\t:multiple=\"false\"\n\t\t\t:tagging=\"false\"\n\t\t\t@input=\"setValue\">\n\t\t\t<template slot=\"singleLabel\" slot-scope=\"props\">\n\t\t\t\t<span v-if=\"props.option.icon\" class=\"option__icon\" :class=\"props.option.icon\" />\n\t\t\t\t<img v-else\n\t\t\t\t\tclass=\"option__icon-img\"\n\t\t\t\t\t:src=\"props.option.iconUrl\"\n\t\t\t\t\talt=\"\">\n\t\t\t\t<span class=\"option__title option__title_single\">{{ props.option.label }}</span>\n\t\t\t</template>\n\t\t\t<template slot=\"option\" slot-scope=\"props\">\n\t\t\t\t<span v-if=\"props.option.icon\" class=\"option__icon\" :class=\"props.option.icon\" />\n\t\t\t\t<img v-else\n\t\t\t\t\tclass=\"option__icon-img\"\n\t\t\t\t\t:src=\"props.option.iconUrl\"\n\t\t\t\t\talt=\"\">\n\t\t\t\t<span class=\"option__title\">{{ props.option.label }}</span>\n\t\t\t</template>\n\t\t</NcMultiselect>\n\t\t<input v-if=\"!isPredefined\"\n\t\t\ttype=\"text\"\n\t\t\t:value=\"currentValue.pattern\"\n\t\t\t:placeholder=\"t('workflowengine', 'e.g. httpd/unix-directory')\"\n\t\t\t@input=\"updateCustom\">\n\t</div>\n</template>\n\n<script>\nimport NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect'\nimport valueMixin from './../../mixins/valueMixin'\nimport { imagePath } from '@nextcloud/router'\n\nexport default {\n\tname: 'FileMimeType',\n\tcomponents: {\n\t\tNcMultiselect,\n\t},\n\tmixins: [\n\t\tvalueMixin,\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tpredefinedTypes: [\n\t\t\t\t{\n\t\t\t\t\ticon: 'icon-folder',\n\t\t\t\t\tlabel: t('workflowengine', 'Folder'),\n\t\t\t\t\tpattern: 'httpd/unix-directory',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ticon: 'icon-picture',\n\t\t\t\t\tlabel: t('workflowengine', 'Images'),\n\t\t\t\t\tpattern: '/image\\\\/.*/',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ticonUrl: imagePath('core', 'filetypes/x-office-document'),\n\t\t\t\t\tlabel: t('workflowengine', 'Office documents'),\n\t\t\t\t\tpattern: '/(vnd\\\\.(ms-|openxmlformats-|oasis\\\\.opendocument).*)$/',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ticonUrl: imagePath('core', 'filetypes/application-pdf'),\n\t\t\t\t\tlabel: t('workflowengine', 'PDF documents'),\n\t\t\t\t\tpattern: 'application/pdf',\n\t\t\t\t},\n\t\t\t],\n\t\t}\n\t},\n\tcomputed: {\n\t\toptions() {\n\t\t\treturn [...this.predefinedTypes, this.customValue]\n\t\t},\n\t\tisPredefined() {\n\t\t\tconst matchingPredefined = this.predefinedTypes.find((type) => this.newValue === type.pattern)\n\t\t\tif (matchingPredefined) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t\tcustomValue() {\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom MIME type'),\n\t\t\t\tpattern: '',\n\t\t\t}\n\t\t},\n\t\tcurrentValue() {\n\t\t\tconst matchingPredefined = this.predefinedTypes.find((type) => this.newValue === type.pattern)\n\t\t\tif (matchingPredefined) {\n\t\t\t\treturn matchingPredefined\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom mimetype'),\n\t\t\t\tpattern: this.newValue,\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\tvalidateRegex(string) {\n\t\t\tconst regexRegex = /^\\/(.*)\\/([gui]{0,3})$/\n\t\t\tconst result = regexRegex.exec(string)\n\t\t\treturn result !== null\n\t\t},\n\t\tsetValue(value) {\n\t\t\tif (value !== null) {\n\t\t\t\tthis.newValue = value.pattern\n\t\t\t\tthis.$emit('input', this.newValue)\n\t\t\t}\n\t\t},\n\t\tupdateCustom(event) {\n\t\t\tthis.newValue = event.target.value\n\t\t\tthis.$emit('input', this.newValue)\n\t\t},\n\t},\n}\n</script>\n<style scoped lang=\"scss\">\n\t.multiselect, input[type='text'] {\n\t\twidth: 100%;\n\t}\n\t.multiselect >>> .multiselect__content-wrapper li>span,\n\t.multiselect >>> .multiselect__single {\n\t\tdisplay: flex;\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n\n\t.option__icon {\n\t\tdisplay: inline-block;\n\t\tmin-width: 30px;\n\t\tbackground-position: left;\n\t}\n\n\t.option__icon-img {\n\t\tmargin-right: 14px;\n\t}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileMimeType.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileMimeType.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileMimeType.vue?vue&type=style&index=0&id=2312566e&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileMimeType.vue?vue&type=style&index=0&id=2312566e&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileMimeType.vue?vue&type=template&id=2312566e&scoped=true&\"\nimport script from \"./FileMimeType.vue?vue&type=script&lang=js&\"\nexport * from \"./FileMimeType.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FileMimeType.vue?vue&type=style&index=0&id=2312566e&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2312566e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('NcMultiselect',{attrs:{\"value\":_vm.currentValue,\"placeholder\":_vm.t('workflowengine', 'Select a file type'),\"label\":\"label\",\"track-by\":\"pattern\",\"options\":_vm.options,\"multiple\":false,\"tagging\":false},on:{\"input\":_vm.setValue},scopedSlots:_vm._u([{key:\"singleLabel\",fn:function(props){return [(props.option.icon)?_c('span',{staticClass:\"option__icon\",class:props.option.icon}):_c('img',{staticClass:\"option__icon-img\",attrs:{\"src\":props.option.iconUrl,\"alt\":\"\"}}),_vm._v(\" \"),_c('span',{staticClass:\"option__title option__title_single\"},[_vm._v(_vm._s(props.option.label))])]}},{key:\"option\",fn:function(props){return [(props.option.icon)?_c('span',{staticClass:\"option__icon\",class:props.option.icon}):_c('img',{staticClass:\"option__icon-img\",attrs:{\"src\":props.option.iconUrl,\"alt\":\"\"}}),_vm._v(\" \"),_c('span',{staticClass:\"option__title\"},[_vm._v(_vm._s(props.option.label))])]}}])}),_vm._v(\" \"),(!_vm.isPredefined)?_c('input',{attrs:{\"type\":\"text\",\"placeholder\":_vm.t('workflowengine', 'e.g. httpd/unix-directory')},domProps:{\"value\":_vm.currentValue.pattern},on:{\"input\":_vm.updateCustom}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileSystemTag.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileSystemTag.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<MultiselectTags v-model=\"newValue\"\n\t\t:multiple=\"false\"\n\t\t@input=\"update\" />\n</template>\n\n<script>\nimport MultiselectTags from '@nextcloud/vue/dist/Components/NcMultiselectTags.js'\n\nexport default {\n\tname: 'FileSystemTag',\n\tcomponents: {\n\t\tMultiselectTags,\n\t},\n\tprops: {\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tnewValue: [],\n\t\t}\n\t},\n\twatch: {\n\t\tvalue() {\n\t\t\tthis.updateValue()\n\t\t},\n\t},\n\tbeforeMount() {\n\t\tthis.updateValue()\n\t},\n\tmethods: {\n\t\tupdateValue() {\n\t\t\tif (this.value !== '') {\n\t\t\t\tthis.newValue = this.value\n\t\t\t} else {\n\t\t\t\tthis.newValue = null\n\t\t\t}\n\t\t},\n\t\tupdate() {\n\t\t\tthis.$emit('input', this.newValue || '')\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\n</style>\n","import { render, staticRenderFns } from \"./FileSystemTag.vue?vue&type=template&id=1611b92c&scoped=true&\"\nimport script from \"./FileSystemTag.vue?vue&type=script&lang=js&\"\nexport * from \"./FileSystemTag.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1611b92c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('MultiselectTags',{attrs:{\"multiple\":false},on:{\"input\":_vm.update},model:{value:(_vm.newValue),callback:function ($$v) {_vm.newValue=$$v},expression:\"newValue\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { stringValidator, validateIPv4, validateIPv6 } from '../../helpers/validators'\nimport FileMimeType from './FileMimeType'\nimport FileSystemTag from './FileSystemTag'\n\nconst stringOrRegexOperators = () => {\n\treturn [\n\t\t{ operator: 'matches', name: t('workflowengine', 'matches') },\n\t\t{ operator: '!matches', name: t('workflowengine', 'does not match') },\n\t\t{ operator: 'is', name: t('workflowengine', 'is') },\n\t\t{ operator: '!is', name: t('workflowengine', 'is not') },\n\t]\n}\n\nconst FileChecks = [\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\FileName',\n\t\tname: t('workflowengine', 'File name'),\n\t\toperators: stringOrRegexOperators,\n\t\tplaceholder: (check) => {\n\t\t\tif (check.operator === 'matches' || check.operator === '!matches') {\n\t\t\t\treturn '/^dummy-.+$/i'\n\t\t\t}\n\t\t\treturn 'filename.txt'\n\t\t},\n\t\tvalidate: stringValidator,\n\t},\n\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\FileMimeType',\n\t\tname: t('workflowengine', 'File MIME type'),\n\t\toperators: stringOrRegexOperators,\n\t\tcomponent: FileMimeType,\n\t},\n\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\FileSize',\n\t\tname: t('workflowengine', 'File size (upload)'),\n\t\toperators: [\n\t\t\t{ operator: 'less', name: t('workflowengine', 'less') },\n\t\t\t{ operator: '!greater', name: t('workflowengine', 'less or equals') },\n\t\t\t{ operator: '!less', name: t('workflowengine', 'greater or equals') },\n\t\t\t{ operator: 'greater', name: t('workflowengine', 'greater') },\n\t\t],\n\t\tplaceholder: (check) => '5 MB',\n\t\tvalidate: (check) => check.value ? check.value.match(/^[0-9]+[ ]?[kmgt]?b$/i) !== null : false,\n\t},\n\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\RequestRemoteAddress',\n\t\tname: t('workflowengine', 'Request remote address'),\n\t\toperators: [\n\t\t\t{ operator: 'matchesIPv4', name: t('workflowengine', 'matches IPv4') },\n\t\t\t{ operator: '!matchesIPv4', name: t('workflowengine', 'does not match IPv4') },\n\t\t\t{ operator: 'matchesIPv6', name: t('workflowengine', 'matches IPv6') },\n\t\t\t{ operator: '!matchesIPv6', name: t('workflowengine', 'does not match IPv6') },\n\t\t],\n\t\tplaceholder: (check) => {\n\t\t\tif (check.operator === 'matchesIPv6' || check.operator === '!matchesIPv6') {\n\t\t\t\treturn '::1/128'\n\t\t\t}\n\t\t\treturn '127.0.0.1/32'\n\t\t},\n\t\tvalidate: (check) => {\n\t\t\tif (check.operator === 'matchesIPv6' || check.operator === '!matchesIPv6') {\n\t\t\t\treturn validateIPv6(check.value)\n\t\t\t}\n\t\t\treturn validateIPv4(check.value)\n\t\t},\n\t},\n\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\FileSystemTags',\n\t\tname: t('workflowengine', 'File system tag'),\n\t\toperators: [\n\t\t\t{ operator: 'is', name: t('workflowengine', 'is tagged with') },\n\t\t\t{ operator: '!is', name: t('workflowengine', 'is not tagged with') },\n\t\t],\n\t\tcomponent: FileSystemTag,\n\t},\n]\n\nexport default FileChecks\n","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div>\n\t\t<NcMultiselect :value=\"currentValue\"\n\t\t\t:placeholder=\"t('workflowengine', 'Select a user agent')\"\n\t\t\tlabel=\"label\"\n\t\t\ttrack-by=\"pattern\"\n\t\t\t:options=\"options\"\n\t\t\t:multiple=\"false\"\n\t\t\t:tagging=\"false\"\n\t\t\t@input=\"setValue\">\n\t\t\t<template slot=\"singleLabel\" slot-scope=\"props\">\n\t\t\t\t<span class=\"option__icon\" :class=\"props.option.icon\" />\n\t\t\t\t<!-- v-html can be used here as t() always passes our translated strings though DOMPurify.sanitize -->\n\t\t\t\t<!-- eslint-disable-next-line vue/no-v-html -->\n\t\t\t\t<span class=\"option__title option__title_single\" v-html=\"props.option.label\" />\n\t\t\t</template>\n\t\t\t<template slot=\"option\" slot-scope=\"props\">\n\t\t\t\t<span class=\"option__icon\" :class=\"props.option.icon\" />\n\t\t\t\t<!-- eslint-disable-next-line vue/no-v-html -->\n\t\t\t\t<span v-if=\"props.option.$groupLabel\" class=\"option__title\" v-html=\"props.option.$groupLabel\" />\n\t\t\t\t<!-- eslint-disable-next-line vue/no-v-html -->\n\t\t\t\t<span v-else class=\"option__title\" v-html=\"props.option.label\" />\n\t\t\t</template>\n\t\t</NcMultiselect>\n\t\t<input v-if=\"!isPredefined\"\n\t\t\ttype=\"text\"\n\t\t\t:value=\"currentValue.pattern\"\n\t\t\t@input=\"updateCustom\">\n\t</div>\n</template>\n\n<script>\nimport NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect'\nimport valueMixin from '../../mixins/valueMixin'\n\nexport default {\n\tname: 'RequestUserAgent',\n\tcomponents: {\n\t\tNcMultiselect,\n\t},\n\tmixins: [\n\t\tvalueMixin,\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tnewValue: '',\n\t\t\tpredefinedTypes: [\n\t\t\t\t{ pattern: 'android', label: t('workflowengine', 'Android client'), icon: 'icon-phone' },\n\t\t\t\t{ pattern: 'ios', label: t('workflowengine', 'iOS client'), icon: 'icon-phone' },\n\t\t\t\t{ pattern: 'desktop', label: t('workflowengine', 'Desktop client'), icon: 'icon-desktop' },\n\t\t\t\t{ pattern: 'mail', label: t('workflowengine', 'Thunderbird & Outlook addons'), icon: 'icon-mail' },\n\t\t\t],\n\t\t}\n\t},\n\tcomputed: {\n\t\toptions() {\n\t\t\treturn [...this.predefinedTypes, this.customValue]\n\t\t},\n\t\tmatchingPredefined() {\n\t\t\treturn this.predefinedTypes\n\t\t\t\t.find((type) => this.newValue === type.pattern)\n\t\t},\n\t\tisPredefined() {\n\t\t\treturn !!this.matchingPredefined\n\t\t},\n\t\tcustomValue() {\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom user agent'),\n\t\t\t\tpattern: '',\n\t\t\t}\n\t\t},\n\t\tcurrentValue() {\n\t\t\tif (this.matchingPredefined) {\n\t\t\t\treturn this.matchingPredefined\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom user agent'),\n\t\t\t\tpattern: this.newValue,\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\tvalidateRegex(string) {\n\t\t\tconst regexRegex = /^\\/(.*)\\/([gui]{0,3})$/\n\t\t\tconst result = regexRegex.exec(string)\n\t\t\treturn result !== null\n\t\t},\n\t\tsetValue(value) {\n\t\t\t// TODO: check if value requires a regex and set the check operator according to that\n\t\t\tif (value !== null) {\n\t\t\t\tthis.newValue = value.pattern\n\t\t\t\tthis.$emit('input', this.newValue)\n\t\t\t}\n\t\t},\n\t\tupdateCustom(event) {\n\t\t\tthis.newValue = event.target.value\n\t\t\tthis.$emit('input', this.newValue)\n\t\t},\n\t},\n}\n</script>\n<style scoped>\n\t.multiselect, input[type='text'] {\n\t\twidth: 100%;\n\t}\n\n\t.multiselect .multiselect__content-wrapper li>span {\n\t\tdisplay: flex;\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n\t.multiselect::v-deep .multiselect__single {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n\t.option__icon {\n\t\tdisplay: inline-block;\n\t\tmin-width: 30px;\n\t\tbackground-position: left;\n\t}\n\t.option__title {\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestUserAgent.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestUserAgent.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestUserAgent.vue?vue&type=style&index=0&id=bd5cb750&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestUserAgent.vue?vue&type=style&index=0&id=bd5cb750&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./RequestUserAgent.vue?vue&type=template&id=bd5cb750&scoped=true&\"\nimport script from \"./RequestUserAgent.vue?vue&type=script&lang=js&\"\nexport * from \"./RequestUserAgent.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RequestUserAgent.vue?vue&type=style&index=0&id=bd5cb750&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"bd5cb750\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('NcMultiselect',{attrs:{\"value\":_vm.currentValue,\"placeholder\":_vm.t('workflowengine', 'Select a user agent'),\"label\":\"label\",\"track-by\":\"pattern\",\"options\":_vm.options,\"multiple\":false,\"tagging\":false},on:{\"input\":_vm.setValue},scopedSlots:_vm._u([{key:\"singleLabel\",fn:function(props){return [_c('span',{staticClass:\"option__icon\",class:props.option.icon}),_vm._v(\" \"),_c('span',{staticClass:\"option__title option__title_single\",domProps:{\"innerHTML\":_vm._s(props.option.label)}})]}},{key:\"option\",fn:function(props){return [_c('span',{staticClass:\"option__icon\",class:props.option.icon}),_vm._v(\" \"),(props.option.$groupLabel)?_c('span',{staticClass:\"option__title\",domProps:{\"innerHTML\":_vm._s(props.option.$groupLabel)}}):_c('span',{staticClass:\"option__title\",domProps:{\"innerHTML\":_vm._s(props.option.label)}})]}}])}),_vm._v(\" \"),(!_vm.isPredefined)?_c('input',{attrs:{\"type\":\"text\"},domProps:{\"value\":_vm.currentValue.pattern},on:{\"input\":_vm.updateCustom}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<div class=\"timeslot\">\n\t\t<input v-model=\"newValue.startTime\"\n\t\t\ttype=\"text\"\n\t\t\tclass=\"timeslot--start\"\n\t\t\tplaceholder=\"e.g. 08:00\"\n\t\t\t@input=\"update\">\n\t\t<input v-model=\"newValue.endTime\"\n\t\t\ttype=\"text\"\n\t\t\tplaceholder=\"e.g. 18:00\"\n\t\t\t@input=\"update\">\n\t\t<p v-if=\"!valid\" class=\"invalid-hint\">\n\t\t\t{{ t('workflowengine', 'Please enter a valid time span') }}\n\t\t</p>\n\t\t<NcMultiselect v-show=\"valid\"\n\t\t\tv-model=\"newValue.timezone\"\n\t\t\t:options=\"timezones\"\n\t\t\t@input=\"update\" />\n\t</div>\n</template>\n\n<script>\nimport NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect'\nimport moment from 'moment-timezone'\nimport valueMixin from '../../mixins/valueMixin'\n\nconst zones = moment.tz.names()\nexport default {\n\tname: 'RequestTime',\n\tcomponents: {\n\t\tNcMultiselect,\n\t},\n\tmixins: [\n\t\tvalueMixin,\n\t],\n\tprops: {\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\ttimezones: zones,\n\t\t\tvalid: false,\n\t\t\tnewValue: {\n\t\t\t\tstartTime: null,\n\t\t\t\tendTime: null,\n\t\t\t\ttimezone: moment.tz.guess(),\n\t\t\t},\n\t\t}\n\t},\n\tmounted() {\n\t\tthis.validate()\n\t},\n\tmethods: {\n\t\tupdateInternalValue(value) {\n\t\t\ttry {\n\t\t\t\tconst data = JSON.parse(value)\n\t\t\t\tif (data.length === 2) {\n\t\t\t\t\tthis.newValue = {\n\t\t\t\t\t\tstartTime: data[0].split(' ', 2)[0],\n\t\t\t\t\t\tendTime: data[1].split(' ', 2)[0],\n\t\t\t\t\t\ttimezone: data[0].split(' ', 2)[1],\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t// ignore invalid values\n\t\t\t}\n\t\t},\n\t\tvalidate() {\n\t\t\tthis.valid = this.newValue.startTime && this.newValue.startTime.match(/^(0[0-9]|1[0-9]|2[0-3]|[0-9]):[0-5][0-9]$/i) !== null\n\t\t\t\t&& this.newValue.endTime && this.newValue.endTime.match(/^(0[0-9]|1[0-9]|2[0-3]|[0-9]):[0-5][0-9]$/i) !== null\n\t\t\t\t&& moment.tz.zone(this.newValue.timezone) !== null\n\t\t\tif (this.valid) {\n\t\t\t\tthis.$emit('valid')\n\t\t\t} else {\n\t\t\t\tthis.$emit('invalid')\n\t\t\t}\n\t\t\treturn this.valid\n\t\t},\n\t\tupdate() {\n\t\t\tif (this.newValue.timezone === null) {\n\t\t\t\tthis.newValue.timezone = moment.tz.guess()\n\t\t\t}\n\t\t\tif (this.validate()) {\n\t\t\t\tconst output = `[\"${this.newValue.startTime} ${this.newValue.timezone}\",\"${this.newValue.endTime} ${this.newValue.timezone}\"]`\n\t\t\t\tthis.$emit('input', output)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t.timeslot {\n\t\tdisplay: flex;\n\t\tflex-grow: 1;\n\t\tflex-wrap: wrap;\n\t\tmax-width: 180px;\n\n\t\t.multiselect {\n\t\t\twidth: 100%;\n\t\t\tmargin-bottom: 5px;\n\t\t}\n\n\t\t.multiselect::v-deep .multiselect__tags:not(:hover):not(:focus):not(:active) {\n\t\t\tborder: 1px solid transparent;\n\t\t}\n\n\t\tinput[type=text] {\n\t\t\twidth: 50%;\n\t\t\tmargin: 0;\n\t\t\tmargin-bottom: 5px;\n\n\t\t\t&.timeslot--start {\n\t\t\t\tmargin-right: 5px;\n\t\t\t\twidth: calc(50% - 5px);\n\t\t\t}\n\t\t}\n\n\t\t.invalid-hint {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestTime.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestTime.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestTime.vue?vue&type=style&index=0&id=c064bb1a&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestTime.vue?vue&type=style&index=0&id=c064bb1a&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./RequestTime.vue?vue&type=template&id=c064bb1a&scoped=true&\"\nimport script from \"./RequestTime.vue?vue&type=script&lang=js&\"\nexport * from \"./RequestTime.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RequestTime.vue?vue&type=style&index=0&id=c064bb1a&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c064bb1a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"timeslot\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newValue.startTime),expression:\"newValue.startTime\"}],staticClass:\"timeslot--start\",attrs:{\"type\":\"text\",\"placeholder\":\"e.g. 08:00\"},domProps:{\"value\":(_vm.newValue.startTime)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.$set(_vm.newValue, \"startTime\", $event.target.value)},_vm.update]}}),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newValue.endTime),expression:\"newValue.endTime\"}],attrs:{\"type\":\"text\",\"placeholder\":\"e.g. 18:00\"},domProps:{\"value\":(_vm.newValue.endTime)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.$set(_vm.newValue, \"endTime\", $event.target.value)},_vm.update]}}),_vm._v(\" \"),(!_vm.valid)?_c('p',{staticClass:\"invalid-hint\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('workflowengine', 'Please enter a valid time span'))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcMultiselect',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.valid),expression:\"valid\"}],attrs:{\"options\":_vm.timezones},on:{\"input\":_vm.update},model:{value:(_vm.newValue.timezone),callback:function ($$v) {_vm.$set(_vm.newValue, \"timezone\", $$v)},expression:\"newValue.timezone\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div>\n\t\t<NcMultiselect :value=\"currentValue\"\n\t\t\t:placeholder=\"t('workflowengine', 'Select a request URL')\"\n\t\t\tlabel=\"label\"\n\t\t\ttrack-by=\"pattern\"\n\t\t\tgroup-values=\"children\"\n\t\t\tgroup-label=\"label\"\n\t\t\t:options=\"options\"\n\t\t\t:multiple=\"false\"\n\t\t\t:tagging=\"false\"\n\t\t\t@input=\"setValue\">\n\t\t\t<template slot=\"singleLabel\" slot-scope=\"props\">\n\t\t\t\t<span class=\"option__icon\" :class=\"props.option.icon\" />\n\t\t\t\t<span class=\"option__title option__title_single\">{{ props.option.label }}</span>\n\t\t\t</template>\n\t\t\t<template slot=\"option\" slot-scope=\"props\">\n\t\t\t\t<span class=\"option__icon\" :class=\"props.option.icon\" />\n\t\t\t\t<span class=\"option__title\">{{ props.option.label }} {{ props.option.$groupLabel }}</span>\n\t\t\t</template>\n\t\t</NcMultiselect>\n\t\t<input v-if=\"!isPredefined\"\n\t\t\ttype=\"text\"\n\t\t\t:value=\"currentValue.pattern\"\n\t\t\t:placeholder=\"placeholder\"\n\t\t\t@input=\"updateCustom\">\n\t</div>\n</template>\n\n<script>\nimport NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect'\nimport valueMixin from '../../mixins/valueMixin'\n\nexport default {\n\tname: 'RequestURL',\n\tcomponents: {\n\t\tNcMultiselect,\n\t},\n\tmixins: [\n\t\tvalueMixin,\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tnewValue: '',\n\t\t\tpredefinedTypes: [\n\t\t\t\t{\n\t\t\t\t\tlabel: t('workflowengine', 'Predefined URLs'),\n\t\t\t\t\tchildren: [\n\t\t\t\t\t\t{ pattern: 'webdav', label: t('workflowengine', 'Files WebDAV') },\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t}\n\t},\n\tcomputed: {\n\t\toptions() {\n\t\t\treturn [...this.predefinedTypes, this.customValue]\n\t\t},\n\t\tplaceholder() {\n\t\t\tif (this.check.operator === 'matches' || this.check.operator === '!matches') {\n\t\t\t\treturn '/^https\\\\:\\\\/\\\\/localhost\\\\/index\\\\.php$/i'\n\t\t\t}\n\t\t\treturn 'https://localhost/index.php'\n\t\t},\n\t\tmatchingPredefined() {\n\t\t\treturn this.predefinedTypes\n\t\t\t\t.map(groups => groups.children)\n\t\t\t\t.flat()\n\t\t\t\t.find((type) => this.newValue === type.pattern)\n\t\t},\n\t\tisPredefined() {\n\t\t\treturn !!this.matchingPredefined\n\t\t},\n\t\tcustomValue() {\n\t\t\treturn {\n\t\t\t\tlabel: t('workflowengine', 'Others'),\n\t\t\t\tchildren: [\n\t\t\t\t\t{\n\t\t\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\t\t\tlabel: t('workflowengine', 'Custom URL'),\n\t\t\t\t\t\tpattern: '',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t}\n\t\t},\n\t\tcurrentValue() {\n\t\t\tif (this.matchingPredefined) {\n\t\t\t\treturn this.matchingPredefined\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom URL'),\n\t\t\t\tpattern: this.newValue,\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\tvalidateRegex(string) {\n\t\t\tconst regexRegex = /^\\/(.*)\\/([gui]{0,3})$/\n\t\t\tconst result = regexRegex.exec(string)\n\t\t\treturn result !== null\n\t\t},\n\t\tsetValue(value) {\n\t\t\t// TODO: check if value requires a regex and set the check operator according to that\n\t\t\tif (value !== null) {\n\t\t\t\tthis.newValue = value.pattern\n\t\t\t\tthis.$emit('input', this.newValue)\n\t\t\t}\n\t\t},\n\t\tupdateCustom(event) {\n\t\t\tthis.newValue = event.target.value\n\t\t\tthis.$emit('input', this.newValue)\n\t\t},\n\t},\n}\n</script>\n<style scoped lang=\"scss\">\n\t.multiselect, input[type='text'] {\n\t\twidth: 100%;\n\t}\n\n\t.option__icon {\n\t\tdisplay: inline-block;\n\t\tmin-width: 30px;\n\t\tbackground-position: left;\n\t}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestURL.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestURL.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestURL.vue?vue&type=style&index=0&id=efaa5484&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestURL.vue?vue&type=style&index=0&id=efaa5484&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./RequestURL.vue?vue&type=template&id=efaa5484&scoped=true&\"\nimport script from \"./RequestURL.vue?vue&type=script&lang=js&\"\nexport * from \"./RequestURL.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RequestURL.vue?vue&type=style&index=0&id=efaa5484&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"efaa5484\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('NcMultiselect',{attrs:{\"value\":_vm.currentValue,\"placeholder\":_vm.t('workflowengine', 'Select a request URL'),\"label\":\"label\",\"track-by\":\"pattern\",\"group-values\":\"children\",\"group-label\":\"label\",\"options\":_vm.options,\"multiple\":false,\"tagging\":false},on:{\"input\":_vm.setValue},scopedSlots:_vm._u([{key:\"singleLabel\",fn:function(props){return [_c('span',{staticClass:\"option__icon\",class:props.option.icon}),_vm._v(\" \"),_c('span',{staticClass:\"option__title option__title_single\"},[_vm._v(_vm._s(props.option.label))])]}},{key:\"option\",fn:function(props){return [_c('span',{staticClass:\"option__icon\",class:props.option.icon}),_vm._v(\" \"),_c('span',{staticClass:\"option__title\"},[_vm._v(_vm._s(props.option.label)+\" \"+_vm._s(props.option.$groupLabel))])]}}])}),_vm._v(\" \"),(!_vm.isPredefined)?_c('input',{attrs:{\"type\":\"text\",\"placeholder\":_vm.placeholder},domProps:{\"value\":_vm.currentValue.pattern},on:{\"input\":_vm.updateCustom}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div>\n\t\t<NcMultiselect :value=\"currentValue\"\n\t\t\t:loading=\"status.isLoading && groups.length === 0\"\n\t\t\t:options=\"groups\"\n\t\t\t:multiple=\"false\"\n\t\t\tlabel=\"displayname\"\n\t\t\ttrack-by=\"id\"\n\t\t\t@search-change=\"searchAsync\"\n\t\t\t@input=\"(value) => $emit('input', value.id)\" />\n\t</div>\n</template>\n\n<script>\nimport NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect'\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nconst groups = []\nconst status = {\n\tisLoading: false,\n}\n\nexport default {\n\tname: 'RequestUserGroup',\n\tcomponents: {\n\t\tNcMultiselect,\n\t},\n\tprops: {\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tcheck: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => { return {} },\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tgroups,\n\t\t\tstatus,\n\t\t}\n\t},\n\tcomputed: {\n\t\tcurrentValue() {\n\t\t\treturn this.groups.find(group => group.id === this.value) || null\n\t\t},\n\t},\n\tasync mounted() {\n\t\tif (this.groups.length === 0) {\n\t\t\tawait this.searchAsync('')\n\t\t}\n\t\tif (this.currentValue === null) {\n\t\t\tawait this.searchAsync(this.value)\n\t\t}\n\t},\n\tmethods: {\n\t\tsearchAsync(searchQuery) {\n\t\t\tif (this.status.isLoading) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.status.isLoading = true\n\t\t\treturn axios.get(generateOcsUrl('cloud/groups/details?limit=20&search={searchQuery}', { searchQuery })).then((response) => {\n\t\t\t\tresponse.data.ocs.data.groups.forEach((group) => {\n\t\t\t\t\tthis.addGroup({\n\t\t\t\t\t\tid: group.id,\n\t\t\t\t\t\tdisplayname: group.displayname,\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\tthis.status.isLoading = false\n\t\t\t}, (error) => {\n\t\t\t\tconsole.error('Error while loading group list', error.response)\n\t\t\t})\n\t\t},\n\t\taddGroup(group) {\n\t\t\tconst index = this.groups.findIndex((item) => item.id === group.id)\n\t\t\tif (index === -1) {\n\t\t\t\tthis.groups.push(group)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n<style scoped>\n\t.multiselect {\n\t\twidth: 100%;\n\t}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestUserGroup.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestUserGroup.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestUserGroup.vue?vue&type=style&index=0&id=4bcec2a5&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestUserGroup.vue?vue&type=style&index=0&id=4bcec2a5&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./RequestUserGroup.vue?vue&type=template&id=4bcec2a5&scoped=true&\"\nimport script from \"./RequestUserGroup.vue?vue&type=script&lang=js&\"\nexport * from \"./RequestUserGroup.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RequestUserGroup.vue?vue&type=style&index=0&id=4bcec2a5&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4bcec2a5\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('NcMultiselect',{attrs:{\"value\":_vm.currentValue,\"loading\":_vm.status.isLoading && _vm.groups.length === 0,\"options\":_vm.groups,\"multiple\":false,\"label\":\"displayname\",\"track-by\":\"id\"},on:{\"search-change\":_vm.searchAsync,\"input\":function (value) { return _vm.$emit('input', value.id); }}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport RequestUserAgent from './RequestUserAgent'\nimport RequestTime from './RequestTime'\nimport RequestURL from './RequestURL'\nimport RequestUserGroup from './RequestUserGroup'\n\nconst RequestChecks = [\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\RequestURL',\n\t\tname: t('workflowengine', 'Request URL'),\n\t\toperators: [\n\t\t\t{ operator: 'is', name: t('workflowengine', 'is') },\n\t\t\t{ operator: '!is', name: t('workflowengine', 'is not') },\n\t\t\t{ operator: 'matches', name: t('workflowengine', 'matches') },\n\t\t\t{ operator: '!matches', name: t('workflowengine', 'does not match') },\n\t\t],\n\t\tcomponent: RequestURL,\n\t},\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\RequestTime',\n\t\tname: t('workflowengine', 'Request time'),\n\t\toperators: [\n\t\t\t{ operator: 'in', name: t('workflowengine', 'between') },\n\t\t\t{ operator: '!in', name: t('workflowengine', 'not between') },\n\t\t],\n\t\tcomponent: RequestTime,\n\t},\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\RequestUserAgent',\n\t\tname: t('workflowengine', 'Request user agent'),\n\t\toperators: [\n\t\t\t{ operator: 'is', name: t('workflowengine', 'is') },\n\t\t\t{ operator: '!is', name: t('workflowengine', 'is not') },\n\t\t\t{ operator: 'matches', name: t('workflowengine', 'matches') },\n\t\t\t{ operator: '!matches', name: t('workflowengine', 'does not match') },\n\t\t],\n\t\tcomponent: RequestUserAgent,\n\t},\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\UserGroupMembership',\n\t\tname: t('workflowengine', 'User group membership'),\n\t\toperators: [\n\t\t\t{ operator: 'is', name: t('workflowengine', 'is member of') },\n\t\t\t{ operator: '!is', name: t('workflowengine', 'is not member of') },\n\t\t],\n\t\tcomponent: RequestUserGroup,\n\t},\n]\n\nexport default RequestChecks\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport FileChecks from './file'\nimport RequestChecks from './request'\n\nexport default [...FileChecks, ...RequestChecks]\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport store from './store'\nimport Settings from './components/Workflow'\nimport ShippedChecks from './components/Checks'\n\n/**\n * A plugin for displaying a custom value field for checks\n *\n * @typedef {object} CheckPlugin\n * @property {string} class - The PHP class name of the check\n * @property {Comparison[]} operators - A list of possible comparison operations running on the check\n * @property {Vue} component - A vue component to handle the rendering of options\n * The component should handle the v-model directive properly,\n * so it needs a value property to receive data and emit an input\n * event once the data has changed\n * @property {Function} placeholder - Return a placeholder of no custom component is used\n * @property {Function} validate - validate a check if no custom component is used\n */\n\n/**\n * A plugin for extending the admin page representation of an operator\n *\n * @typedef {object} OperatorPlugin\n * @property {string} id - The PHP class name of the check\n * @property {string} operation - Default value for the operation field\n * @property {string} color - Custom color code to be applied for the operator selector\n * @property {Vue} component - A vue component to handle the rendering of options\n * The component should handle the v-model directive properly,\n * so it needs a value property to receive data and emit an input\n * event once the data has changed\n */\n\n/**\n * @typedef {object} Comparison\n * @property {string} operator - value the comparison should have, e.g. !less, greater\n * @property {string} name - Translated readable text, e.g. less or equals\n */\n\n/**\n * Public javascript api for apps to register custom plugins\n */\nwindow.OCA.WorkflowEngine = Object.assign({}, OCA.WorkflowEngine, {\n\n\t/**\n\t *\n\t * @param {CheckPlugin} Plugin the plugin to register\n\t */\n\tregisterCheck(Plugin) {\n\t\tstore.commit('addPluginCheck', Plugin)\n\t},\n\t/**\n\t *\n\t * @param {OperatorPlugin} Plugin the plugin to register\n\t */\n\tregisterOperator(Plugin) {\n\t\tstore.commit('addPluginOperator', Plugin)\n\t},\n})\n\n// Register shipped checks\nShippedChecks.forEach((checkPlugin) => window.OCA.WorkflowEngine.registerCheck(checkPlugin))\n\nVue.use(Vuex)\nVue.prototype.t = t\n\nconst View = Vue.extend(Settings)\nconst workflowengine = new View({\n\tstore,\n})\nworkflowengine.$mount('#workflowengine')\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".check[data-v-fa8ae1f2]{display:flex;flex-wrap:wrap;width:100%;padding-right:20px}.check>*[data-v-fa8ae1f2]:not(.close){width:180px}.check>.comparator[data-v-fa8ae1f2]{min-width:130px;width:130px}.check>.option[data-v-fa8ae1f2]{min-width:230px;width:230px}.check>.multiselect[data-v-fa8ae1f2],.check>input[type=text][data-v-fa8ae1f2]{margin-right:5px;margin-bottom:5px}.check .multiselect[data-v-fa8ae1f2] .multiselect__content-wrapper li>span,.check .multiselect[data-v-fa8ae1f2] .multiselect__single{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}input[type=text][data-v-fa8ae1f2]{margin:0}[data-v-fa8ae1f2]::placeholder{font-size:10px}button.action-item.action-item--single.icon-close[data-v-fa8ae1f2]{height:44px;width:44px;margin-top:-5px;margin-bottom:-5px}.invalid[data-v-fa8ae1f2]{border-color:var(--color-error) !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Check.vue\"],\"names\":[],\"mappings\":\"AAsJA,wBACC,YAAA,CACA,cAAA,CACA,UAAA,CACA,kBAAA,CACA,sCACC,WAAA,CAED,oCACC,eAAA,CACA,WAAA,CAED,gCACC,eAAA,CACA,WAAA,CAED,8EAEC,gBAAA,CACA,iBAAA,CAGD,qIAEC,aAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CAGF,kCACC,QAAA,CAED,+BACC,cAAA,CAED,mEACC,WAAA,CACA,UAAA,CACA,eAAA,CACA,kBAAA,CAED,0BACC,0CAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.check {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\twidth: 100%;\\n\\tpadding-right: 20px;\\n\\t& > *:not(.close) {\\n\\t\\twidth: 180px;\\n\\t}\\n\\t& > .comparator {\\n\\t\\tmin-width: 130px;\\n\\t\\twidth: 130px;\\n\\t}\\n\\t& > .option {\\n\\t\\tmin-width: 230px;\\n\\t\\twidth: 230px;\\n\\t}\\n\\t& > .multiselect,\\n\\t& > input[type=text] {\\n\\t\\tmargin-right: 5px;\\n\\t\\tmargin-bottom: 5px;\\n\\t}\\n\\n\\t.multiselect::v-deep .multiselect__content-wrapper li>span,\\n\\t.multiselect::v-deep .multiselect__single {\\n\\t\\tdisplay: block;\\n\\t\\twhite-space: nowrap;\\n\\t\\toverflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n}\\ninput[type=text] {\\n\\tmargin: 0;\\n}\\n::placeholder {\\n\\tfont-size: 10px;\\n}\\nbutton.action-item.action-item--single.icon-close {\\n\\theight: 44px;\\n\\twidth: 44px;\\n\\tmargin-top: -5px;\\n\\tmargin-bottom: -5px;\\n}\\n.invalid {\\n\\tborder-color: var(--color-error) !important;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".multiselect[data-v-2312566e],input[type=text][data-v-2312566e]{width:100%}.multiselect[data-v-2312566e] .multiselect__content-wrapper li>span,.multiselect[data-v-2312566e] .multiselect__single{display:flex;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.option__icon[data-v-2312566e]{display:inline-block;min-width:30px;background-position:left}.option__icon-img[data-v-2312566e]{margin-right:14px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Checks/FileMimeType.vue\"],\"names\":[],\"mappings\":\"AAkJA,gEACC,UAAA,CAED,uHAEC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CAGD,+BACC,oBAAA,CACA,cAAA,CACA,wBAAA,CAGD,mCACC,iBAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.multiselect, input[type='text'] {\\n\\twidth: 100%;\\n}\\n.multiselect >>> .multiselect__content-wrapper li>span,\\n.multiselect >>> .multiselect__single {\\n\\tdisplay: flex;\\n\\twhite-space: nowrap;\\n\\toverflow: hidden;\\n\\ttext-overflow: ellipsis;\\n}\\n\\n.option__icon {\\n\\tdisplay: inline-block;\\n\\tmin-width: 30px;\\n\\tbackground-position: left;\\n}\\n\\n.option__icon-img {\\n\\tmargin-right: 14px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".timeslot[data-v-c064bb1a]{display:flex;flex-grow:1;flex-wrap:wrap;max-width:180px}.timeslot .multiselect[data-v-c064bb1a]{width:100%;margin-bottom:5px}.timeslot .multiselect[data-v-c064bb1a] .multiselect__tags:not(:hover):not(:focus):not(:active){border:1px solid rgba(0,0,0,0)}.timeslot input[type=text][data-v-c064bb1a]{width:50%;margin:0;margin-bottom:5px}.timeslot input[type=text].timeslot--start[data-v-c064bb1a]{margin-right:5px;width:calc(50% - 5px)}.timeslot .invalid-hint[data-v-c064bb1a]{color:var(--color-text-maxcontrast)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Checks/RequestTime.vue\"],\"names\":[],\"mappings\":\"AA+FA,2BACC,YAAA,CACA,WAAA,CACA,cAAA,CACA,eAAA,CAEA,wCACC,UAAA,CACA,iBAAA,CAGD,gGACC,8BAAA,CAGD,4CACC,SAAA,CACA,QAAA,CACA,iBAAA,CAEA,4DACC,gBAAA,CACA,qBAAA,CAIF,yCACC,mCAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.timeslot {\\n\\tdisplay: flex;\\n\\tflex-grow: 1;\\n\\tflex-wrap: wrap;\\n\\tmax-width: 180px;\\n\\n\\t.multiselect {\\n\\t\\twidth: 100%;\\n\\t\\tmargin-bottom: 5px;\\n\\t}\\n\\n\\t.multiselect::v-deep .multiselect__tags:not(:hover):not(:focus):not(:active) {\\n\\t\\tborder: 1px solid transparent;\\n\\t}\\n\\n\\tinput[type=text] {\\n\\t\\twidth: 50%;\\n\\t\\tmargin: 0;\\n\\t\\tmargin-bottom: 5px;\\n\\n\\t\\t&.timeslot--start {\\n\\t\\t\\tmargin-right: 5px;\\n\\t\\t\\twidth: calc(50% - 5px);\\n\\t\\t}\\n\\t}\\n\\n\\t.invalid-hint {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".multiselect[data-v-efaa5484],input[type=text][data-v-efaa5484]{width:100%}.option__icon[data-v-efaa5484]{display:inline-block;min-width:30px;background-position:left}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Checks/RequestURL.vue\"],\"names\":[],\"mappings\":\"AA2IA,gEACC,UAAA,CAGD,+BACC,oBAAA,CACA,cAAA,CACA,wBAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.multiselect, input[type='text'] {\\n\\twidth: 100%;\\n}\\n\\n.option__icon {\\n\\tdisplay: inline-block;\\n\\tmin-width: 30px;\\n\\tbackground-position: left;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".event[data-v-01681aaa]{margin-bottom:5px}.isComplex img[data-v-01681aaa]{vertical-align:text-top}.isComplex span[data-v-01681aaa]{padding-top:2px;display:inline-block}.multiselect[data-v-01681aaa]{width:100%;max-width:550px;margin-top:4px}.multiselect[data-v-01681aaa] .multiselect__single{display:flex}.multiselect[data-v-01681aaa]:not(.multiselect--active) .multiselect__tags{background-color:var(--color-main-background) !important;border:1px solid rgba(0,0,0,0)}.multiselect[data-v-01681aaa] .multiselect__tags{background-color:var(--color-main-background) !important;height:auto;min-height:34px}.multiselect[data-v-01681aaa]:not(.multiselect--disabled) .multiselect__tags .multiselect__single{background-image:var(--icon-triangle-s-dark);background-repeat:no-repeat;background-position:right center}input[data-v-01681aaa]{border:1px solid rgba(0,0,0,0)}.option__title[data-v-01681aaa]{margin-left:5px;color:var(--color-main-text)}.option__title_single[data-v-01681aaa]{font-weight:900}.option__icon[data-v-01681aaa]{width:16px;height:16px;filter:var(--background-invert-if-dark)}.eventlist img[data-v-01681aaa],.eventlist .text[data-v-01681aaa]{vertical-align:middle}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Event.vue\"],\"names\":[],\"mappings\":\"AAiFA,wBACC,iBAAA,CAGA,gCACC,uBAAA,CAED,iCACC,eAAA,CACA,oBAAA,CAGF,8BACC,UAAA,CACA,eAAA,CACA,cAAA,CAED,mDACC,YAAA,CAED,2EACC,wDAAA,CACA,8BAAA,CAGD,iDACC,wDAAA,CACA,WAAA,CACA,eAAA,CAGD,kGACC,4CAAA,CACA,2BAAA,CACA,gCAAA,CAGD,uBACC,8BAAA,CAGD,gCACC,eAAA,CACA,4BAAA,CAED,uCACC,eAAA,CAGD,+BACC,UAAA,CACA,WAAA,CACA,uCAAA,CAGD,kEAEC,qBAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.event {\\n\\tmargin-bottom: 5px;\\n}\\n.isComplex {\\n\\timg {\\n\\t\\tvertical-align: text-top;\\n\\t}\\n\\tspan {\\n\\t\\tpadding-top: 2px;\\n\\t\\tdisplay: inline-block;\\n\\t}\\n}\\n.multiselect {\\n\\twidth: 100%;\\n\\tmax-width: 550px;\\n\\tmargin-top: 4px;\\n}\\n.multiselect::v-deep .multiselect__single {\\n\\tdisplay: flex;\\n}\\n.multiselect:not(.multiselect--active)::v-deep .multiselect__tags {\\n\\tbackground-color: var(--color-main-background) !important;\\n\\tborder: 1px solid transparent;\\n}\\n\\n.multiselect::v-deep .multiselect__tags {\\n\\tbackground-color: var(--color-main-background) !important;\\n\\theight: auto;\\n\\tmin-height: 34px;\\n}\\n\\n.multiselect:not(.multiselect--disabled)::v-deep .multiselect__tags .multiselect__single {\\n\\tbackground-image: var(--icon-triangle-s-dark);\\n\\tbackground-repeat: no-repeat;\\n\\tbackground-position: right center;\\n}\\n\\ninput {\\n\\tborder: 1px solid transparent;\\n}\\n\\n.option__title {\\n\\tmargin-left: 5px;\\n\\tcolor: var(--color-main-text);\\n}\\n.option__title_single {\\n\\tfont-weight: 900;\\n}\\n\\n.option__icon {\\n\\twidth: 16px;\\n\\theight: 16px;\\n\\tfilter: var(--background-invert-if-dark);\\n}\\n\\n.eventlist img,\\n.eventlist .text {\\n\\tvertical-align: middle;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions__item[data-v-90eae5ec]{display:flex;flex-wrap:wrap;flex-direction:column;flex-grow:1;margin-left:-1px;padding:10px;border-radius:var(--border-radius-large);margin-right:20px;margin-bottom:20px}.actions__item .icon[data-v-90eae5ec]{display:block;width:100%;height:50px;background-size:50px 50px;background-position:center center;margin-top:10px;margin-bottom:10px;background-repeat:no-repeat}.actions__item__description[data-v-90eae5ec]{text-align:center;flex-grow:1;display:flex;flex-direction:column;align-items:center}.actions__item_options[data-v-90eae5ec]{width:100%;margin-top:10px;padding-left:60px}h3[data-v-90eae5ec],small[data-v-90eae5ec]{padding:6px;display:block}h3[data-v-90eae5ec]{margin:0;padding:0;font-weight:600}small[data-v-90eae5ec]{font-size:10pt;flex-grow:1}.colored[data-v-90eae5ec]:not(.more){background-color:var(--color-primary-element)}.colored:not(.more) h3[data-v-90eae5ec],.colored:not(.more) small[data-v-90eae5ec]{color:var(--color-primary-text)}.actions__item[data-v-90eae5ec]:not(.colored){flex-direction:row}.actions__item:not(.colored) .actions__item__description[data-v-90eae5ec]{padding-top:5px;text-align:left;width:calc(100% - 105px)}.actions__item:not(.colored) .actions__item__description small[data-v-90eae5ec]{padding:0}.actions__item:not(.colored) .icon[data-v-90eae5ec]{width:50px;margin:0;margin-right:10px}.actions__item:not(.colored) .icon[data-v-90eae5ec]:not(.icon-invert){filter:var(--background-invert-if-bright)}.colored .icon-invert[data-v-90eae5ec]{filter:var(--background-invert-if-bright)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/styles/operation.scss\"],\"names\":[],\"mappings\":\"AAAA,gCACC,YAAA,CACA,cAAA,CACA,qBAAA,CACA,WAAA,CACA,gBAAA,CACA,YAAA,CACA,wCAAA,CACA,iBAAA,CACA,kBAAA,CAED,sCACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,yBAAA,CACA,iCAAA,CACA,eAAA,CACA,kBAAA,CACA,2BAAA,CAED,6CACC,iBAAA,CACA,WAAA,CACA,YAAA,CACA,qBAAA,CACA,kBAAA,CAED,wCACC,UAAA,CACA,eAAA,CACA,iBAAA,CAED,2CACC,WAAA,CACA,aAAA,CAED,oBACC,QAAA,CACA,SAAA,CACA,eAAA,CAED,uBACC,cAAA,CACA,WAAA,CAGD,qCACC,6CAAA,CACA,mFACC,+BAAA,CAIF,8CACC,kBAAA,CAEA,0EACC,eAAA,CACA,eAAA,CACA,wBAAA,CACA,gFACC,SAAA,CAGF,oDACC,UAAA,CACA,QAAA,CACA,iBAAA,CACA,sEACC,yCAAA,CAKH,uCACC,yCAAA\",\"sourcesContent\":[\".actions__item {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\tflex-direction: column;\\n\\tflex-grow: 1;\\n\\tmargin-left: -1px;\\n\\tpadding: 10px;\\n\\tborder-radius: var(--border-radius-large);\\n\\tmargin-right: 20px;\\n\\tmargin-bottom: 20px;\\n}\\n.actions__item .icon {\\n\\tdisplay: block;\\n\\twidth: 100%;\\n\\theight: 50px;\\n\\tbackground-size: 50px 50px;\\n\\tbackground-position: center center;\\n\\tmargin-top: 10px;\\n\\tmargin-bottom: 10px;\\n\\tbackground-repeat: no-repeat;\\n}\\n.actions__item__description {\\n\\ttext-align: center;\\n\\tflex-grow: 1;\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\talign-items: center;\\n}\\n.actions__item_options {\\n\\twidth: 100%;\\n\\tmargin-top: 10px;\\n\\tpadding-left: 60px;\\n}\\nh3, small {\\n\\tpadding: 6px;\\n\\tdisplay: block;\\n}\\nh3 {\\n\\tmargin: 0;\\n\\tpadding: 0;\\n\\tfont-weight: 600;\\n}\\nsmall {\\n\\tfont-size: 10pt;\\n\\tflex-grow: 1;\\n}\\n\\n.colored:not(.more) {\\n\\tbackground-color: var(--color-primary-element);\\n\\th3, small {\\n\\t\\tcolor: var(--color-primary-text)\\n\\t}\\n}\\n\\n.actions__item:not(.colored) {\\n\\tflex-direction: row;\\n\\n\\t.actions__item__description {\\n\\t\\tpadding-top: 5px;\\n\\t\\ttext-align: left;\\n\\t\\twidth: calc(100% - 105px);\\n\\t\\tsmall {\\n\\t\\t\\tpadding: 0;\\n\\t\\t}\\n\\t}\\n\\t.icon {\\n\\t\\twidth: 50px;\\n\\t\\tmargin: 0;\\n\\t\\tmargin-right: 10px;\\n\\t\\t&:not(.icon-invert) {\\n\\t\\t\\tfilter: var(--background-invert-if-bright);\\n\\t\\t}\\n\\t}\\n}\\n\\n.colored .icon-invert {\\n\\tfilter: var(--background-invert-if-bright);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".buttons[data-v-a857d7a6]{display:flex;justify-content:end}.buttons button[data-v-a857d7a6]{margin-left:5px}.buttons button[data-v-a857d7a6]:last-child{margin-right:10px}.error-message[data-v-a857d7a6]{float:right;margin-right:10px}.flow-icon[data-v-a857d7a6]{width:44px}.rule[data-v-a857d7a6]{display:flex;flex-wrap:wrap;border-left:5px solid var(--color-primary-element)}.rule .trigger[data-v-a857d7a6],.rule .action[data-v-a857d7a6]{flex-grow:1;min-height:100px;max-width:700px}.rule .action[data-v-a857d7a6]{max-width:400px;position:relative}.rule .icon-confirm[data-v-a857d7a6]{background-position:right 27px;padding-right:20px;margin-right:20px}.trigger p[data-v-a857d7a6],.action p[data-v-a857d7a6]{min-height:34px;display:flex}.trigger p>span[data-v-a857d7a6],.action p>span[data-v-a857d7a6]{min-width:50px;text-align:right;color:var(--color-text-maxcontrast);padding-right:10px;padding-top:6px}.trigger p .multiselect[data-v-a857d7a6],.action p .multiselect[data-v-a857d7a6]{flex-grow:1;max-width:300px}.trigger p:first-child span[data-v-a857d7a6]{padding-top:3px}.check--add[data-v-a857d7a6]{background-position:7px center;background-color:rgba(0,0,0,0);padding-left:6px;margin:0;width:180px;border-radius:var(--border-radius);color:var(--color-text-maxcontrast);font-weight:normal;text-align:left;font-size:1em}@media(max-width: 1400px){.rule[data-v-a857d7a6],.rule .trigger[data-v-a857d7a6],.rule .action[data-v-a857d7a6]{width:100%;max-width:100%}.rule .flow-icon[data-v-a857d7a6]{display:none}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Rule.vue\"],\"names\":[],\"mappings\":\"AA6LA,0BACC,YAAA,CACA,mBAAA,CAEA,iCACC,eAAA,CAED,4CACC,iBAAA,CAIF,gCACC,WAAA,CACA,iBAAA,CAGD,4BACC,UAAA,CAGD,uBACC,YAAA,CACA,cAAA,CACA,kDAAA,CAEA,+DACC,WAAA,CACA,gBAAA,CACA,eAAA,CAED,+BACC,eAAA,CACA,iBAAA,CAED,qCACC,8BAAA,CACA,kBAAA,CACA,iBAAA,CAGF,uDACC,eAAA,CACA,YAAA,CAEA,iEACC,cAAA,CACA,gBAAA,CACA,mCAAA,CACA,kBAAA,CACA,eAAA,CAED,iFACC,WAAA,CACA,eAAA,CAGF,6CACE,eAAA,CAGF,6BACC,8BAAA,CACA,8BAAA,CACA,gBAAA,CACA,QAAA,CACA,WAAA,CACA,kCAAA,CACA,mCAAA,CACA,kBAAA,CACA,eAAA,CACA,aAAA,CAGD,0BAEE,sFACC,UAAA,CACA,cAAA,CAED,kCACC,YAAA,CAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.buttons {\\n\\tdisplay: flex;\\n\\tjustify-content: end;\\n\\n\\tbutton {\\n\\t\\tmargin-left: 5px;\\n\\t}\\n\\tbutton:last-child{\\n\\t\\tmargin-right: 10px;\\n\\t}\\n}\\n\\n.error-message {\\n\\tfloat: right;\\n\\tmargin-right: 10px;\\n}\\n\\n.flow-icon {\\n\\twidth: 44px;\\n}\\n\\n.rule {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\tborder-left: 5px solid var(--color-primary-element);\\n\\n\\t.trigger, .action {\\n\\t\\tflex-grow: 1;\\n\\t\\tmin-height: 100px;\\n\\t\\tmax-width: 700px;\\n\\t}\\n\\t.action {\\n\\t\\tmax-width: 400px;\\n\\t\\tposition: relative;\\n\\t}\\n\\t.icon-confirm {\\n\\t\\tbackground-position: right 27px;\\n\\t\\tpadding-right: 20px;\\n\\t\\tmargin-right: 20px;\\n\\t}\\n}\\n.trigger p, .action p {\\n\\tmin-height: 34px;\\n\\tdisplay: flex;\\n\\n\\t& > span {\\n\\t\\tmin-width: 50px;\\n\\t\\ttext-align: right;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\tpadding-right: 10px;\\n\\t\\tpadding-top: 6px;\\n\\t}\\n\\t.multiselect {\\n\\t\\tflex-grow: 1;\\n\\t\\tmax-width: 300px;\\n\\t}\\n}\\n.trigger p:first-child span {\\n\\t\\tpadding-top: 3px;\\n}\\n\\n.check--add {\\n\\tbackground-position: 7px center;\\n\\tbackground-color: transparent;\\n\\tpadding-left: 6px;\\n\\tmargin: 0;\\n\\twidth: 180px;\\n\\tborder-radius: var(--border-radius);\\n\\tcolor: var(--color-text-maxcontrast);\\n\\tfont-weight: normal;\\n\\ttext-align: left;\\n\\tfont-size: 1em;\\n}\\n\\n@media (max-width:1400px) {\\n\\t.rule {\\n\\t\\t&, .trigger, .action {\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tmax-width: 100%;\\n\\t\\t}\\n\\t\\t.flow-icon {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#workflowengine[data-v-38a7a2e5]{border-bottom:1px solid var(--color-border)}.section[data-v-38a7a2e5]{max-width:100vw}.section h2.configured-flows[data-v-38a7a2e5]{margin-top:50px;margin-bottom:0}.actions[data-v-38a7a2e5]{display:flex;flex-wrap:wrap;max-width:1200px}.actions .actions__item[data-v-38a7a2e5]{max-width:280px;flex-basis:250px}.actions__more[data-v-38a7a2e5]{margin-bottom:10px}.slide-enter-active[data-v-38a7a2e5]{-moz-transition-duration:.3s;-webkit-transition-duration:.3s;-o-transition-duration:.3s;transition-duration:.3s;-moz-transition-timing-function:ease-in;-webkit-transition-timing-function:ease-in;-o-transition-timing-function:ease-in;transition-timing-function:ease-in}.slide-leave-active[data-v-38a7a2e5]{-moz-transition-duration:.3s;-webkit-transition-duration:.3s;-o-transition-duration:.3s;transition-duration:.3s;-moz-transition-timing-function:cubic-bezier(0, 1, 0.5, 1);-webkit-transition-timing-function:cubic-bezier(0, 1, 0.5, 1);-o-transition-timing-function:cubic-bezier(0, 1, 0.5, 1);transition-timing-function:cubic-bezier(0, 1, 0.5, 1)}.slide-enter-to[data-v-38a7a2e5],.slide-leave[data-v-38a7a2e5]{max-height:500px;overflow:hidden}.slide-enter[data-v-38a7a2e5],.slide-leave-to[data-v-38a7a2e5]{overflow:hidden;max-height:0;padding-top:0;padding-bottom:0}.actions__item[data-v-38a7a2e5]{display:flex;flex-wrap:wrap;flex-direction:column;flex-grow:1;margin-left:-1px;padding:10px;border-radius:var(--border-radius-large);margin-right:20px;margin-bottom:20px}.actions__item .icon[data-v-38a7a2e5]{display:block;width:100%;height:50px;background-size:50px 50px;background-position:center center;margin-top:10px;margin-bottom:10px;background-repeat:no-repeat}.actions__item__description[data-v-38a7a2e5]{text-align:center;flex-grow:1;display:flex;flex-direction:column;align-items:center}.actions__item_options[data-v-38a7a2e5]{width:100%;margin-top:10px;padding-left:60px}h3[data-v-38a7a2e5],small[data-v-38a7a2e5]{padding:6px;display:block}h3[data-v-38a7a2e5]{margin:0;padding:0;font-weight:600}small[data-v-38a7a2e5]{font-size:10pt;flex-grow:1}.colored[data-v-38a7a2e5]:not(.more){background-color:var(--color-primary-element)}.colored:not(.more) h3[data-v-38a7a2e5],.colored:not(.more) small[data-v-38a7a2e5]{color:var(--color-primary-text)}.actions__item[data-v-38a7a2e5]:not(.colored){flex-direction:row}.actions__item:not(.colored) .actions__item__description[data-v-38a7a2e5]{padding-top:5px;text-align:left;width:calc(100% - 105px)}.actions__item:not(.colored) .actions__item__description small[data-v-38a7a2e5]{padding:0}.actions__item:not(.colored) .icon[data-v-38a7a2e5]{width:50px;margin:0;margin-right:10px}.actions__item:not(.colored) .icon[data-v-38a7a2e5]:not(.icon-invert){filter:var(--background-invert-if-bright)}.colored .icon-invert[data-v-38a7a2e5]{filter:var(--background-invert-if-bright)}.actions__item.more[data-v-38a7a2e5]{background-color:var(--color-background-dark)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Workflow.vue\",\"webpack://./apps/workflowengine/src/styles/operation.scss\"],\"names\":[],\"mappings\":\"AAkHA,iCACC,2CAAA,CAED,0BACC,eAAA,CAEA,8CACC,eAAA,CACA,eAAA,CAGF,0BACC,YAAA,CACA,cAAA,CACA,gBAAA,CACA,yCACC,eAAA,CACA,gBAAA,CAGF,gCACC,kBAAA,CAGD,qCACC,4BAAA,CACA,+BAAA,CACA,0BAAA,CACA,uBAAA,CACA,uCAAA,CACA,0CAAA,CACA,qCAAA,CACA,kCAAA,CAGD,qCACC,4BAAA,CACA,+BAAA,CACA,0BAAA,CACA,uBAAA,CACA,0DAAA,CACA,6DAAA,CACA,wDAAA,CACA,qDAAA,CAGD,+DACC,gBAAA,CACA,eAAA,CAGD,+DACC,eAAA,CACA,YAAA,CACA,aAAA,CACA,gBAAA,CCzKD,gCACC,YAAA,CACA,cAAA,CACA,qBAAA,CACA,WAAA,CACA,gBAAA,CACA,YAAA,CACA,wCAAA,CACA,iBAAA,CACA,kBAAA,CAED,sCACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,yBAAA,CACA,iCAAA,CACA,eAAA,CACA,kBAAA,CACA,2BAAA,CAED,6CACC,iBAAA,CACA,WAAA,CACA,YAAA,CACA,qBAAA,CACA,kBAAA,CAED,wCACC,UAAA,CACA,eAAA,CACA,iBAAA,CAED,2CACC,WAAA,CACA,aAAA,CAED,oBACC,QAAA,CACA,SAAA,CACA,eAAA,CAED,uBACC,cAAA,CACA,WAAA,CAGD,qCACC,6CAAA,CACA,mFACC,+BAAA,CAIF,8CACC,kBAAA,CAEA,0EACC,eAAA,CACA,eAAA,CACA,wBAAA,CACA,gFACC,SAAA,CAGF,oDACC,UAAA,CACA,QAAA,CACA,iBAAA,CACA,sEACC,yCAAA,CAKH,uCACC,yCAAA,CDkGD,qCACC,6CAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n#workflowengine {\\n\\tborder-bottom: 1px solid var(--color-border);\\n}\\n.section {\\n\\tmax-width: 100vw;\\n\\n\\th2.configured-flows {\\n\\t\\tmargin-top: 50px;\\n\\t\\tmargin-bottom: 0;\\n\\t}\\n}\\n.actions {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\tmax-width: 1200px;\\n\\t.actions__item {\\n\\t\\tmax-width: 280px;\\n\\t\\tflex-basis: 250px;\\n\\t}\\n}\\n.actions__more {\\n\\tmargin-bottom: 10px;\\n}\\n\\n.slide-enter-active {\\n\\t-moz-transition-duration: 0.3s;\\n\\t-webkit-transition-duration: 0.3s;\\n\\t-o-transition-duration: 0.3s;\\n\\ttransition-duration: 0.3s;\\n\\t-moz-transition-timing-function: ease-in;\\n\\t-webkit-transition-timing-function: ease-in;\\n\\t-o-transition-timing-function: ease-in;\\n\\ttransition-timing-function: ease-in;\\n}\\n\\n.slide-leave-active {\\n\\t-moz-transition-duration: 0.3s;\\n\\t-webkit-transition-duration: 0.3s;\\n\\t-o-transition-duration: 0.3s;\\n\\ttransition-duration: 0.3s;\\n\\t-moz-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\\n\\t-webkit-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\\n\\t-o-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\\n\\ttransition-timing-function: cubic-bezier(0, 1, 0.5, 1);\\n}\\n\\n.slide-enter-to, .slide-leave {\\n\\tmax-height: 500px;\\n\\toverflow: hidden;\\n}\\n\\n.slide-enter, .slide-leave-to {\\n\\toverflow: hidden;\\n\\tmax-height: 0;\\n\\tpadding-top: 0;\\n\\tpadding-bottom: 0;\\n}\\n\\n@import \\\"./../styles/operation\\\";\\n\\n.actions__item.more {\\n\\tbackground-color: var(--color-background-dark);\\n}\\n\",\".actions__item {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\tflex-direction: column;\\n\\tflex-grow: 1;\\n\\tmargin-left: -1px;\\n\\tpadding: 10px;\\n\\tborder-radius: var(--border-radius-large);\\n\\tmargin-right: 20px;\\n\\tmargin-bottom: 20px;\\n}\\n.actions__item .icon {\\n\\tdisplay: block;\\n\\twidth: 100%;\\n\\theight: 50px;\\n\\tbackground-size: 50px 50px;\\n\\tbackground-position: center center;\\n\\tmargin-top: 10px;\\n\\tmargin-bottom: 10px;\\n\\tbackground-repeat: no-repeat;\\n}\\n.actions__item__description {\\n\\ttext-align: center;\\n\\tflex-grow: 1;\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\talign-items: center;\\n}\\n.actions__item_options {\\n\\twidth: 100%;\\n\\tmargin-top: 10px;\\n\\tpadding-left: 60px;\\n}\\nh3, small {\\n\\tpadding: 6px;\\n\\tdisplay: block;\\n}\\nh3 {\\n\\tmargin: 0;\\n\\tpadding: 0;\\n\\tfont-weight: 600;\\n}\\nsmall {\\n\\tfont-size: 10pt;\\n\\tflex-grow: 1;\\n}\\n\\n.colored:not(.more) {\\n\\tbackground-color: var(--color-primary-element);\\n\\th3, small {\\n\\t\\tcolor: var(--color-primary-text)\\n\\t}\\n}\\n\\n.actions__item:not(.colored) {\\n\\tflex-direction: row;\\n\\n\\t.actions__item__description {\\n\\t\\tpadding-top: 5px;\\n\\t\\ttext-align: left;\\n\\t\\twidth: calc(100% - 105px);\\n\\t\\tsmall {\\n\\t\\t\\tpadding: 0;\\n\\t\\t}\\n\\t}\\n\\t.icon {\\n\\t\\twidth: 50px;\\n\\t\\tmargin: 0;\\n\\t\\tmargin-right: 10px;\\n\\t\\t&:not(.icon-invert) {\\n\\t\\t\\tfilter: var(--background-invert-if-bright);\\n\\t\\t}\\n\\t}\\n}\\n\\n.colored .icon-invert {\\n\\tfilter: var(--background-invert-if-bright);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.multiselect[data-v-bd5cb750], input[type='text'][data-v-bd5cb750] {\\n\\twidth: 100%;\\n}\\n.multiselect .multiselect__content-wrapper li>span[data-v-bd5cb750] {\\n\\tdisplay: flex;\\n\\twhite-space: nowrap;\\n\\toverflow: hidden;\\n\\ttext-overflow: ellipsis;\\n}\\n.multiselect[data-v-bd5cb750] .multiselect__single {\\n\\twidth: 100%;\\n\\tdisplay: flex;\\n\\twhite-space: nowrap;\\n\\toverflow: hidden;\\n\\ttext-overflow: ellipsis;\\n}\\n.option__icon[data-v-bd5cb750] {\\n\\tdisplay: inline-block;\\n\\tmin-width: 30px;\\n\\tbackground-position: left;\\n}\\n.option__title[data-v-bd5cb750] {\\n\\twhite-space: nowrap;\\n\\toverflow: hidden;\\n\\ttext-overflow: ellipsis;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Checks/RequestUserAgent.vue\"],\"names\":[],\"mappings\":\";AA8HA;CACA,WAAA;AACA;AAEA;CACA,aAAA;CACA,mBAAA;CACA,gBAAA;CACA,uBAAA;AACA;AACA;CACA,WAAA;CACA,aAAA;CACA,mBAAA;CACA,gBAAA;CACA,uBAAA;AACA;AACA;CACA,qBAAA;CACA,eAAA;CACA,yBAAA;AACA;AACA;CACA,mBAAA;CACA,gBAAA;CACA,uBAAA;AACA\",\"sourcesContent\":[\"<!--\\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\\n -\\n - @author Julius Härtl <jus@bitgrid.net>\\n -\\n - @license GNU AGPL version 3 or any later version\\n -\\n - This program is free software: you can redistribute it and/or modify\\n - it under the terms of the GNU Affero General Public License as\\n - published by the Free Software Foundation, either version 3 of the\\n - License, or (at your option) any later version.\\n -\\n - This program is distributed in the hope that it will be useful,\\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n - GNU Affero General Public License for more details.\\n -\\n - You should have received a copy of the GNU Affero General Public License\\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\\n -\\n -->\\n\\n<template>\\n\\t<div>\\n\\t\\t<NcMultiselect :value=\\\"currentValue\\\"\\n\\t\\t\\t:placeholder=\\\"t('workflowengine', 'Select a user agent')\\\"\\n\\t\\t\\tlabel=\\\"label\\\"\\n\\t\\t\\ttrack-by=\\\"pattern\\\"\\n\\t\\t\\t:options=\\\"options\\\"\\n\\t\\t\\t:multiple=\\\"false\\\"\\n\\t\\t\\t:tagging=\\\"false\\\"\\n\\t\\t\\t@input=\\\"setValue\\\">\\n\\t\\t\\t<template slot=\\\"singleLabel\\\" slot-scope=\\\"props\\\">\\n\\t\\t\\t\\t<span class=\\\"option__icon\\\" :class=\\\"props.option.icon\\\" />\\n\\t\\t\\t\\t<!-- v-html can be used here as t() always passes our translated strings though DOMPurify.sanitize -->\\n\\t\\t\\t\\t<!-- eslint-disable-next-line vue/no-v-html -->\\n\\t\\t\\t\\t<span class=\\\"option__title option__title_single\\\" v-html=\\\"props.option.label\\\" />\\n\\t\\t\\t</template>\\n\\t\\t\\t<template slot=\\\"option\\\" slot-scope=\\\"props\\\">\\n\\t\\t\\t\\t<span class=\\\"option__icon\\\" :class=\\\"props.option.icon\\\" />\\n\\t\\t\\t\\t<!-- eslint-disable-next-line vue/no-v-html -->\\n\\t\\t\\t\\t<span v-if=\\\"props.option.$groupLabel\\\" class=\\\"option__title\\\" v-html=\\\"props.option.$groupLabel\\\" />\\n\\t\\t\\t\\t<!-- eslint-disable-next-line vue/no-v-html -->\\n\\t\\t\\t\\t<span v-else class=\\\"option__title\\\" v-html=\\\"props.option.label\\\" />\\n\\t\\t\\t</template>\\n\\t\\t</NcMultiselect>\\n\\t\\t<input v-if=\\\"!isPredefined\\\"\\n\\t\\t\\ttype=\\\"text\\\"\\n\\t\\t\\t:value=\\\"currentValue.pattern\\\"\\n\\t\\t\\t@input=\\\"updateCustom\\\">\\n\\t</div>\\n</template>\\n\\n<script>\\nimport NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect'\\nimport valueMixin from '../../mixins/valueMixin'\\n\\nexport default {\\n\\tname: 'RequestUserAgent',\\n\\tcomponents: {\\n\\t\\tNcMultiselect,\\n\\t},\\n\\tmixins: [\\n\\t\\tvalueMixin,\\n\\t],\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\tnewValue: '',\\n\\t\\t\\tpredefinedTypes: [\\n\\t\\t\\t\\t{ pattern: 'android', label: t('workflowengine', 'Android client'), icon: 'icon-phone' },\\n\\t\\t\\t\\t{ pattern: 'ios', label: t('workflowengine', 'iOS client'), icon: 'icon-phone' },\\n\\t\\t\\t\\t{ pattern: 'desktop', label: t('workflowengine', 'Desktop client'), icon: 'icon-desktop' },\\n\\t\\t\\t\\t{ pattern: 'mail', label: t('workflowengine', 'Thunderbird & Outlook addons'), icon: 'icon-mail' },\\n\\t\\t\\t],\\n\\t\\t}\\n\\t},\\n\\tcomputed: {\\n\\t\\toptions() {\\n\\t\\t\\treturn [...this.predefinedTypes, this.customValue]\\n\\t\\t},\\n\\t\\tmatchingPredefined() {\\n\\t\\t\\treturn this.predefinedTypes\\n\\t\\t\\t\\t.find((type) => this.newValue === type.pattern)\\n\\t\\t},\\n\\t\\tisPredefined() {\\n\\t\\t\\treturn !!this.matchingPredefined\\n\\t\\t},\\n\\t\\tcustomValue() {\\n\\t\\t\\treturn {\\n\\t\\t\\t\\ticon: 'icon-settings-dark',\\n\\t\\t\\t\\tlabel: t('workflowengine', 'Custom user agent'),\\n\\t\\t\\t\\tpattern: '',\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tcurrentValue() {\\n\\t\\t\\tif (this.matchingPredefined) {\\n\\t\\t\\t\\treturn this.matchingPredefined\\n\\t\\t\\t}\\n\\t\\t\\treturn {\\n\\t\\t\\t\\ticon: 'icon-settings-dark',\\n\\t\\t\\t\\tlabel: t('workflowengine', 'Custom user agent'),\\n\\t\\t\\t\\tpattern: this.newValue,\\n\\t\\t\\t}\\n\\t\\t},\\n\\t},\\n\\tmethods: {\\n\\t\\tvalidateRegex(string) {\\n\\t\\t\\tconst regexRegex = /^\\\\/(.*)\\\\/([gui]{0,3})$/\\n\\t\\t\\tconst result = regexRegex.exec(string)\\n\\t\\t\\treturn result !== null\\n\\t\\t},\\n\\t\\tsetValue(value) {\\n\\t\\t\\t// TODO: check if value requires a regex and set the check operator according to that\\n\\t\\t\\tif (value !== null) {\\n\\t\\t\\t\\tthis.newValue = value.pattern\\n\\t\\t\\t\\tthis.$emit('input', this.newValue)\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tupdateCustom(event) {\\n\\t\\t\\tthis.newValue = event.target.value\\n\\t\\t\\tthis.$emit('input', this.newValue)\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n<style scoped>\\n\\t.multiselect, input[type='text'] {\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t.multiselect .multiselect__content-wrapper li>span {\\n\\t\\tdisplay: flex;\\n\\t\\twhite-space: nowrap;\\n\\t\\toverflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n\\t.multiselect::v-deep .multiselect__single {\\n\\t\\twidth: 100%;\\n\\t\\tdisplay: flex;\\n\\t\\twhite-space: nowrap;\\n\\t\\toverflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n\\t.option__icon {\\n\\t\\tdisplay: inline-block;\\n\\t\\tmin-width: 30px;\\n\\t\\tbackground-position: left;\\n\\t}\\n\\t.option__title {\\n\\t\\twhite-space: nowrap;\\n\\t\\toverflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.multiselect[data-v-4bcec2a5] {\\n\\twidth: 100%;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Checks/RequestUserGroup.vue\"],\"names\":[],\"mappings\":\";AA4GA;CACA,WAAA;AACA\",\"sourcesContent\":[\"<!--\\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\\n -\\n - @author Julius Härtl <jus@bitgrid.net>\\n -\\n - @license GNU AGPL version 3 or any later version\\n -\\n - This program is free software: you can redistribute it and/or modify\\n - it under the terms of the GNU Affero General Public License as\\n - published by the Free Software Foundation, either version 3 of the\\n - License, or (at your option) any later version.\\n -\\n - This program is distributed in the hope that it will be useful,\\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n - GNU Affero General Public License for more details.\\n -\\n - You should have received a copy of the GNU Affero General Public License\\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\\n -\\n -->\\n\\n<template>\\n\\t<div>\\n\\t\\t<NcMultiselect :value=\\\"currentValue\\\"\\n\\t\\t\\t:loading=\\\"status.isLoading && groups.length === 0\\\"\\n\\t\\t\\t:options=\\\"groups\\\"\\n\\t\\t\\t:multiple=\\\"false\\\"\\n\\t\\t\\tlabel=\\\"displayname\\\"\\n\\t\\t\\ttrack-by=\\\"id\\\"\\n\\t\\t\\t@search-change=\\\"searchAsync\\\"\\n\\t\\t\\t@input=\\\"(value) => $emit('input', value.id)\\\" />\\n\\t</div>\\n</template>\\n\\n<script>\\nimport NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect'\\nimport axios from '@nextcloud/axios'\\nimport { generateOcsUrl } from '@nextcloud/router'\\n\\nconst groups = []\\nconst status = {\\n\\tisLoading: false,\\n}\\n\\nexport default {\\n\\tname: 'RequestUserGroup',\\n\\tcomponents: {\\n\\t\\tNcMultiselect,\\n\\t},\\n\\tprops: {\\n\\t\\tvalue: {\\n\\t\\t\\ttype: String,\\n\\t\\t\\tdefault: '',\\n\\t\\t},\\n\\t\\tcheck: {\\n\\t\\t\\ttype: Object,\\n\\t\\t\\tdefault: () => { return {} },\\n\\t\\t},\\n\\t},\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\tgroups,\\n\\t\\t\\tstatus,\\n\\t\\t}\\n\\t},\\n\\tcomputed: {\\n\\t\\tcurrentValue() {\\n\\t\\t\\treturn this.groups.find(group => group.id === this.value) || null\\n\\t\\t},\\n\\t},\\n\\tasync mounted() {\\n\\t\\tif (this.groups.length === 0) {\\n\\t\\t\\tawait this.searchAsync('')\\n\\t\\t}\\n\\t\\tif (this.currentValue === null) {\\n\\t\\t\\tawait this.searchAsync(this.value)\\n\\t\\t}\\n\\t},\\n\\tmethods: {\\n\\t\\tsearchAsync(searchQuery) {\\n\\t\\t\\tif (this.status.isLoading) {\\n\\t\\t\\t\\treturn\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.status.isLoading = true\\n\\t\\t\\treturn axios.get(generateOcsUrl('cloud/groups/details?limit=20&search={searchQuery}', { searchQuery })).then((response) => {\\n\\t\\t\\t\\tresponse.data.ocs.data.groups.forEach((group) => {\\n\\t\\t\\t\\t\\tthis.addGroup({\\n\\t\\t\\t\\t\\t\\tid: group.id,\\n\\t\\t\\t\\t\\t\\tdisplayname: group.displayname,\\n\\t\\t\\t\\t\\t})\\n\\t\\t\\t\\t})\\n\\t\\t\\t\\tthis.status.isLoading = false\\n\\t\\t\\t}, (error) => {\\n\\t\\t\\t\\tconsole.error('Error while loading group list', error.response)\\n\\t\\t\\t})\\n\\t\\t},\\n\\t\\taddGroup(group) {\\n\\t\\t\\tconst index = this.groups.findIndex((item) => item.id === group.id)\\n\\t\\t\\tif (index === -1) {\\n\\t\\t\\t\\tthis.groups.push(group)\\n\\t\\t\\t}\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n<style scoped>\\n\\t.multiselect {\\n\\t\\twidth: 100%;\\n\\t}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 30094,\n\t\"./hi.js\": 30094,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 8318;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t8318: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], function() { return __webpack_require__(36620); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","scopeValue","loadState","getApiUrl","url","generateOcsUrl","Vue","Vuex","Store","state","rules","scope","appstoreEnabled","operations","plugins","checks","operators","entities","events","map","entity","event","id","eventName","flat","mutations","addRule","rule","push","valid","updateRule","index","findIndex","item","newRule","Object","assign","removeRule","splice","addPluginCheck","plugin","class","addPluginOperator","color","actions","fetchRules","context","axios","data","values","ocs","forEach","commit","createNewRule","isComplex","fixedEntity","find","Date","getTime","name","operator","value","operation","JSON","parse","pushUpdateRule","confirmPassword","result","deleteRule","setValid","getters","getRules","filter","sort","rule1","rule2","getOperationForRule","getEntityForOperation","getEventsForOperation","getChecksForEntity","check","supportedEntities","indexOf","length","reduce","obj","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","icon","_v","_s","triggerHint","currentEvent","allEvents","on","updateEvent","scopedSlots","_u","key","fn","ref","isOpen","_l","displayName","_e","props","option","directives","rawName","expression","showDelete","t","updateCheck","model","callback","$$v","currentOption","currentOperator","currentComponent","component","tag","$event","validate","$set","invalid","valuePlaceholder","domProps","target","composing","deleteVisible","$emit","colored","style","backgroundColor","iconClass","backgroundImage","description","_t","borderLeftColor","removeCheck","onAddFilter","updateOperation","dirty","cancelRule","ruleStatus","type","saveRule","proxy","title","error","workflowDocUrl","nativeOn","appstoreUrl","showMoreOperations","regexRegex","regexIPv4","regexIPv6","String","default","newValue","watch","immediate","handler","updateInternalValue","methods","currentValue","setValue","iconUrl","label","isPredefined","pattern","updateCustom","update","stringOrRegexOperators","placeholder","string","exec","FileMimeType","match","validateIPv4","FileSystemTag","$groupLabel","timezones","status","isLoading","groups","searchAsync","RequestURL","RequestTime","RequestUserAgent","RequestUserGroup","FileChecks","RequestChecks","window","OCA","WorkflowEngine","registerCheck","Plugin","store","registerOperator","ShippedChecks","checkPlugin","Settings","$mount","___CSS_LOADER_EXPORT___","module","webpackContext","req","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","resolve","exports","__webpack_module_cache__","moduleId","cachedModule","undefined","loaded","__webpack_modules__","call","m","amdD","amdO","O","chunkIds","priority","notFulfilled","Infinity","i","fulfilled","j","every","r","n","getter","__esModule","d","a","definition","defineProperty","enumerable","get","g","globalThis","Function","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","document","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","bind","nc","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file +{"version":3,"file":"workflowengine-workflowengine.js?v=f2b72e4b17490ddf5a5c","mappings":";gBAAIA,kGC2BEC,EAAsD,KAAzCC,EAAAA,EAAAA,WAAU,iBAAkB,SAAiB,SAAW,OAErEC,EAAY,SAACC,GAClB,OAAOC,EAAAA,EAAAA,gBAAe,oDAAqD,CAAEJ,WAAAA,IAAgBG,EAAM,cACnG,ygCCGDE,EAAAA,GAAAA,IAAQC,EAAAA,IAER,IAgJA,EAhJc,IAAIC,EAAAA,GAAM,CACvBC,MAAO,CACNC,MAAO,GACPC,OAAOT,EAAAA,EAAAA,WAAU,iBAAkB,SACnCU,iBAAiBV,EAAAA,EAAAA,WAAU,iBAAkB,mBAC7CW,YAAYX,EAAAA,EAAAA,WAAU,iBAAkB,aAExCY,QAASR,EAAAA,GAAAA,WAAe,CACvBS,OAAQ,CAAC,EACTC,UAAW,CAAC,IAGbC,UAAUf,EAAAA,EAAAA,WAAU,iBAAkB,YACtCgB,QAAQhB,EAAAA,EAAAA,WAAU,iBAAkB,YAClCiB,KAAI,SAACC,GAAD,OAAYA,EAAOF,OAAOC,KAAI,SAAAE,GAClC,UACCC,GAAI,GAAF,OAAKF,EAAOE,GAAZ,aAAmBD,EAAME,WAC3BH,OAAAA,GACGC,EAEJ,GANI,IAMDG,OACLT,QAAQb,EAAAA,EAAAA,WAAU,iBAAkB,WAErCuB,UAAW,CACVC,QADU,SACFjB,EAAOkB,GACdlB,EAAMC,MAAMkB,KAAZ,OAAsBD,GAAtB,IAA4BE,OAAO,IACnC,EACDC,WAJU,SAICrB,EAAOkB,GACjB,IAAMI,EAAQtB,EAAMC,MAAMsB,WAAU,SAACC,GAAD,OAAUN,EAAKL,KAAOW,EAAKX,EAA3B,IAC9BY,EAAUC,OAAOC,OAAO,CAAC,EAAGT,GAClCrB,EAAAA,GAAAA,IAAQG,EAAMC,MAAOqB,EAAOG,EAC5B,EACDG,WATU,SASC5B,EAAOkB,GACjB,IAAMI,EAAQtB,EAAMC,MAAMsB,WAAU,SAACC,GAAD,OAAUN,EAAKL,KAAOW,EAAKX,EAA3B,IACpCb,EAAMC,MAAM4B,OAAOP,EAAO,EAC1B,EACDQ,eAbU,SAaK9B,EAAO+B,GACrBlC,EAAAA,GAAAA,IAAQG,EAAMK,QAAQC,OAAQyB,EAAOC,MAAOD,EAC5C,EACDE,kBAhBU,SAgBQjC,EAAO+B,GACxBA,EAASL,OAAOC,OACf,CAAEO,MAAO,gCACTH,EAAQ/B,EAAMI,WAAW2B,EAAOlB,KAAO,CAAC,QACE,IAAhCb,EAAMI,WAAW2B,EAAOlB,KAClChB,EAAAA,GAAAA,IAAQG,EAAMI,WAAY2B,EAAOlB,GAAIkB,EAEtC,GAEFI,QAAS,CACFC,WADE,SACSC,GAAS,uJACFC,EAAAA,QAAAA,IAAU5C,EAAU,KADlB,gBACjB6C,EADiB,EACjBA,KACRb,OAAOc,OAAOD,EAAKE,IAAIF,MAAMxB,OAAO2B,SAAQ,SAACxB,GAC5CmB,EAAQM,OAAO,UAAWzB,EAC1B,IAJwB,4CAKzB,EACD0B,cAPQ,SAOMP,EAASnB,GACtB,IAAIP,EAAS,KACTF,EAAS,IACU,IAAnBS,EAAK2B,WAA4C,KAArB3B,EAAK4B,cAGpCrC,EAAS,EADTE,GADAA,EAAS0B,EAAQrC,MAAMQ,SAASuC,MAAK,SAACvB,GAAD,OAAUN,EAAKV,UAAYU,EAAKV,SAAS,KAAOgB,EAAKX,EAArD,MAClBa,OAAOc,OAAOH,EAAQrC,MAAMQ,UAAU,IACxCC,OAAO,GAAGK,YAG5BuB,EAAQM,OAAO,UAAW,CACzB9B,KAAM,IAAImC,MAAOC,UACjBjB,MAAOd,EAAKL,GACZF,OAAQA,EAASA,EAAOE,GAAKK,EAAK4B,YAClCrC,OAAAA,EACAyC,KAAM,GACN5C,OAAQ,CACP,CAAE0B,MAAO,KAAMmB,SAAU,KAAMC,MAAO,KAEvCC,UAAWnC,EAAKmC,WAAa,IAE9B,EACDhC,WA5BQ,SA4BGgB,EAASnB,GACnBmB,EAAQM,OAAO,aAAf,OACIzB,GADJ,IAECT,OAA+B,iBAAhBS,EAAKT,OAAsB6C,KAAKC,MAAMrC,EAAKT,QAAUS,EAAKT,SAE1E,EACDmB,WAlCQ,SAkCGS,EAASnB,GACnBmB,EAAQM,OAAO,aAAczB,EAC7B,EACKsC,eArCE,SAqCanB,EAASnB,GAAM,wIACP,IAAxBmB,EAAQrC,MAAME,MADiB,iCAE5BuD,EAAAA,EAAAA,mBAF4B,YAK/BvC,EAAKL,GAAK,GALqB,gCAMnByB,EAAAA,QAAAA,KAAW5C,EAAU,IAAKwB,GANP,OAMlCwC,EANkC,+CAQnBpB,EAAAA,QAAAA,IAAU5C,EAAU,IAAD,OAAKwB,EAAKL,KAAOK,GARjB,QAQlCwC,EARkC,eAUnC7D,EAAAA,GAAAA,IAAQqB,EAAM,KAAMwC,EAAOnB,KAAKE,IAAIF,KAAK1B,IACzCwB,EAAQM,OAAO,aAAczB,GAXM,6CAYnC,EACKyC,WAlDE,SAkDStB,EAASnB,GAAM,gJACzBuC,EAAAA,EAAAA,mBADyB,uBAEzBnB,EAAAA,QAAAA,OAAa5C,EAAU,IAAD,OAAKwB,EAAKL,MAFP,OAG/BwB,EAAQM,OAAO,aAAczB,GAHE,4CAI/B,EACD0C,SAvDQ,SAuDCvB,EAvDD,GAuD2B,IAAfnB,EAAe,EAAfA,KAAME,EAAS,EAATA,MACzBF,EAAKE,MAAQA,EACbiB,EAAQM,OAAO,aAAczB,EAC7B,GAEF2C,QAAS,CACRC,SADQ,SACC9D,GACR,OAAOA,EAAMC,MAAM8D,QAAO,SAAC7C,GAAD,YAAkD,IAAjClB,EAAMI,WAAWc,EAAKc,MAAvC,IAA+DgC,MAAK,SAACC,EAAOC,GACrG,OAAOD,EAAMpD,GAAKqD,EAAMrD,IAAMqD,EAAMlC,MAAQiC,EAAMjC,KAClD,GACD,EACDmC,oBANQ,SAMYnE,GACnB,OAAO,SAACkB,GAAD,OAAUlB,EAAMI,WAAWc,EAAKc,MAAhC,CACP,EACDoC,sBATQ,SAScpE,GACrB,OAAO,SAACqD,GAAD,OAAerD,EAAMQ,SAASuC,MAAK,SAACpC,GAAD,OAAY0C,EAAUP,cAAgBnC,EAAOE,EAA7C,GAAnC,CACP,EACDwD,sBAZQ,SAYcrE,GACrB,OAAO,SAACqD,GAAD,OAAerD,EAAMS,MAArB,CACP,EAQD6D,mBAtBQ,SAsBWtE,GAClB,OAAO,SAACW,GACP,OAAOe,OAAOc,OAAOxC,EAAMM,QACzByD,QAAO,SAACQ,GAAD,OAAWA,EAAMC,kBAAkBC,QAAQ9D,IAAW,GAAwC,IAAnC4D,EAAMC,kBAAkBE,MAAnF,IACPhE,KAAI,SAAC6D,GAAD,OAAWvE,EAAMK,QAAQC,OAAOiE,EAAM1D,GAAtC,IACJ8D,QAAO,SAACC,EAAKpD,GAEb,OADAoD,EAAIpD,EAAKQ,OAASR,EACXoD,CACP,GAAE,CAAC,EACL,CACD,qJChL+K,ECgClL,CACA,aACA,YACA,mBAEA,OACA,MACA,YACA,cAGA,UACA,OADA,WAEA,gEACA,EACA,UAJA,WAKA,yDACA,EACA,UAPA,WAQA,gEACA,EACA,aAVA,WAUA,WACA,wHACA,GAEA,SACA,YADA,SACA,GACA,iBAIA,IAEA,EAFA,mBACA,8FAGA,EADA,WACA,yCAEA,KAGA,gCACA,qHACA,8BAZA,MAFA,kEAeA,qIChEIC,EAAU,CAAC,EAEfA,EAAQC,kBAAoB,IAC5BD,EAAQE,cAAgB,IAElBF,EAAQG,OAAS,SAAc,KAAM,QAE3CH,EAAQI,OAAS,IACjBJ,EAAQK,mBAAqB,IAEhB,IAAI,IAASL,GAKJ,KAAW,YAAiB,WALlD,eCFA,GAXgB,OACd,GCTW,WAAa,IAAIM,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACE,YAAY,SAAS,CAAEN,EAAI9B,UAAUR,WAA2C,KAA9BsC,EAAI9B,UAAUP,YAAoByC,EAAG,MAAM,CAACE,YAAY,aAAa,CAACF,EAAG,MAAM,CAACE,YAAY,eAAeC,MAAM,CAAC,IAAMP,EAAIxE,OAAOgF,KAAK,IAAM,MAAMR,EAAIS,GAAG,KAAKL,EAAG,OAAO,CAACE,YAAY,sCAAsC,CAACN,EAAIS,GAAGT,EAAIU,GAAGV,EAAI9B,UAAUyC,kBAAkBP,EAAG,gBAAgB,CAACG,MAAM,CAAC,MAAQP,EAAIY,aAAa,QAAUZ,EAAIa,UAAU,WAAW,KAAK,UAAW,EAAK,cAAa,EAAM,SAAWb,EAAIa,UAAUtB,QAAU,GAAGuB,GAAG,CAAC,MAAQd,EAAIe,aAAaC,YAAYhB,EAAIiB,GAAG,CAAC,CAACC,IAAI,YAAYC,GAAG,SAASC,GAC3pB,IAAI/D,EAAS+D,EAAI/D,OACbgE,EAASD,EAAIC,OACjB,MAAO,CAAEhE,EAAOkC,SAAW8B,EAAQjB,EAAG,MAAM,CAACE,YAAY,aAAa,CAACF,EAAG,MAAM,CAACE,YAAY,eAAeC,MAAM,CAAC,IAAMlD,EAAO,GAAG7B,OAAOgF,KAAK,IAAM,MAAMR,EAAIS,GAAG,KAAKT,EAAIsB,GAAG,GAAS,SAASrD,EAAM9B,GAAO,OAAOiE,EAAG,OAAO,CAACc,IAAIjD,EAAMvC,GAAG4E,YAAY,2CAA2C,CAACN,EAAIS,GAAGT,EAAIU,GAAGzC,EAAMsD,aAAa,KAAMpF,EAAM,EAAIkB,EAAOkC,OAAQa,EAAG,OAAO,CAACJ,EAAIS,GAAG,QAAQT,EAAIwB,MAAM,KAAI,GAAGxB,EAAIwB,KAAK,GAAG,CAACN,IAAI,SAASC,GAAG,SAASM,GAAO,MAAO,CAACrB,EAAG,MAAM,CAACE,YAAY,eAAeC,MAAM,CAAC,IAAMkB,EAAMC,OAAOlG,OAAOgF,KAAK,IAAM,MAAMR,EAAIS,GAAG,KAAKL,EAAG,OAAO,CAACE,YAAY,iBAAiB,CAACN,EAAIS,GAAGT,EAAIU,GAAGe,EAAMC,OAAOH,gBAAgB,QAAQ,EAAE,GAC/mB,IDQpB,EACA,KACA,WACA,MAI8B,2BEnBkJ,ECgDlL,CACA,aACA,YACA,mBACA,cACA,mBAEA,YACA,kBAEA,OACA,OACA,YACA,aAEA,MACA,YACA,cAGA,KApBA,WAqBA,OACA,iBACA,mBACA,qBACA,WACA,SAEA,EACA,UACA,OADA,WAEA,+DACA,EACA,UAJA,WAKA,gCACA,sDACA,2BACA,cAEA,CACA,EACA,iBAZA,WAaA,0BACA,gDADA,EAEA,EACA,iBAhBA,WAiBA,0DACA,2CAEA,EACA,GAEA,OACA,iBADA,WAEA,eACA,GAEA,QAzDA,WAyDA,WACA,wCACA,iDACA,8FAEA,yBACA,uEAEA,eACA,EACA,SACA,WADA,WAEA,qBACA,EACA,WAJA,WAKA,qBACA,EACA,SAPA,WAQA,cACA,kDACA,sDAGA,+BACA,iCACA,EACA,YAhBA,WAgBA,WACA,gFACA,sDACA,wCAGA,0CAEA,kDAEA,gBAEA,+BACA,eCrII,EAAU,CAAC,EAEf,EAAQ5B,kBAAoB,IAC5B,EAAQC,cAAgB,IAElB,EAAQC,OAAS,SAAc,KAAM,QAE3C,EAAQC,OAAS,IACjB,EAAQC,mBAAqB,IAEhB,IAAI,IAAS,GAKJ,KAAW,YAAiB,WALlD,ICFA,IAXgB,OACd,GCTW,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACuB,WAAW,CAAC,CAAC5D,KAAK,gBAAgB6D,QAAQ,kBAAkB3D,MAAO+B,EAAc,WAAE6B,WAAW,eAAevB,YAAY,QAAQQ,GAAG,CAAC,MAAQd,EAAI8B,aAAa,CAAC1B,EAAG,gBAAgB,CAACgB,IAAI,gBAAgBb,MAAM,CAAC,QAAUP,EAAIN,QAAQ,MAAQ,OAAO,WAAW,QAAQ,eAAc,EAAM,YAAcM,EAAI+B,EAAE,iBAAkB,oBAAoBjB,GAAG,CAAC,MAAQd,EAAIgC,aAAaC,MAAM,CAAChE,MAAO+B,EAAiB,cAAEkC,SAAS,SAAUC,GAAMnC,EAAIoC,cAAcD,CAAG,EAAEN,WAAW,mBAAmB7B,EAAIS,GAAG,KAAKL,EAAG,gBAAgB,CAACE,YAAY,aAAaC,MAAM,CAAC,UAAYP,EAAIoC,cAAc,QAAUpC,EAAI5E,UAAU,MAAQ,OAAO,WAAW,WAAW,eAAc,EAAM,YAAc4E,EAAI+B,EAAE,iBAAkB,wBAAwBjB,GAAG,CAAC,MAAQd,EAAIgC,aAAaC,MAAM,CAAChE,MAAO+B,EAAmB,gBAAEkC,SAAS,SAAUC,GAAMnC,EAAIqC,gBAAgBF,CAAG,EAAEN,WAAW,qBAAqB7B,EAAIS,GAAG,KAAMT,EAAIqC,iBAAmBrC,EAAIsC,iBAAkBlC,EAAGJ,EAAIoC,cAAcG,UAAU,CAACC,IAAI,YAAYlC,YAAY,SAASC,MAAM,CAAC,UAAYP,EAAIoC,cAAc,MAAQpC,EAAIZ,OAAO0B,GAAG,CAAC,MAAQd,EAAIgC,YAAY,MAAQ,SAASS,IAASzC,EAAI/D,OAAM,IAAS+D,EAAI0C,UAAU,EAAE,QAAU,SAASD,KAAUzC,EAAI/D,OAAM,IAAU+D,EAAI0C,UAAU,GAAGT,MAAM,CAAChE,MAAO+B,EAAIZ,MAAW,MAAE8C,SAAS,SAAUC,GAAMnC,EAAI2C,KAAK3C,EAAIZ,MAAO,QAAS+C,EAAI,EAAEN,WAAW,iBAAiBzB,EAAG,QAAQ,CAACuB,WAAW,CAAC,CAAC5D,KAAK,QAAQ6D,QAAQ,UAAU3D,MAAO+B,EAAIZ,MAAW,MAAEyC,WAAW,gBAAgBvB,YAAY,SAASzD,MAAM,CAAE+F,SAAU5C,EAAI/D,OAAQsE,MAAM,CAAC,KAAO,OAAO,UAAYP,EAAIoC,cAAc,YAAcpC,EAAI6C,kBAAkBC,SAAS,CAAC,MAAS9C,EAAIZ,MAAW,OAAG0B,GAAG,CAAC,MAAQ,CAAC,SAAS2B,GAAWA,EAAOM,OAAOC,WAAqBhD,EAAI2C,KAAK3C,EAAIZ,MAAO,QAASqD,EAAOM,OAAO9E,MAAM,EAAE+B,EAAIgC,gBAAgBhC,EAAIS,GAAG,KAAMT,EAAIiD,gBAAkBjD,EAAIoC,cAAehC,EAAG,YAAY,CAACA,EAAG,iBAAiB,CAACG,MAAM,CAAC,KAAO,cAAcO,GAAG,CAAC,MAAQ,SAAS2B,GAAQ,OAAOzC,EAAIkD,MAAM,SAAS,MAAM,GAAGlD,EAAIwB,MAAM,EAAE,GACp+D,IDWpB,EACA,KACA,WACA,MAI8B,QEnBsJ,GCmBtL,CACA,iBACA,YACA,cAEA,OACA,WACA,YACA,aAEA,SACA,aACA,0BCpBI,GAAU,CAAC,EAEf,GAAQ7B,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICFA,IAXgB,OACd,ICTW,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACE,YAAY,gBAAgBzD,MAAM,CAAC,QAAWmD,EAAImD,SAASC,MAAM,CAAGC,gBAAiBrD,EAAImD,QAAUnD,EAAI9B,UAAUnB,MAAQ,gBAAkB,CAACqD,EAAG,MAAM,CAACE,YAAY,OAAOzD,MAAMmD,EAAI9B,UAAUoF,UAAUF,MAAM,CAAGG,gBAAiBvD,EAAI9B,UAAUoF,UAAY,GAAM,OAAUtD,EAAI9B,UAAc,KAAI,OAAU8B,EAAIS,GAAG,KAAKL,EAAG,MAAM,CAACE,YAAY,8BAA8B,CAACF,EAAG,KAAK,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAI9B,UAAUH,SAASiC,EAAIS,GAAG,KAAKL,EAAG,QAAQ,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAI9B,UAAUsF,gBAAgBxD,EAAIS,GAAG,KAAMT,EAAW,QAAEI,EAAG,WAAW,CAACJ,EAAIS,GAAG,WAAWT,EAAIU,GAAGV,EAAI+B,EAAE,iBAAkB,iBAAiB,YAAY/B,EAAIwB,MAAM,GAAGxB,EAAIS,GAAG,KAAKL,EAAG,MAAM,CAACE,YAAY,yBAAyB,CAACN,EAAIyD,GAAG,YAAY,IAAI,GACzwB,IDWpB,EACA,KACA,WACA,MAI8B,wUEgDhC,ICnEiL,GDmEjL,CACA,YACA,YACA,qBACA,SACA,oBACA,gBACA,QACA,mBACA,cACA,aACA,cAEA,YACA,aAEA,OACA,MACA,YACA,cAGA,KAtBA,WAuBA,OACA,WACA,UACA,WACA,qBACA,kBAEA,EACA,UACA,UADA,WAEA,yDACA,EACA,WAJA,WAKA,6HACA,CACA,yDACA,aACA,eACA,yDAGA,WAGA,oEAFA,oEAIA,EACA,kBAnBA,WAoBA,kDACA,iCACA,GAEA,QAvDA,WAwDA,uDACA,EACA,SACA,gBADA,SACA,qJACA,6BADA,SAEA,eAFA,4CAGA,EACA,SALA,SAKA,GACA,gBACA,4CACA,EACA,WATA,WAUA,aACA,eAGA,gBACA,4CACA,EACA,SAjBA,WAiBA,oKAEA,2CAFA,OAGA,WACA,aACA,kDALA,gDAOA,0CACA,4CARA,0DAUA,EACA,WA5BA,WA4BA,oKAEA,uCAFA,sDAIA,4CACA,4CALA,yDAOA,EACA,WApCA,WAqCA,eACA,8CAEA,qDACA,wDACA,cAEA,EAEA,YA9CA,SA8CA,qJACA,yDACA,GACA,2BAEA,uCALA,4CAMA,EAEA,YAtDA,WAwDA,0DACA,gBE3KI,GAAU,CAAC,EAEf,GAAQ9D,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICFA,IAXgB,OACd,ICTW,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAQF,EAAa,UAAEI,EAAG,MAAM,CAACE,YAAY,eAAe8C,MAAM,CAAGM,gBAAiB1D,EAAI9B,UAAUnB,OAAS,KAAO,CAACqD,EAAG,MAAM,CAACE,YAAY,WAAW,CAACF,EAAG,IAAI,CAACA,EAAG,OAAO,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAI+B,EAAE,iBAAkB,YAAY/B,EAAIS,GAAG,KAAKL,EAAG,QAAQ,CAACG,MAAM,CAAC,KAAOP,EAAIjE,MAAM+E,GAAG,CAAC,OAASd,EAAI9D,eAAe,GAAG8D,EAAIS,GAAG,KAAKT,EAAIsB,GAAItB,EAAIjE,KAAW,QAAE,SAASqD,EAAMjD,GAAO,OAAOiE,EAAG,IAAI,CAACc,IAAI/E,GAAO,CAACiE,EAAG,OAAO,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAI+B,EAAE,iBAAkB,WAAW/B,EAAIS,GAAG,KAAKL,EAAG,QAAQ,CAACG,MAAM,CAAC,MAAQnB,EAAM,KAAOY,EAAIjE,MAAM+E,GAAG,CAAC,OAASd,EAAI9D,WAAW,SAAW8D,EAAI0C,SAAS,OAAS,SAASD,GAAQ,OAAOzC,EAAI2D,YAAYvE,EAAM,MAAM,EAAE,IAAGY,EAAIS,GAAG,KAAKL,EAAG,IAAI,CAACA,EAAG,QAAQJ,EAAIS,GAAG,KAAMT,EAAqB,kBAAEI,EAAG,QAAQ,CAACE,YAAY,aAAaC,MAAM,CAAC,KAAO,SAAS,MAAQ,oBAAoBO,GAAG,CAAC,MAAQd,EAAI4D,eAAe5D,EAAIwB,QAAQ,GAAGxB,EAAIS,GAAG,KAAKL,EAAG,MAAM,CAACE,YAAY,2BAA2BN,EAAIS,GAAG,KAAKL,EAAG,MAAM,CAACE,YAAY,UAAU,CAACF,EAAG,YAAY,CAACG,MAAM,CAAC,UAAYP,EAAI9B,UAAU,SAAU,IAAQ,CAAE8B,EAAI9B,UAAiB,QAAEkC,EAAGJ,EAAI9B,UAAUwB,QAAQ,CAAC8C,IAAI,YAAY1B,GAAG,CAAC,MAAQd,EAAI6D,iBAAiB5B,MAAM,CAAChE,MAAO+B,EAAIjE,KAAc,UAAEmG,SAAS,SAAUC,GAAMnC,EAAI2C,KAAK3C,EAAIjE,KAAM,YAAaoG,EAAI,EAAEN,WAAW,oBAAoB7B,EAAIwB,MAAM,GAAGxB,EAAIS,GAAG,KAAKL,EAAG,MAAM,CAACE,YAAY,WAAW,CAAEN,EAAIjE,KAAKL,IAAM,GAAKsE,EAAI8D,MAAO1D,EAAG,WAAW,CAACU,GAAG,CAAC,MAAQd,EAAI+D,aAAa,CAAC/D,EAAIS,GAAG,aAAaT,EAAIU,GAAGV,EAAI+B,EAAE,iBAAkB,WAAW,cAAgB/B,EAAI8D,MAAgI9D,EAAIwB,KAA7HpB,EAAG,WAAW,CAACU,GAAG,CAAC,MAAQd,EAAIxB,aAAa,CAACwB,EAAIS,GAAG,aAAaT,EAAIU,GAAGV,EAAI+B,EAAE,iBAAkB,WAAW,cAAuB/B,EAAIS,GAAG,KAAKL,EAAG,WAAW,CAACG,MAAM,CAAC,KAAOP,EAAIgE,WAAWC,MAAMnD,GAAG,CAAC,MAAQd,EAAIkE,UAAUlD,YAAYhB,EAAIiB,GAAG,CAAC,CAACC,IAAI,OAAOC,GAAG,WAAW,MAAO,CAACf,EAAGJ,EAAIgE,WAAWxD,KAAK,CAACgC,IAAI,YAAYjC,MAAM,CAAC,KAAO,MAAM,EAAE4D,OAAM,IAAO,MAAK,EAAM,aAAa,CAACnE,EAAIS,GAAG,aAAaT,EAAIU,GAAGV,EAAIgE,WAAWI,OAAO,eAAe,GAAGpE,EAAIS,GAAG,KAAMT,EAAS,MAAEI,EAAG,IAAI,CAACE,YAAY,iBAAiB,CAACN,EAAIS,GAAG,WAAWT,EAAIU,GAAGV,EAAIqE,OAAO,YAAYrE,EAAIwB,MAAM,KAAKxB,EAAIwB,IAAI,GAC/iE,IDWpB,EACA,KACA,WACA,MAI8B,kvBE0ChC,IC7DqL,GD+DrL,CACA,gBACA,YACA,aACA,cACA,YACA,aACA,QACA,wBAEA,KAVA,WAWA,OACA,sBACA,wDACA,2DAEA,EACA,sBACA,SACA,qBAEA,SACA,kCACA,cACA,2BAPA,IASA,kBATA,WAUA,2CA7BA,CA8BA,EACA,kBAZA,WAaA,+BACA,+BAEA,uCAnCA,EAoCA,EACA,iBAlBA,WAmBA,6DACA,IAEA,QAvCA,WAwCA,kCACA,EACA,SACA,cADA,SACA,GACA,uCACA,gBEjGI,GAAU,CAAC,EAEf,GAAQ7B,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICFA,IAXgB,OACd,ICTW,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACG,MAAM,CAAC,GAAK,mBAAmB,CAACH,EAAG,oBAAoB,CAACG,MAAM,CAAC,MAAQP,EAAI+B,EAAE,iBAAkB,mBAAmB,UAAU/B,EAAIsE,iBAAiB,CAAgB,IAAdtE,EAAIjF,MAAaqF,EAAG,IAAI,CAACE,YAAY,iBAAiB,CAACF,EAAG,IAAI,CAACG,MAAM,CAAC,KAAO,qCAAqC,CAACP,EAAIS,GAAGT,EAAIU,GAAGV,EAAI+B,EAAE,iBAAkB,6FAA6F/B,EAAIwB,KAAKxB,EAAIS,GAAG,KAAKL,EAAG,mBAAmB,CAACE,YAAY,UAAUC,MAAM,CAAC,KAAO,QAAQ,IAAM,QAAQ,CAACP,EAAIsB,GAAItB,EAAqB,mBAAE,SAAS9B,GAAW,OAAOkC,EAAG,YAAY,CAACc,IAAIhD,EAAUxC,GAAG6E,MAAM,CAAC,UAAYrC,GAAWqG,SAAS,CAAC,MAAQ,SAAS9B,GAAQ,OAAOzC,EAAIvC,cAAcS,EAAU,IAAI,IAAG8B,EAAIS,GAAG,KAAMT,EAAoB,iBAAEI,EAAG,IAAI,CAACc,IAAI,MAAMZ,YAAY,6BAA6BC,MAAM,CAAC,KAAOP,EAAIwE,cAAc,CAACpE,EAAG,MAAM,CAACE,YAAY,kBAAkBN,EAAIS,GAAG,KAAKL,EAAG,MAAM,CAACE,YAAY,8BAA8B,CAACF,EAAG,KAAK,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAI+B,EAAE,iBAAkB,kBAAkB/B,EAAIS,GAAG,KAAKL,EAAG,QAAQ,CAACJ,EAAIS,GAAGT,EAAIU,GAAGV,EAAI+B,EAAE,iBAAkB,gCAAgC/B,EAAIwB,MAAM,GAAGxB,EAAIS,GAAG,KAAMT,EAAqB,kBAAEI,EAAG,MAAM,CAACE,YAAY,iBAAiB,CAACF,EAAG,WAAW,CAACU,GAAG,CAAC,MAAQ,SAAS2B,GAAQzC,EAAIyE,oBAAsBzE,EAAIyE,kBAAkB,GAAGzD,YAAYhB,EAAIiB,GAAG,CAAC,CAACC,IAAI,OAAOC,GAAG,WAAW,MAAO,CAAEnB,EAAsB,mBAAEI,EAAG,SAAS,CAACG,MAAM,CAAC,KAAO,MAAMH,EAAG,WAAW,CAACG,MAAM,CAAC,KAAO,MAAM,EAAE4D,OAAM,IAAO,MAAK,EAAM,aAAa,CAACnE,EAAIS,GAAG,aAAaT,EAAIU,GAAGV,EAAIyE,mBAAqBzE,EAAI+B,EAAE,iBAAkB,aAAe/B,EAAI+B,EAAE,iBAAkB,cAAc,eAAe,GAAG/B,EAAIwB,KAAKxB,EAAIS,GAAG,KAAoB,IAAdT,EAAIjF,MAAaqF,EAAG,KAAK,CAACE,YAAY,oBAAoB,CAACN,EAAIS,GAAG,WAAWT,EAAIU,GAAGV,EAAI+B,EAAE,iBAAkB,qBAAqB,YAAY3B,EAAG,KAAK,CAACE,YAAY,oBAAoB,CAACN,EAAIS,GAAG,WAAWT,EAAIU,GAAGV,EAAI+B,EAAE,iBAAkB,eAAe,aAAa,GAAG/B,EAAIS,GAAG,KAAMT,EAAIlF,MAAMyE,OAAS,EAAGa,EAAG,mBAAmB,CAACG,MAAM,CAAC,KAAO,UAAUP,EAAIsB,GAAItB,EAAS,OAAE,SAASjE,GAAM,OAAOqE,EAAG,OAAO,CAACc,IAAInF,EAAKL,GAAG6E,MAAM,CAAC,KAAOxE,IAAO,IAAG,GAAGiE,EAAIwB,MAAM,EAAE,GAC7mE,IDWpB,EACA,KACA,WACA,MAI8B,QEG1BkD,GAAa,yBACbC,GAAY,8LACZC,GAAY,gsBC8BlB,GA/BmB,CAClBnD,MAAO,CACNxD,MAAO,CACNgG,KAAMY,OACNC,QAAS,IAEV1F,MAAO,CACN6E,KAAM1H,OACNuI,QAAS,WAAQ,MAAO,CAAC,CAAG,IAG9B1H,KAXkB,WAYjB,MAAO,CACN2H,SAAU,GAEX,EACDC,MAAO,CACN/G,MAAO,CACNgH,WAAW,EACXC,QAFM,SAEEjH,GACPgC,KAAKkF,oBAAoBlH,EACzB,IAGHmH,QAAS,CACRD,oBADQ,SACYlH,GACnBgC,KAAK8E,SAAW9G,CAChB,+GCYH,IC9D+L,GD8D/L,CACA,oBACA,YACA,mBAEA,QACA,IAEA,KARA,WASA,OACA,iBACA,CACA,mBACA,mCACA,gCAEA,CACA,oBACA,mCACA,wBAEA,CACA,8DACA,6CACA,mEAEA,CACA,4DACA,0CACA,4BAIA,EACA,UACA,QADA,WAEA,krBACA,EACA,aAJA,WAIA,WAEA,QADA,uEAKA,EACA,YAXA,WAYA,OACA,0BACA,6CACA,WAEA,EACA,aAlBA,WAkBA,WAEA,OADA,yEAIA,CACA,0BACA,4CACA,sBAEA,GAEA,SACA,cADA,SACA,GAGA,cAFA,yBACA,OAEA,EACA,SANA,SAMA,GACA,WACA,wBACA,kCAEA,EACA,aAZA,SAYA,GACA,6BACA,iCACA,gBElII,GAAU,CAAC,EAEf,GAAQ0B,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICFA,IAXgB,OACd,ICTW,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACA,EAAG,gBAAgB,CAACG,MAAM,CAAC,MAAQP,EAAIqF,aAAa,YAAcrF,EAAI+B,EAAE,iBAAkB,sBAAsB,MAAQ,QAAQ,WAAW,UAAU,QAAU/B,EAAIN,QAAQ,UAAW,EAAM,SAAU,GAAOoB,GAAG,CAAC,MAAQd,EAAIsF,UAAUtE,YAAYhB,EAAIiB,GAAG,CAAC,CAACC,IAAI,cAAcC,GAAG,SAASM,GAAO,MAAO,CAAEA,EAAMC,OAAW,KAAEtB,EAAG,OAAO,CAACE,YAAY,eAAezD,MAAM4E,EAAMC,OAAOlB,OAAOJ,EAAG,MAAM,CAACE,YAAY,mBAAmBC,MAAM,CAAC,IAAMkB,EAAMC,OAAO6D,QAAQ,IAAM,MAAMvF,EAAIS,GAAG,KAAKL,EAAG,OAAO,CAACE,YAAY,sCAAsC,CAACN,EAAIS,GAAGT,EAAIU,GAAGe,EAAMC,OAAO8D,UAAU,GAAG,CAACtE,IAAI,SAASC,GAAG,SAASM,GAAO,MAAO,CAAEA,EAAMC,OAAW,KAAEtB,EAAG,OAAO,CAACE,YAAY,eAAezD,MAAM4E,EAAMC,OAAOlB,OAAOJ,EAAG,MAAM,CAACE,YAAY,mBAAmBC,MAAM,CAAC,IAAMkB,EAAMC,OAAO6D,QAAQ,IAAM,MAAMvF,EAAIS,GAAG,KAAKL,EAAG,OAAO,CAACE,YAAY,iBAAiB,CAACN,EAAIS,GAAGT,EAAIU,GAAGe,EAAMC,OAAO8D,UAAU,OAAOxF,EAAIS,GAAG,KAAOT,EAAIyF,aAA+LzF,EAAIwB,KAArLpB,EAAG,QAAQ,CAACG,MAAM,CAAC,KAAO,OAAO,YAAcP,EAAI+B,EAAE,iBAAkB,8BAA8Be,SAAS,CAAC,MAAQ9C,EAAIqF,aAAaK,SAAS5E,GAAG,CAAC,MAAQd,EAAI2F,iBAA0B,EAAE,GAC5qC,IDWpB,EACA,KACA,WACA,MAI8B,oBEnBgK,GC+BhM,CACA,qBACA,YACA,2BAEA,OACA,OACA,YACA,aAGA,KAXA,WAYA,OACA,YAEA,EACA,OACA,MADA,WAEA,kBACA,GAEA,YArBA,WAsBA,kBACA,EACA,SACA,YADA,WAEA,gBACA,yBAEA,kBAEA,EACA,OARA,WASA,qCACA,IC/CA,IAXgB,OACd,ICRW,WAAa,IAAI3F,EAAIC,KAASC,EAAGF,EAAIG,eAAuC,OAAjBH,EAAIK,MAAMD,IAAIF,GAAa,kBAAkB,CAACK,MAAM,CAAC,UAAW,GAAOO,GAAG,CAAC,MAAQd,EAAI4F,QAAQ3D,MAAM,CAAChE,MAAO+B,EAAY,SAAEkC,SAAS,SAAUC,GAAMnC,EAAI+E,SAAS5C,CAAG,EAAEN,WAAW,aAAa,GAChP,IDUpB,EACA,KACA,WACA,MAI8B,QES1BgE,GAAyB,WAC9B,MAAO,CACN,CAAE7H,SAAU,UAAWD,KAAMgE,EAAE,iBAAkB,YACjD,CAAE/D,SAAU,WAAYD,KAAMgE,EAAE,iBAAkB,mBAClD,CAAE/D,SAAU,KAAMD,KAAMgE,EAAE,iBAAkB,OAC5C,CAAE/D,SAAU,MAAOD,KAAMgE,EAAE,iBAAkB,WAE9C,EAsED,GApEmB,CAClB,CACClF,MAAO,uCACPkB,KAAMgE,EAAE,iBAAkB,aAC1B3G,UAAWyK,GACXC,YAAa,SAAC1G,GACb,MAAuB,YAAnBA,EAAMpB,UAA6C,aAAnBoB,EAAMpB,SAClC,gBAED,cACP,EACD0E,SXAsB,SAACtD,GACxB,MAAuB,YAAnBA,EAAMpB,UAA6C,aAAnBoB,EAAMpB,aAtBZ+H,EAuBR3G,EAAMnB,QAnBO,OAA5ByG,GAAWsB,KAAKD,GAJF,IAASA,CA0B9B,GWFA,CACClJ,MAAO,2CACPkB,KAAMgE,EAAE,iBAAkB,kBAC1B3G,UAAWyK,GACXtD,UAAW0D,IAGZ,CACCpJ,MAAO,uCACPkB,KAAMgE,EAAE,iBAAkB,sBAC1B3G,UAAW,CACV,CAAE4C,SAAU,OAAQD,KAAMgE,EAAE,iBAAkB,SAC9C,CAAE/D,SAAU,WAAYD,KAAMgE,EAAE,iBAAkB,mBAClD,CAAE/D,SAAU,QAASD,KAAMgE,EAAE,iBAAkB,sBAC/C,CAAE/D,SAAU,UAAWD,KAAMgE,EAAE,iBAAkB,aAElD+D,YAAa,SAAC1G,GAAD,MAAW,MAAX,EACbsD,SAAU,SAACtD,GAAD,QAAWA,EAAMnB,OAAuD,OAA/CmB,EAAMnB,MAAMiI,MAAM,wBAA3C,GAGX,CACCrJ,MAAO,mDACPkB,KAAMgE,EAAE,iBAAkB,0BAC1B3G,UAAW,CACV,CAAE4C,SAAU,cAAeD,KAAMgE,EAAE,iBAAkB,iBACrD,CAAE/D,SAAU,eAAgBD,KAAMgE,EAAE,iBAAkB,wBACtD,CAAE/D,SAAU,cAAeD,KAAMgE,EAAE,iBAAkB,iBACrD,CAAE/D,SAAU,eAAgBD,KAAMgE,EAAE,iBAAkB,yBAEvD+D,YAAa,SAAC1G,GACb,MAAuB,gBAAnBA,EAAMpB,UAAiD,iBAAnBoB,EAAMpB,SACtC,UAED,cACP,EACD0E,SAAU,SAACtD,GACV,MAAuB,gBAAnBA,EAAMpB,UAAiD,iBAAnBoB,EAAMpB,YX9CnB+H,EW+CN3G,EAAMnB,QX3CK,OAA3B2G,GAAUoB,KAAKD,GAXF,SAASA,GAC7B,QAAKA,GAG6B,OAA3BpB,GAAUqB,KAAKD,EACtB,CWmDSI,CAAa/G,EAAMnB,OXjDR,IAAS8H,CWkD3B,GAGF,CACClJ,MAAO,6CACPkB,KAAMgE,EAAE,iBAAkB,mBAC1B3G,UAAW,CACV,CAAE4C,SAAU,KAAMD,KAAMgE,EAAE,iBAAkB,mBAC5C,CAAE/D,SAAU,MAAOD,KAAMgE,EAAE,iBAAkB,wBAE9CQ,UAAW6D,gHC3Cb,ICzDmM,GDyDnM,CACA,wBACA,YACA,mBAEA,QACA,IAEA,KARA,WASA,OACA,YACA,iBACA,iFACA,yEACA,mFACA,4FAGA,EACA,UACA,QADA,WAEA,krBACA,EACA,mBAJA,WAIA,WACA,4BACA,kDACA,EACA,aARA,WASA,+BACA,EACA,YAXA,WAYA,OACA,0BACA,8CACA,WAEA,EACA,aAlBA,WAmBA,+BACA,wBAEA,CACA,0BACA,8CACA,sBAEA,GAEA,SACA,cADA,SACA,GAGA,cAFA,yBACA,OAEA,EACA,SANA,SAMA,GAEA,WACA,wBACA,kCAEA,EACA,aAbA,SAaA,GACA,6BACA,iCACA,gBE9GI,GAAU,CAAC,EAEf,GAAQzG,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICFA,IAXgB,OACd,ICTW,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACA,EAAG,gBAAgB,CAACG,MAAM,CAAC,MAAQP,EAAIqF,aAAa,YAAcrF,EAAI+B,EAAE,iBAAkB,uBAAuB,MAAQ,QAAQ,WAAW,UAAU,QAAU/B,EAAIN,QAAQ,UAAW,EAAM,SAAU,GAAOoB,GAAG,CAAC,MAAQd,EAAIsF,UAAUtE,YAAYhB,EAAIiB,GAAG,CAAC,CAACC,IAAI,cAAcC,GAAG,SAASM,GAAO,MAAO,CAACrB,EAAG,OAAO,CAACE,YAAY,eAAezD,MAAM4E,EAAMC,OAAOlB,OAAOR,EAAIS,GAAG,KAAKL,EAAG,OAAO,CAACE,YAAY,qCAAqCwC,SAAS,CAAC,UAAY9C,EAAIU,GAAGe,EAAMC,OAAO8D,UAAU,GAAG,CAACtE,IAAI,SAASC,GAAG,SAASM,GAAO,MAAO,CAACrB,EAAG,OAAO,CAACE,YAAY,eAAezD,MAAM4E,EAAMC,OAAOlB,OAAOR,EAAIS,GAAG,KAAMgB,EAAMC,OAAkB,YAAEtB,EAAG,OAAO,CAACE,YAAY,gBAAgBwC,SAAS,CAAC,UAAY9C,EAAIU,GAAGe,EAAMC,OAAO2E,gBAAgBjG,EAAG,OAAO,CAACE,YAAY,gBAAgBwC,SAAS,CAAC,UAAY9C,EAAIU,GAAGe,EAAMC,OAAO8D,UAAU,OAAOxF,EAAIS,GAAG,KAAOT,EAAIyF,aAA4HzF,EAAIwB,KAAlHpB,EAAG,QAAQ,CAACG,MAAM,CAAC,KAAO,QAAQuC,SAAS,CAAC,MAAQ9C,EAAIqF,aAAaK,SAAS5E,GAAG,CAAC,MAAQd,EAAI2F,iBAA0B,EAAE,GAC1iC,IDWpB,EACA,KACA,WACA,MAI8B,+BEOhC,mBC1B8L,GD2B9L,CACA,mBACA,YACA,mBAEA,QACA,IAEA,OACA,OACA,YACA,aAGA,KAdA,WAeA,OACA,aACA,SACA,UACA,eACA,aACA,0BAGA,EACA,QAzBA,WA0BA,eACA,EACA,SACA,oBADA,SACA,GACA,IACA,oBACA,eACA,eACA,+BACA,6BACA,+BAKA,CAFA,SAEA,CACA,EACA,SAfA,WAwBA,OARA,wHACA,yGACA,4CACA,WACA,oBAEA,sBAEA,UACA,EACA,OA1BA,WA8BA,GAHA,gCACA,wCAEA,iBACA,0JACA,qBACA,CACA,eE9EI,GAAU,CAAC,EAEf,GAAQhG,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICFA,IAXgB,OACd,ICTW,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACE,YAAY,YAAY,CAACF,EAAG,QAAQ,CAACuB,WAAW,CAAC,CAAC5D,KAAK,QAAQ6D,QAAQ,UAAU3D,MAAO+B,EAAI+E,SAAkB,UAAElD,WAAW,uBAAuBvB,YAAY,kBAAkBC,MAAM,CAAC,KAAO,OAAO,YAAc,cAAcuC,SAAS,CAAC,MAAS9C,EAAI+E,SAAkB,WAAGjE,GAAG,CAAC,MAAQ,CAAC,SAAS2B,GAAWA,EAAOM,OAAOC,WAAqBhD,EAAI2C,KAAK3C,EAAI+E,SAAU,YAAatC,EAAOM,OAAO9E,MAAM,EAAE+B,EAAI4F,WAAW5F,EAAIS,GAAG,KAAKL,EAAG,QAAQ,CAACuB,WAAW,CAAC,CAAC5D,KAAK,QAAQ6D,QAAQ,UAAU3D,MAAO+B,EAAI+E,SAAgB,QAAElD,WAAW,qBAAqBtB,MAAM,CAAC,KAAO,OAAO,YAAc,cAAcuC,SAAS,CAAC,MAAS9C,EAAI+E,SAAgB,SAAGjE,GAAG,CAAC,MAAQ,CAAC,SAAS2B,GAAWA,EAAOM,OAAOC,WAAqBhD,EAAI2C,KAAK3C,EAAI+E,SAAU,UAAWtC,EAAOM,OAAO9E,MAAM,EAAE+B,EAAI4F,WAAW5F,EAAIS,GAAG,KAAOT,EAAI/D,MAAwI+D,EAAIwB,KAArIpB,EAAG,IAAI,CAACE,YAAY,gBAAgB,CAACN,EAAIS,GAAG,SAAST,EAAIU,GAAGV,EAAI+B,EAAE,iBAAkB,mCAAmC,UAAmB/B,EAAIS,GAAG,KAAKL,EAAG,gBAAgB,CAACuB,WAAW,CAAC,CAAC5D,KAAK,OAAO6D,QAAQ,SAAS3D,MAAO+B,EAAS,MAAE6B,WAAW,UAAUtB,MAAM,CAAC,QAAUP,EAAIsG,WAAWxF,GAAG,CAAC,MAAQd,EAAI4F,QAAQ3D,MAAM,CAAChE,MAAO+B,EAAI+E,SAAiB,SAAE7C,SAAS,SAAUC,GAAMnC,EAAI2C,KAAK3C,EAAI+E,SAAU,WAAY5C,EAAI,EAAEN,WAAW,wBAAwB,EAAE,GAC7yC,IDWpB,EACA,KACA,WACA,MAI8B,mHEoChC,QACA,kBACA,YACA,mBAEA,QACA,IAEA,KARA,WASA,OACA,YACA,iBACA,CACA,4CACA,UACA,+DAKA,EACA,UACA,QADA,WAEA,krBACA,EACA,YAJA,WAKA,wEACA,6CAEA,6BACA,EACA,mBAVA,WAUA,WACA,4BACA,sCACA,OACA,kDACA,EACA,aAhBA,WAiBA,+BACA,EACA,YAnBA,WAoBA,OACA,mCACA,UACA,CACA,0BACA,uCACA,aAIA,EACA,aA/BA,WAgCA,+BACA,wBAEA,CACA,0BACA,uCACA,sBAEA,GAEA,SACA,cADA,SACA,GAGA,cAFA,yBACA,OAEA,EACA,SANA,SAMA,GAEA,WACA,wBACA,kCAEA,EACA,aAbA,SAaA,GACA,6BACA,iCACA,ICtI6L,kBCWzL,GAAU,CAAC,EAEf,GAAQlC,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICFA,IAXgB,OACd,ICTW,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACA,EAAG,gBAAgB,CAACG,MAAM,CAAC,MAAQP,EAAIqF,aAAa,YAAcrF,EAAI+B,EAAE,iBAAkB,wBAAwB,MAAQ,QAAQ,WAAW,UAAU,eAAe,WAAW,cAAc,QAAQ,QAAU/B,EAAIN,QAAQ,UAAW,EAAM,SAAU,GAAOoB,GAAG,CAAC,MAAQd,EAAIsF,UAAUtE,YAAYhB,EAAIiB,GAAG,CAAC,CAACC,IAAI,cAAcC,GAAG,SAASM,GAAO,MAAO,CAACrB,EAAG,OAAO,CAACE,YAAY,eAAezD,MAAM4E,EAAMC,OAAOlB,OAAOR,EAAIS,GAAG,KAAKL,EAAG,OAAO,CAACE,YAAY,sCAAsC,CAACN,EAAIS,GAAGT,EAAIU,GAAGe,EAAMC,OAAO8D,UAAU,GAAG,CAACtE,IAAI,SAASC,GAAG,SAASM,GAAO,MAAO,CAACrB,EAAG,OAAO,CAACE,YAAY,eAAezD,MAAM4E,EAAMC,OAAOlB,OAAOR,EAAIS,GAAG,KAAKL,EAAG,OAAO,CAACE,YAAY,iBAAiB,CAACN,EAAIS,GAAGT,EAAIU,GAAGe,EAAMC,OAAO8D,OAAO,IAAIxF,EAAIU,GAAGe,EAAMC,OAAO2E,gBAAgB,OAAOrG,EAAIS,GAAG,KAAOT,EAAIyF,aAA0JzF,EAAIwB,KAAhJpB,EAAG,QAAQ,CAACG,MAAM,CAAC,KAAO,OAAO,YAAcP,EAAI8F,aAAahD,SAAS,CAAC,MAAQ9C,EAAIqF,aAAaK,SAAS5E,GAAG,CAAC,MAAQd,EAAI2F,iBAA0B,EAAE,GACxgC,IDWpB,EACA,KACA,WACA,MAI8B,kIEqBhC,UACA,IACA,cAGA,IACA,wBACA,YACA,mBAEA,OACA,OACA,YACA,YAEA,OACA,YACA,+BAGA,KAfA,WAgBA,OACA,UACA,UAEA,EACA,UACA,aADA,WACA,WACA,mEACA,GAEA,QA1BA,WA0BA,+IACA,oBADA,gCAEA,kBAFA,UAIA,sBAJA,gCAKA,uBALA,4NAOA,EACA,SACA,YADA,SACA,cACA,0BAKA,OADA,yBACA,4HACA,4CACA,YACA,QACA,2BAEA,IACA,qBACA,gBACA,0DACA,GACA,EACA,SAnBA,SAmBA,IAEA,IADA,0DAEA,mBAEA,ICvGmM,kBCW/L,GAAU,CAAC,EAEf,GAAQhG,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,KAAS,IAKJ,MAAW,aAAiB,YALlD,ICFA,IAXgB,OACd,ICTW,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACA,EAAG,gBAAgB,CAACG,MAAM,CAAC,MAAQP,EAAIqF,aAAa,QAAUrF,EAAIuG,OAAOC,WAAmC,IAAtBxG,EAAIyG,OAAOlH,OAAa,QAAUS,EAAIyG,OAAO,UAAW,EAAM,MAAQ,cAAc,WAAW,MAAM3F,GAAG,CAAC,gBAAgBd,EAAI0G,YAAY,MAAQ,SAAUzI,GAAS,OAAO+B,EAAIkD,MAAM,QAASjF,EAAMvC,GAAK,MAAM,EAAE,GAC3X,IDWpB,EACA,KACA,WACA,MAI8B,QEmDhC,GA3CsB,CACrB,CACCmB,MAAO,yCACPkB,KAAMgE,EAAE,iBAAkB,eAC1B3G,UAAW,CACV,CAAE4C,SAAU,KAAMD,KAAMgE,EAAE,iBAAkB,OAC5C,CAAE/D,SAAU,MAAOD,KAAMgE,EAAE,iBAAkB,WAC7C,CAAE/D,SAAU,UAAWD,KAAMgE,EAAE,iBAAkB,YACjD,CAAE/D,SAAU,WAAYD,KAAMgE,EAAE,iBAAkB,oBAEnDQ,UAAWoE,IAEZ,CACC9J,MAAO,0CACPkB,KAAMgE,EAAE,iBAAkB,gBAC1B3G,UAAW,CACV,CAAE4C,SAAU,KAAMD,KAAMgE,EAAE,iBAAkB,YAC5C,CAAE/D,SAAU,MAAOD,KAAMgE,EAAE,iBAAkB,iBAE9CQ,UAAWqE,IAEZ,CACC/J,MAAO,+CACPkB,KAAMgE,EAAE,iBAAkB,sBAC1B3G,UAAW,CACV,CAAE4C,SAAU,KAAMD,KAAMgE,EAAE,iBAAkB,OAC5C,CAAE/D,SAAU,MAAOD,KAAMgE,EAAE,iBAAkB,WAC7C,CAAE/D,SAAU,UAAWD,KAAMgE,EAAE,iBAAkB,YACjD,CAAE/D,SAAU,WAAYD,KAAMgE,EAAE,iBAAkB,oBAEnDQ,UAAWsE,IAEZ,CACChK,MAAO,kDACPkB,KAAMgE,EAAE,iBAAkB,yBAC1B3G,UAAW,CACV,CAAE4C,SAAU,KAAMD,KAAMgE,EAAE,iBAAkB,iBAC5C,CAAE/D,SAAU,MAAOD,KAAMgE,EAAE,iBAAkB,sBAE9CQ,UAAWuE,0vBCzCb,OAAe,aAAIC,IAAnB,GAAkCC,KCwClCC,OAAOC,IAAIC,eAAiB5K,OAAOC,OAAO,CAAC,EAAG0K,IAAIC,eAAgB,CAMjEC,cANiE,SAMnDC,GACbC,EAAAA,OAAa,iBAAkBD,EAC/B,EAKDE,iBAbiE,SAahDF,GAChBC,EAAAA,OAAa,oBAAqBD,EAClC,IAIFG,GAAAA,SAAsB,SAACC,GAAD,OAAiBR,OAAOC,IAAIC,eAAeC,cAAcK,EAAzD,IAEtB/M,EAAAA,GAAAA,IAAQC,EAAAA,IACRD,EAAAA,GAAAA,UAAAA,EAAkBqH,EAGK,IADVrH,EAAAA,GAAAA,OAAWgN,IACD,CAAS,CAC/BJ,MAAAA,IAEcK,OAAO,0FC1FlBC,QAA0B,GAA4B,KAE1DA,EAAwB5L,KAAK,CAAC6L,EAAOnM,GAAI,41BAA61B,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,4DAA4D,MAAQ,GAAG,SAAW,kSAAkS,eAAiB,CAAC,8oCAA8oC,WAAa,MAEl8E,6ECJIkM,QAA0B,GAA4B,KAE1DA,EAAwB5L,KAAK,CAAC6L,EAAOnM,GAAI,+NAAgO,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,0EAA0E,MAAQ,GAAG,SAAW,0EAA0E,eAAiB,CAAC,krBAAkrB,WAAa,MAE/pC,4ECJIkM,QAA0B,GAA4B,KAE1DA,EAAwB5L,KAAK,CAAC6L,EAAOnM,GAAI,2hBAA4hB,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,yEAAyE,MAAQ,GAAG,SAAW,+KAA+K,eAAiB,CAAC,stBAAstB,WAAa,MAEnmD,6ECJIkM,QAA0B,GAA4B,KAE1DA,EAAwB5L,KAAK,CAAC6L,EAAOnM,GAAI,0KAA2K,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,wEAAwE,MAAQ,GAAG,SAAW,yDAAyD,eAAiB,CAAC,mbAAmb,WAAa,MAEx1B,6ECJIkM,QAA0B,GAA4B,KAE1DA,EAAwB5L,KAAK,CAAC6L,EAAOnM,GAAI,wpCAAypC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,4DAA4D,MAAQ,GAAG,SAAW,8UAA8U,eAAiB,CAAC,s0CAAs0C,WAAa,MAEl+F,6ECJIkM,QAA0B,GAA4B,KAE1DA,EAAwB5L,KAAK,CAAC6L,EAAOnM,GAAI,shDAAuhD,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,6DAA6D,MAAQ,GAAG,SAAW,wiBAAwiB,eAAiB,CAAC,26CAA26C,WAAa,MAEhqH,6ECJIkM,QAA0B,GAA4B,KAE1DA,EAAwB5L,KAAK,CAAC6L,EAAOnM,GAAI,u+CAAw+C,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,2DAA2D,MAAQ,GAAG,SAAW,0hBAA0hB,eAAiB,CAAC,qyDAAqyD,WAAa,MAE39H,6ECJIkM,QAA0B,GAA4B,KAE1DA,EAAwB5L,KAAK,CAAC6L,EAAOnM,GAAI,23FAA43F,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,8DAA8D,6DAA6D,MAAQ,GAAG,SAAW,88BAA88B,eAAiB,CAAC,8oDAAgpD,26CAA26C,WAAa,MAEznO,6ECJIkM,QAA0B,GAA4B,KAE1DA,EAAwB5L,KAAK,CAAC6L,EAAOnM,GAAI,uoBAAwoB,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,8EAA8E,MAAQ,GAAG,SAAW,iOAAiO,eAAiB,CAAC,80JAA+yJ,WAAa,MAE/1L,6ECJIkM,QAA0B,GAA4B,KAE1DA,EAAwB5L,KAAK,CAAC6L,EAAOnM,GAAI,yDAA0D,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,8EAA8E,MAAQ,GAAG,SAAW,wBAAwB,eAAiB,CAAC,27FAAo7F,WAAa,MAE7sG,6BCPA,IAAIH,EAAM,CACT,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,MACX,aAAc,MACd,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,QAAS,MACT,WAAY,MACZ,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,gBAAiB,MACjB,aAAc,MACd,gBAAiB,MACjB,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,MACX,aAAc,MACd,UAAW,KACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,WAAY,MACZ,cAAe,MACf,UAAW,MACX,aAAc,MACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,YAAa,MACb,eAAgB,MAChB,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,QAAS,MACT,WAAY,MACZ,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,UAAW,KACX,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,QAAS,MACT,WAAY,MACZ,OAAQ,MACR,UAAW,MACX,QAAS,MACT,WAAY,MACZ,QAAS,MACT,aAAc,MACd,gBAAiB,MACjB,WAAY,MACZ,UAAW,KACX,aAAc,KACd,OAAQ,MACR,UAAW,MACX,OAAQ,MACR,UAAW,MACX,OAAQ,KACR,YAAa,MACb,eAAgB,MAChB,UAAW,KACX,OAAQ,MACR,UAAW,MACX,aAAc,MACd,gBAAiB,MACjB,OAAQ,MACR,UAAW,MACX,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,MACd,UAAW,MACX,aAAc,OAIf,SAASuM,EAAeC,GACvB,IAAIrM,EAAKsM,EAAsBD,GAC/B,OAAOE,EAAoBvM,EAC5B,CACA,SAASsM,EAAsBD,GAC9B,IAAIE,EAAoBC,EAAE3M,EAAKwM,GAAM,CACpC,IAAII,EAAI,IAAIC,MAAM,uBAAyBL,EAAM,KAEjD,MADAI,EAAEE,KAAO,mBACHF,CACP,CACA,OAAO5M,EAAIwM,EACZ,CACAD,EAAeQ,KAAO,WACrB,OAAO/L,OAAO+L,KAAK/M,EACpB,EACAuM,EAAeS,QAAUP,EACzBH,EAAOW,QAAUV,EACjBA,EAAepM,GAAK,QClShB+M,EAA2B,CAAC,EAGhC,SAASR,EAAoBS,GAE5B,IAAIC,EAAeF,EAAyBC,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAaH,QAGrB,IAAIX,EAASY,EAAyBC,GAAY,CACjDhN,GAAIgN,EACJG,QAAQ,EACRL,QAAS,CAAC,GAUX,OANAM,EAAoBJ,GAAUK,KAAKlB,EAAOW,QAASX,EAAQA,EAAOW,QAASP,GAG3EJ,EAAOgB,QAAS,EAGThB,EAAOW,OACf,CAGAP,EAAoBe,EAAIF,EC5BxBb,EAAoBgB,KAAO,WAC1B,MAAM,IAAIb,MAAM,iCACjB,ECFAH,EAAoBiB,KAAO,CAAC,E5EAxB9O,EAAW,GACf6N,EAAoBkB,EAAI,SAAS5K,EAAQ6K,EAAUjI,EAAIkI,GACtD,IAAGD,EAAH,CAMA,IAAIE,EAAeC,IACnB,IAASC,EAAI,EAAGA,EAAIpP,EAASmF,OAAQiK,IAAK,CACrCJ,EAAWhP,EAASoP,GAAG,GACvBrI,EAAK/G,EAASoP,GAAG,GACjBH,EAAWjP,EAASoP,GAAG,GAE3B,IAJA,IAGIC,GAAY,EACPC,EAAI,EAAGA,EAAIN,EAAS7J,OAAQmK,MACpB,EAAXL,GAAsBC,GAAgBD,IAAa9M,OAAO+L,KAAKL,EAAoBkB,GAAGQ,OAAM,SAASzI,GAAO,OAAO+G,EAAoBkB,EAAEjI,GAAKkI,EAASM,GAAK,IAChKN,EAAS1M,OAAOgN,IAAK,IAErBD,GAAY,EACTJ,EAAWC,IAAcA,EAAeD,IAG7C,GAAGI,EAAW,CACbrP,EAASsC,OAAO8M,IAAK,GACrB,IAAII,EAAIzI,SACEyH,IAANgB,IAAiBrL,EAASqL,EAC/B,CACD,CACA,OAAOrL,CArBP,CAJC8K,EAAWA,GAAY,EACvB,IAAI,IAAIG,EAAIpP,EAASmF,OAAQiK,EAAI,GAAKpP,EAASoP,EAAI,GAAG,GAAKH,EAAUG,IAAKpP,EAASoP,GAAKpP,EAASoP,EAAI,GACrGpP,EAASoP,GAAK,CAACJ,EAAUjI,EAAIkI,EAwB/B,E6E5BApB,EAAoB4B,EAAI,SAAShC,GAChC,IAAIiC,EAASjC,GAAUA,EAAOkC,WAC7B,WAAa,OAAOlC,EAAgB,OAAG,EACvC,WAAa,OAAOA,CAAQ,EAE7B,OADAI,EAAoB+B,EAAEF,EAAQ,CAAEG,EAAGH,IAC5BA,CACR,ECNA7B,EAAoB+B,EAAI,SAASxB,EAAS0B,GACzC,IAAI,IAAIhJ,KAAOgJ,EACXjC,EAAoBC,EAAEgC,EAAYhJ,KAAS+G,EAAoBC,EAAEM,EAAStH,IAC5E3E,OAAO4N,eAAe3B,EAAStH,EAAK,CAAEkJ,YAAY,EAAMC,IAAKH,EAAWhJ,IAG3E,ECPA+G,EAAoBqC,EAAI,WACvB,GAA0B,iBAAfC,WAAyB,OAAOA,WAC3C,IACC,OAAOtK,MAAQ,IAAIuK,SAAS,cAAb,EAGhB,CAFE,MAAOrC,GACR,GAAsB,iBAAXlB,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxBgB,EAAoBC,EAAI,SAASzI,EAAKgL,GAAQ,OAAOlO,OAAOmO,UAAUC,eAAe5B,KAAKtJ,EAAKgL,EAAO,ECCtGxC,EAAoB2B,EAAI,SAASpB,GACX,oBAAXoC,QAA0BA,OAAOC,aAC1CtO,OAAO4N,eAAe3B,EAASoC,OAAOC,YAAa,CAAE5M,MAAO,WAE7D1B,OAAO4N,eAAe3B,EAAS,aAAc,CAAEvK,OAAO,GACvD,ECNAgK,EAAoB6C,IAAM,SAASjD,GAGlC,OAFAA,EAAOkD,MAAQ,GACVlD,EAAOmD,WAAUnD,EAAOmD,SAAW,IACjCnD,CACR,ECJAI,EAAoByB,EAAI,gBCAxBzB,EAAoBgD,EAAIC,SAASC,SAAWC,KAAKC,SAASC,KAK1D,IAAIC,EAAkB,CACrB,KAAM,GAaPtD,EAAoBkB,EAAEO,EAAI,SAAS8B,GAAW,OAAoC,IAA7BD,EAAgBC,EAAgB,EAGrF,IAAIC,EAAuB,SAASC,EAA4BtO,GAC/D,IAKIsL,EAAU8C,EALVpC,EAAWhM,EAAK,GAChBuO,EAAcvO,EAAK,GACnBwO,EAAUxO,EAAK,GAGIoM,EAAI,EAC3B,GAAGJ,EAASyC,MAAK,SAASnQ,GAAM,OAA+B,IAAxB6P,EAAgB7P,EAAW,IAAI,CACrE,IAAIgN,KAAYiD,EACZ1D,EAAoBC,EAAEyD,EAAajD,KACrCT,EAAoBe,EAAEN,GAAYiD,EAAYjD,IAGhD,GAAGkD,EAAS,IAAIrN,EAASqN,EAAQ3D,EAClC,CAEA,IADGyD,GAA4BA,EAA2BtO,GACrDoM,EAAIJ,EAAS7J,OAAQiK,IACzBgC,EAAUpC,EAASI,GAChBvB,EAAoBC,EAAEqD,EAAiBC,IAAYD,EAAgBC,IACrED,EAAgBC,GAAS,KAE1BD,EAAgBC,GAAW,EAE5B,OAAOvD,EAAoBkB,EAAE5K,EAC9B,EAEIuN,EAAqBV,KAA4B,sBAAIA,KAA4B,uBAAK,GAC1FU,EAAmBvO,QAAQkO,EAAqBM,KAAK,KAAM,IAC3DD,EAAmB9P,KAAOyP,EAAqBM,KAAK,KAAMD,EAAmB9P,KAAK+P,KAAKD,OClDvF7D,EAAoB+D,QAAKpD,ECGzB,IAAIqD,EAAsBhE,EAAoBkB,OAAEP,EAAW,CAAC,OAAO,WAAa,OAAOX,EAAoB,MAAQ,IACnHgE,EAAsBhE,EAAoBkB,EAAE8C","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/workflowengine/src/helpers/api.js","webpack:///nextcloud/apps/workflowengine/src/store.js","webpack:///nextcloud/apps/workflowengine/src/components/Event.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/workflowengine/src/components/Event.vue","webpack://nextcloud/./apps/workflowengine/src/components/Event.vue?26be","webpack://nextcloud/./apps/workflowengine/src/components/Event.vue?5115","webpack:///nextcloud/apps/workflowengine/src/components/Event.vue?vue&type=template&id=01681aaa&scoped=true&","webpack:///nextcloud/apps/workflowengine/src/components/Check.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/workflowengine/src/components/Check.vue","webpack://nextcloud/./apps/workflowengine/src/components/Check.vue?2b71","webpack://nextcloud/./apps/workflowengine/src/components/Check.vue?3fb8","webpack:///nextcloud/apps/workflowengine/src/components/Check.vue?vue&type=template&id=fa8ae1f2&scoped=true&","webpack:///nextcloud/apps/workflowengine/src/components/Operation.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/workflowengine/src/components/Operation.vue","webpack://nextcloud/./apps/workflowengine/src/components/Operation.vue?27c0","webpack://nextcloud/./apps/workflowengine/src/components/Operation.vue?3526","webpack:///nextcloud/apps/workflowengine/src/components/Operation.vue?vue&type=template&id=90eae5ec&scoped=true&","webpack:///nextcloud/apps/workflowengine/src/components/Rule.vue","webpack:///nextcloud/apps/workflowengine/src/components/Rule.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/workflowengine/src/components/Rule.vue?a113","webpack://nextcloud/./apps/workflowengine/src/components/Rule.vue?e711","webpack:///nextcloud/apps/workflowengine/src/components/Rule.vue?vue&type=template&id=a857d7a6&scoped=true&","webpack:///nextcloud/apps/workflowengine/src/components/Workflow.vue","webpack:///nextcloud/apps/workflowengine/src/components/Workflow.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/workflowengine/src/components/Workflow.vue?91e8","webpack://nextcloud/./apps/workflowengine/src/components/Workflow.vue?17b8","webpack:///nextcloud/apps/workflowengine/src/components/Workflow.vue?vue&type=template&id=38a7a2e5&scoped=true&","webpack:///nextcloud/apps/workflowengine/src/helpers/validators.js","webpack:///nextcloud/apps/workflowengine/src/mixins/valueMixin.js","webpack:///nextcloud/apps/workflowengine/src/components/Checks/FileMimeType.vue","webpack:///nextcloud/apps/workflowengine/src/components/Checks/FileMimeType.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/workflowengine/src/components/Checks/FileMimeType.vue?a984","webpack://nextcloud/./apps/workflowengine/src/components/Checks/FileMimeType.vue?c385","webpack:///nextcloud/apps/workflowengine/src/components/Checks/FileMimeType.vue?vue&type=template&id=2312566e&scoped=true&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/FileSystemTag.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/FileSystemTag.vue","webpack://nextcloud/./apps/workflowengine/src/components/Checks/FileSystemTag.vue?2d3e","webpack:///nextcloud/apps/workflowengine/src/components/Checks/FileSystemTag.vue?vue&type=template&id=1611b92c&scoped=true&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/file.js","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestUserAgent.vue","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestUserAgent.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestUserAgent.vue?b491","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestUserAgent.vue?81d6","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestUserAgent.vue?vue&type=template&id=bd5cb750&scoped=true&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestTime.vue","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestTime.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestTime.vue?2c0a","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestTime.vue?a55a","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestTime.vue?vue&type=template&id=c064bb1a&scoped=true&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestURL.vue","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestURL.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestURL.vue?b514","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestURL.vue?eee5","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestURL.vue?vue&type=template&id=efaa5484&scoped=true&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestUserGroup.vue","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestUserGroup.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestUserGroup.vue?0058","webpack://nextcloud/./apps/workflowengine/src/components/Checks/RequestUserGroup.vue?f6d3","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestUserGroup.vue?vue&type=template&id=4bcec2a5&scoped=true&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/request.js","webpack:///nextcloud/apps/workflowengine/src/components/Checks/index.js","webpack:///nextcloud/apps/workflowengine/src/workflowengine.js","webpack:///nextcloud/apps/workflowengine/src/components/Check.vue?vue&type=style&index=0&id=fa8ae1f2&scoped=true&lang=scss&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/FileMimeType.vue?vue&type=style&index=0&id=2312566e&scoped=true&lang=scss&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestTime.vue?vue&type=style&index=0&id=c064bb1a&scoped=true&lang=scss&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestURL.vue?vue&type=style&index=0&id=efaa5484&scoped=true&lang=scss&","webpack:///nextcloud/apps/workflowengine/src/components/Event.vue?vue&type=style&index=0&id=01681aaa&scoped=true&lang=scss&","webpack:///nextcloud/apps/workflowengine/src/components/Operation.vue?vue&type=style&index=0&id=90eae5ec&scoped=true&lang=scss&","webpack:///nextcloud/apps/workflowengine/src/components/Rule.vue?vue&type=style&index=0&id=a857d7a6&scoped=true&lang=scss&","webpack:///nextcloud/apps/workflowengine/src/components/Workflow.vue?vue&type=style&index=0&id=38a7a2e5&scoped=true&lang=scss&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestUserAgent.vue?vue&type=style&index=0&id=bd5cb750&scoped=true&lang=css&","webpack:///nextcloud/apps/workflowengine/src/components/Checks/RequestUserGroup.vue?vue&type=style&index=0&id=4bcec2a5&scoped=true&lang=css&","webpack:///nextcloud/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/amd define","webpack:///nextcloud/webpack/runtime/amd options","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nconst scopeValue = loadState('workflowengine', 'scope') === 0 ? 'global' : 'user'\n\nconst getApiUrl = (url) => {\n\treturn generateOcsUrl('apps/workflowengine/api/v1/workflows/{scopeValue}', { scopeValue }) + url + '?format=json'\n}\n\nexport {\n\tgetApiUrl,\n}\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Kesselberg <mail@danielkesselberg.de>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport Vuex, { Store } from 'vuex'\nimport axios from '@nextcloud/axios'\nimport { getApiUrl } from './helpers/api'\nimport { confirmPassword } from '@nextcloud/password-confirmation'\nimport '@nextcloud/password-confirmation/dist/style.css'\nimport { loadState } from '@nextcloud/initial-state'\n\nVue.use(Vuex)\n\nconst store = new Store({\n\tstate: {\n\t\trules: [],\n\t\tscope: loadState('workflowengine', 'scope'),\n\t\tappstoreEnabled: loadState('workflowengine', 'appstoreenabled'),\n\t\toperations: loadState('workflowengine', 'operators'),\n\n\t\tplugins: Vue.observable({\n\t\t\tchecks: {},\n\t\t\toperators: {},\n\t\t}),\n\n\t\tentities: loadState('workflowengine', 'entities'),\n\t\tevents: loadState('workflowengine', 'entities')\n\t\t\t.map((entity) => entity.events.map(event => {\n\t\t\t\treturn {\n\t\t\t\t\tid: `${entity.id}::${event.eventName}`,\n\t\t\t\t\tentity,\n\t\t\t\t\t...event,\n\t\t\t\t}\n\t\t\t})).flat(),\n\t\tchecks: loadState('workflowengine', 'checks'),\n\t},\n\tmutations: {\n\t\taddRule(state, rule) {\n\t\t\tstate.rules.push({ ...rule, valid: true })\n\t\t},\n\t\tupdateRule(state, rule) {\n\t\t\tconst index = state.rules.findIndex((item) => rule.id === item.id)\n\t\t\tconst newRule = Object.assign({}, rule)\n\t\t\tVue.set(state.rules, index, newRule)\n\t\t},\n\t\tremoveRule(state, rule) {\n\t\t\tconst index = state.rules.findIndex((item) => rule.id === item.id)\n\t\t\tstate.rules.splice(index, 1)\n\t\t},\n\t\taddPluginCheck(state, plugin) {\n\t\t\tVue.set(state.plugins.checks, plugin.class, plugin)\n\t\t},\n\t\taddPluginOperator(state, plugin) {\n\t\t\tplugin = Object.assign(\n\t\t\t\t{ color: 'var(--color-primary-element)' },\n\t\t\t\tplugin, state.operations[plugin.id] || {})\n\t\t\tif (typeof state.operations[plugin.id] !== 'undefined') {\n\t\t\t\tVue.set(state.operations, plugin.id, plugin)\n\t\t\t}\n\t\t},\n\t},\n\tactions: {\n\t\tasync fetchRules(context) {\n\t\t\tconst { data } = await axios.get(getApiUrl(''))\n\t\t\tObject.values(data.ocs.data).flat().forEach((rule) => {\n\t\t\t\tcontext.commit('addRule', rule)\n\t\t\t})\n\t\t},\n\t\tcreateNewRule(context, rule) {\n\t\t\tlet entity = null\n\t\t\tlet events = []\n\t\t\tif (rule.isComplex === false && rule.fixedEntity === '') {\n\t\t\t\tentity = context.state.entities.find((item) => rule.entities && rule.entities[0] === item.id)\n\t\t\t\tentity = entity || Object.values(context.state.entities)[0]\n\t\t\t\tevents = [entity.events[0].eventName]\n\t\t\t}\n\n\t\t\tcontext.commit('addRule', {\n\t\t\t\tid: -(new Date().getTime()),\n\t\t\t\tclass: rule.id,\n\t\t\t\tentity: entity ? entity.id : rule.fixedEntity,\n\t\t\t\tevents,\n\t\t\t\tname: '', // unused in the new ui, there for legacy reasons\n\t\t\t\tchecks: [\n\t\t\t\t\t{ class: null, operator: null, value: '' },\n\t\t\t\t],\n\t\t\t\toperation: rule.operation || '',\n\t\t\t})\n\t\t},\n\t\tupdateRule(context, rule) {\n\t\t\tcontext.commit('updateRule', {\n\t\t\t\t...rule,\n\t\t\t\tevents: typeof rule.events === 'string' ? JSON.parse(rule.events) : rule.events,\n\t\t\t})\n\t\t},\n\t\tremoveRule(context, rule) {\n\t\t\tcontext.commit('removeRule', rule)\n\t\t},\n\t\tasync pushUpdateRule(context, rule) {\n\t\t\tif (context.state.scope === 0) {\n\t\t\t\tawait confirmPassword()\n\t\t\t}\n\t\t\tlet result\n\t\t\tif (rule.id < 0) {\n\t\t\t\tresult = await axios.post(getApiUrl(''), rule)\n\t\t\t} else {\n\t\t\t\tresult = await axios.put(getApiUrl(`/${rule.id}`), rule)\n\t\t\t}\n\t\t\tVue.set(rule, 'id', result.data.ocs.data.id)\n\t\t\tcontext.commit('updateRule', rule)\n\t\t},\n\t\tasync deleteRule(context, rule) {\n\t\t\tawait confirmPassword()\n\t\t\tawait axios.delete(getApiUrl(`/${rule.id}`))\n\t\t\tcontext.commit('removeRule', rule)\n\t\t},\n\t\tsetValid(context, { rule, valid }) {\n\t\t\trule.valid = valid\n\t\t\tcontext.commit('updateRule', rule)\n\t\t},\n\t},\n\tgetters: {\n\t\tgetRules(state) {\n\t\t\treturn state.rules.filter((rule) => typeof state.operations[rule.class] !== 'undefined').sort((rule1, rule2) => {\n\t\t\t\treturn rule1.id - rule2.id || rule2.class - rule1.class\n\t\t\t})\n\t\t},\n\t\tgetOperationForRule(state) {\n\t\t\treturn (rule) => state.operations[rule.class]\n\t\t},\n\t\tgetEntityForOperation(state) {\n\t\t\treturn (operation) => state.entities.find((entity) => operation.fixedEntity === entity.id)\n\t\t},\n\t\tgetEventsForOperation(state) {\n\t\t\treturn (operation) => state.events\n\t\t},\n\n\t\t/**\n\t\t * Return all available checker plugins for a given entity class\n\t\t *\n\t\t * @param {object} state the store state\n\t\t * @return {Function} the available plugins\n\t\t */\n\t\tgetChecksForEntity(state) {\n\t\t\treturn (entity) => {\n\t\t\t\treturn Object.values(state.checks)\n\t\t\t\t\t.filter((check) => check.supportedEntities.indexOf(entity) > -1 || check.supportedEntities.length === 0)\n\t\t\t\t\t.map((check) => state.plugins.checks[check.id])\n\t\t\t\t\t.reduce((obj, item) => {\n\t\t\t\t\t\tobj[item.class] = item\n\t\t\t\t\t\treturn obj\n\t\t\t\t\t}, {})\n\t\t\t}\n\t\t},\n\t},\n})\n\nexport default store\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Event.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Event.vue?vue&type=script&lang=js&\"","<template>\n\t<div class=\"event\">\n\t\t<div v-if=\"operation.isComplex && operation.fixedEntity !== ''\" class=\"isComplex\">\n\t\t\t<img class=\"option__icon\" :src=\"entity.icon\" alt=\"\">\n\t\t\t<span class=\"option__title option__title_single\">{{ operation.triggerHint }}</span>\n\t\t</div>\n\t\t<NcMultiselect v-else\n\t\t\t:value=\"currentEvent\"\n\t\t\t:options=\"allEvents\"\n\t\t\ttrack-by=\"id\"\n\t\t\t:multiple=\"true\"\n\t\t\t:auto-limit=\"false\"\n\t\t\t:disabled=\"allEvents.length <= 1\"\n\t\t\t@input=\"updateEvent\">\n\t\t\t<template slot=\"selection\" slot-scope=\"{ values, isOpen }\">\n\t\t\t\t<div v-if=\"values.length && !isOpen\" class=\"eventlist\">\n\t\t\t\t\t<img class=\"option__icon\" :src=\"values[0].entity.icon\" alt=\"\">\n\t\t\t\t\t<span v-for=\"(value, index) in values\" :key=\"value.id\" class=\"text option__title option__title_single\">{{ value.displayName }} <span v-if=\"index+1 < values.length\">, </span></span>\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t\t<template slot=\"option\" slot-scope=\"props\">\n\t\t\t\t<img class=\"option__icon\" :src=\"props.option.entity.icon\" alt=\"\">\n\t\t\t\t<span class=\"option__title\">{{ props.option.displayName }}</span>\n\t\t\t</template>\n\t\t</NcMultiselect>\n\t</div>\n</template>\n\n<script>\nimport NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect'\nimport { showWarning } from '@nextcloud/dialogs'\n\nexport default {\n\tname: 'Event',\n\tcomponents: {\n\t\tNcMultiselect,\n\t},\n\tprops: {\n\t\trule: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tcomputed: {\n\t\tentity() {\n\t\t\treturn this.$store.getters.getEntityForOperation(this.operation)\n\t\t},\n\t\toperation() {\n\t\t\treturn this.$store.getters.getOperationForRule(this.rule)\n\t\t},\n\t\tallEvents() {\n\t\t\treturn this.$store.getters.getEventsForOperation(this.operation)\n\t\t},\n\t\tcurrentEvent() {\n\t\t\treturn this.allEvents.filter(event => event.entity.id === this.rule.entity && this.rule.events.indexOf(event.eventName) !== -1)\n\t\t},\n\t},\n\tmethods: {\n\t\tupdateEvent(events) {\n\t\t\tif (events.length === 0) {\n\t\t\t\tshowWarning(t('workflowengine', 'At least one event must be selected'))\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst existingEntity = this.rule.entity\n\t\t\tconst newEntities = events.map(event => event.entity.id).filter((value, index, self) => self.indexOf(value) === index)\n\t\t\tlet newEntity = null\n\t\t\tif (newEntities.length > 1) {\n\t\t\t\tnewEntity = newEntities.filter(entity => entity !== existingEntity)[0]\n\t\t\t} else {\n\t\t\t\tnewEntity = newEntities[0]\n\t\t\t}\n\n\t\t\tthis.$set(this.rule, 'entity', newEntity)\n\t\t\tthis.$set(this.rule, 'events', events.filter(event => event.entity.id === newEntity).map(event => event.eventName))\n\t\t\tthis.$emit('update', this.rule)\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t.event {\n\t\tmargin-bottom: 5px;\n\t}\n\t.isComplex {\n\t\timg {\n\t\t\tvertical-align: text-top;\n\t\t}\n\t\tspan {\n\t\t\tpadding-top: 2px;\n\t\t\tdisplay: inline-block;\n\t\t}\n\t}\n\t.multiselect {\n\t\twidth: 100%;\n\t\tmax-width: 550px;\n\t\tmargin-top: 4px;\n\t}\n\t.multiselect::v-deep .multiselect__single {\n\t\tdisplay: flex;\n\t}\n\t.multiselect:not(.multiselect--active)::v-deep .multiselect__tags {\n\t\tbackground-color: var(--color-main-background) !important;\n\t\tborder: 1px solid transparent;\n\t}\n\n\t.multiselect::v-deep .multiselect__tags {\n\t\tbackground-color: var(--color-main-background) !important;\n\t\theight: auto;\n\t\tmin-height: 34px;\n\t}\n\n\t.multiselect:not(.multiselect--disabled)::v-deep .multiselect__tags .multiselect__single {\n\t\tbackground-image: var(--icon-triangle-s-dark);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: right center;\n\t}\n\n\tinput {\n\t\tborder: 1px solid transparent;\n\t}\n\n\t.option__title {\n\t\tmargin-left: 5px;\n\t\tcolor: var(--color-main-text);\n\t}\n\t.option__title_single {\n\t\tfont-weight: 900;\n\t}\n\n\t.option__icon {\n\t\twidth: 16px;\n\t\theight: 16px;\n\t\tfilter: var(--background-invert-if-dark);\n\t}\n\n\t.eventlist img,\n\t.eventlist .text {\n\t\tvertical-align: middle;\n\t}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Event.vue?vue&type=style&index=0&id=01681aaa&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Event.vue?vue&type=style&index=0&id=01681aaa&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Event.vue?vue&type=template&id=01681aaa&scoped=true&\"\nimport script from \"./Event.vue?vue&type=script&lang=js&\"\nexport * from \"./Event.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Event.vue?vue&type=style&index=0&id=01681aaa&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"01681aaa\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"event\"},[(_vm.operation.isComplex && _vm.operation.fixedEntity !== '')?_c('div',{staticClass:\"isComplex\"},[_c('img',{staticClass:\"option__icon\",attrs:{\"src\":_vm.entity.icon,\"alt\":\"\"}}),_vm._v(\" \"),_c('span',{staticClass:\"option__title option__title_single\"},[_vm._v(_vm._s(_vm.operation.triggerHint))])]):_c('NcMultiselect',{attrs:{\"value\":_vm.currentEvent,\"options\":_vm.allEvents,\"track-by\":\"id\",\"multiple\":true,\"auto-limit\":false,\"disabled\":_vm.allEvents.length <= 1},on:{\"input\":_vm.updateEvent},scopedSlots:_vm._u([{key:\"selection\",fn:function(ref){\nvar values = ref.values;\nvar isOpen = ref.isOpen;\nreturn [(values.length && !isOpen)?_c('div',{staticClass:\"eventlist\"},[_c('img',{staticClass:\"option__icon\",attrs:{\"src\":values[0].entity.icon,\"alt\":\"\"}}),_vm._v(\" \"),_vm._l((values),function(value,index){return _c('span',{key:value.id,staticClass:\"text option__title option__title_single\"},[_vm._v(_vm._s(value.displayName)+\" \"),(index+1 < values.length)?_c('span',[_vm._v(\", \")]):_vm._e()])})],2):_vm._e()]}},{key:\"option\",fn:function(props){return [_c('img',{staticClass:\"option__icon\",attrs:{\"src\":props.option.entity.icon,\"alt\":\"\"}}),_vm._v(\" \"),_c('span',{staticClass:\"option__title\"},[_vm._v(_vm._s(props.option.displayName))])]}}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Check.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Check.vue?vue&type=script&lang=js&\"","<template>\n\t<div v-click-outside=\"hideDelete\" class=\"check\" @click=\"showDelete\">\n\t\t<NcMultiselect ref=\"checkSelector\"\n\t\t\tv-model=\"currentOption\"\n\t\t\t:options=\"options\"\n\t\t\tlabel=\"name\"\n\t\t\ttrack-by=\"class\"\n\t\t\t:allow-empty=\"false\"\n\t\t\t:placeholder=\"t('workflowengine', 'Select a filter')\"\n\t\t\t@input=\"updateCheck\" />\n\t\t<NcMultiselect v-model=\"currentOperator\"\n\t\t\t:disabled=\"!currentOption\"\n\t\t\t:options=\"operators\"\n\t\t\tclass=\"comparator\"\n\t\t\tlabel=\"name\"\n\t\t\ttrack-by=\"operator\"\n\t\t\t:allow-empty=\"false\"\n\t\t\t:placeholder=\"t('workflowengine', 'Select a comparator')\"\n\t\t\t@input=\"updateCheck\" />\n\t\t<component :is=\"currentOption.component\"\n\t\t\tv-if=\"currentOperator && currentComponent\"\n\t\t\tv-model=\"check.value\"\n\t\t\t:disabled=\"!currentOption\"\n\t\t\t:check=\"check\"\n\t\t\tclass=\"option\"\n\t\t\t@input=\"updateCheck\"\n\t\t\t@valid=\"(valid=true) && validate()\"\n\t\t\t@invalid=\"!(valid=false) && validate()\" />\n\t\t<input v-else\n\t\t\tv-model=\"check.value\"\n\t\t\ttype=\"text\"\n\t\t\t:class=\"{ invalid: !valid }\"\n\t\t\t:disabled=\"!currentOption\"\n\t\t\t:placeholder=\"valuePlaceholder\"\n\t\t\tclass=\"option\"\n\t\t\t@input=\"updateCheck\">\n\t\t<NcActions v-if=\"deleteVisible || !currentOption\">\n\t\t\t<NcActionButton icon=\"icon-close\" @click=\"$emit('remove')\" />\n\t\t</NcActions>\n\t</div>\n</template>\n\n<script>\nimport NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect'\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions'\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton'\nimport ClickOutside from 'vue-click-outside'\n\nexport default {\n\tname: 'Check',\n\tcomponents: {\n\t\tNcActionButton,\n\t\tNcActions,\n\t\tNcMultiselect,\n\t},\n\tdirectives: {\n\t\tClickOutside,\n\t},\n\tprops: {\n\t\tcheck: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\trule: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tdeleteVisible: false,\n\t\t\tcurrentOption: null,\n\t\t\tcurrentOperator: null,\n\t\t\toptions: [],\n\t\t\tvalid: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\tchecks() {\n\t\t\treturn this.$store.getters.getChecksForEntity(this.rule.entity)\n\t\t},\n\t\toperators() {\n\t\t\tif (!this.currentOption) { return [] }\n\t\t\tconst operators = this.checks[this.currentOption.class].operators\n\t\t\tif (typeof operators === 'function') {\n\t\t\t\treturn operators(this.check)\n\t\t\t}\n\t\t\treturn operators\n\t\t},\n\t\tcurrentComponent() {\n\t\t\tif (!this.currentOption) { return [] }\n\t\t\treturn this.checks[this.currentOption.class].component\n\t\t},\n\t\tvaluePlaceholder() {\n\t\t\tif (this.currentOption && this.currentOption.placeholder) {\n\t\t\t\treturn this.currentOption.placeholder(this.check)\n\t\t\t}\n\t\t\treturn ''\n\t\t},\n\t},\n\twatch: {\n\t\t'check.operator'() {\n\t\t\tthis.validate()\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.options = Object.values(this.checks)\n\t\tthis.currentOption = this.checks[this.check.class]\n\t\tthis.currentOperator = this.operators.find((operator) => operator.operator === this.check.operator)\n\n\t\tif (this.check.class === null) {\n\t\t\tthis.$nextTick(() => this.$refs.checkSelector.$el.focus())\n\t\t}\n\t\tthis.validate()\n\t},\n\tmethods: {\n\t\tshowDelete() {\n\t\t\tthis.deleteVisible = true\n\t\t},\n\t\thideDelete() {\n\t\t\tthis.deleteVisible = false\n\t\t},\n\t\tvalidate() {\n\t\t\tthis.valid = true\n\t\t\tif (this.currentOption && this.currentOption.validate) {\n\t\t\t\tthis.valid = !!this.currentOption.validate(this.check)\n\t\t\t}\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.check.invalid = !this.valid\n\t\t\tthis.$emit('validate', this.valid)\n\t\t},\n\t\tupdateCheck() {\n\t\t\tconst matchingOperator = this.operators.findIndex((operator) => this.check.operator === operator.operator)\n\t\t\tif (this.check.class !== this.currentOption.class || matchingOperator === -1) {\n\t\t\t\tthis.currentOperator = this.operators[0]\n\t\t\t}\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.check.class = this.currentOption.class\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.check.operator = this.currentOperator.operator\n\n\t\t\tthis.validate()\n\n\t\t\tthis.$emit('update', this.check)\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t.check {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t\twidth: 100%;\n\t\tpadding-right: 20px;\n\t\t& > *:not(.close) {\n\t\t\twidth: 180px;\n\t\t}\n\t\t& > .comparator {\n\t\t\tmin-width: 130px;\n\t\t\twidth: 130px;\n\t\t}\n\t\t& > .option {\n\t\t\tmin-width: 230px;\n\t\t\twidth: 230px;\n\t\t}\n\t\t& > .multiselect,\n\t\t& > input[type=text] {\n\t\t\tmargin-right: 5px;\n\t\t\tmargin-bottom: 5px;\n\t\t}\n\n\t\t.multiselect::v-deep .multiselect__content-wrapper li>span,\n\t\t.multiselect::v-deep .multiselect__single {\n\t\t\tdisplay: block;\n\t\t\twhite-space: nowrap;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t}\n\t}\n\tinput[type=text] {\n\t\tmargin: 0;\n\t}\n\t::placeholder {\n\t\tfont-size: 10px;\n\t}\n\tbutton.action-item.action-item--single.icon-close {\n\t\theight: 44px;\n\t\twidth: 44px;\n\t\tmargin-top: -5px;\n\t\tmargin-bottom: -5px;\n\t}\n\t.invalid {\n\t\tborder-color: var(--color-error) !important;\n\t}\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Check.vue?vue&type=style&index=0&id=fa8ae1f2&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Check.vue?vue&type=style&index=0&id=fa8ae1f2&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Check.vue?vue&type=template&id=fa8ae1f2&scoped=true&\"\nimport script from \"./Check.vue?vue&type=script&lang=js&\"\nexport * from \"./Check.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Check.vue?vue&type=style&index=0&id=fa8ae1f2&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"fa8ae1f2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"click-outside\",rawName:\"v-click-outside\",value:(_vm.hideDelete),expression:\"hideDelete\"}],staticClass:\"check\",on:{\"click\":_vm.showDelete}},[_c('NcMultiselect',{ref:\"checkSelector\",attrs:{\"options\":_vm.options,\"label\":\"name\",\"track-by\":\"class\",\"allow-empty\":false,\"placeholder\":_vm.t('workflowengine', 'Select a filter')},on:{\"input\":_vm.updateCheck},model:{value:(_vm.currentOption),callback:function ($$v) {_vm.currentOption=$$v},expression:\"currentOption\"}}),_vm._v(\" \"),_c('NcMultiselect',{staticClass:\"comparator\",attrs:{\"disabled\":!_vm.currentOption,\"options\":_vm.operators,\"label\":\"name\",\"track-by\":\"operator\",\"allow-empty\":false,\"placeholder\":_vm.t('workflowengine', 'Select a comparator')},on:{\"input\":_vm.updateCheck},model:{value:(_vm.currentOperator),callback:function ($$v) {_vm.currentOperator=$$v},expression:\"currentOperator\"}}),_vm._v(\" \"),(_vm.currentOperator && _vm.currentComponent)?_c(_vm.currentOption.component,{tag:\"component\",staticClass:\"option\",attrs:{\"disabled\":!_vm.currentOption,\"check\":_vm.check},on:{\"input\":_vm.updateCheck,\"valid\":function($event){(_vm.valid=true) && _vm.validate()},\"invalid\":function($event){!(_vm.valid=false) && _vm.validate()}},model:{value:(_vm.check.value),callback:function ($$v) {_vm.$set(_vm.check, \"value\", $$v)},expression:\"check.value\"}}):_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.check.value),expression:\"check.value\"}],staticClass:\"option\",class:{ invalid: !_vm.valid },attrs:{\"type\":\"text\",\"disabled\":!_vm.currentOption,\"placeholder\":_vm.valuePlaceholder},domProps:{\"value\":(_vm.check.value)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.$set(_vm.check, \"value\", $event.target.value)},_vm.updateCheck]}}),_vm._v(\" \"),(_vm.deleteVisible || !_vm.currentOption)?_c('NcActions',[_c('NcActionButton',{attrs:{\"icon\":\"icon-close\"},on:{\"click\":function($event){return _vm.$emit('remove')}}})],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Operation.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Operation.vue?vue&type=script&lang=js&\"","<template>\n\t<div class=\"actions__item\" :class=\"{'colored': colored}\" :style=\"{ backgroundColor: colored ? operation.color : 'transparent' }\">\n\t\t<div class=\"icon\" :class=\"operation.iconClass\" :style=\"{ backgroundImage: operation.iconClass ? '' : `url(${operation.icon})` }\" />\n\t\t<div class=\"actions__item__description\">\n\t\t\t<h3>{{ operation.name }}</h3>\n\t\t\t<small>{{ operation.description }}</small>\n\t\t\t<NcButton v-if=\"colored\">\n\t\t\t\t{{ t('workflowengine', 'Add new flow') }}\n\t\t\t</NcButton>\n\t\t</div>\n\t\t<div class=\"actions__item_options\">\n\t\t\t<slot />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton'\n\nexport default {\n\tname: 'Operation',\n\tcomponents: {\n\t\tNcButton,\n\t},\n\tprops: {\n\t\toperation: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tcolored: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t@import \"./../styles/operation\";\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Operation.vue?vue&type=style&index=0&id=90eae5ec&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Operation.vue?vue&type=style&index=0&id=90eae5ec&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Operation.vue?vue&type=template&id=90eae5ec&scoped=true&\"\nimport script from \"./Operation.vue?vue&type=script&lang=js&\"\nexport * from \"./Operation.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Operation.vue?vue&type=style&index=0&id=90eae5ec&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"90eae5ec\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"actions__item\",class:{'colored': _vm.colored},style:({ backgroundColor: _vm.colored ? _vm.operation.color : 'transparent' })},[_c('div',{staticClass:\"icon\",class:_vm.operation.iconClass,style:({ backgroundImage: _vm.operation.iconClass ? '' : (\"url(\" + (_vm.operation.icon) + \")\") })}),_vm._v(\" \"),_c('div',{staticClass:\"actions__item__description\"},[_c('h3',[_vm._v(_vm._s(_vm.operation.name))]),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.operation.description))]),_vm._v(\" \"),(_vm.colored)?_c('NcButton',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('workflowengine', 'Add new flow'))+\"\\n\\t\\t\")]):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"actions__item_options\"},[_vm._t(\"default\")],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<div v-if=\"operation\" class=\"section rule\" :style=\"{ borderLeftColor: operation.color || '' }\">\n\t\t<div class=\"trigger\">\n\t\t\t<p>\n\t\t\t\t<span>{{ t('workflowengine', 'When') }}</span>\n\t\t\t\t<Event :rule=\"rule\" @update=\"updateRule\" />\n\t\t\t</p>\n\t\t\t<p v-for=\"(check, index) in rule.checks\" :key=\"index\">\n\t\t\t\t<span>{{ t('workflowengine', 'and') }}</span>\n\t\t\t\t<Check :check=\"check\"\n\t\t\t\t\t:rule=\"rule\"\n\t\t\t\t\t@update=\"updateRule\"\n\t\t\t\t\t@validate=\"validate\"\n\t\t\t\t\t@remove=\"removeCheck(check)\" />\n\t\t\t</p>\n\t\t\t<p>\n\t\t\t\t<span />\n\t\t\t\t<input v-if=\"lastCheckComplete\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclass=\"check--add\"\n\t\t\t\t\tvalue=\"Add a new filter\"\n\t\t\t\t\t@click=\"onAddFilter\">\n\t\t\t</p>\n\t\t</div>\n\t\t<div class=\"flow-icon icon-confirm\" />\n\t\t<div class=\"action\">\n\t\t\t<Operation :operation=\"operation\" :colored=\"false\">\n\t\t\t\t<component :is=\"operation.options\"\n\t\t\t\t\tv-if=\"operation.options\"\n\t\t\t\t\tv-model=\"rule.operation\"\n\t\t\t\t\t@input=\"updateOperation\" />\n\t\t\t</Operation>\n\t\t\t<div class=\"buttons\">\n\t\t\t\t<NcButton v-if=\"rule.id < -1 || dirty\" @click=\"cancelRule\">\n\t\t\t\t\t{{ t('workflowengine', 'Cancel') }}\n\t\t\t\t</NcButton>\n\t\t\t\t<NcButton v-else-if=\"!dirty\" @click=\"deleteRule\">\n\t\t\t\t\t{{ t('workflowengine', 'Delete') }}\n\t\t\t\t</NcButton>\n\t\t\t\t<NcButton :type=\"ruleStatus.type\"\n\t\t\t\t\t@click=\"saveRule\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<component :is=\"ruleStatus.icon\" :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ ruleStatus.title }}\n\t\t\t\t</NcButton>\n\t\t\t</div>\n\t\t\t<p v-if=\"error\" class=\"error-message\">\n\t\t\t\t{{ error }}\n\t\t\t</p>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport Tooltip from '@nextcloud/vue/dist/Directives/Tooltip'\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions'\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton'\nimport ArrowRight from 'vue-material-design-icons/ArrowRight.vue'\nimport CheckMark from 'vue-material-design-icons/Check.vue'\nimport Close from 'vue-material-design-icons/Close.vue'\n\nimport Event from './Event'\nimport Check from './Check'\nimport Operation from './Operation'\n\nexport default {\n\tname: 'Rule',\n\tcomponents: {\n\t\tArrowRight,\n\t\tCheck,\n\t\tCheckMark,\n\t\tClose,\n\t\tEvent,\n\t\tNcActionButton,\n\t\tNcActions,\n\t\tNcButton,\n\t\tOperation,\n\t},\n\tdirectives: {\n\t\tTooltip,\n\t},\n\tprops: {\n\t\trule: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tediting: false,\n\t\t\tchecks: [],\n\t\t\terror: null,\n\t\t\tdirty: this.rule.id < 0,\n\t\t\toriginalRule: null,\n\t\t}\n\t},\n\tcomputed: {\n\t\toperation() {\n\t\t\treturn this.$store.getters.getOperationForRule(this.rule)\n\t\t},\n\t\truleStatus() {\n\t\t\tif (this.error || !this.rule.valid || this.rule.checks.length === 0 || this.rule.checks.some((check) => check.invalid === true)) {\n\t\t\t\treturn {\n\t\t\t\t\ttitle: t('workflowengine', 'The configuration is invalid'),\n\t\t\t\t\ticon: 'Close',\n\t\t\t\t\ttype: 'warning',\n\t\t\t\t\ttooltip: { placement: 'bottom', show: true, content: this.error },\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!this.dirty) {\n\t\t\t\treturn { title: t('workflowengine', 'Active'), icon: 'CheckMark', type: 'success' }\n\t\t\t}\n\t\t\treturn { title: t('workflowengine', 'Save'), icon: 'ArrowRight', type: 'primary' }\n\n\t\t},\n\t\tlastCheckComplete() {\n\t\t\tconst lastCheck = this.rule.checks[this.rule.checks.length - 1]\n\t\t\treturn typeof lastCheck === 'undefined' || lastCheck.class !== null\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.originalRule = JSON.parse(JSON.stringify(this.rule))\n\t},\n\tmethods: {\n\t\tasync updateOperation(operation) {\n\t\t\tthis.$set(this.rule, 'operation', operation)\n\t\t\tawait this.updateRule()\n\t\t},\n\t\tvalidate(state) {\n\t\t\tthis.error = null\n\t\t\tthis.$store.dispatch('updateRule', this.rule)\n\t\t},\n\t\tupdateRule() {\n\t\t\tif (!this.dirty) {\n\t\t\t\tthis.dirty = true\n\t\t\t}\n\n\t\t\tthis.error = null\n\t\t\tthis.$store.dispatch('updateRule', this.rule)\n\t\t},\n\t\tasync saveRule() {\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('pushUpdateRule', this.rule)\n\t\t\t\tthis.dirty = false\n\t\t\t\tthis.error = null\n\t\t\t\tthis.originalRule = JSON.parse(JSON.stringify(this.rule))\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error('Failed to save operation')\n\t\t\t\tthis.error = e.response.data.ocs.meta.message\n\t\t\t}\n\t\t},\n\t\tasync deleteRule() {\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('deleteRule', this.rule)\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error('Failed to delete operation')\n\t\t\t\tthis.error = e.response.data.ocs.meta.message\n\t\t\t}\n\t\t},\n\t\tcancelRule() {\n\t\t\tif (this.rule.id < 0) {\n\t\t\t\tthis.$store.dispatch('removeRule', this.rule)\n\t\t\t} else {\n\t\t\t\tthis.$store.dispatch('updateRule', this.originalRule)\n\t\t\t\tthis.originalRule = JSON.parse(JSON.stringify(this.rule))\n\t\t\t\tthis.dirty = false\n\t\t\t}\n\t\t},\n\n\t\tasync removeCheck(check) {\n\t\t\tconst index = this.rule.checks.findIndex(item => item === check)\n\t\t\tif (index > -1) {\n\t\t\t\tthis.$delete(this.rule.checks, index)\n\t\t\t}\n\t\t\tthis.$store.dispatch('updateRule', this.rule)\n\t\t},\n\n\t\tonAddFilter() {\n\t\t\t// eslint-disable-next-line vue/no-mutating-props\n\t\t\tthis.rule.checks.push({ class: null, operator: null, value: '' })\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\n\t.buttons {\n\t\tdisplay: flex;\n\t\tjustify-content: end;\n\n\t\tbutton {\n\t\t\tmargin-left: 5px;\n\t\t}\n\t\tbutton:last-child{\n\t\t\tmargin-right: 10px;\n\t\t}\n\t}\n\n\t.error-message {\n\t\tfloat: right;\n\t\tmargin-right: 10px;\n\t}\n\n\t.flow-icon {\n\t\twidth: 44px;\n\t}\n\n\t.rule {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t\tborder-left: 5px solid var(--color-primary-element);\n\n\t\t.trigger, .action {\n\t\t\tflex-grow: 1;\n\t\t\tmin-height: 100px;\n\t\t\tmax-width: 700px;\n\t\t}\n\t\t.action {\n\t\t\tmax-width: 400px;\n\t\t\tposition: relative;\n\t\t}\n\t\t.icon-confirm {\n\t\t\tbackground-position: right 27px;\n\t\t\tpadding-right: 20px;\n\t\t\tmargin-right: 20px;\n\t\t}\n\t}\n\t.trigger p, .action p {\n\t\tmin-height: 34px;\n\t\tdisplay: flex;\n\n\t\t& > span {\n\t\t\tmin-width: 50px;\n\t\t\ttext-align: right;\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\tpadding-right: 10px;\n\t\t\tpadding-top: 6px;\n\t\t}\n\t\t.multiselect {\n\t\t\tflex-grow: 1;\n\t\t\tmax-width: 300px;\n\t\t}\n\t}\n\t.trigger p:first-child span {\n\t\t\tpadding-top: 3px;\n\t}\n\n\t.check--add {\n\t\tbackground-position: 7px center;\n\t\tbackground-color: transparent;\n\t\tpadding-left: 6px;\n\t\tmargin: 0;\n\t\twidth: 180px;\n\t\tborder-radius: var(--border-radius);\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tfont-weight: normal;\n\t\ttext-align: left;\n\t\tfont-size: 1em;\n\t}\n\n\t@media (max-width:1400px) {\n\t\t.rule {\n\t\t\t&, .trigger, .action {\n\t\t\t\twidth: 100%;\n\t\t\t\tmax-width: 100%;\n\t\t\t}\n\t\t\t.flow-icon {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t}\n\t}\n\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Rule.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Rule.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Rule.vue?vue&type=style&index=0&id=a857d7a6&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Rule.vue?vue&type=style&index=0&id=a857d7a6&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Rule.vue?vue&type=template&id=a857d7a6&scoped=true&\"\nimport script from \"./Rule.vue?vue&type=script&lang=js&\"\nexport * from \"./Rule.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Rule.vue?vue&type=style&index=0&id=a857d7a6&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a857d7a6\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.operation)?_c('div',{staticClass:\"section rule\",style:({ borderLeftColor: _vm.operation.color || '' })},[_c('div',{staticClass:\"trigger\"},[_c('p',[_c('span',[_vm._v(_vm._s(_vm.t('workflowengine', 'When')))]),_vm._v(\" \"),_c('Event',{attrs:{\"rule\":_vm.rule},on:{\"update\":_vm.updateRule}})],1),_vm._v(\" \"),_vm._l((_vm.rule.checks),function(check,index){return _c('p',{key:index},[_c('span',[_vm._v(_vm._s(_vm.t('workflowengine', 'and')))]),_vm._v(\" \"),_c('Check',{attrs:{\"check\":check,\"rule\":_vm.rule},on:{\"update\":_vm.updateRule,\"validate\":_vm.validate,\"remove\":function($event){return _vm.removeCheck(check)}}})],1)}),_vm._v(\" \"),_c('p',[_c('span'),_vm._v(\" \"),(_vm.lastCheckComplete)?_c('input',{staticClass:\"check--add\",attrs:{\"type\":\"button\",\"value\":\"Add a new filter\"},on:{\"click\":_vm.onAddFilter}}):_vm._e()])],2),_vm._v(\" \"),_c('div',{staticClass:\"flow-icon icon-confirm\"}),_vm._v(\" \"),_c('div',{staticClass:\"action\"},[_c('Operation',{attrs:{\"operation\":_vm.operation,\"colored\":false}},[(_vm.operation.options)?_c(_vm.operation.options,{tag:\"component\",on:{\"input\":_vm.updateOperation},model:{value:(_vm.rule.operation),callback:function ($$v) {_vm.$set(_vm.rule, \"operation\", $$v)},expression:\"rule.operation\"}}):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"buttons\"},[(_vm.rule.id < -1 || _vm.dirty)?_c('NcButton',{on:{\"click\":_vm.cancelRule}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('workflowengine', 'Cancel'))+\"\\n\\t\\t\\t\")]):(!_vm.dirty)?_c('NcButton',{on:{\"click\":_vm.deleteRule}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('workflowengine', 'Delete'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcButton',{attrs:{\"type\":_vm.ruleStatus.type},on:{\"click\":_vm.saveRule},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_vm.ruleStatus.icon,{tag:\"component\",attrs:{\"size\":20}})]},proxy:true}],null,false,2383918876)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.ruleStatus.title)+\"\\n\\t\\t\\t\")])],1),_vm._v(\" \"),(_vm.error)?_c('p',{staticClass:\"error-message\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.error)+\"\\n\\t\\t\")]):_vm._e()],1)]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<div id=\"workflowengine\">\n\t\t<NcSettingsSection :title=\"t('workflowengine', 'Available flows')\"\n\t\t\t:doc-url=\"workflowDocUrl\">\n\t\t\t<p v-if=\"scope === 0\" class=\"settings-hint\">\n\t\t\t\t<a href=\"https://nextcloud.com/developer/\">{{ t('workflowengine', 'For details on how to write your own flow, check out the development documentation.') }}</a>\n\t\t\t</p>\n\n\t\t\t<transition-group name=\"slide\" tag=\"div\" class=\"actions\">\n\t\t\t\t<Operation v-for=\"operation in getMainOperations\"\n\t\t\t\t\t:key=\"operation.id\"\n\t\t\t\t\t:operation=\"operation\"\n\t\t\t\t\t@click.native=\"createNewRule(operation)\" />\n\n\t\t\t\t<a v-if=\"showAppStoreHint\"\n\t\t\t\t\t:key=\"'add'\"\n\t\t\t\t\t:href=\"appstoreUrl\"\n\t\t\t\t\tclass=\"actions__item colored more\">\n\t\t\t\t\t<div class=\"icon icon-add\" />\n\t\t\t\t\t<div class=\"actions__item__description\">\n\t\t\t\t\t\t<h3>{{ t('workflowengine', 'More flows') }}</h3>\n\t\t\t\t\t\t<small>{{ t('workflowengine', 'Browse the App Store') }}</small>\n\t\t\t\t\t</div>\n\t\t\t\t</a>\n\t\t\t</transition-group>\n\n\t\t\t<div v-if=\"hasMoreOperations\" class=\"actions__more\">\n\t\t\t\t<NcButton @click=\"showMoreOperations = !showMoreOperations\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<MenuUp v-if=\"showMoreOperations\" :size=\"20\" />\n\t\t\t\t\t\t<MenuDown v-else :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ showMoreOperations ? t('workflowengine', 'Show less') : t('workflowengine', 'Show more') }}\n\t\t\t\t</NcButton>\n\t\t\t</div>\n\n\t\t\t<h2 v-if=\"scope === 0\" class=\"configured-flows\">\n\t\t\t\t{{ t('workflowengine', 'Configured flows') }}\n\t\t\t</h2>\n\t\t\t<h2 v-else class=\"configured-flows\">\n\t\t\t\t{{ t('workflowengine', 'Your flows') }}\n\t\t\t</h2>\n\t\t</NcSettingsSection>\n\n\t\t<transition-group v-if=\"rules.length > 0\" name=\"slide\">\n\t\t\t<Rule v-for=\"rule in rules\" :key=\"rule.id\" :rule=\"rule\" />\n\t\t</transition-group>\n\t</div>\n</template>\n\n<script>\nimport Rule from './Rule'\nimport Operation from './Operation'\nimport NcSettingsSection from '@nextcloud/vue/dist/Components/NcSettingsSection'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton'\nimport { mapGetters, mapState } from 'vuex'\nimport { generateUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport MenuUp from 'vue-material-design-icons/MenuUp'\nimport MenuDown from 'vue-material-design-icons/MenuDown'\n\nconst ACTION_LIMIT = 3\n\nexport default {\n\tname: 'Workflow',\n\tcomponents: {\n\t\tNcButton,\n\t\tMenuDown,\n\t\tMenuUp,\n\t\tOperation,\n\t\tRule,\n\t\tNcSettingsSection,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tshowMoreOperations: false,\n\t\t\tappstoreUrl: generateUrl('settings/apps/workflow'),\n\t\t\tworkflowDocUrl: loadState('workflowengine', 'doc-url'),\n\t\t}\n\t},\n\tcomputed: {\n\t\t...mapGetters({\n\t\t\trules: 'getRules',\n\t\t}),\n\t\t...mapState({\n\t\t\tappstoreEnabled: 'appstoreEnabled',\n\t\t\tscope: 'scope',\n\t\t\toperations: 'operations',\n\t\t}),\n\t\thasMoreOperations() {\n\t\t\treturn Object.keys(this.operations).length > ACTION_LIMIT\n\t\t},\n\t\tgetMainOperations() {\n\t\t\tif (this.showMoreOperations) {\n\t\t\t\treturn Object.values(this.operations)\n\t\t\t}\n\t\t\treturn Object.values(this.operations).slice(0, ACTION_LIMIT)\n\t\t},\n\t\tshowAppStoreHint() {\n\t\t\treturn this.scope === 0 && this.appstoreEnabled && OC.isUserAdmin()\n\t\t},\n\t},\n\tmounted() {\n\t\tthis.$store.dispatch('fetchRules')\n\t},\n\tmethods: {\n\t\tcreateNewRule(operation) {\n\t\t\tthis.$store.dispatch('createNewRule', operation)\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t#workflowengine {\n\t\tborder-bottom: 1px solid var(--color-border);\n\t}\n\t.section {\n\t\tmax-width: 100vw;\n\n\t\th2.configured-flows {\n\t\t\tmargin-top: 50px;\n\t\t\tmargin-bottom: 0;\n\t\t}\n\t}\n\t.actions {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t\tmax-width: 1200px;\n\t\t.actions__item {\n\t\t\tmax-width: 280px;\n\t\t\tflex-basis: 250px;\n\t\t}\n\t}\n\t.actions__more {\n\t\tmargin-bottom: 10px;\n\t}\n\n\t.slide-enter-active {\n\t\t-moz-transition-duration: 0.3s;\n\t\t-webkit-transition-duration: 0.3s;\n\t\t-o-transition-duration: 0.3s;\n\t\ttransition-duration: 0.3s;\n\t\t-moz-transition-timing-function: ease-in;\n\t\t-webkit-transition-timing-function: ease-in;\n\t\t-o-transition-timing-function: ease-in;\n\t\ttransition-timing-function: ease-in;\n\t}\n\n\t.slide-leave-active {\n\t\t-moz-transition-duration: 0.3s;\n\t\t-webkit-transition-duration: 0.3s;\n\t\t-o-transition-duration: 0.3s;\n\t\ttransition-duration: 0.3s;\n\t\t-moz-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n\t\t-webkit-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n\t\t-o-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n\t\ttransition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n\t}\n\n\t.slide-enter-to, .slide-leave {\n\t\tmax-height: 500px;\n\t\toverflow: hidden;\n\t}\n\n\t.slide-enter, .slide-leave-to {\n\t\toverflow: hidden;\n\t\tmax-height: 0;\n\t\tpadding-top: 0;\n\t\tpadding-bottom: 0;\n\t}\n\n\t@import \"./../styles/operation\";\n\n\t.actions__item.more {\n\t\tbackground-color: var(--color-background-dark);\n\t}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Workflow.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Workflow.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Workflow.vue?vue&type=style&index=0&id=38a7a2e5&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Workflow.vue?vue&type=style&index=0&id=38a7a2e5&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Workflow.vue?vue&type=template&id=38a7a2e5&scoped=true&\"\nimport script from \"./Workflow.vue?vue&type=script&lang=js&\"\nexport * from \"./Workflow.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Workflow.vue?vue&type=style&index=0&id=38a7a2e5&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"38a7a2e5\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"workflowengine\"}},[_c('NcSettingsSection',{attrs:{\"title\":_vm.t('workflowengine', 'Available flows'),\"doc-url\":_vm.workflowDocUrl}},[(_vm.scope === 0)?_c('p',{staticClass:\"settings-hint\"},[_c('a',{attrs:{\"href\":\"https://nextcloud.com/developer/\"}},[_vm._v(_vm._s(_vm.t('workflowengine', 'For details on how to write your own flow, check out the development documentation.')))])]):_vm._e(),_vm._v(\" \"),_c('transition-group',{staticClass:\"actions\",attrs:{\"name\":\"slide\",\"tag\":\"div\"}},[_vm._l((_vm.getMainOperations),function(operation){return _c('Operation',{key:operation.id,attrs:{\"operation\":operation},nativeOn:{\"click\":function($event){return _vm.createNewRule(operation)}}})}),_vm._v(\" \"),(_vm.showAppStoreHint)?_c('a',{key:'add',staticClass:\"actions__item colored more\",attrs:{\"href\":_vm.appstoreUrl}},[_c('div',{staticClass:\"icon icon-add\"}),_vm._v(\" \"),_c('div',{staticClass:\"actions__item__description\"},[_c('h3',[_vm._v(_vm._s(_vm.t('workflowengine', 'More flows')))]),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.t('workflowengine', 'Browse the App Store')))])])]):_vm._e()],2),_vm._v(\" \"),(_vm.hasMoreOperations)?_c('div',{staticClass:\"actions__more\"},[_c('NcButton',{on:{\"click\":function($event){_vm.showMoreOperations = !_vm.showMoreOperations}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.showMoreOperations)?_c('MenuUp',{attrs:{\"size\":20}}):_c('MenuDown',{attrs:{\"size\":20}})]},proxy:true}],null,false,3801522717)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.showMoreOperations ? _vm.t('workflowengine', 'Show less') : _vm.t('workflowengine', 'Show more'))+\"\\n\\t\\t\\t\")])],1):_vm._e(),_vm._v(\" \"),(_vm.scope === 0)?_c('h2',{staticClass:\"configured-flows\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('workflowengine', 'Configured flows'))+\"\\n\\t\\t\")]):_c('h2',{staticClass:\"configured-flows\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('workflowengine', 'Your flows'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),(_vm.rules.length > 0)?_c('transition-group',{attrs:{\"name\":\"slide\"}},_vm._l((_vm.rules),function(rule){return _c('Rule',{key:rule.id,attrs:{\"rule\":rule}})}),1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst regexRegex = /^\\/(.*)\\/([gui]{0,3})$/\nconst regexIPv4 = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\/(3[0-2]|[1-2][0-9]|[1-9])$/\nconst regexIPv6 = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(1([01][0-9]|2[0-8])|[1-9][0-9]|[0-9])$/\n\nconst validateRegex = function(string) {\n\tif (!string) {\n\t\treturn false\n\t}\n\treturn regexRegex.exec(string) !== null\n}\n\nconst validateIPv4 = function(string) {\n\tif (!string) {\n\t\treturn false\n\t}\n\treturn regexIPv4.exec(string) !== null\n}\n\nconst validateIPv6 = function(string) {\n\tif (!string) {\n\t\treturn false\n\t}\n\treturn regexIPv6.exec(string) !== null\n}\n\nconst stringValidator = (check) => {\n\tif (check.operator === 'matches' || check.operator === '!matches') {\n\t\treturn validateRegex(check.value)\n\t}\n\treturn true\n}\n\nexport { validateRegex, stringValidator, validateIPv4, validateIPv6 }\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst valueMixin = {\n\tprops: {\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tcheck: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => { return {} },\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tnewValue: '',\n\t\t}\n\t},\n\twatch: {\n\t\tvalue: {\n\t\t\timmediate: true,\n\t\t\thandler(value) {\n\t\t\t\tthis.updateInternalValue(value)\n\t\t\t},\n\t\t},\n\t},\n\tmethods: {\n\t\tupdateInternalValue(value) {\n\t\t\tthis.newValue = value\n\t\t},\n\t},\n}\n\nexport default valueMixin\n","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div>\n\t\t<NcMultiselect :value=\"currentValue\"\n\t\t\t:placeholder=\"t('workflowengine', 'Select a file type')\"\n\t\t\tlabel=\"label\"\n\t\t\ttrack-by=\"pattern\"\n\t\t\t:options=\"options\"\n\t\t\t:multiple=\"false\"\n\t\t\t:tagging=\"false\"\n\t\t\t@input=\"setValue\">\n\t\t\t<template slot=\"singleLabel\" slot-scope=\"props\">\n\t\t\t\t<span v-if=\"props.option.icon\" class=\"option__icon\" :class=\"props.option.icon\" />\n\t\t\t\t<img v-else\n\t\t\t\t\tclass=\"option__icon-img\"\n\t\t\t\t\t:src=\"props.option.iconUrl\"\n\t\t\t\t\talt=\"\">\n\t\t\t\t<span class=\"option__title option__title_single\">{{ props.option.label }}</span>\n\t\t\t</template>\n\t\t\t<template slot=\"option\" slot-scope=\"props\">\n\t\t\t\t<span v-if=\"props.option.icon\" class=\"option__icon\" :class=\"props.option.icon\" />\n\t\t\t\t<img v-else\n\t\t\t\t\tclass=\"option__icon-img\"\n\t\t\t\t\t:src=\"props.option.iconUrl\"\n\t\t\t\t\talt=\"\">\n\t\t\t\t<span class=\"option__title\">{{ props.option.label }}</span>\n\t\t\t</template>\n\t\t</NcMultiselect>\n\t\t<input v-if=\"!isPredefined\"\n\t\t\ttype=\"text\"\n\t\t\t:value=\"currentValue.pattern\"\n\t\t\t:placeholder=\"t('workflowengine', 'e.g. httpd/unix-directory')\"\n\t\t\t@input=\"updateCustom\">\n\t</div>\n</template>\n\n<script>\nimport NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect'\nimport valueMixin from './../../mixins/valueMixin'\nimport { imagePath } from '@nextcloud/router'\n\nexport default {\n\tname: 'FileMimeType',\n\tcomponents: {\n\t\tNcMultiselect,\n\t},\n\tmixins: [\n\t\tvalueMixin,\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tpredefinedTypes: [\n\t\t\t\t{\n\t\t\t\t\ticon: 'icon-folder',\n\t\t\t\t\tlabel: t('workflowengine', 'Folder'),\n\t\t\t\t\tpattern: 'httpd/unix-directory',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ticon: 'icon-picture',\n\t\t\t\t\tlabel: t('workflowengine', 'Images'),\n\t\t\t\t\tpattern: '/image\\\\/.*/',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ticonUrl: imagePath('core', 'filetypes/x-office-document'),\n\t\t\t\t\tlabel: t('workflowengine', 'Office documents'),\n\t\t\t\t\tpattern: '/(vnd\\\\.(ms-|openxmlformats-|oasis\\\\.opendocument).*)$/',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ticonUrl: imagePath('core', 'filetypes/application-pdf'),\n\t\t\t\t\tlabel: t('workflowengine', 'PDF documents'),\n\t\t\t\t\tpattern: 'application/pdf',\n\t\t\t\t},\n\t\t\t],\n\t\t}\n\t},\n\tcomputed: {\n\t\toptions() {\n\t\t\treturn [...this.predefinedTypes, this.customValue]\n\t\t},\n\t\tisPredefined() {\n\t\t\tconst matchingPredefined = this.predefinedTypes.find((type) => this.newValue === type.pattern)\n\t\t\tif (matchingPredefined) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn false\n\t\t},\n\t\tcustomValue() {\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom MIME type'),\n\t\t\t\tpattern: '',\n\t\t\t}\n\t\t},\n\t\tcurrentValue() {\n\t\t\tconst matchingPredefined = this.predefinedTypes.find((type) => this.newValue === type.pattern)\n\t\t\tif (matchingPredefined) {\n\t\t\t\treturn matchingPredefined\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom mimetype'),\n\t\t\t\tpattern: this.newValue,\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\tvalidateRegex(string) {\n\t\t\tconst regexRegex = /^\\/(.*)\\/([gui]{0,3})$/\n\t\t\tconst result = regexRegex.exec(string)\n\t\t\treturn result !== null\n\t\t},\n\t\tsetValue(value) {\n\t\t\tif (value !== null) {\n\t\t\t\tthis.newValue = value.pattern\n\t\t\t\tthis.$emit('input', this.newValue)\n\t\t\t}\n\t\t},\n\t\tupdateCustom(event) {\n\t\t\tthis.newValue = event.target.value\n\t\t\tthis.$emit('input', this.newValue)\n\t\t},\n\t},\n}\n</script>\n<style scoped lang=\"scss\">\n\t.multiselect, input[type='text'] {\n\t\twidth: 100%;\n\t}\n\t.multiselect >>> .multiselect__content-wrapper li>span,\n\t.multiselect >>> .multiselect__single {\n\t\tdisplay: flex;\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n\n\t.option__icon {\n\t\tdisplay: inline-block;\n\t\tmin-width: 30px;\n\t\tbackground-position: left;\n\t}\n\n\t.option__icon-img {\n\t\tmargin-right: 14px;\n\t}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileMimeType.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileMimeType.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileMimeType.vue?vue&type=style&index=0&id=2312566e&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileMimeType.vue?vue&type=style&index=0&id=2312566e&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileMimeType.vue?vue&type=template&id=2312566e&scoped=true&\"\nimport script from \"./FileMimeType.vue?vue&type=script&lang=js&\"\nexport * from \"./FileMimeType.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FileMimeType.vue?vue&type=style&index=0&id=2312566e&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2312566e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('NcMultiselect',{attrs:{\"value\":_vm.currentValue,\"placeholder\":_vm.t('workflowengine', 'Select a file type'),\"label\":\"label\",\"track-by\":\"pattern\",\"options\":_vm.options,\"multiple\":false,\"tagging\":false},on:{\"input\":_vm.setValue},scopedSlots:_vm._u([{key:\"singleLabel\",fn:function(props){return [(props.option.icon)?_c('span',{staticClass:\"option__icon\",class:props.option.icon}):_c('img',{staticClass:\"option__icon-img\",attrs:{\"src\":props.option.iconUrl,\"alt\":\"\"}}),_vm._v(\" \"),_c('span',{staticClass:\"option__title option__title_single\"},[_vm._v(_vm._s(props.option.label))])]}},{key:\"option\",fn:function(props){return [(props.option.icon)?_c('span',{staticClass:\"option__icon\",class:props.option.icon}):_c('img',{staticClass:\"option__icon-img\",attrs:{\"src\":props.option.iconUrl,\"alt\":\"\"}}),_vm._v(\" \"),_c('span',{staticClass:\"option__title\"},[_vm._v(_vm._s(props.option.label))])]}}])}),_vm._v(\" \"),(!_vm.isPredefined)?_c('input',{attrs:{\"type\":\"text\",\"placeholder\":_vm.t('workflowengine', 'e.g. httpd/unix-directory')},domProps:{\"value\":_vm.currentValue.pattern},on:{\"input\":_vm.updateCustom}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileSystemTag.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileSystemTag.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<MultiselectTags v-model=\"newValue\"\n\t\t:multiple=\"false\"\n\t\t@input=\"update\" />\n</template>\n\n<script>\nimport MultiselectTags from '@nextcloud/vue/dist/Components/NcMultiselectTags.js'\n\nexport default {\n\tname: 'FileSystemTag',\n\tcomponents: {\n\t\tMultiselectTags,\n\t},\n\tprops: {\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tnewValue: [],\n\t\t}\n\t},\n\twatch: {\n\t\tvalue() {\n\t\t\tthis.updateValue()\n\t\t},\n\t},\n\tbeforeMount() {\n\t\tthis.updateValue()\n\t},\n\tmethods: {\n\t\tupdateValue() {\n\t\t\tif (this.value !== '') {\n\t\t\t\tthis.newValue = this.value\n\t\t\t} else {\n\t\t\t\tthis.newValue = null\n\t\t\t}\n\t\t},\n\t\tupdate() {\n\t\t\tthis.$emit('input', this.newValue || '')\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\n</style>\n","import { render, staticRenderFns } from \"./FileSystemTag.vue?vue&type=template&id=1611b92c&scoped=true&\"\nimport script from \"./FileSystemTag.vue?vue&type=script&lang=js&\"\nexport * from \"./FileSystemTag.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1611b92c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('MultiselectTags',{attrs:{\"multiple\":false},on:{\"input\":_vm.update},model:{value:(_vm.newValue),callback:function ($$v) {_vm.newValue=$$v},expression:\"newValue\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Arthur Schiwon <blizzz@arthur-schiwon.de>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { stringValidator, validateIPv4, validateIPv6 } from '../../helpers/validators'\nimport FileMimeType from './FileMimeType'\nimport FileSystemTag from './FileSystemTag'\n\nconst stringOrRegexOperators = () => {\n\treturn [\n\t\t{ operator: 'matches', name: t('workflowengine', 'matches') },\n\t\t{ operator: '!matches', name: t('workflowengine', 'does not match') },\n\t\t{ operator: 'is', name: t('workflowengine', 'is') },\n\t\t{ operator: '!is', name: t('workflowengine', 'is not') },\n\t]\n}\n\nconst FileChecks = [\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\FileName',\n\t\tname: t('workflowengine', 'File name'),\n\t\toperators: stringOrRegexOperators,\n\t\tplaceholder: (check) => {\n\t\t\tif (check.operator === 'matches' || check.operator === '!matches') {\n\t\t\t\treturn '/^dummy-.+$/i'\n\t\t\t}\n\t\t\treturn 'filename.txt'\n\t\t},\n\t\tvalidate: stringValidator,\n\t},\n\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\FileMimeType',\n\t\tname: t('workflowengine', 'File MIME type'),\n\t\toperators: stringOrRegexOperators,\n\t\tcomponent: FileMimeType,\n\t},\n\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\FileSize',\n\t\tname: t('workflowengine', 'File size (upload)'),\n\t\toperators: [\n\t\t\t{ operator: 'less', name: t('workflowengine', 'less') },\n\t\t\t{ operator: '!greater', name: t('workflowengine', 'less or equals') },\n\t\t\t{ operator: '!less', name: t('workflowengine', 'greater or equals') },\n\t\t\t{ operator: 'greater', name: t('workflowengine', 'greater') },\n\t\t],\n\t\tplaceholder: (check) => '5 MB',\n\t\tvalidate: (check) => check.value ? check.value.match(/^[0-9]+[ ]?[kmgt]?b$/i) !== null : false,\n\t},\n\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\RequestRemoteAddress',\n\t\tname: t('workflowengine', 'Request remote address'),\n\t\toperators: [\n\t\t\t{ operator: 'matchesIPv4', name: t('workflowengine', 'matches IPv4') },\n\t\t\t{ operator: '!matchesIPv4', name: t('workflowengine', 'does not match IPv4') },\n\t\t\t{ operator: 'matchesIPv6', name: t('workflowengine', 'matches IPv6') },\n\t\t\t{ operator: '!matchesIPv6', name: t('workflowengine', 'does not match IPv6') },\n\t\t],\n\t\tplaceholder: (check) => {\n\t\t\tif (check.operator === 'matchesIPv6' || check.operator === '!matchesIPv6') {\n\t\t\t\treturn '::1/128'\n\t\t\t}\n\t\t\treturn '127.0.0.1/32'\n\t\t},\n\t\tvalidate: (check) => {\n\t\t\tif (check.operator === 'matchesIPv6' || check.operator === '!matchesIPv6') {\n\t\t\t\treturn validateIPv6(check.value)\n\t\t\t}\n\t\t\treturn validateIPv4(check.value)\n\t\t},\n\t},\n\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\FileSystemTags',\n\t\tname: t('workflowengine', 'File system tag'),\n\t\toperators: [\n\t\t\t{ operator: 'is', name: t('workflowengine', 'is tagged with') },\n\t\t\t{ operator: '!is', name: t('workflowengine', 'is not tagged with') },\n\t\t],\n\t\tcomponent: FileSystemTag,\n\t},\n]\n\nexport default FileChecks\n","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div>\n\t\t<NcMultiselect :value=\"currentValue\"\n\t\t\t:placeholder=\"t('workflowengine', 'Select a user agent')\"\n\t\t\tlabel=\"label\"\n\t\t\ttrack-by=\"pattern\"\n\t\t\t:options=\"options\"\n\t\t\t:multiple=\"false\"\n\t\t\t:tagging=\"false\"\n\t\t\t@input=\"setValue\">\n\t\t\t<template slot=\"singleLabel\" slot-scope=\"props\">\n\t\t\t\t<span class=\"option__icon\" :class=\"props.option.icon\" />\n\t\t\t\t<!-- v-html can be used here as t() always passes our translated strings though DOMPurify.sanitize -->\n\t\t\t\t<!-- eslint-disable-next-line vue/no-v-html -->\n\t\t\t\t<span class=\"option__title option__title_single\" v-html=\"props.option.label\" />\n\t\t\t</template>\n\t\t\t<template slot=\"option\" slot-scope=\"props\">\n\t\t\t\t<span class=\"option__icon\" :class=\"props.option.icon\" />\n\t\t\t\t<!-- eslint-disable-next-line vue/no-v-html -->\n\t\t\t\t<span v-if=\"props.option.$groupLabel\" class=\"option__title\" v-html=\"props.option.$groupLabel\" />\n\t\t\t\t<!-- eslint-disable-next-line vue/no-v-html -->\n\t\t\t\t<span v-else class=\"option__title\" v-html=\"props.option.label\" />\n\t\t\t</template>\n\t\t</NcMultiselect>\n\t\t<input v-if=\"!isPredefined\"\n\t\t\ttype=\"text\"\n\t\t\t:value=\"currentValue.pattern\"\n\t\t\t@input=\"updateCustom\">\n\t</div>\n</template>\n\n<script>\nimport NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect'\nimport valueMixin from '../../mixins/valueMixin'\n\nexport default {\n\tname: 'RequestUserAgent',\n\tcomponents: {\n\t\tNcMultiselect,\n\t},\n\tmixins: [\n\t\tvalueMixin,\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tnewValue: '',\n\t\t\tpredefinedTypes: [\n\t\t\t\t{ pattern: 'android', label: t('workflowengine', 'Android client'), icon: 'icon-phone' },\n\t\t\t\t{ pattern: 'ios', label: t('workflowengine', 'iOS client'), icon: 'icon-phone' },\n\t\t\t\t{ pattern: 'desktop', label: t('workflowengine', 'Desktop client'), icon: 'icon-desktop' },\n\t\t\t\t{ pattern: 'mail', label: t('workflowengine', 'Thunderbird & Outlook addons'), icon: 'icon-mail' },\n\t\t\t],\n\t\t}\n\t},\n\tcomputed: {\n\t\toptions() {\n\t\t\treturn [...this.predefinedTypes, this.customValue]\n\t\t},\n\t\tmatchingPredefined() {\n\t\t\treturn this.predefinedTypes\n\t\t\t\t.find((type) => this.newValue === type.pattern)\n\t\t},\n\t\tisPredefined() {\n\t\t\treturn !!this.matchingPredefined\n\t\t},\n\t\tcustomValue() {\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom user agent'),\n\t\t\t\tpattern: '',\n\t\t\t}\n\t\t},\n\t\tcurrentValue() {\n\t\t\tif (this.matchingPredefined) {\n\t\t\t\treturn this.matchingPredefined\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom user agent'),\n\t\t\t\tpattern: this.newValue,\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\tvalidateRegex(string) {\n\t\t\tconst regexRegex = /^\\/(.*)\\/([gui]{0,3})$/\n\t\t\tconst result = regexRegex.exec(string)\n\t\t\treturn result !== null\n\t\t},\n\t\tsetValue(value) {\n\t\t\t// TODO: check if value requires a regex and set the check operator according to that\n\t\t\tif (value !== null) {\n\t\t\t\tthis.newValue = value.pattern\n\t\t\t\tthis.$emit('input', this.newValue)\n\t\t\t}\n\t\t},\n\t\tupdateCustom(event) {\n\t\t\tthis.newValue = event.target.value\n\t\t\tthis.$emit('input', this.newValue)\n\t\t},\n\t},\n}\n</script>\n<style scoped>\n\t.multiselect, input[type='text'] {\n\t\twidth: 100%;\n\t}\n\n\t.multiselect .multiselect__content-wrapper li>span {\n\t\tdisplay: flex;\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n\t.multiselect::v-deep .multiselect__single {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n\t.option__icon {\n\t\tdisplay: inline-block;\n\t\tmin-width: 30px;\n\t\tbackground-position: left;\n\t}\n\t.option__title {\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestUserAgent.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestUserAgent.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestUserAgent.vue?vue&type=style&index=0&id=bd5cb750&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestUserAgent.vue?vue&type=style&index=0&id=bd5cb750&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./RequestUserAgent.vue?vue&type=template&id=bd5cb750&scoped=true&\"\nimport script from \"./RequestUserAgent.vue?vue&type=script&lang=js&\"\nexport * from \"./RequestUserAgent.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RequestUserAgent.vue?vue&type=style&index=0&id=bd5cb750&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"bd5cb750\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('NcMultiselect',{attrs:{\"value\":_vm.currentValue,\"placeholder\":_vm.t('workflowengine', 'Select a user agent'),\"label\":\"label\",\"track-by\":\"pattern\",\"options\":_vm.options,\"multiple\":false,\"tagging\":false},on:{\"input\":_vm.setValue},scopedSlots:_vm._u([{key:\"singleLabel\",fn:function(props){return [_c('span',{staticClass:\"option__icon\",class:props.option.icon}),_vm._v(\" \"),_c('span',{staticClass:\"option__title option__title_single\",domProps:{\"innerHTML\":_vm._s(props.option.label)}})]}},{key:\"option\",fn:function(props){return [_c('span',{staticClass:\"option__icon\",class:props.option.icon}),_vm._v(\" \"),(props.option.$groupLabel)?_c('span',{staticClass:\"option__title\",domProps:{\"innerHTML\":_vm._s(props.option.$groupLabel)}}):_c('span',{staticClass:\"option__title\",domProps:{\"innerHTML\":_vm._s(props.option.label)}})]}}])}),_vm._v(\" \"),(!_vm.isPredefined)?_c('input',{attrs:{\"type\":\"text\"},domProps:{\"value\":_vm.currentValue.pattern},on:{\"input\":_vm.updateCustom}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<div class=\"timeslot\">\n\t\t<input v-model=\"newValue.startTime\"\n\t\t\ttype=\"text\"\n\t\t\tclass=\"timeslot--start\"\n\t\t\tplaceholder=\"e.g. 08:00\"\n\t\t\t@input=\"update\">\n\t\t<input v-model=\"newValue.endTime\"\n\t\t\ttype=\"text\"\n\t\t\tplaceholder=\"e.g. 18:00\"\n\t\t\t@input=\"update\">\n\t\t<p v-if=\"!valid\" class=\"invalid-hint\">\n\t\t\t{{ t('workflowengine', 'Please enter a valid time span') }}\n\t\t</p>\n\t\t<NcMultiselect v-show=\"valid\"\n\t\t\tv-model=\"newValue.timezone\"\n\t\t\t:options=\"timezones\"\n\t\t\t@input=\"update\" />\n\t</div>\n</template>\n\n<script>\nimport NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect'\nimport moment from 'moment-timezone'\nimport valueMixin from '../../mixins/valueMixin'\n\nconst zones = moment.tz.names()\nexport default {\n\tname: 'RequestTime',\n\tcomponents: {\n\t\tNcMultiselect,\n\t},\n\tmixins: [\n\t\tvalueMixin,\n\t],\n\tprops: {\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\ttimezones: zones,\n\t\t\tvalid: false,\n\t\t\tnewValue: {\n\t\t\t\tstartTime: null,\n\t\t\t\tendTime: null,\n\t\t\t\ttimezone: moment.tz.guess(),\n\t\t\t},\n\t\t}\n\t},\n\tmounted() {\n\t\tthis.validate()\n\t},\n\tmethods: {\n\t\tupdateInternalValue(value) {\n\t\t\ttry {\n\t\t\t\tconst data = JSON.parse(value)\n\t\t\t\tif (data.length === 2) {\n\t\t\t\t\tthis.newValue = {\n\t\t\t\t\t\tstartTime: data[0].split(' ', 2)[0],\n\t\t\t\t\t\tendTime: data[1].split(' ', 2)[0],\n\t\t\t\t\t\ttimezone: data[0].split(' ', 2)[1],\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t// ignore invalid values\n\t\t\t}\n\t\t},\n\t\tvalidate() {\n\t\t\tthis.valid = this.newValue.startTime && this.newValue.startTime.match(/^(0[0-9]|1[0-9]|2[0-3]|[0-9]):[0-5][0-9]$/i) !== null\n\t\t\t\t&& this.newValue.endTime && this.newValue.endTime.match(/^(0[0-9]|1[0-9]|2[0-3]|[0-9]):[0-5][0-9]$/i) !== null\n\t\t\t\t&& moment.tz.zone(this.newValue.timezone) !== null\n\t\t\tif (this.valid) {\n\t\t\t\tthis.$emit('valid')\n\t\t\t} else {\n\t\t\t\tthis.$emit('invalid')\n\t\t\t}\n\t\t\treturn this.valid\n\t\t},\n\t\tupdate() {\n\t\t\tif (this.newValue.timezone === null) {\n\t\t\t\tthis.newValue.timezone = moment.tz.guess()\n\t\t\t}\n\t\t\tif (this.validate()) {\n\t\t\t\tconst output = `[\"${this.newValue.startTime} ${this.newValue.timezone}\",\"${this.newValue.endTime} ${this.newValue.timezone}\"]`\n\t\t\t\tthis.$emit('input', output)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n\t.timeslot {\n\t\tdisplay: flex;\n\t\tflex-grow: 1;\n\t\tflex-wrap: wrap;\n\t\tmax-width: 180px;\n\n\t\t.multiselect {\n\t\t\twidth: 100%;\n\t\t\tmargin-bottom: 5px;\n\t\t}\n\n\t\t.multiselect::v-deep .multiselect__tags:not(:hover):not(:focus):not(:active) {\n\t\t\tborder: 1px solid transparent;\n\t\t}\n\n\t\tinput[type=text] {\n\t\t\twidth: 50%;\n\t\t\tmargin: 0;\n\t\t\tmargin-bottom: 5px;\n\n\t\t\t&.timeslot--start {\n\t\t\t\tmargin-right: 5px;\n\t\t\t\twidth: calc(50% - 5px);\n\t\t\t}\n\t\t}\n\n\t\t.invalid-hint {\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestTime.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestTime.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestTime.vue?vue&type=style&index=0&id=c064bb1a&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestTime.vue?vue&type=style&index=0&id=c064bb1a&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./RequestTime.vue?vue&type=template&id=c064bb1a&scoped=true&\"\nimport script from \"./RequestTime.vue?vue&type=script&lang=js&\"\nexport * from \"./RequestTime.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RequestTime.vue?vue&type=style&index=0&id=c064bb1a&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c064bb1a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"timeslot\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newValue.startTime),expression:\"newValue.startTime\"}],staticClass:\"timeslot--start\",attrs:{\"type\":\"text\",\"placeholder\":\"e.g. 08:00\"},domProps:{\"value\":(_vm.newValue.startTime)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.$set(_vm.newValue, \"startTime\", $event.target.value)},_vm.update]}}),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newValue.endTime),expression:\"newValue.endTime\"}],attrs:{\"type\":\"text\",\"placeholder\":\"e.g. 18:00\"},domProps:{\"value\":(_vm.newValue.endTime)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.$set(_vm.newValue, \"endTime\", $event.target.value)},_vm.update]}}),_vm._v(\" \"),(!_vm.valid)?_c('p',{staticClass:\"invalid-hint\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('workflowengine', 'Please enter a valid time span'))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcMultiselect',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.valid),expression:\"valid\"}],attrs:{\"options\":_vm.timezones},on:{\"input\":_vm.update},model:{value:(_vm.newValue.timezone),callback:function ($$v) {_vm.$set(_vm.newValue, \"timezone\", $$v)},expression:\"newValue.timezone\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div>\n\t\t<NcMultiselect :value=\"currentValue\"\n\t\t\t:placeholder=\"t('workflowengine', 'Select a request URL')\"\n\t\t\tlabel=\"label\"\n\t\t\ttrack-by=\"pattern\"\n\t\t\tgroup-values=\"children\"\n\t\t\tgroup-label=\"label\"\n\t\t\t:options=\"options\"\n\t\t\t:multiple=\"false\"\n\t\t\t:tagging=\"false\"\n\t\t\t@input=\"setValue\">\n\t\t\t<template slot=\"singleLabel\" slot-scope=\"props\">\n\t\t\t\t<span class=\"option__icon\" :class=\"props.option.icon\" />\n\t\t\t\t<span class=\"option__title option__title_single\">{{ props.option.label }}</span>\n\t\t\t</template>\n\t\t\t<template slot=\"option\" slot-scope=\"props\">\n\t\t\t\t<span class=\"option__icon\" :class=\"props.option.icon\" />\n\t\t\t\t<span class=\"option__title\">{{ props.option.label }} {{ props.option.$groupLabel }}</span>\n\t\t\t</template>\n\t\t</NcMultiselect>\n\t\t<input v-if=\"!isPredefined\"\n\t\t\ttype=\"text\"\n\t\t\t:value=\"currentValue.pattern\"\n\t\t\t:placeholder=\"placeholder\"\n\t\t\t@input=\"updateCustom\">\n\t</div>\n</template>\n\n<script>\nimport NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect'\nimport valueMixin from '../../mixins/valueMixin'\n\nexport default {\n\tname: 'RequestURL',\n\tcomponents: {\n\t\tNcMultiselect,\n\t},\n\tmixins: [\n\t\tvalueMixin,\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tnewValue: '',\n\t\t\tpredefinedTypes: [\n\t\t\t\t{\n\t\t\t\t\tlabel: t('workflowengine', 'Predefined URLs'),\n\t\t\t\t\tchildren: [\n\t\t\t\t\t\t{ pattern: 'webdav', label: t('workflowengine', 'Files WebDAV') },\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t}\n\t},\n\tcomputed: {\n\t\toptions() {\n\t\t\treturn [...this.predefinedTypes, this.customValue]\n\t\t},\n\t\tplaceholder() {\n\t\t\tif (this.check.operator === 'matches' || this.check.operator === '!matches') {\n\t\t\t\treturn '/^https\\\\:\\\\/\\\\/localhost\\\\/index\\\\.php$/i'\n\t\t\t}\n\t\t\treturn 'https://localhost/index.php'\n\t\t},\n\t\tmatchingPredefined() {\n\t\t\treturn this.predefinedTypes\n\t\t\t\t.map(groups => groups.children)\n\t\t\t\t.flat()\n\t\t\t\t.find((type) => this.newValue === type.pattern)\n\t\t},\n\t\tisPredefined() {\n\t\t\treturn !!this.matchingPredefined\n\t\t},\n\t\tcustomValue() {\n\t\t\treturn {\n\t\t\t\tlabel: t('workflowengine', 'Others'),\n\t\t\t\tchildren: [\n\t\t\t\t\t{\n\t\t\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\t\t\tlabel: t('workflowengine', 'Custom URL'),\n\t\t\t\t\t\tpattern: '',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t}\n\t\t},\n\t\tcurrentValue() {\n\t\t\tif (this.matchingPredefined) {\n\t\t\t\treturn this.matchingPredefined\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ticon: 'icon-settings-dark',\n\t\t\t\tlabel: t('workflowengine', 'Custom URL'),\n\t\t\t\tpattern: this.newValue,\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\tvalidateRegex(string) {\n\t\t\tconst regexRegex = /^\\/(.*)\\/([gui]{0,3})$/\n\t\t\tconst result = regexRegex.exec(string)\n\t\t\treturn result !== null\n\t\t},\n\t\tsetValue(value) {\n\t\t\t// TODO: check if value requires a regex and set the check operator according to that\n\t\t\tif (value !== null) {\n\t\t\t\tthis.newValue = value.pattern\n\t\t\t\tthis.$emit('input', this.newValue)\n\t\t\t}\n\t\t},\n\t\tupdateCustom(event) {\n\t\t\tthis.newValue = event.target.value\n\t\t\tthis.$emit('input', this.newValue)\n\t\t},\n\t},\n}\n</script>\n<style scoped lang=\"scss\">\n\t.multiselect, input[type='text'] {\n\t\twidth: 100%;\n\t}\n\n\t.option__icon {\n\t\tdisplay: inline-block;\n\t\tmin-width: 30px;\n\t\tbackground-position: left;\n\t}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestURL.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestURL.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestURL.vue?vue&type=style&index=0&id=efaa5484&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestURL.vue?vue&type=style&index=0&id=efaa5484&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./RequestURL.vue?vue&type=template&id=efaa5484&scoped=true&\"\nimport script from \"./RequestURL.vue?vue&type=script&lang=js&\"\nexport * from \"./RequestURL.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RequestURL.vue?vue&type=style&index=0&id=efaa5484&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"efaa5484\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('NcMultiselect',{attrs:{\"value\":_vm.currentValue,\"placeholder\":_vm.t('workflowengine', 'Select a request URL'),\"label\":\"label\",\"track-by\":\"pattern\",\"group-values\":\"children\",\"group-label\":\"label\",\"options\":_vm.options,\"multiple\":false,\"tagging\":false},on:{\"input\":_vm.setValue},scopedSlots:_vm._u([{key:\"singleLabel\",fn:function(props){return [_c('span',{staticClass:\"option__icon\",class:props.option.icon}),_vm._v(\" \"),_c('span',{staticClass:\"option__title option__title_single\"},[_vm._v(_vm._s(props.option.label))])]}},{key:\"option\",fn:function(props){return [_c('span',{staticClass:\"option__icon\",class:props.option.icon}),_vm._v(\" \"),_c('span',{staticClass:\"option__title\"},[_vm._v(_vm._s(props.option.label)+\" \"+_vm._s(props.option.$groupLabel))])]}}])}),_vm._v(\" \"),(!_vm.isPredefined)?_c('input',{attrs:{\"type\":\"text\",\"placeholder\":_vm.placeholder},domProps:{\"value\":_vm.currentValue.pattern},on:{\"input\":_vm.updateCustom}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div>\n\t\t<NcMultiselect :value=\"currentValue\"\n\t\t\t:loading=\"status.isLoading && groups.length === 0\"\n\t\t\t:options=\"groups\"\n\t\t\t:multiple=\"false\"\n\t\t\tlabel=\"displayname\"\n\t\t\ttrack-by=\"id\"\n\t\t\t@search-change=\"searchAsync\"\n\t\t\t@input=\"(value) => $emit('input', value.id)\" />\n\t</div>\n</template>\n\n<script>\nimport NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect'\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nconst groups = []\nconst status = {\n\tisLoading: false,\n}\n\nexport default {\n\tname: 'RequestUserGroup',\n\tcomponents: {\n\t\tNcMultiselect,\n\t},\n\tprops: {\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tcheck: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => { return {} },\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tgroups,\n\t\t\tstatus,\n\t\t}\n\t},\n\tcomputed: {\n\t\tcurrentValue() {\n\t\t\treturn this.groups.find(group => group.id === this.value) || null\n\t\t},\n\t},\n\tasync mounted() {\n\t\tif (this.groups.length === 0) {\n\t\t\tawait this.searchAsync('')\n\t\t}\n\t\tif (this.currentValue === null) {\n\t\t\tawait this.searchAsync(this.value)\n\t\t}\n\t},\n\tmethods: {\n\t\tsearchAsync(searchQuery) {\n\t\t\tif (this.status.isLoading) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.status.isLoading = true\n\t\t\treturn axios.get(generateOcsUrl('cloud/groups/details?limit=20&search={searchQuery}', { searchQuery })).then((response) => {\n\t\t\t\tresponse.data.ocs.data.groups.forEach((group) => {\n\t\t\t\t\tthis.addGroup({\n\t\t\t\t\t\tid: group.id,\n\t\t\t\t\t\tdisplayname: group.displayname,\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\tthis.status.isLoading = false\n\t\t\t}, (error) => {\n\t\t\t\tconsole.error('Error while loading group list', error.response)\n\t\t\t})\n\t\t},\n\t\taddGroup(group) {\n\t\t\tconst index = this.groups.findIndex((item) => item.id === group.id)\n\t\t\tif (index === -1) {\n\t\t\t\tthis.groups.push(group)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n<style scoped>\n\t.multiselect {\n\t\twidth: 100%;\n\t}\n</style>\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestUserGroup.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestUserGroup.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestUserGroup.vue?vue&type=style&index=0&id=4bcec2a5&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestUserGroup.vue?vue&type=style&index=0&id=4bcec2a5&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./RequestUserGroup.vue?vue&type=template&id=4bcec2a5&scoped=true&\"\nimport script from \"./RequestUserGroup.vue?vue&type=script&lang=js&\"\nexport * from \"./RequestUserGroup.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RequestUserGroup.vue?vue&type=style&index=0&id=4bcec2a5&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4bcec2a5\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('NcMultiselect',{attrs:{\"value\":_vm.currentValue,\"loading\":_vm.status.isLoading && _vm.groups.length === 0,\"options\":_vm.groups,\"multiple\":false,\"label\":\"displayname\",\"track-by\":\"id\"},on:{\"search-change\":_vm.searchAsync,\"input\":function (value) { return _vm.$emit('input', value.id); }}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport RequestUserAgent from './RequestUserAgent'\nimport RequestTime from './RequestTime'\nimport RequestURL from './RequestURL'\nimport RequestUserGroup from './RequestUserGroup'\n\nconst RequestChecks = [\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\RequestURL',\n\t\tname: t('workflowengine', 'Request URL'),\n\t\toperators: [\n\t\t\t{ operator: 'is', name: t('workflowengine', 'is') },\n\t\t\t{ operator: '!is', name: t('workflowengine', 'is not') },\n\t\t\t{ operator: 'matches', name: t('workflowengine', 'matches') },\n\t\t\t{ operator: '!matches', name: t('workflowengine', 'does not match') },\n\t\t],\n\t\tcomponent: RequestURL,\n\t},\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\RequestTime',\n\t\tname: t('workflowengine', 'Request time'),\n\t\toperators: [\n\t\t\t{ operator: 'in', name: t('workflowengine', 'between') },\n\t\t\t{ operator: '!in', name: t('workflowengine', 'not between') },\n\t\t],\n\t\tcomponent: RequestTime,\n\t},\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\RequestUserAgent',\n\t\tname: t('workflowengine', 'Request user agent'),\n\t\toperators: [\n\t\t\t{ operator: 'is', name: t('workflowengine', 'is') },\n\t\t\t{ operator: '!is', name: t('workflowengine', 'is not') },\n\t\t\t{ operator: 'matches', name: t('workflowengine', 'matches') },\n\t\t\t{ operator: '!matches', name: t('workflowengine', 'does not match') },\n\t\t],\n\t\tcomponent: RequestUserAgent,\n\t},\n\t{\n\t\tclass: 'OCA\\\\WorkflowEngine\\\\Check\\\\UserGroupMembership',\n\t\tname: t('workflowengine', 'User group membership'),\n\t\toperators: [\n\t\t\t{ operator: 'is', name: t('workflowengine', 'is member of') },\n\t\t\t{ operator: '!is', name: t('workflowengine', 'is not member of') },\n\t\t],\n\t\tcomponent: RequestUserGroup,\n\t},\n]\n\nexport default RequestChecks\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport FileChecks from './file'\nimport RequestChecks from './request'\n\nexport default [...FileChecks, ...RequestChecks]\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport Vuex from 'vuex'\nimport store from './store'\nimport Settings from './components/Workflow'\nimport ShippedChecks from './components/Checks'\n\n/**\n * A plugin for displaying a custom value field for checks\n *\n * @typedef {object} CheckPlugin\n * @property {string} class - The PHP class name of the check\n * @property {Comparison[]} operators - A list of possible comparison operations running on the check\n * @property {Vue} component - A vue component to handle the rendering of options\n * The component should handle the v-model directive properly,\n * so it needs a value property to receive data and emit an input\n * event once the data has changed\n * @property {Function} placeholder - Return a placeholder of no custom component is used\n * @property {Function} validate - validate a check if no custom component is used\n */\n\n/**\n * A plugin for extending the admin page representation of an operator\n *\n * @typedef {object} OperatorPlugin\n * @property {string} id - The PHP class name of the check\n * @property {string} operation - Default value for the operation field\n * @property {string} color - Custom color code to be applied for the operator selector\n * @property {Vue} component - A vue component to handle the rendering of options\n * The component should handle the v-model directive properly,\n * so it needs a value property to receive data and emit an input\n * event once the data has changed\n */\n\n/**\n * @typedef {object} Comparison\n * @property {string} operator - value the comparison should have, e.g. !less, greater\n * @property {string} name - Translated readable text, e.g. less or equals\n */\n\n/**\n * Public javascript api for apps to register custom plugins\n */\nwindow.OCA.WorkflowEngine = Object.assign({}, OCA.WorkflowEngine, {\n\n\t/**\n\t *\n\t * @param {CheckPlugin} Plugin the plugin to register\n\t */\n\tregisterCheck(Plugin) {\n\t\tstore.commit('addPluginCheck', Plugin)\n\t},\n\t/**\n\t *\n\t * @param {OperatorPlugin} Plugin the plugin to register\n\t */\n\tregisterOperator(Plugin) {\n\t\tstore.commit('addPluginOperator', Plugin)\n\t},\n})\n\n// Register shipped checks\nShippedChecks.forEach((checkPlugin) => window.OCA.WorkflowEngine.registerCheck(checkPlugin))\n\nVue.use(Vuex)\nVue.prototype.t = t\n\nconst View = Vue.extend(Settings)\nconst workflowengine = new View({\n\tstore,\n})\nworkflowengine.$mount('#workflowengine')\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".check[data-v-fa8ae1f2]{display:flex;flex-wrap:wrap;width:100%;padding-right:20px}.check>*[data-v-fa8ae1f2]:not(.close){width:180px}.check>.comparator[data-v-fa8ae1f2]{min-width:130px;width:130px}.check>.option[data-v-fa8ae1f2]{min-width:230px;width:230px}.check>.multiselect[data-v-fa8ae1f2],.check>input[type=text][data-v-fa8ae1f2]{margin-right:5px;margin-bottom:5px}.check .multiselect[data-v-fa8ae1f2] .multiselect__content-wrapper li>span,.check .multiselect[data-v-fa8ae1f2] .multiselect__single{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}input[type=text][data-v-fa8ae1f2]{margin:0}[data-v-fa8ae1f2]::placeholder{font-size:10px}button.action-item.action-item--single.icon-close[data-v-fa8ae1f2]{height:44px;width:44px;margin-top:-5px;margin-bottom:-5px}.invalid[data-v-fa8ae1f2]{border-color:var(--color-error) !important}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Check.vue\"],\"names\":[],\"mappings\":\"AAsJA,wBACC,YAAA,CACA,cAAA,CACA,UAAA,CACA,kBAAA,CACA,sCACC,WAAA,CAED,oCACC,eAAA,CACA,WAAA,CAED,gCACC,eAAA,CACA,WAAA,CAED,8EAEC,gBAAA,CACA,iBAAA,CAGD,qIAEC,aAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CAGF,kCACC,QAAA,CAED,+BACC,cAAA,CAED,mEACC,WAAA,CACA,UAAA,CACA,eAAA,CACA,kBAAA,CAED,0BACC,0CAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.check {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\twidth: 100%;\\n\\tpadding-right: 20px;\\n\\t& > *:not(.close) {\\n\\t\\twidth: 180px;\\n\\t}\\n\\t& > .comparator {\\n\\t\\tmin-width: 130px;\\n\\t\\twidth: 130px;\\n\\t}\\n\\t& > .option {\\n\\t\\tmin-width: 230px;\\n\\t\\twidth: 230px;\\n\\t}\\n\\t& > .multiselect,\\n\\t& > input[type=text] {\\n\\t\\tmargin-right: 5px;\\n\\t\\tmargin-bottom: 5px;\\n\\t}\\n\\n\\t.multiselect::v-deep .multiselect__content-wrapper li>span,\\n\\t.multiselect::v-deep .multiselect__single {\\n\\t\\tdisplay: block;\\n\\t\\twhite-space: nowrap;\\n\\t\\toverflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n}\\ninput[type=text] {\\n\\tmargin: 0;\\n}\\n::placeholder {\\n\\tfont-size: 10px;\\n}\\nbutton.action-item.action-item--single.icon-close {\\n\\theight: 44px;\\n\\twidth: 44px;\\n\\tmargin-top: -5px;\\n\\tmargin-bottom: -5px;\\n}\\n.invalid {\\n\\tborder-color: var(--color-error) !important;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".multiselect[data-v-2312566e],input[type=text][data-v-2312566e]{width:100%}.option__icon[data-v-2312566e]{display:inline-block;min-width:30px;background-position:left}.option__icon-img[data-v-2312566e]{margin-right:14px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Checks/FileMimeType.vue\"],\"names\":[],\"mappings\":\"AAkJA,gEACC,UAAA,CAUD,+BACC,oBAAA,CACA,cAAA,CACA,wBAAA,CAGD,mCACC,iBAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.multiselect, input[type='text'] {\\n\\twidth: 100%;\\n}\\n.multiselect >>> .multiselect__content-wrapper li>span,\\n.multiselect >>> .multiselect__single {\\n\\tdisplay: flex;\\n\\twhite-space: nowrap;\\n\\toverflow: hidden;\\n\\ttext-overflow: ellipsis;\\n}\\n\\n.option__icon {\\n\\tdisplay: inline-block;\\n\\tmin-width: 30px;\\n\\tbackground-position: left;\\n}\\n\\n.option__icon-img {\\n\\tmargin-right: 14px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".timeslot[data-v-c064bb1a]{display:flex;flex-grow:1;flex-wrap:wrap;max-width:180px}.timeslot .multiselect[data-v-c064bb1a]{width:100%;margin-bottom:5px}.timeslot .multiselect[data-v-c064bb1a] .multiselect__tags:not(:hover):not(:focus):not(:active){border:1px solid rgba(0,0,0,0)}.timeslot input[type=text][data-v-c064bb1a]{width:50%;margin:0;margin-bottom:5px}.timeslot input[type=text].timeslot--start[data-v-c064bb1a]{margin-right:5px;width:calc(50% - 5px)}.timeslot .invalid-hint[data-v-c064bb1a]{color:var(--color-text-maxcontrast)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Checks/RequestTime.vue\"],\"names\":[],\"mappings\":\"AA+FA,2BACC,YAAA,CACA,WAAA,CACA,cAAA,CACA,eAAA,CAEA,wCACC,UAAA,CACA,iBAAA,CAGD,gGACC,8BAAA,CAGD,4CACC,SAAA,CACA,QAAA,CACA,iBAAA,CAEA,4DACC,gBAAA,CACA,qBAAA,CAIF,yCACC,mCAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.timeslot {\\n\\tdisplay: flex;\\n\\tflex-grow: 1;\\n\\tflex-wrap: wrap;\\n\\tmax-width: 180px;\\n\\n\\t.multiselect {\\n\\t\\twidth: 100%;\\n\\t\\tmargin-bottom: 5px;\\n\\t}\\n\\n\\t.multiselect::v-deep .multiselect__tags:not(:hover):not(:focus):not(:active) {\\n\\t\\tborder: 1px solid transparent;\\n\\t}\\n\\n\\tinput[type=text] {\\n\\t\\twidth: 50%;\\n\\t\\tmargin: 0;\\n\\t\\tmargin-bottom: 5px;\\n\\n\\t\\t&.timeslot--start {\\n\\t\\t\\tmargin-right: 5px;\\n\\t\\t\\twidth: calc(50% - 5px);\\n\\t\\t}\\n\\t}\\n\\n\\t.invalid-hint {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".multiselect[data-v-efaa5484],input[type=text][data-v-efaa5484]{width:100%}.option__icon[data-v-efaa5484]{display:inline-block;min-width:30px;background-position:left}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Checks/RequestURL.vue\"],\"names\":[],\"mappings\":\"AA2IA,gEACC,UAAA,CAGD,+BACC,oBAAA,CACA,cAAA,CACA,wBAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.multiselect, input[type='text'] {\\n\\twidth: 100%;\\n}\\n\\n.option__icon {\\n\\tdisplay: inline-block;\\n\\tmin-width: 30px;\\n\\tbackground-position: left;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".event[data-v-01681aaa]{margin-bottom:5px}.isComplex img[data-v-01681aaa]{vertical-align:text-top}.isComplex span[data-v-01681aaa]{padding-top:2px;display:inline-block}.multiselect[data-v-01681aaa]{width:100%;max-width:550px;margin-top:4px}.multiselect[data-v-01681aaa] .multiselect__single{display:flex}.multiselect[data-v-01681aaa]:not(.multiselect--active) .multiselect__tags{background-color:var(--color-main-background) !important;border:1px solid rgba(0,0,0,0)}.multiselect[data-v-01681aaa] .multiselect__tags{background-color:var(--color-main-background) !important;height:auto;min-height:34px}.multiselect[data-v-01681aaa]:not(.multiselect--disabled) .multiselect__tags .multiselect__single{background-image:var(--icon-triangle-s-dark);background-repeat:no-repeat;background-position:right center}input[data-v-01681aaa]{border:1px solid rgba(0,0,0,0)}.option__title[data-v-01681aaa]{margin-left:5px;color:var(--color-main-text)}.option__title_single[data-v-01681aaa]{font-weight:900}.option__icon[data-v-01681aaa]{width:16px;height:16px;filter:var(--background-invert-if-dark)}.eventlist img[data-v-01681aaa],.eventlist .text[data-v-01681aaa]{vertical-align:middle}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Event.vue\"],\"names\":[],\"mappings\":\"AAiFA,wBACC,iBAAA,CAGA,gCACC,uBAAA,CAED,iCACC,eAAA,CACA,oBAAA,CAGF,8BACC,UAAA,CACA,eAAA,CACA,cAAA,CAED,mDACC,YAAA,CAED,2EACC,wDAAA,CACA,8BAAA,CAGD,iDACC,wDAAA,CACA,WAAA,CACA,eAAA,CAGD,kGACC,4CAAA,CACA,2BAAA,CACA,gCAAA,CAGD,uBACC,8BAAA,CAGD,gCACC,eAAA,CACA,4BAAA,CAED,uCACC,eAAA,CAGD,+BACC,UAAA,CACA,WAAA,CACA,uCAAA,CAGD,kEAEC,qBAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.event {\\n\\tmargin-bottom: 5px;\\n}\\n.isComplex {\\n\\timg {\\n\\t\\tvertical-align: text-top;\\n\\t}\\n\\tspan {\\n\\t\\tpadding-top: 2px;\\n\\t\\tdisplay: inline-block;\\n\\t}\\n}\\n.multiselect {\\n\\twidth: 100%;\\n\\tmax-width: 550px;\\n\\tmargin-top: 4px;\\n}\\n.multiselect::v-deep .multiselect__single {\\n\\tdisplay: flex;\\n}\\n.multiselect:not(.multiselect--active)::v-deep .multiselect__tags {\\n\\tbackground-color: var(--color-main-background) !important;\\n\\tborder: 1px solid transparent;\\n}\\n\\n.multiselect::v-deep .multiselect__tags {\\n\\tbackground-color: var(--color-main-background) !important;\\n\\theight: auto;\\n\\tmin-height: 34px;\\n}\\n\\n.multiselect:not(.multiselect--disabled)::v-deep .multiselect__tags .multiselect__single {\\n\\tbackground-image: var(--icon-triangle-s-dark);\\n\\tbackground-repeat: no-repeat;\\n\\tbackground-position: right center;\\n}\\n\\ninput {\\n\\tborder: 1px solid transparent;\\n}\\n\\n.option__title {\\n\\tmargin-left: 5px;\\n\\tcolor: var(--color-main-text);\\n}\\n.option__title_single {\\n\\tfont-weight: 900;\\n}\\n\\n.option__icon {\\n\\twidth: 16px;\\n\\theight: 16px;\\n\\tfilter: var(--background-invert-if-dark);\\n}\\n\\n.eventlist img,\\n.eventlist .text {\\n\\tvertical-align: middle;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".actions__item[data-v-90eae5ec]{display:flex;flex-wrap:wrap;flex-direction:column;flex-grow:1;margin-left:-1px;padding:10px;border-radius:var(--border-radius-large);margin-right:20px;margin-bottom:20px}.actions__item .icon[data-v-90eae5ec]{display:block;width:100%;height:50px;background-size:50px 50px;background-position:center center;margin-top:10px;margin-bottom:10px;background-repeat:no-repeat}.actions__item__description[data-v-90eae5ec]{text-align:center;flex-grow:1;display:flex;flex-direction:column;align-items:center}.actions__item_options[data-v-90eae5ec]{width:100%;margin-top:10px;padding-left:60px}h3[data-v-90eae5ec],small[data-v-90eae5ec]{padding:6px;display:block}h3[data-v-90eae5ec]{margin:0;padding:0;font-weight:600}small[data-v-90eae5ec]{font-size:10pt;flex-grow:1}.colored[data-v-90eae5ec]:not(.more){background-color:var(--color-primary-element)}.colored:not(.more) h3[data-v-90eae5ec],.colored:not(.more) small[data-v-90eae5ec]{color:var(--color-primary-text)}.actions__item[data-v-90eae5ec]:not(.colored){flex-direction:row}.actions__item:not(.colored) .actions__item__description[data-v-90eae5ec]{padding-top:5px;text-align:left;width:calc(100% - 105px)}.actions__item:not(.colored) .actions__item__description small[data-v-90eae5ec]{padding:0}.actions__item:not(.colored) .icon[data-v-90eae5ec]{width:50px;margin:0;margin-right:10px}.actions__item:not(.colored) .icon[data-v-90eae5ec]:not(.icon-invert){filter:var(--background-invert-if-bright)}.colored .icon-invert[data-v-90eae5ec]{filter:var(--background-invert-if-bright)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/styles/operation.scss\"],\"names\":[],\"mappings\":\"AAAA,gCACC,YAAA,CACA,cAAA,CACA,qBAAA,CACA,WAAA,CACA,gBAAA,CACA,YAAA,CACA,wCAAA,CACA,iBAAA,CACA,kBAAA,CAED,sCACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,yBAAA,CACA,iCAAA,CACA,eAAA,CACA,kBAAA,CACA,2BAAA,CAED,6CACC,iBAAA,CACA,WAAA,CACA,YAAA,CACA,qBAAA,CACA,kBAAA,CAED,wCACC,UAAA,CACA,eAAA,CACA,iBAAA,CAED,2CACC,WAAA,CACA,aAAA,CAED,oBACC,QAAA,CACA,SAAA,CACA,eAAA,CAED,uBACC,cAAA,CACA,WAAA,CAGD,qCACC,6CAAA,CACA,mFACC,+BAAA,CAIF,8CACC,kBAAA,CAEA,0EACC,eAAA,CACA,eAAA,CACA,wBAAA,CACA,gFACC,SAAA,CAGF,oDACC,UAAA,CACA,QAAA,CACA,iBAAA,CACA,sEACC,yCAAA,CAKH,uCACC,yCAAA\",\"sourcesContent\":[\".actions__item {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\tflex-direction: column;\\n\\tflex-grow: 1;\\n\\tmargin-left: -1px;\\n\\tpadding: 10px;\\n\\tborder-radius: var(--border-radius-large);\\n\\tmargin-right: 20px;\\n\\tmargin-bottom: 20px;\\n}\\n.actions__item .icon {\\n\\tdisplay: block;\\n\\twidth: 100%;\\n\\theight: 50px;\\n\\tbackground-size: 50px 50px;\\n\\tbackground-position: center center;\\n\\tmargin-top: 10px;\\n\\tmargin-bottom: 10px;\\n\\tbackground-repeat: no-repeat;\\n}\\n.actions__item__description {\\n\\ttext-align: center;\\n\\tflex-grow: 1;\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\talign-items: center;\\n}\\n.actions__item_options {\\n\\twidth: 100%;\\n\\tmargin-top: 10px;\\n\\tpadding-left: 60px;\\n}\\nh3, small {\\n\\tpadding: 6px;\\n\\tdisplay: block;\\n}\\nh3 {\\n\\tmargin: 0;\\n\\tpadding: 0;\\n\\tfont-weight: 600;\\n}\\nsmall {\\n\\tfont-size: 10pt;\\n\\tflex-grow: 1;\\n}\\n\\n.colored:not(.more) {\\n\\tbackground-color: var(--color-primary-element);\\n\\th3, small {\\n\\t\\tcolor: var(--color-primary-text)\\n\\t}\\n}\\n\\n.actions__item:not(.colored) {\\n\\tflex-direction: row;\\n\\n\\t.actions__item__description {\\n\\t\\tpadding-top: 5px;\\n\\t\\ttext-align: left;\\n\\t\\twidth: calc(100% - 105px);\\n\\t\\tsmall {\\n\\t\\t\\tpadding: 0;\\n\\t\\t}\\n\\t}\\n\\t.icon {\\n\\t\\twidth: 50px;\\n\\t\\tmargin: 0;\\n\\t\\tmargin-right: 10px;\\n\\t\\t&:not(.icon-invert) {\\n\\t\\t\\tfilter: var(--background-invert-if-bright);\\n\\t\\t}\\n\\t}\\n}\\n\\n.colored .icon-invert {\\n\\tfilter: var(--background-invert-if-bright);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".buttons[data-v-a857d7a6]{display:flex;justify-content:end}.buttons button[data-v-a857d7a6]{margin-left:5px}.buttons button[data-v-a857d7a6]:last-child{margin-right:10px}.error-message[data-v-a857d7a6]{float:right;margin-right:10px}.flow-icon[data-v-a857d7a6]{width:44px}.rule[data-v-a857d7a6]{display:flex;flex-wrap:wrap;border-left:5px solid var(--color-primary-element)}.rule .trigger[data-v-a857d7a6],.rule .action[data-v-a857d7a6]{flex-grow:1;min-height:100px;max-width:700px}.rule .action[data-v-a857d7a6]{max-width:400px;position:relative}.rule .icon-confirm[data-v-a857d7a6]{background-position:right 27px;padding-right:20px;margin-right:20px}.trigger p[data-v-a857d7a6],.action p[data-v-a857d7a6]{min-height:34px;display:flex}.trigger p>span[data-v-a857d7a6],.action p>span[data-v-a857d7a6]{min-width:50px;text-align:right;color:var(--color-text-maxcontrast);padding-right:10px;padding-top:6px}.trigger p .multiselect[data-v-a857d7a6],.action p .multiselect[data-v-a857d7a6]{flex-grow:1;max-width:300px}.trigger p:first-child span[data-v-a857d7a6]{padding-top:3px}.check--add[data-v-a857d7a6]{background-position:7px center;background-color:rgba(0,0,0,0);padding-left:6px;margin:0;width:180px;border-radius:var(--border-radius);color:var(--color-text-maxcontrast);font-weight:normal;text-align:left;font-size:1em}@media(max-width: 1400px){.rule[data-v-a857d7a6],.rule .trigger[data-v-a857d7a6],.rule .action[data-v-a857d7a6]{width:100%;max-width:100%}.rule .flow-icon[data-v-a857d7a6]{display:none}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Rule.vue\"],\"names\":[],\"mappings\":\"AA6LA,0BACC,YAAA,CACA,mBAAA,CAEA,iCACC,eAAA,CAED,4CACC,iBAAA,CAIF,gCACC,WAAA,CACA,iBAAA,CAGD,4BACC,UAAA,CAGD,uBACC,YAAA,CACA,cAAA,CACA,kDAAA,CAEA,+DACC,WAAA,CACA,gBAAA,CACA,eAAA,CAED,+BACC,eAAA,CACA,iBAAA,CAED,qCACC,8BAAA,CACA,kBAAA,CACA,iBAAA,CAGF,uDACC,eAAA,CACA,YAAA,CAEA,iEACC,cAAA,CACA,gBAAA,CACA,mCAAA,CACA,kBAAA,CACA,eAAA,CAED,iFACC,WAAA,CACA,eAAA,CAGF,6CACE,eAAA,CAGF,6BACC,8BAAA,CACA,8BAAA,CACA,gBAAA,CACA,QAAA,CACA,WAAA,CACA,kCAAA,CACA,mCAAA,CACA,kBAAA,CACA,eAAA,CACA,aAAA,CAGD,0BAEE,sFACC,UAAA,CACA,cAAA,CAED,kCACC,YAAA,CAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.buttons {\\n\\tdisplay: flex;\\n\\tjustify-content: end;\\n\\n\\tbutton {\\n\\t\\tmargin-left: 5px;\\n\\t}\\n\\tbutton:last-child{\\n\\t\\tmargin-right: 10px;\\n\\t}\\n}\\n\\n.error-message {\\n\\tfloat: right;\\n\\tmargin-right: 10px;\\n}\\n\\n.flow-icon {\\n\\twidth: 44px;\\n}\\n\\n.rule {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\tborder-left: 5px solid var(--color-primary-element);\\n\\n\\t.trigger, .action {\\n\\t\\tflex-grow: 1;\\n\\t\\tmin-height: 100px;\\n\\t\\tmax-width: 700px;\\n\\t}\\n\\t.action {\\n\\t\\tmax-width: 400px;\\n\\t\\tposition: relative;\\n\\t}\\n\\t.icon-confirm {\\n\\t\\tbackground-position: right 27px;\\n\\t\\tpadding-right: 20px;\\n\\t\\tmargin-right: 20px;\\n\\t}\\n}\\n.trigger p, .action p {\\n\\tmin-height: 34px;\\n\\tdisplay: flex;\\n\\n\\t& > span {\\n\\t\\tmin-width: 50px;\\n\\t\\ttext-align: right;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\tpadding-right: 10px;\\n\\t\\tpadding-top: 6px;\\n\\t}\\n\\t.multiselect {\\n\\t\\tflex-grow: 1;\\n\\t\\tmax-width: 300px;\\n\\t}\\n}\\n.trigger p:first-child span {\\n\\t\\tpadding-top: 3px;\\n}\\n\\n.check--add {\\n\\tbackground-position: 7px center;\\n\\tbackground-color: transparent;\\n\\tpadding-left: 6px;\\n\\tmargin: 0;\\n\\twidth: 180px;\\n\\tborder-radius: var(--border-radius);\\n\\tcolor: var(--color-text-maxcontrast);\\n\\tfont-weight: normal;\\n\\ttext-align: left;\\n\\tfont-size: 1em;\\n}\\n\\n@media (max-width:1400px) {\\n\\t.rule {\\n\\t\\t&, .trigger, .action {\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tmax-width: 100%;\\n\\t\\t}\\n\\t\\t.flow-icon {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#workflowengine[data-v-38a7a2e5]{border-bottom:1px solid var(--color-border)}.section[data-v-38a7a2e5]{max-width:100vw}.section h2.configured-flows[data-v-38a7a2e5]{margin-top:50px;margin-bottom:0}.actions[data-v-38a7a2e5]{display:flex;flex-wrap:wrap;max-width:1200px}.actions .actions__item[data-v-38a7a2e5]{max-width:280px;flex-basis:250px}.actions__more[data-v-38a7a2e5]{margin-bottom:10px}.slide-enter-active[data-v-38a7a2e5]{-moz-transition-duration:.3s;-webkit-transition-duration:.3s;-o-transition-duration:.3s;transition-duration:.3s;-moz-transition-timing-function:ease-in;-webkit-transition-timing-function:ease-in;-o-transition-timing-function:ease-in;transition-timing-function:ease-in}.slide-leave-active[data-v-38a7a2e5]{-moz-transition-duration:.3s;-webkit-transition-duration:.3s;-o-transition-duration:.3s;transition-duration:.3s;-moz-transition-timing-function:cubic-bezier(0, 1, 0.5, 1);-webkit-transition-timing-function:cubic-bezier(0, 1, 0.5, 1);-o-transition-timing-function:cubic-bezier(0, 1, 0.5, 1);transition-timing-function:cubic-bezier(0, 1, 0.5, 1)}.slide-enter-to[data-v-38a7a2e5],.slide-leave[data-v-38a7a2e5]{max-height:500px;overflow:hidden}.slide-enter[data-v-38a7a2e5],.slide-leave-to[data-v-38a7a2e5]{overflow:hidden;max-height:0;padding-top:0;padding-bottom:0}.actions__item[data-v-38a7a2e5]{display:flex;flex-wrap:wrap;flex-direction:column;flex-grow:1;margin-left:-1px;padding:10px;border-radius:var(--border-radius-large);margin-right:20px;margin-bottom:20px}.actions__item .icon[data-v-38a7a2e5]{display:block;width:100%;height:50px;background-size:50px 50px;background-position:center center;margin-top:10px;margin-bottom:10px;background-repeat:no-repeat}.actions__item__description[data-v-38a7a2e5]{text-align:center;flex-grow:1;display:flex;flex-direction:column;align-items:center}.actions__item_options[data-v-38a7a2e5]{width:100%;margin-top:10px;padding-left:60px}h3[data-v-38a7a2e5],small[data-v-38a7a2e5]{padding:6px;display:block}h3[data-v-38a7a2e5]{margin:0;padding:0;font-weight:600}small[data-v-38a7a2e5]{font-size:10pt;flex-grow:1}.colored[data-v-38a7a2e5]:not(.more){background-color:var(--color-primary-element)}.colored:not(.more) h3[data-v-38a7a2e5],.colored:not(.more) small[data-v-38a7a2e5]{color:var(--color-primary-text)}.actions__item[data-v-38a7a2e5]:not(.colored){flex-direction:row}.actions__item:not(.colored) .actions__item__description[data-v-38a7a2e5]{padding-top:5px;text-align:left;width:calc(100% - 105px)}.actions__item:not(.colored) .actions__item__description small[data-v-38a7a2e5]{padding:0}.actions__item:not(.colored) .icon[data-v-38a7a2e5]{width:50px;margin:0;margin-right:10px}.actions__item:not(.colored) .icon[data-v-38a7a2e5]:not(.icon-invert){filter:var(--background-invert-if-bright)}.colored .icon-invert[data-v-38a7a2e5]{filter:var(--background-invert-if-bright)}.actions__item.more[data-v-38a7a2e5]{background-color:var(--color-background-dark)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Workflow.vue\",\"webpack://./apps/workflowengine/src/styles/operation.scss\"],\"names\":[],\"mappings\":\"AAkHA,iCACC,2CAAA,CAED,0BACC,eAAA,CAEA,8CACC,eAAA,CACA,eAAA,CAGF,0BACC,YAAA,CACA,cAAA,CACA,gBAAA,CACA,yCACC,eAAA,CACA,gBAAA,CAGF,gCACC,kBAAA,CAGD,qCACC,4BAAA,CACA,+BAAA,CACA,0BAAA,CACA,uBAAA,CACA,uCAAA,CACA,0CAAA,CACA,qCAAA,CACA,kCAAA,CAGD,qCACC,4BAAA,CACA,+BAAA,CACA,0BAAA,CACA,uBAAA,CACA,0DAAA,CACA,6DAAA,CACA,wDAAA,CACA,qDAAA,CAGD,+DACC,gBAAA,CACA,eAAA,CAGD,+DACC,eAAA,CACA,YAAA,CACA,aAAA,CACA,gBAAA,CCzKD,gCACC,YAAA,CACA,cAAA,CACA,qBAAA,CACA,WAAA,CACA,gBAAA,CACA,YAAA,CACA,wCAAA,CACA,iBAAA,CACA,kBAAA,CAED,sCACC,aAAA,CACA,UAAA,CACA,WAAA,CACA,yBAAA,CACA,iCAAA,CACA,eAAA,CACA,kBAAA,CACA,2BAAA,CAED,6CACC,iBAAA,CACA,WAAA,CACA,YAAA,CACA,qBAAA,CACA,kBAAA,CAED,wCACC,UAAA,CACA,eAAA,CACA,iBAAA,CAED,2CACC,WAAA,CACA,aAAA,CAED,oBACC,QAAA,CACA,SAAA,CACA,eAAA,CAED,uBACC,cAAA,CACA,WAAA,CAGD,qCACC,6CAAA,CACA,mFACC,+BAAA,CAIF,8CACC,kBAAA,CAEA,0EACC,eAAA,CACA,eAAA,CACA,wBAAA,CACA,gFACC,SAAA,CAGF,oDACC,UAAA,CACA,QAAA,CACA,iBAAA,CACA,sEACC,yCAAA,CAKH,uCACC,yCAAA,CDkGD,qCACC,6CAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n#workflowengine {\\n\\tborder-bottom: 1px solid var(--color-border);\\n}\\n.section {\\n\\tmax-width: 100vw;\\n\\n\\th2.configured-flows {\\n\\t\\tmargin-top: 50px;\\n\\t\\tmargin-bottom: 0;\\n\\t}\\n}\\n.actions {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\tmax-width: 1200px;\\n\\t.actions__item {\\n\\t\\tmax-width: 280px;\\n\\t\\tflex-basis: 250px;\\n\\t}\\n}\\n.actions__more {\\n\\tmargin-bottom: 10px;\\n}\\n\\n.slide-enter-active {\\n\\t-moz-transition-duration: 0.3s;\\n\\t-webkit-transition-duration: 0.3s;\\n\\t-o-transition-duration: 0.3s;\\n\\ttransition-duration: 0.3s;\\n\\t-moz-transition-timing-function: ease-in;\\n\\t-webkit-transition-timing-function: ease-in;\\n\\t-o-transition-timing-function: ease-in;\\n\\ttransition-timing-function: ease-in;\\n}\\n\\n.slide-leave-active {\\n\\t-moz-transition-duration: 0.3s;\\n\\t-webkit-transition-duration: 0.3s;\\n\\t-o-transition-duration: 0.3s;\\n\\ttransition-duration: 0.3s;\\n\\t-moz-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\\n\\t-webkit-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\\n\\t-o-transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\\n\\ttransition-timing-function: cubic-bezier(0, 1, 0.5, 1);\\n}\\n\\n.slide-enter-to, .slide-leave {\\n\\tmax-height: 500px;\\n\\toverflow: hidden;\\n}\\n\\n.slide-enter, .slide-leave-to {\\n\\toverflow: hidden;\\n\\tmax-height: 0;\\n\\tpadding-top: 0;\\n\\tpadding-bottom: 0;\\n}\\n\\n@import \\\"./../styles/operation\\\";\\n\\n.actions__item.more {\\n\\tbackground-color: var(--color-background-dark);\\n}\\n\",\".actions__item {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\tflex-direction: column;\\n\\tflex-grow: 1;\\n\\tmargin-left: -1px;\\n\\tpadding: 10px;\\n\\tborder-radius: var(--border-radius-large);\\n\\tmargin-right: 20px;\\n\\tmargin-bottom: 20px;\\n}\\n.actions__item .icon {\\n\\tdisplay: block;\\n\\twidth: 100%;\\n\\theight: 50px;\\n\\tbackground-size: 50px 50px;\\n\\tbackground-position: center center;\\n\\tmargin-top: 10px;\\n\\tmargin-bottom: 10px;\\n\\tbackground-repeat: no-repeat;\\n}\\n.actions__item__description {\\n\\ttext-align: center;\\n\\tflex-grow: 1;\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\talign-items: center;\\n}\\n.actions__item_options {\\n\\twidth: 100%;\\n\\tmargin-top: 10px;\\n\\tpadding-left: 60px;\\n}\\nh3, small {\\n\\tpadding: 6px;\\n\\tdisplay: block;\\n}\\nh3 {\\n\\tmargin: 0;\\n\\tpadding: 0;\\n\\tfont-weight: 600;\\n}\\nsmall {\\n\\tfont-size: 10pt;\\n\\tflex-grow: 1;\\n}\\n\\n.colored:not(.more) {\\n\\tbackground-color: var(--color-primary-element);\\n\\th3, small {\\n\\t\\tcolor: var(--color-primary-text)\\n\\t}\\n}\\n\\n.actions__item:not(.colored) {\\n\\tflex-direction: row;\\n\\n\\t.actions__item__description {\\n\\t\\tpadding-top: 5px;\\n\\t\\ttext-align: left;\\n\\t\\twidth: calc(100% - 105px);\\n\\t\\tsmall {\\n\\t\\t\\tpadding: 0;\\n\\t\\t}\\n\\t}\\n\\t.icon {\\n\\t\\twidth: 50px;\\n\\t\\tmargin: 0;\\n\\t\\tmargin-right: 10px;\\n\\t\\t&:not(.icon-invert) {\\n\\t\\t\\tfilter: var(--background-invert-if-bright);\\n\\t\\t}\\n\\t}\\n}\\n\\n.colored .icon-invert {\\n\\tfilter: var(--background-invert-if-bright);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.multiselect[data-v-bd5cb750], input[type='text'][data-v-bd5cb750] {\\n\\twidth: 100%;\\n}\\n.multiselect .multiselect__content-wrapper li>span[data-v-bd5cb750] {\\n\\tdisplay: flex;\\n\\twhite-space: nowrap;\\n\\toverflow: hidden;\\n\\ttext-overflow: ellipsis;\\n}\\n.multiselect[data-v-bd5cb750] .multiselect__single {\\n\\twidth: 100%;\\n\\tdisplay: flex;\\n\\twhite-space: nowrap;\\n\\toverflow: hidden;\\n\\ttext-overflow: ellipsis;\\n}\\n.option__icon[data-v-bd5cb750] {\\n\\tdisplay: inline-block;\\n\\tmin-width: 30px;\\n\\tbackground-position: left;\\n}\\n.option__title[data-v-bd5cb750] {\\n\\twhite-space: nowrap;\\n\\toverflow: hidden;\\n\\ttext-overflow: ellipsis;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Checks/RequestUserAgent.vue\"],\"names\":[],\"mappings\":\";AA8HA;CACA,WAAA;AACA;AAEA;CACA,aAAA;CACA,mBAAA;CACA,gBAAA;CACA,uBAAA;AACA;AACA;CACA,WAAA;CACA,aAAA;CACA,mBAAA;CACA,gBAAA;CACA,uBAAA;AACA;AACA;CACA,qBAAA;CACA,eAAA;CACA,yBAAA;AACA;AACA;CACA,mBAAA;CACA,gBAAA;CACA,uBAAA;AACA\",\"sourcesContent\":[\"<!--\\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\\n -\\n - @author Julius Härtl <jus@bitgrid.net>\\n -\\n - @license GNU AGPL version 3 or any later version\\n -\\n - This program is free software: you can redistribute it and/or modify\\n - it under the terms of the GNU Affero General Public License as\\n - published by the Free Software Foundation, either version 3 of the\\n - License, or (at your option) any later version.\\n -\\n - This program is distributed in the hope that it will be useful,\\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n - GNU Affero General Public License for more details.\\n -\\n - You should have received a copy of the GNU Affero General Public License\\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\\n -\\n -->\\n\\n<template>\\n\\t<div>\\n\\t\\t<NcMultiselect :value=\\\"currentValue\\\"\\n\\t\\t\\t:placeholder=\\\"t('workflowengine', 'Select a user agent')\\\"\\n\\t\\t\\tlabel=\\\"label\\\"\\n\\t\\t\\ttrack-by=\\\"pattern\\\"\\n\\t\\t\\t:options=\\\"options\\\"\\n\\t\\t\\t:multiple=\\\"false\\\"\\n\\t\\t\\t:tagging=\\\"false\\\"\\n\\t\\t\\t@input=\\\"setValue\\\">\\n\\t\\t\\t<template slot=\\\"singleLabel\\\" slot-scope=\\\"props\\\">\\n\\t\\t\\t\\t<span class=\\\"option__icon\\\" :class=\\\"props.option.icon\\\" />\\n\\t\\t\\t\\t<!-- v-html can be used here as t() always passes our translated strings though DOMPurify.sanitize -->\\n\\t\\t\\t\\t<!-- eslint-disable-next-line vue/no-v-html -->\\n\\t\\t\\t\\t<span class=\\\"option__title option__title_single\\\" v-html=\\\"props.option.label\\\" />\\n\\t\\t\\t</template>\\n\\t\\t\\t<template slot=\\\"option\\\" slot-scope=\\\"props\\\">\\n\\t\\t\\t\\t<span class=\\\"option__icon\\\" :class=\\\"props.option.icon\\\" />\\n\\t\\t\\t\\t<!-- eslint-disable-next-line vue/no-v-html -->\\n\\t\\t\\t\\t<span v-if=\\\"props.option.$groupLabel\\\" class=\\\"option__title\\\" v-html=\\\"props.option.$groupLabel\\\" />\\n\\t\\t\\t\\t<!-- eslint-disable-next-line vue/no-v-html -->\\n\\t\\t\\t\\t<span v-else class=\\\"option__title\\\" v-html=\\\"props.option.label\\\" />\\n\\t\\t\\t</template>\\n\\t\\t</NcMultiselect>\\n\\t\\t<input v-if=\\\"!isPredefined\\\"\\n\\t\\t\\ttype=\\\"text\\\"\\n\\t\\t\\t:value=\\\"currentValue.pattern\\\"\\n\\t\\t\\t@input=\\\"updateCustom\\\">\\n\\t</div>\\n</template>\\n\\n<script>\\nimport NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect'\\nimport valueMixin from '../../mixins/valueMixin'\\n\\nexport default {\\n\\tname: 'RequestUserAgent',\\n\\tcomponents: {\\n\\t\\tNcMultiselect,\\n\\t},\\n\\tmixins: [\\n\\t\\tvalueMixin,\\n\\t],\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\tnewValue: '',\\n\\t\\t\\tpredefinedTypes: [\\n\\t\\t\\t\\t{ pattern: 'android', label: t('workflowengine', 'Android client'), icon: 'icon-phone' },\\n\\t\\t\\t\\t{ pattern: 'ios', label: t('workflowengine', 'iOS client'), icon: 'icon-phone' },\\n\\t\\t\\t\\t{ pattern: 'desktop', label: t('workflowengine', 'Desktop client'), icon: 'icon-desktop' },\\n\\t\\t\\t\\t{ pattern: 'mail', label: t('workflowengine', 'Thunderbird & Outlook addons'), icon: 'icon-mail' },\\n\\t\\t\\t],\\n\\t\\t}\\n\\t},\\n\\tcomputed: {\\n\\t\\toptions() {\\n\\t\\t\\treturn [...this.predefinedTypes, this.customValue]\\n\\t\\t},\\n\\t\\tmatchingPredefined() {\\n\\t\\t\\treturn this.predefinedTypes\\n\\t\\t\\t\\t.find((type) => this.newValue === type.pattern)\\n\\t\\t},\\n\\t\\tisPredefined() {\\n\\t\\t\\treturn !!this.matchingPredefined\\n\\t\\t},\\n\\t\\tcustomValue() {\\n\\t\\t\\treturn {\\n\\t\\t\\t\\ticon: 'icon-settings-dark',\\n\\t\\t\\t\\tlabel: t('workflowengine', 'Custom user agent'),\\n\\t\\t\\t\\tpattern: '',\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tcurrentValue() {\\n\\t\\t\\tif (this.matchingPredefined) {\\n\\t\\t\\t\\treturn this.matchingPredefined\\n\\t\\t\\t}\\n\\t\\t\\treturn {\\n\\t\\t\\t\\ticon: 'icon-settings-dark',\\n\\t\\t\\t\\tlabel: t('workflowengine', 'Custom user agent'),\\n\\t\\t\\t\\tpattern: this.newValue,\\n\\t\\t\\t}\\n\\t\\t},\\n\\t},\\n\\tmethods: {\\n\\t\\tvalidateRegex(string) {\\n\\t\\t\\tconst regexRegex = /^\\\\/(.*)\\\\/([gui]{0,3})$/\\n\\t\\t\\tconst result = regexRegex.exec(string)\\n\\t\\t\\treturn result !== null\\n\\t\\t},\\n\\t\\tsetValue(value) {\\n\\t\\t\\t// TODO: check if value requires a regex and set the check operator according to that\\n\\t\\t\\tif (value !== null) {\\n\\t\\t\\t\\tthis.newValue = value.pattern\\n\\t\\t\\t\\tthis.$emit('input', this.newValue)\\n\\t\\t\\t}\\n\\t\\t},\\n\\t\\tupdateCustom(event) {\\n\\t\\t\\tthis.newValue = event.target.value\\n\\t\\t\\tthis.$emit('input', this.newValue)\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n<style scoped>\\n\\t.multiselect, input[type='text'] {\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t.multiselect .multiselect__content-wrapper li>span {\\n\\t\\tdisplay: flex;\\n\\t\\twhite-space: nowrap;\\n\\t\\toverflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n\\t.multiselect::v-deep .multiselect__single {\\n\\t\\twidth: 100%;\\n\\t\\tdisplay: flex;\\n\\t\\twhite-space: nowrap;\\n\\t\\toverflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n\\t.option__icon {\\n\\t\\tdisplay: inline-block;\\n\\t\\tmin-width: 30px;\\n\\t\\tbackground-position: left;\\n\\t}\\n\\t.option__title {\\n\\t\\twhite-space: nowrap;\\n\\t\\toverflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.multiselect[data-v-4bcec2a5] {\\n\\twidth: 100%;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/workflowengine/src/components/Checks/RequestUserGroup.vue\"],\"names\":[],\"mappings\":\";AA4GA;CACA,WAAA;AACA\",\"sourcesContent\":[\"<!--\\n - @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\\n -\\n - @author Julius Härtl <jus@bitgrid.net>\\n -\\n - @license GNU AGPL version 3 or any later version\\n -\\n - This program is free software: you can redistribute it and/or modify\\n - it under the terms of the GNU Affero General Public License as\\n - published by the Free Software Foundation, either version 3 of the\\n - License, or (at your option) any later version.\\n -\\n - This program is distributed in the hope that it will be useful,\\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n - GNU Affero General Public License for more details.\\n -\\n - You should have received a copy of the GNU Affero General Public License\\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\\n -\\n -->\\n\\n<template>\\n\\t<div>\\n\\t\\t<NcMultiselect :value=\\\"currentValue\\\"\\n\\t\\t\\t:loading=\\\"status.isLoading && groups.length === 0\\\"\\n\\t\\t\\t:options=\\\"groups\\\"\\n\\t\\t\\t:multiple=\\\"false\\\"\\n\\t\\t\\tlabel=\\\"displayname\\\"\\n\\t\\t\\ttrack-by=\\\"id\\\"\\n\\t\\t\\t@search-change=\\\"searchAsync\\\"\\n\\t\\t\\t@input=\\\"(value) => $emit('input', value.id)\\\" />\\n\\t</div>\\n</template>\\n\\n<script>\\nimport NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect'\\nimport axios from '@nextcloud/axios'\\nimport { generateOcsUrl } from '@nextcloud/router'\\n\\nconst groups = []\\nconst status = {\\n\\tisLoading: false,\\n}\\n\\nexport default {\\n\\tname: 'RequestUserGroup',\\n\\tcomponents: {\\n\\t\\tNcMultiselect,\\n\\t},\\n\\tprops: {\\n\\t\\tvalue: {\\n\\t\\t\\ttype: String,\\n\\t\\t\\tdefault: '',\\n\\t\\t},\\n\\t\\tcheck: {\\n\\t\\t\\ttype: Object,\\n\\t\\t\\tdefault: () => { return {} },\\n\\t\\t},\\n\\t},\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\tgroups,\\n\\t\\t\\tstatus,\\n\\t\\t}\\n\\t},\\n\\tcomputed: {\\n\\t\\tcurrentValue() {\\n\\t\\t\\treturn this.groups.find(group => group.id === this.value) || null\\n\\t\\t},\\n\\t},\\n\\tasync mounted() {\\n\\t\\tif (this.groups.length === 0) {\\n\\t\\t\\tawait this.searchAsync('')\\n\\t\\t}\\n\\t\\tif (this.currentValue === null) {\\n\\t\\t\\tawait this.searchAsync(this.value)\\n\\t\\t}\\n\\t},\\n\\tmethods: {\\n\\t\\tsearchAsync(searchQuery) {\\n\\t\\t\\tif (this.status.isLoading) {\\n\\t\\t\\t\\treturn\\n\\t\\t\\t}\\n\\n\\t\\t\\tthis.status.isLoading = true\\n\\t\\t\\treturn axios.get(generateOcsUrl('cloud/groups/details?limit=20&search={searchQuery}', { searchQuery })).then((response) => {\\n\\t\\t\\t\\tresponse.data.ocs.data.groups.forEach((group) => {\\n\\t\\t\\t\\t\\tthis.addGroup({\\n\\t\\t\\t\\t\\t\\tid: group.id,\\n\\t\\t\\t\\t\\t\\tdisplayname: group.displayname,\\n\\t\\t\\t\\t\\t})\\n\\t\\t\\t\\t})\\n\\t\\t\\t\\tthis.status.isLoading = false\\n\\t\\t\\t}, (error) => {\\n\\t\\t\\t\\tconsole.error('Error while loading group list', error.response)\\n\\t\\t\\t})\\n\\t\\t},\\n\\t\\taddGroup(group) {\\n\\t\\t\\tconst index = this.groups.findIndex((item) => item.id === group.id)\\n\\t\\t\\tif (index === -1) {\\n\\t\\t\\t\\tthis.groups.push(group)\\n\\t\\t\\t}\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n<style scoped>\\n\\t.multiselect {\\n\\t\\twidth: 100%;\\n\\t}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 30094,\n\t\"./hi.js\": 30094,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 8318;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t8318: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], function() { return __webpack_require__(36620); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","scopeValue","loadState","getApiUrl","url","generateOcsUrl","Vue","Vuex","Store","state","rules","scope","appstoreEnabled","operations","plugins","checks","operators","entities","events","map","entity","event","id","eventName","flat","mutations","addRule","rule","push","valid","updateRule","index","findIndex","item","newRule","Object","assign","removeRule","splice","addPluginCheck","plugin","class","addPluginOperator","color","actions","fetchRules","context","axios","data","values","ocs","forEach","commit","createNewRule","isComplex","fixedEntity","find","Date","getTime","name","operator","value","operation","JSON","parse","pushUpdateRule","confirmPassword","result","deleteRule","setValid","getters","getRules","filter","sort","rule1","rule2","getOperationForRule","getEntityForOperation","getEventsForOperation","getChecksForEntity","check","supportedEntities","indexOf","length","reduce","obj","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","icon","_v","_s","triggerHint","currentEvent","allEvents","on","updateEvent","scopedSlots","_u","key","fn","ref","isOpen","_l","displayName","_e","props","option","directives","rawName","expression","showDelete","t","updateCheck","model","callback","$$v","currentOption","currentOperator","currentComponent","component","tag","$event","validate","$set","invalid","valuePlaceholder","domProps","target","composing","deleteVisible","$emit","colored","style","backgroundColor","iconClass","backgroundImage","description","_t","borderLeftColor","removeCheck","onAddFilter","updateOperation","dirty","cancelRule","ruleStatus","type","saveRule","proxy","title","error","workflowDocUrl","nativeOn","appstoreUrl","showMoreOperations","regexRegex","regexIPv4","regexIPv6","String","default","newValue","watch","immediate","handler","updateInternalValue","methods","currentValue","setValue","iconUrl","label","isPredefined","pattern","updateCustom","update","stringOrRegexOperators","placeholder","string","exec","FileMimeType","match","validateIPv4","FileSystemTag","$groupLabel","timezones","status","isLoading","groups","searchAsync","RequestURL","RequestTime","RequestUserAgent","RequestUserGroup","FileChecks","RequestChecks","window","OCA","WorkflowEngine","registerCheck","Plugin","store","registerOperator","ShippedChecks","checkPlugin","Settings","$mount","___CSS_LOADER_EXPORT___","module","webpackContext","req","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","resolve","exports","__webpack_module_cache__","moduleId","cachedModule","undefined","loaded","__webpack_modules__","call","m","amdD","amdO","O","chunkIds","priority","notFulfilled","Infinity","i","fulfilled","j","every","r","n","getter","__esModule","d","a","definition","defineProperty","enumerable","get","g","globalThis","Function","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","document","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","bind","nc","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file diff --git a/lib/l10n/gl.js b/lib/l10n/gl.js index 81977c58b7a..07b892da0e3 100644 --- a/lib/l10n/gl.js +++ b/lib/l10n/gl.js @@ -95,6 +95,7 @@ OC.L10N.register( "About" : "Sobre", "Full name" : "Nome completo", "Headline" : "Titular", + "Organisation" : "Organización", "Role" : "Cargo", "Unknown user" : "Usuario descoñecido", "Additional settings" : "Axustes adicionais", diff --git a/lib/l10n/gl.json b/lib/l10n/gl.json index 22923e66c2c..a162f5ea19f 100644 --- a/lib/l10n/gl.json +++ b/lib/l10n/gl.json @@ -93,6 +93,7 @@ "About" : "Sobre", "Full name" : "Nome completo", "Headline" : "Titular", + "Organisation" : "Organización", "Role" : "Cargo", "Unknown user" : "Usuario descoñecido", "Additional settings" : "Axustes adicionais", diff --git a/package-lock.json b/package-lock.json index 29a7409c21a..8e0fcf09f6c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -131,7 +131,7 @@ "karma-viewport": "^1.0.9", "puppeteer": "^15.5.0", "regextras": "^0.8.0", - "sass": "^1.52.1", + "sass": "^1.56.1", "sass-loader": "^13.2.0", "sinon": "<= 5.0.7", "style-loader": "^3.3.1", @@ -20255,9 +20255,9 @@ "dev": true }, "node_modules/sass": { - "version": "1.52.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.52.1.tgz", - "integrity": "sha512-fSzYTbr7z8oQnVJ3Acp9hV80dM1fkMN7mSD/25mpcct9F7FPBMOI8krEYALgU1aZoqGhQNhTPsuSmxjnIvAm4Q==", + "version": "1.56.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.56.1.tgz", + "integrity": "sha512-VpEyKpyBPCxE7qGDtOcdJ6fFbcpOM+Emu7uZLxVrkX8KVU/Dp5UF7WLvzqRuUhB6mqqQt1xffLoG+AndxTZrCQ==", "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", @@ -39255,9 +39255,9 @@ "dev": true }, "sass": { - "version": "1.52.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.52.1.tgz", - "integrity": "sha512-fSzYTbr7z8oQnVJ3Acp9hV80dM1fkMN7mSD/25mpcct9F7FPBMOI8krEYALgU1aZoqGhQNhTPsuSmxjnIvAm4Q==", + "version": "1.56.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.56.1.tgz", + "integrity": "sha512-VpEyKpyBPCxE7qGDtOcdJ6fFbcpOM+Emu7uZLxVrkX8KVU/Dp5UF7WLvzqRuUhB6mqqQt1xffLoG+AndxTZrCQ==", "dev": true, "requires": { "chokidar": ">=3.0.0 <4.0.0", diff --git a/package.json b/package.json index 397f603948d..a6d8f9fae24 100644 --- a/package.json +++ b/package.json @@ -154,7 +154,7 @@ "karma-viewport": "^1.0.9", "puppeteer": "^15.5.0", "regextras": "^0.8.0", - "sass": "^1.52.1", + "sass": "^1.56.1", "sass-loader": "^13.2.0", "sinon": "<= 5.0.7", "style-loader": "^3.3.1", |