diff --git a/js/photos-node_modules_blurhash_dist_esm_index_js-node_modules_vue-material-design-icons_PackageVariant-6bf9ec.js b/js/photos-node_modules_blurhash_dist_esm_index_js-node_modules_vue-material-design-icons_PackageVariant-6bf9ec.js index b1db997b9..e369bf327 100644 --- a/js/photos-node_modules_blurhash_dist_esm_index_js-node_modules_vue-material-design-icons_PackageVariant-6bf9ec.js +++ b/js/photos-node_modules_blurhash_dist_esm_index_js-node_modules_vue-material-design-icons_PackageVariant-6bf9ec.js @@ -1,3 +1,3 @@ /*! For license information please see photos-node_modules_blurhash_dist_esm_index_js-node_modules_vue-material-design-icons_PackageVariant-6bf9ec.js.LICENSE.txt */ -"use strict";(self.webpackChunkphotos=self.webpackChunkphotos||[]).push([["node_modules_blurhash_dist_esm_index_js-node_modules_vue-material-design-icons_PackageVariant-6bf9ec"],{66951:(t,e,n)=>{n.d(e,{Z:()=>u});var i=n(5656),a=n(65358),s=n(59537),o=n(45086),l=n(77958),r=n(3301),c=n(81067),d=n(2161),h=n(80351),f=n.n(h),p=n(30319);var A=n(32114);const u={name:"FetchFilesMixin",mixins:[n(69363).Z],data:()=>({errorFetchingFiles:null,loadingFiles:!1,doneFetchingFiles:!1,fetchSemaphore:new A.Z(1),fetchedFileIds:[]}),watch:{"$route.path"(){this.resetFetchFilesState()}},methods:{async fetchFiles(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(this.doneFetchingFiles&&!n||this.loadingFiles)return[];const h=await this.fetchSemaphore.acquire();try{this.errorFetchingFiles=null,this.loadingFiles=!0;const n=200,i=await async function(){var t;let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e={firstResult:0,nbResults:200,mimesType:r.Oj,onThisDay:!1,onlyFavorites:!1,...e};const n="/files/".concat((0,l.ts)().uid),i=e.mimesType.reduce(((t,e)=>"".concat(t,"\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t").concat(e,"\n\t\t\n\t")),""),a=e.onlyFavorites?"\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t1\n\t\t\t":"",s=e.onThisDay?"".concat(Array(20).fill(1).map(((t,e)=>{const n=f()(Date.now()).startOf("day").subtract(3,"d").subtract(e+1,"y"),i=f()(Date.now()).endOf("day").add(3,"d").subtract(e+1,"y");return"\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t".concat(n.format(f().defaultFormatUtc),"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t").concat(i.format(f().defaultFormatUtc),"\n\t\t\t\t\n\t\t\t")})).join("\n"),""):"";return e=Object.assign({method:"SEARCH",headers:{"content-Type":"text/xml"},data:'\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t'.concat(d.N,"\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t").concat(n,"/").concat(null!==(t=p.Z.state.userConfig.photosSourceFolder)&&void 0!==t?t:"/Photos","\n\t\t\t\t\t\t\tinfinity\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t").concat(i,"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t").concat(a,"\n\t\t\t\t\t\t\t").concat(s,"\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\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\t\n\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\t\n\t\t\t\t\t\t").concat(e.nbResults,"\n\t\t\t\t\t\t").concat(e.firstResult,"\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t"),deep:!0,details:!0},e),(await c.ZP.getDirectoryContents("",e)).data.map((t=>(0,o.AX)(t)))}({firstResult:this.fetchedFileIds.length,nbResults:n,...t,signal:this.abortController.signal});i.length!==n&&(this.doneFetchingFiles=!0);const a=i.map((t=>t.fileid)).filter((t=>!this.fetchedFileIds.includes(t.toString())));return this.fetchedFileIds.push(...a.map((t=>t.toString())).filter((t=>!e.includes(t)))),this.$store.dispatch("appendFiles",i),s.Z.debug("[FetchFilesMixin] Fetched ".concat(a.length," new files: "),a),a}catch(t){var A;if(404===(null===(A=t.response)||void 0===A?void 0:A.status)){var u;this.errorFetchingFiles=404;const t=(0,a.RQ)(i._o,null!==(u=p.Z.state.userConfig.photosSourceFolder)&&void 0!==u?u:"/Photos")+"/";s.Z.debug("Photo source does not exist, creating it.");try{await(0,i.rp)().createDirectory(t)}catch(t){s.Z.error("Fail to create source directory",{error:t})}}else{if("ERR_CANCELED"===t.code)return[];this.errorFetchingFiles=t}s.Z.error("Error fetching files",{error:t}),console.error(t)}finally{this.loadingFiles=!1,this.fetchSemaphore.release(h)}return[]},resetFetchFilesState(){this.doneFetchingFiles=!1,this.errorFetchingFiles=null,this.loadingFiles=!1,this.fetchedFileIds=[]}}}},43985:(t,e,n)=>{n.d(e,{Jx:()=>f});var i=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","#","$","%","*","+",",","-",".",":",";","=","?","@","[","]","^","_","{","|","}","~"],a=t=>{let e=0;for(let n=0;n{let e=t/255;return e<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)},o=t=>{let e=Math.max(0,Math.min(1,t));return e<=.0031308?Math.trunc(12.92*e*255+.5):Math.trunc(255*(1.055*Math.pow(e,.4166666666666667)-.055)+.5)},l=(t,e)=>(t=>t<0?-1:1)(t)*Math.pow(Math.abs(t),e),r=class extends Error{constructor(t){super(t),this.name="ValidationError",this.message=t}},c=t=>{if(!t||t.length<6)throw new r("The blurhash string must be at least 6 characters");let e=a(t[0]),n=Math.floor(e/9)+1,i=e%9+1;if(t.length!==4+2*i*n)throw new r(`blurhash length mismatch: length is ${t.length} but it should be ${4+2*i*n}`)},d=t=>{let e=t>>8&255,n=255&t;return[s(t>>16),s(e),s(n)]},h=(t,e)=>{let n=Math.floor(t/361),i=Math.floor(t/19)%19,a=t%19;return[l((n-9)/9,2)*e,l((i-9)/9,2)*e,l((a-9)/9,2)*e]},f=(t,e,n,i)=>{c(t),i|=1;let s=a(t[0]),l=Math.floor(s/9)+1,r=s%9+1,f=(a(t[1])+1)/166,p=new Array(r*l);for(let e=0;e{n.d(e,{Z:()=>l});var i=n(87537),a=n.n(i),s=n(23645),o=n.n(s)()(a());o.push([t.id,".face-list[data-v-33326436]{display:flex;flex-direction:row;height:350px;flex-wrap:wrap;padding:12px}.loader[data-v-33326436]{margin:25% auto}","",{version:3,sources:["webpack://./src/components/Faces/FaceMergeForm.vue"],names:[],mappings:"AAEA,4BACC,YAAA,CACA,kBAAA,CACA,YAAA,CACA,cAAA,CACA,YAAA,CAGD,yBACC,eAAA",sourcesContent:['$sizes: ("400": ("count": 3, "marginTop": 66, "marginW": 8), "700": ("count": 4, "marginTop": 66, "marginW": 8), "1024": ("count": 5, "marginTop": 66, "marginW": 44), "1280": ("count": 4, "marginTop": 66, "marginW": 44), "1440": ("count": 5, "marginTop": 88, "marginW": 66), "1600": ("count": 6, "marginTop": 88, "marginW": 66), "2048": ("count": 7, "marginTop": 88, "marginW": 66), "2560": ("count": 8, "marginTop": 88, "marginW": 88), "3440": ("count": 9, "marginTop": 88, "marginW": 88), "max": ("count": 10, "marginTop": 88, "marginW": 88));\n\n.face-list {\n\tdisplay: flex;\n\tflex-direction: row;\n\theight: 350px;\n\tflex-wrap: wrap;\n\tpadding: 12px;\n}\n\n.loader {\n\tmargin: 25% auto;\n}\n'],sourceRoot:""}]);const l=o},91983:(t,e,n)=>{n.d(e,{Z:()=>l});var i=n(87537),a=n.n(i),s=n(23645),o=n.n(s)()(a());o.push([t.id,".face[data-v-22feae0f]{display:flex;flex-direction:column}.face__empty[data-v-22feae0f]{display:flex;flex-direction:column;align-items:center}.face__empty__button[data-v-22feae0f]{margin-top:32px}.face__header[data-v-22feae0f]{display:flex;min-height:60px;align-items:center;justify-content:space-between;position:-webkit-sticky;position:sticky;z-index:3;background:var(--color-main-background);padding:0 64px}@media only screen and (max-width: 1020px){.face__header[data-v-22feae0f]{padding:0;padding-left:64px}}.face__header__left[data-v-22feae0f]{height:100%;display:flex;align-items:center}.face__header__title[data-v-22feae0f]{margin-left:10px}.face__header__title h2[data-v-22feae0f]{margin-bottom:0}.face__header__loader[data-v-22feae0f]{margin-left:32px}.face__header__actions[data-v-22feae0f]{display:flex;align-items:center}.face__header__actions button[data-v-22feae0f]{margin-left:16px}.face__photos[data-v-22feae0f]{margin-top:16px;height:100%;min-height:0;padding:0 64px}@media only screen and (max-width: 1020px){.face__photos[data-v-22feae0f]{padding:0}}.empty-content-with-illustration[data-v-22feae0f] .empty-content__icon{width:200px;height:200px}.empty-content-with-illustration[data-v-22feae0f] .empty-content__icon svg{width:200px;height:200px}.rename-form[data-v-22feae0f]{display:flex;flex-direction:row;align-items:center;height:70px;padding:16px}.rename-form input[data-v-22feae0f]{width:100%}","",{version:3,sources:["webpack://./src/mixins/FaceContent.scss"],names:[],mappings:"AAqBA,uBACC,YAAA,CACA,qBAAA,CAEA,8BACC,YAAA,CACA,qBAAA,CACA,kBAAA,CAEA,sCACC,eAAA,CAKF,+BACC,YAAA,CACA,eAAA,CACA,kBAAA,CACA,6BAAA,CACA,uBAAA,CAAA,eAAA,CACA,SAAA,CACA,uCAAA,CACA,cAAA,CAEA,2CAVD,+BAWE,SAAA,CACA,iBAAA,CAAA,CAGD,qCACC,WAAA,CACA,YAAA,CACA,kBAAA,CAGD,sCACC,gBAAA,CACA,yCACC,eAAA,CAIF,uCACC,gBAAA,CAGD,wCACC,YAAA,CACA,kBAAA,CAEA,+CACC,gBAAA,CAKH,+BACC,eAAA,CACA,WAAA,CACA,YAAA,CACA,cAAA,CAEA,2CAND,+BAOE,SAAA,CAAA,CAKH,uEACC,WAAA,CACA,YAAA,CAEA,2EACC,WAAA,CACA,YAAA,CAIF,8BACC,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,WAAA,CACA,YAAA,CAEA,oCACC,UAAA",sourcesContent:["/**\n * @copyright Copyright (c) 2023 Marcel Klehr \n *\n * @author Marcel Klehr \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 .\n *\n */\n.face {\n\tdisplay: flex;\n\tflex-direction: column;\n\n\t&__empty {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\n\t\t&__button {\n\t\t\tmargin-top: 32px;\n\t\t}\n\n\t}\n\n\t&__header {\n\t\tdisplay: flex;\n\t\tmin-height: 60px;\n\t\talign-items: center;\n\t\tjustify-content: space-between;\n\t\tposition: sticky;\n\t\tz-index: 3;\n\t\tbackground: var(--color-main-background);\n\t\tpadding: 0 64px;\n\n\t\t@media only screen and (max-width: 1020px) {\n\t\t\tpadding: 0;\n\t\t\tpadding-left: 64px;\n\t\t}\n\n\t\t&__left {\n\t\t\theight: 100%;\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t}\n\n\t\t&__title {\n\t\t\tmargin-left: 10px;\n\t\t\th2 {\n\t\t\t\tmargin-bottom: 0;\n\t\t\t}\n\t\t}\n\n\t\t&__loader {\n\t\t\tmargin-left: 32px;\n\t\t}\n\n\t\t&__actions {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\n\t\t\tbutton {\n\t\t\t\tmargin-left: 16px;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__photos {\n\t\tmargin-top: 16px;\n\t\theight: 100%;\n\t\tmin-height: 0; // Prevent it from overflowing in a flex context.\n\t\tpadding: 0 64px;\n\n\t\t@media only screen and (max-width: 1020px) {\n\t\t\tpadding: 0;\n\t\t}\n\t}\n}\n\n.empty-content-with-illustration :deep .empty-content__icon {\n\twidth: 200px;\n\theight: 200px;\n\n\tsvg {\n\t\twidth: 200px;\n\t\theight: 200px;\n\t}\n}\n\n.rename-form {\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n\theight: 70px;\n\tpadding: 16px;\n\n\tinput {\n\t\twidth: 100%;\n\t}\n}\n"],sourceRoot:""}]);const l=o},73981:(t,e,n)=>{n.d(e,{Z:()=>a});const i={name:"AccountSwitchIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};const a=(0,n(51900).Z)(i,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon account-switch-icon",attrs:{"aria-hidden":!t.title,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M16 9C22 9 22 13 22 13V15H16V13C16 13 16 11.31 14.85 9.8C14.68 9.57 14.47 9.35 14.25 9.14C14.77 9.06 15.34 9 16 9M2 13C2 13 2 9 8 9S14 13 14 13V15H2V13M9 17V19H15V17L18 20L15 23V21H9V23L6 20L9 17M8 1C6.34 1 5 2.34 5 4S6.34 7 8 7 11 5.66 11 4 9.66 1 8 1M16 1C14.34 1 13 2.34 13 4S14.34 7 16 7 19 5.66 19 4 17.66 1 16 1Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports},84320:(t,e,n)=>{n.d(e,{Z:()=>a});const i={name:"AlertCircleIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};const a=(0,n(51900).Z)(i,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon alert-circle-icon",attrs:{"aria-hidden":!t.title,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M13,13H11V7H13M13,17H11V15H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports},69254:(t,e,n)=>{n.d(e,{Z:()=>a});const i={name:"ArrowLeftIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};const a=(0,n(51900).Z)(i,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon arrow-left-icon",attrs:{"aria-hidden":!t.title,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M20,11V13H8L13.5,18.5L12.08,19.92L4.16,12L12.08,4.08L13.5,5.5L8,11H20Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports},34020:(t,e,n)=>{n.d(e,{Z:()=>a});const i={name:"DownloadIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};const a=(0,n(51900).Z)(i,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon download-icon",attrs:{"aria-hidden":!t.title,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M5,20H19V18H5M19,9H15V3H9V9H5L12,16L19,9Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports},68204:(t,e,n)=>{n.d(e,{Z:()=>a});const i={name:"PackageVariantIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};const a=(0,n(51900).Z)(i,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon package-variant-icon",attrs:{"aria-hidden":!t.title,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M2,10.96C1.5,10.68 1.35,10.07 1.63,9.59L3.13,7C3.24,6.8 3.41,6.66 3.6,6.58L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.66,6.72 20.82,6.88 20.91,7.08L22.36,9.6C22.64,10.08 22.47,10.69 22,10.96L21,11.54V16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V10.96C2.7,11.13 2.32,11.14 2,10.96M12,4.15V4.15L12,10.85V10.85L17.96,7.5L12,4.15M5,15.91L11,19.29V12.58L5,9.21V15.91M19,15.91V12.69L14,15.59C13.67,15.77 13.3,15.76 13,15.6V19.29L19,15.91M13.85,13.36L20.13,9.73L19.55,8.72L13.27,12.35L13.85,13.36Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports},39650:(t,e,n)=>{n.d(e,{Z:()=>s});var i=n(9073),a=n(91211);const s=(0,n(51900).Z)(a.Z,i.s,i.x,!1,null,null,null).exports},8131:(t,e,n)=>{n.d(e,{Z:()=>i});const i={name:"PlayCircleIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}}},58613:(t,e,n)=>{n.d(e,{Z:()=>a});const i={name:"StarIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};const a=(0,n(51900).Z)(i,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon star-icon",attrs:{"aria-hidden":!t.title,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports},97167:(t,e,n)=>{n.d(e,{Z:()=>s});var i=n(59541),a=n(6900);const s=(0,n(51900).Z)(a.Z,i.s,i.x,!1,null,null,null).exports},90244:(t,e,n)=>{n.d(e,{Z:()=>i});const i={name:"VideoIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}}},35406:(t,e,n)=>{n.d(e,{Z:()=>F});var i=n(20629),a=n(46116),s=n(99751);const o={name:"FaceMergeForm",components:{FaceCover:n(4294).Z},mixins:[a.Z,s.Z],props:{firstFace:{type:String,required:!0}},data:()=>({loading:!1}),computed:{...(0,i.Se)(["files","faces","facesFiles"]),filteredFaces(){return Object.values(this.faces).filter((t=>t.basename!==this.firstFace)).sort(((t,e)=>t.props.nbItems&&e.props.nbItems?e.props.nbItems-t.props.nbItems:this.facesFiles[e.basename]&&this.facesFiles[t.basename]?this.facesFiles[e.basename].length-this.facesFiles[t.basename].length:0))}},methods:{handleSelect(t){this.$emit("select",t),this.loading=!0}}};var l=n(93379),r=n.n(l),c=n(7795),d=n.n(c),h=n(90569),f=n.n(h),p=n(3565),A=n.n(p),u=n(19216),g=n.n(u),m=n(44589),C=n.n(m),_=n(3640),v={};v.styleTagTransform=C(),v.setAttributes=A(),v.insert=f().bind(null,"head"),v.domAPI=d(),v.insertStyleElement=g();r()(_.Z,v);_.Z&&_.Z.locals&&_.Z.locals;const F=(0,n(51900).Z)(o,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"merge-form face-list"},t._l(t.filteredFaces,(function(n){return e("FaceCover",{key:n.basename,attrs:{"base-name":n.basename,small:""},on:{click:function(e){return t.handleSelect(n.basename)}}})})),1)}),[],!1,null,"33326436",null).exports},80316:(t,e,n)=>{n.r(e),n.d(e,{default:()=>V});var i=n(20629),a=n(84320),s=n(58613),o=n(34020),l=n(69254),r=n(73981),c=n(64882),d=n(66951),h=n(98171),f=n(97519),p=n(64811),A=n(59537),u=n(99751),g=n(20144),m=n(35406);const C={name:"UnassignedFaces",components:{Star:s.Z,Download:o.Z,AlertCircle:a.Z,ArrowLeft:l.Z,FaceMergeForm:m.Z,FilesListViewer:f.Z,File:p.Z,NcLoadingIcon:c.lb,NcEmptyContent:c.SL,NcActions:c.O3,NcActionButton:c.Js,NcDialog:c.a0,AccountSwitch:r.Z},directives:{focus(t){g.ZP.nextTick((()=>t.focus()))}},mixins:[u.Z,d.Z,h.Z],data:()=>({showMoveModal:!1,loadingCount:0,appContent:document.getElementById("app-content-vue")}),computed:{...(0,i.Se)(["files","unassignedFiles"]),faceFileIds(){return this.unassignedFiles||[]},shouldFavoriteSelection(){return this.selectedFileIds.some((t=>0===this.$store.state.files.files[t].favorite))}},mounted(){this.fetchUnassignedFaces()},methods:{...(0,i.nv)(["appendFiles","deleteFace","renameFace","downloadFiles","toggleFavoriteForFiles","removeFilesFromFace","moveFilesToFace"]),openViewer(t){const e=this.files[t];OCA.Viewer.open({path:"/"+e.filename.split("/").slice(3).join("/"),list:this.faceFileIds.map((t=>({...this.files[t],basename:this.files[t].basename.split("-").slice(1).join("-")}))).filter((t=>!t.sectionHeader)),loadMore:e.loadMore?async()=>await e.loadMore(!0):()=>[],canLoop:e.canLoop})},async handleMove(t,e){try{this.loadingCount++,await this.moveFilesToFace({oldFace:null,faceName:t,fileIdsToMove:e}),this.showMoveModal=!1}catch(t){A.Z.error(t)}finally{this.loadingCount--}},async favoriteSelection(){try{this.loadingCount++,await this.toggleFavoriteForFiles({fileIds:this.selectedFileIds,favoriteState:!0})}catch(t){A.Z.error(t)}finally{this.loadingCount--}},async unFavoriteSelection(){try{this.loadingCount++,await this.toggleFavoriteForFiles({fileIds:this.selectedFileIds,favoriteState:!1})}catch(t){A.Z.error(t)}finally{this.loadingCount--}},async downloadSelection(){try{this.loadingCount++,await this.downloadFiles(this.selectedFileIds)}catch(t){A.Z.error(t)}finally{this.loadingCount--}}}};var _=n(93379),v=n.n(_),F=n(7795),y=n.n(F),x=n(90569),w=n.n(x),b=n(3565),Z=n.n(b),L=n(19216),k=n.n(L),S=n(44589),M=n.n(S),I=n(91983),B={};B.styleTagTransform=M(),B.setAttributes=Z(),B.insert=w().bind(null,"head"),B.domAPI=y(),B.insertStyleElement=k();v()(I.Z,B);I.Z&&I.Z.locals&&I.Z.locals;const V=(0,n(51900).Z)(C,(function(){var t=this,e=t._self._c;return t.errorFetchingFiles?e("NcEmptyContent",{scopedSlots:t._u([{key:"icon",fn:function(){return[e("AlertCircle")]},proxy:!0}],null,!1,794036927)},[t._v("\n\t"+t._s(t.t("photos","An error occurred"))+"\n")]):e("div",{staticClass:"face"},[e("div",{staticClass:"face__header"},[e("div",{staticClass:"face__header__left"},[e("NcActions",[e("NcActionButton",{on:{click:function(e){return t.$router.push("/faces/")}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("ArrowLeft")]},proxy:!0}])},[t._v(t._s(t.t("photos","Back"))+"\n\t\t\t\t")])],1),t._v(" "),e("div",{staticClass:"face__header__title"},[e("h2",{class:{"face-name":!0}},[t._v("\n\t\t\t\t\t"+t._s(t.t("photos","Unassigned faces"))+"\n\t\t\t\t")])]),t._v(" "),t.loadingCount>0||t.loadingFaces?e("NcLoadingIcon"):t._e()],1),t._v(" "),e("div",{staticClass:"face__header__actions"},[e("NcActions",{attrs:{"force-menu":!0}},[t.selectedFileIds.length?[e("NcActionButton",{attrs:{"close-after-click":!0,"aria-label":t.t("photos","Download selected files")},on:{click:t.downloadSelection}},[e("Download",{attrs:{slot:"icon"},slot:"icon"}),t._v("\n\t\t\t\t\t\t"+t._s(t.t("photos","Download selected photos"))+"\n\t\t\t\t\t")],1),t._v(" "),t.shouldFavoriteSelection?e("NcActionButton",{attrs:{"close-after-click":!0,"aria-label":t.t("photos","Mark selection as favorite")},on:{click:t.favoriteSelection}},[e("Star",{attrs:{slot:"icon"},slot:"icon"}),t._v("\n\t\t\t\t\t\t"+t._s(t.t("photos","Favorite"))+"\n\t\t\t\t\t")],1):e("NcActionButton",{attrs:{"close-after-click":!0,"aria-label":t.t("photos","Remove selection from favorites")},on:{click:t.unFavoriteSelection}},[e("Star",{attrs:{slot:"icon"},slot:"icon"}),t._v("\n\t\t\t\t\t\t"+t._s(t.t("photos","Remove from favorites"))+"\n\t\t\t\t\t")],1),t._v(" "),e("NcActionButton",{attrs:{"close-after-click":!0},on:{click:function(e){t.showMoveModal=!0}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("AccountSwitch")]},proxy:!0}],null,!1,2937983280)},[t._v("\n\t\t\t\t\t\t"+t._s(t.n("photos","Move photo to a different person","Move photos to a different person",t.selectedFileIds.length))+"\n\t\t\t\t\t")])]:t._e()],2)],1)]),t._v(" "),e("FilesListViewer",{staticClass:"face__photos",attrs:{"container-element":t.appContent,"file-ids":t.faceFileIds,loading:t.loadingFiles||t.loadingFaces},scopedSlots:t._u([{key:"default",fn:function(n){let{file:i,distance:a}=n;return e("File",{attrs:{file:t.files[i.id],"allow-selection":!0,selected:!0===t.selection[i.id],distance:a},on:{click:t.openViewer,"select-toggled":t.onFileSelectToggle}})}}])}),t._v(" "),t.showMoveModal?e("NcDialog",{attrs:{name:t.t("photos","Move to different person"),"close-on-click-outside":"",size:"normal"},on:{closing:function(e){t.showMoveModal=!1}}},[e("FaceMergeForm",{attrs:{"first-face":"-1"},on:{select:function(e){return t.handleMove(e,t.selectedFileIds)}}})],1):t._e()],1)}),[],!1,null,"22feae0f",null).exports},91211:(t,e,n)=>{n.d(e,{Z:()=>i});const i=n(8131).Z},6900:(t,e,n)=>{n.d(e,{Z:()=>i});const i=n(90244).Z},9073:(t,e,n)=>{n.d(e,{s:()=>i,x:()=>a});var i=function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon play-circle-icon",attrs:{"aria-hidden":!t.title,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M10,16.5V7.5L16,12M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])},a=[]},59541:(t,e,n)=>{n.d(e,{s:()=>i,x:()=>a});var i=function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon video-icon",attrs:{"aria-hidden":!t.title,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M17,10.5V7A1,1 0 0,0 16,6H4A1,1 0 0,0 3,7V17A1,1 0 0,0 4,18H16A1,1 0 0,0 17,17V13.5L21,17.5V6.5L17,10.5Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])},a=[]},18398:t=>{t.exports=''}}]); -//# sourceMappingURL=photos-node_modules_blurhash_dist_esm_index_js-node_modules_vue-material-design-icons_PackageVariant-6bf9ec.js.map?v=da565ba01eb21f580031 \ No newline at end of file +"use strict";(self.webpackChunkphotos=self.webpackChunkphotos||[]).push([["node_modules_blurhash_dist_esm_index_js-node_modules_vue-material-design-icons_PackageVariant-6bf9ec"],{66951:(t,e,n)=>{n.d(e,{Z:()=>A});var i=n(5656),a=n(65358),s=n(59537),o=n(45086),l=n(3301),r=n(81067),c=n(2161),d=n(80351),h=n.n(d),f=n(30319);var p=n(32114);const A={name:"FetchFilesMixin",mixins:[n(69363).Z],data:()=>({errorFetchingFiles:null,loadingFiles:!1,doneFetchingFiles:!1,fetchSemaphore:new p.Z(1),fetchedFileIds:[]}),watch:{"$route.path"(){this.resetFetchFilesState()}},methods:{async fetchFiles(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(this.doneFetchingFiles&&!n||this.loadingFiles)return[];const d=await this.fetchSemaphore.acquire();try{this.errorFetchingFiles=null,this.loadingFiles=!0;const n=200,d=await async function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};t={firstResult:0,nbResults:200,mimesType:l.Oj,onThisDay:!1,onlyFavorites:!1,...t};const e=t.mimesType.reduce(((t,e)=>"".concat(t,"\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t").concat(e,"\n\t\t\n\t")),""),n=t.onlyFavorites?"\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t1\n\t\t\t":"",s=t.onThisDay?"".concat(Array(20).fill(1).map(((t,e)=>{const n=h()(Date.now()).startOf("day").subtract(3,"d").subtract(e+1,"y"),i=h()(Date.now()).endOf("day").add(3,"d").subtract(e+1,"y");return"\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t".concat(n.format(h().defaultFormatUtc),"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t").concat(i.format(h().defaultFormatUtc),"\n\t\t\t\t\n\t\t\t")})).join("\n"),""):"",d=f.Z.state.userConfig.photosSourceFolders.map((t=>"\n\t\t\t\n\t\t\t\t".concat((0,a.RQ)(i._o,t),"\n\t\t\t\tinfinity\n\t\t\t"))).join("\n");return t=Object.assign({method:"SEARCH",headers:{"content-Type":"text/xml"},data:'\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t'.concat(c.N,"\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t").concat(d,"\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t").concat(e,"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t").concat(n,"\n\t\t\t\t\t\t\t").concat(s,"\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\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\t\n\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\t\n\t\t\t\t\t\t").concat(t.nbResults,"\n\t\t\t\t\t\t").concat(t.firstResult,"\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t"),deep:!0,details:!0},t),(await r.ZP.getDirectoryContents("",t)).data.map((t=>(0,o.AX)(t)))}({firstResult:this.fetchedFileIds.length,nbResults:n,...t,signal:this.abortController.signal});d.length!==n&&(this.doneFetchingFiles=!0);const p=d.map((t=>t.fileid)).filter((t=>!this.fetchedFileIds.includes(t.toString())));return this.fetchedFileIds.push(...p.map((t=>t.toString())).filter((t=>!e.includes(t)))),this.$store.dispatch("appendFiles",d),s.Z.debug("[FetchFilesMixin] Fetched ".concat(p.length," new files: "),p),p}catch(t){var p;if(404===(null===(p=t.response)||void 0===p?void 0:p.status)){const e=f.Z.state.userConfig.photosSourceFolders;for(const n of e){var A,u;if(null!==(null===(A=t.response)||void 0===A||null===(u=A.data)||void 0===u?void 0:u.match("File with name /".concat(n," could not be located")))){s.Z.debug("The ".concat(n," folder does not exist, creating it."));try{return await(0,i.rp)().createDirectory((0,a.RQ)(i._o,n)),this.resetFetchFilesState(),[]}catch(t){this.errorFetchingFiles=404,s.Z.error("Fail to create source directory",{error:t})}}}}else{if("ERR_CANCELED"===t.code)return[];this.errorFetchingFiles=t}s.Z.error("Error fetching files",{error:t})}finally{this.loadingFiles=!1,this.fetchSemaphore.release(d)}return[]},resetFetchFilesState(){this.doneFetchingFiles=!1,this.errorFetchingFiles=null,this.loadingFiles=!1,this.fetchedFileIds=[]}}}},43985:(t,e,n)=>{n.d(e,{Jx:()=>f});var i=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","#","$","%","*","+",",","-",".",":",";","=","?","@","[","]","^","_","{","|","}","~"],a=t=>{let e=0;for(let n=0;n{let e=t/255;return e<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)},o=t=>{let e=Math.max(0,Math.min(1,t));return e<=.0031308?Math.trunc(12.92*e*255+.5):Math.trunc(255*(1.055*Math.pow(e,.4166666666666667)-.055)+.5)},l=(t,e)=>(t=>t<0?-1:1)(t)*Math.pow(Math.abs(t),e),r=class extends Error{constructor(t){super(t),this.name="ValidationError",this.message=t}},c=t=>{if(!t||t.length<6)throw new r("The blurhash string must be at least 6 characters");let e=a(t[0]),n=Math.floor(e/9)+1,i=e%9+1;if(t.length!==4+2*i*n)throw new r(`blurhash length mismatch: length is ${t.length} but it should be ${4+2*i*n}`)},d=t=>{let e=t>>8&255,n=255&t;return[s(t>>16),s(e),s(n)]},h=(t,e)=>{let n=Math.floor(t/361),i=Math.floor(t/19)%19,a=t%19;return[l((n-9)/9,2)*e,l((i-9)/9,2)*e,l((a-9)/9,2)*e]},f=(t,e,n,i)=>{c(t),i|=1;let s=a(t[0]),l=Math.floor(s/9)+1,r=s%9+1,f=(a(t[1])+1)/166,p=new Array(r*l);for(let e=0;e{n.d(e,{Z:()=>l});var i=n(87537),a=n.n(i),s=n(23645),o=n.n(s)()(a());o.push([t.id,".face-list[data-v-33326436]{display:flex;flex-direction:row;height:350px;flex-wrap:wrap;padding:12px}.loader[data-v-33326436]{margin:25% auto}","",{version:3,sources:["webpack://./src/components/Faces/FaceMergeForm.vue"],names:[],mappings:"AAEA,4BACC,YAAA,CACA,kBAAA,CACA,YAAA,CACA,cAAA,CACA,YAAA,CAGD,yBACC,eAAA",sourcesContent:['$sizes: ("400": ("count": 3, "marginTop": 66, "marginW": 8), "700": ("count": 4, "marginTop": 66, "marginW": 8), "1024": ("count": 5, "marginTop": 66, "marginW": 44), "1280": ("count": 4, "marginTop": 66, "marginW": 44), "1440": ("count": 5, "marginTop": 88, "marginW": 66), "1600": ("count": 6, "marginTop": 88, "marginW": 66), "2048": ("count": 7, "marginTop": 88, "marginW": 66), "2560": ("count": 8, "marginTop": 88, "marginW": 88), "3440": ("count": 9, "marginTop": 88, "marginW": 88), "max": ("count": 10, "marginTop": 88, "marginW": 88));\n\n.face-list {\n\tdisplay: flex;\n\tflex-direction: row;\n\theight: 350px;\n\tflex-wrap: wrap;\n\tpadding: 12px;\n}\n\n.loader {\n\tmargin: 25% auto;\n}\n'],sourceRoot:""}]);const l=o},91983:(t,e,n)=>{n.d(e,{Z:()=>l});var i=n(87537),a=n.n(i),s=n(23645),o=n.n(s)()(a());o.push([t.id,".face[data-v-22feae0f]{display:flex;flex-direction:column}.face__empty[data-v-22feae0f]{display:flex;flex-direction:column;align-items:center}.face__empty__button[data-v-22feae0f]{margin-top:32px}.face__header[data-v-22feae0f]{display:flex;min-height:60px;align-items:center;justify-content:space-between;position:-webkit-sticky;position:sticky;z-index:3;background:var(--color-main-background);padding:0 64px}@media only screen and (max-width: 1020px){.face__header[data-v-22feae0f]{padding:0;padding-left:64px}}.face__header__left[data-v-22feae0f]{height:100%;display:flex;align-items:center}.face__header__title[data-v-22feae0f]{margin-left:10px}.face__header__title h2[data-v-22feae0f]{margin-bottom:0}.face__header__loader[data-v-22feae0f]{margin-left:32px}.face__header__actions[data-v-22feae0f]{display:flex;align-items:center}.face__header__actions button[data-v-22feae0f]{margin-left:16px}.face__photos[data-v-22feae0f]{margin-top:16px;height:100%;min-height:0;padding:0 64px}@media only screen and (max-width: 1020px){.face__photos[data-v-22feae0f]{padding:0}}.empty-content-with-illustration[data-v-22feae0f] .empty-content__icon{width:200px;height:200px}.empty-content-with-illustration[data-v-22feae0f] .empty-content__icon svg{width:200px;height:200px}.rename-form[data-v-22feae0f]{display:flex;flex-direction:row;align-items:center;height:70px;padding:16px}.rename-form input[data-v-22feae0f]{width:100%}","",{version:3,sources:["webpack://./src/mixins/FaceContent.scss"],names:[],mappings:"AAqBA,uBACC,YAAA,CACA,qBAAA,CAEA,8BACC,YAAA,CACA,qBAAA,CACA,kBAAA,CAEA,sCACC,eAAA,CAKF,+BACC,YAAA,CACA,eAAA,CACA,kBAAA,CACA,6BAAA,CACA,uBAAA,CAAA,eAAA,CACA,SAAA,CACA,uCAAA,CACA,cAAA,CAEA,2CAVD,+BAWE,SAAA,CACA,iBAAA,CAAA,CAGD,qCACC,WAAA,CACA,YAAA,CACA,kBAAA,CAGD,sCACC,gBAAA,CACA,yCACC,eAAA,CAIF,uCACC,gBAAA,CAGD,wCACC,YAAA,CACA,kBAAA,CAEA,+CACC,gBAAA,CAKH,+BACC,eAAA,CACA,WAAA,CACA,YAAA,CACA,cAAA,CAEA,2CAND,+BAOE,SAAA,CAAA,CAKH,uEACC,WAAA,CACA,YAAA,CAEA,2EACC,WAAA,CACA,YAAA,CAIF,8BACC,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,WAAA,CACA,YAAA,CAEA,oCACC,UAAA",sourcesContent:["/**\n * @copyright Copyright (c) 2023 Marcel Klehr \n *\n * @author Marcel Klehr \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 .\n *\n */\n.face {\n\tdisplay: flex;\n\tflex-direction: column;\n\n\t&__empty {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\n\t\t&__button {\n\t\t\tmargin-top: 32px;\n\t\t}\n\n\t}\n\n\t&__header {\n\t\tdisplay: flex;\n\t\tmin-height: 60px;\n\t\talign-items: center;\n\t\tjustify-content: space-between;\n\t\tposition: sticky;\n\t\tz-index: 3;\n\t\tbackground: var(--color-main-background);\n\t\tpadding: 0 64px;\n\n\t\t@media only screen and (max-width: 1020px) {\n\t\t\tpadding: 0;\n\t\t\tpadding-left: 64px;\n\t\t}\n\n\t\t&__left {\n\t\t\theight: 100%;\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t}\n\n\t\t&__title {\n\t\t\tmargin-left: 10px;\n\t\t\th2 {\n\t\t\t\tmargin-bottom: 0;\n\t\t\t}\n\t\t}\n\n\t\t&__loader {\n\t\t\tmargin-left: 32px;\n\t\t}\n\n\t\t&__actions {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\n\t\t\tbutton {\n\t\t\t\tmargin-left: 16px;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__photos {\n\t\tmargin-top: 16px;\n\t\theight: 100%;\n\t\tmin-height: 0; // Prevent it from overflowing in a flex context.\n\t\tpadding: 0 64px;\n\n\t\t@media only screen and (max-width: 1020px) {\n\t\t\tpadding: 0;\n\t\t}\n\t}\n}\n\n.empty-content-with-illustration :deep .empty-content__icon {\n\twidth: 200px;\n\theight: 200px;\n\n\tsvg {\n\t\twidth: 200px;\n\t\theight: 200px;\n\t}\n}\n\n.rename-form {\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n\theight: 70px;\n\tpadding: 16px;\n\n\tinput {\n\t\twidth: 100%;\n\t}\n}\n"],sourceRoot:""}]);const l=o},73981:(t,e,n)=>{n.d(e,{Z:()=>a});const i={name:"AccountSwitchIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};const a=(0,n(51900).Z)(i,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon account-switch-icon",attrs:{"aria-hidden":!t.title,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M16 9C22 9 22 13 22 13V15H16V13C16 13 16 11.31 14.85 9.8C14.68 9.57 14.47 9.35 14.25 9.14C14.77 9.06 15.34 9 16 9M2 13C2 13 2 9 8 9S14 13 14 13V15H2V13M9 17V19H15V17L18 20L15 23V21H9V23L6 20L9 17M8 1C6.34 1 5 2.34 5 4S6.34 7 8 7 11 5.66 11 4 9.66 1 8 1M16 1C14.34 1 13 2.34 13 4S14.34 7 16 7 19 5.66 19 4 17.66 1 16 1Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports},84320:(t,e,n)=>{n.d(e,{Z:()=>a});const i={name:"AlertCircleIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};const a=(0,n(51900).Z)(i,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon alert-circle-icon",attrs:{"aria-hidden":!t.title,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M13,13H11V7H13M13,17H11V15H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports},69254:(t,e,n)=>{n.d(e,{Z:()=>a});const i={name:"ArrowLeftIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};const a=(0,n(51900).Z)(i,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon arrow-left-icon",attrs:{"aria-hidden":!t.title,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M20,11V13H8L13.5,18.5L12.08,19.92L4.16,12L12.08,4.08L13.5,5.5L8,11H20Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports},34020:(t,e,n)=>{n.d(e,{Z:()=>a});const i={name:"DownloadIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};const a=(0,n(51900).Z)(i,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon download-icon",attrs:{"aria-hidden":!t.title,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M5,20H19V18H5M19,9H15V3H9V9H5L12,16L19,9Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports},68204:(t,e,n)=>{n.d(e,{Z:()=>a});const i={name:"PackageVariantIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};const a=(0,n(51900).Z)(i,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon package-variant-icon",attrs:{"aria-hidden":!t.title,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M2,10.96C1.5,10.68 1.35,10.07 1.63,9.59L3.13,7C3.24,6.8 3.41,6.66 3.6,6.58L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.66,6.72 20.82,6.88 20.91,7.08L22.36,9.6C22.64,10.08 22.47,10.69 22,10.96L21,11.54V16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V10.96C2.7,11.13 2.32,11.14 2,10.96M12,4.15V4.15L12,10.85V10.85L17.96,7.5L12,4.15M5,15.91L11,19.29V12.58L5,9.21V15.91M19,15.91V12.69L14,15.59C13.67,15.77 13.3,15.76 13,15.6V19.29L19,15.91M13.85,13.36L20.13,9.73L19.55,8.72L13.27,12.35L13.85,13.36Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports},39650:(t,e,n)=>{n.d(e,{Z:()=>s});var i=n(9073),a=n(91211);const s=(0,n(51900).Z)(a.Z,i.s,i.x,!1,null,null,null).exports},8131:(t,e,n)=>{n.d(e,{Z:()=>i});const i={name:"PlayCircleIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}}},58613:(t,e,n)=>{n.d(e,{Z:()=>a});const i={name:"StarIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};const a=(0,n(51900).Z)(i,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon star-icon",attrs:{"aria-hidden":!t.title,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports},97167:(t,e,n)=>{n.d(e,{Z:()=>s});var i=n(59541),a=n(6900);const s=(0,n(51900).Z)(a.Z,i.s,i.x,!1,null,null,null).exports},90244:(t,e,n)=>{n.d(e,{Z:()=>i});const i={name:"VideoIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}}},35406:(t,e,n)=>{n.d(e,{Z:()=>F});var i=n(20629),a=n(46116),s=n(99751);const o={name:"FaceMergeForm",components:{FaceCover:n(4294).Z},mixins:[a.Z,s.Z],props:{firstFace:{type:String,required:!0}},data:()=>({loading:!1}),computed:{...(0,i.Se)(["files","faces","facesFiles"]),filteredFaces(){return Object.values(this.faces).filter((t=>t.basename!==this.firstFace)).sort(((t,e)=>t.props.nbItems&&e.props.nbItems?e.props.nbItems-t.props.nbItems:this.facesFiles[e.basename]&&this.facesFiles[t.basename]?this.facesFiles[e.basename].length-this.facesFiles[t.basename].length:0))}},methods:{handleSelect(t){this.$emit("select",t),this.loading=!0}}};var l=n(93379),r=n.n(l),c=n(7795),d=n.n(c),h=n(90569),f=n.n(h),p=n(3565),A=n.n(p),u=n(19216),g=n.n(u),m=n(44589),C=n.n(m),_=n(3640),v={};v.styleTagTransform=C(),v.setAttributes=A(),v.insert=f().bind(null,"head"),v.domAPI=d(),v.insertStyleElement=g();r()(_.Z,v);_.Z&&_.Z.locals&&_.Z.locals;const F=(0,n(51900).Z)(o,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"merge-form face-list"},t._l(t.filteredFaces,(function(n){return e("FaceCover",{key:n.basename,attrs:{"base-name":n.basename,small:""},on:{click:function(e){return t.handleSelect(n.basename)}}})})),1)}),[],!1,null,"33326436",null).exports},80316:(t,e,n)=>{n.r(e),n.d(e,{default:()=>V});var i=n(20629),a=n(84320),s=n(58613),o=n(34020),l=n(69254),r=n(73981),c=n(64882),d=n(66951),h=n(98171),f=n(97519),p=n(64811),A=n(59537),u=n(99751),g=n(20144),m=n(35406);const C={name:"UnassignedFaces",components:{Star:s.Z,Download:o.Z,AlertCircle:a.Z,ArrowLeft:l.Z,FaceMergeForm:m.Z,FilesListViewer:f.Z,File:p.Z,NcLoadingIcon:c.lb,NcEmptyContent:c.SL,NcActions:c.O3,NcActionButton:c.Js,NcDialog:c.a0,AccountSwitch:r.Z},directives:{focus(t){g.ZP.nextTick((()=>t.focus()))}},mixins:[u.Z,d.Z,h.Z],data:()=>({showMoveModal:!1,loadingCount:0,appContent:document.getElementById("app-content-vue")}),computed:{...(0,i.Se)(["files","unassignedFiles"]),faceFileIds(){return this.unassignedFiles||[]},shouldFavoriteSelection(){return this.selectedFileIds.some((t=>0===this.$store.state.files.files[t].favorite))}},mounted(){this.fetchUnassignedFaces()},methods:{...(0,i.nv)(["appendFiles","deleteFace","renameFace","downloadFiles","toggleFavoriteForFiles","removeFilesFromFace","moveFilesToFace"]),openViewer(t){const e=this.files[t];OCA.Viewer.open({path:"/"+e.filename.split("/").slice(3).join("/"),list:this.faceFileIds.map((t=>({...this.files[t],basename:this.files[t].basename.split("-").slice(1).join("-")}))).filter((t=>!t.sectionHeader)),loadMore:e.loadMore?async()=>await e.loadMore(!0):()=>[],canLoop:e.canLoop})},async handleMove(t,e){try{this.loadingCount++,await this.moveFilesToFace({oldFace:null,faceName:t,fileIdsToMove:e}),this.showMoveModal=!1}catch(t){A.Z.error(t)}finally{this.loadingCount--}},async favoriteSelection(){try{this.loadingCount++,await this.toggleFavoriteForFiles({fileIds:this.selectedFileIds,favoriteState:!0})}catch(t){A.Z.error(t)}finally{this.loadingCount--}},async unFavoriteSelection(){try{this.loadingCount++,await this.toggleFavoriteForFiles({fileIds:this.selectedFileIds,favoriteState:!1})}catch(t){A.Z.error(t)}finally{this.loadingCount--}},async downloadSelection(){try{this.loadingCount++,await this.downloadFiles(this.selectedFileIds)}catch(t){A.Z.error(t)}finally{this.loadingCount--}}}};var _=n(93379),v=n.n(_),F=n(7795),y=n.n(F),x=n(90569),w=n.n(x),b=n(3565),Z=n.n(b),L=n(19216),k=n.n(L),S=n(44589),M=n.n(S),I=n(91983),B={};B.styleTagTransform=M(),B.setAttributes=Z(),B.insert=w().bind(null,"head"),B.domAPI=y(),B.insertStyleElement=k();v()(I.Z,B);I.Z&&I.Z.locals&&I.Z.locals;const V=(0,n(51900).Z)(C,(function(){var t=this,e=t._self._c;return t.errorFetchingFiles?e("NcEmptyContent",{scopedSlots:t._u([{key:"icon",fn:function(){return[e("AlertCircle")]},proxy:!0}],null,!1,794036927)},[t._v("\n\t"+t._s(t.t("photos","An error occurred"))+"\n")]):e("div",{staticClass:"face"},[e("div",{staticClass:"face__header"},[e("div",{staticClass:"face__header__left"},[e("NcActions",[e("NcActionButton",{on:{click:function(e){return t.$router.push("/faces/")}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("ArrowLeft")]},proxy:!0}])},[t._v(t._s(t.t("photos","Back"))+"\n\t\t\t\t")])],1),t._v(" "),e("div",{staticClass:"face__header__title"},[e("h2",{class:{"face-name":!0}},[t._v("\n\t\t\t\t\t"+t._s(t.t("photos","Unassigned faces"))+"\n\t\t\t\t")])]),t._v(" "),t.loadingCount>0||t.loadingFaces?e("NcLoadingIcon"):t._e()],1),t._v(" "),e("div",{staticClass:"face__header__actions"},[e("NcActions",{attrs:{"force-menu":!0}},[t.selectedFileIds.length?[e("NcActionButton",{attrs:{"close-after-click":!0,"aria-label":t.t("photos","Download selected files")},on:{click:t.downloadSelection}},[e("Download",{attrs:{slot:"icon"},slot:"icon"}),t._v("\n\t\t\t\t\t\t"+t._s(t.t("photos","Download selected photos"))+"\n\t\t\t\t\t")],1),t._v(" "),t.shouldFavoriteSelection?e("NcActionButton",{attrs:{"close-after-click":!0,"aria-label":t.t("photos","Mark selection as favorite")},on:{click:t.favoriteSelection}},[e("Star",{attrs:{slot:"icon"},slot:"icon"}),t._v("\n\t\t\t\t\t\t"+t._s(t.t("photos","Favorite"))+"\n\t\t\t\t\t")],1):e("NcActionButton",{attrs:{"close-after-click":!0,"aria-label":t.t("photos","Remove selection from favorites")},on:{click:t.unFavoriteSelection}},[e("Star",{attrs:{slot:"icon"},slot:"icon"}),t._v("\n\t\t\t\t\t\t"+t._s(t.t("photos","Remove from favorites"))+"\n\t\t\t\t\t")],1),t._v(" "),e("NcActionButton",{attrs:{"close-after-click":!0},on:{click:function(e){t.showMoveModal=!0}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("AccountSwitch")]},proxy:!0}],null,!1,2937983280)},[t._v("\n\t\t\t\t\t\t"+t._s(t.n("photos","Move photo to a different person","Move photos to a different person",t.selectedFileIds.length))+"\n\t\t\t\t\t")])]:t._e()],2)],1)]),t._v(" "),e("FilesListViewer",{staticClass:"face__photos",attrs:{"container-element":t.appContent,"file-ids":t.faceFileIds,loading:t.loadingFiles||t.loadingFaces},scopedSlots:t._u([{key:"default",fn:function(n){let{file:i,distance:a}=n;return e("File",{attrs:{file:t.files[i.id],"allow-selection":!0,selected:!0===t.selection[i.id],distance:a},on:{click:t.openViewer,"select-toggled":t.onFileSelectToggle}})}}])}),t._v(" "),t.showMoveModal?e("NcDialog",{attrs:{name:t.t("photos","Move to different person"),"close-on-click-outside":"",size:"normal"},on:{closing:function(e){t.showMoveModal=!1}}},[e("FaceMergeForm",{attrs:{"first-face":"-1"},on:{select:function(e){return t.handleMove(e,t.selectedFileIds)}}})],1):t._e()],1)}),[],!1,null,"22feae0f",null).exports},91211:(t,e,n)=>{n.d(e,{Z:()=>i});const i=n(8131).Z},6900:(t,e,n)=>{n.d(e,{Z:()=>i});const i=n(90244).Z},9073:(t,e,n)=>{n.d(e,{s:()=>i,x:()=>a});var i=function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon play-circle-icon",attrs:{"aria-hidden":!t.title,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M10,16.5V7.5L16,12M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])},a=[]},59541:(t,e,n)=>{n.d(e,{s:()=>i,x:()=>a});var i=function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon video-icon",attrs:{"aria-hidden":!t.title,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M17,10.5V7A1,1 0 0,0 16,6H4A1,1 0 0,0 3,7V17A1,1 0 0,0 4,18H16A1,1 0 0,0 17,17V13.5L21,17.5V6.5L17,10.5Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])},a=[]},18398:t=>{t.exports=''}}]); +//# sourceMappingURL=photos-node_modules_blurhash_dist_esm_index_js-node_modules_vue-material-design-icons_PackageVariant-6bf9ec.js.map?v=83df6777279ced2a9bc3 \ No newline at end of file diff --git a/js/photos-node_modules_blurhash_dist_esm_index_js-node_modules_vue-material-design-icons_PackageVariant-6bf9ec.js.map b/js/photos-node_modules_blurhash_dist_esm_index_js-node_modules_vue-material-design-icons_PackageVariant-6bf9ec.js.map index 472c20085..0dc20e028 100644 --- a/js/photos-node_modules_blurhash_dist_esm_index_js-node_modules_vue-material-design-icons_PackageVariant-6bf9ec.js.map +++ b/js/photos-node_modules_blurhash_dist_esm_index_js-node_modules_vue-material-design-icons_PackageVariant-6bf9ec.js.map @@ -1 +1 @@ -{"version":3,"file":"photos-node_modules_blurhash_dist_esm_index_js-node_modules_vue-material-design-icons_PackageVariant-6bf9ec.js?v=da565ba01eb21f580031","mappings":"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","sources":["webpack:///photos/src/mixins/FetchFilesMixin.js","webpack:///photos/src/services/PhotoSearch.js","webpack:///photos/node_modules/blurhash/dist/esm/index.js","webpack:///photos/src/components/Faces/FaceMergeForm.vue?vue&type=style&index=0&id=33326436&prod&scoped=true&lang=scss","webpack:///photos/src/views/UnassignedFaces.vue?vue&type=style&index=0&id=22feae0f&prod&lang=scss&scoped=true","webpack:///photos/node_modules/vue-material-design-icons/AccountSwitch.vue","webpack:///photos/node_modules/vue-material-design-icons/AccountSwitch.vue?vue&type=script&lang=js","webpack://photos/./node_modules/vue-material-design-icons/AccountSwitch.vue?3918","webpack:///photos/node_modules/vue-material-design-icons/AccountSwitch.vue?vue&type=template&id=7ce2a630","webpack:///photos/node_modules/vue-material-design-icons/AlertCircle.vue","webpack:///photos/node_modules/vue-material-design-icons/AlertCircle.vue?vue&type=script&lang=js","webpack://photos/./node_modules/vue-material-design-icons/AlertCircle.vue?489a","webpack:///photos/node_modules/vue-material-design-icons/AlertCircle.vue?vue&type=template&id=2a2453f8","webpack:///photos/node_modules/vue-material-design-icons/ArrowLeft.vue","webpack:///photos/node_modules/vue-material-design-icons/ArrowLeft.vue?vue&type=script&lang=js","webpack://photos/./node_modules/vue-material-design-icons/ArrowLeft.vue?f857","webpack:///photos/node_modules/vue-material-design-icons/ArrowLeft.vue?vue&type=template&id=187c55d7","webpack:///photos/node_modules/vue-material-design-icons/Download.vue","webpack:///photos/node_modules/vue-material-design-icons/Download.vue?vue&type=script&lang=js","webpack://photos/./node_modules/vue-material-design-icons/Download.vue?b226","webpack:///photos/node_modules/vue-material-design-icons/Download.vue?vue&type=template&id=67aea606","webpack:///photos/node_modules/vue-material-design-icons/PackageVariant.vue","webpack:///photos/node_modules/vue-material-design-icons/PackageVariant.vue?vue&type=script&lang=js","webpack://photos/./node_modules/vue-material-design-icons/PackageVariant.vue?692c","webpack:///photos/node_modules/vue-material-design-icons/PackageVariant.vue?vue&type=template&id=9a5ab29c","webpack://photos/./node_modules/vue-material-design-icons/PlayCircle.vue?0c26","webpack:///photos/node_modules/vue-material-design-icons/PlayCircle.vue","webpack:///photos/node_modules/vue-material-design-icons/Star.vue","webpack:///photos/node_modules/vue-material-design-icons/Star.vue?vue&type=script&lang=js","webpack://photos/./node_modules/vue-material-design-icons/Star.vue?35ed","webpack:///photos/node_modules/vue-material-design-icons/Star.vue?vue&type=template&id=22339b94","webpack://photos/./node_modules/vue-material-design-icons/Video.vue?28ad","webpack:///photos/node_modules/vue-material-design-icons/Video.vue","webpack://photos/./src/components/Faces/FaceMergeForm.vue?d2e1","webpack:///photos/src/components/Faces/FaceMergeForm.vue","webpack:///photos/src/components/Faces/FaceMergeForm.vue?vue&type=script&lang=js","webpack://photos/./src/components/Faces/FaceMergeForm.vue?241f","webpack://photos/./src/components/Faces/FaceMergeForm.vue?2513","webpack://photos/./src/views/UnassignedFaces.vue?51bd","webpack:///photos/src/views/UnassignedFaces.vue","webpack:///photos/src/views/UnassignedFaces.vue?vue&type=script&lang=js","webpack://photos/./src/views/UnassignedFaces.vue?0384","webpack://photos/./src/views/UnassignedFaces.vue?2685","webpack:///photos/node_modules/vue-material-design-icons/PlayCircle.vue?vue&type=script&lang=js","webpack:///photos/node_modules/vue-material-design-icons/Video.vue?vue&type=script&lang=js","webpack:///photos/node_modules/vue-material-design-icons/PlayCircle.vue?vue&type=template&id=34d1e782","webpack:///photos/node_modules/vue-material-design-icons/Video.vue?vue&type=template&id=12752490"],"sourcesContent":["/**\n * @copyright Copyright (c) 2022 Louis Chemineau \n *\n * @author Louis Chemineau \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 .\n *\n */\n\nimport { davGetClient, davRootPath } from '@nextcloud/files'\nimport { joinPaths } from '@nextcloud/paths'\nimport logger from '../services/logger.js'\nimport getPhotos from '../services/PhotoSearch.js'\nimport SemaphoreWithPriority from '../utils/semaphoreWithPriority.js'\nimport AbortControllerMixin from './AbortControllerMixin.js'\nimport store from '../store/index.js'\n\nexport default {\n\tname: 'FetchFilesMixin',\n\n\tmixins: [\n\t\tAbortControllerMixin,\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\terrorFetchingFiles: null,\n\t\t\tloadingFiles: false,\n\t\t\tdoneFetchingFiles: false,\n\t\t\tfetchSemaphore: new SemaphoreWithPriority(1),\n\t\t\tfetchedFileIds: [],\n\t\t}\n\t},\n\n\twatch: {\n\t\t'$route.path'() {\n\t\t\tthis.resetFetchFilesState()\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * @param {object} options - Options to pass to getPhotos.\n\t\t * @param {string[]} [blacklist=[]] - Array of ids to filter out.\n\t\t * @param {boolean} [force=false] - Force fetching even if doneFetchingFiles is true\n\t\t * @return {Promise} - The next batch of data depending on global offset.\n\t\t */\n\t\tasync fetchFiles(options = {}, blacklist = [], force = false) {\n\t\t\tif ((this.doneFetchingFiles && !force) || this.loadingFiles) {\n\t\t\t\treturn []\n\t\t\t}\n\n\t\t\tconst fetchSemaphoreSymbol = await this.fetchSemaphore.acquire()\n\n\t\t\ttry {\n\t\t\t\tthis.errorFetchingFiles = null\n\t\t\t\tthis.loadingFiles = true\n\n\t\t\t\tconst numberOfImagesPerBatch = 200\n\n\t\t\t\t// Load next batch of images\n\t\t\t\tconst fetchedFiles = await getPhotos({\n\t\t\t\t\tfirstResult: this.fetchedFileIds.length,\n\t\t\t\t\tnbResults: numberOfImagesPerBatch,\n\t\t\t\t\t...options,\n\t\t\t\t\tsignal: this.abortController.signal,\n\t\t\t\t})\n\n\t\t\t\t// If we get less files than requested that means we got to the end\n\t\t\t\tif (fetchedFiles.length !== numberOfImagesPerBatch) {\n\t\t\t\t\tthis.doneFetchingFiles = true\n\t\t\t\t}\n\n\t\t\t\tconst fileIds = fetchedFiles\n\t\t\t\t\t.map(file => file.fileid)\n\t\t\t\t\t.filter(fileId => !this.fetchedFileIds.includes(fileId.toString())) // Filter to prevent duplicate fileIds.\n\n\t\t\t\tthis.fetchedFileIds.push(\n\t\t\t\t\t...fileIds\n\t\t\t\t\t\t.map((fileId) => fileId.toString())\n\t\t\t\t\t\t.filter((fileId) => !blacklist.includes(fileId))\n\t\t\t\t)\n\n\t\t\t\tthis.$store.dispatch('appendFiles', fetchedFiles)\n\n\t\t\t\tlogger.debug(`[FetchFilesMixin] Fetched ${fileIds.length} new files: `, fileIds)\n\n\t\t\t\treturn fileIds\n\t\t\t} catch (error) {\n\t\t\t\tif (error.response?.status === 404) {\n\t\t\t\t\tthis.errorFetchingFiles = 404\n\t\t\t\t\tconst source = joinPaths(davRootPath, store.state.userConfig.photosSourceFolder ?? '/Photos') + '/'\n\t\t\t\t\tlogger.debug('Photo source does not exist, creating it.')\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait davGetClient().createDirectory(source)\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tlogger.error('Fail to create source directory', { error })\n\t\t\t\t\t}\n\t\t\t\t} else if (error.code === 'ERR_CANCELED') {\n\t\t\t\t\treturn []\n\t\t\t\t} else {\n\t\t\t\t\tthis.errorFetchingFiles = error\n\t\t\t\t}\n\n\t\t\t\t// cancelled request, moving on...\n\t\t\t\tlogger.error('Error fetching files', { error })\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tthis.loadingFiles = false\n\t\t\t\tthis.fetchSemaphore.release(fetchSemaphoreSymbol)\n\t\t\t}\n\n\t\t\treturn []\n\t\t},\n\n\t\tresetFetchFilesState() {\n\t\t\tthis.doneFetchingFiles = false\n\t\t\tthis.errorFetchingFiles = null\n\t\t\tthis.loadingFiles = false\n\t\t\tthis.fetchedFileIds = []\n\t\t},\n\t},\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \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 .\n *\n */\n\nimport { genFileInfo } from '../utils/fileUtils.js'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { allMimes } from './AllowedMimes.js'\nimport client from './DavClient.js'\nimport { props } from './DavRequest.js'\nimport moment from '@nextcloud/moment'\nimport store from '../store/index.js'\n\n/**\n * List files from a folder and filter out unwanted mimes\n *\n * @param {object} [options] used for the cancellable requests\n * @param {number} [options.firstResult=0] Index of the first result that we want (starts at 0)\n * @param {number} [options.nbResults=200] The number of file to fetch\n * @param {string[]} [options.mimesType=allMimes] Mime type of the files\n * @param {boolean} [options.full=false] get full data of the files\n * @param {boolean} [options.onThisDay=false] get only items from this day of year\n * @param {boolean} [options.onlyFavorites=false] get only favorite items\n * @return {Promise} the file list\n */\nexport default async function(options = {}) {\n\t// default function options\n\toptions = {\n\t\tfirstResult: 0,\n\t\tnbResults: 200,\n\t\tmimesType: allMimes,\n\t\tonThisDay: false,\n\t\tonlyFavorites: false,\n\t\t...options,\n\t}\n\n\tconst prefixPath = `/files/${getCurrentUser().uid}`\n\n\t// generating the search or condition\n\t// based on the allowed mimetypes\n\tconst orMime = options.mimesType.reduce((str, mime) => `${str}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t${mime}\n\t\t\n\t`, '')\n\n\tconst eqFavorites = options.onlyFavorites\n\t\t? `\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t1\n\t\t\t`\n\t\t: ''\n\n\tconst onThisDay = options.onThisDay\n\t\t? `${Array(20).fill(1)\n\t\t\t.map((_, years) => {\n\t\t\t\tconst start = moment(Date.now()).startOf('day').subtract(3, 'd').subtract(years + 1, 'y')\n\t\t\t\tconst end = moment(Date.now()).endOf('day').add(3, 'd').subtract(years + 1, 'y')\n\t\t\t\treturn `\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${start.format(moment.defaultFormatUtc)}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${end.format(moment.defaultFormatUtc)}\n\t\t\t\t\n\t\t\t`\n\t\t\t}).join('\\n')}`\n\t\t: ''\n\n\t// TODO: uncomment when SEARCH on multiple folders is implemented.\n\t// const sourceFolders = store.state.userConfig.photosSourceFolder\n\t// .map(folder => `\n\t// \n\t// ${davRootPath}/${folder}\n\t// infinity\n\t// \n\t// `)\n\t// .join('\\n')\n\n\toptions = Object.assign({\n\t\tmethod: 'SEARCH',\n\t\theaders: {\n\t\t\t'content-Type': 'text/xml',\n\t\t},\n\t\tdata: `\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t${props}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t${prefixPath}/${store.state.userConfig.photosSourceFolder ?? '/Photos'}\n\t\t\t\t\t\t\tinfinity\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t${orMime}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t${eqFavorites}\n\t\t\t\t\t\t\t${onThisDay}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\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\t\n\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\t\n\t\t\t\t\t\t${options.nbResults}\n\t\t\t\t\t\t${options.firstResult}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t`,\n\t\tdeep: true,\n\t\tdetails: true,\n\t}, options)\n\n\tconst response = await client.getDirectoryContents('', options)\n\n\treturn response.data.map(data => genFileInfo(data))\n}\n","var q=[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"A\",\"B\",\"C\",\"D\",\"E\",\"F\",\"G\",\"H\",\"I\",\"J\",\"K\",\"L\",\"M\",\"N\",\"O\",\"P\",\"Q\",\"R\",\"S\",\"T\",\"U\",\"V\",\"W\",\"X\",\"Y\",\"Z\",\"a\",\"b\",\"c\",\"d\",\"e\",\"f\",\"g\",\"h\",\"i\",\"j\",\"k\",\"l\",\"m\",\"n\",\"o\",\"p\",\"q\",\"r\",\"s\",\"t\",\"u\",\"v\",\"w\",\"x\",\"y\",\"z\",\"#\",\"$\",\"%\",\"*\",\"+\",\",\",\"-\",\".\",\":\",\";\",\"=\",\"?\",\"@\",\"[\",\"]\",\"^\",\"_\",\"{\",\"|\",\"}\",\"~\"],x=t=>{let e=0;for(let r=0;r{var r=\"\";for(let n=1;n<=e;n++){let l=Math.floor(t)/Math.pow(83,e-n)%83;r+=q[Math.floor(l)]}return r};var f=t=>{let e=t/255;return e<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)},h=t=>{let e=Math.max(0,Math.min(1,t));return e<=.0031308?Math.trunc(e*12.92*255+.5):Math.trunc((1.055*Math.pow(e,.4166666666666667)-.055)*255+.5)},F=t=>t<0?-1:1,M=(t,e)=>F(t)*Math.pow(Math.abs(t),e);var d=class extends Error{constructor(e){super(e),this.name=\"ValidationError\",this.message=e}};var C=t=>{if(!t||t.length<6)throw new d(\"The blurhash string must be at least 6 characters\");let e=x(t[0]),r=Math.floor(e/9)+1,n=e%9+1;if(t.length!==4+2*n*r)throw new d(`blurhash length mismatch: length is ${t.length} but it should be ${4+2*n*r}`)},N=t=>{try{C(t)}catch(e){return{result:!1,errorReason:e.message}}return{result:!0}},z=t=>{let e=t>>16,r=t>>8&255,n=t&255;return[f(e),f(r),f(n)]},L=(t,e)=>{let r=Math.floor(t/361),n=Math.floor(t/19)%19,l=t%19;return[M((r-9)/9,2)*e,M((n-9)/9,2)*e,M((l-9)/9,2)*e]},U=(t,e,r,n)=>{C(t),n=n|1;let l=x(t[0]),m=Math.floor(l/9)+1,b=l%9+1,i=(x(t[1])+1)/166,u=new Array(b*m);for(let o=0;o{let l=0,m=0,b=0,g=e*A;for(let u=0;u{let e=h(t[0]),r=h(t[1]),n=h(t[2]);return(e<<16)+(r<<8)+n},H=(t,e)=>{let r=Math.floor(Math.max(0,Math.min(18,Math.floor(M(t[0]/e,.5)*9+9.5)))),n=Math.floor(Math.max(0,Math.min(18,Math.floor(M(t[1]/e,.5)*9+9.5)))),l=Math.floor(Math.max(0,Math.min(18,Math.floor(M(t[2]/e,.5)*9+9.5))));return r*19*19+n*19+l},O=(t,e,r,n,l)=>{if(n<1||n>9||l<1||l>9)throw new d(\"BlurHash must have between 1 and 9 components\");if(e*r*4!==t.length)throw new d(\"Width and height must match the pixels array\");let m=[];for(let s=0;sa*Math.cos(Math.PI*o*B/e)*Math.cos(Math.PI*s*R/r));m.push(y)}let b=m[0],g=m.slice(1),i=\"\",u=n-1+(l-1)*9;i+=p(u,1);let c;if(g.length>0){let s=Math.max(...g.map(a=>Math.max(...a))),o=Math.floor(Math.max(0,Math.min(82,Math.floor(s*166-.5))));c=(o+1)/166,i+=p(o,1)}else c=1,i+=p(0,1);return i+=p($(b),4),g.forEach(s=>{i+=p(H(s,c),2)}),i},S=O;export{d as ValidationError,j as decode,S as encode,N as isBlurhashValid};\n//# sourceMappingURL=index.js.map","// 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, \".face-list[data-v-33326436]{display:flex;flex-direction:row;height:350px;flex-wrap:wrap;padding:12px}.loader[data-v-33326436]{margin:25% auto}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Faces/FaceMergeForm.vue\"],\"names\":[],\"mappings\":\"AAEA,4BACC,YAAA,CACA,kBAAA,CACA,YAAA,CACA,cAAA,CACA,YAAA,CAGD,yBACC,eAAA\",\"sourcesContent\":[\"$sizes: (\\\"400\\\": (\\\"count\\\": 3, \\\"marginTop\\\": 66, \\\"marginW\\\": 8), \\\"700\\\": (\\\"count\\\": 4, \\\"marginTop\\\": 66, \\\"marginW\\\": 8), \\\"1024\\\": (\\\"count\\\": 5, \\\"marginTop\\\": 66, \\\"marginW\\\": 44), \\\"1280\\\": (\\\"count\\\": 4, \\\"marginTop\\\": 66, \\\"marginW\\\": 44), \\\"1440\\\": (\\\"count\\\": 5, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"1600\\\": (\\\"count\\\": 6, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"2048\\\": (\\\"count\\\": 7, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"2560\\\": (\\\"count\\\": 8, \\\"marginTop\\\": 88, \\\"marginW\\\": 88), \\\"3440\\\": (\\\"count\\\": 9, \\\"marginTop\\\": 88, \\\"marginW\\\": 88), \\\"max\\\": (\\\"count\\\": 10, \\\"marginTop\\\": 88, \\\"marginW\\\": 88));\\n\\n.face-list {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\theight: 350px;\\n\\tflex-wrap: wrap;\\n\\tpadding: 12px;\\n}\\n\\n.loader {\\n\\tmargin: 25% auto;\\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, \".face[data-v-22feae0f]{display:flex;flex-direction:column}.face__empty[data-v-22feae0f]{display:flex;flex-direction:column;align-items:center}.face__empty__button[data-v-22feae0f]{margin-top:32px}.face__header[data-v-22feae0f]{display:flex;min-height:60px;align-items:center;justify-content:space-between;position:-webkit-sticky;position:sticky;z-index:3;background:var(--color-main-background);padding:0 64px}@media only screen and (max-width: 1020px){.face__header[data-v-22feae0f]{padding:0;padding-left:64px}}.face__header__left[data-v-22feae0f]{height:100%;display:flex;align-items:center}.face__header__title[data-v-22feae0f]{margin-left:10px}.face__header__title h2[data-v-22feae0f]{margin-bottom:0}.face__header__loader[data-v-22feae0f]{margin-left:32px}.face__header__actions[data-v-22feae0f]{display:flex;align-items:center}.face__header__actions button[data-v-22feae0f]{margin-left:16px}.face__photos[data-v-22feae0f]{margin-top:16px;height:100%;min-height:0;padding:0 64px}@media only screen and (max-width: 1020px){.face__photos[data-v-22feae0f]{padding:0}}.empty-content-with-illustration[data-v-22feae0f] .empty-content__icon{width:200px;height:200px}.empty-content-with-illustration[data-v-22feae0f] .empty-content__icon svg{width:200px;height:200px}.rename-form[data-v-22feae0f]{display:flex;flex-direction:row;align-items:center;height:70px;padding:16px}.rename-form input[data-v-22feae0f]{width:100%}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/mixins/FaceContent.scss\"],\"names\":[],\"mappings\":\"AAqBA,uBACC,YAAA,CACA,qBAAA,CAEA,8BACC,YAAA,CACA,qBAAA,CACA,kBAAA,CAEA,sCACC,eAAA,CAKF,+BACC,YAAA,CACA,eAAA,CACA,kBAAA,CACA,6BAAA,CACA,uBAAA,CAAA,eAAA,CACA,SAAA,CACA,uCAAA,CACA,cAAA,CAEA,2CAVD,+BAWE,SAAA,CACA,iBAAA,CAAA,CAGD,qCACC,WAAA,CACA,YAAA,CACA,kBAAA,CAGD,sCACC,gBAAA,CACA,yCACC,eAAA,CAIF,uCACC,gBAAA,CAGD,wCACC,YAAA,CACA,kBAAA,CAEA,+CACC,gBAAA,CAKH,+BACC,eAAA,CACA,WAAA,CACA,YAAA,CACA,cAAA,CAEA,2CAND,+BAOE,SAAA,CAAA,CAKH,uEACC,WAAA,CACA,YAAA,CAEA,2EACC,WAAA,CACA,YAAA,CAIF,8BACC,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,WAAA,CACA,YAAA,CAEA,oCACC,UAAA\",\"sourcesContent\":[\"/**\\n * @copyright Copyright (c) 2023 Marcel Klehr \\n *\\n * @author Marcel Klehr \\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 .\\n *\\n */\\n.face {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\n\\t&__empty {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\talign-items: center;\\n\\n\\t\\t&__button {\\n\\t\\t\\tmargin-top: 32px;\\n\\t\\t}\\n\\n\\t}\\n\\n\\t&__header {\\n\\t\\tdisplay: flex;\\n\\t\\tmin-height: 60px;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: space-between;\\n\\t\\tposition: sticky;\\n\\t\\tz-index: 3;\\n\\t\\tbackground: var(--color-main-background);\\n\\t\\tpadding: 0 64px;\\n\\n\\t\\t@media only screen and (max-width: 1020px) {\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\tpadding-left: 64px;\\n\\t\\t}\\n\\n\\t\\t&__left {\\n\\t\\t\\theight: 100%;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t}\\n\\n\\t\\t&__title {\\n\\t\\t\\tmargin-left: 10px;\\n\\t\\t\\th2 {\\n\\t\\t\\t\\tmargin-bottom: 0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&__loader {\\n\\t\\t\\tmargin-left: 32px;\\n\\t\\t}\\n\\n\\t\\t&__actions {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\n\\t\\t\\tbutton {\\n\\t\\t\\t\\tmargin-left: 16px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__photos {\\n\\t\\tmargin-top: 16px;\\n\\t\\theight: 100%;\\n\\t\\tmin-height: 0; // Prevent it from overflowing in a flex context.\\n\\t\\tpadding: 0 64px;\\n\\n\\t\\t@media only screen and (max-width: 1020px) {\\n\\t\\t\\tpadding: 0;\\n\\t\\t}\\n\\t}\\n}\\n\\n.empty-content-with-illustration :deep .empty-content__icon {\\n\\twidth: 200px;\\n\\theight: 200px;\\n\\n\\tsvg {\\n\\t\\twidth: 200px;\\n\\t\\theight: 200px;\\n\\t}\\n}\\n\\n.rename-form {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\talign-items: center;\\n\\theight: 70px;\\n\\tpadding: 16px;\\n\\n\\tinput {\\n\\t\\twidth: 100%;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./AccountSwitch.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./AccountSwitch.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./AccountSwitch.vue?vue&type=template&id=7ce2a630\"\nimport script from \"./AccountSwitch.vue?vue&type=script&lang=js\"\nexport * from \"./AccountSwitch.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon account-switch-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M16 9C22 9 22 13 22 13V15H16V13C16 13 16 11.31 14.85 9.8C14.68 9.57 14.47 9.35 14.25 9.14C14.77 9.06 15.34 9 16 9M2 13C2 13 2 9 8 9S14 13 14 13V15H2V13M9 17V19H15V17L18 20L15 23V21H9V23L6 20L9 17M8 1C6.34 1 5 2.34 5 4S6.34 7 8 7 11 5.66 11 4 9.66 1 8 1M16 1C14.34 1 13 2.34 13 4S14.34 7 16 7 19 5.66 19 4 17.66 1 16 1Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./AlertCircle.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./AlertCircle.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./AlertCircle.vue?vue&type=template&id=2a2453f8\"\nimport script from \"./AlertCircle.vue?vue&type=script&lang=js\"\nexport * from \"./AlertCircle.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon alert-circle-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M13,13H11V7H13M13,17H11V15H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ArrowLeft.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ArrowLeft.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ArrowLeft.vue?vue&type=template&id=187c55d7\"\nimport script from \"./ArrowLeft.vue?vue&type=script&lang=js\"\nexport * from \"./ArrowLeft.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon arrow-left-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M20,11V13H8L13.5,18.5L12.08,19.92L4.16,12L12.08,4.08L13.5,5.5L8,11H20Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Download.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Download.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Download.vue?vue&type=template&id=67aea606\"\nimport script from \"./Download.vue?vue&type=script&lang=js\"\nexport * from \"./Download.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon download-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M5,20H19V18H5M19,9H15V3H9V9H5L12,16L19,9Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./PackageVariant.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./PackageVariant.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./PackageVariant.vue?vue&type=template&id=9a5ab29c\"\nimport script from \"./PackageVariant.vue?vue&type=script&lang=js\"\nexport * from \"./PackageVariant.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon package-variant-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M2,10.96C1.5,10.68 1.35,10.07 1.63,9.59L3.13,7C3.24,6.8 3.41,6.66 3.6,6.58L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.66,6.72 20.82,6.88 20.91,7.08L22.36,9.6C22.64,10.08 22.47,10.69 22,10.96L21,11.54V16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V10.96C2.7,11.13 2.32,11.14 2,10.96M12,4.15V4.15L12,10.85V10.85L17.96,7.5L12,4.15M5,15.91L11,19.29V12.58L5,9.21V15.91M19,15.91V12.69L14,15.59C13.67,15.77 13.3,15.76 13,15.6V19.29L19,15.91M13.85,13.36L20.13,9.73L19.55,8.72L13.27,12.35L13.85,13.36Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./PlayCircle.vue?vue&type=template&id=34d1e782\"\nimport script from \"./PlayCircle.vue?vue&type=script&lang=js\"\nexport * from \"./PlayCircle.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../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\n","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Star.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Star.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Star.vue?vue&type=template&id=22339b94\"\nimport script from \"./Star.vue?vue&type=script&lang=js\"\nexport * from \"./Star.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon star-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./Video.vue?vue&type=template&id=12752490\"\nimport script from \"./Video.vue?vue&type=script&lang=js\"\nexport * from \"./Video.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../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\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"merge-form face-list\"},_vm._l((_vm.filteredFaces),function(face){return _c('FaceCover',{key:face.basename,attrs:{\"base-name\":face.basename,\"small\":\"\"},on:{\"click\":function($event){return _vm.handleSelect(face.basename)}}})}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FaceMergeForm.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!./FaceMergeForm.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/postcss-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FaceMergeForm.vue?vue&type=style&index=0&id=33326436&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FaceMergeForm.vue?vue&type=style&index=0&id=33326436&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FaceMergeForm.vue?vue&type=template&id=33326436&scoped=true\"\nimport script from \"./FaceMergeForm.vue?vue&type=script&lang=js\"\nexport * from \"./FaceMergeForm.vue?vue&type=script&lang=js\"\nimport style0 from \"./FaceMergeForm.vue?vue&type=style&index=0&id=33326436&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"33326436\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.errorFetchingFiles)?_c('NcEmptyContent',{scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('AlertCircle')]},proxy:true}],null,false,794036927)},[_vm._v(\"\\n\\t\"+_vm._s(_vm.t('photos', 'An error occurred'))+\"\\n\")]):_c('div',{staticClass:\"face\"},[_c('div',{staticClass:\"face__header\"},[_c('div',{staticClass:\"face__header__left\"},[_c('NcActions',[_c('NcActionButton',{on:{\"click\":function($event){return _vm.$router.push('/faces/')}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('ArrowLeft')]},proxy:true}])},[_vm._v(_vm._s(_vm.t('photos', 'Back'))+\"\\n\\t\\t\\t\\t\")])],1),_vm._v(\" \"),_c('div',{staticClass:\"face__header__title\"},[_c('h2',{class:{'face-name': true}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Unassigned faces'))+\"\\n\\t\\t\\t\\t\")])]),_vm._v(\" \"),(_vm.loadingCount > 0 || _vm.loadingFaces)?_c('NcLoadingIcon'):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"face__header__actions\"},[_c('NcActions',{attrs:{\"force-menu\":true}},[(_vm.selectedFileIds.length)?[_c('NcActionButton',{attrs:{\"close-after-click\":true,\"aria-label\":_vm.t('photos', 'Download selected files')},on:{\"click\":_vm.downloadSelection}},[_c('Download',{attrs:{\"slot\":\"icon\"},slot:\"icon\"}),_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Download selected photos'))+\"\\n\\t\\t\\t\\t\\t\")],1),_vm._v(\" \"),(_vm.shouldFavoriteSelection)?_c('NcActionButton',{attrs:{\"close-after-click\":true,\"aria-label\":_vm.t('photos', 'Mark selection as favorite')},on:{\"click\":_vm.favoriteSelection}},[_c('Star',{attrs:{\"slot\":\"icon\"},slot:\"icon\"}),_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Favorite'))+\"\\n\\t\\t\\t\\t\\t\")],1):_c('NcActionButton',{attrs:{\"close-after-click\":true,\"aria-label\":_vm.t('photos', 'Remove selection from favorites')},on:{\"click\":_vm.unFavoriteSelection}},[_c('Star',{attrs:{\"slot\":\"icon\"},slot:\"icon\"}),_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Remove from favorites'))+\"\\n\\t\\t\\t\\t\\t\")],1),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"close-after-click\":true},on:{\"click\":function($event){_vm.showMoveModal = true}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('AccountSwitch')]},proxy:true}],null,false,2937983280)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.n('photos', 'Move photo to a different person', 'Move photos to a different person', _vm.selectedFileIds.length))+\"\\n\\t\\t\\t\\t\\t\")])]:_vm._e()],2)],1)]),_vm._v(\" \"),_c('FilesListViewer',{staticClass:\"face__photos\",attrs:{\"container-element\":_vm.appContent,\"file-ids\":_vm.faceFileIds,\"loading\":_vm.loadingFiles || _vm.loadingFaces},scopedSlots:_vm._u([{key:\"default\",fn:function({file, distance}){return _c('File',{attrs:{\"file\":_vm.files[file.id],\"allow-selection\":true,\"selected\":_vm.selection[file.id] === true,\"distance\":distance},on:{\"click\":_vm.openViewer,\"select-toggled\":_vm.onFileSelectToggle}})}}])}),_vm._v(\" \"),(_vm.showMoveModal)?_c('NcDialog',{attrs:{\"name\":_vm.t('photos', 'Move to different person'),\"close-on-click-outside\":\"\",\"size\":\"normal\"},on:{\"closing\":function($event){_vm.showMoveModal = false}}},[_c('FaceMergeForm',{attrs:{\"first-face\":'-1'},on:{\"select\":function($event){return _vm.handleMove($event, _vm.selectedFileIds)}}})],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnassignedFaces.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!./UnassignedFaces.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/postcss-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnassignedFaces.vue?vue&type=style&index=0&id=22feae0f&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnassignedFaces.vue?vue&type=style&index=0&id=22feae0f&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UnassignedFaces.vue?vue&type=template&id=22feae0f&scoped=true\"\nimport script from \"./UnassignedFaces.vue?vue&type=script&lang=js\"\nexport * from \"./UnassignedFaces.vue?vue&type=script&lang=js\"\nimport style0 from \"./UnassignedFaces.vue?vue&type=style&index=0&id=22feae0f&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"22feae0f\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./PlayCircle.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./PlayCircle.vue?vue&type=script&lang=js\"","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Video.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Video.vue?vue&type=script&lang=js\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon play-circle-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M10,16.5V7.5L16,12M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon video-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M17,10.5V7A1,1 0 0,0 16,6H4A1,1 0 0,0 3,7V17A1,1 0 0,0 4,18H16A1,1 0 0,0 17,17V13.5L21,17.5V6.5L17,10.5Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }"],"names":["name","mixins","AbortControllerMixin","data","errorFetchingFiles","loadingFiles","doneFetchingFiles","fetchSemaphore","SemaphoreWithPriority","fetchedFileIds","watch","this","resetFetchFilesState","methods","async","options","arguments","length","undefined","blacklist","force","fetchSemaphoreSymbol","acquire","numberOfImagesPerBatch","fetchedFiles","_store$state$userConf","firstResult","nbResults","mimesType","allMimes","onThisDay","onlyFavorites","prefixPath","concat","getCurrentUser","uid","orMime","reduce","str","mime","eqFavorites","Array","fill","map","_","years","start","moment","Date","now","startOf","subtract","end","endOf","add","format","join","Object","assign","method","headers","props","store","deep","details","client","genFileInfo","getPhotos","signal","abortController","fileIds","file","fileid","filter","fileId","includes","toString","push","$store","dispatch","logger","error","_error$response","response","status","source","joinPaths","davRootPath","davGetClient","createDirectory","code","console","release","q","x","t","e","r","n","indexOf","f","Math","pow","h","max","min","trunc","M","F","abs","d","Error","constructor","super","message","C","floor","z","L","l","j","m","b","i","u","o","a","substring","c","s","Uint8ClampedArray","y","B","R","w","P","G","cos","PI","T","V","I","E","___CSS_LOADER_EXPORT___","module","id","emits","title","type","String","fillColor","default","size","Number","_vm","_c","_self","_b","staticClass","attrs","on","$event","$emit","$attrs","_v","_s","_e","components","FaceCover","FaceCoverMixin","FetchFacesMixin","firstFace","required","loading","computed","mapGetters","filteredFaces","values","faces","face","basename","sort","nbItems","facesFiles","handleSelect","faceName","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_l","key","Star","Download","AlertCircle","ArrowLeft","FaceMergeForm","FilesListViewer","File","NcLoadingIcon","NcEmptyContent","NcActions","NcActionButton","NcDialog","AccountSwitch","directives","focus","el","Vue","FetchFilesMixin","FilesSelectionMixin","showMoveModal","loadingCount","appContent","document","getElementById","faceFileIds","unassignedFiles","shouldFavoriteSelection","selectedFileIds","some","state","files","favorite","mounted","fetchUnassignedFaces","mapActions","openViewer","OCA","Viewer","open","path","filename","split","slice","list","sectionHeader","loadMore","canLoop","moveFilesToFace","oldFace","fileIdsToMove","toggleFavoriteForFiles","favoriteState","downloadFiles","scopedSlots","_u","fn","proxy","$router","class","loadingFaces","downloadSelection","slot","favoriteSelection","unFavoriteSelection","_ref","distance","selection","onFileSelectToggle","handleMove","render","staticRenderFns"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"photos-node_modules_blurhash_dist_esm_index_js-node_modules_vue-material-design-icons_PackageVariant-6bf9ec.js?v=83df6777279ced2a9bc3","mappings":"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","sources":["webpack:///photos/src/mixins/FetchFilesMixin.js","webpack:///photos/src/services/PhotoSearch.js","webpack:///photos/node_modules/blurhash/dist/esm/index.js","webpack:///photos/src/components/Faces/FaceMergeForm.vue?vue&type=style&index=0&id=33326436&prod&scoped=true&lang=scss","webpack:///photos/src/views/UnassignedFaces.vue?vue&type=style&index=0&id=22feae0f&prod&lang=scss&scoped=true","webpack:///photos/node_modules/vue-material-design-icons/AccountSwitch.vue","webpack:///photos/node_modules/vue-material-design-icons/AccountSwitch.vue?vue&type=script&lang=js","webpack://photos/./node_modules/vue-material-design-icons/AccountSwitch.vue?3918","webpack:///photos/node_modules/vue-material-design-icons/AccountSwitch.vue?vue&type=template&id=7ce2a630","webpack:///photos/node_modules/vue-material-design-icons/AlertCircle.vue","webpack:///photos/node_modules/vue-material-design-icons/AlertCircle.vue?vue&type=script&lang=js","webpack://photos/./node_modules/vue-material-design-icons/AlertCircle.vue?489a","webpack:///photos/node_modules/vue-material-design-icons/AlertCircle.vue?vue&type=template&id=2a2453f8","webpack:///photos/node_modules/vue-material-design-icons/ArrowLeft.vue","webpack:///photos/node_modules/vue-material-design-icons/ArrowLeft.vue?vue&type=script&lang=js","webpack://photos/./node_modules/vue-material-design-icons/ArrowLeft.vue?f857","webpack:///photos/node_modules/vue-material-design-icons/ArrowLeft.vue?vue&type=template&id=187c55d7","webpack:///photos/node_modules/vue-material-design-icons/Download.vue","webpack:///photos/node_modules/vue-material-design-icons/Download.vue?vue&type=script&lang=js","webpack://photos/./node_modules/vue-material-design-icons/Download.vue?b226","webpack:///photos/node_modules/vue-material-design-icons/Download.vue?vue&type=template&id=67aea606","webpack:///photos/node_modules/vue-material-design-icons/PackageVariant.vue","webpack:///photos/node_modules/vue-material-design-icons/PackageVariant.vue?vue&type=script&lang=js","webpack://photos/./node_modules/vue-material-design-icons/PackageVariant.vue?692c","webpack:///photos/node_modules/vue-material-design-icons/PackageVariant.vue?vue&type=template&id=9a5ab29c","webpack://photos/./node_modules/vue-material-design-icons/PlayCircle.vue?0c26","webpack:///photos/node_modules/vue-material-design-icons/PlayCircle.vue","webpack:///photos/node_modules/vue-material-design-icons/Star.vue","webpack:///photos/node_modules/vue-material-design-icons/Star.vue?vue&type=script&lang=js","webpack://photos/./node_modules/vue-material-design-icons/Star.vue?35ed","webpack:///photos/node_modules/vue-material-design-icons/Star.vue?vue&type=template&id=22339b94","webpack://photos/./node_modules/vue-material-design-icons/Video.vue?28ad","webpack:///photos/node_modules/vue-material-design-icons/Video.vue","webpack://photos/./src/components/Faces/FaceMergeForm.vue?d2e1","webpack:///photos/src/components/Faces/FaceMergeForm.vue","webpack:///photos/src/components/Faces/FaceMergeForm.vue?vue&type=script&lang=js","webpack://photos/./src/components/Faces/FaceMergeForm.vue?241f","webpack://photos/./src/components/Faces/FaceMergeForm.vue?2513","webpack://photos/./src/views/UnassignedFaces.vue?51bd","webpack:///photos/src/views/UnassignedFaces.vue","webpack:///photos/src/views/UnassignedFaces.vue?vue&type=script&lang=js","webpack://photos/./src/views/UnassignedFaces.vue?0384","webpack://photos/./src/views/UnassignedFaces.vue?2685","webpack:///photos/node_modules/vue-material-design-icons/PlayCircle.vue?vue&type=script&lang=js","webpack:///photos/node_modules/vue-material-design-icons/Video.vue?vue&type=script&lang=js","webpack:///photos/node_modules/vue-material-design-icons/PlayCircle.vue?vue&type=template&id=34d1e782","webpack:///photos/node_modules/vue-material-design-icons/Video.vue?vue&type=template&id=12752490"],"sourcesContent":["/**\n * @copyright Copyright (c) 2022 Louis Chemineau \n *\n * @author Louis Chemineau \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 .\n *\n */\n\nimport { davGetClient, davRootPath } from '@nextcloud/files'\nimport { joinPaths } from '@nextcloud/paths'\nimport logger from '../services/logger.js'\nimport getPhotos from '../services/PhotoSearch.js'\nimport SemaphoreWithPriority from '../utils/semaphoreWithPriority.js'\nimport AbortControllerMixin from './AbortControllerMixin.js'\nimport store from '../store/index.js'\n\nexport default {\n\tname: 'FetchFilesMixin',\n\n\tmixins: [\n\t\tAbortControllerMixin,\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\terrorFetchingFiles: null,\n\t\t\tloadingFiles: false,\n\t\t\tdoneFetchingFiles: false,\n\t\t\tfetchSemaphore: new SemaphoreWithPriority(1),\n\t\t\tfetchedFileIds: [],\n\t\t}\n\t},\n\n\twatch: {\n\t\t'$route.path'() {\n\t\t\tthis.resetFetchFilesState()\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * @param {object} options - Options to pass to getPhotos.\n\t\t * @param {string[]} [blacklist=[]] - Array of ids to filter out.\n\t\t * @param {boolean} [force=false] - Force fetching even if doneFetchingFiles is true\n\t\t * @return {Promise} - The next batch of data depending on global offset.\n\t\t */\n\t\tasync fetchFiles(options = {}, blacklist = [], force = false) {\n\t\t\tif ((this.doneFetchingFiles && !force) || this.loadingFiles) {\n\t\t\t\treturn []\n\t\t\t}\n\n\t\t\tconst fetchSemaphoreSymbol = await this.fetchSemaphore.acquire()\n\n\t\t\ttry {\n\t\t\t\tthis.errorFetchingFiles = null\n\t\t\t\tthis.loadingFiles = true\n\n\t\t\t\tconst numberOfImagesPerBatch = 200\n\n\t\t\t\t// Load next batch of images\n\t\t\t\tconst fetchedFiles = await getPhotos({\n\t\t\t\t\tfirstResult: this.fetchedFileIds.length,\n\t\t\t\t\tnbResults: numberOfImagesPerBatch,\n\t\t\t\t\t...options,\n\t\t\t\t\tsignal: this.abortController.signal,\n\t\t\t\t})\n\n\t\t\t\t// If we get less files than requested that means we got to the end\n\t\t\t\tif (fetchedFiles.length !== numberOfImagesPerBatch) {\n\t\t\t\t\tthis.doneFetchingFiles = true\n\t\t\t\t}\n\n\t\t\t\tconst fileIds = fetchedFiles\n\t\t\t\t\t.map(file => file.fileid)\n\t\t\t\t\t.filter(fileId => !this.fetchedFileIds.includes(fileId.toString())) // Filter to prevent duplicate fileIds.\n\n\t\t\t\tthis.fetchedFileIds.push(\n\t\t\t\t\t...fileIds\n\t\t\t\t\t\t.map((fileId) => fileId.toString())\n\t\t\t\t\t\t.filter((fileId) => !blacklist.includes(fileId))\n\t\t\t\t)\n\n\t\t\t\tthis.$store.dispatch('appendFiles', fetchedFiles)\n\n\t\t\t\tlogger.debug(`[FetchFilesMixin] Fetched ${fileIds.length} new files: `, fileIds)\n\n\t\t\t\treturn fileIds\n\t\t\t} catch (error) {\n\t\t\t\tif (error.response?.status === 404) {\n\t\t\t\t\tconst sources = store.state.userConfig.photosSourceFolders\n\t\t\t\t\tfor (const source of sources) {\n\t\t\t\t\t\tif (error.response?.data?.match(`File with name /${source} could not be located`) === null) {\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlogger.debug(`The ${source} folder does not exist, creating it.`)\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait davGetClient().createDirectory(joinPaths(davRootPath, source))\n\t\t\t\t\t\t\tthis.resetFetchFilesState()\n\t\t\t\t\t\t\treturn []\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\tthis.errorFetchingFiles = 404\n\t\t\t\t\t\t\tlogger.error('Fail to create source directory', { error })\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if (error.code === 'ERR_CANCELED') {\n\t\t\t\t\treturn []\n\t\t\t\t} else {\n\t\t\t\t\tthis.errorFetchingFiles = error\n\t\t\t\t}\n\n\t\t\t\t// cancelled request, moving on...\n\t\t\t\tlogger.error('Error fetching files', { error })\n\t\t\t} finally {\n\t\t\t\tthis.loadingFiles = false\n\t\t\t\tthis.fetchSemaphore.release(fetchSemaphoreSymbol)\n\t\t\t}\n\n\t\t\treturn []\n\t\t},\n\n\t\tresetFetchFilesState() {\n\t\t\tthis.doneFetchingFiles = false\n\t\t\tthis.errorFetchingFiles = null\n\t\t\tthis.loadingFiles = false\n\t\t\tthis.fetchedFileIds = []\n\t\t},\n\t},\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \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 .\n *\n */\n\nimport { genFileInfo } from '../utils/fileUtils.js'\nimport { allMimes } from './AllowedMimes.js'\nimport client from './DavClient.js'\nimport { props } from './DavRequest.js'\nimport moment from '@nextcloud/moment'\nimport store from '../store/index.js'\nimport { davRootPath } from '@nextcloud/files'\nimport { joinPaths } from '@nextcloud/paths'\n\n/**\n * List files from a folder and filter out unwanted mimes\n *\n * @param {object} [options] used for the cancellable requests\n * @param {number} [options.firstResult=0] Index of the first result that we want (starts at 0)\n * @param {number} [options.nbResults=200] The number of file to fetch\n * @param {string[]} [options.mimesType=allMimes] Mime type of the files\n * @param {boolean} [options.full=false] get full data of the files\n * @param {boolean} [options.onThisDay=false] get only items from this day of year\n * @param {boolean} [options.onlyFavorites=false] get only favorite items\n * @return {Promise} the file list\n */\nexport default async function(options = {}) {\n\t// default function options\n\toptions = {\n\t\tfirstResult: 0,\n\t\tnbResults: 200,\n\t\tmimesType: allMimes,\n\t\tonThisDay: false,\n\t\tonlyFavorites: false,\n\t\t...options,\n\t}\n\n\t// generating the search or condition\n\t// based on the allowed mimetypes\n\tconst orMime = options.mimesType.reduce((str, mime) => `${str}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t${mime}\n\t\t\n\t`, '')\n\n\tconst eqFavorites = options.onlyFavorites\n\t\t? `\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t1\n\t\t\t`\n\t\t: ''\n\n\tconst onThisDay = options.onThisDay\n\t\t? `${Array(20).fill(1)\n\t\t\t.map((_, years) => {\n\t\t\t\tconst start = moment(Date.now()).startOf('day').subtract(3, 'd').subtract(years + 1, 'y')\n\t\t\t\tconst end = moment(Date.now()).endOf('day').add(3, 'd').subtract(years + 1, 'y')\n\t\t\t\treturn `\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${start.format(moment.defaultFormatUtc)}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${end.format(moment.defaultFormatUtc)}\n\t\t\t\t\n\t\t\t`\n\t\t\t}).join('\\n')}`\n\t\t: ''\n\n\tconst sourceFolders = store.state.userConfig.photosSourceFolders\n\t\t.map(folder => `\n\t\t\t\n\t\t\t\t${joinPaths(davRootPath, folder)}\n\t\t\t\tinfinity\n\t\t\t`\n\t\t)\n\t\t.join('\\n')\n\n\toptions = Object.assign({\n\t\tmethod: 'SEARCH',\n\t\theaders: {\n\t\t\t'content-Type': 'text/xml',\n\t\t},\n\t\tdata: `\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t${props}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t${sourceFolders}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t${orMime}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t${eqFavorites}\n\t\t\t\t\t\t\t${onThisDay}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\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\t\n\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\t\n\t\t\t\t\t\t${options.nbResults}\n\t\t\t\t\t\t${options.firstResult}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t`,\n\t\tdeep: true,\n\t\tdetails: true,\n\t}, options)\n\n\tconst response = await client.getDirectoryContents('', options)\n\n\treturn response.data.map(data => genFileInfo(data))\n}\n","var q=[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"A\",\"B\",\"C\",\"D\",\"E\",\"F\",\"G\",\"H\",\"I\",\"J\",\"K\",\"L\",\"M\",\"N\",\"O\",\"P\",\"Q\",\"R\",\"S\",\"T\",\"U\",\"V\",\"W\",\"X\",\"Y\",\"Z\",\"a\",\"b\",\"c\",\"d\",\"e\",\"f\",\"g\",\"h\",\"i\",\"j\",\"k\",\"l\",\"m\",\"n\",\"o\",\"p\",\"q\",\"r\",\"s\",\"t\",\"u\",\"v\",\"w\",\"x\",\"y\",\"z\",\"#\",\"$\",\"%\",\"*\",\"+\",\",\",\"-\",\".\",\":\",\";\",\"=\",\"?\",\"@\",\"[\",\"]\",\"^\",\"_\",\"{\",\"|\",\"}\",\"~\"],x=t=>{let e=0;for(let r=0;r{var r=\"\";for(let n=1;n<=e;n++){let l=Math.floor(t)/Math.pow(83,e-n)%83;r+=q[Math.floor(l)]}return r};var f=t=>{let e=t/255;return e<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)},h=t=>{let e=Math.max(0,Math.min(1,t));return e<=.0031308?Math.trunc(e*12.92*255+.5):Math.trunc((1.055*Math.pow(e,.4166666666666667)-.055)*255+.5)},F=t=>t<0?-1:1,M=(t,e)=>F(t)*Math.pow(Math.abs(t),e);var d=class extends Error{constructor(e){super(e),this.name=\"ValidationError\",this.message=e}};var C=t=>{if(!t||t.length<6)throw new d(\"The blurhash string must be at least 6 characters\");let e=x(t[0]),r=Math.floor(e/9)+1,n=e%9+1;if(t.length!==4+2*n*r)throw new d(`blurhash length mismatch: length is ${t.length} but it should be ${4+2*n*r}`)},N=t=>{try{C(t)}catch(e){return{result:!1,errorReason:e.message}}return{result:!0}},z=t=>{let e=t>>16,r=t>>8&255,n=t&255;return[f(e),f(r),f(n)]},L=(t,e)=>{let r=Math.floor(t/361),n=Math.floor(t/19)%19,l=t%19;return[M((r-9)/9,2)*e,M((n-9)/9,2)*e,M((l-9)/9,2)*e]},U=(t,e,r,n)=>{C(t),n=n|1;let l=x(t[0]),m=Math.floor(l/9)+1,b=l%9+1,i=(x(t[1])+1)/166,u=new Array(b*m);for(let o=0;o{let l=0,m=0,b=0,g=e*A;for(let u=0;u{let e=h(t[0]),r=h(t[1]),n=h(t[2]);return(e<<16)+(r<<8)+n},H=(t,e)=>{let r=Math.floor(Math.max(0,Math.min(18,Math.floor(M(t[0]/e,.5)*9+9.5)))),n=Math.floor(Math.max(0,Math.min(18,Math.floor(M(t[1]/e,.5)*9+9.5)))),l=Math.floor(Math.max(0,Math.min(18,Math.floor(M(t[2]/e,.5)*9+9.5))));return r*19*19+n*19+l},O=(t,e,r,n,l)=>{if(n<1||n>9||l<1||l>9)throw new d(\"BlurHash must have between 1 and 9 components\");if(e*r*4!==t.length)throw new d(\"Width and height must match the pixels array\");let m=[];for(let s=0;sa*Math.cos(Math.PI*o*B/e)*Math.cos(Math.PI*s*R/r));m.push(y)}let b=m[0],g=m.slice(1),i=\"\",u=n-1+(l-1)*9;i+=p(u,1);let c;if(g.length>0){let s=Math.max(...g.map(a=>Math.max(...a))),o=Math.floor(Math.max(0,Math.min(82,Math.floor(s*166-.5))));c=(o+1)/166,i+=p(o,1)}else c=1,i+=p(0,1);return i+=p($(b),4),g.forEach(s=>{i+=p(H(s,c),2)}),i},S=O;export{d as ValidationError,j as decode,S as encode,N as isBlurhashValid};\n//# sourceMappingURL=index.js.map","// 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, \".face-list[data-v-33326436]{display:flex;flex-direction:row;height:350px;flex-wrap:wrap;padding:12px}.loader[data-v-33326436]{margin:25% auto}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Faces/FaceMergeForm.vue\"],\"names\":[],\"mappings\":\"AAEA,4BACC,YAAA,CACA,kBAAA,CACA,YAAA,CACA,cAAA,CACA,YAAA,CAGD,yBACC,eAAA\",\"sourcesContent\":[\"$sizes: (\\\"400\\\": (\\\"count\\\": 3, \\\"marginTop\\\": 66, \\\"marginW\\\": 8), \\\"700\\\": (\\\"count\\\": 4, \\\"marginTop\\\": 66, \\\"marginW\\\": 8), \\\"1024\\\": (\\\"count\\\": 5, \\\"marginTop\\\": 66, \\\"marginW\\\": 44), \\\"1280\\\": (\\\"count\\\": 4, \\\"marginTop\\\": 66, \\\"marginW\\\": 44), \\\"1440\\\": (\\\"count\\\": 5, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"1600\\\": (\\\"count\\\": 6, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"2048\\\": (\\\"count\\\": 7, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"2560\\\": (\\\"count\\\": 8, \\\"marginTop\\\": 88, \\\"marginW\\\": 88), \\\"3440\\\": (\\\"count\\\": 9, \\\"marginTop\\\": 88, \\\"marginW\\\": 88), \\\"max\\\": (\\\"count\\\": 10, \\\"marginTop\\\": 88, \\\"marginW\\\": 88));\\n\\n.face-list {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\theight: 350px;\\n\\tflex-wrap: wrap;\\n\\tpadding: 12px;\\n}\\n\\n.loader {\\n\\tmargin: 25% auto;\\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, \".face[data-v-22feae0f]{display:flex;flex-direction:column}.face__empty[data-v-22feae0f]{display:flex;flex-direction:column;align-items:center}.face__empty__button[data-v-22feae0f]{margin-top:32px}.face__header[data-v-22feae0f]{display:flex;min-height:60px;align-items:center;justify-content:space-between;position:-webkit-sticky;position:sticky;z-index:3;background:var(--color-main-background);padding:0 64px}@media only screen and (max-width: 1020px){.face__header[data-v-22feae0f]{padding:0;padding-left:64px}}.face__header__left[data-v-22feae0f]{height:100%;display:flex;align-items:center}.face__header__title[data-v-22feae0f]{margin-left:10px}.face__header__title h2[data-v-22feae0f]{margin-bottom:0}.face__header__loader[data-v-22feae0f]{margin-left:32px}.face__header__actions[data-v-22feae0f]{display:flex;align-items:center}.face__header__actions button[data-v-22feae0f]{margin-left:16px}.face__photos[data-v-22feae0f]{margin-top:16px;height:100%;min-height:0;padding:0 64px}@media only screen and (max-width: 1020px){.face__photos[data-v-22feae0f]{padding:0}}.empty-content-with-illustration[data-v-22feae0f] .empty-content__icon{width:200px;height:200px}.empty-content-with-illustration[data-v-22feae0f] .empty-content__icon svg{width:200px;height:200px}.rename-form[data-v-22feae0f]{display:flex;flex-direction:row;align-items:center;height:70px;padding:16px}.rename-form input[data-v-22feae0f]{width:100%}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/mixins/FaceContent.scss\"],\"names\":[],\"mappings\":\"AAqBA,uBACC,YAAA,CACA,qBAAA,CAEA,8BACC,YAAA,CACA,qBAAA,CACA,kBAAA,CAEA,sCACC,eAAA,CAKF,+BACC,YAAA,CACA,eAAA,CACA,kBAAA,CACA,6BAAA,CACA,uBAAA,CAAA,eAAA,CACA,SAAA,CACA,uCAAA,CACA,cAAA,CAEA,2CAVD,+BAWE,SAAA,CACA,iBAAA,CAAA,CAGD,qCACC,WAAA,CACA,YAAA,CACA,kBAAA,CAGD,sCACC,gBAAA,CACA,yCACC,eAAA,CAIF,uCACC,gBAAA,CAGD,wCACC,YAAA,CACA,kBAAA,CAEA,+CACC,gBAAA,CAKH,+BACC,eAAA,CACA,WAAA,CACA,YAAA,CACA,cAAA,CAEA,2CAND,+BAOE,SAAA,CAAA,CAKH,uEACC,WAAA,CACA,YAAA,CAEA,2EACC,WAAA,CACA,YAAA,CAIF,8BACC,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,WAAA,CACA,YAAA,CAEA,oCACC,UAAA\",\"sourcesContent\":[\"/**\\n * @copyright Copyright (c) 2023 Marcel Klehr \\n *\\n * @author Marcel Klehr \\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 .\\n *\\n */\\n.face {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\n\\t&__empty {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\talign-items: center;\\n\\n\\t\\t&__button {\\n\\t\\t\\tmargin-top: 32px;\\n\\t\\t}\\n\\n\\t}\\n\\n\\t&__header {\\n\\t\\tdisplay: flex;\\n\\t\\tmin-height: 60px;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: space-between;\\n\\t\\tposition: sticky;\\n\\t\\tz-index: 3;\\n\\t\\tbackground: var(--color-main-background);\\n\\t\\tpadding: 0 64px;\\n\\n\\t\\t@media only screen and (max-width: 1020px) {\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\tpadding-left: 64px;\\n\\t\\t}\\n\\n\\t\\t&__left {\\n\\t\\t\\theight: 100%;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t}\\n\\n\\t\\t&__title {\\n\\t\\t\\tmargin-left: 10px;\\n\\t\\t\\th2 {\\n\\t\\t\\t\\tmargin-bottom: 0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&__loader {\\n\\t\\t\\tmargin-left: 32px;\\n\\t\\t}\\n\\n\\t\\t&__actions {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\n\\t\\t\\tbutton {\\n\\t\\t\\t\\tmargin-left: 16px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__photos {\\n\\t\\tmargin-top: 16px;\\n\\t\\theight: 100%;\\n\\t\\tmin-height: 0; // Prevent it from overflowing in a flex context.\\n\\t\\tpadding: 0 64px;\\n\\n\\t\\t@media only screen and (max-width: 1020px) {\\n\\t\\t\\tpadding: 0;\\n\\t\\t}\\n\\t}\\n}\\n\\n.empty-content-with-illustration :deep .empty-content__icon {\\n\\twidth: 200px;\\n\\theight: 200px;\\n\\n\\tsvg {\\n\\t\\twidth: 200px;\\n\\t\\theight: 200px;\\n\\t}\\n}\\n\\n.rename-form {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\talign-items: center;\\n\\theight: 70px;\\n\\tpadding: 16px;\\n\\n\\tinput {\\n\\t\\twidth: 100%;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./AccountSwitch.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./AccountSwitch.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./AccountSwitch.vue?vue&type=template&id=7ce2a630\"\nimport script from \"./AccountSwitch.vue?vue&type=script&lang=js\"\nexport * from \"./AccountSwitch.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon account-switch-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M16 9C22 9 22 13 22 13V15H16V13C16 13 16 11.31 14.85 9.8C14.68 9.57 14.47 9.35 14.25 9.14C14.77 9.06 15.34 9 16 9M2 13C2 13 2 9 8 9S14 13 14 13V15H2V13M9 17V19H15V17L18 20L15 23V21H9V23L6 20L9 17M8 1C6.34 1 5 2.34 5 4S6.34 7 8 7 11 5.66 11 4 9.66 1 8 1M16 1C14.34 1 13 2.34 13 4S14.34 7 16 7 19 5.66 19 4 17.66 1 16 1Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./AlertCircle.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./AlertCircle.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./AlertCircle.vue?vue&type=template&id=2a2453f8\"\nimport script from \"./AlertCircle.vue?vue&type=script&lang=js\"\nexport * from \"./AlertCircle.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon alert-circle-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M13,13H11V7H13M13,17H11V15H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ArrowLeft.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ArrowLeft.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ArrowLeft.vue?vue&type=template&id=187c55d7\"\nimport script from \"./ArrowLeft.vue?vue&type=script&lang=js\"\nexport * from \"./ArrowLeft.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon arrow-left-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M20,11V13H8L13.5,18.5L12.08,19.92L4.16,12L12.08,4.08L13.5,5.5L8,11H20Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Download.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Download.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Download.vue?vue&type=template&id=67aea606\"\nimport script from \"./Download.vue?vue&type=script&lang=js\"\nexport * from \"./Download.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon download-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M5,20H19V18H5M19,9H15V3H9V9H5L12,16L19,9Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./PackageVariant.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./PackageVariant.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./PackageVariant.vue?vue&type=template&id=9a5ab29c\"\nimport script from \"./PackageVariant.vue?vue&type=script&lang=js\"\nexport * from \"./PackageVariant.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon package-variant-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M2,10.96C1.5,10.68 1.35,10.07 1.63,9.59L3.13,7C3.24,6.8 3.41,6.66 3.6,6.58L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.66,6.72 20.82,6.88 20.91,7.08L22.36,9.6C22.64,10.08 22.47,10.69 22,10.96L21,11.54V16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V10.96C2.7,11.13 2.32,11.14 2,10.96M12,4.15V4.15L12,10.85V10.85L17.96,7.5L12,4.15M5,15.91L11,19.29V12.58L5,9.21V15.91M19,15.91V12.69L14,15.59C13.67,15.77 13.3,15.76 13,15.6V19.29L19,15.91M13.85,13.36L20.13,9.73L19.55,8.72L13.27,12.35L13.85,13.36Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./PlayCircle.vue?vue&type=template&id=34d1e782\"\nimport script from \"./PlayCircle.vue?vue&type=script&lang=js\"\nexport * from \"./PlayCircle.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../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\n","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Star.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Star.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Star.vue?vue&type=template&id=22339b94\"\nimport script from \"./Star.vue?vue&type=script&lang=js\"\nexport * from \"./Star.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon star-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./Video.vue?vue&type=template&id=12752490\"\nimport script from \"./Video.vue?vue&type=script&lang=js\"\nexport * from \"./Video.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../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\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"merge-form face-list\"},_vm._l((_vm.filteredFaces),function(face){return _c('FaceCover',{key:face.basename,attrs:{\"base-name\":face.basename,\"small\":\"\"},on:{\"click\":function($event){return _vm.handleSelect(face.basename)}}})}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FaceMergeForm.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!./FaceMergeForm.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/postcss-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FaceMergeForm.vue?vue&type=style&index=0&id=33326436&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FaceMergeForm.vue?vue&type=style&index=0&id=33326436&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FaceMergeForm.vue?vue&type=template&id=33326436&scoped=true\"\nimport script from \"./FaceMergeForm.vue?vue&type=script&lang=js\"\nexport * from \"./FaceMergeForm.vue?vue&type=script&lang=js\"\nimport style0 from \"./FaceMergeForm.vue?vue&type=style&index=0&id=33326436&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"33326436\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.errorFetchingFiles)?_c('NcEmptyContent',{scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('AlertCircle')]},proxy:true}],null,false,794036927)},[_vm._v(\"\\n\\t\"+_vm._s(_vm.t('photos', 'An error occurred'))+\"\\n\")]):_c('div',{staticClass:\"face\"},[_c('div',{staticClass:\"face__header\"},[_c('div',{staticClass:\"face__header__left\"},[_c('NcActions',[_c('NcActionButton',{on:{\"click\":function($event){return _vm.$router.push('/faces/')}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('ArrowLeft')]},proxy:true}])},[_vm._v(_vm._s(_vm.t('photos', 'Back'))+\"\\n\\t\\t\\t\\t\")])],1),_vm._v(\" \"),_c('div',{staticClass:\"face__header__title\"},[_c('h2',{class:{'face-name': true}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Unassigned faces'))+\"\\n\\t\\t\\t\\t\")])]),_vm._v(\" \"),(_vm.loadingCount > 0 || _vm.loadingFaces)?_c('NcLoadingIcon'):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"face__header__actions\"},[_c('NcActions',{attrs:{\"force-menu\":true}},[(_vm.selectedFileIds.length)?[_c('NcActionButton',{attrs:{\"close-after-click\":true,\"aria-label\":_vm.t('photos', 'Download selected files')},on:{\"click\":_vm.downloadSelection}},[_c('Download',{attrs:{\"slot\":\"icon\"},slot:\"icon\"}),_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Download selected photos'))+\"\\n\\t\\t\\t\\t\\t\")],1),_vm._v(\" \"),(_vm.shouldFavoriteSelection)?_c('NcActionButton',{attrs:{\"close-after-click\":true,\"aria-label\":_vm.t('photos', 'Mark selection as favorite')},on:{\"click\":_vm.favoriteSelection}},[_c('Star',{attrs:{\"slot\":\"icon\"},slot:\"icon\"}),_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Favorite'))+\"\\n\\t\\t\\t\\t\\t\")],1):_c('NcActionButton',{attrs:{\"close-after-click\":true,\"aria-label\":_vm.t('photos', 'Remove selection from favorites')},on:{\"click\":_vm.unFavoriteSelection}},[_c('Star',{attrs:{\"slot\":\"icon\"},slot:\"icon\"}),_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Remove from favorites'))+\"\\n\\t\\t\\t\\t\\t\")],1),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"close-after-click\":true},on:{\"click\":function($event){_vm.showMoveModal = true}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('AccountSwitch')]},proxy:true}],null,false,2937983280)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.n('photos', 'Move photo to a different person', 'Move photos to a different person', _vm.selectedFileIds.length))+\"\\n\\t\\t\\t\\t\\t\")])]:_vm._e()],2)],1)]),_vm._v(\" \"),_c('FilesListViewer',{staticClass:\"face__photos\",attrs:{\"container-element\":_vm.appContent,\"file-ids\":_vm.faceFileIds,\"loading\":_vm.loadingFiles || _vm.loadingFaces},scopedSlots:_vm._u([{key:\"default\",fn:function({file, distance}){return _c('File',{attrs:{\"file\":_vm.files[file.id],\"allow-selection\":true,\"selected\":_vm.selection[file.id] === true,\"distance\":distance},on:{\"click\":_vm.openViewer,\"select-toggled\":_vm.onFileSelectToggle}})}}])}),_vm._v(\" \"),(_vm.showMoveModal)?_c('NcDialog',{attrs:{\"name\":_vm.t('photos', 'Move to different person'),\"close-on-click-outside\":\"\",\"size\":\"normal\"},on:{\"closing\":function($event){_vm.showMoveModal = false}}},[_c('FaceMergeForm',{attrs:{\"first-face\":'-1'},on:{\"select\":function($event){return _vm.handleMove($event, _vm.selectedFileIds)}}})],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnassignedFaces.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!./UnassignedFaces.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/postcss-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnassignedFaces.vue?vue&type=style&index=0&id=22feae0f&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnassignedFaces.vue?vue&type=style&index=0&id=22feae0f&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UnassignedFaces.vue?vue&type=template&id=22feae0f&scoped=true\"\nimport script from \"./UnassignedFaces.vue?vue&type=script&lang=js\"\nexport * from \"./UnassignedFaces.vue?vue&type=script&lang=js\"\nimport style0 from \"./UnassignedFaces.vue?vue&type=style&index=0&id=22feae0f&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"22feae0f\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./PlayCircle.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./PlayCircle.vue?vue&type=script&lang=js\"","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Video.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Video.vue?vue&type=script&lang=js\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon play-circle-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M10,16.5V7.5L16,12M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon video-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M17,10.5V7A1,1 0 0,0 16,6H4A1,1 0 0,0 3,7V17A1,1 0 0,0 4,18H16A1,1 0 0,0 17,17V13.5L21,17.5V6.5L17,10.5Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }"],"names":["name","mixins","AbortControllerMixin","data","errorFetchingFiles","loadingFiles","doneFetchingFiles","fetchSemaphore","SemaphoreWithPriority","fetchedFileIds","watch","this","resetFetchFilesState","methods","async","options","arguments","length","undefined","blacklist","force","fetchSemaphoreSymbol","acquire","numberOfImagesPerBatch","fetchedFiles","firstResult","nbResults","mimesType","allMimes","onThisDay","onlyFavorites","orMime","reduce","str","mime","concat","eqFavorites","Array","fill","map","_","years","start","moment","Date","now","startOf","subtract","end","endOf","add","format","join","sourceFolders","store","folder","joinPaths","davRootPath","Object","assign","method","headers","props","deep","details","client","genFileInfo","getPhotos","signal","abortController","fileIds","file","fileid","filter","fileId","includes","toString","push","$store","dispatch","logger","error","_error$response","response","status","sources","source","_error$response2","_error$response2$data","match","davGetClient","createDirectory","code","release","q","x","t","e","r","n","indexOf","f","Math","pow","h","max","min","trunc","M","F","abs","d","Error","constructor","super","message","C","floor","z","L","l","j","m","b","i","u","o","a","substring","c","s","Uint8ClampedArray","y","B","R","w","P","G","cos","PI","T","V","I","E","___CSS_LOADER_EXPORT___","module","id","emits","title","type","String","fillColor","default","size","Number","_vm","_c","_self","_b","staticClass","attrs","on","$event","$emit","$attrs","_v","_s","_e","components","FaceCover","FaceCoverMixin","FetchFacesMixin","firstFace","required","loading","computed","mapGetters","filteredFaces","values","faces","face","basename","sort","nbItems","facesFiles","handleSelect","faceName","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_l","key","Star","Download","AlertCircle","ArrowLeft","FaceMergeForm","FilesListViewer","File","NcLoadingIcon","NcEmptyContent","NcActions","NcActionButton","NcDialog","AccountSwitch","directives","focus","el","Vue","FetchFilesMixin","FilesSelectionMixin","showMoveModal","loadingCount","appContent","document","getElementById","faceFileIds","unassignedFiles","shouldFavoriteSelection","selectedFileIds","some","state","files","favorite","mounted","fetchUnassignedFaces","mapActions","openViewer","OCA","Viewer","open","path","filename","split","slice","list","sectionHeader","loadMore","canLoop","moveFilesToFace","oldFace","fileIdsToMove","toggleFavoriteForFiles","favoriteState","downloadFiles","scopedSlots","_u","fn","proxy","$router","class","loadingFaces","downloadSelection","slot","favoriteSelection","unFavoriteSelection","_ref","distance","selection","onFileSelectToggle","handleMove","render","staticRenderFns"],"sourceRoot":""} \ No newline at end of file diff --git a/js/photos-node_modules_vue-material-design-icons_ArrowLeft_vue-src_views_Timeline_vue.js b/js/photos-node_modules_vue-material-design-icons_ArrowLeft_vue-src_views_Timeline_vue.js index dea06c9dd..618f57f28 100644 --- a/js/photos-node_modules_vue-material-design-icons_ArrowLeft_vue-src_views_Timeline_vue.js +++ b/js/photos-node_modules_vue-material-design-icons_ArrowLeft_vue-src_views_Timeline_vue.js @@ -1,3 +1,3 @@ /*! For license information please see photos-node_modules_vue-material-design-icons_ArrowLeft_vue-src_views_Timeline_vue.js.LICENSE.txt */ -"use strict";(self.webpackChunkphotos=self.webpackChunkphotos||[]).push([["node_modules_vue-material-design-icons_ArrowLeft_vue-src_views_Timeline_vue"],{49568:(t,e,n)=>{n.d(e,{Z:()=>s});var i=n(20629),o=n(69363),l=n(87076);const s={name:"FetchCollectionsMixin",data:()=>({errorFetchingCollections:null,loadingCollections:!1}),mixins:[o.Z],methods:{...(0,i.nv)(["addCollections"]),async fetchCollections(t,e,n){if(this.loadingCollections)return[];try{this.loadingCollections=!0,this.errorFetchingCollections=null;const i=await(0,l.XK)(t,{signal:this.abortController.signal},e,n);return this.addCollections({collections:i}),i}catch(t){var i;404===(null===(i=t.response)||void 0===i?void 0:i.status)?this.errorFetchingCollections=404:this.errorFetchingCollections=t}finally{this.loadingCollections=!1}return[]}}}},66951:(t,e,n)=>{n.d(e,{Z:()=>A});var i=n(5656),o=n(65358),l=n(59537),s=n(45086),a=n(77958),r=n(3301),c=n(81067),d=n(2161),u=n(80351),m=n.n(u),p=n(30319);var h=n(32114);const A={name:"FetchFilesMixin",mixins:[n(69363).Z],data:()=>({errorFetchingFiles:null,loadingFiles:!1,doneFetchingFiles:!1,fetchSemaphore:new h.Z(1),fetchedFileIds:[]}),watch:{"$route.path"(){this.resetFetchFilesState()}},methods:{async fetchFiles(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(this.doneFetchingFiles&&!n||this.loadingFiles)return[];const u=await this.fetchSemaphore.acquire();try{this.errorFetchingFiles=null,this.loadingFiles=!0;const n=200,i=await async function(){var t;let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e={firstResult:0,nbResults:200,mimesType:r.Oj,onThisDay:!1,onlyFavorites:!1,...e};const n="/files/".concat((0,a.ts)().uid),i=e.mimesType.reduce(((t,e)=>"".concat(t,"\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t").concat(e,"\n\t\t\n\t")),""),o=e.onlyFavorites?"\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t1\n\t\t\t":"",l=e.onThisDay?"".concat(Array(20).fill(1).map(((t,e)=>{const n=m()(Date.now()).startOf("day").subtract(3,"d").subtract(e+1,"y"),i=m()(Date.now()).endOf("day").add(3,"d").subtract(e+1,"y");return"\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t".concat(n.format(m().defaultFormatUtc),"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t").concat(i.format(m().defaultFormatUtc),"\n\t\t\t\t\n\t\t\t")})).join("\n"),""):"";return e=Object.assign({method:"SEARCH",headers:{"content-Type":"text/xml"},data:'\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t'.concat(d.N,"\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t").concat(n,"/").concat(null!==(t=p.Z.state.userConfig.photosSourceFolder)&&void 0!==t?t:"/Photos","\n\t\t\t\t\t\t\tinfinity\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t").concat(i,"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t").concat(o,"\n\t\t\t\t\t\t\t").concat(l,"\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\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\t\n\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\t\n\t\t\t\t\t\t").concat(e.nbResults,"\n\t\t\t\t\t\t").concat(e.firstResult,"\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t"),deep:!0,details:!0},e),(await c.ZP.getDirectoryContents("",e)).data.map((t=>(0,s.AX)(t)))}({firstResult:this.fetchedFileIds.length,nbResults:n,...t,signal:this.abortController.signal});i.length!==n&&(this.doneFetchingFiles=!0);const o=i.map((t=>t.fileid)).filter((t=>!this.fetchedFileIds.includes(t.toString())));return this.fetchedFileIds.push(...o.map((t=>t.toString())).filter((t=>!e.includes(t)))),this.$store.dispatch("appendFiles",i),l.Z.debug("[FetchFilesMixin] Fetched ".concat(o.length," new files: "),o),o}catch(t){var h;if(404===(null===(h=t.response)||void 0===h?void 0:h.status)){var A;this.errorFetchingFiles=404;const t=(0,o.RQ)(i._o,null!==(A=p.Z.state.userConfig.photosSourceFolder)&&void 0!==A?A:"/Photos")+"/";l.Z.debug("Photo source does not exist, creating it.");try{await(0,i.rp)().createDirectory(t)}catch(t){l.Z.error("Fail to create source directory",{error:t})}}else{if("ERR_CANCELED"===t.code)return[];this.errorFetchingFiles=t}l.Z.error("Error fetching files",{error:t}),console.error(t)}finally{this.loadingFiles=!1,this.fetchSemaphore.release(u)}return[]},resetFetchFilesState(){this.doneFetchingFiles=!1,this.errorFetchingFiles=null,this.loadingFiles=!1,this.fetchedFileIds=[]}}}},28391:(t,e,n)=>{n.d(e,{Z:()=>i});const i={name:"FilesByMonthMixin",computed:{fileIdsByMonth(){const t={};for(const n of this.fetchedFileIds){const i=this.files[n];var e;if(i)t[i.month]=null!==(e=t[i.month])&&void 0!==e?e:[],t[i.month].push(i.fileid)}return Object.keys(t).forEach((e=>t[e].sort(this.sortFilesByTimestamp))),t},monthsList(){return Object.keys(this.fileIdsByMonth).sort(((t,e)=>t>e?-1:1))}},methods:{sortFilesByTimestamp(t,e){return this.files[t].timestamp>this.files[e].timestamp?-1:1}}}},67148:(t,e,n)=>{n.d(e,{Z:()=>a});var i=n(87537),o=n.n(i),l=n(23645),s=n.n(l)()(o());s.push([t.id,".album-picker[data-v-20d6fa8c]{padding:32px;padding-top:16px}.album-picker h2[data-v-20d6fa8c]{display:flex;align-items:center;height:60px}.album-picker h2 .loading-icon[data-v-20d6fa8c]{margin-left:32px}.album-picker .albums-container[data-v-20d6fa8c]{min-height:150px;max-height:350px;overflow-x:scroll;padding:2px}.album-picker .albums-container .album[data-v-20d6fa8c] .list-item{padding:8px 16px;box-sizing:border-box}.album-picker .albums-container .album[data-v-20d6fa8c]:not(:last-child){margin-bottom:16px}.album-picker .albums-container .album__image[data-v-20d6fa8c]{width:40px;height:40px;object-fit:none;border-radius:var(--border-radius)}.album-picker .albums-container .album__image--placeholder[data-v-20d6fa8c]{background:var(--color-primary-element-light)}.album-picker .albums-container .album__image--placeholder[data-v-20d6fa8c] .material-design-icon{width:100%;height:100%}.album-picker .albums-container .album__image--placeholder[data-v-20d6fa8c] .material-design-icon .material-design-icon__svg{fill:var(--color-primary-element)}.album-picker .new-album-button[data-v-20d6fa8c]{margin-top:32px}","",{version:3,sources:["webpack://./src/components/Albums/AlbumPicker.vue"],names:[],mappings:"AAEA,+BACC,YAAA,CACA,gBAAA,CAEA,kCACC,YAAA,CACA,kBAAA,CACA,WAAA,CAEA,gDACC,gBAAA,CAIF,iDACC,gBAAA,CACA,gBAAA,CACA,iBAAA,CACA,WAAA,CAIC,mEACC,gBAAA,CACA,qBAAA,CAGD,yEACC,kBAAA,CAGD,+DACC,UAAA,CACA,WAAA,CACA,eAAA,CACA,kCAAA,CAEA,4EACC,6CAAA,CAEA,kGACC,UAAA,CACA,WAAA,CAEA,6HACC,iCAAA,CAQN,iDACC,eAAA",sourcesContent:['$sizes: ("400": ("count": 3, "marginTop": 66, "marginW": 8), "700": ("count": 4, "marginTop": 66, "marginW": 8), "1024": ("count": 5, "marginTop": 66, "marginW": 44), "1280": ("count": 4, "marginTop": 66, "marginW": 44), "1440": ("count": 5, "marginTop": 88, "marginW": 66), "1600": ("count": 6, "marginTop": 88, "marginW": 66), "2048": ("count": 7, "marginTop": 88, "marginW": 66), "2560": ("count": 8, "marginTop": 88, "marginW": 88), "3440": ("count": 9, "marginTop": 88, "marginW": 88), "max": ("count": 10, "marginTop": 88, "marginW": 88));\n\n.album-picker {\n\tpadding: 32px;\n\tpadding-top: 16px;\n\n\th2 {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\theight: 60px;\n\n\t\t.loading-icon {\n\t\t\tmargin-left: 32px;\n\t\t}\n\t}\n\n\t.albums-container {\n\t\tmin-height: 150px;\n\t\tmax-height: 350px;\n\t\toverflow-x: scroll;\n\t\tpadding: 2px;\n\n\t\t.album {\n\n\t\t\t:deep .list-item {\n\t\t\t\tpadding: 8px 16px;\n\t\t\t\tbox-sizing: border-box;\n\t\t\t}\n\n\t\t\t&:not(:last-child) {\n\t\t\t\tmargin-bottom: 16px;\n\t\t\t}\n\n\t\t\t&__image {\n\t\t\t\twidth: 40px;\n\t\t\t\theight: 40px;\n\t\t\t\tobject-fit: none;\n\t\t\t\tborder-radius: var(--border-radius);\n\n\t\t\t\t&--placeholder {\n\t\t\t\t\tbackground: var(--color-primary-element-light);\n\n\t\t\t\t\t:deep .material-design-icon {\n\t\t\t\t\t\twidth: 100%;\n\t\t\t\t\t\theight: 100%;\n\n\t\t\t\t\t\t.material-design-icon__svg {\n\t\t\t\t\t\t\tfill: var(--color-primary-element);\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\t.new-album-button {\n\t\tmargin-top: 32px;\n\t}\n}\n'],sourceRoot:""}]);const a=s},77551:(t,e,n)=>{n.d(e,{Z:()=>a});var i=n(87537),o=n.n(i),l=n(23645),s=n.n(l)()(o());s.push([t.id,".folder[data-v-a871c74a]{display:flex;gap:16px;min-width:300px}.folder__info[data-v-a871c74a]{display:flex;flex-direction:column;flex-grow:1;justify-content:center}.folder__path[data-v-a871c74a]{font-weight:bold}","",{version:3,sources:["webpack://./src/components/Settings/PhotosFolder.vue"],names:[],mappings:"AAEA,yBACC,YAAA,CACA,QAAA,CACA,eAAA,CAEA,+BACC,YAAA,CACA,qBAAA,CACA,WAAA,CACA,sBAAA,CAGD,+BACC,gBAAA",sourcesContent:['$sizes: ("400": ("count": 3, "marginTop": 66, "marginW": 8), "700": ("count": 4, "marginTop": 66, "marginW": 8), "1024": ("count": 5, "marginTop": 66, "marginW": 44), "1280": ("count": 4, "marginTop": 66, "marginW": 44), "1440": ("count": 5, "marginTop": 88, "marginW": 66), "1600": ("count": 6, "marginTop": 88, "marginW": 66), "2048": ("count": 7, "marginTop": 88, "marginW": 66), "2560": ("count": 8, "marginTop": 88, "marginW": 88), "3440": ("count": 9, "marginTop": 88, "marginW": 88), "max": ("count": 10, "marginTop": 88, "marginW": 88));\n\n.folder {\n\tdisplay: flex;\n\tgap: 16px;\n\tmin-width: 300px;\n\n\t&__info {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tflex-grow: 1;\n\t\tjustify-content: center;\n\t}\n\n\t&__path {\n\t\tfont-weight: bold;\n\t}\n}\n'],sourceRoot:""}]);const a=s},74068:(t,e,n)=>{n.d(e,{Z:()=>a});var i=n(87537),o=n.n(i),l=n(23645),s=n.n(l)()(o());s.push([t.id,".photos-locations-container[data-v-1b7c4cde]{display:flex;flex-direction:column;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.photos-locations-container .photos-locations[data-v-1b7c4cde]{margin-bottom:16px}","",{version:3,sources:["webpack://./src/components/Settings/PhotosSourceLocationsSettings.vue"],names:[],mappings:"AAEA,6CACC,YAAA,CACA,qBAAA,CACA,yBAAA,CAAA,sBAAA,CAAA,iBAAA,CAEA,+DACC,kBAAA",sourcesContent:['$sizes: ("400": ("count": 3, "marginTop": 66, "marginW": 8), "700": ("count": 4, "marginTop": 66, "marginW": 8), "1024": ("count": 5, "marginTop": 66, "marginW": 44), "1280": ("count": 4, "marginTop": 66, "marginW": 44), "1440": ("count": 5, "marginTop": 88, "marginW": 66), "1600": ("count": 6, "marginTop": 88, "marginW": 66), "2048": ("count": 7, "marginTop": 88, "marginW": 66), "2560": ("count": 8, "marginTop": 88, "marginW": 88), "3440": ("count": 9, "marginTop": 88, "marginW": 88), "max": ("count": 10, "marginTop": 88, "marginW": 88));\n\n.photos-locations-container {\n\tdisplay: flex;\n\tflex-direction: column;\n\twidth: fit-content;\n\n\t.photos-locations {\n\t\tmargin-bottom: 16px;\n\t}\n}\n'],sourceRoot:""}]);const a=s},78185:(t,e,n)=>{n.d(e,{Z:()=>a});var i=n(87537),o=n.n(i),l=n(23645),s=n.n(l)()(o());s.push([t.id,".timeline[data-v-86bd25c4]{display:flex;flex-direction:column}.timeline__empty-content[data-v-86bd25c4]{height:100%}.timeline__empty-content .empty-content[data-v-86bd25c4]{height:100%}.timeline__empty-content .timeline__update_source_directory[data-v-86bd25c4]{align-items:center}.timeline__empty-content .timeline__update_source_directory[data-v-86bd25c4] .folder{min-width:unset}.timeline__header__left[data-v-86bd25c4]{display:flex;gap:4px}.timeline__heading[data-v-86bd25c4]{padding:calc(var(--default-grid-baseline)*4);margin-bottom:0px;padding-bottom:0px}.timeline__file-list[data-v-86bd25c4]{padding:0 64px}@media only screen and (max-width: 1200px){.timeline__file-list[data-v-86bd25c4]{padding:0 4px}}.timeline__file-list[data-v-86bd25c4] .files-list-viewer__section-header{top:var(--photos-navigation-height)}","",{version:3,sources:["webpack://./src/views/Timeline.vue"],names:[],mappings:"AAEA,2BACC,YAAA,CACA,qBAAA,CAEA,0CACC,WAAA,CAEA,yDACC,WAAA,CAGD,6EACC,kBAAA,CAEA,qFACC,eAAA,CAMF,yCACC,YAAA,CACA,OAAA,CAIF,oCACC,4CAAA,CACA,iBAAA,CACA,kBAAA,CAGD,sCACC,cAAA,CAEA,2CAHD,sCAIE,aAAA,CAAA,CAGD,yEACC,mCAAA",sourcesContent:['$sizes: ("400": ("count": 3, "marginTop": 66, "marginW": 8), "700": ("count": 4, "marginTop": 66, "marginW": 8), "1024": ("count": 5, "marginTop": 66, "marginW": 44), "1280": ("count": 4, "marginTop": 66, "marginW": 44), "1440": ("count": 5, "marginTop": 88, "marginW": 66), "1600": ("count": 6, "marginTop": 88, "marginW": 66), "2048": ("count": 7, "marginTop": 88, "marginW": 66), "2560": ("count": 8, "marginTop": 88, "marginW": 88), "3440": ("count": 9, "marginTop": 88, "marginW": 88), "max": ("count": 10, "marginTop": 88, "marginW": 88));\n\n.timeline {\n\tdisplay: flex;\n\tflex-direction: column;\n\n\t&__empty-content {\n\t\theight: 100%;\n\n\t\t.empty-content {\n\t\t\theight: 100%;\n\t\t}\n\n\t\t.timeline__update_source_directory {\n\t\t\talign-items: center;\n\n\t\t\t:deep(.folder) {\n\t\t\t\tmin-width: unset;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__header {\n\t\t&__left {\n\t\t\tdisplay: flex;\n\t\t\tgap: 4px;\n\t\t}\n\t}\n\n\t&__heading {\n\t\tpadding: calc(var(--default-grid-baseline) * 4);\n\t\tmargin-bottom: 0px;\n\t\tpadding-bottom: 0px;\n\t}\n\n\t&__file-list {\n\t\tpadding: 0 64px;\n\n\t\t@media only screen and (max-width: 1200px) {\n\t\t\tpadding: 0 4px;\n\t\t}\n\n\t\t:deep .files-list-viewer__section-header {\n\t\t\ttop: var(--photos-navigation-height);\n\t\t}\n\t}\n}\n'],sourceRoot:""}]);const a=s},69254:(t,e,n)=>{n.d(e,{Z:()=>o});const i={name:"ArrowLeftIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};const o=(0,n(51900).Z)(i,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon arrow-left-icon",attrs:{"aria-hidden":!t.title,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M20,11V13H8L13.5,18.5L12.08,19.92L4.16,12L12.08,4.08L13.5,5.5L8,11H20Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports},34020:(t,e,n)=>{n.d(e,{Z:()=>o});const i={name:"DownloadIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};const o=(0,n(51900).Z)(i,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon download-icon",attrs:{"aria-hidden":!t.title,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M5,20H19V18H5M19,9H15V3H9V9H5L12,16L19,9Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports},81170:(t,e,n)=>{n.d(e,{Z:()=>o});const i={name:"FolderIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};const o=(0,n(51900).Z)(i,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon folder-icon",attrs:{"aria-hidden":!t.title,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports},40270:(t,e,n)=>{n.d(e,{Z:()=>o});const i={name:"ImageMultipleIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};const o=(0,n(51900).Z)(i,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon image-multiple-icon",attrs:{"aria-hidden":!t.title,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M22,16V4A2,2 0 0,0 20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16M11,12L13.03,14.71L16,11L20,16H8M2,6V20A2,2 0 0,0 4,22H18V20H4V6"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports},41809:(t,e,n)=>{n.d(e,{Z:()=>a});var i=n(20629),o=n(58613),l=n(64882);const s={name:"ActionFavorite",components:{Star:o.Z,NcActionButton:l.Js},props:{selectedFileIds:{type:Array,required:!0}},computed:{...(0,i.Se)(["files"]),shouldFavoriteSelection(){return this.selectedFileIds.some((t=>0===this.files[t].favorite))}},methods:{...(0,i.nv)(["toggleFavoriteForFiles"]),async favoriteSelection(){await this.toggleFavoriteForFiles({fileIds:this.selectedFileIds,favoriteState:1})},async unFavoriteSelection(){await this.toggleFavoriteForFiles({fileIds:this.selectedFileIds,favoriteState:0})}}};const a=(0,n(51900).Z)(s,(function(){var t=this,e=t._self._c;return t.shouldFavoriteSelection?e("NcActionButton",{attrs:{"close-after-click":!0,"aria-label":t.t("photos","Mark selection as favorite")},on:{click:t.favoriteSelection}},[t._v("\n\t"+t._s(t.t("photos","Add selection to favorites"))+"\n\t"),e("Star",{attrs:{slot:"icon"},slot:"icon"})],1):e("NcActionButton",{attrs:{"close-after-click":!0,"aria-label":t.t("photos","Remove selection from favorites")},on:{click:t.unFavoriteSelection}},[t._v("\n\t"+t._s(t.t("photos","Remove selection from favorites"))+"\n\t"),e("Star",{attrs:{slot:"icon"},slot:"icon"})],1)}),[],!1,null,null,null).exports},89366:(t,e,n)=>{n.d(e,{Z:()=>F});var i=n(20144),o=n(81170),l=n(44893),s=n(64882),a=n(31352);const r=(0,i.aZ)({name:"PhotosFolder",components:{NcButton:s.P2,Folder:o.Z,Close:l.Z},props:{path:{type:String,required:!0},canDelete:{type:Boolean,default:!1},rootFolderLabel:{type:String,required:!0},rootFolderIcon:{type:Object,required:!0}},emits:["remove-folder"],computed:{folderName(){return"/"===this.path?this.rootFolderLabel:this.path.split("/").pop()},subname(){var t;switch((null!==(t=this.path.match(/\//g))&&void 0!==t?t:[]).length){case 1:return"";case 2:return this.path.split("/").splice(0,2).join("/");default:return this.path.split("/").splice(0,3).join("/")}}},methods:{emitRemoveSourceFolder(){this.$emit("remove-folder")},t:a.Iu}});var c=n(93379),d=n.n(c),u=n(7795),m=n.n(u),p=n(90569),h=n.n(p),A=n(3565),g=n.n(A),f=n(19216),C=n.n(f),b=n(44589),_=n.n(b),v=n(77551),y={};y.styleTagTransform=_(),y.setAttributes=g(),y.insert=h().bind(null,"head"),y.domAPI=m(),y.insertStyleElement=C();d()(v.Z,y);v.Z&&v.Z.locals&&v.Z.locals;const F=(0,n(51900).Z)(r,(function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"folder"},["/"===t.path?e(t.rootFolderIcon,{tag:"component"}):e("Folder"),t._v(" "),e("span",{staticClass:"folder__info"},[e("div",{staticClass:"folder__path"},[t._v(t._s(t.folderName))]),t._v(" "),""!==t.subname?e("div",[t._v("\n\t\t\t"+t._s(t.subname)+"\n\t\t")]):t._e()]),t._v(" "),t.canDelete?e("NcButton",{attrs:{type:"tertiary","aria-label":t.t("photos","Delete source directory")},on:{click:t.emitRemoveSourceFolder},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Close",{attrs:{size:20}})]},proxy:!0}],null,!1,2121748766)}):t._e()],1)}),[],!1,null,"a871c74a",null).exports},24735:(t,e,n)=>{n.d(e,{Z:()=>Z});var i=n(20296),o=n.n(i),l=n(20144);const s={name:"FolderMultipleIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var a=n(51900);const r=(0,a.Z)(s,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon folder-multiple-icon",attrs:{"aria-hidden":!t.title,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M22,4H14L12,2H6A2,2 0 0,0 4,4V16A2,2 0 0,0 6,18H22A2,2 0 0,0 24,16V6A2,2 0 0,0 22,4M2,6H0V11H0V20A2,2 0 0,0 2,22H20V20H2V6Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports;var c=n(64882),d=n(64024),u=n(31352),m=n(89366);const p=(0,l.aZ)({name:"PhotosSourceLocationsSettings",components:{NcButton:c.P2,PhotosFolder:m.Z},data:()=>({FolderMultiple:r}),computed:{photosSourceFolder(){return this.$store.state.userConfig.photosSourceFolder}},methods:{debounceAddSourceFolder:o()((function(){this.addSourceFolder(...arguments)}),200,!1),openFilePicker:async t=>(0,d.fn)(t).setMultiSelect(!1).setModal(!0).setType(1).addMimeTypeFilter("httpd/unix-directory").allowDirectories().build().pick(),async addSourceFolder(){const t=await this.openFilePicker((0,u.Iu)("photos","Select a source folder for your media"));this.$store.dispatch("updateUserConfig",{key:"photosSourceFolder",value:t})},removeSourceFolder(t){const e=[...this.photosSourceFolder];e.splice(t,1),this.$store.dispatch("updateUserConfig",{key:"photosSourceFolder",value:e})},t:u.Iu}});var h=n(93379),A=n.n(h),g=n(7795),f=n.n(g),C=n(90569),b=n.n(C),_=n(3565),v=n.n(_),y=n(19216),F=n.n(y),x=n(44589),w=n.n(x),k=n(74068),S={};S.styleTagTransform=w(),S.setAttributes=v(),S.insert=b().bind(null,"head"),S.domAPI=f(),S.insertStyleElement=F();A()(k.Z,S);k.Z&&k.Z.locals&&k.Z.locals;const Z=(0,a.Z)(p,(function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"photos-locations-container"},[e("div",{staticClass:"photos-locations"},[e("PhotosFolder",{attrs:{path:t.photosSourceFolder,"root-folder-label":t.t("photos","All folders"),"root-folder-icon":t.FolderMultiple}})],1),t._v(" "),e("NcButton",{attrs:{"aria-label":t.t("photos","Choose a Photos source for the timelines")},on:{click:t.debounceAddSourceFolder}},[t._v("\n\t\t"+t._s(t.t("photos","Choose a different folder"))+"\n\t")])],1)}),[],!1,null,"1b7c4cde",null).exports},85479:(t,e,n)=>{n.r(e),n.d(e,{default:()=>et});var i=n(20629);const o={name:"FolderAlertOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var l=n(51900);const s=(0,l.Z)(o,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon folder-alert-outline-icon",attrs:{"aria-hidden":!t.title,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M15,12H17V17H15V12M15,18H17V20H15V18M16,9C17.07,9 18.09,9.24 19,9.67V8H3V18H9.29C9.1,17.36 9,16.69 9,16A7,7 0 0,1 16,9M23,16A7,7 0 0,1 16,23C13.62,23 11.5,21.81 10.25,20H3C1.89,20 1,19.1 1,18V6C1,4.89 1.89,4 3,4H9L11,6H19A2,2 0 0,1 21,8V11.1C22.24,12.36 23,14.09 23,16M16,11A5,5 0 0,0 11,16A5,5 0 0,0 16,21A5,5 0 0,0 21,16A5,5 0 0,0 16,11Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports;var a=n(5352),r=n(42588);const c={name:"PlusBoxMultipleIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};const d=(0,l.Z)(c,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon plus-box-multiple-icon",attrs:{"aria-hidden":!t.title,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M19,11H15V15H13V11H9V9H13V5H15V9H19M20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M4,6H2V20A2,2 0 0,0 4,22H18V20H4V6Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports;var u=n(34020),m=n(44893),p=n(84320),h=n(64882),A=n(80351),g=n.n(A),f=n(31352),C=n(69183),b=n(3301),_=n(66951),v=n(28391),y=n(98171),F=n(97519),x=n(64811),w=n(7976),k=n(40270),S=n(79753),Z=n(77958),T=n(49568);const B={name:"AlbumPicker",components:{Plus:a.Z,ImageMultiple:k.Z,NcButton:h.P2,NcListItem:h.hx,NcLoadingIcon:h.lb,NcUserBubble:h.uq,AlbumForm:w.Z},filters:{toCoverUrl:t=>(0,S.nu)("/apps/photos/api/v1/preview/".concat(t,"?x=",64,"&y=",64))},mixins:[T.Z],data:()=>({showAlbumCreationForm:!1}),computed:{...(0,i.Se)(["albums","sharedAlbums"]),allAlbums(){return[...Object.values(this.albums),...Object.values(this.sharedAlbums)]}},mounted(){this.fetchAlbumList()},methods:{async fetchAlbumList(){var t,e;await this.fetchCollections("/photos/".concat(null===(t=(0,Z.ts)())||void 0===t?void 0:t.uid,"/albums"),["","",""]),await this.fetchCollections("/photos/".concat(null===(e=(0,Z.ts)())||void 0===e?void 0:e.uid,"/sharedalbums"),["","",""])},albumCreatedHandler(){this.showAlbumCreationForm=!1,this.fetchAlbumList()},pickAlbum(t){this.$emit("album-picked",t)},isSharedAlbum:t=>null!==t.filename.match(/^\/photos\/.+\/sharedalbums\//),originalName(t){return this.isSharedAlbum(t)?t.basename.replace(new RegExp("\\(".concat(t.collaborators[0].id,"\\)$")),""):t.basename},t:f.Iu,n:f.uN}};var I=n(93379),M=n.n(I),N=n(7795),H=n.n(N),W=n(90569),P=n.n(W),L=n(3565),V=n.n(L),D=n(19216),E=n.n(D),z=n(44589),$=n.n(z),R=n(67148),U={};U.styleTagTransform=$(),U.setAttributes=V(),U.insert=P().bind(null,"head"),U.domAPI=H(),U.insertStyleElement=E();M()(R.Z,U);R.Z&&R.Z.locals&&R.Z.locals;const q=(0,l.Z)(B,(function(){var t=this,e=t._self._c;return t.showAlbumCreationForm?e("AlbumForm",{attrs:{"display-back-button":!0,title:t.t("photos","New album")},on:{back:function(e){t.showAlbumCreationForm=!1},done:t.albumCreatedHandler}}):e("div",{staticClass:"album-picker"},[e("h2",[t._v("\n\t\t"+t._s(t.t("photos","Add to Album"))+"\n\t\t"),t.loadingCollections?e("NcLoadingIcon",{staticClass:"loading-icon"}):t._e()],1),t._v(" "),e("ul",{staticClass:"albums-container"},t._l(t.allAlbums,(function(n){return e("NcListItem",{key:n.filename,staticClass:"album",attrs:{name:t.originalName(n),"aria-label":t.t("photos","Add selection to album {albumName}",{albumName:n.basename})},on:{click:function(e){return t.pickAlbum(n)}},scopedSlots:t._u([{key:"subname",fn:function(){return[t._v("\n\t\t\t\t"+t._s(t.n("photos","%n item","%n photos and videos",n.nbItems))+"\n\t\t\t\t"),t.isSharedAlbum(n)?[t._v("\n\t\t\t\t\t⸱ "+t._s(t.t("photos","Shared by"))+" "),e("NcUserBubble",{attrs:{"display-name":n.collaborators[0].label,user:n.collaborators[0].id}})]:t._e()]},proxy:!0}],null,!0)},[e("template",{slot:"icon"},[-1!==n.lastPhoto?e("img",{staticClass:"album__image",attrs:{src:t._f("toCoverUrl")(n.lastPhoto)}}):e("div",{staticClass:"album__image album__image--placeholder"},[e("ImageMultiple",{attrs:{size:32}})],1)])],2)})),1),t._v(" "),e("NcButton",{staticClass:"new-album-button",attrs:{"aria-label":t.t("photos","Create a new album."),type:"tertiary"},on:{click:function(e){t.showAlbumCreationForm=!0}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Plus")]},proxy:!0}],null,!1,1489515321)},[t._v("\n\t\t"+t._s(t.t("photos","Create new album"))+"\n\t")])],1)}),[],!1,null,"20d6fa8c",null).exports;var Y=n(41809);const O={name:"ActionDownload",components:{NcActionLink:h.ih},props:{title:{type:String,required:!0},selectedFileIds:{type:Array,required:!0}},computed:{...(0,i.Se)(["files"]),downloadUrl(){const t=new URLSearchParams,e=this.fileNames.map((t=>"/"+t.split("/").splice(3).join("/")));return t.append("files",JSON.stringify(e)),(0,S.nu)("/apps/files/ajax/download.php?".concat(t))},fileNames(){return this.selectedFileIds.map((t=>this.files[t].filename))}}};const j=(0,l.Z)(O,(function(){var t=this;return(0,t._self._c)("NcActionLink",{attrs:{"close-after-click":!0,href:t.downloadUrl,download:t.downloadUrl,"aria-label":t.title}},[t._v("\n\t"+t._s(t.title)+"\n\t"),t._t("icon",null,{slot:"icon"})],2)}),[],!1,null,null,null).exports;var G=n(41197),J=n(24735),Q=n(94004);const X={name:"Timeline",components:{Delete:r.Z,PlusBoxMultiple:d,Download:u.Z,Close:m.Z,Plus:a.Z,FolderAlertOutline:s,NcEmptyContent:h.SL,NcModal:h.Jc,NcActions:h.O3,NcActionButton:h.Js,NcButton:h.P2,AlbumForm:w.Z,AlbumPicker:q,FilesListViewer:F.Z,File:x.Z,ActionFavorite:Y.Z,ActionDownload:j,HeaderNavigation:G.Z,PhotosSourceLocationsSettings:J.Z,AlertCircle:p.Z},filters:{dateMonth:t=>g()(t,"YYYYMM").format("MMMM"),dateYear:t=>g()(t,"YYYYMM").format("YYYY")},mixins:[_.Z,y.Z,v.Z,h.tq],beforeRouteLeave(t,e,n){window.scrollTo(0,0),n()},props:{onlyFavorites:{type:Boolean,default:!1},mimesType:{type:Array,default:()=>b.Oj},onThisDay:{type:Boolean,default:!1},rootTitle:{type:String,required:!0}},data:()=>({loadingCount:0,showAlbumCreationForm:!1,showAlbumPicker:!1,appContent:document.getElementById("app-content-vue")}),mounted(){(0,C.Ld)(Q.i7,this.handleUserConfigChange)},destroyed(){(0,C.r1)(Q.i7,this.handleUserConfigChange)},computed:{...(0,i.Se)(["files"])},methods:{...(0,i.nv)(["deleteFiles","addFilesToCollection"]),getContent(){this.fetchFiles({mimesType:this.mimesType,onThisDay:this.onThisDay,onlyFavorites:this.onlyFavorites})},openViewer(t){const e=this.files[t];OCA.Viewer.open({fileInfo:e,list:Object.values(this.fileIdsByMonth).flat().map((t=>this.files[t])),loadMore:e.loadMore?async()=>await e.loadMore(!0):()=>[],canLoop:e.canLoop})},openUploader(){},async addSelectionToAlbum(t){this.showAlbumPicker=!1,await this.addFilesToCollection({collectionFileName:t.filename,fileIdsToAdd:this.selectedFileIds})},async deleteSelection(){const t=this.selectedFileIds;this.onUncheckFiles(t),this.fetchedFileIds=this.fetchedFileIds.filter((e=>!t.includes(e))),await this.deleteFiles(t)},handleUserConfigChange(t){let{key:e}=t;"photosSourceFolder"===e&&this.resetFetchFilesState()},t:f.Iu}};var K=n(78185),tt={};tt.styleTagTransform=$(),tt.setAttributes=V(),tt.insert=P().bind(null,"head"),tt.domAPI=H(),tt.insertStyleElement=E();M()(K.Z,tt);K.Z&&K.Z.locals&&K.Z.locals;const et=(0,l.Z)(X,(function(){var t,e,n=this,i=n._self._c;return n.errorFetchingFiles?i("div",{staticClass:"timeline__empty-content"},[404===n.errorFetchingFiles?i("NcEmptyContent",{attrs:{name:n.t("photos","The source folder does not exists")}},[i("FolderAlertOutline",{attrs:{slot:"icon"},slot:"icon"}),n._v(" "),i("PhotosSourceLocationsSettings",{staticClass:"timeline__update_source_directory",attrs:{slot:"action"},slot:"action"})],1):i("NcEmptyContent",{attrs:{name:n.t("photos","An error occurred")}},[i("AlertCircle",{attrs:{slot:"icon"},slot:"icon"})],1)],1):i("div",{staticClass:"timeline"},[i("HeaderNavigation",{key:"navigation",attrs:{loading:n.loadingCount>0,path:"/",title:n.rootTitle,"root-title":n.rootTitle},on:{refresh:n.resetFetchFilesState}},[i("div",{staticClass:"timeline__header__left"},[0===n.selectedFileIds.length?i("NcActions",{ref:"addActions",attrs:{"force-menu":!0,"menu-name":n.t("photos","Add")},scopedSlots:n._u([{key:"icon",fn:function(){return[i("Plus")]},proxy:!0}],null,!1,1489515321)},[n._v(" "),i("NcActionButton",{attrs:{"close-after-click":!0,"aria-label":n.t("photos","Create new album")},on:{click:function(t){n.showAlbumCreationForm=!0}},scopedSlots:n._u([{key:"icon",fn:function(){return[i("PlusBoxMultiple")]},proxy:!0}],null,!1,2640725948)},[n._v("\n\t\t\t\t\t"+n._s(n.t("photos","Create new album"))+"\n\t\t\t\t\t")])],1):[i("NcButton",{attrs:{"close-after-click":!0,type:"primary","aria-label":n.t("photos","Add to album")},on:{click:function(t){n.showAlbumPicker=!0}},scopedSlots:n._u([{key:"icon",fn:function(){return[i("Plus")]},proxy:!0},n.isMobile?null:{key:"default",fn:function(){return[n._v("\n\t\t\t\t\t\t"+n._s(n.t("photos","Add to album"))+"\n\t\t\t\t\t")]},proxy:!0}],null,!0)}),n._v(" "),n.selectedFileIds.length>0?i("NcButton",{attrs:{"aria-label":n.t("photos","Unselect all")},on:{click:n.resetSelection},scopedSlots:n._u([{key:"icon",fn:function(){return[i("Close")]},proxy:!0},n.isMobile?null:{key:"default",fn:function(){return[n._v("\n\t\t\t\t\t\t"+n._s(n.t("photos","Unselect all"))+"\n\t\t\t\t\t")]},proxy:!0}],null,!0)}):n._e(),n._v(" "),i("NcActions",{attrs:{"aria-label":n.t("photos","Open actions menu")}},[i("ActionDownload",{attrs:{"selected-file-ids":n.selectedFileIds,title:n.t("photos","Download selected files")}},[i("Download",{attrs:{slot:"icon"},slot:"icon"})],1),n._v(" "),i("ActionFavorite",{attrs:{"selected-file-ids":n.selectedFileIds}}),n._v(" "),i("NcActionButton",{attrs:{"close-after-click":!0,"aria-label":n.t("photos","Delete selection")},on:{click:n.deleteSelection},scopedSlots:n._u([{key:"icon",fn:function(){return[i("Delete")]},proxy:!0}])},[n._v("\n\t\t\t\t\t\t"+n._s(n.t("photos","Delete selection"))+"\n\t\t\t\t\t\t")])],1)]],2)]),n._v(" "),i("FilesListViewer",{ref:"filesListViewer",staticClass:"timeline__file-list",attrs:{"container-element":n.appContent,"file-ids-by-section":n.fileIdsByMonth,sections:n.monthsList,loading:n.loadingFiles,"base-height":n.isMobile?120:200,"empty-message":n.t("photos","No photos or videos in here")},on:{"need-content":n.getContent},scopedSlots:n._u([{key:"default",fn:function(t){let{file:e,isHeader:o,distance:l}=t;return[o?i("h2",{staticClass:"section-header",attrs:{id:"file-picker-section-header-".concat(e.id)}},[i("b",[n._v(n._s(n._f("dateMonth")(e.id)))]),n._v("\n\t\t\t\t"+n._s(n._f("dateYear")(e.id))+"\n\t\t\t")]):i("File",{attrs:{file:n.files[e.id],"allow-selection":!0,selected:!0===n.selection[e.id],distance:l},on:{click:n.openViewer,"select-toggled":n.onFileSelectToggle}})]}}])}),n._v(" "),n.showAlbumCreationForm?i("NcModal",{key:"albumCreationForm",attrs:{"set-return-focus":null===(t=n.$refs.addActions)||void 0===t||null===(e=t.$refs.menuButton)||void 0===e?void 0:e.$el},on:{close:function(t){n.showAlbumCreationForm=!1}}},[i("h2",{staticClass:"timeline__heading"},[n._v("\n\t\t\t"+n._s(n.t("photos","New album"))+"\n\t\t")]),n._v(" "),i("AlbumForm",{on:{done:function(t){n.showAlbumCreationForm=!1}}})],1):n._e(),n._v(" "),n.showAlbumPicker?i("NcModal",{key:"albumPicker",on:{close:function(t){n.showAlbumPicker=!1}}},[i("AlbumPicker",{on:{"album-picked":n.addSelectionToAlbum}})],1):n._e()],1)}),[],!1,null,"86bd25c4",null).exports}}]); -//# sourceMappingURL=photos-node_modules_vue-material-design-icons_ArrowLeft_vue-src_views_Timeline_vue.js.map?v=af509b9ec01fccb9f4b3 \ No newline at end of file +"use strict";(self.webpackChunkphotos=self.webpackChunkphotos||[]).push([["node_modules_vue-material-design-icons_ArrowLeft_vue-src_views_Timeline_vue"],{49568:(t,e,n)=>{n.d(e,{Z:()=>s});var o=n(20629),i=n(69363),l=n(87076);const s={name:"FetchCollectionsMixin",data:()=>({errorFetchingCollections:null,loadingCollections:!1}),mixins:[i.Z],methods:{...(0,o.nv)(["addCollections"]),async fetchCollections(t,e,n){if(this.loadingCollections)return[];try{this.loadingCollections=!0,this.errorFetchingCollections=null;const o=await(0,l.XK)(t,{signal:this.abortController.signal},e,n);return this.addCollections({collections:o}),o}catch(t){var o;404===(null===(o=t.response)||void 0===o?void 0:o.status)?this.errorFetchingCollections=404:this.errorFetchingCollections=t}finally{this.loadingCollections=!1}return[]}}}},66951:(t,e,n)=>{n.d(e,{Z:()=>h});var o=n(5656),i=n(65358),l=n(59537),s=n(45086),a=n(3301),r=n(81067),c=n(2161),d=n(80351),u=n.n(d),m=n(30319);var p=n(32114);const h={name:"FetchFilesMixin",mixins:[n(69363).Z],data:()=>({errorFetchingFiles:null,loadingFiles:!1,doneFetchingFiles:!1,fetchSemaphore:new p.Z(1),fetchedFileIds:[]}),watch:{"$route.path"(){this.resetFetchFilesState()}},methods:{async fetchFiles(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(this.doneFetchingFiles&&!n||this.loadingFiles)return[];const d=await this.fetchSemaphore.acquire();try{this.errorFetchingFiles=null,this.loadingFiles=!0;const n=200,d=await async function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};t={firstResult:0,nbResults:200,mimesType:a.Oj,onThisDay:!1,onlyFavorites:!1,...t};const e=t.mimesType.reduce(((t,e)=>"".concat(t,"\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t").concat(e,"\n\t\t\n\t")),""),n=t.onlyFavorites?"\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t1\n\t\t\t":"",l=t.onThisDay?"".concat(Array(20).fill(1).map(((t,e)=>{const n=u()(Date.now()).startOf("day").subtract(3,"d").subtract(e+1,"y"),o=u()(Date.now()).endOf("day").add(3,"d").subtract(e+1,"y");return"\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t".concat(n.format(u().defaultFormatUtc),"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t").concat(o.format(u().defaultFormatUtc),"\n\t\t\t\t\n\t\t\t")})).join("\n"),""):"",d=m.Z.state.userConfig.photosSourceFolders.map((t=>"\n\t\t\t\n\t\t\t\t".concat((0,i.RQ)(o._o,t),"\n\t\t\t\tinfinity\n\t\t\t"))).join("\n");return t=Object.assign({method:"SEARCH",headers:{"content-Type":"text/xml"},data:'\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t'.concat(c.N,"\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t").concat(d,"\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t").concat(e,"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t").concat(n,"\n\t\t\t\t\t\t\t").concat(l,"\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\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\t\n\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\t\n\t\t\t\t\t\t").concat(t.nbResults,"\n\t\t\t\t\t\t").concat(t.firstResult,"\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t"),deep:!0,details:!0},t),(await r.ZP.getDirectoryContents("",t)).data.map((t=>(0,s.AX)(t)))}({firstResult:this.fetchedFileIds.length,nbResults:n,...t,signal:this.abortController.signal});d.length!==n&&(this.doneFetchingFiles=!0);const p=d.map((t=>t.fileid)).filter((t=>!this.fetchedFileIds.includes(t.toString())));return this.fetchedFileIds.push(...p.map((t=>t.toString())).filter((t=>!e.includes(t)))),this.$store.dispatch("appendFiles",d),l.Z.debug("[FetchFilesMixin] Fetched ".concat(p.length," new files: "),p),p}catch(t){var p;if(404===(null===(p=t.response)||void 0===p?void 0:p.status)){const e=m.Z.state.userConfig.photosSourceFolders;for(const n of e){var h,A;if(null!==(null===(h=t.response)||void 0===h||null===(A=h.data)||void 0===A?void 0:A.match("File with name /".concat(n," could not be located")))){l.Z.debug("The ".concat(n," folder does not exist, creating it."));try{return await(0,o.rp)().createDirectory((0,i.RQ)(o._o,n)),this.resetFetchFilesState(),[]}catch(t){this.errorFetchingFiles=404,l.Z.error("Fail to create source directory",{error:t})}}}}else{if("ERR_CANCELED"===t.code)return[];this.errorFetchingFiles=t}l.Z.error("Error fetching files",{error:t})}finally{this.loadingFiles=!1,this.fetchSemaphore.release(d)}return[]},resetFetchFilesState(){this.doneFetchingFiles=!1,this.errorFetchingFiles=null,this.loadingFiles=!1,this.fetchedFileIds=[]}}}},28391:(t,e,n)=>{n.d(e,{Z:()=>o});const o={name:"FilesByMonthMixin",computed:{fileIdsByMonth(){const t={};for(const n of this.fetchedFileIds){const o=this.files[n];var e;if(o)t[o.month]=null!==(e=t[o.month])&&void 0!==e?e:[],t[o.month].push(o.fileid)}return Object.keys(t).forEach((e=>t[e].sort(this.sortFilesByTimestamp))),t},monthsList(){return Object.keys(this.fileIdsByMonth).sort(((t,e)=>t>e?-1:1))}},methods:{sortFilesByTimestamp(t,e){return this.files[t].timestamp>this.files[e].timestamp?-1:1}}}},67148:(t,e,n)=>{n.d(e,{Z:()=>a});var o=n(87537),i=n.n(o),l=n(23645),s=n.n(l)()(i());s.push([t.id,".album-picker[data-v-20d6fa8c]{padding:32px;padding-top:16px}.album-picker h2[data-v-20d6fa8c]{display:flex;align-items:center;height:60px}.album-picker h2 .loading-icon[data-v-20d6fa8c]{margin-left:32px}.album-picker .albums-container[data-v-20d6fa8c]{min-height:150px;max-height:350px;overflow-x:scroll;padding:2px}.album-picker .albums-container .album[data-v-20d6fa8c] .list-item{padding:8px 16px;box-sizing:border-box}.album-picker .albums-container .album[data-v-20d6fa8c]:not(:last-child){margin-bottom:16px}.album-picker .albums-container .album__image[data-v-20d6fa8c]{width:40px;height:40px;object-fit:none;border-radius:var(--border-radius)}.album-picker .albums-container .album__image--placeholder[data-v-20d6fa8c]{background:var(--color-primary-element-light)}.album-picker .albums-container .album__image--placeholder[data-v-20d6fa8c] .material-design-icon{width:100%;height:100%}.album-picker .albums-container .album__image--placeholder[data-v-20d6fa8c] .material-design-icon .material-design-icon__svg{fill:var(--color-primary-element)}.album-picker .new-album-button[data-v-20d6fa8c]{margin-top:32px}","",{version:3,sources:["webpack://./src/components/Albums/AlbumPicker.vue"],names:[],mappings:"AAEA,+BACC,YAAA,CACA,gBAAA,CAEA,kCACC,YAAA,CACA,kBAAA,CACA,WAAA,CAEA,gDACC,gBAAA,CAIF,iDACC,gBAAA,CACA,gBAAA,CACA,iBAAA,CACA,WAAA,CAIC,mEACC,gBAAA,CACA,qBAAA,CAGD,yEACC,kBAAA,CAGD,+DACC,UAAA,CACA,WAAA,CACA,eAAA,CACA,kCAAA,CAEA,4EACC,6CAAA,CAEA,kGACC,UAAA,CACA,WAAA,CAEA,6HACC,iCAAA,CAQN,iDACC,eAAA",sourcesContent:['$sizes: ("400": ("count": 3, "marginTop": 66, "marginW": 8), "700": ("count": 4, "marginTop": 66, "marginW": 8), "1024": ("count": 5, "marginTop": 66, "marginW": 44), "1280": ("count": 4, "marginTop": 66, "marginW": 44), "1440": ("count": 5, "marginTop": 88, "marginW": 66), "1600": ("count": 6, "marginTop": 88, "marginW": 66), "2048": ("count": 7, "marginTop": 88, "marginW": 66), "2560": ("count": 8, "marginTop": 88, "marginW": 88), "3440": ("count": 9, "marginTop": 88, "marginW": 88), "max": ("count": 10, "marginTop": 88, "marginW": 88));\n\n.album-picker {\n\tpadding: 32px;\n\tpadding-top: 16px;\n\n\th2 {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\theight: 60px;\n\n\t\t.loading-icon {\n\t\t\tmargin-left: 32px;\n\t\t}\n\t}\n\n\t.albums-container {\n\t\tmin-height: 150px;\n\t\tmax-height: 350px;\n\t\toverflow-x: scroll;\n\t\tpadding: 2px;\n\n\t\t.album {\n\n\t\t\t:deep .list-item {\n\t\t\t\tpadding: 8px 16px;\n\t\t\t\tbox-sizing: border-box;\n\t\t\t}\n\n\t\t\t&:not(:last-child) {\n\t\t\t\tmargin-bottom: 16px;\n\t\t\t}\n\n\t\t\t&__image {\n\t\t\t\twidth: 40px;\n\t\t\t\theight: 40px;\n\t\t\t\tobject-fit: none;\n\t\t\t\tborder-radius: var(--border-radius);\n\n\t\t\t\t&--placeholder {\n\t\t\t\t\tbackground: var(--color-primary-element-light);\n\n\t\t\t\t\t:deep .material-design-icon {\n\t\t\t\t\t\twidth: 100%;\n\t\t\t\t\t\theight: 100%;\n\n\t\t\t\t\t\t.material-design-icon__svg {\n\t\t\t\t\t\t\tfill: var(--color-primary-element);\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\t.new-album-button {\n\t\tmargin-top: 32px;\n\t}\n}\n'],sourceRoot:""}]);const a=s},77551:(t,e,n)=>{n.d(e,{Z:()=>a});var o=n(87537),i=n.n(o),l=n(23645),s=n.n(l)()(i());s.push([t.id,".folder[data-v-a871c74a]{display:flex;gap:16px;min-width:300px}.folder__info[data-v-a871c74a]{display:flex;flex-direction:column;flex-grow:1;justify-content:center}.folder__path[data-v-a871c74a]{font-weight:bold}","",{version:3,sources:["webpack://./src/components/Settings/PhotosFolder.vue"],names:[],mappings:"AAEA,yBACC,YAAA,CACA,QAAA,CACA,eAAA,CAEA,+BACC,YAAA,CACA,qBAAA,CACA,WAAA,CACA,sBAAA,CAGD,+BACC,gBAAA",sourcesContent:['$sizes: ("400": ("count": 3, "marginTop": 66, "marginW": 8), "700": ("count": 4, "marginTop": 66, "marginW": 8), "1024": ("count": 5, "marginTop": 66, "marginW": 44), "1280": ("count": 4, "marginTop": 66, "marginW": 44), "1440": ("count": 5, "marginTop": 88, "marginW": 66), "1600": ("count": 6, "marginTop": 88, "marginW": 66), "2048": ("count": 7, "marginTop": 88, "marginW": 66), "2560": ("count": 8, "marginTop": 88, "marginW": 88), "3440": ("count": 9, "marginTop": 88, "marginW": 88), "max": ("count": 10, "marginTop": 88, "marginW": 88));\n\n.folder {\n\tdisplay: flex;\n\tgap: 16px;\n\tmin-width: 300px;\n\n\t&__info {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tflex-grow: 1;\n\t\tjustify-content: center;\n\t}\n\n\t&__path {\n\t\tfont-weight: bold;\n\t}\n}\n'],sourceRoot:""}]);const a=s},92601:(t,e,n)=>{n.d(e,{Z:()=>a});var o=n(87537),i=n.n(o),l=n(23645),s=n.n(l)()(i());s.push([t.id,".photos-locations-container[data-v-05ae8e6c]{display:flex;flex-direction:column;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.photos-locations-container .photos-locations[data-v-05ae8e6c]{margin-bottom:16px}.photos-locations-container .photos-locations li[data-v-05ae8e6c]{list-style:none}","",{version:3,sources:["webpack://./src/components/Settings/PhotosSourceLocationsSettings.vue"],names:[],mappings:"AAEA,6CACC,YAAA,CACA,qBAAA,CACA,yBAAA,CAAA,sBAAA,CAAA,iBAAA,CAEA,+DACC,kBAAA,CAEA,kEACC,eAAA",sourcesContent:['$sizes: ("400": ("count": 3, "marginTop": 66, "marginW": 8), "700": ("count": 4, "marginTop": 66, "marginW": 8), "1024": ("count": 5, "marginTop": 66, "marginW": 44), "1280": ("count": 4, "marginTop": 66, "marginW": 44), "1440": ("count": 5, "marginTop": 88, "marginW": 66), "1600": ("count": 6, "marginTop": 88, "marginW": 66), "2048": ("count": 7, "marginTop": 88, "marginW": 66), "2560": ("count": 8, "marginTop": 88, "marginW": 88), "3440": ("count": 9, "marginTop": 88, "marginW": 88), "max": ("count": 10, "marginTop": 88, "marginW": 88));\n\n.photos-locations-container {\n\tdisplay: flex;\n\tflex-direction: column;\n\twidth: fit-content;\n\n\t.photos-locations {\n\t\tmargin-bottom: 16px;\n\n\t\tli {\n\t\t\tlist-style: none;\n\t\t}\n\t}\n}\n'],sourceRoot:""}]);const a=s},67293:(t,e,n)=>{n.d(e,{Z:()=>a});var o=n(87537),i=n.n(o),l=n(23645),s=n.n(l)()(i());s.push([t.id,".timeline[data-v-2068ca0a]{display:flex;flex-direction:column}.timeline__empty-content[data-v-2068ca0a]{height:100%}.timeline__empty-content .empty-content[data-v-2068ca0a]{height:100%}.timeline__empty-content .timeline__update_source_directory[data-v-2068ca0a]{align-items:center}.timeline__empty-content .timeline__update_source_directory[data-v-2068ca0a] .folder{min-width:unset}.timeline__header__left[data-v-2068ca0a]{display:flex;gap:4px}.timeline__heading[data-v-2068ca0a]{padding:calc(var(--default-grid-baseline)*4);margin-bottom:0px;padding-bottom:0px}.timeline__file-list[data-v-2068ca0a]{padding:0 64px}@media only screen and (max-width: 1200px){.timeline__file-list[data-v-2068ca0a]{padding:0 4px}}.timeline__file-list[data-v-2068ca0a] .files-list-viewer__section-header{top:var(--photos-navigation-height)}","",{version:3,sources:["webpack://./src/views/Timeline.vue"],names:[],mappings:"AAEA,2BACC,YAAA,CACA,qBAAA,CAEA,0CACC,WAAA,CAEA,yDACC,WAAA,CAGD,6EACC,kBAAA,CAEA,qFACC,eAAA,CAMF,yCACC,YAAA,CACA,OAAA,CAIF,oCACC,4CAAA,CACA,iBAAA,CACA,kBAAA,CAGD,sCACC,cAAA,CAEA,2CAHD,sCAIE,aAAA,CAAA,CAGD,yEACC,mCAAA",sourcesContent:['$sizes: ("400": ("count": 3, "marginTop": 66, "marginW": 8), "700": ("count": 4, "marginTop": 66, "marginW": 8), "1024": ("count": 5, "marginTop": 66, "marginW": 44), "1280": ("count": 4, "marginTop": 66, "marginW": 44), "1440": ("count": 5, "marginTop": 88, "marginW": 66), "1600": ("count": 6, "marginTop": 88, "marginW": 66), "2048": ("count": 7, "marginTop": 88, "marginW": 66), "2560": ("count": 8, "marginTop": 88, "marginW": 88), "3440": ("count": 9, "marginTop": 88, "marginW": 88), "max": ("count": 10, "marginTop": 88, "marginW": 88));\n\n.timeline {\n\tdisplay: flex;\n\tflex-direction: column;\n\n\t&__empty-content {\n\t\theight: 100%;\n\n\t\t.empty-content {\n\t\t\theight: 100%;\n\t\t}\n\n\t\t.timeline__update_source_directory {\n\t\t\talign-items: center;\n\n\t\t\t:deep(.folder) {\n\t\t\t\tmin-width: unset;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__header {\n\t\t&__left {\n\t\t\tdisplay: flex;\n\t\t\tgap: 4px;\n\t\t}\n\t}\n\n\t&__heading {\n\t\tpadding: calc(var(--default-grid-baseline) * 4);\n\t\tmargin-bottom: 0px;\n\t\tpadding-bottom: 0px;\n\t}\n\n\t&__file-list {\n\t\tpadding: 0 64px;\n\n\t\t@media only screen and (max-width: 1200px) {\n\t\t\tpadding: 0 4px;\n\t\t}\n\n\t\t:deep .files-list-viewer__section-header {\n\t\t\ttop: var(--photos-navigation-height);\n\t\t}\n\t}\n}\n'],sourceRoot:""}]);const a=s},69254:(t,e,n)=>{n.d(e,{Z:()=>i});const o={name:"ArrowLeftIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};const i=(0,n(51900).Z)(o,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon arrow-left-icon",attrs:{"aria-hidden":!t.title,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M20,11V13H8L13.5,18.5L12.08,19.92L4.16,12L12.08,4.08L13.5,5.5L8,11H20Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports},34020:(t,e,n)=>{n.d(e,{Z:()=>i});const o={name:"DownloadIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};const i=(0,n(51900).Z)(o,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon download-icon",attrs:{"aria-hidden":!t.title,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M5,20H19V18H5M19,9H15V3H9V9H5L12,16L19,9Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports},81170:(t,e,n)=>{n.d(e,{Z:()=>i});const o={name:"FolderIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};const i=(0,n(51900).Z)(o,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon folder-icon",attrs:{"aria-hidden":!t.title,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports},40270:(t,e,n)=>{n.d(e,{Z:()=>i});const o={name:"ImageMultipleIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};const i=(0,n(51900).Z)(o,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon image-multiple-icon",attrs:{"aria-hidden":!t.title,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M22,16V4A2,2 0 0,0 20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16M11,12L13.03,14.71L16,11L20,16H8M2,6V20A2,2 0 0,0 4,22H18V20H4V6"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports},41809:(t,e,n)=>{n.d(e,{Z:()=>a});var o=n(20629),i=n(58613),l=n(64882);const s={name:"ActionFavorite",components:{Star:i.Z,NcActionButton:l.Js},props:{selectedFileIds:{type:Array,required:!0}},computed:{...(0,o.Se)(["files"]),shouldFavoriteSelection(){return this.selectedFileIds.some((t=>0===this.files[t].favorite))}},methods:{...(0,o.nv)(["toggleFavoriteForFiles"]),async favoriteSelection(){await this.toggleFavoriteForFiles({fileIds:this.selectedFileIds,favoriteState:1})},async unFavoriteSelection(){await this.toggleFavoriteForFiles({fileIds:this.selectedFileIds,favoriteState:0})}}};const a=(0,n(51900).Z)(s,(function(){var t=this,e=t._self._c;return t.shouldFavoriteSelection?e("NcActionButton",{attrs:{"close-after-click":!0,"aria-label":t.t("photos","Mark selection as favorite")},on:{click:t.favoriteSelection}},[t._v("\n\t"+t._s(t.t("photos","Add selection to favorites"))+"\n\t"),e("Star",{attrs:{slot:"icon"},slot:"icon"})],1):e("NcActionButton",{attrs:{"close-after-click":!0,"aria-label":t.t("photos","Remove selection from favorites")},on:{click:t.unFavoriteSelection}},[t._v("\n\t"+t._s(t.t("photos","Remove selection from favorites"))+"\n\t"),e("Star",{attrs:{slot:"icon"},slot:"icon"})],1)}),[],!1,null,null,null).exports},89366:(t,e,n)=>{n.d(e,{Z:()=>F});var o=n(20144),i=n(81170),l=n(44893),s=n(64882),a=n(31352);const r=(0,o.aZ)({name:"PhotosFolder",components:{NcButton:s.P2,Folder:i.Z,Close:l.Z},props:{path:{type:String,required:!0},canDelete:{type:Boolean,default:!1},rootFolderLabel:{type:String,required:!0},rootFolderIcon:{type:Object,required:!0}},emits:["remove-folder"],computed:{folderName(){return"/"===this.path?this.rootFolderLabel:this.path.split("/").pop()},subname(){var t;switch((null!==(t=this.path.match(/\//g))&&void 0!==t?t:[]).length){case 1:return"";case 2:return this.path.split("/").splice(0,2).join("/");default:return this.path.split("/").splice(0,3).join("/")}}},methods:{emitRemoveSourceFolder(){this.$emit("remove-folder")},t:a.Iu}});var c=n(93379),d=n.n(c),u=n(7795),m=n.n(u),p=n(90569),h=n.n(p),A=n(3565),g=n.n(A),f=n(19216),C=n.n(f),_=n(44589),v=n.n(_),b=n(77551),y={};y.styleTagTransform=v(),y.setAttributes=g(),y.insert=h().bind(null,"head"),y.domAPI=m(),y.insertStyleElement=C();d()(b.Z,y);b.Z&&b.Z.locals&&b.Z.locals;const F=(0,n(51900).Z)(r,(function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"folder"},["/"===t.path?e(t.rootFolderIcon,{tag:"component"}):e("Folder"),t._v(" "),e("span",{staticClass:"folder__info"},[e("div",{staticClass:"folder__path"},[t._v(t._s(t.folderName))]),t._v(" "),""!==t.subname?e("div",[t._v("\n\t\t\t"+t._s(t.subname)+"\n\t\t")]):t._e()]),t._v(" "),t.canDelete?e("NcButton",{attrs:{type:"tertiary","aria-label":t.t("photos","Delete source directory")},on:{click:t.emitRemoveSourceFolder},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Close",{attrs:{size:20}})]},proxy:!0}],null,!1,2121748766)}):t._e()],1)}),[],!1,null,"a871c74a",null).exports},51719:(t,e,n)=>{n.d(e,{Z:()=>T});var o=n(20296),i=n.n(o),l=n(20144);const s={name:"FolderMultipleIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var a=n(51900);const r=(0,a.Z)(s,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon folder-multiple-icon",attrs:{"aria-hidden":!t.title,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M22,4H14L12,2H6A2,2 0 0,0 4,4V16A2,2 0 0,0 6,18H22A2,2 0 0,0 24,16V6A2,2 0 0,0 22,4M2,6H0V11H0V20A2,2 0 0,0 2,22H20V20H2V6Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports;var c=n(5352),d=n(64882),u=n(64024),m=n(31352),p=n(89366);const h=(0,l.aZ)({name:"PhotosSourceLocationsSettings",components:{NcButton:d.P2,PhotosFolder:p.Z,Plus:c.Z},data:()=>({FolderMultiple:r}),computed:{photosSourceFolders(){return this.$store.state.userConfig.photosSourceFolders}},methods:{debounceAddSourceFolder:i()((function(){this.addSourceFolder(...arguments)}),200,!1),openFilePicker:async t=>(0,u.fn)(t).setMultiSelect(!1).setModal(!0).setType(1).addMimeTypeFilter("httpd/unix-directory").allowDirectories().build().pick(),async addSourceFolder(){const t=await this.openFilePicker((0,m.Iu)("photos","Select a source folder for your media"));this.photosSourceFolders.includes(t)||this.$store.dispatch("updateUserConfig",{key:"photosSourceFolders",value:[...this.photosSourceFolders,t]})},removeSourceFolder(t){const e=[...this.photosSourceFolders];e.splice(t,1),this.$store.dispatch("updateUserConfig",{key:"photosSourceFolders",value:e})},t:m.Iu}});var A=n(93379),g=n.n(A),f=n(7795),C=n.n(f),_=n(90569),v=n.n(_),b=n(3565),y=n.n(b),F=n(19216),x=n.n(F),w=n(44589),k=n.n(w),S=n(92601),Z={};Z.styleTagTransform=k(),Z.setAttributes=y(),Z.insert=v().bind(null,"head"),Z.domAPI=C(),Z.insertStyleElement=x();g()(S.Z,Z);S.Z&&S.Z.locals&&S.Z.locals;const T=(0,a.Z)(h,(function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"photos-locations-container"},[e("div",{staticClass:"photos-locations"},t._l(t.photosSourceFolders,(function(n,o){return e("li",{key:o},[e("PhotosFolder",{attrs:{path:n,"can-delete":1!==t.photosSourceFolders.length,"root-folder-label":t.t("photos","All folders"),"root-folder-icon":t.FolderMultiple},on:{"remove-folder":function(e){return t.removeSourceFolder(o)}}})],1)})),0),t._v(" "),e("NcButton",{attrs:{"aria-label":t.t("photos","Add a Photos source for the timelines")},on:{click:t.debounceAddSourceFolder},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Plus",{attrs:{size:20}})]},proxy:!0}])},[t._v("\n\t\t"+t._s(t.t("photos","Add folder"))+"\n\t")])],1)}),[],!1,null,"05ae8e6c",null).exports},36074:(t,e,n)=>{n.r(e),n.d(e,{default:()=>et});var o=n(20629);const i={name:"FolderAlertOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var l=n(51900);const s=(0,l.Z)(i,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon folder-alert-outline-icon",attrs:{"aria-hidden":!t.title,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M15,12H17V17H15V12M15,18H17V20H15V18M16,9C17.07,9 18.09,9.24 19,9.67V8H3V18H9.29C9.1,17.36 9,16.69 9,16A7,7 0 0,1 16,9M23,16A7,7 0 0,1 16,23C13.62,23 11.5,21.81 10.25,20H3C1.89,20 1,19.1 1,18V6C1,4.89 1.89,4 3,4H9L11,6H19A2,2 0 0,1 21,8V11.1C22.24,12.36 23,14.09 23,16M16,11A5,5 0 0,0 11,16A5,5 0 0,0 16,21A5,5 0 0,0 21,16A5,5 0 0,0 16,11Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports;var a=n(5352),r=n(42588);const c={name:"PlusBoxMultipleIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};const d=(0,l.Z)(c,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon plus-box-multiple-icon",attrs:{"aria-hidden":!t.title,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M19,11H15V15H13V11H9V9H13V5H15V9H19M20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M4,6H2V20A2,2 0 0,0 4,22H18V20H4V6Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports;var u=n(34020),m=n(44893),p=n(84320),h=n(64882),A=n(80351),g=n.n(A),f=n(31352),C=n(69183),_=n(3301),v=n(66951),b=n(28391),y=n(98171),F=n(97519),x=n(64811),w=n(7976),k=n(40270),S=n(79753),Z=n(77958),T=n(49568);const B={name:"AlbumPicker",components:{Plus:a.Z,ImageMultiple:k.Z,NcButton:h.P2,NcListItem:h.hx,NcLoadingIcon:h.lb,NcUserBubble:h.uq,AlbumForm:w.Z},filters:{toCoverUrl:t=>(0,S.nu)("/apps/photos/api/v1/preview/".concat(t,"?x=",64,"&y=",64))},mixins:[T.Z],data:()=>({showAlbumCreationForm:!1}),computed:{...(0,o.Se)(["albums","sharedAlbums"]),allAlbums(){return[...Object.values(this.albums),...Object.values(this.sharedAlbums)]}},mounted(){this.fetchAlbumList()},methods:{async fetchAlbumList(){var t,e;await this.fetchCollections("/photos/".concat(null===(t=(0,Z.ts)())||void 0===t?void 0:t.uid,"/albums"),["","",""]),await this.fetchCollections("/photos/".concat(null===(e=(0,Z.ts)())||void 0===e?void 0:e.uid,"/sharedalbums"),["","",""])},albumCreatedHandler(){this.showAlbumCreationForm=!1,this.fetchAlbumList()},pickAlbum(t){this.$emit("album-picked",t)},isSharedAlbum:t=>null!==t.filename.match(/^\/photos\/.+\/sharedalbums\//),originalName(t){return this.isSharedAlbum(t)?t.basename.replace(new RegExp("\\(".concat(t.collaborators[0].id,"\\)$")),""):t.basename},t:f.Iu,n:f.uN}};var I=n(93379),M=n.n(I),N=n(7795),H=n.n(N),W=n(90569),P=n.n(W),L=n(3565),V=n.n(L),D=n(19216),E=n.n(D),z=n(44589),$=n.n(z),R=n(67148),U={};U.styleTagTransform=$(),U.setAttributes=V(),U.insert=P().bind(null,"head"),U.domAPI=H(),U.insertStyleElement=E();M()(R.Z,U);R.Z&&R.Z.locals&&R.Z.locals;const q=(0,l.Z)(B,(function(){var t=this,e=t._self._c;return t.showAlbumCreationForm?e("AlbumForm",{attrs:{"display-back-button":!0,title:t.t("photos","New album")},on:{back:function(e){t.showAlbumCreationForm=!1},done:t.albumCreatedHandler}}):e("div",{staticClass:"album-picker"},[e("h2",[t._v("\n\t\t"+t._s(t.t("photos","Add to Album"))+"\n\t\t"),t.loadingCollections?e("NcLoadingIcon",{staticClass:"loading-icon"}):t._e()],1),t._v(" "),e("ul",{staticClass:"albums-container"},t._l(t.allAlbums,(function(n){return e("NcListItem",{key:n.filename,staticClass:"album",attrs:{name:t.originalName(n),"aria-label":t.t("photos","Add selection to album {albumName}",{albumName:n.basename})},on:{click:function(e){return t.pickAlbum(n)}},scopedSlots:t._u([{key:"subname",fn:function(){return[t._v("\n\t\t\t\t"+t._s(t.n("photos","%n item","%n photos and videos",n.nbItems))+"\n\t\t\t\t"),t.isSharedAlbum(n)?[t._v("\n\t\t\t\t\t⸱ "+t._s(t.t("photos","Shared by"))+" "),e("NcUserBubble",{attrs:{"display-name":n.collaborators[0].label,user:n.collaborators[0].id}})]:t._e()]},proxy:!0}],null,!0)},[e("template",{slot:"icon"},[-1!==n.lastPhoto?e("img",{staticClass:"album__image",attrs:{src:t._f("toCoverUrl")(n.lastPhoto)}}):e("div",{staticClass:"album__image album__image--placeholder"},[e("ImageMultiple",{attrs:{size:32}})],1)])],2)})),1),t._v(" "),e("NcButton",{staticClass:"new-album-button",attrs:{"aria-label":t.t("photos","Create a new album."),type:"tertiary"},on:{click:function(e){t.showAlbumCreationForm=!0}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Plus")]},proxy:!0}],null,!1,1489515321)},[t._v("\n\t\t"+t._s(t.t("photos","Create new album"))+"\n\t")])],1)}),[],!1,null,"20d6fa8c",null).exports;var Y=n(41809);const O={name:"ActionDownload",components:{NcActionLink:h.ih},props:{title:{type:String,required:!0},selectedFileIds:{type:Array,required:!0}},computed:{...(0,o.Se)(["files"]),downloadUrl(){const t=new URLSearchParams,e=this.fileNames.map((t=>"/"+t.split("/").splice(3).join("/")));return t.append("files",JSON.stringify(e)),(0,S.nu)("/apps/files/ajax/download.php?".concat(t))},fileNames(){return this.selectedFileIds.map((t=>this.files[t].filename))}}};const j=(0,l.Z)(O,(function(){var t=this;return(0,t._self._c)("NcActionLink",{attrs:{"close-after-click":!0,href:t.downloadUrl,download:t.downloadUrl,"aria-label":t.title}},[t._v("\n\t"+t._s(t.title)+"\n\t"),t._t("icon",null,{slot:"icon"})],2)}),[],!1,null,null,null).exports;var G=n(41197),J=n(51719),Q=n(94004);const X={name:"Timeline",components:{Delete:r.Z,PlusBoxMultiple:d,Download:u.Z,Close:m.Z,Plus:a.Z,FolderAlertOutline:s,NcEmptyContent:h.SL,NcModal:h.Jc,NcActions:h.O3,NcActionButton:h.Js,NcButton:h.P2,AlbumForm:w.Z,AlbumPicker:q,FilesListViewer:F.Z,File:x.Z,ActionFavorite:Y.Z,ActionDownload:j,HeaderNavigation:G.Z,PhotosSourceLocationsSettings:J.Z,AlertCircle:p.Z},filters:{dateMonth:t=>g()(t,"YYYYMM").format("MMMM"),dateYear:t=>g()(t,"YYYYMM").format("YYYY")},mixins:[v.Z,y.Z,b.Z,h.tq],beforeRouteLeave(t,e,n){window.scrollTo(0,0),n()},props:{onlyFavorites:{type:Boolean,default:!1},mimesType:{type:Array,default:()=>_.Oj},onThisDay:{type:Boolean,default:!1},rootTitle:{type:String,required:!0}},data:()=>({loadingCount:0,showAlbumCreationForm:!1,showAlbumPicker:!1,appContent:document.getElementById("app-content-vue")}),mounted(){(0,C.Ld)(Q.i7,this.handleUserConfigChange)},destroyed(){(0,C.r1)(Q.i7,this.handleUserConfigChange)},computed:{...(0,o.Se)(["files"])},methods:{...(0,o.nv)(["deleteFiles","addFilesToCollection"]),getContent(){this.fetchFiles({mimesType:this.mimesType,onThisDay:this.onThisDay,onlyFavorites:this.onlyFavorites})},openViewer(t){const e=this.files[t];OCA.Viewer.open({fileInfo:e,list:Object.values(this.fileIdsByMonth).flat().map((t=>this.files[t])),loadMore:e.loadMore?async()=>await e.loadMore(!0):()=>[],canLoop:e.canLoop})},openUploader(){},async addSelectionToAlbum(t){this.showAlbumPicker=!1,await this.addFilesToCollection({collectionFileName:t.filename,fileIdsToAdd:this.selectedFileIds})},async deleteSelection(){const t=this.selectedFileIds;this.onUncheckFiles(t),this.fetchedFileIds=this.fetchedFileIds.filter((e=>!t.includes(e))),await this.deleteFiles(t)},handleUserConfigChange(t){let{key:e}=t;"photosSourceFolders"===e&&this.resetFetchFilesState()},t:f.Iu}};var K=n(67293),tt={};tt.styleTagTransform=$(),tt.setAttributes=V(),tt.insert=P().bind(null,"head"),tt.domAPI=H(),tt.insertStyleElement=E();M()(K.Z,tt);K.Z&&K.Z.locals&&K.Z.locals;const et=(0,l.Z)(X,(function(){var t,e,n=this,o=n._self._c;return n.errorFetchingFiles?o("div",{staticClass:"timeline__empty-content"},[404===n.errorFetchingFiles?o("NcEmptyContent",{attrs:{name:n.t("photos","One of the source folders does not exists")}},[o("FolderAlertOutline",{attrs:{slot:"icon"},slot:"icon"}),n._v(" "),o("PhotosSourceLocationsSettings",{staticClass:"timeline__update_source_directory",attrs:{slot:"action"},slot:"action"})],1):o("NcEmptyContent",{attrs:{name:n.t("photos","An error occurred")}},[o("AlertCircle",{attrs:{slot:"icon"},slot:"icon"})],1)],1):o("div",{staticClass:"timeline"},[o("HeaderNavigation",{key:"navigation",attrs:{loading:n.loadingCount>0,path:"/",title:n.rootTitle,"root-title":n.rootTitle},on:{refresh:n.resetFetchFilesState}},[o("div",{staticClass:"timeline__header__left"},[0===n.selectedFileIds.length?o("NcActions",{ref:"addActions",attrs:{"force-menu":!0,"menu-name":n.t("photos","Add")},scopedSlots:n._u([{key:"icon",fn:function(){return[o("Plus")]},proxy:!0}],null,!1,1489515321)},[n._v(" "),o("NcActionButton",{attrs:{"close-after-click":!0,"aria-label":n.t("photos","Create new album")},on:{click:function(t){n.showAlbumCreationForm=!0}},scopedSlots:n._u([{key:"icon",fn:function(){return[o("PlusBoxMultiple")]},proxy:!0}],null,!1,2640725948)},[n._v("\n\t\t\t\t\t"+n._s(n.t("photos","Create new album"))+"\n\t\t\t\t\t")])],1):[o("NcButton",{attrs:{"close-after-click":!0,type:"primary","aria-label":n.t("photos","Add to album")},on:{click:function(t){n.showAlbumPicker=!0}},scopedSlots:n._u([{key:"icon",fn:function(){return[o("Plus")]},proxy:!0},n.isMobile?null:{key:"default",fn:function(){return[n._v("\n\t\t\t\t\t\t"+n._s(n.t("photos","Add to album"))+"\n\t\t\t\t\t")]},proxy:!0}],null,!0)}),n._v(" "),n.selectedFileIds.length>0?o("NcButton",{attrs:{"aria-label":n.t("photos","Unselect all")},on:{click:n.resetSelection},scopedSlots:n._u([{key:"icon",fn:function(){return[o("Close")]},proxy:!0},n.isMobile?null:{key:"default",fn:function(){return[n._v("\n\t\t\t\t\t\t"+n._s(n.t("photos","Unselect all"))+"\n\t\t\t\t\t")]},proxy:!0}],null,!0)}):n._e(),n._v(" "),o("NcActions",{attrs:{"aria-label":n.t("photos","Open actions menu")}},[o("ActionDownload",{attrs:{"selected-file-ids":n.selectedFileIds,title:n.t("photos","Download selected files")}},[o("Download",{attrs:{slot:"icon"},slot:"icon"})],1),n._v(" "),o("ActionFavorite",{attrs:{"selected-file-ids":n.selectedFileIds}}),n._v(" "),o("NcActionButton",{attrs:{"close-after-click":!0,"aria-label":n.t("photos","Delete selection")},on:{click:n.deleteSelection},scopedSlots:n._u([{key:"icon",fn:function(){return[o("Delete")]},proxy:!0}])},[n._v("\n\t\t\t\t\t\t"+n._s(n.t("photos","Delete selection"))+"\n\t\t\t\t\t\t")])],1)]],2)]),n._v(" "),o("FilesListViewer",{ref:"filesListViewer",staticClass:"timeline__file-list",attrs:{"container-element":n.appContent,"file-ids-by-section":n.fileIdsByMonth,sections:n.monthsList,loading:n.loadingFiles,"base-height":n.isMobile?120:200,"empty-message":n.t("photos","No photos or videos in here")},on:{"need-content":n.getContent},scopedSlots:n._u([{key:"default",fn:function(t){let{file:e,isHeader:i,distance:l}=t;return[i?o("h2",{staticClass:"section-header",attrs:{id:"file-picker-section-header-".concat(e.id)}},[o("b",[n._v(n._s(n._f("dateMonth")(e.id)))]),n._v("\n\t\t\t\t"+n._s(n._f("dateYear")(e.id))+"\n\t\t\t")]):o("File",{attrs:{file:n.files[e.id],"allow-selection":!0,selected:!0===n.selection[e.id],distance:l},on:{click:n.openViewer,"select-toggled":n.onFileSelectToggle}})]}}])}),n._v(" "),n.showAlbumCreationForm?o("NcModal",{key:"albumCreationForm",attrs:{"set-return-focus":null===(t=n.$refs.addActions)||void 0===t||null===(e=t.$refs.menuButton)||void 0===e?void 0:e.$el},on:{close:function(t){n.showAlbumCreationForm=!1}}},[o("h2",{staticClass:"timeline__heading"},[n._v("\n\t\t\t"+n._s(n.t("photos","New album"))+"\n\t\t")]),n._v(" "),o("AlbumForm",{on:{done:function(t){n.showAlbumCreationForm=!1}}})],1):n._e(),n._v(" "),n.showAlbumPicker?o("NcModal",{key:"albumPicker",on:{close:function(t){n.showAlbumPicker=!1}}},[o("AlbumPicker",{on:{"album-picked":n.addSelectionToAlbum}})],1):n._e()],1)}),[],!1,null,"2068ca0a",null).exports}}]); +//# sourceMappingURL=photos-node_modules_vue-material-design-icons_ArrowLeft_vue-src_views_Timeline_vue.js.map?v=a546c61d13750c359889 \ No newline at end of file diff --git a/js/photos-node_modules_vue-material-design-icons_ArrowLeft_vue-src_views_Timeline_vue.js.map b/js/photos-node_modules_vue-material-design-icons_ArrowLeft_vue-src_views_Timeline_vue.js.map index b9d2ceaa4..b8dfd0d16 100644 --- a/js/photos-node_modules_vue-material-design-icons_ArrowLeft_vue-src_views_Timeline_vue.js.map +++ b/js/photos-node_modules_vue-material-design-icons_ArrowLeft_vue-src_views_Timeline_vue.js.map @@ -1 +1 @@ -{"version":3,"file":"photos-node_modules_vue-material-design-icons_ArrowLeft_vue-src_views_Timeline_vue.js?v=af509b9ec01fccb9f4b3","mappings":"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","sources":["webpack:///photos/src/mixins/FetchCollectionsMixin.js","webpack:///photos/src/mixins/FetchFilesMixin.js","webpack:///photos/src/services/PhotoSearch.js","webpack:///photos/src/mixins/FilesByMonthMixin.js","webpack:///photos/src/components/Albums/AlbumPicker.vue?vue&type=style&index=0&id=20d6fa8c&prod&lang=scss&scoped=true","webpack:///photos/src/components/Settings/PhotosFolder.vue?vue&type=style&index=0&id=a871c74a&prod&lang=scss&scoped=true","webpack:///photos/src/components/Settings/PhotosSourceLocationsSettings.vue?vue&type=style&index=0&id=1b7c4cde&prod&lang=scss&scoped=true","webpack:///photos/src/views/Timeline.vue?vue&type=style&index=0&id=86bd25c4&prod&lang=scss&scoped=true","webpack:///photos/node_modules/vue-material-design-icons/ArrowLeft.vue","webpack:///photos/node_modules/vue-material-design-icons/ArrowLeft.vue?vue&type=script&lang=js","webpack://photos/./node_modules/vue-material-design-icons/ArrowLeft.vue?f857","webpack:///photos/node_modules/vue-material-design-icons/ArrowLeft.vue?vue&type=template&id=187c55d7","webpack:///photos/node_modules/vue-material-design-icons/Download.vue","webpack:///photos/node_modules/vue-material-design-icons/Download.vue?vue&type=script&lang=js","webpack://photos/./node_modules/vue-material-design-icons/Download.vue?b226","webpack:///photos/node_modules/vue-material-design-icons/Download.vue?vue&type=template&id=67aea606","webpack:///photos/node_modules/vue-material-design-icons/Folder.vue","webpack:///photos/node_modules/vue-material-design-icons/Folder.vue?vue&type=script&lang=js","webpack://photos/./node_modules/vue-material-design-icons/Folder.vue?b60e","webpack:///photos/node_modules/vue-material-design-icons/Folder.vue?vue&type=template&id=5c04f969","webpack:///photos/node_modules/vue-material-design-icons/ImageMultiple.vue","webpack:///photos/node_modules/vue-material-design-icons/ImageMultiple.vue?vue&type=script&lang=js","webpack://photos/./node_modules/vue-material-design-icons/ImageMultiple.vue?126d","webpack:///photos/node_modules/vue-material-design-icons/ImageMultiple.vue?vue&type=template&id=21a95e74","webpack://photos/./src/components/Actions/ActionFavorite.vue?537d","webpack:///photos/src/components/Actions/ActionFavorite.vue","webpack:///photos/src/components/Actions/ActionFavorite.vue?vue&type=script&lang=js","webpack://photos/./src/components/Actions/ActionFavorite.vue?4be4","webpack://photos/./src/components/Settings/PhotosFolder.vue?2e9c","webpack:///photos/src/components/Settings/PhotosFolder.vue","webpack:///photos/src/components/Settings/PhotosFolder.vue?vue&type=script&lang=js","webpack://photos/./src/components/Settings/PhotosFolder.vue?3e32","webpack://photos/./src/components/Settings/PhotosFolder.vue?220c","webpack://photos/./src/components/Settings/PhotosSourceLocationsSettings.vue?331c","webpack:///photos/node_modules/vue-material-design-icons/FolderMultiple.vue","webpack:///photos/node_modules/vue-material-design-icons/FolderMultiple.vue?vue&type=script&lang=js","webpack://photos/./node_modules/vue-material-design-icons/FolderMultiple.vue?101d","webpack:///photos/node_modules/vue-material-design-icons/FolderMultiple.vue?vue&type=template&id=ee49e6fe","webpack:///photos/src/components/Settings/PhotosSourceLocationsSettings.vue","webpack:///photos/src/components/Settings/PhotosSourceLocationsSettings.vue?vue&type=script&lang=js","webpack://photos/./src/components/Settings/PhotosSourceLocationsSettings.vue?c70f","webpack://photos/./src/components/Settings/PhotosSourceLocationsSettings.vue?29a8","webpack://photos/./src/views/Timeline.vue?f67a","webpack:///photos/node_modules/vue-material-design-icons/FolderAlertOutline.vue","webpack:///photos/node_modules/vue-material-design-icons/FolderAlertOutline.vue?vue&type=script&lang=js","webpack://photos/./node_modules/vue-material-design-icons/FolderAlertOutline.vue?41a0","webpack:///photos/node_modules/vue-material-design-icons/FolderAlertOutline.vue?vue&type=template&id=0780345b","webpack:///photos/node_modules/vue-material-design-icons/PlusBoxMultiple.vue","webpack:///photos/node_modules/vue-material-design-icons/PlusBoxMultiple.vue?vue&type=script&lang=js","webpack://photos/./node_modules/vue-material-design-icons/PlusBoxMultiple.vue?d86c","webpack:///photos/node_modules/vue-material-design-icons/PlusBoxMultiple.vue?vue&type=template&id=5764b316","webpack:///photos/src/components/Albums/AlbumPicker.vue","webpack:///photos/src/components/Albums/AlbumPicker.vue?vue&type=script&lang=js","webpack://photos/./src/components/Albums/AlbumPicker.vue?cd3e","webpack://photos/./src/components/Albums/AlbumPicker.vue?0644","webpack://photos/./src/components/Albums/AlbumPicker.vue?156d","webpack:///photos/src/components/Actions/ActionDownload.vue","webpack:///photos/src/components/Actions/ActionDownload.vue?vue&type=script&lang=js","webpack://photos/./src/components/Actions/ActionDownload.vue?3d40","webpack://photos/./src/components/Actions/ActionDownload.vue?5329","webpack:///photos/src/views/Timeline.vue","webpack:///photos/src/views/Timeline.vue?vue&type=script&lang=js","webpack://photos/./src/views/Timeline.vue?ed69","webpack://photos/./src/views/Timeline.vue?2f21"],"sourcesContent":["/**\n * @copyright Copyright (c) 2022 Louis Chemineau \n *\n * @author Louis Chemineau \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 .\n *\n */\n\nimport { mapActions } from 'vuex'\n\nimport AbortControllerMixin from './AbortControllerMixin.js'\nimport { fetchCollections } from '../services/collectionFetcher.js'\n\nexport default {\n\tname: 'FetchCollectionsMixin',\n\n\tdata() {\n\t\treturn {\n\t\t\terrorFetchingCollections: null,\n\t\t\tloadingCollections: false,\n\t\t}\n\t},\n\n\tmixins: [\n\t\tAbortControllerMixin,\n\t],\n\n\tmethods: {\n\t\t...mapActions([\n\t\t\t'addCollections',\n\t\t]),\n\n\t\t/**\n\t\t * @param {string} collectionHome\n\t\t * @param {string[]} [extraProps] - Extra properties to add to the DAV request.\n\t\t * @param {import('webdav').WebDAVClient} [client] - The DAV client to use.\n\t\t * @return {Promise}\n\t\t */\n\t\tasync fetchCollections(collectionHome, extraProps, client) {\n\t\t\tif (this.loadingCollections) {\n\t\t\t\treturn []\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tthis.loadingCollections = true\n\t\t\t\tthis.errorFetchingCollections = null\n\n\t\t\t\tconst collections = await fetchCollections(collectionHome, { signal: this.abortController.signal }, extraProps, client)\n\n\t\t\t\tthis.addCollections({ collections })\n\n\t\t\t\treturn collections\n\t\t\t} catch (error) {\n\t\t\t\tif (error.response?.status === 404) {\n\t\t\t\t\tthis.errorFetchingCollections = 404\n\t\t\t\t} else {\n\t\t\t\t\tthis.errorFetchingCollections = error\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tthis.loadingCollections = false\n\t\t\t}\n\n\t\t\treturn []\n\t\t},\n\t},\n}\n","/**\n * @copyright Copyright (c) 2022 Louis Chemineau \n *\n * @author Louis Chemineau \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 .\n *\n */\n\nimport { davGetClient, davRootPath } from '@nextcloud/files'\nimport { joinPaths } from '@nextcloud/paths'\nimport logger from '../services/logger.js'\nimport getPhotos from '../services/PhotoSearch.js'\nimport SemaphoreWithPriority from '../utils/semaphoreWithPriority.js'\nimport AbortControllerMixin from './AbortControllerMixin.js'\nimport store from '../store/index.js'\n\nexport default {\n\tname: 'FetchFilesMixin',\n\n\tmixins: [\n\t\tAbortControllerMixin,\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\terrorFetchingFiles: null,\n\t\t\tloadingFiles: false,\n\t\t\tdoneFetchingFiles: false,\n\t\t\tfetchSemaphore: new SemaphoreWithPriority(1),\n\t\t\tfetchedFileIds: [],\n\t\t}\n\t},\n\n\twatch: {\n\t\t'$route.path'() {\n\t\t\tthis.resetFetchFilesState()\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * @param {object} options - Options to pass to getPhotos.\n\t\t * @param {string[]} [blacklist=[]] - Array of ids to filter out.\n\t\t * @param {boolean} [force=false] - Force fetching even if doneFetchingFiles is true\n\t\t * @return {Promise} - The next batch of data depending on global offset.\n\t\t */\n\t\tasync fetchFiles(options = {}, blacklist = [], force = false) {\n\t\t\tif ((this.doneFetchingFiles && !force) || this.loadingFiles) {\n\t\t\t\treturn []\n\t\t\t}\n\n\t\t\tconst fetchSemaphoreSymbol = await this.fetchSemaphore.acquire()\n\n\t\t\ttry {\n\t\t\t\tthis.errorFetchingFiles = null\n\t\t\t\tthis.loadingFiles = true\n\n\t\t\t\tconst numberOfImagesPerBatch = 200\n\n\t\t\t\t// Load next batch of images\n\t\t\t\tconst fetchedFiles = await getPhotos({\n\t\t\t\t\tfirstResult: this.fetchedFileIds.length,\n\t\t\t\t\tnbResults: numberOfImagesPerBatch,\n\t\t\t\t\t...options,\n\t\t\t\t\tsignal: this.abortController.signal,\n\t\t\t\t})\n\n\t\t\t\t// If we get less files than requested that means we got to the end\n\t\t\t\tif (fetchedFiles.length !== numberOfImagesPerBatch) {\n\t\t\t\t\tthis.doneFetchingFiles = true\n\t\t\t\t}\n\n\t\t\t\tconst fileIds = fetchedFiles\n\t\t\t\t\t.map(file => file.fileid)\n\t\t\t\t\t.filter(fileId => !this.fetchedFileIds.includes(fileId.toString())) // Filter to prevent duplicate fileIds.\n\n\t\t\t\tthis.fetchedFileIds.push(\n\t\t\t\t\t...fileIds\n\t\t\t\t\t\t.map((fileId) => fileId.toString())\n\t\t\t\t\t\t.filter((fileId) => !blacklist.includes(fileId))\n\t\t\t\t)\n\n\t\t\t\tthis.$store.dispatch('appendFiles', fetchedFiles)\n\n\t\t\t\tlogger.debug(`[FetchFilesMixin] Fetched ${fileIds.length} new files: `, fileIds)\n\n\t\t\t\treturn fileIds\n\t\t\t} catch (error) {\n\t\t\t\tif (error.response?.status === 404) {\n\t\t\t\t\tthis.errorFetchingFiles = 404\n\t\t\t\t\tconst source = joinPaths(davRootPath, store.state.userConfig.photosSourceFolder ?? '/Photos') + '/'\n\t\t\t\t\tlogger.debug('Photo source does not exist, creating it.')\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait davGetClient().createDirectory(source)\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tlogger.error('Fail to create source directory', { error })\n\t\t\t\t\t}\n\t\t\t\t} else if (error.code === 'ERR_CANCELED') {\n\t\t\t\t\treturn []\n\t\t\t\t} else {\n\t\t\t\t\tthis.errorFetchingFiles = error\n\t\t\t\t}\n\n\t\t\t\t// cancelled request, moving on...\n\t\t\t\tlogger.error('Error fetching files', { error })\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tthis.loadingFiles = false\n\t\t\t\tthis.fetchSemaphore.release(fetchSemaphoreSymbol)\n\t\t\t}\n\n\t\t\treturn []\n\t\t},\n\n\t\tresetFetchFilesState() {\n\t\t\tthis.doneFetchingFiles = false\n\t\t\tthis.errorFetchingFiles = null\n\t\t\tthis.loadingFiles = false\n\t\t\tthis.fetchedFileIds = []\n\t\t},\n\t},\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \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 .\n *\n */\n\nimport { genFileInfo } from '../utils/fileUtils.js'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { allMimes } from './AllowedMimes.js'\nimport client from './DavClient.js'\nimport { props } from './DavRequest.js'\nimport moment from '@nextcloud/moment'\nimport store from '../store/index.js'\n\n/**\n * List files from a folder and filter out unwanted mimes\n *\n * @param {object} [options] used for the cancellable requests\n * @param {number} [options.firstResult=0] Index of the first result that we want (starts at 0)\n * @param {number} [options.nbResults=200] The number of file to fetch\n * @param {string[]} [options.mimesType=allMimes] Mime type of the files\n * @param {boolean} [options.full=false] get full data of the files\n * @param {boolean} [options.onThisDay=false] get only items from this day of year\n * @param {boolean} [options.onlyFavorites=false] get only favorite items\n * @return {Promise} the file list\n */\nexport default async function(options = {}) {\n\t// default function options\n\toptions = {\n\t\tfirstResult: 0,\n\t\tnbResults: 200,\n\t\tmimesType: allMimes,\n\t\tonThisDay: false,\n\t\tonlyFavorites: false,\n\t\t...options,\n\t}\n\n\tconst prefixPath = `/files/${getCurrentUser().uid}`\n\n\t// generating the search or condition\n\t// based on the allowed mimetypes\n\tconst orMime = options.mimesType.reduce((str, mime) => `${str}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t${mime}\n\t\t\n\t`, '')\n\n\tconst eqFavorites = options.onlyFavorites\n\t\t? `\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t1\n\t\t\t`\n\t\t: ''\n\n\tconst onThisDay = options.onThisDay\n\t\t? `${Array(20).fill(1)\n\t\t\t.map((_, years) => {\n\t\t\t\tconst start = moment(Date.now()).startOf('day').subtract(3, 'd').subtract(years + 1, 'y')\n\t\t\t\tconst end = moment(Date.now()).endOf('day').add(3, 'd').subtract(years + 1, 'y')\n\t\t\t\treturn `\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${start.format(moment.defaultFormatUtc)}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${end.format(moment.defaultFormatUtc)}\n\t\t\t\t\n\t\t\t`\n\t\t\t}).join('\\n')}`\n\t\t: ''\n\n\t// TODO: uncomment when SEARCH on multiple folders is implemented.\n\t// const sourceFolders = store.state.userConfig.photosSourceFolder\n\t// .map(folder => `\n\t// \n\t// ${davRootPath}/${folder}\n\t// infinity\n\t// \n\t// `)\n\t// .join('\\n')\n\n\toptions = Object.assign({\n\t\tmethod: 'SEARCH',\n\t\theaders: {\n\t\t\t'content-Type': 'text/xml',\n\t\t},\n\t\tdata: `\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t${props}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t${prefixPath}/${store.state.userConfig.photosSourceFolder ?? '/Photos'}\n\t\t\t\t\t\t\tinfinity\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t${orMime}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t${eqFavorites}\n\t\t\t\t\t\t\t${onThisDay}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\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\t\n\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\t\n\t\t\t\t\t\t${options.nbResults}\n\t\t\t\t\t\t${options.firstResult}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t`,\n\t\tdeep: true,\n\t\tdetails: true,\n\t}, options)\n\n\tconst response = await client.getDirectoryContents('', options)\n\n\treturn response.data.map(data => genFileInfo(data))\n}\n","/**\n * @copyright Copyright (c) 2022 Louis Chemineau \n *\n * @author Louis Chemineau \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 .\n *\n */\n\nexport default {\n\tname: 'FilesByMonthMixin',\n\n\tcomputed: {\n\t\t/**\n\t\t * @return {Object}\n\t\t */\n\t\tfileIdsByMonth() {\n\t\t\tconst filesByMonth = {}\n\t\t\tfor (const fileId of this.fetchedFileIds) {\n\t\t\t\tconst file = this.files[fileId]\n\t\t\t\tif (file) {\n\t\t\t\t\tfilesByMonth[file.month] = filesByMonth[file.month] ?? []\n\t\t\t\t\tfilesByMonth[file.month].push(file.fileid)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Sort files in sections.\n\t\t\tObject.keys(filesByMonth)\n\t\t\t\t.forEach(month => filesByMonth[month].sort(this.sortFilesByTimestamp))\n\n\t\t\treturn filesByMonth\n\t\t},\n\n\t\t/**\n\t\t * @return {string[]}\n\t\t */\n\t\tmonthsList() {\n\t\t\treturn Object\n\t\t\t\t.keys(this.fileIdsByMonth)\n\t\t\t\t.sort((month1, month2) => month1 > month2 ? -1 : 1)\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * @param {string} fileId1 The first file ID\n\t\t * @param {string} fileId2 The second file ID\n\t\t * @return {-1 | 1}\n\t\t */\n\t\tsortFilesByTimestamp(fileId1, fileId2) {\n\t\t\treturn this.files[fileId1].timestamp > this.files[fileId2].timestamp ? -1 : 1\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, \".album-picker[data-v-20d6fa8c]{padding:32px;padding-top:16px}.album-picker h2[data-v-20d6fa8c]{display:flex;align-items:center;height:60px}.album-picker h2 .loading-icon[data-v-20d6fa8c]{margin-left:32px}.album-picker .albums-container[data-v-20d6fa8c]{min-height:150px;max-height:350px;overflow-x:scroll;padding:2px}.album-picker .albums-container .album[data-v-20d6fa8c] .list-item{padding:8px 16px;box-sizing:border-box}.album-picker .albums-container .album[data-v-20d6fa8c]:not(:last-child){margin-bottom:16px}.album-picker .albums-container .album__image[data-v-20d6fa8c]{width:40px;height:40px;object-fit:none;border-radius:var(--border-radius)}.album-picker .albums-container .album__image--placeholder[data-v-20d6fa8c]{background:var(--color-primary-element-light)}.album-picker .albums-container .album__image--placeholder[data-v-20d6fa8c] .material-design-icon{width:100%;height:100%}.album-picker .albums-container .album__image--placeholder[data-v-20d6fa8c] .material-design-icon .material-design-icon__svg{fill:var(--color-primary-element)}.album-picker .new-album-button[data-v-20d6fa8c]{margin-top:32px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Albums/AlbumPicker.vue\"],\"names\":[],\"mappings\":\"AAEA,+BACC,YAAA,CACA,gBAAA,CAEA,kCACC,YAAA,CACA,kBAAA,CACA,WAAA,CAEA,gDACC,gBAAA,CAIF,iDACC,gBAAA,CACA,gBAAA,CACA,iBAAA,CACA,WAAA,CAIC,mEACC,gBAAA,CACA,qBAAA,CAGD,yEACC,kBAAA,CAGD,+DACC,UAAA,CACA,WAAA,CACA,eAAA,CACA,kCAAA,CAEA,4EACC,6CAAA,CAEA,kGACC,UAAA,CACA,WAAA,CAEA,6HACC,iCAAA,CAQN,iDACC,eAAA\",\"sourcesContent\":[\"$sizes: (\\\"400\\\": (\\\"count\\\": 3, \\\"marginTop\\\": 66, \\\"marginW\\\": 8), \\\"700\\\": (\\\"count\\\": 4, \\\"marginTop\\\": 66, \\\"marginW\\\": 8), \\\"1024\\\": (\\\"count\\\": 5, \\\"marginTop\\\": 66, \\\"marginW\\\": 44), \\\"1280\\\": (\\\"count\\\": 4, \\\"marginTop\\\": 66, \\\"marginW\\\": 44), \\\"1440\\\": (\\\"count\\\": 5, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"1600\\\": (\\\"count\\\": 6, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"2048\\\": (\\\"count\\\": 7, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"2560\\\": (\\\"count\\\": 8, \\\"marginTop\\\": 88, \\\"marginW\\\": 88), \\\"3440\\\": (\\\"count\\\": 9, \\\"marginTop\\\": 88, \\\"marginW\\\": 88), \\\"max\\\": (\\\"count\\\": 10, \\\"marginTop\\\": 88, \\\"marginW\\\": 88));\\n\\n.album-picker {\\n\\tpadding: 32px;\\n\\tpadding-top: 16px;\\n\\n\\th2 {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\theight: 60px;\\n\\n\\t\\t.loading-icon {\\n\\t\\t\\tmargin-left: 32px;\\n\\t\\t}\\n\\t}\\n\\n\\t.albums-container {\\n\\t\\tmin-height: 150px;\\n\\t\\tmax-height: 350px;\\n\\t\\toverflow-x: scroll;\\n\\t\\tpadding: 2px;\\n\\n\\t\\t.album {\\n\\n\\t\\t\\t:deep .list-item {\\n\\t\\t\\t\\tpadding: 8px 16px;\\n\\t\\t\\t\\tbox-sizing: border-box;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&:not(:last-child) {\\n\\t\\t\\t\\tmargin-bottom: 16px;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&__image {\\n\\t\\t\\t\\twidth: 40px;\\n\\t\\t\\t\\theight: 40px;\\n\\t\\t\\t\\tobject-fit: none;\\n\\t\\t\\t\\tborder-radius: var(--border-radius);\\n\\n\\t\\t\\t\\t&--placeholder {\\n\\t\\t\\t\\t\\tbackground: var(--color-primary-element-light);\\n\\n\\t\\t\\t\\t\\t:deep .material-design-icon {\\n\\t\\t\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t\\t\\t\\theight: 100%;\\n\\n\\t\\t\\t\\t\\t\\t.material-design-icon__svg {\\n\\t\\t\\t\\t\\t\\t\\tfill: var(--color-primary-element);\\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\\t.new-album-button {\\n\\t\\tmargin-top: 32px;\\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, \".folder[data-v-a871c74a]{display:flex;gap:16px;min-width:300px}.folder__info[data-v-a871c74a]{display:flex;flex-direction:column;flex-grow:1;justify-content:center}.folder__path[data-v-a871c74a]{font-weight:bold}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Settings/PhotosFolder.vue\"],\"names\":[],\"mappings\":\"AAEA,yBACC,YAAA,CACA,QAAA,CACA,eAAA,CAEA,+BACC,YAAA,CACA,qBAAA,CACA,WAAA,CACA,sBAAA,CAGD,+BACC,gBAAA\",\"sourcesContent\":[\"$sizes: (\\\"400\\\": (\\\"count\\\": 3, \\\"marginTop\\\": 66, \\\"marginW\\\": 8), \\\"700\\\": (\\\"count\\\": 4, \\\"marginTop\\\": 66, \\\"marginW\\\": 8), \\\"1024\\\": (\\\"count\\\": 5, \\\"marginTop\\\": 66, \\\"marginW\\\": 44), \\\"1280\\\": (\\\"count\\\": 4, \\\"marginTop\\\": 66, \\\"marginW\\\": 44), \\\"1440\\\": (\\\"count\\\": 5, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"1600\\\": (\\\"count\\\": 6, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"2048\\\": (\\\"count\\\": 7, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"2560\\\": (\\\"count\\\": 8, \\\"marginTop\\\": 88, \\\"marginW\\\": 88), \\\"3440\\\": (\\\"count\\\": 9, \\\"marginTop\\\": 88, \\\"marginW\\\": 88), \\\"max\\\": (\\\"count\\\": 10, \\\"marginTop\\\": 88, \\\"marginW\\\": 88));\\n\\n.folder {\\n\\tdisplay: flex;\\n\\tgap: 16px;\\n\\tmin-width: 300px;\\n\\n\\t&__info {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tflex-grow: 1;\\n\\t\\tjustify-content: center;\\n\\t}\\n\\n\\t&__path {\\n\\t\\tfont-weight: bold;\\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, \".photos-locations-container[data-v-1b7c4cde]{display:flex;flex-direction:column;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.photos-locations-container .photos-locations[data-v-1b7c4cde]{margin-bottom:16px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Settings/PhotosSourceLocationsSettings.vue\"],\"names\":[],\"mappings\":\"AAEA,6CACC,YAAA,CACA,qBAAA,CACA,yBAAA,CAAA,sBAAA,CAAA,iBAAA,CAEA,+DACC,kBAAA\",\"sourcesContent\":[\"$sizes: (\\\"400\\\": (\\\"count\\\": 3, \\\"marginTop\\\": 66, \\\"marginW\\\": 8), \\\"700\\\": (\\\"count\\\": 4, \\\"marginTop\\\": 66, \\\"marginW\\\": 8), \\\"1024\\\": (\\\"count\\\": 5, \\\"marginTop\\\": 66, \\\"marginW\\\": 44), \\\"1280\\\": (\\\"count\\\": 4, \\\"marginTop\\\": 66, \\\"marginW\\\": 44), \\\"1440\\\": (\\\"count\\\": 5, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"1600\\\": (\\\"count\\\": 6, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"2048\\\": (\\\"count\\\": 7, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"2560\\\": (\\\"count\\\": 8, \\\"marginTop\\\": 88, \\\"marginW\\\": 88), \\\"3440\\\": (\\\"count\\\": 9, \\\"marginTop\\\": 88, \\\"marginW\\\": 88), \\\"max\\\": (\\\"count\\\": 10, \\\"marginTop\\\": 88, \\\"marginW\\\": 88));\\n\\n.photos-locations-container {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\twidth: fit-content;\\n\\n\\t.photos-locations {\\n\\t\\tmargin-bottom: 16px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".timeline[data-v-86bd25c4]{display:flex;flex-direction:column}.timeline__empty-content[data-v-86bd25c4]{height:100%}.timeline__empty-content .empty-content[data-v-86bd25c4]{height:100%}.timeline__empty-content .timeline__update_source_directory[data-v-86bd25c4]{align-items:center}.timeline__empty-content .timeline__update_source_directory[data-v-86bd25c4] .folder{min-width:unset}.timeline__header__left[data-v-86bd25c4]{display:flex;gap:4px}.timeline__heading[data-v-86bd25c4]{padding:calc(var(--default-grid-baseline)*4);margin-bottom:0px;padding-bottom:0px}.timeline__file-list[data-v-86bd25c4]{padding:0 64px}@media only screen and (max-width: 1200px){.timeline__file-list[data-v-86bd25c4]{padding:0 4px}}.timeline__file-list[data-v-86bd25c4] .files-list-viewer__section-header{top:var(--photos-navigation-height)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/views/Timeline.vue\"],\"names\":[],\"mappings\":\"AAEA,2BACC,YAAA,CACA,qBAAA,CAEA,0CACC,WAAA,CAEA,yDACC,WAAA,CAGD,6EACC,kBAAA,CAEA,qFACC,eAAA,CAMF,yCACC,YAAA,CACA,OAAA,CAIF,oCACC,4CAAA,CACA,iBAAA,CACA,kBAAA,CAGD,sCACC,cAAA,CAEA,2CAHD,sCAIE,aAAA,CAAA,CAGD,yEACC,mCAAA\",\"sourcesContent\":[\"$sizes: (\\\"400\\\": (\\\"count\\\": 3, \\\"marginTop\\\": 66, \\\"marginW\\\": 8), \\\"700\\\": (\\\"count\\\": 4, \\\"marginTop\\\": 66, \\\"marginW\\\": 8), \\\"1024\\\": (\\\"count\\\": 5, \\\"marginTop\\\": 66, \\\"marginW\\\": 44), \\\"1280\\\": (\\\"count\\\": 4, \\\"marginTop\\\": 66, \\\"marginW\\\": 44), \\\"1440\\\": (\\\"count\\\": 5, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"1600\\\": (\\\"count\\\": 6, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"2048\\\": (\\\"count\\\": 7, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"2560\\\": (\\\"count\\\": 8, \\\"marginTop\\\": 88, \\\"marginW\\\": 88), \\\"3440\\\": (\\\"count\\\": 9, \\\"marginTop\\\": 88, \\\"marginW\\\": 88), \\\"max\\\": (\\\"count\\\": 10, \\\"marginTop\\\": 88, \\\"marginW\\\": 88));\\n\\n.timeline {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\n\\t&__empty-content {\\n\\t\\theight: 100%;\\n\\n\\t\\t.empty-content {\\n\\t\\t\\theight: 100%;\\n\\t\\t}\\n\\n\\t\\t.timeline__update_source_directory {\\n\\t\\t\\talign-items: center;\\n\\n\\t\\t\\t:deep(.folder) {\\n\\t\\t\\t\\tmin-width: unset;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__header {\\n\\t\\t&__left {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tgap: 4px;\\n\\t\\t}\\n\\t}\\n\\n\\t&__heading {\\n\\t\\tpadding: calc(var(--default-grid-baseline) * 4);\\n\\t\\tmargin-bottom: 0px;\\n\\t\\tpadding-bottom: 0px;\\n\\t}\\n\\n\\t&__file-list {\\n\\t\\tpadding: 0 64px;\\n\\n\\t\\t@media only screen and (max-width: 1200px) {\\n\\t\\t\\tpadding: 0 4px;\\n\\t\\t}\\n\\n\\t\\t:deep .files-list-viewer__section-header {\\n\\t\\t\\ttop: var(--photos-navigation-height);\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ArrowLeft.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ArrowLeft.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ArrowLeft.vue?vue&type=template&id=187c55d7\"\nimport script from \"./ArrowLeft.vue?vue&type=script&lang=js\"\nexport * from \"./ArrowLeft.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon arrow-left-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M20,11V13H8L13.5,18.5L12.08,19.92L4.16,12L12.08,4.08L13.5,5.5L8,11H20Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Download.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Download.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Download.vue?vue&type=template&id=67aea606\"\nimport script from \"./Download.vue?vue&type=script&lang=js\"\nexport * from \"./Download.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon download-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M5,20H19V18H5M19,9H15V3H9V9H5L12,16L19,9Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Folder.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Folder.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Folder.vue?vue&type=template&id=5c04f969\"\nimport script from \"./Folder.vue?vue&type=script&lang=js\"\nexport * from \"./Folder.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon folder-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ImageMultiple.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ImageMultiple.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ImageMultiple.vue?vue&type=template&id=21a95e74\"\nimport script from \"./ImageMultiple.vue?vue&type=script&lang=js\"\nexport * from \"./ImageMultiple.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon image-multiple-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M22,16V4A2,2 0 0,0 20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16M11,12L13.03,14.71L16,11L20,16H8M2,6V20A2,2 0 0,0 4,22H18V20H4V6\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.shouldFavoriteSelection)?_c('NcActionButton',{attrs:{\"close-after-click\":true,\"aria-label\":_vm.t('photos', 'Mark selection as favorite')},on:{\"click\":_vm.favoriteSelection}},[_vm._v(\"\\n\\t\"+_vm._s(_vm.t('photos', 'Add selection to favorites'))+\"\\n\\t\"),_c('Star',{attrs:{\"slot\":\"icon\"},slot:\"icon\"})],1):_c('NcActionButton',{attrs:{\"close-after-click\":true,\"aria-label\":_vm.t('photos', 'Remove selection from favorites')},on:{\"click\":_vm.unFavoriteSelection}},[_vm._v(\"\\n\\t\"+_vm._s(_vm.t('photos', 'Remove selection from favorites'))+\"\\n\\t\"),_c('Star',{attrs:{\"slot\":\"icon\"},slot:\"icon\"})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionFavorite.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!./ActionFavorite.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ActionFavorite.vue?vue&type=template&id=dacc71da\"\nimport script from \"./ActionFavorite.vue?vue&type=script&lang=js\"\nexport * from \"./ActionFavorite.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"folder\"},[(_vm.path === '/')?_c(_vm.rootFolderIcon,{tag:\"component\"}):_c('Folder'),_vm._v(\" \"),_c('span',{staticClass:\"folder__info\"},[_c('div',{staticClass:\"folder__path\"},[_vm._v(_vm._s(_vm.folderName))]),_vm._v(\" \"),(_vm.subname !== '')?_c('div',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.subname)+\"\\n\\t\\t\")]):_vm._e()]),_vm._v(\" \"),(_vm.canDelete)?_c('NcButton',{attrs:{\"type\":\"tertiary\",\"aria-label\":_vm.t('photos', 'Delete source directory')},on:{\"click\":_vm.emitRemoveSourceFolder},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Close',{attrs:{\"size\":20}})]},proxy:true}],null,false,2121748766)}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PhotosFolder.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!./PhotosFolder.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/postcss-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PhotosFolder.vue?vue&type=style&index=0&id=a871c74a&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PhotosFolder.vue?vue&type=style&index=0&id=a871c74a&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./PhotosFolder.vue?vue&type=template&id=a871c74a&scoped=true\"\nimport script from \"./PhotosFolder.vue?vue&type=script&lang=js\"\nexport * from \"./PhotosFolder.vue?vue&type=script&lang=js\"\nimport style0 from \"./PhotosFolder.vue?vue&type=style&index=0&id=a871c74a&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a871c74a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"photos-locations-container\"},[_c('div',{staticClass:\"photos-locations\"},[_c('PhotosFolder',{attrs:{\"path\":_vm.photosSourceFolder,\"root-folder-label\":_vm.t('photos', 'All folders'),\"root-folder-icon\":_vm.FolderMultiple}})],1),_vm._v(\" \"),_c('NcButton',{attrs:{\"aria-label\":_vm.t('photos', 'Choose a Photos source for the timelines')},on:{\"click\":_vm.debounceAddSourceFolder}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('photos', 'Choose a different folder'))+\"\\n\\t\")])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./FolderMultiple.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./FolderMultiple.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FolderMultiple.vue?vue&type=template&id=ee49e6fe\"\nimport script from \"./FolderMultiple.vue?vue&type=script&lang=js\"\nexport * from \"./FolderMultiple.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon folder-multiple-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M22,4H14L12,2H6A2,2 0 0,0 4,4V16A2,2 0 0,0 6,18H22A2,2 0 0,0 24,16V6A2,2 0 0,0 22,4M2,6H0V11H0V20A2,2 0 0,0 2,22H20V20H2V6Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PhotosSourceLocationsSettings.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!./PhotosSourceLocationsSettings.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/postcss-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PhotosSourceLocationsSettings.vue?vue&type=style&index=0&id=1b7c4cde&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PhotosSourceLocationsSettings.vue?vue&type=style&index=0&id=1b7c4cde&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./PhotosSourceLocationsSettings.vue?vue&type=template&id=1b7c4cde&scoped=true\"\nimport script from \"./PhotosSourceLocationsSettings.vue?vue&type=script&lang=js\"\nexport * from \"./PhotosSourceLocationsSettings.vue?vue&type=script&lang=js\"\nimport style0 from \"./PhotosSourceLocationsSettings.vue?vue&type=style&index=0&id=1b7c4cde&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1b7c4cde\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.errorFetchingFiles)?_c('div',{staticClass:\"timeline__empty-content\"},[(_vm.errorFetchingFiles === 404)?_c('NcEmptyContent',{attrs:{\"name\":_vm.t('photos', 'The source folder does not exists')}},[_c('FolderAlertOutline',{attrs:{\"slot\":\"icon\"},slot:\"icon\"}),_vm._v(\" \"),_c('PhotosSourceLocationsSettings',{staticClass:\"timeline__update_source_directory\",attrs:{\"slot\":\"action\"},slot:\"action\"})],1):_c('NcEmptyContent',{attrs:{\"name\":_vm.t('photos', 'An error occurred')}},[_c('AlertCircle',{attrs:{\"slot\":\"icon\"},slot:\"icon\"})],1)],1):_c('div',{staticClass:\"timeline\"},[_c('HeaderNavigation',{key:\"navigation\",attrs:{\"loading\":_vm.loadingCount > 0,\"path\":'/',\"title\":_vm.rootTitle,\"root-title\":_vm.rootTitle},on:{\"refresh\":_vm.resetFetchFilesState}},[_c('div',{staticClass:\"timeline__header__left\"},[(_vm.selectedFileIds.length === 0)?_c('NcActions',{ref:\"addActions\",attrs:{\"force-menu\":true,\"menu-name\":_vm.t('photos', 'Add')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Plus')]},proxy:true}],null,false,1489515321)},[_vm._v(\" \"),_c('NcActionButton',{attrs:{\"close-after-click\":true,\"aria-label\":_vm.t('photos', 'Create new album')},on:{\"click\":function($event){_vm.showAlbumCreationForm = true}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('PlusBoxMultiple')]},proxy:true}],null,false,2640725948)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Create new album'))+\"\\n\\t\\t\\t\\t\\t\")])],1):[_c('NcButton',{attrs:{\"close-after-click\":true,\"type\":\"primary\",\"aria-label\":_vm.t('photos', 'Add to album')},on:{\"click\":function($event){_vm.showAlbumPicker = true}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Plus')]},proxy:true},(!_vm.isMobile)?{key:\"default\",fn:function(){return [_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Add to album'))+\"\\n\\t\\t\\t\\t\\t\")]},proxy:true}:null],null,true)}),_vm._v(\" \"),(_vm.selectedFileIds.length > 0)?_c('NcButton',{attrs:{\"aria-label\":_vm.t('photos', 'Unselect all')},on:{\"click\":_vm.resetSelection},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Close')]},proxy:true},(!_vm.isMobile)?{key:\"default\",fn:function(){return [_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Unselect all'))+\"\\n\\t\\t\\t\\t\\t\")]},proxy:true}:null],null,true)}):_vm._e(),_vm._v(\" \"),_c('NcActions',{attrs:{\"aria-label\":_vm.t('photos', 'Open actions menu')}},[_c('ActionDownload',{attrs:{\"selected-file-ids\":_vm.selectedFileIds,\"title\":_vm.t('photos', 'Download selected files')}},[_c('Download',{attrs:{\"slot\":\"icon\"},slot:\"icon\"})],1),_vm._v(\" \"),_c('ActionFavorite',{attrs:{\"selected-file-ids\":_vm.selectedFileIds}}),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"close-after-click\":true,\"aria-label\":_vm.t('photos', 'Delete selection')},on:{\"click\":_vm.deleteSelection},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Delete')]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Delete selection'))+\"\\n\\t\\t\\t\\t\\t\\t\")])],1)]],2)]),_vm._v(\" \"),_c('FilesListViewer',{ref:\"filesListViewer\",staticClass:\"timeline__file-list\",attrs:{\"container-element\":_vm.appContent,\"file-ids-by-section\":_vm.fileIdsByMonth,\"sections\":_vm.monthsList,\"loading\":_vm.loadingFiles,\"base-height\":_vm.isMobile ? 120 : 200,\"empty-message\":_vm.t('photos', 'No photos or videos in here')},on:{\"need-content\":_vm.getContent},scopedSlots:_vm._u([{key:\"default\",fn:function({file, isHeader, distance}){return [(isHeader)?_c('h2',{staticClass:\"section-header\",attrs:{\"id\":`file-picker-section-header-${file.id}`}},[_c('b',[_vm._v(_vm._s(_vm._f(\"dateMonth\")(file.id)))]),_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm._f(\"dateYear\")(file.id))+\"\\n\\t\\t\\t\")]):_c('File',{attrs:{\"file\":_vm.files[file.id],\"allow-selection\":true,\"selected\":_vm.selection[file.id] === true,\"distance\":distance},on:{\"click\":_vm.openViewer,\"select-toggled\":_vm.onFileSelectToggle}})]}}])}),_vm._v(\" \"),(_vm.showAlbumCreationForm)?_c('NcModal',{key:\"albumCreationForm\",attrs:{\"set-return-focus\":_vm.$refs.addActions?.$refs.menuButton?.$el},on:{\"close\":function($event){_vm.showAlbumCreationForm = false}}},[_c('h2',{staticClass:\"timeline__heading\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('photos', 'New album'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('AlbumForm',{on:{\"done\":function($event){_vm.showAlbumCreationForm = false}}})],1):_vm._e(),_vm._v(\" \"),(_vm.showAlbumPicker)?_c('NcModal',{key:\"albumPicker\",on:{\"close\":function($event){_vm.showAlbumPicker = false}}},[_c('AlbumPicker',{on:{\"album-picked\":_vm.addSelectionToAlbum}})],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./FolderAlertOutline.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./FolderAlertOutline.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FolderAlertOutline.vue?vue&type=template&id=0780345b\"\nimport script from \"./FolderAlertOutline.vue?vue&type=script&lang=js\"\nexport * from \"./FolderAlertOutline.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon folder-alert-outline-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M15,12H17V17H15V12M15,18H17V20H15V18M16,9C17.07,9 18.09,9.24 19,9.67V8H3V18H9.29C9.1,17.36 9,16.69 9,16A7,7 0 0,1 16,9M23,16A7,7 0 0,1 16,23C13.62,23 11.5,21.81 10.25,20H3C1.89,20 1,19.1 1,18V6C1,4.89 1.89,4 3,4H9L11,6H19A2,2 0 0,1 21,8V11.1C22.24,12.36 23,14.09 23,16M16,11A5,5 0 0,0 11,16A5,5 0 0,0 16,21A5,5 0 0,0 21,16A5,5 0 0,0 16,11Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./PlusBoxMultiple.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./PlusBoxMultiple.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./PlusBoxMultiple.vue?vue&type=template&id=5764b316\"\nimport script from \"./PlusBoxMultiple.vue?vue&type=script&lang=js\"\nexport * from \"./PlusBoxMultiple.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon plus-box-multiple-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M19,11H15V15H13V11H9V9H13V5H15V9H19M20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M4,6H2V20A2,2 0 0,0 4,22H18V20H4V6Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlbumPicker.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!./AlbumPicker.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/postcss-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlbumPicker.vue?vue&type=style&index=0&id=20d6fa8c&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlbumPicker.vue?vue&type=style&index=0&id=20d6fa8c&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AlbumPicker.vue?vue&type=template&id=20d6fa8c&scoped=true\"\nimport script from \"./AlbumPicker.vue?vue&type=script&lang=js\"\nexport * from \"./AlbumPicker.vue?vue&type=script&lang=js\"\nimport style0 from \"./AlbumPicker.vue?vue&type=style&index=0&id=20d6fa8c&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"20d6fa8c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (!_vm.showAlbumCreationForm)?_c('div',{staticClass:\"album-picker\"},[_c('h2',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('photos', 'Add to Album'))+\"\\n\\t\\t\"),(_vm.loadingCollections)?_c('NcLoadingIcon',{staticClass:\"loading-icon\"}):_vm._e()],1),_vm._v(\" \"),_c('ul',{staticClass:\"albums-container\"},_vm._l((_vm.allAlbums),function(album){return _c('NcListItem',{key:album.filename,staticClass:\"album\",attrs:{\"name\":_vm.originalName(album),\"aria-label\":_vm.t('photos', 'Add selection to album {albumName}', {albumName: album.basename})},on:{\"click\":function($event){return _vm.pickAlbum(album)}},scopedSlots:_vm._u([{key:\"subname\",fn:function(){return [_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.n('photos', '%n item', '%n photos and videos', album.nbItems))+\"\\n\\t\\t\\t\\t\"),(_vm.isSharedAlbum(album))?[_vm._v(\"\\n\\t\\t\\t\\t\\t⸱ \"+_vm._s(_vm.t('photos', 'Shared by'))+\" \"),_c('NcUserBubble',{attrs:{\"display-name\":album.collaborators[0].label,\"user\":album.collaborators[0].id}})]:_vm._e()]},proxy:true}],null,true)},[_c('template',{slot:\"icon\"},[(album.lastPhoto !== -1)?_c('img',{staticClass:\"album__image\",attrs:{\"src\":_vm._f(\"toCoverUrl\")(album.lastPhoto)}}):_c('div',{staticClass:\"album__image album__image--placeholder\"},[_c('ImageMultiple',{attrs:{\"size\":32}})],1)])],2)}),1),_vm._v(\" \"),_c('NcButton',{staticClass:\"new-album-button\",attrs:{\"aria-label\":_vm.t('photos', 'Create a new album.'),\"type\":\"tertiary\"},on:{\"click\":function($event){_vm.showAlbumCreationForm = true}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Plus')]},proxy:true}],null,false,1489515321)},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('photos', 'Create new album'))+\"\\n\\t\")])],1):_c('AlbumForm',{attrs:{\"display-back-button\":true,\"title\":_vm.t('photos', 'New album')},on:{\"back\":function($event){_vm.showAlbumCreationForm = false},\"done\":_vm.albumCreatedHandler}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionDownload.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!./ActionDownload.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ActionDownload.vue?vue&type=template&id=c26f867a\"\nimport script from \"./ActionDownload.vue?vue&type=script&lang=js\"\nexport * from \"./ActionDownload.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcActionLink',{attrs:{\"close-after-click\":true,\"href\":_vm.downloadUrl,\"download\":_vm.downloadUrl,\"aria-label\":_vm.title}},[_vm._v(\"\\n\\t\"+_vm._s(_vm.title)+\"\\n\\t\"),_vm._t(\"icon\",null,{\"slot\":\"icon\"})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Timeline.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!./Timeline.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/postcss-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Timeline.vue?vue&type=style&index=0&id=86bd25c4&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Timeline.vue?vue&type=style&index=0&id=86bd25c4&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Timeline.vue?vue&type=template&id=86bd25c4&scoped=true\"\nimport script from \"./Timeline.vue?vue&type=script&lang=js\"\nexport * from \"./Timeline.vue?vue&type=script&lang=js\"\nimport style0 from \"./Timeline.vue?vue&type=style&index=0&id=86bd25c4&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"86bd25c4\",\n null\n \n)\n\nexport default component.exports"],"names":["name","data","errorFetchingCollections","loadingCollections","mixins","AbortControllerMixin","methods","mapActions","async","collectionHome","extraProps","client","this","collections","fetchCollections","signal","abortController","addCollections","error","_error$response","response","status","errorFetchingFiles","loadingFiles","doneFetchingFiles","fetchSemaphore","SemaphoreWithPriority","fetchedFileIds","watch","resetFetchFilesState","options","arguments","length","undefined","blacklist","force","fetchSemaphoreSymbol","acquire","numberOfImagesPerBatch","fetchedFiles","_store$state$userConf","firstResult","nbResults","mimesType","allMimes","onThisDay","onlyFavorites","prefixPath","concat","getCurrentUser","uid","orMime","reduce","str","mime","eqFavorites","Array","fill","map","_","years","start","moment","Date","now","startOf","subtract","end","endOf","add","format","join","Object","assign","method","headers","props","store","deep","details","genFileInfo","getPhotos","fileIds","file","fileid","filter","fileId","includes","toString","push","$store","dispatch","logger","source","joinPaths","davRootPath","davGetClient","createDirectory","code","console","release","computed","fileIdsByMonth","filesByMonth","files","_filesByMonth$file$mo","month","keys","forEach","sort","sortFilesByTimestamp","monthsList","month1","month2","fileId1","fileId2","timestamp","___CSS_LOADER_EXPORT___","module","id","emits","title","type","String","fillColor","default","size","Number","_vm","_c","_self","_b","staticClass","attrs","on","$event","$emit","$attrs","_v","_s","_e","components","Star","NcActionButton","selectedFileIds","required","mapGetters","shouldFavoriteSelection","some","favorite","toggleFavoriteForFiles","favoriteState","t","favoriteSelection","slot","unFavoriteSelection","defineComponent","NcButton","Folder","Close","path","canDelete","Boolean","rootFolderLabel","rootFolderIcon","folderName","split","pop","subname","_this$path$match","match","splice","emitRemoveSourceFolder","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_setupProxy","tag","scopedSlots","_u","key","fn","proxy","PhotosFolder","FolderMultiple","photosSourceFolder","state","userConfig","debounceAddSourceFolder","debounce","addSourceFolder","openFilePicker","getFilePickerBuilder","setMultiSelect","setModal","setType","addMimeTypeFilter","allowDirectories","build","pick","pickedFolder","value","removeSourceFolder","index","folders","Plus","ImageMultiple","NcListItem","NcLoadingIcon","NcUserBubble","AlbumForm","filters","toCoverUrl","generateUrl","FetchCollectionsMixin","showAlbumCreationForm","allAlbums","values","albums","sharedAlbums","mounted","fetchAlbumList","_getCurrentUser","_getCurrentUser2","albumCreatedHandler","pickAlbum","album","isSharedAlbum","filename","originalName","basename","replace","RegExp","collaborators","translate","n","translatePlural","_l","albumName","nbItems","label","lastPhoto","_f","NcActionLink","downloadUrl","params","URLSearchParams","filePaths","fileNames","fileName","append","JSON","stringify","_t","Delete","PlusBoxMultiple","Download","FolderAlertOutline","NcEmptyContent","NcModal","NcActions","AlbumPicker","FilesListViewer","File","ActionFavorite","ActionDownload","HeaderNavigation","PhotosSourceLocationsSettings","AlertCircle","dateMonth","date","dateYear","FetchFilesMixin","FilesSelectionMixin","FilesByMonthMixin","isMobile","beforeRouteLeave","to","from","next","window","scrollTo","rootTitle","loadingCount","showAlbumPicker","appContent","document","getElementById","subscribe","configChangedEvent","handleUserConfigChange","destroyed","unsubscribe","getContent","fetchFiles","openViewer","OCA","Viewer","open","fileInfo","list","flat","loadMore","canLoop","openUploader","addFilesToCollection","collectionFileName","fileIdsToAdd","onUncheckFiles","deleteFiles","_ref","_vm$$refs$addActions","_vm$$refs$addActions$","ref","resetSelection","deleteSelection","isHeader","distance","selection","onFileSelectToggle","$refs","addActions","menuButton","$el","addSelectionToAlbum"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"photos-node_modules_vue-material-design-icons_ArrowLeft_vue-src_views_Timeline_vue.js?v=a546c61d13750c359889","mappings":"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","sources":["webpack:///photos/src/mixins/FetchCollectionsMixin.js","webpack:///photos/src/mixins/FetchFilesMixin.js","webpack:///photos/src/services/PhotoSearch.js","webpack:///photos/src/mixins/FilesByMonthMixin.js","webpack:///photos/src/components/Albums/AlbumPicker.vue?vue&type=style&index=0&id=20d6fa8c&prod&lang=scss&scoped=true","webpack:///photos/src/components/Settings/PhotosFolder.vue?vue&type=style&index=0&id=a871c74a&prod&lang=scss&scoped=true","webpack:///photos/src/components/Settings/PhotosSourceLocationsSettings.vue?vue&type=style&index=0&id=05ae8e6c&prod&lang=scss&scoped=true","webpack:///photos/src/views/Timeline.vue?vue&type=style&index=0&id=2068ca0a&prod&lang=scss&scoped=true","webpack:///photos/node_modules/vue-material-design-icons/ArrowLeft.vue","webpack:///photos/node_modules/vue-material-design-icons/ArrowLeft.vue?vue&type=script&lang=js","webpack://photos/./node_modules/vue-material-design-icons/ArrowLeft.vue?f857","webpack:///photos/node_modules/vue-material-design-icons/ArrowLeft.vue?vue&type=template&id=187c55d7","webpack:///photos/node_modules/vue-material-design-icons/Download.vue","webpack:///photos/node_modules/vue-material-design-icons/Download.vue?vue&type=script&lang=js","webpack://photos/./node_modules/vue-material-design-icons/Download.vue?b226","webpack:///photos/node_modules/vue-material-design-icons/Download.vue?vue&type=template&id=67aea606","webpack:///photos/node_modules/vue-material-design-icons/Folder.vue","webpack:///photos/node_modules/vue-material-design-icons/Folder.vue?vue&type=script&lang=js","webpack://photos/./node_modules/vue-material-design-icons/Folder.vue?b60e","webpack:///photos/node_modules/vue-material-design-icons/Folder.vue?vue&type=template&id=5c04f969","webpack:///photos/node_modules/vue-material-design-icons/ImageMultiple.vue","webpack:///photos/node_modules/vue-material-design-icons/ImageMultiple.vue?vue&type=script&lang=js","webpack://photos/./node_modules/vue-material-design-icons/ImageMultiple.vue?126d","webpack:///photos/node_modules/vue-material-design-icons/ImageMultiple.vue?vue&type=template&id=21a95e74","webpack://photos/./src/components/Actions/ActionFavorite.vue?537d","webpack:///photos/src/components/Actions/ActionFavorite.vue","webpack:///photos/src/components/Actions/ActionFavorite.vue?vue&type=script&lang=js","webpack://photos/./src/components/Actions/ActionFavorite.vue?4be4","webpack://photos/./src/components/Settings/PhotosFolder.vue?2e9c","webpack:///photos/src/components/Settings/PhotosFolder.vue","webpack:///photos/src/components/Settings/PhotosFolder.vue?vue&type=script&lang=js","webpack://photos/./src/components/Settings/PhotosFolder.vue?3e32","webpack://photos/./src/components/Settings/PhotosFolder.vue?220c","webpack://photos/./src/components/Settings/PhotosSourceLocationsSettings.vue?331c","webpack:///photos/node_modules/vue-material-design-icons/FolderMultiple.vue","webpack:///photos/node_modules/vue-material-design-icons/FolderMultiple.vue?vue&type=script&lang=js","webpack://photos/./node_modules/vue-material-design-icons/FolderMultiple.vue?101d","webpack:///photos/node_modules/vue-material-design-icons/FolderMultiple.vue?vue&type=template&id=ee49e6fe","webpack:///photos/src/components/Settings/PhotosSourceLocationsSettings.vue","webpack:///photos/src/components/Settings/PhotosSourceLocationsSettings.vue?vue&type=script&lang=js","webpack://photos/./src/components/Settings/PhotosSourceLocationsSettings.vue?0fb6","webpack://photos/./src/components/Settings/PhotosSourceLocationsSettings.vue?29a8","webpack://photos/./src/views/Timeline.vue?f67a","webpack:///photos/node_modules/vue-material-design-icons/FolderAlertOutline.vue","webpack:///photos/node_modules/vue-material-design-icons/FolderAlertOutline.vue?vue&type=script&lang=js","webpack://photos/./node_modules/vue-material-design-icons/FolderAlertOutline.vue?41a0","webpack:///photos/node_modules/vue-material-design-icons/FolderAlertOutline.vue?vue&type=template&id=0780345b","webpack:///photos/node_modules/vue-material-design-icons/PlusBoxMultiple.vue","webpack:///photos/node_modules/vue-material-design-icons/PlusBoxMultiple.vue?vue&type=script&lang=js","webpack://photos/./node_modules/vue-material-design-icons/PlusBoxMultiple.vue?d86c","webpack:///photos/node_modules/vue-material-design-icons/PlusBoxMultiple.vue?vue&type=template&id=5764b316","webpack:///photos/src/components/Albums/AlbumPicker.vue","webpack:///photos/src/components/Albums/AlbumPicker.vue?vue&type=script&lang=js","webpack://photos/./src/components/Albums/AlbumPicker.vue?cd3e","webpack://photos/./src/components/Albums/AlbumPicker.vue?0644","webpack://photos/./src/components/Albums/AlbumPicker.vue?156d","webpack:///photos/src/components/Actions/ActionDownload.vue","webpack:///photos/src/components/Actions/ActionDownload.vue?vue&type=script&lang=js","webpack://photos/./src/components/Actions/ActionDownload.vue?3d40","webpack://photos/./src/components/Actions/ActionDownload.vue?5329","webpack:///photos/src/views/Timeline.vue","webpack:///photos/src/views/Timeline.vue?vue&type=script&lang=js","webpack://photos/./src/views/Timeline.vue?2d72","webpack://photos/./src/views/Timeline.vue?2f21"],"sourcesContent":["/**\n * @copyright Copyright (c) 2022 Louis Chemineau \n *\n * @author Louis Chemineau \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 .\n *\n */\n\nimport { mapActions } from 'vuex'\n\nimport AbortControllerMixin from './AbortControllerMixin.js'\nimport { fetchCollections } from '../services/collectionFetcher.js'\n\nexport default {\n\tname: 'FetchCollectionsMixin',\n\n\tdata() {\n\t\treturn {\n\t\t\terrorFetchingCollections: null,\n\t\t\tloadingCollections: false,\n\t\t}\n\t},\n\n\tmixins: [\n\t\tAbortControllerMixin,\n\t],\n\n\tmethods: {\n\t\t...mapActions([\n\t\t\t'addCollections',\n\t\t]),\n\n\t\t/**\n\t\t * @param {string} collectionHome\n\t\t * @param {string[]} [extraProps] - Extra properties to add to the DAV request.\n\t\t * @param {import('webdav').WebDAVClient} [client] - The DAV client to use.\n\t\t * @return {Promise}\n\t\t */\n\t\tasync fetchCollections(collectionHome, extraProps, client) {\n\t\t\tif (this.loadingCollections) {\n\t\t\t\treturn []\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tthis.loadingCollections = true\n\t\t\t\tthis.errorFetchingCollections = null\n\n\t\t\t\tconst collections = await fetchCollections(collectionHome, { signal: this.abortController.signal }, extraProps, client)\n\n\t\t\t\tthis.addCollections({ collections })\n\n\t\t\t\treturn collections\n\t\t\t} catch (error) {\n\t\t\t\tif (error.response?.status === 404) {\n\t\t\t\t\tthis.errorFetchingCollections = 404\n\t\t\t\t} else {\n\t\t\t\t\tthis.errorFetchingCollections = error\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tthis.loadingCollections = false\n\t\t\t}\n\n\t\t\treturn []\n\t\t},\n\t},\n}\n","/**\n * @copyright Copyright (c) 2022 Louis Chemineau \n *\n * @author Louis Chemineau \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 .\n *\n */\n\nimport { davGetClient, davRootPath } from '@nextcloud/files'\nimport { joinPaths } from '@nextcloud/paths'\nimport logger from '../services/logger.js'\nimport getPhotos from '../services/PhotoSearch.js'\nimport SemaphoreWithPriority from '../utils/semaphoreWithPriority.js'\nimport AbortControllerMixin from './AbortControllerMixin.js'\nimport store from '../store/index.js'\n\nexport default {\n\tname: 'FetchFilesMixin',\n\n\tmixins: [\n\t\tAbortControllerMixin,\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\terrorFetchingFiles: null,\n\t\t\tloadingFiles: false,\n\t\t\tdoneFetchingFiles: false,\n\t\t\tfetchSemaphore: new SemaphoreWithPriority(1),\n\t\t\tfetchedFileIds: [],\n\t\t}\n\t},\n\n\twatch: {\n\t\t'$route.path'() {\n\t\t\tthis.resetFetchFilesState()\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * @param {object} options - Options to pass to getPhotos.\n\t\t * @param {string[]} [blacklist=[]] - Array of ids to filter out.\n\t\t * @param {boolean} [force=false] - Force fetching even if doneFetchingFiles is true\n\t\t * @return {Promise} - The next batch of data depending on global offset.\n\t\t */\n\t\tasync fetchFiles(options = {}, blacklist = [], force = false) {\n\t\t\tif ((this.doneFetchingFiles && !force) || this.loadingFiles) {\n\t\t\t\treturn []\n\t\t\t}\n\n\t\t\tconst fetchSemaphoreSymbol = await this.fetchSemaphore.acquire()\n\n\t\t\ttry {\n\t\t\t\tthis.errorFetchingFiles = null\n\t\t\t\tthis.loadingFiles = true\n\n\t\t\t\tconst numberOfImagesPerBatch = 200\n\n\t\t\t\t// Load next batch of images\n\t\t\t\tconst fetchedFiles = await getPhotos({\n\t\t\t\t\tfirstResult: this.fetchedFileIds.length,\n\t\t\t\t\tnbResults: numberOfImagesPerBatch,\n\t\t\t\t\t...options,\n\t\t\t\t\tsignal: this.abortController.signal,\n\t\t\t\t})\n\n\t\t\t\t// If we get less files than requested that means we got to the end\n\t\t\t\tif (fetchedFiles.length !== numberOfImagesPerBatch) {\n\t\t\t\t\tthis.doneFetchingFiles = true\n\t\t\t\t}\n\n\t\t\t\tconst fileIds = fetchedFiles\n\t\t\t\t\t.map(file => file.fileid)\n\t\t\t\t\t.filter(fileId => !this.fetchedFileIds.includes(fileId.toString())) // Filter to prevent duplicate fileIds.\n\n\t\t\t\tthis.fetchedFileIds.push(\n\t\t\t\t\t...fileIds\n\t\t\t\t\t\t.map((fileId) => fileId.toString())\n\t\t\t\t\t\t.filter((fileId) => !blacklist.includes(fileId))\n\t\t\t\t)\n\n\t\t\t\tthis.$store.dispatch('appendFiles', fetchedFiles)\n\n\t\t\t\tlogger.debug(`[FetchFilesMixin] Fetched ${fileIds.length} new files: `, fileIds)\n\n\t\t\t\treturn fileIds\n\t\t\t} catch (error) {\n\t\t\t\tif (error.response?.status === 404) {\n\t\t\t\t\tconst sources = store.state.userConfig.photosSourceFolders\n\t\t\t\t\tfor (const source of sources) {\n\t\t\t\t\t\tif (error.response?.data?.match(`File with name /${source} could not be located`) === null) {\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlogger.debug(`The ${source} folder does not exist, creating it.`)\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait davGetClient().createDirectory(joinPaths(davRootPath, source))\n\t\t\t\t\t\t\tthis.resetFetchFilesState()\n\t\t\t\t\t\t\treturn []\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\tthis.errorFetchingFiles = 404\n\t\t\t\t\t\t\tlogger.error('Fail to create source directory', { error })\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if (error.code === 'ERR_CANCELED') {\n\t\t\t\t\treturn []\n\t\t\t\t} else {\n\t\t\t\t\tthis.errorFetchingFiles = error\n\t\t\t\t}\n\n\t\t\t\t// cancelled request, moving on...\n\t\t\t\tlogger.error('Error fetching files', { error })\n\t\t\t} finally {\n\t\t\t\tthis.loadingFiles = false\n\t\t\t\tthis.fetchSemaphore.release(fetchSemaphoreSymbol)\n\t\t\t}\n\n\t\t\treturn []\n\t\t},\n\n\t\tresetFetchFilesState() {\n\t\t\tthis.doneFetchingFiles = false\n\t\t\tthis.errorFetchingFiles = null\n\t\t\tthis.loadingFiles = false\n\t\t\tthis.fetchedFileIds = []\n\t\t},\n\t},\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \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 .\n *\n */\n\nimport { genFileInfo } from '../utils/fileUtils.js'\nimport { allMimes } from './AllowedMimes.js'\nimport client from './DavClient.js'\nimport { props } from './DavRequest.js'\nimport moment from '@nextcloud/moment'\nimport store from '../store/index.js'\nimport { davRootPath } from '@nextcloud/files'\nimport { joinPaths } from '@nextcloud/paths'\n\n/**\n * List files from a folder and filter out unwanted mimes\n *\n * @param {object} [options] used for the cancellable requests\n * @param {number} [options.firstResult=0] Index of the first result that we want (starts at 0)\n * @param {number} [options.nbResults=200] The number of file to fetch\n * @param {string[]} [options.mimesType=allMimes] Mime type of the files\n * @param {boolean} [options.full=false] get full data of the files\n * @param {boolean} [options.onThisDay=false] get only items from this day of year\n * @param {boolean} [options.onlyFavorites=false] get only favorite items\n * @return {Promise} the file list\n */\nexport default async function(options = {}) {\n\t// default function options\n\toptions = {\n\t\tfirstResult: 0,\n\t\tnbResults: 200,\n\t\tmimesType: allMimes,\n\t\tonThisDay: false,\n\t\tonlyFavorites: false,\n\t\t...options,\n\t}\n\n\t// generating the search or condition\n\t// based on the allowed mimetypes\n\tconst orMime = options.mimesType.reduce((str, mime) => `${str}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t${mime}\n\t\t\n\t`, '')\n\n\tconst eqFavorites = options.onlyFavorites\n\t\t? `\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t1\n\t\t\t`\n\t\t: ''\n\n\tconst onThisDay = options.onThisDay\n\t\t? `${Array(20).fill(1)\n\t\t\t.map((_, years) => {\n\t\t\t\tconst start = moment(Date.now()).startOf('day').subtract(3, 'd').subtract(years + 1, 'y')\n\t\t\t\tconst end = moment(Date.now()).endOf('day').add(3, 'd').subtract(years + 1, 'y')\n\t\t\t\treturn `\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${start.format(moment.defaultFormatUtc)}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${end.format(moment.defaultFormatUtc)}\n\t\t\t\t\n\t\t\t`\n\t\t\t}).join('\\n')}`\n\t\t: ''\n\n\tconst sourceFolders = store.state.userConfig.photosSourceFolders\n\t\t.map(folder => `\n\t\t\t\n\t\t\t\t${joinPaths(davRootPath, folder)}\n\t\t\t\tinfinity\n\t\t\t`\n\t\t)\n\t\t.join('\\n')\n\n\toptions = Object.assign({\n\t\tmethod: 'SEARCH',\n\t\theaders: {\n\t\t\t'content-Type': 'text/xml',\n\t\t},\n\t\tdata: `\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t${props}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t${sourceFolders}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t${orMime}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t${eqFavorites}\n\t\t\t\t\t\t\t${onThisDay}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\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\t\n\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\t\n\t\t\t\t\t\t${options.nbResults}\n\t\t\t\t\t\t${options.firstResult}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t`,\n\t\tdeep: true,\n\t\tdetails: true,\n\t}, options)\n\n\tconst response = await client.getDirectoryContents('', options)\n\n\treturn response.data.map(data => genFileInfo(data))\n}\n","/**\n * @copyright Copyright (c) 2022 Louis Chemineau \n *\n * @author Louis Chemineau \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 .\n *\n */\n\nexport default {\n\tname: 'FilesByMonthMixin',\n\n\tcomputed: {\n\t\t/**\n\t\t * @return {Object}\n\t\t */\n\t\tfileIdsByMonth() {\n\t\t\tconst filesByMonth = {}\n\t\t\tfor (const fileId of this.fetchedFileIds) {\n\t\t\t\tconst file = this.files[fileId]\n\t\t\t\tif (file) {\n\t\t\t\t\tfilesByMonth[file.month] = filesByMonth[file.month] ?? []\n\t\t\t\t\tfilesByMonth[file.month].push(file.fileid)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Sort files in sections.\n\t\t\tObject.keys(filesByMonth)\n\t\t\t\t.forEach(month => filesByMonth[month].sort(this.sortFilesByTimestamp))\n\n\t\t\treturn filesByMonth\n\t\t},\n\n\t\t/**\n\t\t * @return {string[]}\n\t\t */\n\t\tmonthsList() {\n\t\t\treturn Object\n\t\t\t\t.keys(this.fileIdsByMonth)\n\t\t\t\t.sort((month1, month2) => month1 > month2 ? -1 : 1)\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * @param {string} fileId1 The first file ID\n\t\t * @param {string} fileId2 The second file ID\n\t\t * @return {-1 | 1}\n\t\t */\n\t\tsortFilesByTimestamp(fileId1, fileId2) {\n\t\t\treturn this.files[fileId1].timestamp > this.files[fileId2].timestamp ? -1 : 1\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, \".album-picker[data-v-20d6fa8c]{padding:32px;padding-top:16px}.album-picker h2[data-v-20d6fa8c]{display:flex;align-items:center;height:60px}.album-picker h2 .loading-icon[data-v-20d6fa8c]{margin-left:32px}.album-picker .albums-container[data-v-20d6fa8c]{min-height:150px;max-height:350px;overflow-x:scroll;padding:2px}.album-picker .albums-container .album[data-v-20d6fa8c] .list-item{padding:8px 16px;box-sizing:border-box}.album-picker .albums-container .album[data-v-20d6fa8c]:not(:last-child){margin-bottom:16px}.album-picker .albums-container .album__image[data-v-20d6fa8c]{width:40px;height:40px;object-fit:none;border-radius:var(--border-radius)}.album-picker .albums-container .album__image--placeholder[data-v-20d6fa8c]{background:var(--color-primary-element-light)}.album-picker .albums-container .album__image--placeholder[data-v-20d6fa8c] .material-design-icon{width:100%;height:100%}.album-picker .albums-container .album__image--placeholder[data-v-20d6fa8c] .material-design-icon .material-design-icon__svg{fill:var(--color-primary-element)}.album-picker .new-album-button[data-v-20d6fa8c]{margin-top:32px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Albums/AlbumPicker.vue\"],\"names\":[],\"mappings\":\"AAEA,+BACC,YAAA,CACA,gBAAA,CAEA,kCACC,YAAA,CACA,kBAAA,CACA,WAAA,CAEA,gDACC,gBAAA,CAIF,iDACC,gBAAA,CACA,gBAAA,CACA,iBAAA,CACA,WAAA,CAIC,mEACC,gBAAA,CACA,qBAAA,CAGD,yEACC,kBAAA,CAGD,+DACC,UAAA,CACA,WAAA,CACA,eAAA,CACA,kCAAA,CAEA,4EACC,6CAAA,CAEA,kGACC,UAAA,CACA,WAAA,CAEA,6HACC,iCAAA,CAQN,iDACC,eAAA\",\"sourcesContent\":[\"$sizes: (\\\"400\\\": (\\\"count\\\": 3, \\\"marginTop\\\": 66, \\\"marginW\\\": 8), \\\"700\\\": (\\\"count\\\": 4, \\\"marginTop\\\": 66, \\\"marginW\\\": 8), \\\"1024\\\": (\\\"count\\\": 5, \\\"marginTop\\\": 66, \\\"marginW\\\": 44), \\\"1280\\\": (\\\"count\\\": 4, \\\"marginTop\\\": 66, \\\"marginW\\\": 44), \\\"1440\\\": (\\\"count\\\": 5, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"1600\\\": (\\\"count\\\": 6, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"2048\\\": (\\\"count\\\": 7, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"2560\\\": (\\\"count\\\": 8, \\\"marginTop\\\": 88, \\\"marginW\\\": 88), \\\"3440\\\": (\\\"count\\\": 9, \\\"marginTop\\\": 88, \\\"marginW\\\": 88), \\\"max\\\": (\\\"count\\\": 10, \\\"marginTop\\\": 88, \\\"marginW\\\": 88));\\n\\n.album-picker {\\n\\tpadding: 32px;\\n\\tpadding-top: 16px;\\n\\n\\th2 {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\theight: 60px;\\n\\n\\t\\t.loading-icon {\\n\\t\\t\\tmargin-left: 32px;\\n\\t\\t}\\n\\t}\\n\\n\\t.albums-container {\\n\\t\\tmin-height: 150px;\\n\\t\\tmax-height: 350px;\\n\\t\\toverflow-x: scroll;\\n\\t\\tpadding: 2px;\\n\\n\\t\\t.album {\\n\\n\\t\\t\\t:deep .list-item {\\n\\t\\t\\t\\tpadding: 8px 16px;\\n\\t\\t\\t\\tbox-sizing: border-box;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&:not(:last-child) {\\n\\t\\t\\t\\tmargin-bottom: 16px;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&__image {\\n\\t\\t\\t\\twidth: 40px;\\n\\t\\t\\t\\theight: 40px;\\n\\t\\t\\t\\tobject-fit: none;\\n\\t\\t\\t\\tborder-radius: var(--border-radius);\\n\\n\\t\\t\\t\\t&--placeholder {\\n\\t\\t\\t\\t\\tbackground: var(--color-primary-element-light);\\n\\n\\t\\t\\t\\t\\t:deep .material-design-icon {\\n\\t\\t\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t\\t\\t\\theight: 100%;\\n\\n\\t\\t\\t\\t\\t\\t.material-design-icon__svg {\\n\\t\\t\\t\\t\\t\\t\\tfill: var(--color-primary-element);\\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\\t.new-album-button {\\n\\t\\tmargin-top: 32px;\\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, \".folder[data-v-a871c74a]{display:flex;gap:16px;min-width:300px}.folder__info[data-v-a871c74a]{display:flex;flex-direction:column;flex-grow:1;justify-content:center}.folder__path[data-v-a871c74a]{font-weight:bold}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Settings/PhotosFolder.vue\"],\"names\":[],\"mappings\":\"AAEA,yBACC,YAAA,CACA,QAAA,CACA,eAAA,CAEA,+BACC,YAAA,CACA,qBAAA,CACA,WAAA,CACA,sBAAA,CAGD,+BACC,gBAAA\",\"sourcesContent\":[\"$sizes: (\\\"400\\\": (\\\"count\\\": 3, \\\"marginTop\\\": 66, \\\"marginW\\\": 8), \\\"700\\\": (\\\"count\\\": 4, \\\"marginTop\\\": 66, \\\"marginW\\\": 8), \\\"1024\\\": (\\\"count\\\": 5, \\\"marginTop\\\": 66, \\\"marginW\\\": 44), \\\"1280\\\": (\\\"count\\\": 4, \\\"marginTop\\\": 66, \\\"marginW\\\": 44), \\\"1440\\\": (\\\"count\\\": 5, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"1600\\\": (\\\"count\\\": 6, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"2048\\\": (\\\"count\\\": 7, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"2560\\\": (\\\"count\\\": 8, \\\"marginTop\\\": 88, \\\"marginW\\\": 88), \\\"3440\\\": (\\\"count\\\": 9, \\\"marginTop\\\": 88, \\\"marginW\\\": 88), \\\"max\\\": (\\\"count\\\": 10, \\\"marginTop\\\": 88, \\\"marginW\\\": 88));\\n\\n.folder {\\n\\tdisplay: flex;\\n\\tgap: 16px;\\n\\tmin-width: 300px;\\n\\n\\t&__info {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tflex-grow: 1;\\n\\t\\tjustify-content: center;\\n\\t}\\n\\n\\t&__path {\\n\\t\\tfont-weight: bold;\\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, \".photos-locations-container[data-v-05ae8e6c]{display:flex;flex-direction:column;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.photos-locations-container .photos-locations[data-v-05ae8e6c]{margin-bottom:16px}.photos-locations-container .photos-locations li[data-v-05ae8e6c]{list-style:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Settings/PhotosSourceLocationsSettings.vue\"],\"names\":[],\"mappings\":\"AAEA,6CACC,YAAA,CACA,qBAAA,CACA,yBAAA,CAAA,sBAAA,CAAA,iBAAA,CAEA,+DACC,kBAAA,CAEA,kEACC,eAAA\",\"sourcesContent\":[\"$sizes: (\\\"400\\\": (\\\"count\\\": 3, \\\"marginTop\\\": 66, \\\"marginW\\\": 8), \\\"700\\\": (\\\"count\\\": 4, \\\"marginTop\\\": 66, \\\"marginW\\\": 8), \\\"1024\\\": (\\\"count\\\": 5, \\\"marginTop\\\": 66, \\\"marginW\\\": 44), \\\"1280\\\": (\\\"count\\\": 4, \\\"marginTop\\\": 66, \\\"marginW\\\": 44), \\\"1440\\\": (\\\"count\\\": 5, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"1600\\\": (\\\"count\\\": 6, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"2048\\\": (\\\"count\\\": 7, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"2560\\\": (\\\"count\\\": 8, \\\"marginTop\\\": 88, \\\"marginW\\\": 88), \\\"3440\\\": (\\\"count\\\": 9, \\\"marginTop\\\": 88, \\\"marginW\\\": 88), \\\"max\\\": (\\\"count\\\": 10, \\\"marginTop\\\": 88, \\\"marginW\\\": 88));\\n\\n.photos-locations-container {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\twidth: fit-content;\\n\\n\\t.photos-locations {\\n\\t\\tmargin-bottom: 16px;\\n\\n\\t\\tli {\\n\\t\\t\\tlist-style: none;\\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, \".timeline[data-v-2068ca0a]{display:flex;flex-direction:column}.timeline__empty-content[data-v-2068ca0a]{height:100%}.timeline__empty-content .empty-content[data-v-2068ca0a]{height:100%}.timeline__empty-content .timeline__update_source_directory[data-v-2068ca0a]{align-items:center}.timeline__empty-content .timeline__update_source_directory[data-v-2068ca0a] .folder{min-width:unset}.timeline__header__left[data-v-2068ca0a]{display:flex;gap:4px}.timeline__heading[data-v-2068ca0a]{padding:calc(var(--default-grid-baseline)*4);margin-bottom:0px;padding-bottom:0px}.timeline__file-list[data-v-2068ca0a]{padding:0 64px}@media only screen and (max-width: 1200px){.timeline__file-list[data-v-2068ca0a]{padding:0 4px}}.timeline__file-list[data-v-2068ca0a] .files-list-viewer__section-header{top:var(--photos-navigation-height)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/views/Timeline.vue\"],\"names\":[],\"mappings\":\"AAEA,2BACC,YAAA,CACA,qBAAA,CAEA,0CACC,WAAA,CAEA,yDACC,WAAA,CAGD,6EACC,kBAAA,CAEA,qFACC,eAAA,CAMF,yCACC,YAAA,CACA,OAAA,CAIF,oCACC,4CAAA,CACA,iBAAA,CACA,kBAAA,CAGD,sCACC,cAAA,CAEA,2CAHD,sCAIE,aAAA,CAAA,CAGD,yEACC,mCAAA\",\"sourcesContent\":[\"$sizes: (\\\"400\\\": (\\\"count\\\": 3, \\\"marginTop\\\": 66, \\\"marginW\\\": 8), \\\"700\\\": (\\\"count\\\": 4, \\\"marginTop\\\": 66, \\\"marginW\\\": 8), \\\"1024\\\": (\\\"count\\\": 5, \\\"marginTop\\\": 66, \\\"marginW\\\": 44), \\\"1280\\\": (\\\"count\\\": 4, \\\"marginTop\\\": 66, \\\"marginW\\\": 44), \\\"1440\\\": (\\\"count\\\": 5, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"1600\\\": (\\\"count\\\": 6, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"2048\\\": (\\\"count\\\": 7, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"2560\\\": (\\\"count\\\": 8, \\\"marginTop\\\": 88, \\\"marginW\\\": 88), \\\"3440\\\": (\\\"count\\\": 9, \\\"marginTop\\\": 88, \\\"marginW\\\": 88), \\\"max\\\": (\\\"count\\\": 10, \\\"marginTop\\\": 88, \\\"marginW\\\": 88));\\n\\n.timeline {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\n\\t&__empty-content {\\n\\t\\theight: 100%;\\n\\n\\t\\t.empty-content {\\n\\t\\t\\theight: 100%;\\n\\t\\t}\\n\\n\\t\\t.timeline__update_source_directory {\\n\\t\\t\\talign-items: center;\\n\\n\\t\\t\\t:deep(.folder) {\\n\\t\\t\\t\\tmin-width: unset;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__header {\\n\\t\\t&__left {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tgap: 4px;\\n\\t\\t}\\n\\t}\\n\\n\\t&__heading {\\n\\t\\tpadding: calc(var(--default-grid-baseline) * 4);\\n\\t\\tmargin-bottom: 0px;\\n\\t\\tpadding-bottom: 0px;\\n\\t}\\n\\n\\t&__file-list {\\n\\t\\tpadding: 0 64px;\\n\\n\\t\\t@media only screen and (max-width: 1200px) {\\n\\t\\t\\tpadding: 0 4px;\\n\\t\\t}\\n\\n\\t\\t:deep .files-list-viewer__section-header {\\n\\t\\t\\ttop: var(--photos-navigation-height);\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ArrowLeft.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ArrowLeft.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ArrowLeft.vue?vue&type=template&id=187c55d7\"\nimport script from \"./ArrowLeft.vue?vue&type=script&lang=js\"\nexport * from \"./ArrowLeft.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon arrow-left-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M20,11V13H8L13.5,18.5L12.08,19.92L4.16,12L12.08,4.08L13.5,5.5L8,11H20Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Download.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Download.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Download.vue?vue&type=template&id=67aea606\"\nimport script from \"./Download.vue?vue&type=script&lang=js\"\nexport * from \"./Download.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon download-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M5,20H19V18H5M19,9H15V3H9V9H5L12,16L19,9Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Folder.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Folder.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Folder.vue?vue&type=template&id=5c04f969\"\nimport script from \"./Folder.vue?vue&type=script&lang=js\"\nexport * from \"./Folder.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon folder-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ImageMultiple.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ImageMultiple.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ImageMultiple.vue?vue&type=template&id=21a95e74\"\nimport script from \"./ImageMultiple.vue?vue&type=script&lang=js\"\nexport * from \"./ImageMultiple.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon image-multiple-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M22,16V4A2,2 0 0,0 20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16M11,12L13.03,14.71L16,11L20,16H8M2,6V20A2,2 0 0,0 4,22H18V20H4V6\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.shouldFavoriteSelection)?_c('NcActionButton',{attrs:{\"close-after-click\":true,\"aria-label\":_vm.t('photos', 'Mark selection as favorite')},on:{\"click\":_vm.favoriteSelection}},[_vm._v(\"\\n\\t\"+_vm._s(_vm.t('photos', 'Add selection to favorites'))+\"\\n\\t\"),_c('Star',{attrs:{\"slot\":\"icon\"},slot:\"icon\"})],1):_c('NcActionButton',{attrs:{\"close-after-click\":true,\"aria-label\":_vm.t('photos', 'Remove selection from favorites')},on:{\"click\":_vm.unFavoriteSelection}},[_vm._v(\"\\n\\t\"+_vm._s(_vm.t('photos', 'Remove selection from favorites'))+\"\\n\\t\"),_c('Star',{attrs:{\"slot\":\"icon\"},slot:\"icon\"})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionFavorite.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!./ActionFavorite.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ActionFavorite.vue?vue&type=template&id=dacc71da\"\nimport script from \"./ActionFavorite.vue?vue&type=script&lang=js\"\nexport * from \"./ActionFavorite.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"folder\"},[(_vm.path === '/')?_c(_vm.rootFolderIcon,{tag:\"component\"}):_c('Folder'),_vm._v(\" \"),_c('span',{staticClass:\"folder__info\"},[_c('div',{staticClass:\"folder__path\"},[_vm._v(_vm._s(_vm.folderName))]),_vm._v(\" \"),(_vm.subname !== '')?_c('div',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.subname)+\"\\n\\t\\t\")]):_vm._e()]),_vm._v(\" \"),(_vm.canDelete)?_c('NcButton',{attrs:{\"type\":\"tertiary\",\"aria-label\":_vm.t('photos', 'Delete source directory')},on:{\"click\":_vm.emitRemoveSourceFolder},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Close',{attrs:{\"size\":20}})]},proxy:true}],null,false,2121748766)}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PhotosFolder.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!./PhotosFolder.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/postcss-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PhotosFolder.vue?vue&type=style&index=0&id=a871c74a&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PhotosFolder.vue?vue&type=style&index=0&id=a871c74a&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./PhotosFolder.vue?vue&type=template&id=a871c74a&scoped=true\"\nimport script from \"./PhotosFolder.vue?vue&type=script&lang=js\"\nexport * from \"./PhotosFolder.vue?vue&type=script&lang=js\"\nimport style0 from \"./PhotosFolder.vue?vue&type=style&index=0&id=a871c74a&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a871c74a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"photos-locations-container\"},[_c('div',{staticClass:\"photos-locations\"},_vm._l((_vm.photosSourceFolders),function(source,index){return _c('li',{key:index},[_c('PhotosFolder',{attrs:{\"path\":source,\"can-delete\":_vm.photosSourceFolders.length !== 1,\"root-folder-label\":_vm.t('photos', 'All folders'),\"root-folder-icon\":_vm.FolderMultiple},on:{\"remove-folder\":function($event){return _vm.removeSourceFolder(index)}}})],1)}),0),_vm._v(\" \"),_c('NcButton',{attrs:{\"aria-label\":_vm.t('photos', 'Add a Photos source for the timelines')},on:{\"click\":_vm.debounceAddSourceFolder},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Plus',{attrs:{\"size\":20}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('photos', 'Add folder'))+\"\\n\\t\")])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./FolderMultiple.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./FolderMultiple.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FolderMultiple.vue?vue&type=template&id=ee49e6fe\"\nimport script from \"./FolderMultiple.vue?vue&type=script&lang=js\"\nexport * from \"./FolderMultiple.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon folder-multiple-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M22,4H14L12,2H6A2,2 0 0,0 4,4V16A2,2 0 0,0 6,18H22A2,2 0 0,0 24,16V6A2,2 0 0,0 22,4M2,6H0V11H0V20A2,2 0 0,0 2,22H20V20H2V6Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PhotosSourceLocationsSettings.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!./PhotosSourceLocationsSettings.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/postcss-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PhotosSourceLocationsSettings.vue?vue&type=style&index=0&id=05ae8e6c&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PhotosSourceLocationsSettings.vue?vue&type=style&index=0&id=05ae8e6c&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./PhotosSourceLocationsSettings.vue?vue&type=template&id=05ae8e6c&scoped=true\"\nimport script from \"./PhotosSourceLocationsSettings.vue?vue&type=script&lang=js\"\nexport * from \"./PhotosSourceLocationsSettings.vue?vue&type=script&lang=js\"\nimport style0 from \"./PhotosSourceLocationsSettings.vue?vue&type=style&index=0&id=05ae8e6c&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"05ae8e6c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.errorFetchingFiles)?_c('div',{staticClass:\"timeline__empty-content\"},[(_vm.errorFetchingFiles === 404)?_c('NcEmptyContent',{attrs:{\"name\":_vm.t('photos', 'One of the source folders does not exists')}},[_c('FolderAlertOutline',{attrs:{\"slot\":\"icon\"},slot:\"icon\"}),_vm._v(\" \"),_c('PhotosSourceLocationsSettings',{staticClass:\"timeline__update_source_directory\",attrs:{\"slot\":\"action\"},slot:\"action\"})],1):_c('NcEmptyContent',{attrs:{\"name\":_vm.t('photos', 'An error occurred')}},[_c('AlertCircle',{attrs:{\"slot\":\"icon\"},slot:\"icon\"})],1)],1):_c('div',{staticClass:\"timeline\"},[_c('HeaderNavigation',{key:\"navigation\",attrs:{\"loading\":_vm.loadingCount > 0,\"path\":'/',\"title\":_vm.rootTitle,\"root-title\":_vm.rootTitle},on:{\"refresh\":_vm.resetFetchFilesState}},[_c('div',{staticClass:\"timeline__header__left\"},[(_vm.selectedFileIds.length === 0)?_c('NcActions',{ref:\"addActions\",attrs:{\"force-menu\":true,\"menu-name\":_vm.t('photos', 'Add')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Plus')]},proxy:true}],null,false,1489515321)},[_vm._v(\" \"),_c('NcActionButton',{attrs:{\"close-after-click\":true,\"aria-label\":_vm.t('photos', 'Create new album')},on:{\"click\":function($event){_vm.showAlbumCreationForm = true}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('PlusBoxMultiple')]},proxy:true}],null,false,2640725948)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Create new album'))+\"\\n\\t\\t\\t\\t\\t\")])],1):[_c('NcButton',{attrs:{\"close-after-click\":true,\"type\":\"primary\",\"aria-label\":_vm.t('photos', 'Add to album')},on:{\"click\":function($event){_vm.showAlbumPicker = true}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Plus')]},proxy:true},(!_vm.isMobile)?{key:\"default\",fn:function(){return [_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Add to album'))+\"\\n\\t\\t\\t\\t\\t\")]},proxy:true}:null],null,true)}),_vm._v(\" \"),(_vm.selectedFileIds.length > 0)?_c('NcButton',{attrs:{\"aria-label\":_vm.t('photos', 'Unselect all')},on:{\"click\":_vm.resetSelection},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Close')]},proxy:true},(!_vm.isMobile)?{key:\"default\",fn:function(){return [_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Unselect all'))+\"\\n\\t\\t\\t\\t\\t\")]},proxy:true}:null],null,true)}):_vm._e(),_vm._v(\" \"),_c('NcActions',{attrs:{\"aria-label\":_vm.t('photos', 'Open actions menu')}},[_c('ActionDownload',{attrs:{\"selected-file-ids\":_vm.selectedFileIds,\"title\":_vm.t('photos', 'Download selected files')}},[_c('Download',{attrs:{\"slot\":\"icon\"},slot:\"icon\"})],1),_vm._v(\" \"),_c('ActionFavorite',{attrs:{\"selected-file-ids\":_vm.selectedFileIds}}),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"close-after-click\":true,\"aria-label\":_vm.t('photos', 'Delete selection')},on:{\"click\":_vm.deleteSelection},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Delete')]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Delete selection'))+\"\\n\\t\\t\\t\\t\\t\\t\")])],1)]],2)]),_vm._v(\" \"),_c('FilesListViewer',{ref:\"filesListViewer\",staticClass:\"timeline__file-list\",attrs:{\"container-element\":_vm.appContent,\"file-ids-by-section\":_vm.fileIdsByMonth,\"sections\":_vm.monthsList,\"loading\":_vm.loadingFiles,\"base-height\":_vm.isMobile ? 120 : 200,\"empty-message\":_vm.t('photos', 'No photos or videos in here')},on:{\"need-content\":_vm.getContent},scopedSlots:_vm._u([{key:\"default\",fn:function({file, isHeader, distance}){return [(isHeader)?_c('h2',{staticClass:\"section-header\",attrs:{\"id\":`file-picker-section-header-${file.id}`}},[_c('b',[_vm._v(_vm._s(_vm._f(\"dateMonth\")(file.id)))]),_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm._f(\"dateYear\")(file.id))+\"\\n\\t\\t\\t\")]):_c('File',{attrs:{\"file\":_vm.files[file.id],\"allow-selection\":true,\"selected\":_vm.selection[file.id] === true,\"distance\":distance},on:{\"click\":_vm.openViewer,\"select-toggled\":_vm.onFileSelectToggle}})]}}])}),_vm._v(\" \"),(_vm.showAlbumCreationForm)?_c('NcModal',{key:\"albumCreationForm\",attrs:{\"set-return-focus\":_vm.$refs.addActions?.$refs.menuButton?.$el},on:{\"close\":function($event){_vm.showAlbumCreationForm = false}}},[_c('h2',{staticClass:\"timeline__heading\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('photos', 'New album'))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('AlbumForm',{on:{\"done\":function($event){_vm.showAlbumCreationForm = false}}})],1):_vm._e(),_vm._v(\" \"),(_vm.showAlbumPicker)?_c('NcModal',{key:\"albumPicker\",on:{\"close\":function($event){_vm.showAlbumPicker = false}}},[_c('AlbumPicker',{on:{\"album-picked\":_vm.addSelectionToAlbum}})],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./FolderAlertOutline.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./FolderAlertOutline.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FolderAlertOutline.vue?vue&type=template&id=0780345b\"\nimport script from \"./FolderAlertOutline.vue?vue&type=script&lang=js\"\nexport * from \"./FolderAlertOutline.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon folder-alert-outline-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M15,12H17V17H15V12M15,18H17V20H15V18M16,9C17.07,9 18.09,9.24 19,9.67V8H3V18H9.29C9.1,17.36 9,16.69 9,16A7,7 0 0,1 16,9M23,16A7,7 0 0,1 16,23C13.62,23 11.5,21.81 10.25,20H3C1.89,20 1,19.1 1,18V6C1,4.89 1.89,4 3,4H9L11,6H19A2,2 0 0,1 21,8V11.1C22.24,12.36 23,14.09 23,16M16,11A5,5 0 0,0 11,16A5,5 0 0,0 16,21A5,5 0 0,0 21,16A5,5 0 0,0 16,11Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./PlusBoxMultiple.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./PlusBoxMultiple.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./PlusBoxMultiple.vue?vue&type=template&id=5764b316\"\nimport script from \"./PlusBoxMultiple.vue?vue&type=script&lang=js\"\nexport * from \"./PlusBoxMultiple.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon plus-box-multiple-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M19,11H15V15H13V11H9V9H13V5H15V9H19M20,2H8A2,2 0 0,0 6,4V16A2,2 0 0,0 8,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M4,6H2V20A2,2 0 0,0 4,22H18V20H4V6Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlbumPicker.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!./AlbumPicker.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/postcss-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlbumPicker.vue?vue&type=style&index=0&id=20d6fa8c&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlbumPicker.vue?vue&type=style&index=0&id=20d6fa8c&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AlbumPicker.vue?vue&type=template&id=20d6fa8c&scoped=true\"\nimport script from \"./AlbumPicker.vue?vue&type=script&lang=js\"\nexport * from \"./AlbumPicker.vue?vue&type=script&lang=js\"\nimport style0 from \"./AlbumPicker.vue?vue&type=style&index=0&id=20d6fa8c&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"20d6fa8c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (!_vm.showAlbumCreationForm)?_c('div',{staticClass:\"album-picker\"},[_c('h2',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('photos', 'Add to Album'))+\"\\n\\t\\t\"),(_vm.loadingCollections)?_c('NcLoadingIcon',{staticClass:\"loading-icon\"}):_vm._e()],1),_vm._v(\" \"),_c('ul',{staticClass:\"albums-container\"},_vm._l((_vm.allAlbums),function(album){return _c('NcListItem',{key:album.filename,staticClass:\"album\",attrs:{\"name\":_vm.originalName(album),\"aria-label\":_vm.t('photos', 'Add selection to album {albumName}', {albumName: album.basename})},on:{\"click\":function($event){return _vm.pickAlbum(album)}},scopedSlots:_vm._u([{key:\"subname\",fn:function(){return [_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.n('photos', '%n item', '%n photos and videos', album.nbItems))+\"\\n\\t\\t\\t\\t\"),(_vm.isSharedAlbum(album))?[_vm._v(\"\\n\\t\\t\\t\\t\\t⸱ \"+_vm._s(_vm.t('photos', 'Shared by'))+\" \"),_c('NcUserBubble',{attrs:{\"display-name\":album.collaborators[0].label,\"user\":album.collaborators[0].id}})]:_vm._e()]},proxy:true}],null,true)},[_c('template',{slot:\"icon\"},[(album.lastPhoto !== -1)?_c('img',{staticClass:\"album__image\",attrs:{\"src\":_vm._f(\"toCoverUrl\")(album.lastPhoto)}}):_c('div',{staticClass:\"album__image album__image--placeholder\"},[_c('ImageMultiple',{attrs:{\"size\":32}})],1)])],2)}),1),_vm._v(\" \"),_c('NcButton',{staticClass:\"new-album-button\",attrs:{\"aria-label\":_vm.t('photos', 'Create a new album.'),\"type\":\"tertiary\"},on:{\"click\":function($event){_vm.showAlbumCreationForm = true}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Plus')]},proxy:true}],null,false,1489515321)},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('photos', 'Create new album'))+\"\\n\\t\")])],1):_c('AlbumForm',{attrs:{\"display-back-button\":true,\"title\":_vm.t('photos', 'New album')},on:{\"back\":function($event){_vm.showAlbumCreationForm = false},\"done\":_vm.albumCreatedHandler}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionDownload.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!./ActionDownload.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ActionDownload.vue?vue&type=template&id=c26f867a\"\nimport script from \"./ActionDownload.vue?vue&type=script&lang=js\"\nexport * from \"./ActionDownload.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcActionLink',{attrs:{\"close-after-click\":true,\"href\":_vm.downloadUrl,\"download\":_vm.downloadUrl,\"aria-label\":_vm.title}},[_vm._v(\"\\n\\t\"+_vm._s(_vm.title)+\"\\n\\t\"),_vm._t(\"icon\",null,{\"slot\":\"icon\"})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Timeline.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!./Timeline.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/postcss-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Timeline.vue?vue&type=style&index=0&id=2068ca0a&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Timeline.vue?vue&type=style&index=0&id=2068ca0a&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Timeline.vue?vue&type=template&id=2068ca0a&scoped=true\"\nimport script from \"./Timeline.vue?vue&type=script&lang=js\"\nexport * from \"./Timeline.vue?vue&type=script&lang=js\"\nimport style0 from \"./Timeline.vue?vue&type=style&index=0&id=2068ca0a&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2068ca0a\",\n null\n \n)\n\nexport default component.exports"],"names":["name","data","errorFetchingCollections","loadingCollections","mixins","AbortControllerMixin","methods","mapActions","async","collectionHome","extraProps","client","this","collections","fetchCollections","signal","abortController","addCollections","error","_error$response","response","status","errorFetchingFiles","loadingFiles","doneFetchingFiles","fetchSemaphore","SemaphoreWithPriority","fetchedFileIds","watch","resetFetchFilesState","options","arguments","length","undefined","blacklist","force","fetchSemaphoreSymbol","acquire","numberOfImagesPerBatch","fetchedFiles","firstResult","nbResults","mimesType","allMimes","onThisDay","onlyFavorites","orMime","reduce","str","mime","concat","eqFavorites","Array","fill","map","_","years","start","moment","Date","now","startOf","subtract","end","endOf","add","format","join","sourceFolders","store","folder","joinPaths","davRootPath","Object","assign","method","headers","props","deep","details","genFileInfo","getPhotos","fileIds","file","fileid","filter","fileId","includes","toString","push","$store","dispatch","logger","sources","source","_error$response2","_error$response2$data","match","davGetClient","createDirectory","code","release","computed","fileIdsByMonth","filesByMonth","files","_filesByMonth$file$mo","month","keys","forEach","sort","sortFilesByTimestamp","monthsList","month1","month2","fileId1","fileId2","timestamp","___CSS_LOADER_EXPORT___","module","id","emits","title","type","String","fillColor","default","size","Number","_vm","_c","_self","_b","staticClass","attrs","on","$event","$emit","$attrs","_v","_s","_e","components","Star","NcActionButton","selectedFileIds","required","mapGetters","shouldFavoriteSelection","some","favorite","toggleFavoriteForFiles","favoriteState","t","favoriteSelection","slot","unFavoriteSelection","defineComponent","NcButton","Folder","Close","path","canDelete","Boolean","rootFolderLabel","rootFolderIcon","folderName","split","pop","subname","_this$path$match","splice","emitRemoveSourceFolder","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_setupProxy","tag","scopedSlots","_u","key","fn","proxy","PhotosFolder","Plus","FolderMultiple","photosSourceFolders","state","userConfig","debounceAddSourceFolder","debounce","addSourceFolder","openFilePicker","getFilePickerBuilder","setMultiSelect","setModal","setType","addMimeTypeFilter","allowDirectories","build","pick","pickedFolder","value","removeSourceFolder","index","folders","_l","ImageMultiple","NcListItem","NcLoadingIcon","NcUserBubble","AlbumForm","filters","toCoverUrl","generateUrl","FetchCollectionsMixin","showAlbumCreationForm","allAlbums","values","albums","sharedAlbums","mounted","fetchAlbumList","_getCurrentUser","_getCurrentUser2","getCurrentUser","uid","albumCreatedHandler","pickAlbum","album","isSharedAlbum","filename","originalName","basename","replace","RegExp","collaborators","translate","n","translatePlural","albumName","nbItems","label","lastPhoto","_f","NcActionLink","downloadUrl","params","URLSearchParams","filePaths","fileNames","fileName","append","JSON","stringify","_t","Delete","PlusBoxMultiple","Download","FolderAlertOutline","NcEmptyContent","NcModal","NcActions","AlbumPicker","FilesListViewer","File","ActionFavorite","ActionDownload","HeaderNavigation","PhotosSourceLocationsSettings","AlertCircle","dateMonth","date","dateYear","FetchFilesMixin","FilesSelectionMixin","FilesByMonthMixin","isMobile","beforeRouteLeave","to","from","next","window","scrollTo","rootTitle","loadingCount","showAlbumPicker","appContent","document","getElementById","subscribe","configChangedEvent","handleUserConfigChange","destroyed","unsubscribe","getContent","fetchFiles","openViewer","OCA","Viewer","open","fileInfo","list","flat","loadMore","canLoop","openUploader","addFilesToCollection","collectionFileName","fileIdsToAdd","onUncheckFiles","deleteFiles","_ref","_vm$$refs$addActions","_vm$$refs$addActions$","ref","resetSelection","deleteSelection","isHeader","distance","selection","onFileSelectToggle","$refs","addActions","menuButton","$el","addSelectionToAlbum"],"sourceRoot":""} \ No newline at end of file diff --git a/js/photos-src_components_Collection_CollectionContent_vue-src_components_PhotosPicker_vue.js b/js/photos-src_components_Collection_CollectionContent_vue-src_components_PhotosPicker_vue.js index 850660f4f..ac28f289d 100644 --- a/js/photos-src_components_Collection_CollectionContent_vue-src_components_PhotosPicker_vue.js +++ b/js/photos-src_components_Collection_CollectionContent_vue-src_components_PhotosPicker_vue.js @@ -1,3 +1,3 @@ /*! For license information please see photos-src_components_Collection_CollectionContent_vue-src_components_PhotosPicker_vue.js.LICENSE.txt */ -"use strict";(self.webpackChunkphotos=self.webpackChunkphotos||[]).push([["src_components_Collection_CollectionContent_vue-src_components_PhotosPicker_vue"],{66951:(t,e,n)=>{n.d(e,{Z:()=>g});var o=n(5656),i=n(65358),s=n(59537),l=n(45086),a=n(77958),r=n(3301),d=n(81067),c=n(2161),p=n(80351),h=n.n(p),u=n(30319);var m=n(32114);const g={name:"FetchFilesMixin",mixins:[n(69363).Z],data:()=>({errorFetchingFiles:null,loadingFiles:!1,doneFetchingFiles:!1,fetchSemaphore:new m.Z(1),fetchedFileIds:[]}),watch:{"$route.path"(){this.resetFetchFilesState()}},methods:{async fetchFiles(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(this.doneFetchingFiles&&!n||this.loadingFiles)return[];const p=await this.fetchSemaphore.acquire();try{this.errorFetchingFiles=null,this.loadingFiles=!0;const n=200,o=await async function(){var t;let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e={firstResult:0,nbResults:200,mimesType:r.Oj,onThisDay:!1,onlyFavorites:!1,...e};const n="/files/".concat((0,a.ts)().uid),o=e.mimesType.reduce(((t,e)=>"".concat(t,"\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t").concat(e,"\n\t\t\n\t")),""),i=e.onlyFavorites?"\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t1\n\t\t\t":"",s=e.onThisDay?"".concat(Array(20).fill(1).map(((t,e)=>{const n=h()(Date.now()).startOf("day").subtract(3,"d").subtract(e+1,"y"),o=h()(Date.now()).endOf("day").add(3,"d").subtract(e+1,"y");return"\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t".concat(n.format(h().defaultFormatUtc),"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t").concat(o.format(h().defaultFormatUtc),"\n\t\t\t\t\n\t\t\t")})).join("\n"),""):"";return e=Object.assign({method:"SEARCH",headers:{"content-Type":"text/xml"},data:'\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t'.concat(c.N,"\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t").concat(n,"/").concat(null!==(t=u.Z.state.userConfig.photosSourceFolder)&&void 0!==t?t:"/Photos","\n\t\t\t\t\t\t\tinfinity\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t").concat(o,"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t").concat(i,"\n\t\t\t\t\t\t\t").concat(s,"\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\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\t\n\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\t\n\t\t\t\t\t\t").concat(e.nbResults,"\n\t\t\t\t\t\t").concat(e.firstResult,"\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t"),deep:!0,details:!0},e),(await d.ZP.getDirectoryContents("",e)).data.map((t=>(0,l.AX)(t)))}({firstResult:this.fetchedFileIds.length,nbResults:n,...t,signal:this.abortController.signal});o.length!==n&&(this.doneFetchingFiles=!0);const i=o.map((t=>t.fileid)).filter((t=>!this.fetchedFileIds.includes(t.toString())));return this.fetchedFileIds.push(...i.map((t=>t.toString())).filter((t=>!e.includes(t)))),this.$store.dispatch("appendFiles",o),s.Z.debug("[FetchFilesMixin] Fetched ".concat(i.length," new files: "),i),i}catch(t){var m;if(404===(null===(m=t.response)||void 0===m?void 0:m.status)){var g;this.errorFetchingFiles=404;const t=(0,i.RQ)(o._o,null!==(g=u.Z.state.userConfig.photosSourceFolder)&&void 0!==g?g:"/Photos")+"/";s.Z.debug("Photo source does not exist, creating it.");try{await(0,o.rp)().createDirectory(t)}catch(t){s.Z.error("Fail to create source directory",{error:t})}}else{if("ERR_CANCELED"===t.code)return[];this.errorFetchingFiles=t}s.Z.error("Error fetching files",{error:t}),console.error(t)}finally{this.loadingFiles=!1,this.fetchSemaphore.release(p)}return[]},resetFetchFilesState(){this.doneFetchingFiles=!1,this.errorFetchingFiles=null,this.loadingFiles=!1,this.fetchedFileIds=[]}}}},28391:(t,e,n)=>{n.d(e,{Z:()=>o});const o={name:"FilesByMonthMixin",computed:{fileIdsByMonth(){const t={};for(const n of this.fetchedFileIds){const o=this.files[n];var e;if(o)t[o.month]=null!==(e=t[o.month])&&void 0!==e?e:[],t[o.month].push(o.fileid)}return Object.keys(t).forEach((e=>t[e].sort(this.sortFilesByTimestamp))),t},monthsList(){return Object.keys(this.fileIdsByMonth).sort(((t,e)=>t>e?-1:1))}},methods:{sortFilesByTimestamp(t,e){return this.files[t].timestamp>this.files[e].timestamp?-1:1}}}},41935:(t,e,n)=>{n.d(e,{Z:()=>a});var o=n(87537),i=n.n(o),s=n(23645),l=n.n(s)()(i());l.push([t.id,".collection[data-v-550e2ad4]{display:flex;flex-direction:column}.collection__media[data-v-550e2ad4]{padding:0 64px}@media only screen and (max-width: 1200px){.collection__media[data-v-550e2ad4]{padding:0 4px}}","",{version:3,sources:["webpack://./src/components/Collection/CollectionContent.vue"],names:[],mappings:"AAEA,6BACC,YAAA,CACA,qBAAA,CAEA,oCACC,cAAA,CAEA,2CAHD,oCAIE,aAAA,CAAA",sourcesContent:['$sizes: ("400": ("count": 3, "marginTop": 66, "marginW": 8), "700": ("count": 4, "marginTop": 66, "marginW": 8), "1024": ("count": 5, "marginTop": 66, "marginW": 44), "1280": ("count": 4, "marginTop": 66, "marginW": 44), "1440": ("count": 5, "marginTop": 88, "marginW": 66), "1600": ("count": 6, "marginTop": 88, "marginW": 66), "2048": ("count": 7, "marginTop": 88, "marginW": 66), "2560": ("count": 8, "marginTop": 88, "marginW": 88), "3440": ("count": 9, "marginTop": 88, "marginW": 88), "max": ("count": 10, "marginTop": 88, "marginW": 88));\n\n.collection {\n\tdisplay: flex;\n\tflex-direction: column;\n\n\t&__media {\n\t\tpadding: 0 64px;\n\n\t\t@media only screen and (max-width: 1200px) {\n\t\t\tpadding: 0 4px;\n\t\t}\n\t}\n}\n'],sourceRoot:""}]);const a=l},99429:(t,e,n)=>{n.d(e,{Z:()=>a});var o=n(87537),i=n.n(o),s=n(23645),l=n.n(s)()(i());l.push([t.id,"[data-v-b044636c] .photos-picker{-webkit-padding-end:0 !important;padding-inline-end:0 !important}.photos-picker__navigation__month[data-v-b044636c]{margin:4px}.photos-picker__navigation__month-select[data-v-b044636c]{flex:1;-webkit-padding-end:12px;padding-inline-end:12px;-webkit-padding-after:6px;padding-block-end:6px}.photos-picker__file-list[data-v-b044636c]{flex-grow:1;min-width:0;height:100%;padding:0 4px}.photos-picker__file-list--placeholder[data-v-b044636c]{background:var(--color-primary-element-light);border-radius:var(--border-radius-large)}.photos-picker__file-list .section-header[data-v-b044636c]{font-weight:bold;font-size:20px;padding:8px 0 4px 0}.photos-picker__file-list[data-v-b044636c] .empty-content{position:absolute;width:100%;margin-top:0;height:100%;display:flex;flex-direction:column;justify-content:center}","",{version:3,sources:["webpack://./src/components/PhotosPicker.vue"],names:[],mappings:"AAEA,iCAEC,gCAAA,CAAA,+BAAA,CAMC,mDAEC,UAAA,CAGD,0DACC,MAAA,CAEA,wBAAA,CAAA,uBAAA,CACA,yBAAA,CAAA,qBAAA,CAIF,2CACC,WAAA,CACA,WAAA,CACA,WAAA,CACA,aAAA,CAEA,wDACC,6CAAA,CACA,wCAAA,CAGD,2DACC,gBAAA,CACA,cAAA,CACA,mBAAA,CAGD,0DACC,iBAAA,CACA,UAAA,CACA,YAAA,CACA,WAAA,CACA,YAAA,CACA,qBAAA,CACA,sBAAA",sourcesContent:['$sizes: ("400": ("count": 3, "marginTop": 66, "marginW": 8), "700": ("count": 4, "marginTop": 66, "marginW": 8), "1024": ("count": 5, "marginTop": 66, "marginW": 44), "1280": ("count": 4, "marginTop": 66, "marginW": 44), "1440": ("count": 5, "marginTop": 88, "marginW": 66), "1600": ("count": 6, "marginTop": 88, "marginW": 66), "2048": ("count": 7, "marginTop": 88, "marginW": 66), "2560": ("count": 8, "marginTop": 88, "marginW": 88), "3440": ("count": 9, "marginTop": 88, "marginW": 88), "max": ("count": 10, "marginTop": 88, "marginW": 88));\n\n:deep(.photos-picker) {\n\t// remove padding to move scrollbar to the very end\n\tpadding-inline-end: 0 !important;\n}\n\n.photos-picker {\n\n\t&__navigation {\n\t\t&__month {\n\t\t\t// For focus-visible outline\n\t\t\tmargin: 4px;\n\t\t}\n\n\t\t&__month-select {\n\t\t\tflex: 1;\n\t\t\t// align with other content\n\t\t\tpadding-inline-end: 12px;\n\t\t\tpadding-block-end: 6px;\n\t\t}\n\t}\n\n\t&__file-list {\n\t\tflex-grow: 1;\n\t\tmin-width: 0;\n\t\theight: 100%;\n\t\tpadding: 0 4px;\n\n\t\t&--placeholder {\n\t\t\tbackground: var(--color-primary-element-light);\n\t\t\tborder-radius: var(--border-radius-large);\n\t\t}\n\n\t\t.section-header {\n\t\t\tfont-weight: bold;\n\t\t\tfont-size: 20px;\n\t\t\tpadding: 8px 0 4px 0;\n\t\t}\n\n\t\t:deep .empty-content {\n\t\t\tposition: absolute;\n\t\t\twidth: 100%;\n\t\t\tmargin-top: 0;\n\t\t\theight: 100%;\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tjustify-content: center;\n\t\t}\n\t}\n}\n'],sourceRoot:""}]);const a=l},70877:(t,e,n)=>{n.d(e,{Z:()=>k});var o=n(84320),i=n(99147),s=n(64882),l=n(31352),a=n(98171),r=n(97519),d=n(64811);const c={name:"CollectionContent",components:{AlertCircle:o.Z,FolderMultipleImage:i.Z,NcEmptyContent:s.SL,FilesListViewer:r.Z,File:d.Z},mixins:[a.Z,s.tq],props:{collection:{type:Object,default:()=>{}},collectionFileIds:{type:Array,required:!0},loading:{type:Boolean,default:!1},allowSelection:{type:Boolean,default:!0},error:{type:[Error,Number],default:null}},data:()=>({appContent:document.getElementById("app-content-vue")}),computed:{files(){return this.$store.getters.files},sortedCollectionFileIds(){return this.collectionFileIds.toSorted(((t,e)=>this.files[t].timestampthis.files[t])).filter((t=>!t.sectionHeader)),loadMore:e.loadMore?async()=>await e.loadMore(!0):()=>[],canLoop:e.canLoop})},t:l.Iu}};var p=n(93379),h=n.n(p),u=n(7795),m=n.n(u),g=n(90569),A=n.n(g),f=n(3565),C=n.n(f),y=n(19216),_=n.n(y),F=n(44589),v=n.n(F),b=n(41935),x={};x.styleTagTransform=v(),x.setAttributes=C(),x.insert=A().bind(null,"head"),x.domAPI=m(),x.insertStyleElement=_();h()(b.Z,x);b.Z&&b.Z.locals&&b.Z.locals;const k=(0,n(51900).Z)(c,(function(){var t=this,e=t._self._c;return void 0===t.collection&&!t.loading||404===t.error?e("NcEmptyContent",{staticClass:"empty-content-with-illustration",attrs:{name:t.t("photos","This collection does not exist")}},[e("FolderMultipleImage",{attrs:{slot:"icon"},slot:"icon"})],1):t.error?e("NcEmptyContent",{attrs:{name:t.t("photos","An error occurred")}},[e("AlertCircle",{attrs:{slot:"icon"},slot:"icon"})],1):e("div",{staticClass:"collection"},[t._t("header",null,{selectedFileIds:t.selectedFileIds,resetSelection:t.resetSelection}),t._v(" "),0!==t.sortedCollectionFileIds.length||t.loading?t._e():t._t("empty-content"),t._v(" "),void 0!==t.collection?e("FilesListViewer",{staticClass:"collection__media",attrs:{"container-element":t.appContent,"file-ids":t.sortedCollectionFileIds,"base-height":t.isMobile?120:200,loading:t.loading},scopedSlots:t._u([{key:"default",fn:function(n){let{file:o,distance:i}=n;return e("File",{attrs:{file:t.files[o.id],"allow-selection":t.allowSelection,selected:!0===t.selection[o.id],distance:i},on:{click:t.openViewer,"select-toggled":t.onFileSelectToggle}})}}],null,!1,3813029717)}):t._e()],2)}),[],!1,null,"550e2ad4",null).exports},45947:(t,e,n)=>{n.d(e,{Z:()=>S});var o=n(57873),i=n(64882),s=n(20144),l=n(20629),a=n(80351),r=n.n(a),d=n(85109),c=n(97519),p=n(64811),h=n(66951),u=n(98171),m=n(28391),g=n(3301);const A=(0,s.aZ)({name:"PhotosPicker",components:{File:p.Z,FilesListViewer:c.Z,ImagePlus:d.Z,NcButton:i.P2,NcDialog:i.a0,NcLoadingIcon:i.lb,NcSelect:i.QG,UploadPicker:o.e},mixins:[h.Z,m.Z,u.Z],props:{open:{type:Boolean,default:!0},name:{type:String,required:!0},destination:{type:String,required:!0},blacklistIds:{type:Array,default:()=>[]},loading:{type:Boolean,default:!1}},emits:["files-picked","update:open"],setup:()=>({isMobile:(0,i.dD)()}),data:()=>({allowedMimes:g.ZP,targetMonth:null,uploadContext:{route:"albumpicker"}}),computed:{...(0,l.Se)(["files"])},watch:{monthsList(t){null===this.targetMonth&&(this.targetMonth=t[0])}},methods:{onFocusOut(t){null===t.relatedTarget&&t.target.focus({preventScroll:!0})},getFiles(){this.fetchFiles({},this.blacklistIds)},refreshFiles(){this.fetchFiles({firstResult:0},[...this.blacklistIds,...this.fetchedFileIds],!0)},emitPickedEvent(){this.$emit("files-picked",this.selectedFileIds)},dateMonthAndYear(t){return this.isMobile?r()(t,"YYYYMM").format("MMM YYYY"):r()(t,"YYYYMM").format("MMMM YYYY")},photosLocationFolder(){return this.$store.state.userConfig.photosLocationFolder}}});var f=n(93379),C=n.n(f),y=n(7795),_=n.n(y),F=n(90569),v=n.n(F),b=n(3565),x=n.n(b),k=n(19216),w=n.n(k),M=n(44589),Z=n.n(M),T=n(99429),I={};I.styleTagTransform=Z(),I.setAttributes=x(),I.insert=v().bind(null,"head"),I.domAPI=_(),I.insertStyleElement=w();C()(T.Z,I);T.Z&&T.Z.locals&&T.Z.locals;const S=(0,n(51900).Z)(A,(function(){var t=this,e=t._self._c;t._self._setupProxy;return e("NcDialog",{attrs:{"content-classes":"photos-picker",name:t.name,open:t.open,"out-transition":"",size:"large"},on:{"update:open":e=>t.$emit("update:open",e)},scopedSlots:t._u([{key:"navigation",fn:function(n){let{isCollapsed:o}=n;return[o?e("NcSelect",{staticClass:"photos-picker__navigation__month-select",attrs:{"aria-label-listbox":t.t("photos","Dates"),clearable:!1,"input-label":t.t("photos","Jump to specific date in list"),options:t.monthsList},scopedSlots:t._u([{key:"selected-option",fn:function(e){let{label:n}=e;return[t._v("\n\t\t\t\t"+t._s(t.dateMonthAndYear(n))+"\n\t\t\t")]}},{key:"option",fn:function(e){let{label:n}=e;return[t._v("\n\t\t\t\t"+t._s(t.dateMonthAndYear(n))+"\n\t\t\t")]}}],null,!0),model:{value:t.targetMonth,callback:function(e){t.targetMonth=e},expression:"targetMonth"}}):e("ul",{attrs:{"aria-label":t.t("photos","Dates")}},t._l(t.monthsList,(function(n){return e("li",{key:n,staticClass:"photos-picker__navigation__month"},[e("NcButton",{attrs:{type:t.targetMonth===n?"secondary":"tertiary","aria-label":t.t("photos","Jump to {date}",{date:t.dateMonthAndYear(n)})},on:{click:function(e){t.targetMonth=n}}},[t._v("\n\t\t\t\t\t"+t._s(t.dateMonthAndYear(n))+"\n\t\t\t\t")])],1)})),0)]}},{key:"actions",fn:function(){return[e("UploadPicker",{attrs:{accept:t.allowedMimes,context:t.uploadContext,destination:t.photosLocationFolder,multiple:!0},on:{uploaded:t.refreshFiles}}),t._v(" "),e("NcButton",{attrs:{type:"primary",disabled:t.loading||0===t.selectedFileIds.length},on:{click:t.emitPickedEvent},scopedSlots:t._u([{key:"icon",fn:function(){return[t.loading?t._e():e("ImagePlus"),t._v(" "),t.loading?e("NcLoadingIcon"):t._e()]},proxy:!0}])},[t._v("\n\t\t\t"+t._s(t.t("photos","Add to {destination}",{destination:t.destination}))+"\n\t\t")])]},proxy:!0}])},[t._v(" "),t._v(" "),e("FilesListViewer",{staticClass:"photos-picker__file-list",class:{"photos-picker__file-list--placeholder":0===t.monthsList.length},attrs:{"file-ids-by-section":t.fileIdsByMonth,"empty-message":t.t("photos","There are no photos or videos yet!"),sections:t.monthsList,loading:t.loadingFiles,"base-height":100,"section-header-height":50,"scroll-to-section":t.targetMonth},on:{"need-content":t.getFiles},nativeOn:{focusout:function(e){return t.onFocusOut.apply(null,arguments)}},scopedSlots:t._u([{key:"default",fn:function(n){let{file:o,height:i,isHeader:s,distance:l}=n;return[s?e("h3",{staticClass:"section-header",style:{height:"".concat(i,"px")},attrs:{id:"photos-picker-section-header-".concat(o.id)}},[t._v("\n\t\t\t\t"+t._s(t.dateMonthAndYear(o.id))+"\n\t\t\t")]):e("File",{attrs:{file:t.files[o.id],"allow-selection":!0,selected:!0===t.selection[o.id],distance:l},on:{"select-toggled":t.onFileSelectToggle}})]}}])})],1)}),[],!1,null,"b044636c",null).exports}}]); -//# sourceMappingURL=photos-src_components_Collection_CollectionContent_vue-src_components_PhotosPicker_vue.js.map?v=69b38d8e727d251cd6ae \ No newline at end of file +"use strict";(self.webpackChunkphotos=self.webpackChunkphotos||[]).push([["src_components_Collection_CollectionContent_vue-src_components_PhotosPicker_vue"],{66951:(t,e,n)=>{n.d(e,{Z:()=>m});var o=n(5656),i=n(65358),s=n(59537),l=n(45086),a=n(3301),r=n(81067),d=n(2161),c=n(80351),p=n.n(c),h=n(30319);var u=n(32114);const m={name:"FetchFilesMixin",mixins:[n(69363).Z],data:()=>({errorFetchingFiles:null,loadingFiles:!1,doneFetchingFiles:!1,fetchSemaphore:new u.Z(1),fetchedFileIds:[]}),watch:{"$route.path"(){this.resetFetchFilesState()}},methods:{async fetchFiles(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(this.doneFetchingFiles&&!n||this.loadingFiles)return[];const c=await this.fetchSemaphore.acquire();try{this.errorFetchingFiles=null,this.loadingFiles=!0;const n=200,c=await async function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};t={firstResult:0,nbResults:200,mimesType:a.Oj,onThisDay:!1,onlyFavorites:!1,...t};const e=t.mimesType.reduce(((t,e)=>"".concat(t,"\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t").concat(e,"\n\t\t\n\t")),""),n=t.onlyFavorites?"\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t1\n\t\t\t":"",s=t.onThisDay?"".concat(Array(20).fill(1).map(((t,e)=>{const n=p()(Date.now()).startOf("day").subtract(3,"d").subtract(e+1,"y"),o=p()(Date.now()).endOf("day").add(3,"d").subtract(e+1,"y");return"\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t".concat(n.format(p().defaultFormatUtc),"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t").concat(o.format(p().defaultFormatUtc),"\n\t\t\t\t\n\t\t\t")})).join("\n"),""):"",c=h.Z.state.userConfig.photosSourceFolders.map((t=>"\n\t\t\t\n\t\t\t\t".concat((0,i.RQ)(o._o,t),"\n\t\t\t\tinfinity\n\t\t\t"))).join("\n");return t=Object.assign({method:"SEARCH",headers:{"content-Type":"text/xml"},data:'\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t'.concat(d.N,"\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t").concat(c,"\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t").concat(e,"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t").concat(n,"\n\t\t\t\t\t\t\t").concat(s,"\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\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\t\n\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\t\n\t\t\t\t\t\t").concat(t.nbResults,"\n\t\t\t\t\t\t").concat(t.firstResult,"\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t"),deep:!0,details:!0},t),(await r.ZP.getDirectoryContents("",t)).data.map((t=>(0,l.AX)(t)))}({firstResult:this.fetchedFileIds.length,nbResults:n,...t,signal:this.abortController.signal});c.length!==n&&(this.doneFetchingFiles=!0);const u=c.map((t=>t.fileid)).filter((t=>!this.fetchedFileIds.includes(t.toString())));return this.fetchedFileIds.push(...u.map((t=>t.toString())).filter((t=>!e.includes(t)))),this.$store.dispatch("appendFiles",c),s.Z.debug("[FetchFilesMixin] Fetched ".concat(u.length," new files: "),u),u}catch(t){var u;if(404===(null===(u=t.response)||void 0===u?void 0:u.status)){const e=h.Z.state.userConfig.photosSourceFolders;for(const n of e){var m,g;if(null!==(null===(m=t.response)||void 0===m||null===(g=m.data)||void 0===g?void 0:g.match("File with name /".concat(n," could not be located")))){s.Z.debug("The ".concat(n," folder does not exist, creating it."));try{return await(0,o.rp)().createDirectory((0,i.RQ)(o._o,n)),this.resetFetchFilesState(),[]}catch(t){this.errorFetchingFiles=404,s.Z.error("Fail to create source directory",{error:t})}}}}else{if("ERR_CANCELED"===t.code)return[];this.errorFetchingFiles=t}s.Z.error("Error fetching files",{error:t})}finally{this.loadingFiles=!1,this.fetchSemaphore.release(c)}return[]},resetFetchFilesState(){this.doneFetchingFiles=!1,this.errorFetchingFiles=null,this.loadingFiles=!1,this.fetchedFileIds=[]}}}},28391:(t,e,n)=>{n.d(e,{Z:()=>o});const o={name:"FilesByMonthMixin",computed:{fileIdsByMonth(){const t={};for(const n of this.fetchedFileIds){const o=this.files[n];var e;if(o)t[o.month]=null!==(e=t[o.month])&&void 0!==e?e:[],t[o.month].push(o.fileid)}return Object.keys(t).forEach((e=>t[e].sort(this.sortFilesByTimestamp))),t},monthsList(){return Object.keys(this.fileIdsByMonth).sort(((t,e)=>t>e?-1:1))}},methods:{sortFilesByTimestamp(t,e){return this.files[t].timestamp>this.files[e].timestamp?-1:1}}}},41935:(t,e,n)=>{n.d(e,{Z:()=>a});var o=n(87537),i=n.n(o),s=n(23645),l=n.n(s)()(i());l.push([t.id,".collection[data-v-550e2ad4]{display:flex;flex-direction:column}.collection__media[data-v-550e2ad4]{padding:0 64px}@media only screen and (max-width: 1200px){.collection__media[data-v-550e2ad4]{padding:0 4px}}","",{version:3,sources:["webpack://./src/components/Collection/CollectionContent.vue"],names:[],mappings:"AAEA,6BACC,YAAA,CACA,qBAAA,CAEA,oCACC,cAAA,CAEA,2CAHD,oCAIE,aAAA,CAAA",sourcesContent:['$sizes: ("400": ("count": 3, "marginTop": 66, "marginW": 8), "700": ("count": 4, "marginTop": 66, "marginW": 8), "1024": ("count": 5, "marginTop": 66, "marginW": 44), "1280": ("count": 4, "marginTop": 66, "marginW": 44), "1440": ("count": 5, "marginTop": 88, "marginW": 66), "1600": ("count": 6, "marginTop": 88, "marginW": 66), "2048": ("count": 7, "marginTop": 88, "marginW": 66), "2560": ("count": 8, "marginTop": 88, "marginW": 88), "3440": ("count": 9, "marginTop": 88, "marginW": 88), "max": ("count": 10, "marginTop": 88, "marginW": 88));\n\n.collection {\n\tdisplay: flex;\n\tflex-direction: column;\n\n\t&__media {\n\t\tpadding: 0 64px;\n\n\t\t@media only screen and (max-width: 1200px) {\n\t\t\tpadding: 0 4px;\n\t\t}\n\t}\n}\n'],sourceRoot:""}]);const a=l},99429:(t,e,n)=>{n.d(e,{Z:()=>a});var o=n(87537),i=n.n(o),s=n(23645),l=n.n(s)()(i());l.push([t.id,"[data-v-b044636c] .photos-picker{-webkit-padding-end:0 !important;padding-inline-end:0 !important}.photos-picker__navigation__month[data-v-b044636c]{margin:4px}.photos-picker__navigation__month-select[data-v-b044636c]{flex:1;-webkit-padding-end:12px;padding-inline-end:12px;-webkit-padding-after:6px;padding-block-end:6px}.photos-picker__file-list[data-v-b044636c]{flex-grow:1;min-width:0;height:100%;padding:0 4px}.photos-picker__file-list--placeholder[data-v-b044636c]{background:var(--color-primary-element-light);border-radius:var(--border-radius-large)}.photos-picker__file-list .section-header[data-v-b044636c]{font-weight:bold;font-size:20px;padding:8px 0 4px 0}.photos-picker__file-list[data-v-b044636c] .empty-content{position:absolute;width:100%;margin-top:0;height:100%;display:flex;flex-direction:column;justify-content:center}","",{version:3,sources:["webpack://./src/components/PhotosPicker.vue"],names:[],mappings:"AAEA,iCAEC,gCAAA,CAAA,+BAAA,CAMC,mDAEC,UAAA,CAGD,0DACC,MAAA,CAEA,wBAAA,CAAA,uBAAA,CACA,yBAAA,CAAA,qBAAA,CAIF,2CACC,WAAA,CACA,WAAA,CACA,WAAA,CACA,aAAA,CAEA,wDACC,6CAAA,CACA,wCAAA,CAGD,2DACC,gBAAA,CACA,cAAA,CACA,mBAAA,CAGD,0DACC,iBAAA,CACA,UAAA,CACA,YAAA,CACA,WAAA,CACA,YAAA,CACA,qBAAA,CACA,sBAAA",sourcesContent:['$sizes: ("400": ("count": 3, "marginTop": 66, "marginW": 8), "700": ("count": 4, "marginTop": 66, "marginW": 8), "1024": ("count": 5, "marginTop": 66, "marginW": 44), "1280": ("count": 4, "marginTop": 66, "marginW": 44), "1440": ("count": 5, "marginTop": 88, "marginW": 66), "1600": ("count": 6, "marginTop": 88, "marginW": 66), "2048": ("count": 7, "marginTop": 88, "marginW": 66), "2560": ("count": 8, "marginTop": 88, "marginW": 88), "3440": ("count": 9, "marginTop": 88, "marginW": 88), "max": ("count": 10, "marginTop": 88, "marginW": 88));\n\n:deep(.photos-picker) {\n\t// remove padding to move scrollbar to the very end\n\tpadding-inline-end: 0 !important;\n}\n\n.photos-picker {\n\n\t&__navigation {\n\t\t&__month {\n\t\t\t// For focus-visible outline\n\t\t\tmargin: 4px;\n\t\t}\n\n\t\t&__month-select {\n\t\t\tflex: 1;\n\t\t\t// align with other content\n\t\t\tpadding-inline-end: 12px;\n\t\t\tpadding-block-end: 6px;\n\t\t}\n\t}\n\n\t&__file-list {\n\t\tflex-grow: 1;\n\t\tmin-width: 0;\n\t\theight: 100%;\n\t\tpadding: 0 4px;\n\n\t\t&--placeholder {\n\t\t\tbackground: var(--color-primary-element-light);\n\t\t\tborder-radius: var(--border-radius-large);\n\t\t}\n\n\t\t.section-header {\n\t\t\tfont-weight: bold;\n\t\t\tfont-size: 20px;\n\t\t\tpadding: 8px 0 4px 0;\n\t\t}\n\n\t\t:deep .empty-content {\n\t\t\tposition: absolute;\n\t\t\twidth: 100%;\n\t\t\tmargin-top: 0;\n\t\t\theight: 100%;\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tjustify-content: center;\n\t\t}\n\t}\n}\n'],sourceRoot:""}]);const a=l},70877:(t,e,n)=>{n.d(e,{Z:()=>k});var o=n(84320),i=n(99147),s=n(64882),l=n(31352),a=n(98171),r=n(97519),d=n(64811);const c={name:"CollectionContent",components:{AlertCircle:o.Z,FolderMultipleImage:i.Z,NcEmptyContent:s.SL,FilesListViewer:r.Z,File:d.Z},mixins:[a.Z,s.tq],props:{collection:{type:Object,default:()=>{}},collectionFileIds:{type:Array,required:!0},loading:{type:Boolean,default:!1},allowSelection:{type:Boolean,default:!0},error:{type:[Error,Number],default:null}},data:()=>({appContent:document.getElementById("app-content-vue")}),computed:{files(){return this.$store.getters.files},sortedCollectionFileIds(){return this.collectionFileIds.toSorted(((t,e)=>this.files[t].timestampthis.files[t])).filter((t=>!t.sectionHeader)),loadMore:e.loadMore?async()=>await e.loadMore(!0):()=>[],canLoop:e.canLoop})},t:l.Iu}};var p=n(93379),h=n.n(p),u=n(7795),m=n.n(u),g=n(90569),A=n.n(g),f=n(3565),C=n.n(f),F=n(19216),y=n.n(F),_=n(44589),v=n.n(_),b=n(41935),x={};x.styleTagTransform=v(),x.setAttributes=C(),x.insert=A().bind(null,"head"),x.domAPI=m(),x.insertStyleElement=y();h()(b.Z,x);b.Z&&b.Z.locals&&b.Z.locals;const k=(0,n(51900).Z)(c,(function(){var t=this,e=t._self._c;return void 0===t.collection&&!t.loading||404===t.error?e("NcEmptyContent",{staticClass:"empty-content-with-illustration",attrs:{name:t.t("photos","This collection does not exist")}},[e("FolderMultipleImage",{attrs:{slot:"icon"},slot:"icon"})],1):t.error?e("NcEmptyContent",{attrs:{name:t.t("photos","An error occurred")}},[e("AlertCircle",{attrs:{slot:"icon"},slot:"icon"})],1):e("div",{staticClass:"collection"},[t._t("header",null,{selectedFileIds:t.selectedFileIds,resetSelection:t.resetSelection}),t._v(" "),0!==t.sortedCollectionFileIds.length||t.loading?t._e():t._t("empty-content"),t._v(" "),void 0!==t.collection?e("FilesListViewer",{staticClass:"collection__media",attrs:{"container-element":t.appContent,"file-ids":t.sortedCollectionFileIds,"base-height":t.isMobile?120:200,loading:t.loading},scopedSlots:t._u([{key:"default",fn:function(n){let{file:o,distance:i}=n;return e("File",{attrs:{file:t.files[o.id],"allow-selection":t.allowSelection,selected:!0===t.selection[o.id],distance:i},on:{click:t.openViewer,"select-toggled":t.onFileSelectToggle}})}}],null,!1,3813029717)}):t._e()],2)}),[],!1,null,"550e2ad4",null).exports},45947:(t,e,n)=>{n.d(e,{Z:()=>S});var o=n(57873),i=n(64882),s=n(20144),l=n(20629),a=n(80351),r=n.n(a),d=n(85109),c=n(97519),p=n(64811),h=n(66951),u=n(98171),m=n(28391),g=n(3301);const A=(0,s.aZ)({name:"PhotosPicker",components:{File:p.Z,FilesListViewer:c.Z,ImagePlus:d.Z,NcButton:i.P2,NcDialog:i.a0,NcLoadingIcon:i.lb,NcSelect:i.QG,UploadPicker:o.e},mixins:[h.Z,m.Z,u.Z],props:{open:{type:Boolean,default:!0},name:{type:String,required:!0},destination:{type:String,required:!0},blacklistIds:{type:Array,default:()=>[]},loading:{type:Boolean,default:!1}},emits:["files-picked","update:open"],setup:()=>({isMobile:(0,i.dD)()}),data:()=>({allowedMimes:g.ZP,targetMonth:null,uploadContext:{route:"albumpicker"}}),computed:{...(0,l.Se)(["files"])},watch:{monthsList(t){null===this.targetMonth&&(this.targetMonth=t[0])}},methods:{onFocusOut(t){null===t.relatedTarget&&t.target.focus({preventScroll:!0})},getFiles(){this.fetchFiles({},this.blacklistIds)},refreshFiles(){this.fetchFiles({firstResult:0},[...this.blacklistIds,...this.fetchedFileIds],!0)},emitPickedEvent(){this.$emit("files-picked",this.selectedFileIds)},dateMonthAndYear(t){return this.isMobile?r()(t,"YYYYMM").format("MMM YYYY"):r()(t,"YYYYMM").format("MMMM YYYY")},photosLocationFolder(){return this.$store.state.userConfig.photosLocationFolder}}});var f=n(93379),C=n.n(f),F=n(7795),y=n.n(F),_=n(90569),v=n.n(_),b=n(3565),x=n.n(b),k=n(19216),w=n.n(k),M=n(44589),T=n.n(M),Z=n(99429),I={};I.styleTagTransform=T(),I.setAttributes=x(),I.insert=v().bind(null,"head"),I.domAPI=y(),I.insertStyleElement=w();C()(Z.Z,I);Z.Z&&Z.Z.locals&&Z.Z.locals;const S=(0,n(51900).Z)(A,(function(){var t=this,e=t._self._c;t._self._setupProxy;return e("NcDialog",{attrs:{"content-classes":"photos-picker",name:t.name,open:t.open,"out-transition":"",size:"large"},on:{"update:open":e=>t.$emit("update:open",e)},scopedSlots:t._u([{key:"navigation",fn:function(n){let{isCollapsed:o}=n;return[o?e("NcSelect",{staticClass:"photos-picker__navigation__month-select",attrs:{"aria-label-listbox":t.t("photos","Dates"),clearable:!1,"input-label":t.t("photos","Jump to specific date in list"),options:t.monthsList},scopedSlots:t._u([{key:"selected-option",fn:function(e){let{label:n}=e;return[t._v("\n\t\t\t\t"+t._s(t.dateMonthAndYear(n))+"\n\t\t\t")]}},{key:"option",fn:function(e){let{label:n}=e;return[t._v("\n\t\t\t\t"+t._s(t.dateMonthAndYear(n))+"\n\t\t\t")]}}],null,!0),model:{value:t.targetMonth,callback:function(e){t.targetMonth=e},expression:"targetMonth"}}):e("ul",{attrs:{"aria-label":t.t("photos","Dates")}},t._l(t.monthsList,(function(n){return e("li",{key:n,staticClass:"photos-picker__navigation__month"},[e("NcButton",{attrs:{type:t.targetMonth===n?"secondary":"tertiary","aria-label":t.t("photos","Jump to {date}",{date:t.dateMonthAndYear(n)})},on:{click:function(e){t.targetMonth=n}}},[t._v("\n\t\t\t\t\t"+t._s(t.dateMonthAndYear(n))+"\n\t\t\t\t")])],1)})),0)]}},{key:"actions",fn:function(){return[e("UploadPicker",{attrs:{accept:t.allowedMimes,context:t.uploadContext,destination:t.photosLocationFolder,multiple:!0},on:{uploaded:t.refreshFiles}}),t._v(" "),e("NcButton",{attrs:{type:"primary",disabled:t.loading||0===t.selectedFileIds.length},on:{click:t.emitPickedEvent},scopedSlots:t._u([{key:"icon",fn:function(){return[t.loading?t._e():e("ImagePlus"),t._v(" "),t.loading?e("NcLoadingIcon"):t._e()]},proxy:!0}])},[t._v("\n\t\t\t"+t._s(t.t("photos","Add to {destination}",{destination:t.destination}))+"\n\t\t")])]},proxy:!0}])},[t._v(" "),t._v(" "),e("FilesListViewer",{staticClass:"photos-picker__file-list",class:{"photos-picker__file-list--placeholder":0===t.monthsList.length},attrs:{"file-ids-by-section":t.fileIdsByMonth,"empty-message":t.t("photos","There are no photos or videos yet!"),sections:t.monthsList,loading:t.loadingFiles,"base-height":100,"section-header-height":50,"scroll-to-section":t.targetMonth},on:{"need-content":t.getFiles},nativeOn:{focusout:function(e){return t.onFocusOut.apply(null,arguments)}},scopedSlots:t._u([{key:"default",fn:function(n){let{file:o,height:i,isHeader:s,distance:l}=n;return[s?e("h3",{staticClass:"section-header",style:{height:"".concat(i,"px")},attrs:{id:"photos-picker-section-header-".concat(o.id)}},[t._v("\n\t\t\t\t"+t._s(t.dateMonthAndYear(o.id))+"\n\t\t\t")]):e("File",{attrs:{file:t.files[o.id],"allow-selection":!0,selected:!0===t.selection[o.id],distance:l},on:{"select-toggled":t.onFileSelectToggle}})]}}])})],1)}),[],!1,null,"b044636c",null).exports}}]); +//# sourceMappingURL=photos-src_components_Collection_CollectionContent_vue-src_components_PhotosPicker_vue.js.map?v=ffe21867ec160f61c0bb \ No newline at end of file diff --git a/js/photos-src_components_Collection_CollectionContent_vue-src_components_PhotosPicker_vue.js.map b/js/photos-src_components_Collection_CollectionContent_vue-src_components_PhotosPicker_vue.js.map index ee81b4ff1..26f2f6397 100644 --- a/js/photos-src_components_Collection_CollectionContent_vue-src_components_PhotosPicker_vue.js.map +++ b/js/photos-src_components_Collection_CollectionContent_vue-src_components_PhotosPicker_vue.js.map @@ -1 +1 @@ -{"version":3,"file":"photos-src_components_Collection_CollectionContent_vue-src_components_PhotosPicker_vue.js?v=69b38d8e727d251cd6ae","mappings":"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","sources":["webpack:///photos/src/mixins/FetchFilesMixin.js","webpack:///photos/src/services/PhotoSearch.js","webpack:///photos/src/mixins/FilesByMonthMixin.js","webpack:///photos/src/components/Collection/CollectionContent.vue?vue&type=style&index=0&id=550e2ad4&prod&lang=scss&scoped=true","webpack:///photos/src/components/PhotosPicker.vue?vue&type=style&index=0&id=b044636c&prod&lang=scss&scoped=true","webpack://photos/./src/components/Collection/CollectionContent.vue?de63","webpack:///photos/src/components/Collection/CollectionContent.vue","webpack:///photos/src/components/Collection/CollectionContent.vue?vue&type=script&lang=js","webpack://photos/./src/components/Collection/CollectionContent.vue?a590","webpack://photos/./src/components/Collection/CollectionContent.vue?d20d","webpack://photos/./src/components/PhotosPicker.vue?4733","webpack:///photos/src/components/PhotosPicker.vue","webpack:///photos/src/components/PhotosPicker.vue?vue&type=script&lang=js","webpack://photos/./src/components/PhotosPicker.vue?1f6b","webpack://photos/./src/components/PhotosPicker.vue?67e2"],"sourcesContent":["/**\n * @copyright Copyright (c) 2022 Louis Chemineau \n *\n * @author Louis Chemineau \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 .\n *\n */\n\nimport { davGetClient, davRootPath } from '@nextcloud/files'\nimport { joinPaths } from '@nextcloud/paths'\nimport logger from '../services/logger.js'\nimport getPhotos from '../services/PhotoSearch.js'\nimport SemaphoreWithPriority from '../utils/semaphoreWithPriority.js'\nimport AbortControllerMixin from './AbortControllerMixin.js'\nimport store from '../store/index.js'\n\nexport default {\n\tname: 'FetchFilesMixin',\n\n\tmixins: [\n\t\tAbortControllerMixin,\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\terrorFetchingFiles: null,\n\t\t\tloadingFiles: false,\n\t\t\tdoneFetchingFiles: false,\n\t\t\tfetchSemaphore: new SemaphoreWithPriority(1),\n\t\t\tfetchedFileIds: [],\n\t\t}\n\t},\n\n\twatch: {\n\t\t'$route.path'() {\n\t\t\tthis.resetFetchFilesState()\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * @param {object} options - Options to pass to getPhotos.\n\t\t * @param {string[]} [blacklist=[]] - Array of ids to filter out.\n\t\t * @param {boolean} [force=false] - Force fetching even if doneFetchingFiles is true\n\t\t * @return {Promise} - The next batch of data depending on global offset.\n\t\t */\n\t\tasync fetchFiles(options = {}, blacklist = [], force = false) {\n\t\t\tif ((this.doneFetchingFiles && !force) || this.loadingFiles) {\n\t\t\t\treturn []\n\t\t\t}\n\n\t\t\tconst fetchSemaphoreSymbol = await this.fetchSemaphore.acquire()\n\n\t\t\ttry {\n\t\t\t\tthis.errorFetchingFiles = null\n\t\t\t\tthis.loadingFiles = true\n\n\t\t\t\tconst numberOfImagesPerBatch = 200\n\n\t\t\t\t// Load next batch of images\n\t\t\t\tconst fetchedFiles = await getPhotos({\n\t\t\t\t\tfirstResult: this.fetchedFileIds.length,\n\t\t\t\t\tnbResults: numberOfImagesPerBatch,\n\t\t\t\t\t...options,\n\t\t\t\t\tsignal: this.abortController.signal,\n\t\t\t\t})\n\n\t\t\t\t// If we get less files than requested that means we got to the end\n\t\t\t\tif (fetchedFiles.length !== numberOfImagesPerBatch) {\n\t\t\t\t\tthis.doneFetchingFiles = true\n\t\t\t\t}\n\n\t\t\t\tconst fileIds = fetchedFiles\n\t\t\t\t\t.map(file => file.fileid)\n\t\t\t\t\t.filter(fileId => !this.fetchedFileIds.includes(fileId.toString())) // Filter to prevent duplicate fileIds.\n\n\t\t\t\tthis.fetchedFileIds.push(\n\t\t\t\t\t...fileIds\n\t\t\t\t\t\t.map((fileId) => fileId.toString())\n\t\t\t\t\t\t.filter((fileId) => !blacklist.includes(fileId))\n\t\t\t\t)\n\n\t\t\t\tthis.$store.dispatch('appendFiles', fetchedFiles)\n\n\t\t\t\tlogger.debug(`[FetchFilesMixin] Fetched ${fileIds.length} new files: `, fileIds)\n\n\t\t\t\treturn fileIds\n\t\t\t} catch (error) {\n\t\t\t\tif (error.response?.status === 404) {\n\t\t\t\t\tthis.errorFetchingFiles = 404\n\t\t\t\t\tconst source = joinPaths(davRootPath, store.state.userConfig.photosSourceFolder ?? '/Photos') + '/'\n\t\t\t\t\tlogger.debug('Photo source does not exist, creating it.')\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait davGetClient().createDirectory(source)\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tlogger.error('Fail to create source directory', { error })\n\t\t\t\t\t}\n\t\t\t\t} else if (error.code === 'ERR_CANCELED') {\n\t\t\t\t\treturn []\n\t\t\t\t} else {\n\t\t\t\t\tthis.errorFetchingFiles = error\n\t\t\t\t}\n\n\t\t\t\t// cancelled request, moving on...\n\t\t\t\tlogger.error('Error fetching files', { error })\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tthis.loadingFiles = false\n\t\t\t\tthis.fetchSemaphore.release(fetchSemaphoreSymbol)\n\t\t\t}\n\n\t\t\treturn []\n\t\t},\n\n\t\tresetFetchFilesState() {\n\t\t\tthis.doneFetchingFiles = false\n\t\t\tthis.errorFetchingFiles = null\n\t\t\tthis.loadingFiles = false\n\t\t\tthis.fetchedFileIds = []\n\t\t},\n\t},\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \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 .\n *\n */\n\nimport { genFileInfo } from '../utils/fileUtils.js'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { allMimes } from './AllowedMimes.js'\nimport client from './DavClient.js'\nimport { props } from './DavRequest.js'\nimport moment from '@nextcloud/moment'\nimport store from '../store/index.js'\n\n/**\n * List files from a folder and filter out unwanted mimes\n *\n * @param {object} [options] used for the cancellable requests\n * @param {number} [options.firstResult=0] Index of the first result that we want (starts at 0)\n * @param {number} [options.nbResults=200] The number of file to fetch\n * @param {string[]} [options.mimesType=allMimes] Mime type of the files\n * @param {boolean} [options.full=false] get full data of the files\n * @param {boolean} [options.onThisDay=false] get only items from this day of year\n * @param {boolean} [options.onlyFavorites=false] get only favorite items\n * @return {Promise} the file list\n */\nexport default async function(options = {}) {\n\t// default function options\n\toptions = {\n\t\tfirstResult: 0,\n\t\tnbResults: 200,\n\t\tmimesType: allMimes,\n\t\tonThisDay: false,\n\t\tonlyFavorites: false,\n\t\t...options,\n\t}\n\n\tconst prefixPath = `/files/${getCurrentUser().uid}`\n\n\t// generating the search or condition\n\t// based on the allowed mimetypes\n\tconst orMime = options.mimesType.reduce((str, mime) => `${str}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t${mime}\n\t\t\n\t`, '')\n\n\tconst eqFavorites = options.onlyFavorites\n\t\t? `\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t1\n\t\t\t`\n\t\t: ''\n\n\tconst onThisDay = options.onThisDay\n\t\t? `${Array(20).fill(1)\n\t\t\t.map((_, years) => {\n\t\t\t\tconst start = moment(Date.now()).startOf('day').subtract(3, 'd').subtract(years + 1, 'y')\n\t\t\t\tconst end = moment(Date.now()).endOf('day').add(3, 'd').subtract(years + 1, 'y')\n\t\t\t\treturn `\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${start.format(moment.defaultFormatUtc)}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${end.format(moment.defaultFormatUtc)}\n\t\t\t\t\n\t\t\t`\n\t\t\t}).join('\\n')}`\n\t\t: ''\n\n\t// TODO: uncomment when SEARCH on multiple folders is implemented.\n\t// const sourceFolders = store.state.userConfig.photosSourceFolder\n\t// .map(folder => `\n\t// \n\t// ${davRootPath}/${folder}\n\t// infinity\n\t// \n\t// `)\n\t// .join('\\n')\n\n\toptions = Object.assign({\n\t\tmethod: 'SEARCH',\n\t\theaders: {\n\t\t\t'content-Type': 'text/xml',\n\t\t},\n\t\tdata: `\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t${props}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t${prefixPath}/${store.state.userConfig.photosSourceFolder ?? '/Photos'}\n\t\t\t\t\t\t\tinfinity\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t${orMime}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t${eqFavorites}\n\t\t\t\t\t\t\t${onThisDay}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\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\t\n\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\t\n\t\t\t\t\t\t${options.nbResults}\n\t\t\t\t\t\t${options.firstResult}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t`,\n\t\tdeep: true,\n\t\tdetails: true,\n\t}, options)\n\n\tconst response = await client.getDirectoryContents('', options)\n\n\treturn response.data.map(data => genFileInfo(data))\n}\n","/**\n * @copyright Copyright (c) 2022 Louis Chemineau \n *\n * @author Louis Chemineau \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 .\n *\n */\n\nexport default {\n\tname: 'FilesByMonthMixin',\n\n\tcomputed: {\n\t\t/**\n\t\t * @return {Object}\n\t\t */\n\t\tfileIdsByMonth() {\n\t\t\tconst filesByMonth = {}\n\t\t\tfor (const fileId of this.fetchedFileIds) {\n\t\t\t\tconst file = this.files[fileId]\n\t\t\t\tif (file) {\n\t\t\t\t\tfilesByMonth[file.month] = filesByMonth[file.month] ?? []\n\t\t\t\t\tfilesByMonth[file.month].push(file.fileid)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Sort files in sections.\n\t\t\tObject.keys(filesByMonth)\n\t\t\t\t.forEach(month => filesByMonth[month].sort(this.sortFilesByTimestamp))\n\n\t\t\treturn filesByMonth\n\t\t},\n\n\t\t/**\n\t\t * @return {string[]}\n\t\t */\n\t\tmonthsList() {\n\t\t\treturn Object\n\t\t\t\t.keys(this.fileIdsByMonth)\n\t\t\t\t.sort((month1, month2) => month1 > month2 ? -1 : 1)\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * @param {string} fileId1 The first file ID\n\t\t * @param {string} fileId2 The second file ID\n\t\t * @return {-1 | 1}\n\t\t */\n\t\tsortFilesByTimestamp(fileId1, fileId2) {\n\t\t\treturn this.files[fileId1].timestamp > this.files[fileId2].timestamp ? -1 : 1\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, \".collection[data-v-550e2ad4]{display:flex;flex-direction:column}.collection__media[data-v-550e2ad4]{padding:0 64px}@media only screen and (max-width: 1200px){.collection__media[data-v-550e2ad4]{padding:0 4px}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Collection/CollectionContent.vue\"],\"names\":[],\"mappings\":\"AAEA,6BACC,YAAA,CACA,qBAAA,CAEA,oCACC,cAAA,CAEA,2CAHD,oCAIE,aAAA,CAAA\",\"sourcesContent\":[\"$sizes: (\\\"400\\\": (\\\"count\\\": 3, \\\"marginTop\\\": 66, \\\"marginW\\\": 8), \\\"700\\\": (\\\"count\\\": 4, \\\"marginTop\\\": 66, \\\"marginW\\\": 8), \\\"1024\\\": (\\\"count\\\": 5, \\\"marginTop\\\": 66, \\\"marginW\\\": 44), \\\"1280\\\": (\\\"count\\\": 4, \\\"marginTop\\\": 66, \\\"marginW\\\": 44), \\\"1440\\\": (\\\"count\\\": 5, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"1600\\\": (\\\"count\\\": 6, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"2048\\\": (\\\"count\\\": 7, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"2560\\\": (\\\"count\\\": 8, \\\"marginTop\\\": 88, \\\"marginW\\\": 88), \\\"3440\\\": (\\\"count\\\": 9, \\\"marginTop\\\": 88, \\\"marginW\\\": 88), \\\"max\\\": (\\\"count\\\": 10, \\\"marginTop\\\": 88, \\\"marginW\\\": 88));\\n\\n.collection {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\n\\t&__media {\\n\\t\\tpadding: 0 64px;\\n\\n\\t\\t@media only screen and (max-width: 1200px) {\\n\\t\\t\\tpadding: 0 4px;\\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, \"[data-v-b044636c] .photos-picker{-webkit-padding-end:0 !important;padding-inline-end:0 !important}.photos-picker__navigation__month[data-v-b044636c]{margin:4px}.photos-picker__navigation__month-select[data-v-b044636c]{flex:1;-webkit-padding-end:12px;padding-inline-end:12px;-webkit-padding-after:6px;padding-block-end:6px}.photos-picker__file-list[data-v-b044636c]{flex-grow:1;min-width:0;height:100%;padding:0 4px}.photos-picker__file-list--placeholder[data-v-b044636c]{background:var(--color-primary-element-light);border-radius:var(--border-radius-large)}.photos-picker__file-list .section-header[data-v-b044636c]{font-weight:bold;font-size:20px;padding:8px 0 4px 0}.photos-picker__file-list[data-v-b044636c] .empty-content{position:absolute;width:100%;margin-top:0;height:100%;display:flex;flex-direction:column;justify-content:center}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/PhotosPicker.vue\"],\"names\":[],\"mappings\":\"AAEA,iCAEC,gCAAA,CAAA,+BAAA,CAMC,mDAEC,UAAA,CAGD,0DACC,MAAA,CAEA,wBAAA,CAAA,uBAAA,CACA,yBAAA,CAAA,qBAAA,CAIF,2CACC,WAAA,CACA,WAAA,CACA,WAAA,CACA,aAAA,CAEA,wDACC,6CAAA,CACA,wCAAA,CAGD,2DACC,gBAAA,CACA,cAAA,CACA,mBAAA,CAGD,0DACC,iBAAA,CACA,UAAA,CACA,YAAA,CACA,WAAA,CACA,YAAA,CACA,qBAAA,CACA,sBAAA\",\"sourcesContent\":[\"$sizes: (\\\"400\\\": (\\\"count\\\": 3, \\\"marginTop\\\": 66, \\\"marginW\\\": 8), \\\"700\\\": (\\\"count\\\": 4, \\\"marginTop\\\": 66, \\\"marginW\\\": 8), \\\"1024\\\": (\\\"count\\\": 5, \\\"marginTop\\\": 66, \\\"marginW\\\": 44), \\\"1280\\\": (\\\"count\\\": 4, \\\"marginTop\\\": 66, \\\"marginW\\\": 44), \\\"1440\\\": (\\\"count\\\": 5, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"1600\\\": (\\\"count\\\": 6, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"2048\\\": (\\\"count\\\": 7, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"2560\\\": (\\\"count\\\": 8, \\\"marginTop\\\": 88, \\\"marginW\\\": 88), \\\"3440\\\": (\\\"count\\\": 9, \\\"marginTop\\\": 88, \\\"marginW\\\": 88), \\\"max\\\": (\\\"count\\\": 10, \\\"marginTop\\\": 88, \\\"marginW\\\": 88));\\n\\n:deep(.photos-picker) {\\n\\t// remove padding to move scrollbar to the very end\\n\\tpadding-inline-end: 0 !important;\\n}\\n\\n.photos-picker {\\n\\n\\t&__navigation {\\n\\t\\t&__month {\\n\\t\\t\\t// For focus-visible outline\\n\\t\\t\\tmargin: 4px;\\n\\t\\t}\\n\\n\\t\\t&__month-select {\\n\\t\\t\\tflex: 1;\\n\\t\\t\\t// align with other content\\n\\t\\t\\tpadding-inline-end: 12px;\\n\\t\\t\\tpadding-block-end: 6px;\\n\\t\\t}\\n\\t}\\n\\n\\t&__file-list {\\n\\t\\tflex-grow: 1;\\n\\t\\tmin-width: 0;\\n\\t\\theight: 100%;\\n\\t\\tpadding: 0 4px;\\n\\n\\t\\t&--placeholder {\\n\\t\\t\\tbackground: var(--color-primary-element-light);\\n\\t\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\t}\\n\\n\\t\\t.section-header {\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tfont-size: 20px;\\n\\t\\t\\tpadding: 8px 0 4px 0;\\n\\t\\t}\\n\\n\\t\\t:deep .empty-content {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tmargin-top: 0;\\n\\t\\t\\theight: 100%;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\tjustify-content: center;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return ((_vm.collection === undefined && !_vm.loading) || _vm.error === 404)?_c('NcEmptyContent',{staticClass:\"empty-content-with-illustration\",attrs:{\"name\":_vm.t('photos', 'This collection does not exist')}},[_c('FolderMultipleImage',{attrs:{\"slot\":\"icon\"},slot:\"icon\"})],1):(_vm.error)?_c('NcEmptyContent',{attrs:{\"name\":_vm.t('photos', 'An error occurred')}},[_c('AlertCircle',{attrs:{\"slot\":\"icon\"},slot:\"icon\"})],1):_c('div',{staticClass:\"collection\"},[_vm._t(\"header\",null,{\"selectedFileIds\":_vm.selectedFileIds,\"resetSelection\":_vm.resetSelection}),_vm._v(\" \"),(_vm.sortedCollectionFileIds.length === 0 && !_vm.loading)?_vm._t(\"empty-content\"):_vm._e(),_vm._v(\" \"),(_vm.collection !== undefined)?_c('FilesListViewer',{staticClass:\"collection__media\",attrs:{\"container-element\":_vm.appContent,\"file-ids\":_vm.sortedCollectionFileIds,\"base-height\":_vm.isMobile ? 120 : 200,\"loading\":_vm.loading},scopedSlots:_vm._u([{key:\"default\",fn:function({file, distance}){return _c('File',{attrs:{\"file\":_vm.files[file.id],\"allow-selection\":_vm.allowSelection,\"selected\":_vm.selection[file.id] === true,\"distance\":distance},on:{\"click\":_vm.openViewer,\"select-toggled\":_vm.onFileSelectToggle}})}}],null,false,3813029717)}):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollectionContent.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!./CollectionContent.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/postcss-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollectionContent.vue?vue&type=style&index=0&id=550e2ad4&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollectionContent.vue?vue&type=style&index=0&id=550e2ad4&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./CollectionContent.vue?vue&type=template&id=550e2ad4&scoped=true\"\nimport script from \"./CollectionContent.vue?vue&type=script&lang=js\"\nexport * from \"./CollectionContent.vue?vue&type=script&lang=js\"\nimport style0 from \"./CollectionContent.vue?vue&type=style&index=0&id=550e2ad4&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"550e2ad4\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcDialog',{attrs:{\"content-classes\":\"photos-picker\",\"name\":_vm.name,\"open\":_vm.open,\"out-transition\":\"\",\"size\":\"large\"},on:{\"update:open\":(open) => _vm.$emit('update:open', open)},scopedSlots:_vm._u([{key:\"navigation\",fn:function({ isCollapsed }){return [(isCollapsed)?_c('NcSelect',{staticClass:\"photos-picker__navigation__month-select\",attrs:{\"aria-label-listbox\":_vm.t('photos', 'Dates'),\"clearable\":false,\"input-label\":_vm.t('photos', 'Jump to specific date in list'),\"options\":_vm.monthsList},scopedSlots:_vm._u([{key:\"selected-option\",fn:function({ label }){return [_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.dateMonthAndYear(label))+\"\\n\\t\\t\\t\")]}},{key:\"option\",fn:function({ label }){return [_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.dateMonthAndYear(label))+\"\\n\\t\\t\\t\")]}}],null,true),model:{value:(_vm.targetMonth),callback:function ($$v) {_vm.targetMonth=$$v},expression:\"targetMonth\"}}):_c('ul',{attrs:{\"aria-label\":_vm.t('photos', 'Dates')}},_vm._l((_vm.monthsList),function(month){return _c('li',{key:month,staticClass:\"photos-picker__navigation__month\"},[_c('NcButton',{attrs:{\"type\":_vm.targetMonth === month ? 'secondary' : 'tertiary',\"aria-label\":_vm.t('photos', 'Jump to {date}', { date: _vm.dateMonthAndYear(month) })},on:{\"click\":function($event){_vm.targetMonth = month}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.dateMonthAndYear(month))+\"\\n\\t\\t\\t\\t\")])],1)}),0)]}},{key:\"actions\",fn:function(){return [_c('UploadPicker',{attrs:{\"accept\":_vm.allowedMimes,\"context\":_vm.uploadContext,\"destination\":_vm.photosLocationFolder,\"multiple\":true},on:{\"uploaded\":_vm.refreshFiles}}),_vm._v(\" \"),_c('NcButton',{attrs:{\"type\":\"primary\",\"disabled\":_vm.loading || _vm.selectedFileIds.length === 0},on:{\"click\":_vm.emitPickedEvent},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(!_vm.loading)?_c('ImagePlus'):_vm._e(),_vm._v(\" \"),(_vm.loading)?_c('NcLoadingIcon'):_vm._e()]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Add to {destination}', { destination: _vm.destination }))+\"\\n\\t\\t\")])]},proxy:true}])},[_vm._v(\" \"),_vm._v(\" \"),_c('FilesListViewer',{staticClass:\"photos-picker__file-list\",class:{'photos-picker__file-list--placeholder': _vm.monthsList.length === 0},attrs:{\"file-ids-by-section\":_vm.fileIdsByMonth,\"empty-message\":_vm.t('photos', 'There are no photos or videos yet!'),\"sections\":_vm.monthsList,\"loading\":_vm.loadingFiles,\"base-height\":100,\"section-header-height\":50,\"scroll-to-section\":_vm.targetMonth},on:{\"need-content\":_vm.getFiles},nativeOn:{\"focusout\":function($event){return _vm.onFocusOut.apply(null, arguments)}},scopedSlots:_vm._u([{key:\"default\",fn:function({file, height, isHeader, distance}){return [(isHeader)?_c('h3',{staticClass:\"section-header\",style:({ height: `${height}px`}),attrs:{\"id\":`photos-picker-section-header-${file.id}`}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.dateMonthAndYear(file.id))+\"\\n\\t\\t\\t\")]):_c('File',{attrs:{\"file\":_vm.files[file.id],\"allow-selection\":true,\"selected\":_vm.selection[file.id] === true,\"distance\":distance},on:{\"select-toggled\":_vm.onFileSelectToggle}})]}}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PhotosPicker.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!./PhotosPicker.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/postcss-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PhotosPicker.vue?vue&type=style&index=0&id=b044636c&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PhotosPicker.vue?vue&type=style&index=0&id=b044636c&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./PhotosPicker.vue?vue&type=template&id=b044636c&scoped=true\"\nimport script from \"./PhotosPicker.vue?vue&type=script&lang=js\"\nexport * from \"./PhotosPicker.vue?vue&type=script&lang=js\"\nimport style0 from \"./PhotosPicker.vue?vue&type=style&index=0&id=b044636c&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b044636c\",\n null\n \n)\n\nexport default component.exports"],"names":["name","mixins","AbortControllerMixin","data","errorFetchingFiles","loadingFiles","doneFetchingFiles","fetchSemaphore","SemaphoreWithPriority","fetchedFileIds","watch","this","resetFetchFilesState","methods","async","options","arguments","length","undefined","blacklist","force","fetchSemaphoreSymbol","acquire","numberOfImagesPerBatch","fetchedFiles","_store$state$userConf","firstResult","nbResults","mimesType","allMimes","onThisDay","onlyFavorites","prefixPath","concat","getCurrentUser","uid","orMime","reduce","str","mime","eqFavorites","Array","fill","map","_","years","start","moment","Date","now","startOf","subtract","end","endOf","add","format","join","Object","assign","method","headers","props","store","deep","details","client","genFileInfo","getPhotos","signal","abortController","fileIds","file","fileid","filter","fileId","includes","toString","push","$store","dispatch","logger","error","_error$response","response","status","source","joinPaths","davRootPath","davGetClient","createDirectory","code","console","release","computed","fileIdsByMonth","filesByMonth","files","_filesByMonth$file$mo","month","keys","forEach","sort","sortFilesByTimestamp","monthsList","month1","month2","fileId1","fileId2","timestamp","___CSS_LOADER_EXPORT___","module","id","components","AlertCircle","FolderMultipleImage","NcEmptyContent","FilesListViewer","File","FilesSelectionMixin","isMobile","collection","type","default","collectionFileIds","required","loading","Boolean","allowSelection","Error","Number","appContent","document","getElementById","getters","sortedCollectionFileIds","toSorted","openViewer","OCA","Viewer","open","fileInfo","list","sectionHeader","loadMore","canLoop","t","translate","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","_c","_self","staticClass","attrs","slot","_t","selectedFileIds","resetSelection","_v","_e","scopedSlots","_u","key","fn","_ref","distance","selection","on","onFileSelectToggle","defineComponent","ImagePlus","NcButton","NcDialog","NcLoadingIcon","NcSelect","UploadPicker","FetchFilesMixin","FilesByMonthMixin","String","destination","blacklistIds","emits","setup","useIsMobile","allowedMimes","targetMonth","uploadContext","route","mapGetters","value","onFocusOut","event","relatedTarget","target","focus","preventScroll","getFiles","fetchFiles","refreshFiles","emitPickedEvent","$emit","dateMonthAndYear","date","photosLocationFolder","state","userConfig","_setupProxy","isCollapsed","_ref2","label","_s","_ref3","model","callback","$$v","expression","_l","$event","proxy","class","nativeOn","apply","_ref4","height","isHeader","style"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"photos-src_components_Collection_CollectionContent_vue-src_components_PhotosPicker_vue.js?v=ffe21867ec160f61c0bb","mappings":";2TA8BA,SACCA,KAAM,kBAENC,OAAQ,UACPC,GAGDC,KAAIA,KACI,CACNC,mBAAoB,KACpBC,cAAc,EACdC,mBAAmB,EACnBC,eAAgB,IAAIC,EAAAA,EAAsB,GAC1CC,eAAgB,KAIlBC,MAAO,CACN,gBACCC,KAAKC,sBACN,GAGDC,QAAS,CAORC,mBAA8D,IAA7CC,EAAOC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EAAGG,EAASH,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,GAAII,EAAKJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACnD,GAAKL,KAAKL,oBAAsBc,GAAUT,KAAKN,aAC9C,MAAO,GAGR,MAAMgB,QAA6BV,KAAKJ,eAAee,UAEvD,IACCX,KAAKP,mBAAqB,KAC1BO,KAAKN,cAAe,EAEpB,MAAMkB,EAAyB,IAGzBC,QC/BKV,iBAA6B,IAAdC,EAAOC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EAExCD,EAAU,CACTU,YAAa,EACbC,UAAW,IACXC,UAAWC,EAAAA,GACXC,WAAW,EACXC,eAAe,KACZf,GAKJ,MAAMgB,EAAShB,EAAQY,UAAUK,QAAO,CAACC,EAAKC,IAAS,GAALC,OAAQF,EAAG,iGAAAE,OAK9CD,EAAI,kCAEhB,IAEGE,EAAcrB,EAAQe,cAAa,yHAOtC,GAEGD,EAAYd,EAAQc,UAAS,SAAAM,OACvBE,MAAM,IAAIC,KAAK,GACxBC,KAAI,CAACC,EAAGC,KACR,MAAMC,EAAQC,IAAOC,KAAKC,OAAOC,QAAQ,OAAOC,SAAS,EAAG,KAAKA,SAASN,EAAQ,EAAG,KAC/EO,EAAML,IAAOC,KAAKC,OAAOI,MAAM,OAAOC,IAAI,EAAG,KAAKH,SAASN,EAAQ,EAAG,KAC5E,MAAO,6HAAPN,OAKcO,EAAMS,OAAOR,IAAAA,kBAAwB,oJAAAR,OAMrCa,EAAIG,OAAOR,IAAAA,kBAAwB,oDAG/CS,KAAK,MAAK,WACZ,GAEGC,EAAgBC,EAAAA,EAAAA,MAAAA,WAAAA,oBAAAA,KAChBC,GAAU,sCAAJpB,QAECqB,EAAAA,EAAAA,IAAUC,EAAAA,GAAaF,GAAO,sEAIzCH,KAAK,MAqDP,OAnDArC,EAAU2C,OAAOC,OAAO,CACvBC,OAAQ,SACRC,QAAS,CACR,eAAgB,YAEjB1D,KAAM,4XAAFgC,OASG2B,EAAAA,EAAK,oFAAA3B,OAINkB,EAAa,2GAAAlB,OAKXJ,EAAM,2CAAAI,OAEPC,EAAW,oBAAAD,OACXN,EAAS,waAAAM,OAcEpB,EAAQW,UAAS,+CAAAS,OACbpB,EAAQU,YAAW,+FAIzCsC,MAAM,EACNC,SAAS,GACPjD,UAEoBkD,EAAAA,GAAAA,qBAA4B,GAAIlD,IAEvCZ,KAAKoC,KAAIpC,IAAQ+D,EAAAA,EAAAA,IAAY/D,IAC9C,CDnF+BgE,CAAU,CACpC1C,YAAad,KAAKF,eAAeQ,OACjCS,UAAWH,KACRR,EACHqD,OAAQzD,KAAK0D,gBAAgBD,SAI1B5C,EAAaP,SAAWM,IAC3BZ,KAAKL,mBAAoB,GAG1B,MAAMgE,EAAU9C,EACde,KAAIgC,GAAQA,EAAKC,SACjBC,QAAOC,IAAW/D,KAAKF,eAAekE,SAASD,EAAOE,cAYxD,OAVAjE,KAAKF,eAAeoE,QAChBP,EACD/B,KAAKmC,GAAWA,EAAOE,aACvBH,QAAQC,IAAYvD,EAAUwD,SAASD,MAG1C/D,KAAKmE,OAAOC,SAAS,cAAevD,GAEpCwD,EAAAA,EAAAA,MAAa,6BAAD7C,OAA8BmC,EAAQrD,OAAM,gBAAgBqD,GAEjEA,CACR,CAAE,MAAOW,GAAO,IAAAC,EACf,GAA+B,OAAb,QAAdA,EAAAD,EAAME,gBAAQ,IAAAD,OAAA,EAAdA,EAAgBE,QAAgB,CACnC,MAAMC,EAAU/B,EAAAA,EAAAA,MAAAA,WAAAA,oBAChB,IAAK,MAAMgC,KAAUD,EAAS,KAAAE,EAAAC,EAC7B,GAAsF,QAApE,QAAdD,EAAAN,EAAME,gBAAQ,IAAAI,GAAM,QAANC,EAAdD,EAAgBpF,YAAI,IAAAqF,OAAN,EAAdA,EAAsBC,MAAM,mBAADtD,OAAoBmD,EAAM,2BAAzD,CAGAN,EAAAA,EAAAA,MAAa,OAAD7C,OAAQmD,EAAM,yCAC1B,IAGC,aAFMI,EAAAA,EAAAA,MAAeC,iBAAgBnC,EAAAA,EAAAA,IAAUC,EAAAA,GAAa6B,IAC5D3E,KAAKC,uBACE,EACR,CAAE,MAAOqE,GACRtE,KAAKP,mBAAqB,IAC1B4E,EAAAA,EAAAA,MAAa,kCAAmC,CAAEC,SACnD,CATA,CAUD,CACD,KAAO,IAAmB,iBAAfA,EAAMW,KAChB,MAAO,GAEPjF,KAAKP,mBAAqB6E,CAC3B,CAGAD,EAAAA,EAAAA,MAAa,uBAAwB,CAAEC,SACxC,CAAE,QACDtE,KAAKN,cAAe,EACpBM,KAAKJ,eAAesF,QAAQxE,EAC7B,CAEA,MAAO,EACR,EAEAT,uBACCD,KAAKL,mBAAoB,EACzBK,KAAKP,mBAAqB,KAC1BO,KAAKN,cAAe,EACpBM,KAAKF,eAAiB,EACvB,sCErHF,SACCT,KAAM,oBAEN8F,SAAU,CAITC,iBACC,MAAMC,EAAe,CAAC,EACtB,IAAK,MAAMtB,KAAU/D,KAAKF,eAAgB,CACzC,MAAM8D,EAAO5D,KAAKsF,MAAMvB,GACd,IAAAwB,EAAV,GAAI3B,EACHyB,EAAazB,EAAK4B,OAAiC,QAA3BD,EAAGF,EAAazB,EAAK4B,cAAM,IAAAD,EAAAA,EAAI,GACvDF,EAAazB,EAAK4B,OAAOtB,KAAKN,EAAKC,OAErC,CAMA,OAHAd,OAAO0C,KAAKJ,GACVK,SAAQF,GAASH,EAAaG,GAAOG,KAAK3F,KAAK4F,wBAE1CP,CACR,EAKAQ,aACC,OAAO9C,OACL0C,KAAKzF,KAAKoF,gBACVO,MAAK,CAACG,EAAQC,IAAWD,EAASC,GAAU,EAAI,GACnD,GAGD7F,QAAS,CAMR0F,qBAAqBI,EAASC,GAC7B,OAAOjG,KAAKsF,MAAMU,GAASE,UAAYlG,KAAKsF,MAAMW,GAASC,WAAa,EAAI,CAC7E,yEC7DEC,QAA0B,GAA4B,KAE1DA,EAAwBjC,KAAK,CAACkC,EAAOC,GAAI,oNAAqN,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,+DAA+D,MAAQ,GAAG,SAAW,wEAAwE,eAAiB,CAAC,quBAAqzB,WAAa,MAE1wC,+ECJIF,QAA0B,GAA4B,KAE1DA,EAAwBjC,KAAK,CAACkC,EAAOC,GAAI,00BAA20B,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,+CAA+C,MAAQ,GAAG,SAAW,ySAAyS,eAAiB,CAAC,s+CAAsjD,WAAa,MAEl1F,4CCPA,iFCuEA,MCvEuL,EDuEvL,CACAhH,KAAA,oBAEAiH,WAAA,CACAC,YAAA,IACAC,oBAAA,IACAC,eAAA,KACAC,gBAAA,IACAC,KAAAA,EAAAA,GAGArH,OAAA,CACAsH,EAAAA,EACAC,EAAAA,IAGA1D,MAAA,CAEA2D,WAAA,CACAC,KAAAhE,OACAiE,QAAAA,KACA,GAGAC,kBAAA,CACAF,KAAArF,MACAwF,UAAA,GAGAC,QAAA,CACAJ,KAAAK,QACAJ,SAAA,GAGAK,eAAA,CACAN,KAAAK,QACAJ,SAAA,GAGA1C,MAAA,CACAyC,KAAA,CAAAO,MAAAC,QACAP,QAAA,OAIAxH,KAAAA,KACA,CACAgI,WAAAC,SAAAC,eAAA,qBAIAvC,SAAA,CAEAG,QACA,YAAAnB,OAAAwD,QAAArC,KACA,EAEAsC,0BACA,YAAAX,kBAAAY,UAAA,CAAA7B,EAAAC,IAAA,KAAAX,MAAAU,GAAAE,UAAA,KAAAZ,MAAAW,GAAAC,WAAA,KACA,GAGAhG,QAAA,CACA4H,WAAA/D,GACA,MAAAH,EAAA,KAAA0B,MAAAvB,GACAgE,IAAAC,OAAAC,KAAA,CACAC,SAAAtE,EACAuE,KAAA,KAAAP,wBAAAhG,KAAAmC,GAAA,KAAAuB,MAAAvB,KAAAD,QAAAF,IAAAA,EAAAwE,gBACAC,SAAAzE,EAAAyE,SAAA,eAAAzE,EAAAyE,UAAA,UACAC,QAAA1E,EAAA0E,SAEA,EAEAC,EAAAC,EAAAA,0IErIIpI,EAAU,CAAC,EAEfA,EAAQqI,kBAAoB,IAC5BrI,EAAQsI,cAAgB,IAElBtI,EAAQuI,OAAS,SAAc,KAAM,QAE3CvI,EAAQwI,OAAS,IACjBxI,EAAQyI,mBAAqB,IAEhB,IAAI,IAASzI,GAKJ,KAAW,YAAiB,WCPlD,SAXgB,cACd,GJTW,WAAkB,IAAI0I,EAAI9I,KAAK+I,EAAGD,EAAIE,MAAMD,GAAG,YAA4BxI,IAAnBuI,EAAIhC,aAA6BgC,EAAI3B,SAA0B,MAAd2B,EAAIxE,MAAeyE,EAAG,iBAAiB,CAACE,YAAY,kCAAkCC,MAAM,CAAC,KAAOJ,EAAIP,EAAE,SAAU,oCAAoC,CAACQ,EAAG,sBAAsB,CAACG,MAAM,CAAC,KAAO,QAAQC,KAAK,UAAU,GAAIL,EAAIxE,MAAOyE,EAAG,iBAAiB,CAACG,MAAM,CAAC,KAAOJ,EAAIP,EAAE,SAAU,uBAAuB,CAACQ,EAAG,cAAc,CAACG,MAAM,CAAC,KAAO,QAAQC,KAAK,UAAU,GAAGJ,EAAG,MAAM,CAACE,YAAY,cAAc,CAACH,EAAIM,GAAG,SAAS,KAAK,CAAC,gBAAkBN,EAAIO,gBAAgB,eAAiBP,EAAIQ,iBAAiBR,EAAIS,GAAG,KAA6C,IAAvCT,EAAIlB,wBAAwBtH,QAAiBwI,EAAI3B,QAAiC2B,EAAIU,KAA5BV,EAAIM,GAAG,iBAA0BN,EAAIS,GAAG,UAAyBhJ,IAAnBuI,EAAIhC,WAA0BiC,EAAG,kBAAkB,CAACE,YAAY,oBAAoBC,MAAM,CAAC,oBAAoBJ,EAAItB,WAAW,WAAWsB,EAAIlB,wBAAwB,cAAckB,EAAIjC,SAAW,IAAM,IAAI,QAAUiC,EAAI3B,SAASsC,YAAYX,EAAIY,GAAG,CAAC,CAACC,IAAI,UAAUC,GAAG,SAAAC,GAA0B,IAAjB,KAACjG,EAAI,SAAEkG,GAASD,EAAE,OAAOd,EAAG,OAAO,CAACG,MAAM,CAAC,KAAOJ,EAAIxD,MAAM1B,EAAKyC,IAAI,kBAAkByC,EAAIzB,eAAe,UAAsC,IAA3ByB,EAAIiB,UAAUnG,EAAKyC,IAAa,SAAWyD,GAAUE,GAAG,CAAC,MAAQlB,EAAIhB,WAAW,iBAAiBgB,EAAImB,qBAAqB,IAAI,MAAK,EAAM,cAAcnB,EAAIU,MAAM,EACtwC,GACsB,IIUpB,EACA,KACA,WACA,MAI8B,0CCnBhC,gJC6HA,MC7H4K,GD6H5KU,EAAAA,EAAAA,IAAA,CACA7K,KAAA,eAEAiH,WAAA,CACAK,KAAA,IACAD,gBAAA,IACAyD,UAAA,IACAC,SAAA,KACAC,SAAA,KACAC,cAAA,KACAC,SAAA,KACAC,aAAAA,EAAAA,GAGAlL,OAAA,CACAmL,EAAAA,EACAC,EAAAA,EACA9D,EAAAA,GAGAzD,MAAA,CAIA8E,KAAA,CACAlB,KAAAK,QACAJ,SAAA,GAMA3H,KAAA,CACA0H,KAAA4D,OACAzD,UAAA,GAIA0D,YAAA,CACA7D,KAAA4D,OACAzD,UAAA,GAIA2D,aAAA,CACA9D,KAAArF,MACAsF,QAAAA,IAAA,IAIAG,QAAA,CACAJ,KAAAK,QACAJ,SAAA,IAIA8D,MAAA,+BAEAC,MAAAA,KACA,CACAlE,UAAAmE,EAAAA,EAAAA,QAIAxL,KAAAA,KACA,CACAyL,aAAA,KACAC,YAAA,KACAC,cAAA,CACAC,MAAA,iBAKAjG,SAAA,KACAkG,EAAAA,EAAAA,IAAA,CACA,WAIAtL,MAAA,CACA8F,WAAAyF,GACA,YAAAJ,cACA,KAAAA,YAAAI,EAAA,GAEA,GAGApL,QAAA,CAIAqL,WAAAC,GACA,OAAAA,EAAAC,eACAD,EAAAE,OAAAC,MAAA,CAAAC,eAAA,GAEA,EAEAC,WACA,KAAAC,WAAA,QAAAjB,aACA,EAEAkB,eACA,KAAAD,WAAA,CAAAhL,YAAA,YAAA+J,gBAAA,KAAA/K,iBAAA,EACA,EAEAkM,kBACA,KAAAC,MAAA,oBAAA5C,gBACA,EAIA6C,iBAAAC,GACA,YAAAtF,SACA7E,IAAAmK,EAAA,UAAA3J,OAAA,YAEAR,IAAAmK,EAAA,UAAA3J,OAAA,YACA,EACA4J,uBACA,YAAAjI,OAAAkI,MAAAC,WAAAF,oBACA,0IE1OIhM,EAAU,CAAC,EAEfA,EAAQqI,kBAAoB,IAC5BrI,EAAQsI,cAAgB,IAElBtI,EAAQuI,OAAS,SAAc,KAAM,QAE3CvI,EAAQwI,OAAS,IACjBxI,EAAQyI,mBAAqB,IAEhB,IAAI,IAASzI,GAKJ,KAAW,YAAiB,WCPlD,SAXgB,cACd,GJTW,WAAkB,IAAI0I,EAAI9I,KAAK+I,EAAGD,EAAIE,MAAMD,GAAUD,EAAIE,MAAMuD,YAAY,OAAOxD,EAAG,WAAW,CAACG,MAAM,CAAC,kBAAkB,gBAAgB,KAAOJ,EAAIzJ,KAAK,KAAOyJ,EAAIb,KAAK,iBAAiB,GAAG,KAAO,SAAS+B,GAAG,CAAC,cAAe/B,GAASa,EAAImD,MAAM,cAAehE,IAAOwB,YAAYX,EAAIY,GAAG,CAAC,CAACC,IAAI,aAAaC,GAAG,SAAAC,GAAyB,IAAhB,YAAE2C,GAAa3C,EAAE,MAAO,CAAE2C,EAAazD,EAAG,WAAW,CAACE,YAAY,0CAA0CC,MAAM,CAAC,qBAAqBJ,EAAIP,EAAE,SAAU,SAAS,WAAY,EAAM,cAAcO,EAAIP,EAAE,SAAU,iCAAiC,QAAUO,EAAIjD,YAAY4D,YAAYX,EAAIY,GAAG,CAAC,CAACC,IAAI,kBAAkBC,GAAG,SAAA6C,GAAmB,IAAV,MAAEC,GAAOD,EAAE,MAAO,CAAC3D,EAAIS,GAAG,aAAaT,EAAI6D,GAAG7D,EAAIoD,iBAAiBQ,IAAQ,YAAY,GAAG,CAAC/C,IAAI,SAASC,GAAG,SAAAgD,GAAmB,IAAV,MAAEF,GAAOE,EAAE,MAAO,CAAC9D,EAAIS,GAAG,aAAaT,EAAI6D,GAAG7D,EAAIoD,iBAAiBQ,IAAQ,YAAY,IAAI,MAAK,GAAMG,MAAM,CAACvB,MAAOxC,EAAIoC,YAAa4B,SAAS,SAAUC,GAAMjE,EAAIoC,YAAY6B,CAAG,EAAEC,WAAW,iBAAiBjE,EAAG,KAAK,CAACG,MAAM,CAAC,aAAaJ,EAAIP,EAAE,SAAU,WAAWO,EAAImE,GAAInE,EAAIjD,YAAY,SAASL,GAAO,OAAOuD,EAAG,KAAK,CAACY,IAAInE,EAAMyD,YAAY,oCAAoC,CAACF,EAAG,WAAW,CAACG,MAAM,CAAC,KAAOJ,EAAIoC,cAAgB1F,EAAQ,YAAc,WAAW,aAAasD,EAAIP,EAAE,SAAU,iBAAkB,CAAE4D,KAAMrD,EAAIoD,iBAAiB1G,MAAWwE,GAAG,CAAC,MAAQ,SAASkD,GAAQpE,EAAIoC,YAAc1F,CAAK,IAAI,CAACsD,EAAIS,GAAG,eAAeT,EAAI6D,GAAG7D,EAAIoD,iBAAiB1G,IAAQ,iBAAiB,EAAE,IAAG,GAAG,GAAG,CAACmE,IAAI,UAAUC,GAAG,WAAW,MAAO,CAACb,EAAG,eAAe,CAACG,MAAM,CAAC,OAASJ,EAAImC,aAAa,QAAUnC,EAAIqC,cAAc,YAAcrC,EAAIsD,qBAAqB,UAAW,GAAMpC,GAAG,CAAC,SAAWlB,EAAIiD,gBAAgBjD,EAAIS,GAAG,KAAKR,EAAG,WAAW,CAACG,MAAM,CAAC,KAAO,UAAU,SAAWJ,EAAI3B,SAA0C,IAA/B2B,EAAIO,gBAAgB/I,QAAc0J,GAAG,CAAC,MAAQlB,EAAIkD,iBAAiBvC,YAAYX,EAAIY,GAAG,CAAC,CAACC,IAAI,OAAOC,GAAG,WAAW,MAAO,CAAGd,EAAI3B,QAAyB2B,EAAIU,KAApBT,EAAG,aAAsBD,EAAIS,GAAG,KAAMT,EAAI3B,QAAS4B,EAAG,iBAAiBD,EAAIU,KAAK,EAAE2D,OAAM,MAAS,CAACrE,EAAIS,GAAG,WAAWT,EAAI6D,GAAG7D,EAAIP,EAAE,SAAU,uBAAwB,CAAEqC,YAAa9B,EAAI8B,eAAgB,YAAY,EAAEuC,OAAM,MAAS,CAACrE,EAAIS,GAAG,KAAKT,EAAIS,GAAG,KAAKR,EAAG,kBAAkB,CAACE,YAAY,2BAA2BmE,MAAM,CAAC,wCAAmE,IAA1BtE,EAAIjD,WAAWvF,QAAc4I,MAAM,CAAC,sBAAsBJ,EAAI1D,eAAe,gBAAgB0D,EAAIP,EAAE,SAAU,sCAAsC,SAAWO,EAAIjD,WAAW,QAAUiD,EAAIpJ,aAAa,cAAc,IAAI,wBAAwB,GAAG,oBAAoBoJ,EAAIoC,aAAalB,GAAG,CAAC,eAAelB,EAAI+C,UAAUwB,SAAS,CAAC,SAAW,SAASH,GAAQ,OAAOpE,EAAIyC,WAAW+B,MAAM,KAAMjN,UAAU,GAAGoJ,YAAYX,EAAIY,GAAG,CAAC,CAACC,IAAI,UAAUC,GAAG,SAAA2D,GAA4C,IAAnC,KAAC3J,EAAI,OAAE4J,EAAM,SAAEC,EAAQ,SAAE3D,GAASyD,EAAE,MAAO,CAAEE,EAAU1E,EAAG,KAAK,CAACE,YAAY,iBAAiByE,MAAO,CAAEF,OAAQ,GAAFhM,OAAKgM,EAAM,OAAOtE,MAAM,CAAC,GAAI,gCAAA1H,OAAiCoC,EAAKyC,MAAO,CAACyC,EAAIS,GAAG,aAAaT,EAAI6D,GAAG7D,EAAIoD,iBAAiBtI,EAAKyC,KAAK,cAAc0C,EAAG,OAAO,CAACG,MAAM,CAAC,KAAOJ,EAAIxD,MAAM1B,EAAKyC,IAAI,mBAAkB,EAAK,UAAsC,IAA3ByC,EAAIiB,UAAUnG,EAAKyC,IAAa,SAAWyD,GAAUE,GAAG,CAAC,iBAAiBlB,EAAImB,sBAAsB,QAAQ,EACzjG,GACsB,IIUpB,EACA,KACA,WACA,MAI8B","sources":["webpack:///photos/src/mixins/FetchFilesMixin.js","webpack:///photos/src/services/PhotoSearch.js","webpack:///photos/src/mixins/FilesByMonthMixin.js","webpack:///photos/src/components/Collection/CollectionContent.vue?vue&type=style&index=0&id=550e2ad4&prod&lang=scss&scoped=true","webpack:///photos/src/components/PhotosPicker.vue?vue&type=style&index=0&id=b044636c&prod&lang=scss&scoped=true","webpack://photos/./src/components/Collection/CollectionContent.vue?de63","webpack:///photos/src/components/Collection/CollectionContent.vue","webpack:///photos/src/components/Collection/CollectionContent.vue?vue&type=script&lang=js","webpack://photos/./src/components/Collection/CollectionContent.vue?a590","webpack://photos/./src/components/Collection/CollectionContent.vue?d20d","webpack://photos/./src/components/PhotosPicker.vue?4733","webpack:///photos/src/components/PhotosPicker.vue","webpack:///photos/src/components/PhotosPicker.vue?vue&type=script&lang=js","webpack://photos/./src/components/PhotosPicker.vue?1f6b","webpack://photos/./src/components/PhotosPicker.vue?67e2"],"sourcesContent":["/**\n * @copyright Copyright (c) 2022 Louis Chemineau \n *\n * @author Louis Chemineau \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 .\n *\n */\n\nimport { davGetClient, davRootPath } from '@nextcloud/files'\nimport { joinPaths } from '@nextcloud/paths'\nimport logger from '../services/logger.js'\nimport getPhotos from '../services/PhotoSearch.js'\nimport SemaphoreWithPriority from '../utils/semaphoreWithPriority.js'\nimport AbortControllerMixin from './AbortControllerMixin.js'\nimport store from '../store/index.js'\n\nexport default {\n\tname: 'FetchFilesMixin',\n\n\tmixins: [\n\t\tAbortControllerMixin,\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\terrorFetchingFiles: null,\n\t\t\tloadingFiles: false,\n\t\t\tdoneFetchingFiles: false,\n\t\t\tfetchSemaphore: new SemaphoreWithPriority(1),\n\t\t\tfetchedFileIds: [],\n\t\t}\n\t},\n\n\twatch: {\n\t\t'$route.path'() {\n\t\t\tthis.resetFetchFilesState()\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * @param {object} options - Options to pass to getPhotos.\n\t\t * @param {string[]} [blacklist=[]] - Array of ids to filter out.\n\t\t * @param {boolean} [force=false] - Force fetching even if doneFetchingFiles is true\n\t\t * @return {Promise} - The next batch of data depending on global offset.\n\t\t */\n\t\tasync fetchFiles(options = {}, blacklist = [], force = false) {\n\t\t\tif ((this.doneFetchingFiles && !force) || this.loadingFiles) {\n\t\t\t\treturn []\n\t\t\t}\n\n\t\t\tconst fetchSemaphoreSymbol = await this.fetchSemaphore.acquire()\n\n\t\t\ttry {\n\t\t\t\tthis.errorFetchingFiles = null\n\t\t\t\tthis.loadingFiles = true\n\n\t\t\t\tconst numberOfImagesPerBatch = 200\n\n\t\t\t\t// Load next batch of images\n\t\t\t\tconst fetchedFiles = await getPhotos({\n\t\t\t\t\tfirstResult: this.fetchedFileIds.length,\n\t\t\t\t\tnbResults: numberOfImagesPerBatch,\n\t\t\t\t\t...options,\n\t\t\t\t\tsignal: this.abortController.signal,\n\t\t\t\t})\n\n\t\t\t\t// If we get less files than requested that means we got to the end\n\t\t\t\tif (fetchedFiles.length !== numberOfImagesPerBatch) {\n\t\t\t\t\tthis.doneFetchingFiles = true\n\t\t\t\t}\n\n\t\t\t\tconst fileIds = fetchedFiles\n\t\t\t\t\t.map(file => file.fileid)\n\t\t\t\t\t.filter(fileId => !this.fetchedFileIds.includes(fileId.toString())) // Filter to prevent duplicate fileIds.\n\n\t\t\t\tthis.fetchedFileIds.push(\n\t\t\t\t\t...fileIds\n\t\t\t\t\t\t.map((fileId) => fileId.toString())\n\t\t\t\t\t\t.filter((fileId) => !blacklist.includes(fileId))\n\t\t\t\t)\n\n\t\t\t\tthis.$store.dispatch('appendFiles', fetchedFiles)\n\n\t\t\t\tlogger.debug(`[FetchFilesMixin] Fetched ${fileIds.length} new files: `, fileIds)\n\n\t\t\t\treturn fileIds\n\t\t\t} catch (error) {\n\t\t\t\tif (error.response?.status === 404) {\n\t\t\t\t\tconst sources = store.state.userConfig.photosSourceFolders\n\t\t\t\t\tfor (const source of sources) {\n\t\t\t\t\t\tif (error.response?.data?.match(`File with name /${source} could not be located`) === null) {\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlogger.debug(`The ${source} folder does not exist, creating it.`)\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait davGetClient().createDirectory(joinPaths(davRootPath, source))\n\t\t\t\t\t\t\tthis.resetFetchFilesState()\n\t\t\t\t\t\t\treturn []\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\tthis.errorFetchingFiles = 404\n\t\t\t\t\t\t\tlogger.error('Fail to create source directory', { error })\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if (error.code === 'ERR_CANCELED') {\n\t\t\t\t\treturn []\n\t\t\t\t} else {\n\t\t\t\t\tthis.errorFetchingFiles = error\n\t\t\t\t}\n\n\t\t\t\t// cancelled request, moving on...\n\t\t\t\tlogger.error('Error fetching files', { error })\n\t\t\t} finally {\n\t\t\t\tthis.loadingFiles = false\n\t\t\t\tthis.fetchSemaphore.release(fetchSemaphoreSymbol)\n\t\t\t}\n\n\t\t\treturn []\n\t\t},\n\n\t\tresetFetchFilesState() {\n\t\t\tthis.doneFetchingFiles = false\n\t\t\tthis.errorFetchingFiles = null\n\t\t\tthis.loadingFiles = false\n\t\t\tthis.fetchedFileIds = []\n\t\t},\n\t},\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \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 .\n *\n */\n\nimport { genFileInfo } from '../utils/fileUtils.js'\nimport { allMimes } from './AllowedMimes.js'\nimport client from './DavClient.js'\nimport { props } from './DavRequest.js'\nimport moment from '@nextcloud/moment'\nimport store from '../store/index.js'\nimport { davRootPath } from '@nextcloud/files'\nimport { joinPaths } from '@nextcloud/paths'\n\n/**\n * List files from a folder and filter out unwanted mimes\n *\n * @param {object} [options] used for the cancellable requests\n * @param {number} [options.firstResult=0] Index of the first result that we want (starts at 0)\n * @param {number} [options.nbResults=200] The number of file to fetch\n * @param {string[]} [options.mimesType=allMimes] Mime type of the files\n * @param {boolean} [options.full=false] get full data of the files\n * @param {boolean} [options.onThisDay=false] get only items from this day of year\n * @param {boolean} [options.onlyFavorites=false] get only favorite items\n * @return {Promise} the file list\n */\nexport default async function(options = {}) {\n\t// default function options\n\toptions = {\n\t\tfirstResult: 0,\n\t\tnbResults: 200,\n\t\tmimesType: allMimes,\n\t\tonThisDay: false,\n\t\tonlyFavorites: false,\n\t\t...options,\n\t}\n\n\t// generating the search or condition\n\t// based on the allowed mimetypes\n\tconst orMime = options.mimesType.reduce((str, mime) => `${str}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t${mime}\n\t\t\n\t`, '')\n\n\tconst eqFavorites = options.onlyFavorites\n\t\t? `\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t1\n\t\t\t`\n\t\t: ''\n\n\tconst onThisDay = options.onThisDay\n\t\t? `${Array(20).fill(1)\n\t\t\t.map((_, years) => {\n\t\t\t\tconst start = moment(Date.now()).startOf('day').subtract(3, 'd').subtract(years + 1, 'y')\n\t\t\t\tconst end = moment(Date.now()).endOf('day').add(3, 'd').subtract(years + 1, 'y')\n\t\t\t\treturn `\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${start.format(moment.defaultFormatUtc)}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${end.format(moment.defaultFormatUtc)}\n\t\t\t\t\n\t\t\t`\n\t\t\t}).join('\\n')}`\n\t\t: ''\n\n\tconst sourceFolders = store.state.userConfig.photosSourceFolders\n\t\t.map(folder => `\n\t\t\t\n\t\t\t\t${joinPaths(davRootPath, folder)}\n\t\t\t\tinfinity\n\t\t\t`\n\t\t)\n\t\t.join('\\n')\n\n\toptions = Object.assign({\n\t\tmethod: 'SEARCH',\n\t\theaders: {\n\t\t\t'content-Type': 'text/xml',\n\t\t},\n\t\tdata: `\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t${props}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t${sourceFolders}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t${orMime}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t${eqFavorites}\n\t\t\t\t\t\t\t${onThisDay}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\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\t\n\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\t\n\t\t\t\t\t\t${options.nbResults}\n\t\t\t\t\t\t${options.firstResult}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t`,\n\t\tdeep: true,\n\t\tdetails: true,\n\t}, options)\n\n\tconst response = await client.getDirectoryContents('', options)\n\n\treturn response.data.map(data => genFileInfo(data))\n}\n","/**\n * @copyright Copyright (c) 2022 Louis Chemineau \n *\n * @author Louis Chemineau \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 .\n *\n */\n\nexport default {\n\tname: 'FilesByMonthMixin',\n\n\tcomputed: {\n\t\t/**\n\t\t * @return {Object}\n\t\t */\n\t\tfileIdsByMonth() {\n\t\t\tconst filesByMonth = {}\n\t\t\tfor (const fileId of this.fetchedFileIds) {\n\t\t\t\tconst file = this.files[fileId]\n\t\t\t\tif (file) {\n\t\t\t\t\tfilesByMonth[file.month] = filesByMonth[file.month] ?? []\n\t\t\t\t\tfilesByMonth[file.month].push(file.fileid)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Sort files in sections.\n\t\t\tObject.keys(filesByMonth)\n\t\t\t\t.forEach(month => filesByMonth[month].sort(this.sortFilesByTimestamp))\n\n\t\t\treturn filesByMonth\n\t\t},\n\n\t\t/**\n\t\t * @return {string[]}\n\t\t */\n\t\tmonthsList() {\n\t\t\treturn Object\n\t\t\t\t.keys(this.fileIdsByMonth)\n\t\t\t\t.sort((month1, month2) => month1 > month2 ? -1 : 1)\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * @param {string} fileId1 The first file ID\n\t\t * @param {string} fileId2 The second file ID\n\t\t * @return {-1 | 1}\n\t\t */\n\t\tsortFilesByTimestamp(fileId1, fileId2) {\n\t\t\treturn this.files[fileId1].timestamp > this.files[fileId2].timestamp ? -1 : 1\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, \".collection[data-v-550e2ad4]{display:flex;flex-direction:column}.collection__media[data-v-550e2ad4]{padding:0 64px}@media only screen and (max-width: 1200px){.collection__media[data-v-550e2ad4]{padding:0 4px}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Collection/CollectionContent.vue\"],\"names\":[],\"mappings\":\"AAEA,6BACC,YAAA,CACA,qBAAA,CAEA,oCACC,cAAA,CAEA,2CAHD,oCAIE,aAAA,CAAA\",\"sourcesContent\":[\"$sizes: (\\\"400\\\": (\\\"count\\\": 3, \\\"marginTop\\\": 66, \\\"marginW\\\": 8), \\\"700\\\": (\\\"count\\\": 4, \\\"marginTop\\\": 66, \\\"marginW\\\": 8), \\\"1024\\\": (\\\"count\\\": 5, \\\"marginTop\\\": 66, \\\"marginW\\\": 44), \\\"1280\\\": (\\\"count\\\": 4, \\\"marginTop\\\": 66, \\\"marginW\\\": 44), \\\"1440\\\": (\\\"count\\\": 5, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"1600\\\": (\\\"count\\\": 6, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"2048\\\": (\\\"count\\\": 7, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"2560\\\": (\\\"count\\\": 8, \\\"marginTop\\\": 88, \\\"marginW\\\": 88), \\\"3440\\\": (\\\"count\\\": 9, \\\"marginTop\\\": 88, \\\"marginW\\\": 88), \\\"max\\\": (\\\"count\\\": 10, \\\"marginTop\\\": 88, \\\"marginW\\\": 88));\\n\\n.collection {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\n\\t&__media {\\n\\t\\tpadding: 0 64px;\\n\\n\\t\\t@media only screen and (max-width: 1200px) {\\n\\t\\t\\tpadding: 0 4px;\\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, \"[data-v-b044636c] .photos-picker{-webkit-padding-end:0 !important;padding-inline-end:0 !important}.photos-picker__navigation__month[data-v-b044636c]{margin:4px}.photos-picker__navigation__month-select[data-v-b044636c]{flex:1;-webkit-padding-end:12px;padding-inline-end:12px;-webkit-padding-after:6px;padding-block-end:6px}.photos-picker__file-list[data-v-b044636c]{flex-grow:1;min-width:0;height:100%;padding:0 4px}.photos-picker__file-list--placeholder[data-v-b044636c]{background:var(--color-primary-element-light);border-radius:var(--border-radius-large)}.photos-picker__file-list .section-header[data-v-b044636c]{font-weight:bold;font-size:20px;padding:8px 0 4px 0}.photos-picker__file-list[data-v-b044636c] .empty-content{position:absolute;width:100%;margin-top:0;height:100%;display:flex;flex-direction:column;justify-content:center}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/PhotosPicker.vue\"],\"names\":[],\"mappings\":\"AAEA,iCAEC,gCAAA,CAAA,+BAAA,CAMC,mDAEC,UAAA,CAGD,0DACC,MAAA,CAEA,wBAAA,CAAA,uBAAA,CACA,yBAAA,CAAA,qBAAA,CAIF,2CACC,WAAA,CACA,WAAA,CACA,WAAA,CACA,aAAA,CAEA,wDACC,6CAAA,CACA,wCAAA,CAGD,2DACC,gBAAA,CACA,cAAA,CACA,mBAAA,CAGD,0DACC,iBAAA,CACA,UAAA,CACA,YAAA,CACA,WAAA,CACA,YAAA,CACA,qBAAA,CACA,sBAAA\",\"sourcesContent\":[\"$sizes: (\\\"400\\\": (\\\"count\\\": 3, \\\"marginTop\\\": 66, \\\"marginW\\\": 8), \\\"700\\\": (\\\"count\\\": 4, \\\"marginTop\\\": 66, \\\"marginW\\\": 8), \\\"1024\\\": (\\\"count\\\": 5, \\\"marginTop\\\": 66, \\\"marginW\\\": 44), \\\"1280\\\": (\\\"count\\\": 4, \\\"marginTop\\\": 66, \\\"marginW\\\": 44), \\\"1440\\\": (\\\"count\\\": 5, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"1600\\\": (\\\"count\\\": 6, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"2048\\\": (\\\"count\\\": 7, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"2560\\\": (\\\"count\\\": 8, \\\"marginTop\\\": 88, \\\"marginW\\\": 88), \\\"3440\\\": (\\\"count\\\": 9, \\\"marginTop\\\": 88, \\\"marginW\\\": 88), \\\"max\\\": (\\\"count\\\": 10, \\\"marginTop\\\": 88, \\\"marginW\\\": 88));\\n\\n:deep(.photos-picker) {\\n\\t// remove padding to move scrollbar to the very end\\n\\tpadding-inline-end: 0 !important;\\n}\\n\\n.photos-picker {\\n\\n\\t&__navigation {\\n\\t\\t&__month {\\n\\t\\t\\t// For focus-visible outline\\n\\t\\t\\tmargin: 4px;\\n\\t\\t}\\n\\n\\t\\t&__month-select {\\n\\t\\t\\tflex: 1;\\n\\t\\t\\t// align with other content\\n\\t\\t\\tpadding-inline-end: 12px;\\n\\t\\t\\tpadding-block-end: 6px;\\n\\t\\t}\\n\\t}\\n\\n\\t&__file-list {\\n\\t\\tflex-grow: 1;\\n\\t\\tmin-width: 0;\\n\\t\\theight: 100%;\\n\\t\\tpadding: 0 4px;\\n\\n\\t\\t&--placeholder {\\n\\t\\t\\tbackground: var(--color-primary-element-light);\\n\\t\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\t}\\n\\n\\t\\t.section-header {\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tfont-size: 20px;\\n\\t\\t\\tpadding: 8px 0 4px 0;\\n\\t\\t}\\n\\n\\t\\t:deep .empty-content {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tmargin-top: 0;\\n\\t\\t\\theight: 100%;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\tjustify-content: center;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return ((_vm.collection === undefined && !_vm.loading) || _vm.error === 404)?_c('NcEmptyContent',{staticClass:\"empty-content-with-illustration\",attrs:{\"name\":_vm.t('photos', 'This collection does not exist')}},[_c('FolderMultipleImage',{attrs:{\"slot\":\"icon\"},slot:\"icon\"})],1):(_vm.error)?_c('NcEmptyContent',{attrs:{\"name\":_vm.t('photos', 'An error occurred')}},[_c('AlertCircle',{attrs:{\"slot\":\"icon\"},slot:\"icon\"})],1):_c('div',{staticClass:\"collection\"},[_vm._t(\"header\",null,{\"selectedFileIds\":_vm.selectedFileIds,\"resetSelection\":_vm.resetSelection}),_vm._v(\" \"),(_vm.sortedCollectionFileIds.length === 0 && !_vm.loading)?_vm._t(\"empty-content\"):_vm._e(),_vm._v(\" \"),(_vm.collection !== undefined)?_c('FilesListViewer',{staticClass:\"collection__media\",attrs:{\"container-element\":_vm.appContent,\"file-ids\":_vm.sortedCollectionFileIds,\"base-height\":_vm.isMobile ? 120 : 200,\"loading\":_vm.loading},scopedSlots:_vm._u([{key:\"default\",fn:function({file, distance}){return _c('File',{attrs:{\"file\":_vm.files[file.id],\"allow-selection\":_vm.allowSelection,\"selected\":_vm.selection[file.id] === true,\"distance\":distance},on:{\"click\":_vm.openViewer,\"select-toggled\":_vm.onFileSelectToggle}})}}],null,false,3813029717)}):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollectionContent.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!./CollectionContent.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/postcss-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollectionContent.vue?vue&type=style&index=0&id=550e2ad4&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollectionContent.vue?vue&type=style&index=0&id=550e2ad4&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./CollectionContent.vue?vue&type=template&id=550e2ad4&scoped=true\"\nimport script from \"./CollectionContent.vue?vue&type=script&lang=js\"\nexport * from \"./CollectionContent.vue?vue&type=script&lang=js\"\nimport style0 from \"./CollectionContent.vue?vue&type=style&index=0&id=550e2ad4&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"550e2ad4\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcDialog',{attrs:{\"content-classes\":\"photos-picker\",\"name\":_vm.name,\"open\":_vm.open,\"out-transition\":\"\",\"size\":\"large\"},on:{\"update:open\":(open) => _vm.$emit('update:open', open)},scopedSlots:_vm._u([{key:\"navigation\",fn:function({ isCollapsed }){return [(isCollapsed)?_c('NcSelect',{staticClass:\"photos-picker__navigation__month-select\",attrs:{\"aria-label-listbox\":_vm.t('photos', 'Dates'),\"clearable\":false,\"input-label\":_vm.t('photos', 'Jump to specific date in list'),\"options\":_vm.monthsList},scopedSlots:_vm._u([{key:\"selected-option\",fn:function({ label }){return [_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.dateMonthAndYear(label))+\"\\n\\t\\t\\t\")]}},{key:\"option\",fn:function({ label }){return [_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.dateMonthAndYear(label))+\"\\n\\t\\t\\t\")]}}],null,true),model:{value:(_vm.targetMonth),callback:function ($$v) {_vm.targetMonth=$$v},expression:\"targetMonth\"}}):_c('ul',{attrs:{\"aria-label\":_vm.t('photos', 'Dates')}},_vm._l((_vm.monthsList),function(month){return _c('li',{key:month,staticClass:\"photos-picker__navigation__month\"},[_c('NcButton',{attrs:{\"type\":_vm.targetMonth === month ? 'secondary' : 'tertiary',\"aria-label\":_vm.t('photos', 'Jump to {date}', { date: _vm.dateMonthAndYear(month) })},on:{\"click\":function($event){_vm.targetMonth = month}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.dateMonthAndYear(month))+\"\\n\\t\\t\\t\\t\")])],1)}),0)]}},{key:\"actions\",fn:function(){return [_c('UploadPicker',{attrs:{\"accept\":_vm.allowedMimes,\"context\":_vm.uploadContext,\"destination\":_vm.photosLocationFolder,\"multiple\":true},on:{\"uploaded\":_vm.refreshFiles}}),_vm._v(\" \"),_c('NcButton',{attrs:{\"type\":\"primary\",\"disabled\":_vm.loading || _vm.selectedFileIds.length === 0},on:{\"click\":_vm.emitPickedEvent},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(!_vm.loading)?_c('ImagePlus'):_vm._e(),_vm._v(\" \"),(_vm.loading)?_c('NcLoadingIcon'):_vm._e()]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Add to {destination}', { destination: _vm.destination }))+\"\\n\\t\\t\")])]},proxy:true}])},[_vm._v(\" \"),_vm._v(\" \"),_c('FilesListViewer',{staticClass:\"photos-picker__file-list\",class:{'photos-picker__file-list--placeholder': _vm.monthsList.length === 0},attrs:{\"file-ids-by-section\":_vm.fileIdsByMonth,\"empty-message\":_vm.t('photos', 'There are no photos or videos yet!'),\"sections\":_vm.monthsList,\"loading\":_vm.loadingFiles,\"base-height\":100,\"section-header-height\":50,\"scroll-to-section\":_vm.targetMonth},on:{\"need-content\":_vm.getFiles},nativeOn:{\"focusout\":function($event){return _vm.onFocusOut.apply(null, arguments)}},scopedSlots:_vm._u([{key:\"default\",fn:function({file, height, isHeader, distance}){return [(isHeader)?_c('h3',{staticClass:\"section-header\",style:({ height: `${height}px`}),attrs:{\"id\":`photos-picker-section-header-${file.id}`}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.dateMonthAndYear(file.id))+\"\\n\\t\\t\\t\")]):_c('File',{attrs:{\"file\":_vm.files[file.id],\"allow-selection\":true,\"selected\":_vm.selection[file.id] === true,\"distance\":distance},on:{\"select-toggled\":_vm.onFileSelectToggle}})]}}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PhotosPicker.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!./PhotosPicker.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/postcss-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PhotosPicker.vue?vue&type=style&index=0&id=b044636c&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PhotosPicker.vue?vue&type=style&index=0&id=b044636c&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./PhotosPicker.vue?vue&type=template&id=b044636c&scoped=true\"\nimport script from \"./PhotosPicker.vue?vue&type=script&lang=js\"\nexport * from \"./PhotosPicker.vue?vue&type=script&lang=js\"\nimport style0 from \"./PhotosPicker.vue?vue&type=style&index=0&id=b044636c&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b044636c\",\n null\n \n)\n\nexport default component.exports"],"names":["name","mixins","AbortControllerMixin","data","errorFetchingFiles","loadingFiles","doneFetchingFiles","fetchSemaphore","SemaphoreWithPriority","fetchedFileIds","watch","this","resetFetchFilesState","methods","async","options","arguments","length","undefined","blacklist","force","fetchSemaphoreSymbol","acquire","numberOfImagesPerBatch","fetchedFiles","firstResult","nbResults","mimesType","allMimes","onThisDay","onlyFavorites","orMime","reduce","str","mime","concat","eqFavorites","Array","fill","map","_","years","start","moment","Date","now","startOf","subtract","end","endOf","add","format","join","sourceFolders","store","folder","joinPaths","davRootPath","Object","assign","method","headers","props","deep","details","client","genFileInfo","getPhotos","signal","abortController","fileIds","file","fileid","filter","fileId","includes","toString","push","$store","dispatch","logger","error","_error$response","response","status","sources","source","_error$response2","_error$response2$data","match","davGetClient","createDirectory","code","release","computed","fileIdsByMonth","filesByMonth","files","_filesByMonth$file$mo","month","keys","forEach","sort","sortFilesByTimestamp","monthsList","month1","month2","fileId1","fileId2","timestamp","___CSS_LOADER_EXPORT___","module","id","components","AlertCircle","FolderMultipleImage","NcEmptyContent","FilesListViewer","File","FilesSelectionMixin","isMobile","collection","type","default","collectionFileIds","required","loading","Boolean","allowSelection","Error","Number","appContent","document","getElementById","getters","sortedCollectionFileIds","toSorted","openViewer","OCA","Viewer","open","fileInfo","list","sectionHeader","loadMore","canLoop","t","translate","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","_c","_self","staticClass","attrs","slot","_t","selectedFileIds","resetSelection","_v","_e","scopedSlots","_u","key","fn","_ref","distance","selection","on","onFileSelectToggle","defineComponent","ImagePlus","NcButton","NcDialog","NcLoadingIcon","NcSelect","UploadPicker","FetchFilesMixin","FilesByMonthMixin","String","destination","blacklistIds","emits","setup","useIsMobile","allowedMimes","targetMonth","uploadContext","route","mapGetters","value","onFocusOut","event","relatedTarget","target","focus","preventScroll","getFiles","fetchFiles","refreshFiles","emitPickedEvent","$emit","dateMonthAndYear","date","photosLocationFolder","state","userConfig","_setupProxy","isCollapsed","_ref2","label","_s","_ref3","model","callback","$$v","expression","_l","$event","proxy","class","nativeOn","apply","_ref4","height","isHeader","style"],"sourceRoot":""} \ No newline at end of file diff --git a/js/photos-src_views_FaceContent_vue.js b/js/photos-src_views_FaceContent_vue.js index 272fe0ee1..04144b5f4 100644 --- a/js/photos-src_views_FaceContent_vue.js +++ b/js/photos-src_views_FaceContent_vue.js @@ -1,3 +1,3 @@ /*! For license information please see photos-src_views_FaceContent_vue.js.LICENSE.txt */ -"use strict";(self.webpackChunkphotos=self.webpackChunkphotos||[]).push([["src_views_FaceContent_vue"],{66951:(t,e,n)=>{n.d(e,{Z:()=>u});var o=n(5656),a=n(65358),i=n(59537),s=n(45086),r=n(77958),c=n(3301),l=n(81067),d=n(2161),h=n(80351),p=n.n(h),f=n(30319);var A=n(32114);const u={name:"FetchFilesMixin",mixins:[n(69363).Z],data:()=>({errorFetchingFiles:null,loadingFiles:!1,doneFetchingFiles:!1,fetchSemaphore:new A.Z(1),fetchedFileIds:[]}),watch:{"$route.path"(){this.resetFetchFilesState()}},methods:{async fetchFiles(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(this.doneFetchingFiles&&!n||this.loadingFiles)return[];const h=await this.fetchSemaphore.acquire();try{this.errorFetchingFiles=null,this.loadingFiles=!0;const n=200,o=await async function(){var t;let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e={firstResult:0,nbResults:200,mimesType:c.Oj,onThisDay:!1,onlyFavorites:!1,...e};const n="/files/".concat((0,r.ts)().uid),o=e.mimesType.reduce(((t,e)=>"".concat(t,"\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t").concat(e,"\n\t\t\n\t")),""),a=e.onlyFavorites?"\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t1\n\t\t\t":"",i=e.onThisDay?"".concat(Array(20).fill(1).map(((t,e)=>{const n=p()(Date.now()).startOf("day").subtract(3,"d").subtract(e+1,"y"),o=p()(Date.now()).endOf("day").add(3,"d").subtract(e+1,"y");return"\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t".concat(n.format(p().defaultFormatUtc),"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t").concat(o.format(p().defaultFormatUtc),"\n\t\t\t\t\n\t\t\t")})).join("\n"),""):"";return e=Object.assign({method:"SEARCH",headers:{"content-Type":"text/xml"},data:'\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t'.concat(d.N,"\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t").concat(n,"/").concat(null!==(t=f.Z.state.userConfig.photosSourceFolder)&&void 0!==t?t:"/Photos","\n\t\t\t\t\t\t\tinfinity\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t").concat(o,"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t").concat(a,"\n\t\t\t\t\t\t\t").concat(i,"\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\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\t\n\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\t\n\t\t\t\t\t\t").concat(e.nbResults,"\n\t\t\t\t\t\t").concat(e.firstResult,"\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t"),deep:!0,details:!0},e),(await l.ZP.getDirectoryContents("",e)).data.map((t=>(0,s.AX)(t)))}({firstResult:this.fetchedFileIds.length,nbResults:n,...t,signal:this.abortController.signal});o.length!==n&&(this.doneFetchingFiles=!0);const a=o.map((t=>t.fileid)).filter((t=>!this.fetchedFileIds.includes(t.toString())));return this.fetchedFileIds.push(...a.map((t=>t.toString())).filter((t=>!e.includes(t)))),this.$store.dispatch("appendFiles",o),i.Z.debug("[FetchFilesMixin] Fetched ".concat(a.length," new files: "),a),a}catch(t){var A;if(404===(null===(A=t.response)||void 0===A?void 0:A.status)){var u;this.errorFetchingFiles=404;const t=(0,a.RQ)(o._o,null!==(u=f.Z.state.userConfig.photosSourceFolder)&&void 0!==u?u:"/Photos")+"/";i.Z.debug("Photo source does not exist, creating it.");try{await(0,o.rp)().createDirectory(t)}catch(t){i.Z.error("Fail to create source directory",{error:t})}}else{if("ERR_CANCELED"===t.code)return[];this.errorFetchingFiles=t}i.Z.error("Error fetching files",{error:t}),console.error(t)}finally{this.loadingFiles=!1,this.fetchSemaphore.release(h)}return[]},resetFetchFilesState(){this.doneFetchingFiles=!1,this.errorFetchingFiles=null,this.loadingFiles=!1,this.fetchedFileIds=[]}}}},3640:(t,e,n)=>{n.d(e,{Z:()=>r});var o=n(87537),a=n.n(o),i=n(23645),s=n.n(i)()(a());s.push([t.id,".face-list[data-v-33326436]{display:flex;flex-direction:row;height:350px;flex-wrap:wrap;padding:12px}.loader[data-v-33326436]{margin:25% auto}","",{version:3,sources:["webpack://./src/components/Faces/FaceMergeForm.vue"],names:[],mappings:"AAEA,4BACC,YAAA,CACA,kBAAA,CACA,YAAA,CACA,cAAA,CACA,YAAA,CAGD,yBACC,eAAA",sourcesContent:['$sizes: ("400": ("count": 3, "marginTop": 66, "marginW": 8), "700": ("count": 4, "marginTop": 66, "marginW": 8), "1024": ("count": 5, "marginTop": 66, "marginW": 44), "1280": ("count": 4, "marginTop": 66, "marginW": 44), "1440": ("count": 5, "marginTop": 88, "marginW": 66), "1600": ("count": 6, "marginTop": 88, "marginW": 66), "2048": ("count": 7, "marginTop": 88, "marginW": 66), "2560": ("count": 8, "marginTop": 88, "marginW": 88), "3440": ("count": 9, "marginTop": 88, "marginW": 88), "max": ("count": 10, "marginTop": 88, "marginW": 88));\n\n.face-list {\n\tdisplay: flex;\n\tflex-direction: row;\n\theight: 350px;\n\tflex-wrap: wrap;\n\tpadding: 12px;\n}\n\n.loader {\n\tmargin: 25% auto;\n}\n'],sourceRoot:""}]);const r=s},82622:(t,e,n)=>{n.d(e,{Z:()=>r});var o=n(87537),a=n.n(o),i=n(23645),s=n.n(i)()(a());s.push([t.id,".face[data-v-66312422]{display:flex;flex-direction:column}.face__empty[data-v-66312422]{display:flex;flex-direction:column;align-items:center}.face__empty__button[data-v-66312422]{margin-top:32px}.face__header[data-v-66312422]{display:flex;min-height:60px;align-items:center;justify-content:space-between;position:-webkit-sticky;position:sticky;z-index:3;background:var(--color-main-background);padding:0 64px}@media only screen and (max-width: 1020px){.face__header[data-v-66312422]{padding:0;padding-left:64px}}.face__header__left[data-v-66312422]{height:100%;display:flex;align-items:center}.face__header__title[data-v-66312422]{margin-left:10px}.face__header__title h2[data-v-66312422]{margin-bottom:0}.face__header__loader[data-v-66312422]{margin-left:32px}.face__header__actions[data-v-66312422]{display:flex;align-items:center}.face__header__actions button[data-v-66312422]{margin-left:16px}.face__photos[data-v-66312422]{margin-top:16px;height:100%;min-height:0;padding:0 64px}@media only screen and (max-width: 1020px){.face__photos[data-v-66312422]{padding:0}}.empty-content-with-illustration[data-v-66312422] .empty-content__icon{width:200px;height:200px}.empty-content-with-illustration[data-v-66312422] .empty-content__icon svg{width:200px;height:200px}.rename-form[data-v-66312422]{display:flex;flex-direction:row;align-items:center;height:70px;padding:16px}.rename-form input[data-v-66312422]{width:100%}","",{version:3,sources:["webpack://./src/mixins/FaceContent.scss"],names:[],mappings:"AAqBA,uBACC,YAAA,CACA,qBAAA,CAEA,8BACC,YAAA,CACA,qBAAA,CACA,kBAAA,CAEA,sCACC,eAAA,CAKF,+BACC,YAAA,CACA,eAAA,CACA,kBAAA,CACA,6BAAA,CACA,uBAAA,CAAA,eAAA,CACA,SAAA,CACA,uCAAA,CACA,cAAA,CAEA,2CAVD,+BAWE,SAAA,CACA,iBAAA,CAAA,CAGD,qCACC,WAAA,CACA,YAAA,CACA,kBAAA,CAGD,sCACC,gBAAA,CACA,yCACC,eAAA,CAIF,uCACC,gBAAA,CAGD,wCACC,YAAA,CACA,kBAAA,CAEA,+CACC,gBAAA,CAKH,+BACC,eAAA,CACA,WAAA,CACA,YAAA,CACA,cAAA,CAEA,2CAND,+BAOE,SAAA,CAAA,CAKH,uEACC,WAAA,CACA,YAAA,CAEA,2EACC,WAAA,CACA,YAAA,CAIF,8BACC,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,WAAA,CACA,YAAA,CAEA,oCACC,UAAA",sourcesContent:["/**\n * @copyright Copyright (c) 2023 Marcel Klehr \n *\n * @author Marcel Klehr \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 .\n *\n */\n.face {\n\tdisplay: flex;\n\tflex-direction: column;\n\n\t&__empty {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\n\t\t&__button {\n\t\t\tmargin-top: 32px;\n\t\t}\n\n\t}\n\n\t&__header {\n\t\tdisplay: flex;\n\t\tmin-height: 60px;\n\t\talign-items: center;\n\t\tjustify-content: space-between;\n\t\tposition: sticky;\n\t\tz-index: 3;\n\t\tbackground: var(--color-main-background);\n\t\tpadding: 0 64px;\n\n\t\t@media only screen and (max-width: 1020px) {\n\t\t\tpadding: 0;\n\t\t\tpadding-left: 64px;\n\t\t}\n\n\t\t&__left {\n\t\t\theight: 100%;\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t}\n\n\t\t&__title {\n\t\t\tmargin-left: 10px;\n\t\t\th2 {\n\t\t\t\tmargin-bottom: 0;\n\t\t\t}\n\t\t}\n\n\t\t&__loader {\n\t\t\tmargin-left: 32px;\n\t\t}\n\n\t\t&__actions {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\n\t\t\tbutton {\n\t\t\t\tmargin-left: 16px;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__photos {\n\t\tmargin-top: 16px;\n\t\theight: 100%;\n\t\tmin-height: 0; // Prevent it from overflowing in a flex context.\n\t\tpadding: 0 64px;\n\n\t\t@media only screen and (max-width: 1020px) {\n\t\t\tpadding: 0;\n\t\t}\n\t}\n}\n\n.empty-content-with-illustration :deep .empty-content__icon {\n\twidth: 200px;\n\theight: 200px;\n\n\tsvg {\n\t\twidth: 200px;\n\t\theight: 200px;\n\t}\n}\n\n.rename-form {\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n\theight: 70px;\n\tpadding: 16px;\n\n\tinput {\n\t\twidth: 100%;\n\t}\n}\n"],sourceRoot:""}]);const r=s},35406:(t,e,n)=>{n.d(e,{Z:()=>_});var o=n(20629),a=n(46116),i=n(99751);const s={name:"FaceMergeForm",components:{FaceCover:n(4294).Z},mixins:[a.Z,i.Z],props:{firstFace:{type:String,required:!0}},data:()=>({loading:!1}),computed:{...(0,o.Se)(["files","faces","facesFiles"]),filteredFaces(){return Object.values(this.faces).filter((t=>t.basename!==this.firstFace)).sort(((t,e)=>t.props.nbItems&&e.props.nbItems?e.props.nbItems-t.props.nbItems:this.facesFiles[e.basename]&&this.facesFiles[t.basename]?this.facesFiles[e.basename].length-this.facesFiles[t.basename].length:0))}},methods:{handleSelect(t){this.$emit("select",t),this.loading=!0}}};var r=n(93379),c=n.n(r),l=n(7795),d=n.n(l),h=n(90569),p=n.n(h),f=n(3565),A=n.n(f),u=n(19216),m=n.n(u),g=n(44589),C=n.n(g),F=n(3640),v={};v.styleTagTransform=C(),v.setAttributes=A(),v.insert=p().bind(null,"head"),v.domAPI=d(),v.insertStyleElement=m();c()(F.Z,v);F.Z&&F.Z.locals&&F.Z.locals;const _=(0,n(51900).Z)(s,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"merge-form face-list"},t._l(t.filteredFaces,(function(n){return e("FaceCover",{key:n.basename,attrs:{"base-name":n.basename,small:""},on:{click:function(e){return t.handleSelect(n.basename)}}})})),1)}),[],!1,null,"33326436",null).exports},6443:(t,e,n)=>{n.r(e),n.d(e,{default:()=>L});var o=n(20629),a=n(77531),i=n(44893),s=n(84320),r=n(58613),c=n(34020),l=n(56855),d=n(18667),h=n(69254),p=n(73981),f=n(39337),A=n(64882),u=n(66951),m=n(98171),g=n(97519),C=n(64811),F=n(59537),v=n(99751),_=n(20144),y=n(35406);const x={name:"FaceContent",components:{Pencil:a.Z,Star:r.Z,Download:c.Z,Close:i.Z,AlertCircle:s.Z,Send:l.Z,Merge:d.Z,ArrowLeft:h.Z,AccountBoxMultipleOutline:f.Z,FaceMergeForm:y.Z,FilesListViewer:g.Z,File:C.Z,NcLoadingIcon:A.lb,NcEmptyContent:A.SL,NcActions:A.O3,NcActionButton:A.Js,NcDialog:A.a0,NcButton:A.P2,AccountSwitch:p.Z},directives:{focus(t){_.ZP.nextTick((()=>t.focus()))}},mixins:[v.Z,u.Z,m.Z],props:{faceName:{type:String,default:"/"}},data:()=>({showMoveModal:!1,showMergeModal:!1,showRenameModal:!1,loadingCount:0,appContent:document.getElementById("app-content-vue")}),computed:{...(0,o.Se)(["files","facesFiles"]),face(){return this.faces[this.faceName]},faceFileIds(){return this.facesFiles[this.faceName]||[]},shouldFavoriteSelection(){return this.selectedFileIds.some((t=>0===this.$store.state.files.files[t].favorite))}},watch:{face(){this.face&&this.fetchFaceContent(this.faceName)}},mounted(){this.fetchFaceContent(this.faceName)},methods:{...(0,o.nv)(["appendFiles","deleteFace","renameFace","downloadFiles","toggleFavoriteForFiles","removeFilesFromFace","moveFilesToFace"]),openViewer(t){const e=this.files[t];OCA.Viewer.open({path:"/"+e.filename.split("/").slice(3).join("/"),list:this.faceFileIds.map((t=>({...this.files[t],basename:this.files[t].basename.split("-").slice(1).join("-")}))).filter((t=>!t.sectionHeader)),loadMore:e.loadMore?async()=>await e.loadMore(!0):()=>[],canLoop:e.canLoop})},async handleRemoveFilesFromFace(t){try{this.loadingCount++,await this.removeFilesFromFace({faceName:this.faceName,fileIdsToRemove:t}),this.resetSelection()}catch(t){F.Z.error(t)}finally{this.loadingCount--}},async handleDeleteFace(){try{this.loadingCount++,await this.deleteFace({faceName:this.faceName}),this.$router.push("/faces")}catch(t){F.Z.error(t)}finally{this.loadingCount--}},async handleRenameFace(t){try{this.loadingCount++,this.showRenameModal=!1;const e=this.faceName;await this.renameFace({oldName:e,faceName:t}),this.$router.push({name:"facecontent",params:{faceName:t}})}catch(t){F.Z.error(t)}finally{this.loadingCount--}},async handleMerge(t){try{this.loadingCount++,await this.moveFilesToFace({oldFace:this.faceName,faceName:t,fileIdsToMove:this.facesFiles[this.faceName]}),await this.deleteFace({faceName:this.faceName}),this.showMergeModal=!1,this.$router.push({name:"facecontent",params:{faceName:t}})}catch(t){F.Z.error(t)}finally{this.loadingCount--}},async handleMove(t,e){try{this.loadingCount++,await this.moveFilesToFace({oldFace:this.faceName,faceName:t,fileIdsToMove:e}),this.showMoveModal=!1}catch(t){F.Z.error(t)}finally{this.loadingCount--}},async favoriteSelection(){try{this.loadingCount++,await this.toggleFavoriteForFiles({fileIds:this.selectedFileIds,favoriteState:!0})}catch(t){F.Z.error(t)}finally{this.loadingCount--}},async unFavoriteSelection(){try{this.loadingCount++,await this.toggleFavoriteForFiles({fileIds:this.selectedFileIds,favoriteState:!1})}catch(t){F.Z.error(t)}finally{this.loadingCount--}},async downloadSelection(){try{this.loadingCount++,await this.downloadFiles(this.selectedFileIds)}catch(t){F.Z.error(t)}finally{this.loadingCount--}}}};var w=n(93379),b=n.n(w),k=n(7795),N=n.n(k),S=n(90569),M=n.n(S),Z=n(3565),I=n.n(Z),B=n(19216),R=n.n(B),T=n(44589),E=n.n(T),D=n(82622),P={};P.styleTagTransform=E(),P.setAttributes=I(),P.insert=M().bind(null,"head"),P.domAPI=N(),P.insertStyleElement=R();b()(D.Z,P);D.Z&&D.Z.locals&&D.Z.locals;const L=(0,n(51900).Z)(x,(function(){var t=this,e=t._self._c;return void 0!==t.face||t.loadingFiles||t.loadingFaces?t.errorFetchingFiles||t.errorFetchingFaces?e("NcEmptyContent",{scopedSlots:t._u([{key:"icon",fn:function(){return[e("AlertCircle")]},proxy:!0}])},[t._v("\n\t"+t._s(t.t("photos","An error occurred"))+"\n")]):e("div",{staticClass:"face"},[e("div",{staticClass:"face__header"},[e("div",{staticClass:"face__header__left"},[e("NcActions",[e("NcActionButton",{on:{click:function(e){return t.$router.push("/faces/")}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("ArrowLeft")]},proxy:!0}])},[t._v(t._s(t.t("photos","Back"))+"\n\t\t\t\t")])],1),t._v(" "),e("div",{staticClass:"face__header__title"},[void 0!==t.face?e("h2",{class:{"face-name":!0,"hidden-visually":t.face.basename.match(/^[0-9]+$/)}},[t._v("\n\t\t\t\t\t"+t._s(t.face.basename)+"\n\t\t\t\t")]):t._e()]),t._v(" "),t.loadingCount>0||t.loadingFaces?e("NcLoadingIcon"):t._e()],1),t._v(" "),void 0!==t.face?e("div",{staticClass:"face__header__actions"},[e("NcActions",[e("NcActionButton",{attrs:{"close-after-click":!0,"aria-label":t.t("photos","Rename person")},on:{click:function(e){t.showRenameModal=!0}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Pencil")]},proxy:!0}],null,!1,514409694)},[t._v("\n\t\t\t\t\t"+t._s(t.t("photos","Rename person"))+"\n\t\t\t\t")])],1),t._v(" "),e("NcActions",{attrs:{"force-menu":!0}},[Object.keys(t.faces).length>1?e("NcActionButton",{attrs:{"close-after-click":!0,"aria-label":t.t("photos","Merge with different person")},on:{click:function(e){t.showMergeModal=!0}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Merge")]},proxy:!0}],null,!1,3117189691)},[t._v("\n\t\t\t\t\t"+t._s(t.t("photos","Merge with different person"))+"\n\t\t\t\t")]):t._e(),t._v(" "),t.selectedFileIds.length?[e("NcActionButton",{attrs:{"close-after-click":!0,"aria-label":t.t("photos","Download selected files")},on:{click:t.downloadSelection}},[e("Download",{attrs:{slot:"icon"},slot:"icon"}),t._v("\n\t\t\t\t\t\t"+t._s(t.t("photos","Download selected photos"))+"\n\t\t\t\t\t")],1),t._v(" "),t.shouldFavoriteSelection?e("NcActionButton",{attrs:{"close-after-click":!0,"aria-label":t.t("photos","Mark selection as favorite")},on:{click:t.favoriteSelection}},[e("Star",{attrs:{slot:"icon"},slot:"icon"}),t._v("\n\t\t\t\t\t\t"+t._s(t.t("photos","Favorite"))+"\n\t\t\t\t\t")],1):e("NcActionButton",{attrs:{"close-after-click":!0,"aria-label":t.t("photos","Remove selection from favorites")},on:{click:t.unFavoriteSelection}},[e("Star",{attrs:{slot:"icon"},slot:"icon"}),t._v("\n\t\t\t\t\t\t"+t._s(t.t("photos","Remove from favorites"))+"\n\t\t\t\t\t")],1),t._v(" "),e("NcActionButton",{attrs:{"close-after-click":!0},on:{click:function(e){t.showMoveModal=!0}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("AccountSwitch")]},proxy:!0}],null,!1,2937983280)},[t._v("\n\t\t\t\t\t\t"+t._s(t.n("photos","Move photo to a different person","Move photos to a different person",t.selectedFileIds.length))+"\n\t\t\t\t\t")]),t._v(" "),e("NcActionButton",{attrs:{"close-after-click":!0},on:{click:function(e){return t.handleRemoveFilesFromFace(t.selectedFileIds)}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Close")]},proxy:!0}],null,!1,1051939733)},[t._v("\n\t\t\t\t\t\t"+t._s(t.n("photos","Remove photo from person","Remove photos from person",t.selectedFileIds.length))+"\n\t\t\t\t\t")])]:t._e(),t._v(" "),e("NcActionButton",{attrs:{"close-after-click":!0},on:{click:t.handleDeleteFace},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Close")]},proxy:!0}],null,!1,1051939733)},[t._v("\n\t\t\t\t\t"+t._s(t.t("photos","Remove person"))+"\n\t\t\t\t")])],2)],1):t._e()]),t._v(" "),void 0!==t.face?e("FilesListViewer",{staticClass:"face__photos",attrs:{"container-element":t.appContent,"file-ids":t.faceFileIds,loading:t.loadingFiles||t.loadingFaces},scopedSlots:t._u([{key:"default",fn:function(n){let{file:o,distance:a}=n;return e("File",{attrs:{file:t.files[o.id],"allow-selection":!0,selected:!0===t.selection[o.id],distance:a},on:{click:t.openViewer,"select-toggled":t.onFileSelectToggle}})}}],null,!1,2716306842)}):t._e(),t._v(" "),t.showRenameModal?e("NcDialog",{attrs:{name:t.t("photos","Rename person"),"close-on-click-outside":"",size:"small"},on:{closing:function(e){t.showRenameModal=!1}},scopedSlots:t._u([{key:"actions",fn:function(){return[e("NcButton",{attrs:{"aria-label":t.t("photos","Save."),type:"primary",disabled:t.$refs.nameInput&&""===t.$refs.nameInput.value.trim()},on:{click:function(e){return t.handleRenameFace(t.$refs.nameInput.value)}},scopedSlots:t._u([{key:"icon",fn:function(){return[t.loadingCount?e("NcLoadingIcon"):e("Send")]},proxy:!0}],null,!1,564208483)},[t._v("\n\t\t\t\t"+t._s(t.t("photos","Save"))+"\n\t\t\t")])]},proxy:!0}],null,!1,4139225602)},[e("div",{staticClass:"rename-form"},[e("input",{directives:[{name:"focus",rawName:"v-focus"}],ref:"nameInput",attrs:{type:"text",name:"name",required:"",placeholder:t.t("photos","Name of this person")},domProps:{value:t.faceName},on:{keydown:function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:t.handleRenameFace(t.$refs.nameInput.value)}}})])]):t._e(),t._v(" "),t.showMergeModal?e("NcDialog",{attrs:{name:t.t("photos","Merge person"),"close-on-click-outside":"",size:"normal"},on:{closing:function(e){t.showMergeModal=!1}}},[e("FaceMergeForm",{attrs:{"first-face":t.faceName},on:{select:function(e){return t.handleMerge(e)}}})],1):t._e(),t._v(" "),t.showMoveModal?e("NcDialog",{attrs:{name:t.t("photos","Move to different person"),"close-on-click-outside":"",size:"normal"},on:{closing:function(e){t.showMoveModal=!1}}},[e("FaceMergeForm",{attrs:{"first-face":t.faceName},on:{select:function(e){return t.handleMove(e,t.selectedFileIds)}}})],1):t._e()],1):e("NcEmptyContent",{staticClass:"empty-content-with-illustration",scopedSlots:t._u([{key:"icon",fn:function(){return[e("AccountBoxMultipleOutline")]},proxy:!0}],null,!1,2861705255)},[t._v("\n\t"+t._s(t.t("photos","This person could not be found"))+"\n")])}),[],!1,null,"66312422",null).exports}}]); -//# sourceMappingURL=photos-src_views_FaceContent_vue.js.map?v=33a3034bac841c76f16a \ No newline at end of file +"use strict";(self.webpackChunkphotos=self.webpackChunkphotos||[]).push([["src_views_FaceContent_vue"],{66951:(t,e,n)=>{n.d(e,{Z:()=>A});var o=n(5656),a=n(65358),i=n(59537),s=n(45086),r=n(3301),c=n(81067),l=n(2161),d=n(80351),h=n.n(d),f=n(30319);var p=n(32114);const A={name:"FetchFilesMixin",mixins:[n(69363).Z],data:()=>({errorFetchingFiles:null,loadingFiles:!1,doneFetchingFiles:!1,fetchSemaphore:new p.Z(1),fetchedFileIds:[]}),watch:{"$route.path"(){this.resetFetchFilesState()}},methods:{async fetchFiles(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(this.doneFetchingFiles&&!n||this.loadingFiles)return[];const d=await this.fetchSemaphore.acquire();try{this.errorFetchingFiles=null,this.loadingFiles=!0;const n=200,d=await async function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};t={firstResult:0,nbResults:200,mimesType:r.Oj,onThisDay:!1,onlyFavorites:!1,...t};const e=t.mimesType.reduce(((t,e)=>"".concat(t,"\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t").concat(e,"\n\t\t\n\t")),""),n=t.onlyFavorites?"\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t1\n\t\t\t":"",i=t.onThisDay?"".concat(Array(20).fill(1).map(((t,e)=>{const n=h()(Date.now()).startOf("day").subtract(3,"d").subtract(e+1,"y"),o=h()(Date.now()).endOf("day").add(3,"d").subtract(e+1,"y");return"\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t".concat(n.format(h().defaultFormatUtc),"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t").concat(o.format(h().defaultFormatUtc),"\n\t\t\t\t\n\t\t\t")})).join("\n"),""):"",d=f.Z.state.userConfig.photosSourceFolders.map((t=>"\n\t\t\t\n\t\t\t\t".concat((0,a.RQ)(o._o,t),"\n\t\t\t\tinfinity\n\t\t\t"))).join("\n");return t=Object.assign({method:"SEARCH",headers:{"content-Type":"text/xml"},data:'\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t'.concat(l.N,"\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t").concat(d,"\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t").concat(e,"\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t").concat(n,"\n\t\t\t\t\t\t\t").concat(i,"\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\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\t\n\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\t\n\t\t\t\t\t\t").concat(t.nbResults,"\n\t\t\t\t\t\t").concat(t.firstResult,"\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t"),deep:!0,details:!0},t),(await c.ZP.getDirectoryContents("",t)).data.map((t=>(0,s.AX)(t)))}({firstResult:this.fetchedFileIds.length,nbResults:n,...t,signal:this.abortController.signal});d.length!==n&&(this.doneFetchingFiles=!0);const p=d.map((t=>t.fileid)).filter((t=>!this.fetchedFileIds.includes(t.toString())));return this.fetchedFileIds.push(...p.map((t=>t.toString())).filter((t=>!e.includes(t)))),this.$store.dispatch("appendFiles",d),i.Z.debug("[FetchFilesMixin] Fetched ".concat(p.length," new files: "),p),p}catch(t){var p;if(404===(null===(p=t.response)||void 0===p?void 0:p.status)){const e=f.Z.state.userConfig.photosSourceFolders;for(const n of e){var A,u;if(null!==(null===(A=t.response)||void 0===A||null===(u=A.data)||void 0===u?void 0:u.match("File with name /".concat(n," could not be located")))){i.Z.debug("The ".concat(n," folder does not exist, creating it."));try{return await(0,o.rp)().createDirectory((0,a.RQ)(o._o,n)),this.resetFetchFilesState(),[]}catch(t){this.errorFetchingFiles=404,i.Z.error("Fail to create source directory",{error:t})}}}}else{if("ERR_CANCELED"===t.code)return[];this.errorFetchingFiles=t}i.Z.error("Error fetching files",{error:t})}finally{this.loadingFiles=!1,this.fetchSemaphore.release(d)}return[]},resetFetchFilesState(){this.doneFetchingFiles=!1,this.errorFetchingFiles=null,this.loadingFiles=!1,this.fetchedFileIds=[]}}}},3640:(t,e,n)=>{n.d(e,{Z:()=>r});var o=n(87537),a=n.n(o),i=n(23645),s=n.n(i)()(a());s.push([t.id,".face-list[data-v-33326436]{display:flex;flex-direction:row;height:350px;flex-wrap:wrap;padding:12px}.loader[data-v-33326436]{margin:25% auto}","",{version:3,sources:["webpack://./src/components/Faces/FaceMergeForm.vue"],names:[],mappings:"AAEA,4BACC,YAAA,CACA,kBAAA,CACA,YAAA,CACA,cAAA,CACA,YAAA,CAGD,yBACC,eAAA",sourcesContent:['$sizes: ("400": ("count": 3, "marginTop": 66, "marginW": 8), "700": ("count": 4, "marginTop": 66, "marginW": 8), "1024": ("count": 5, "marginTop": 66, "marginW": 44), "1280": ("count": 4, "marginTop": 66, "marginW": 44), "1440": ("count": 5, "marginTop": 88, "marginW": 66), "1600": ("count": 6, "marginTop": 88, "marginW": 66), "2048": ("count": 7, "marginTop": 88, "marginW": 66), "2560": ("count": 8, "marginTop": 88, "marginW": 88), "3440": ("count": 9, "marginTop": 88, "marginW": 88), "max": ("count": 10, "marginTop": 88, "marginW": 88));\n\n.face-list {\n\tdisplay: flex;\n\tflex-direction: row;\n\theight: 350px;\n\tflex-wrap: wrap;\n\tpadding: 12px;\n}\n\n.loader {\n\tmargin: 25% auto;\n}\n'],sourceRoot:""}]);const r=s},82622:(t,e,n)=>{n.d(e,{Z:()=>r});var o=n(87537),a=n.n(o),i=n(23645),s=n.n(i)()(a());s.push([t.id,".face[data-v-66312422]{display:flex;flex-direction:column}.face__empty[data-v-66312422]{display:flex;flex-direction:column;align-items:center}.face__empty__button[data-v-66312422]{margin-top:32px}.face__header[data-v-66312422]{display:flex;min-height:60px;align-items:center;justify-content:space-between;position:-webkit-sticky;position:sticky;z-index:3;background:var(--color-main-background);padding:0 64px}@media only screen and (max-width: 1020px){.face__header[data-v-66312422]{padding:0;padding-left:64px}}.face__header__left[data-v-66312422]{height:100%;display:flex;align-items:center}.face__header__title[data-v-66312422]{margin-left:10px}.face__header__title h2[data-v-66312422]{margin-bottom:0}.face__header__loader[data-v-66312422]{margin-left:32px}.face__header__actions[data-v-66312422]{display:flex;align-items:center}.face__header__actions button[data-v-66312422]{margin-left:16px}.face__photos[data-v-66312422]{margin-top:16px;height:100%;min-height:0;padding:0 64px}@media only screen and (max-width: 1020px){.face__photos[data-v-66312422]{padding:0}}.empty-content-with-illustration[data-v-66312422] .empty-content__icon{width:200px;height:200px}.empty-content-with-illustration[data-v-66312422] .empty-content__icon svg{width:200px;height:200px}.rename-form[data-v-66312422]{display:flex;flex-direction:row;align-items:center;height:70px;padding:16px}.rename-form input[data-v-66312422]{width:100%}","",{version:3,sources:["webpack://./src/mixins/FaceContent.scss"],names:[],mappings:"AAqBA,uBACC,YAAA,CACA,qBAAA,CAEA,8BACC,YAAA,CACA,qBAAA,CACA,kBAAA,CAEA,sCACC,eAAA,CAKF,+BACC,YAAA,CACA,eAAA,CACA,kBAAA,CACA,6BAAA,CACA,uBAAA,CAAA,eAAA,CACA,SAAA,CACA,uCAAA,CACA,cAAA,CAEA,2CAVD,+BAWE,SAAA,CACA,iBAAA,CAAA,CAGD,qCACC,WAAA,CACA,YAAA,CACA,kBAAA,CAGD,sCACC,gBAAA,CACA,yCACC,eAAA,CAIF,uCACC,gBAAA,CAGD,wCACC,YAAA,CACA,kBAAA,CAEA,+CACC,gBAAA,CAKH,+BACC,eAAA,CACA,WAAA,CACA,YAAA,CACA,cAAA,CAEA,2CAND,+BAOE,SAAA,CAAA,CAKH,uEACC,WAAA,CACA,YAAA,CAEA,2EACC,WAAA,CACA,YAAA,CAIF,8BACC,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,WAAA,CACA,YAAA,CAEA,oCACC,UAAA",sourcesContent:["/**\n * @copyright Copyright (c) 2023 Marcel Klehr \n *\n * @author Marcel Klehr \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 .\n *\n */\n.face {\n\tdisplay: flex;\n\tflex-direction: column;\n\n\t&__empty {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\n\t\t&__button {\n\t\t\tmargin-top: 32px;\n\t\t}\n\n\t}\n\n\t&__header {\n\t\tdisplay: flex;\n\t\tmin-height: 60px;\n\t\talign-items: center;\n\t\tjustify-content: space-between;\n\t\tposition: sticky;\n\t\tz-index: 3;\n\t\tbackground: var(--color-main-background);\n\t\tpadding: 0 64px;\n\n\t\t@media only screen and (max-width: 1020px) {\n\t\t\tpadding: 0;\n\t\t\tpadding-left: 64px;\n\t\t}\n\n\t\t&__left {\n\t\t\theight: 100%;\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t}\n\n\t\t&__title {\n\t\t\tmargin-left: 10px;\n\t\t\th2 {\n\t\t\t\tmargin-bottom: 0;\n\t\t\t}\n\t\t}\n\n\t\t&__loader {\n\t\t\tmargin-left: 32px;\n\t\t}\n\n\t\t&__actions {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\n\t\t\tbutton {\n\t\t\t\tmargin-left: 16px;\n\t\t\t}\n\t\t}\n\t}\n\n\t&__photos {\n\t\tmargin-top: 16px;\n\t\theight: 100%;\n\t\tmin-height: 0; // Prevent it from overflowing in a flex context.\n\t\tpadding: 0 64px;\n\n\t\t@media only screen and (max-width: 1020px) {\n\t\t\tpadding: 0;\n\t\t}\n\t}\n}\n\n.empty-content-with-illustration :deep .empty-content__icon {\n\twidth: 200px;\n\theight: 200px;\n\n\tsvg {\n\t\twidth: 200px;\n\t\theight: 200px;\n\t}\n}\n\n.rename-form {\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n\theight: 70px;\n\tpadding: 16px;\n\n\tinput {\n\t\twidth: 100%;\n\t}\n}\n"],sourceRoot:""}]);const r=s},35406:(t,e,n)=>{n.d(e,{Z:()=>_});var o=n(20629),a=n(46116),i=n(99751);const s={name:"FaceMergeForm",components:{FaceCover:n(4294).Z},mixins:[a.Z,i.Z],props:{firstFace:{type:String,required:!0}},data:()=>({loading:!1}),computed:{...(0,o.Se)(["files","faces","facesFiles"]),filteredFaces(){return Object.values(this.faces).filter((t=>t.basename!==this.firstFace)).sort(((t,e)=>t.props.nbItems&&e.props.nbItems?e.props.nbItems-t.props.nbItems:this.facesFiles[e.basename]&&this.facesFiles[t.basename]?this.facesFiles[e.basename].length-this.facesFiles[t.basename].length:0))}},methods:{handleSelect(t){this.$emit("select",t),this.loading=!0}}};var r=n(93379),c=n.n(r),l=n(7795),d=n.n(l),h=n(90569),f=n.n(h),p=n(3565),A=n.n(p),u=n(19216),m=n.n(u),g=n(44589),C=n.n(g),F=n(3640),v={};v.styleTagTransform=C(),v.setAttributes=A(),v.insert=f().bind(null,"head"),v.domAPI=d(),v.insertStyleElement=m();c()(F.Z,v);F.Z&&F.Z.locals&&F.Z.locals;const _=(0,n(51900).Z)(s,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"merge-form face-list"},t._l(t.filteredFaces,(function(n){return e("FaceCover",{key:n.basename,attrs:{"base-name":n.basename,small:""},on:{click:function(e){return t.handleSelect(n.basename)}}})})),1)}),[],!1,null,"33326436",null).exports},6443:(t,e,n)=>{n.r(e),n.d(e,{default:()=>W});var o=n(20629),a=n(77531),i=n(44893),s=n(84320),r=n(58613),c=n(34020),l=n(56855),d=n(18667),h=n(69254),f=n(73981),p=n(39337),A=n(64882),u=n(66951),m=n(98171),g=n(97519),C=n(64811),F=n(59537),v=n(99751),_=n(20144),y=n(35406);const x={name:"FaceContent",components:{Pencil:a.Z,Star:r.Z,Download:c.Z,Close:i.Z,AlertCircle:s.Z,Send:l.Z,Merge:d.Z,ArrowLeft:h.Z,AccountBoxMultipleOutline:p.Z,FaceMergeForm:y.Z,FilesListViewer:g.Z,File:C.Z,NcLoadingIcon:A.lb,NcEmptyContent:A.SL,NcActions:A.O3,NcActionButton:A.Js,NcDialog:A.a0,NcButton:A.P2,AccountSwitch:f.Z},directives:{focus(t){_.ZP.nextTick((()=>t.focus()))}},mixins:[v.Z,u.Z,m.Z],props:{faceName:{type:String,default:"/"}},data:()=>({showMoveModal:!1,showMergeModal:!1,showRenameModal:!1,loadingCount:0,appContent:document.getElementById("app-content-vue")}),computed:{...(0,o.Se)(["files","facesFiles"]),face(){return this.faces[this.faceName]},faceFileIds(){return this.facesFiles[this.faceName]||[]},shouldFavoriteSelection(){return this.selectedFileIds.some((t=>0===this.$store.state.files.files[t].favorite))}},watch:{face(){this.face&&this.fetchFaceContent(this.faceName)}},mounted(){this.fetchFaceContent(this.faceName)},methods:{...(0,o.nv)(["appendFiles","deleteFace","renameFace","downloadFiles","toggleFavoriteForFiles","removeFilesFromFace","moveFilesToFace"]),openViewer(t){const e=this.files[t];OCA.Viewer.open({path:"/"+e.filename.split("/").slice(3).join("/"),list:this.faceFileIds.map((t=>({...this.files[t],basename:this.files[t].basename.split("-").slice(1).join("-")}))).filter((t=>!t.sectionHeader)),loadMore:e.loadMore?async()=>await e.loadMore(!0):()=>[],canLoop:e.canLoop})},async handleRemoveFilesFromFace(t){try{this.loadingCount++,await this.removeFilesFromFace({faceName:this.faceName,fileIdsToRemove:t}),this.resetSelection()}catch(t){F.Z.error(t)}finally{this.loadingCount--}},async handleDeleteFace(){try{this.loadingCount++,await this.deleteFace({faceName:this.faceName}),this.$router.push("/faces")}catch(t){F.Z.error(t)}finally{this.loadingCount--}},async handleRenameFace(t){try{this.loadingCount++,this.showRenameModal=!1;const e=this.faceName;await this.renameFace({oldName:e,faceName:t}),this.$router.push({name:"facecontent",params:{faceName:t}})}catch(t){F.Z.error(t)}finally{this.loadingCount--}},async handleMerge(t){try{this.loadingCount++,await this.moveFilesToFace({oldFace:this.faceName,faceName:t,fileIdsToMove:this.facesFiles[this.faceName]}),await this.deleteFace({faceName:this.faceName}),this.showMergeModal=!1,this.$router.push({name:"facecontent",params:{faceName:t}})}catch(t){F.Z.error(t)}finally{this.loadingCount--}},async handleMove(t,e){try{this.loadingCount++,await this.moveFilesToFace({oldFace:this.faceName,faceName:t,fileIdsToMove:e}),this.showMoveModal=!1}catch(t){F.Z.error(t)}finally{this.loadingCount--}},async favoriteSelection(){try{this.loadingCount++,await this.toggleFavoriteForFiles({fileIds:this.selectedFileIds,favoriteState:!0})}catch(t){F.Z.error(t)}finally{this.loadingCount--}},async unFavoriteSelection(){try{this.loadingCount++,await this.toggleFavoriteForFiles({fileIds:this.selectedFileIds,favoriteState:!1})}catch(t){F.Z.error(t)}finally{this.loadingCount--}},async downloadSelection(){try{this.loadingCount++,await this.downloadFiles(this.selectedFileIds)}catch(t){F.Z.error(t)}finally{this.loadingCount--}}}};var w=n(93379),b=n.n(w),k=n(7795),N=n.n(k),S=n(90569),M=n.n(S),Z=n(3565),I=n.n(Z),B=n(19216),R=n.n(B),T=n(44589),E=n.n(T),D=n(82622),L={};L.styleTagTransform=E(),L.setAttributes=I(),L.insert=M().bind(null,"head"),L.domAPI=N(),L.insertStyleElement=R();b()(D.Z,L);D.Z&&D.Z.locals&&D.Z.locals;const W=(0,n(51900).Z)(x,(function(){var t=this,e=t._self._c;return void 0!==t.face||t.loadingFiles||t.loadingFaces?t.errorFetchingFiles||t.errorFetchingFaces?e("NcEmptyContent",{scopedSlots:t._u([{key:"icon",fn:function(){return[e("AlertCircle")]},proxy:!0}])},[t._v("\n\t"+t._s(t.t("photos","An error occurred"))+"\n")]):e("div",{staticClass:"face"},[e("div",{staticClass:"face__header"},[e("div",{staticClass:"face__header__left"},[e("NcActions",[e("NcActionButton",{on:{click:function(e){return t.$router.push("/faces/")}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("ArrowLeft")]},proxy:!0}])},[t._v(t._s(t.t("photos","Back"))+"\n\t\t\t\t")])],1),t._v(" "),e("div",{staticClass:"face__header__title"},[void 0!==t.face?e("h2",{class:{"face-name":!0,"hidden-visually":t.face.basename.match(/^[0-9]+$/)}},[t._v("\n\t\t\t\t\t"+t._s(t.face.basename)+"\n\t\t\t\t")]):t._e()]),t._v(" "),t.loadingCount>0||t.loadingFaces?e("NcLoadingIcon"):t._e()],1),t._v(" "),void 0!==t.face?e("div",{staticClass:"face__header__actions"},[e("NcActions",[e("NcActionButton",{attrs:{"close-after-click":!0,"aria-label":t.t("photos","Rename person")},on:{click:function(e){t.showRenameModal=!0}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Pencil")]},proxy:!0}],null,!1,514409694)},[t._v("\n\t\t\t\t\t"+t._s(t.t("photos","Rename person"))+"\n\t\t\t\t")])],1),t._v(" "),e("NcActions",{attrs:{"force-menu":!0}},[Object.keys(t.faces).length>1?e("NcActionButton",{attrs:{"close-after-click":!0,"aria-label":t.t("photos","Merge with different person")},on:{click:function(e){t.showMergeModal=!0}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Merge")]},proxy:!0}],null,!1,3117189691)},[t._v("\n\t\t\t\t\t"+t._s(t.t("photos","Merge with different person"))+"\n\t\t\t\t")]):t._e(),t._v(" "),t.selectedFileIds.length?[e("NcActionButton",{attrs:{"close-after-click":!0,"aria-label":t.t("photos","Download selected files")},on:{click:t.downloadSelection}},[e("Download",{attrs:{slot:"icon"},slot:"icon"}),t._v("\n\t\t\t\t\t\t"+t._s(t.t("photos","Download selected photos"))+"\n\t\t\t\t\t")],1),t._v(" "),t.shouldFavoriteSelection?e("NcActionButton",{attrs:{"close-after-click":!0,"aria-label":t.t("photos","Mark selection as favorite")},on:{click:t.favoriteSelection}},[e("Star",{attrs:{slot:"icon"},slot:"icon"}),t._v("\n\t\t\t\t\t\t"+t._s(t.t("photos","Favorite"))+"\n\t\t\t\t\t")],1):e("NcActionButton",{attrs:{"close-after-click":!0,"aria-label":t.t("photos","Remove selection from favorites")},on:{click:t.unFavoriteSelection}},[e("Star",{attrs:{slot:"icon"},slot:"icon"}),t._v("\n\t\t\t\t\t\t"+t._s(t.t("photos","Remove from favorites"))+"\n\t\t\t\t\t")],1),t._v(" "),e("NcActionButton",{attrs:{"close-after-click":!0},on:{click:function(e){t.showMoveModal=!0}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("AccountSwitch")]},proxy:!0}],null,!1,2937983280)},[t._v("\n\t\t\t\t\t\t"+t._s(t.n("photos","Move photo to a different person","Move photos to a different person",t.selectedFileIds.length))+"\n\t\t\t\t\t")]),t._v(" "),e("NcActionButton",{attrs:{"close-after-click":!0},on:{click:function(e){return t.handleRemoveFilesFromFace(t.selectedFileIds)}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Close")]},proxy:!0}],null,!1,1051939733)},[t._v("\n\t\t\t\t\t\t"+t._s(t.n("photos","Remove photo from person","Remove photos from person",t.selectedFileIds.length))+"\n\t\t\t\t\t")])]:t._e(),t._v(" "),e("NcActionButton",{attrs:{"close-after-click":!0},on:{click:t.handleDeleteFace},scopedSlots:t._u([{key:"icon",fn:function(){return[e("Close")]},proxy:!0}],null,!1,1051939733)},[t._v("\n\t\t\t\t\t"+t._s(t.t("photos","Remove person"))+"\n\t\t\t\t")])],2)],1):t._e()]),t._v(" "),void 0!==t.face?e("FilesListViewer",{staticClass:"face__photos",attrs:{"container-element":t.appContent,"file-ids":t.faceFileIds,loading:t.loadingFiles||t.loadingFaces},scopedSlots:t._u([{key:"default",fn:function(n){let{file:o,distance:a}=n;return e("File",{attrs:{file:t.files[o.id],"allow-selection":!0,selected:!0===t.selection[o.id],distance:a},on:{click:t.openViewer,"select-toggled":t.onFileSelectToggle}})}}],null,!1,2716306842)}):t._e(),t._v(" "),t.showRenameModal?e("NcDialog",{attrs:{name:t.t("photos","Rename person"),"close-on-click-outside":"",size:"small"},on:{closing:function(e){t.showRenameModal=!1}},scopedSlots:t._u([{key:"actions",fn:function(){return[e("NcButton",{attrs:{"aria-label":t.t("photos","Save."),type:"primary",disabled:t.$refs.nameInput&&""===t.$refs.nameInput.value.trim()},on:{click:function(e){return t.handleRenameFace(t.$refs.nameInput.value)}},scopedSlots:t._u([{key:"icon",fn:function(){return[t.loadingCount?e("NcLoadingIcon"):e("Send")]},proxy:!0}],null,!1,564208483)},[t._v("\n\t\t\t\t"+t._s(t.t("photos","Save"))+"\n\t\t\t")])]},proxy:!0}],null,!1,4139225602)},[e("div",{staticClass:"rename-form"},[e("input",{directives:[{name:"focus",rawName:"v-focus"}],ref:"nameInput",attrs:{type:"text",name:"name",required:"",placeholder:t.t("photos","Name of this person")},domProps:{value:t.faceName},on:{keydown:function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:t.handleRenameFace(t.$refs.nameInput.value)}}})])]):t._e(),t._v(" "),t.showMergeModal?e("NcDialog",{attrs:{name:t.t("photos","Merge person"),"close-on-click-outside":"",size:"normal"},on:{closing:function(e){t.showMergeModal=!1}}},[e("FaceMergeForm",{attrs:{"first-face":t.faceName},on:{select:function(e){return t.handleMerge(e)}}})],1):t._e(),t._v(" "),t.showMoveModal?e("NcDialog",{attrs:{name:t.t("photos","Move to different person"),"close-on-click-outside":"",size:"normal"},on:{closing:function(e){t.showMoveModal=!1}}},[e("FaceMergeForm",{attrs:{"first-face":t.faceName},on:{select:function(e){return t.handleMove(e,t.selectedFileIds)}}})],1):t._e()],1):e("NcEmptyContent",{staticClass:"empty-content-with-illustration",scopedSlots:t._u([{key:"icon",fn:function(){return[e("AccountBoxMultipleOutline")]},proxy:!0}],null,!1,2861705255)},[t._v("\n\t"+t._s(t.t("photos","This person could not be found"))+"\n")])}),[],!1,null,"66312422",null).exports}}]); +//# sourceMappingURL=photos-src_views_FaceContent_vue.js.map?v=f34b401769e2f0177b9d \ No newline at end of file diff --git a/js/photos-src_views_FaceContent_vue.js.map b/js/photos-src_views_FaceContent_vue.js.map index 44dca38f5..dfefe1211 100644 --- a/js/photos-src_views_FaceContent_vue.js.map +++ b/js/photos-src_views_FaceContent_vue.js.map @@ -1 +1 @@ -{"version":3,"file":"photos-src_views_FaceContent_vue.js?v=33a3034bac841c76f16a","mappings":"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","sources":["webpack:///photos/src/mixins/FetchFilesMixin.js","webpack:///photos/src/services/PhotoSearch.js","webpack:///photos/src/components/Faces/FaceMergeForm.vue?vue&type=style&index=0&id=33326436&prod&scoped=true&lang=scss","webpack:///photos/src/views/FaceContent.vue?vue&type=style&index=0&id=66312422&prod&lang=scss&scoped=true","webpack://photos/./src/components/Faces/FaceMergeForm.vue?d2e1","webpack:///photos/src/components/Faces/FaceMergeForm.vue","webpack:///photos/src/components/Faces/FaceMergeForm.vue?vue&type=script&lang=js","webpack://photos/./src/components/Faces/FaceMergeForm.vue?241f","webpack://photos/./src/components/Faces/FaceMergeForm.vue?2513","webpack://photos/./src/views/FaceContent.vue?42ef","webpack:///photos/src/views/FaceContent.vue","webpack:///photos/src/views/FaceContent.vue?vue&type=script&lang=js","webpack://photos/./src/views/FaceContent.vue?2e12","webpack://photos/./src/views/FaceContent.vue?fd9f"],"sourcesContent":["/**\n * @copyright Copyright (c) 2022 Louis Chemineau \n *\n * @author Louis Chemineau \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 .\n *\n */\n\nimport { davGetClient, davRootPath } from '@nextcloud/files'\nimport { joinPaths } from '@nextcloud/paths'\nimport logger from '../services/logger.js'\nimport getPhotos from '../services/PhotoSearch.js'\nimport SemaphoreWithPriority from '../utils/semaphoreWithPriority.js'\nimport AbortControllerMixin from './AbortControllerMixin.js'\nimport store from '../store/index.js'\n\nexport default {\n\tname: 'FetchFilesMixin',\n\n\tmixins: [\n\t\tAbortControllerMixin,\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\terrorFetchingFiles: null,\n\t\t\tloadingFiles: false,\n\t\t\tdoneFetchingFiles: false,\n\t\t\tfetchSemaphore: new SemaphoreWithPriority(1),\n\t\t\tfetchedFileIds: [],\n\t\t}\n\t},\n\n\twatch: {\n\t\t'$route.path'() {\n\t\t\tthis.resetFetchFilesState()\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * @param {object} options - Options to pass to getPhotos.\n\t\t * @param {string[]} [blacklist=[]] - Array of ids to filter out.\n\t\t * @param {boolean} [force=false] - Force fetching even if doneFetchingFiles is true\n\t\t * @return {Promise} - The next batch of data depending on global offset.\n\t\t */\n\t\tasync fetchFiles(options = {}, blacklist = [], force = false) {\n\t\t\tif ((this.doneFetchingFiles && !force) || this.loadingFiles) {\n\t\t\t\treturn []\n\t\t\t}\n\n\t\t\tconst fetchSemaphoreSymbol = await this.fetchSemaphore.acquire()\n\n\t\t\ttry {\n\t\t\t\tthis.errorFetchingFiles = null\n\t\t\t\tthis.loadingFiles = true\n\n\t\t\t\tconst numberOfImagesPerBatch = 200\n\n\t\t\t\t// Load next batch of images\n\t\t\t\tconst fetchedFiles = await getPhotos({\n\t\t\t\t\tfirstResult: this.fetchedFileIds.length,\n\t\t\t\t\tnbResults: numberOfImagesPerBatch,\n\t\t\t\t\t...options,\n\t\t\t\t\tsignal: this.abortController.signal,\n\t\t\t\t})\n\n\t\t\t\t// If we get less files than requested that means we got to the end\n\t\t\t\tif (fetchedFiles.length !== numberOfImagesPerBatch) {\n\t\t\t\t\tthis.doneFetchingFiles = true\n\t\t\t\t}\n\n\t\t\t\tconst fileIds = fetchedFiles\n\t\t\t\t\t.map(file => file.fileid)\n\t\t\t\t\t.filter(fileId => !this.fetchedFileIds.includes(fileId.toString())) // Filter to prevent duplicate fileIds.\n\n\t\t\t\tthis.fetchedFileIds.push(\n\t\t\t\t\t...fileIds\n\t\t\t\t\t\t.map((fileId) => fileId.toString())\n\t\t\t\t\t\t.filter((fileId) => !blacklist.includes(fileId))\n\t\t\t\t)\n\n\t\t\t\tthis.$store.dispatch('appendFiles', fetchedFiles)\n\n\t\t\t\tlogger.debug(`[FetchFilesMixin] Fetched ${fileIds.length} new files: `, fileIds)\n\n\t\t\t\treturn fileIds\n\t\t\t} catch (error) {\n\t\t\t\tif (error.response?.status === 404) {\n\t\t\t\t\tthis.errorFetchingFiles = 404\n\t\t\t\t\tconst source = joinPaths(davRootPath, store.state.userConfig.photosSourceFolder ?? '/Photos') + '/'\n\t\t\t\t\tlogger.debug('Photo source does not exist, creating it.')\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait davGetClient().createDirectory(source)\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tlogger.error('Fail to create source directory', { error })\n\t\t\t\t\t}\n\t\t\t\t} else if (error.code === 'ERR_CANCELED') {\n\t\t\t\t\treturn []\n\t\t\t\t} else {\n\t\t\t\t\tthis.errorFetchingFiles = error\n\t\t\t\t}\n\n\t\t\t\t// cancelled request, moving on...\n\t\t\t\tlogger.error('Error fetching files', { error })\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tthis.loadingFiles = false\n\t\t\t\tthis.fetchSemaphore.release(fetchSemaphoreSymbol)\n\t\t\t}\n\n\t\t\treturn []\n\t\t},\n\n\t\tresetFetchFilesState() {\n\t\t\tthis.doneFetchingFiles = false\n\t\t\tthis.errorFetchingFiles = null\n\t\t\tthis.loadingFiles = false\n\t\t\tthis.fetchedFileIds = []\n\t\t},\n\t},\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \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 .\n *\n */\n\nimport { genFileInfo } from '../utils/fileUtils.js'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { allMimes } from './AllowedMimes.js'\nimport client from './DavClient.js'\nimport { props } from './DavRequest.js'\nimport moment from '@nextcloud/moment'\nimport store from '../store/index.js'\n\n/**\n * List files from a folder and filter out unwanted mimes\n *\n * @param {object} [options] used for the cancellable requests\n * @param {number} [options.firstResult=0] Index of the first result that we want (starts at 0)\n * @param {number} [options.nbResults=200] The number of file to fetch\n * @param {string[]} [options.mimesType=allMimes] Mime type of the files\n * @param {boolean} [options.full=false] get full data of the files\n * @param {boolean} [options.onThisDay=false] get only items from this day of year\n * @param {boolean} [options.onlyFavorites=false] get only favorite items\n * @return {Promise} the file list\n */\nexport default async function(options = {}) {\n\t// default function options\n\toptions = {\n\t\tfirstResult: 0,\n\t\tnbResults: 200,\n\t\tmimesType: allMimes,\n\t\tonThisDay: false,\n\t\tonlyFavorites: false,\n\t\t...options,\n\t}\n\n\tconst prefixPath = `/files/${getCurrentUser().uid}`\n\n\t// generating the search or condition\n\t// based on the allowed mimetypes\n\tconst orMime = options.mimesType.reduce((str, mime) => `${str}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t${mime}\n\t\t\n\t`, '')\n\n\tconst eqFavorites = options.onlyFavorites\n\t\t? `\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t1\n\t\t\t`\n\t\t: ''\n\n\tconst onThisDay = options.onThisDay\n\t\t? `${Array(20).fill(1)\n\t\t\t.map((_, years) => {\n\t\t\t\tconst start = moment(Date.now()).startOf('day').subtract(3, 'd').subtract(years + 1, 'y')\n\t\t\t\tconst end = moment(Date.now()).endOf('day').add(3, 'd').subtract(years + 1, 'y')\n\t\t\t\treturn `\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${start.format(moment.defaultFormatUtc)}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${end.format(moment.defaultFormatUtc)}\n\t\t\t\t\n\t\t\t`\n\t\t\t}).join('\\n')}`\n\t\t: ''\n\n\t// TODO: uncomment when SEARCH on multiple folders is implemented.\n\t// const sourceFolders = store.state.userConfig.photosSourceFolder\n\t// .map(folder => `\n\t// \n\t// ${davRootPath}/${folder}\n\t// infinity\n\t// \n\t// `)\n\t// .join('\\n')\n\n\toptions = Object.assign({\n\t\tmethod: 'SEARCH',\n\t\theaders: {\n\t\t\t'content-Type': 'text/xml',\n\t\t},\n\t\tdata: `\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t${props}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t${prefixPath}/${store.state.userConfig.photosSourceFolder ?? '/Photos'}\n\t\t\t\t\t\t\tinfinity\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t${orMime}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t${eqFavorites}\n\t\t\t\t\t\t\t${onThisDay}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\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\t\n\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\t\n\t\t\t\t\t\t${options.nbResults}\n\t\t\t\t\t\t${options.firstResult}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t`,\n\t\tdeep: true,\n\t\tdetails: true,\n\t}, options)\n\n\tconst response = await client.getDirectoryContents('', options)\n\n\treturn response.data.map(data => genFileInfo(data))\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, \".face-list[data-v-33326436]{display:flex;flex-direction:row;height:350px;flex-wrap:wrap;padding:12px}.loader[data-v-33326436]{margin:25% auto}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Faces/FaceMergeForm.vue\"],\"names\":[],\"mappings\":\"AAEA,4BACC,YAAA,CACA,kBAAA,CACA,YAAA,CACA,cAAA,CACA,YAAA,CAGD,yBACC,eAAA\",\"sourcesContent\":[\"$sizes: (\\\"400\\\": (\\\"count\\\": 3, \\\"marginTop\\\": 66, \\\"marginW\\\": 8), \\\"700\\\": (\\\"count\\\": 4, \\\"marginTop\\\": 66, \\\"marginW\\\": 8), \\\"1024\\\": (\\\"count\\\": 5, \\\"marginTop\\\": 66, \\\"marginW\\\": 44), \\\"1280\\\": (\\\"count\\\": 4, \\\"marginTop\\\": 66, \\\"marginW\\\": 44), \\\"1440\\\": (\\\"count\\\": 5, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"1600\\\": (\\\"count\\\": 6, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"2048\\\": (\\\"count\\\": 7, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"2560\\\": (\\\"count\\\": 8, \\\"marginTop\\\": 88, \\\"marginW\\\": 88), \\\"3440\\\": (\\\"count\\\": 9, \\\"marginTop\\\": 88, \\\"marginW\\\": 88), \\\"max\\\": (\\\"count\\\": 10, \\\"marginTop\\\": 88, \\\"marginW\\\": 88));\\n\\n.face-list {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\theight: 350px;\\n\\tflex-wrap: wrap;\\n\\tpadding: 12px;\\n}\\n\\n.loader {\\n\\tmargin: 25% auto;\\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, \".face[data-v-66312422]{display:flex;flex-direction:column}.face__empty[data-v-66312422]{display:flex;flex-direction:column;align-items:center}.face__empty__button[data-v-66312422]{margin-top:32px}.face__header[data-v-66312422]{display:flex;min-height:60px;align-items:center;justify-content:space-between;position:-webkit-sticky;position:sticky;z-index:3;background:var(--color-main-background);padding:0 64px}@media only screen and (max-width: 1020px){.face__header[data-v-66312422]{padding:0;padding-left:64px}}.face__header__left[data-v-66312422]{height:100%;display:flex;align-items:center}.face__header__title[data-v-66312422]{margin-left:10px}.face__header__title h2[data-v-66312422]{margin-bottom:0}.face__header__loader[data-v-66312422]{margin-left:32px}.face__header__actions[data-v-66312422]{display:flex;align-items:center}.face__header__actions button[data-v-66312422]{margin-left:16px}.face__photos[data-v-66312422]{margin-top:16px;height:100%;min-height:0;padding:0 64px}@media only screen and (max-width: 1020px){.face__photos[data-v-66312422]{padding:0}}.empty-content-with-illustration[data-v-66312422] .empty-content__icon{width:200px;height:200px}.empty-content-with-illustration[data-v-66312422] .empty-content__icon svg{width:200px;height:200px}.rename-form[data-v-66312422]{display:flex;flex-direction:row;align-items:center;height:70px;padding:16px}.rename-form input[data-v-66312422]{width:100%}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/mixins/FaceContent.scss\"],\"names\":[],\"mappings\":\"AAqBA,uBACC,YAAA,CACA,qBAAA,CAEA,8BACC,YAAA,CACA,qBAAA,CACA,kBAAA,CAEA,sCACC,eAAA,CAKF,+BACC,YAAA,CACA,eAAA,CACA,kBAAA,CACA,6BAAA,CACA,uBAAA,CAAA,eAAA,CACA,SAAA,CACA,uCAAA,CACA,cAAA,CAEA,2CAVD,+BAWE,SAAA,CACA,iBAAA,CAAA,CAGD,qCACC,WAAA,CACA,YAAA,CACA,kBAAA,CAGD,sCACC,gBAAA,CACA,yCACC,eAAA,CAIF,uCACC,gBAAA,CAGD,wCACC,YAAA,CACA,kBAAA,CAEA,+CACC,gBAAA,CAKH,+BACC,eAAA,CACA,WAAA,CACA,YAAA,CACA,cAAA,CAEA,2CAND,+BAOE,SAAA,CAAA,CAKH,uEACC,WAAA,CACA,YAAA,CAEA,2EACC,WAAA,CACA,YAAA,CAIF,8BACC,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,WAAA,CACA,YAAA,CAEA,oCACC,UAAA\",\"sourcesContent\":[\"/**\\n * @copyright Copyright (c) 2023 Marcel Klehr \\n *\\n * @author Marcel Klehr \\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 .\\n *\\n */\\n.face {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\n\\t&__empty {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\talign-items: center;\\n\\n\\t\\t&__button {\\n\\t\\t\\tmargin-top: 32px;\\n\\t\\t}\\n\\n\\t}\\n\\n\\t&__header {\\n\\t\\tdisplay: flex;\\n\\t\\tmin-height: 60px;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: space-between;\\n\\t\\tposition: sticky;\\n\\t\\tz-index: 3;\\n\\t\\tbackground: var(--color-main-background);\\n\\t\\tpadding: 0 64px;\\n\\n\\t\\t@media only screen and (max-width: 1020px) {\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\tpadding-left: 64px;\\n\\t\\t}\\n\\n\\t\\t&__left {\\n\\t\\t\\theight: 100%;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t}\\n\\n\\t\\t&__title {\\n\\t\\t\\tmargin-left: 10px;\\n\\t\\t\\th2 {\\n\\t\\t\\t\\tmargin-bottom: 0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&__loader {\\n\\t\\t\\tmargin-left: 32px;\\n\\t\\t}\\n\\n\\t\\t&__actions {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\n\\t\\t\\tbutton {\\n\\t\\t\\t\\tmargin-left: 16px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__photos {\\n\\t\\tmargin-top: 16px;\\n\\t\\theight: 100%;\\n\\t\\tmin-height: 0; // Prevent it from overflowing in a flex context.\\n\\t\\tpadding: 0 64px;\\n\\n\\t\\t@media only screen and (max-width: 1020px) {\\n\\t\\t\\tpadding: 0;\\n\\t\\t}\\n\\t}\\n}\\n\\n.empty-content-with-illustration :deep .empty-content__icon {\\n\\twidth: 200px;\\n\\theight: 200px;\\n\\n\\tsvg {\\n\\t\\twidth: 200px;\\n\\t\\theight: 200px;\\n\\t}\\n}\\n\\n.rename-form {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\talign-items: center;\\n\\theight: 70px;\\n\\tpadding: 16px;\\n\\n\\tinput {\\n\\t\\twidth: 100%;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"merge-form face-list\"},_vm._l((_vm.filteredFaces),function(face){return _c('FaceCover',{key:face.basename,attrs:{\"base-name\":face.basename,\"small\":\"\"},on:{\"click\":function($event){return _vm.handleSelect(face.basename)}}})}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FaceMergeForm.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!./FaceMergeForm.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/postcss-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FaceMergeForm.vue?vue&type=style&index=0&id=33326436&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FaceMergeForm.vue?vue&type=style&index=0&id=33326436&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FaceMergeForm.vue?vue&type=template&id=33326436&scoped=true\"\nimport script from \"./FaceMergeForm.vue?vue&type=script&lang=js\"\nexport * from \"./FaceMergeForm.vue?vue&type=script&lang=js\"\nimport style0 from \"./FaceMergeForm.vue?vue&type=style&index=0&id=33326436&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"33326436\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.face === undefined && !_vm.loadingFiles && !_vm.loadingFaces)?_c('NcEmptyContent',{staticClass:\"empty-content-with-illustration\",scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('AccountBoxMultipleOutline')]},proxy:true}],null,false,2861705255)},[_vm._v(\"\\n\\t\"+_vm._s(_vm.t('photos', 'This person could not be found'))+\"\\n\")]):(_vm.errorFetchingFiles || _vm.errorFetchingFaces)?_c('NcEmptyContent',{scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('AlertCircle')]},proxy:true}])},[_vm._v(\"\\n\\t\"+_vm._s(_vm.t('photos', 'An error occurred'))+\"\\n\")]):_c('div',{staticClass:\"face\"},[_c('div',{staticClass:\"face__header\"},[_c('div',{staticClass:\"face__header__left\"},[_c('NcActions',[_c('NcActionButton',{on:{\"click\":function($event){return _vm.$router.push('/faces/')}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('ArrowLeft')]},proxy:true}])},[_vm._v(_vm._s(_vm.t('photos', 'Back'))+\"\\n\\t\\t\\t\\t\")])],1),_vm._v(\" \"),_c('div',{staticClass:\"face__header__title\"},[(_vm.face !== undefined)?_c('h2',{class:{'face-name': true, 'hidden-visually': _vm.face.basename.match(/^[0-9]+$/)}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.face.basename)+\"\\n\\t\\t\\t\\t\")]):_vm._e()]),_vm._v(\" \"),(_vm.loadingCount > 0 || _vm.loadingFaces)?_c('NcLoadingIcon'):_vm._e()],1),_vm._v(\" \"),(_vm.face !== undefined)?_c('div',{staticClass:\"face__header__actions\"},[_c('NcActions',[_c('NcActionButton',{attrs:{\"close-after-click\":true,\"aria-label\":_vm.t('photos', 'Rename person')},on:{\"click\":function($event){_vm.showRenameModal = true}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Pencil')]},proxy:true}],null,false,514409694)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Rename person'))+\"\\n\\t\\t\\t\\t\")])],1),_vm._v(\" \"),_c('NcActions',{attrs:{\"force-menu\":true}},[(Object.keys(_vm.faces).length > 1)?_c('NcActionButton',{attrs:{\"close-after-click\":true,\"aria-label\":_vm.t('photos', 'Merge with different person')},on:{\"click\":function($event){_vm.showMergeModal = true}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Merge')]},proxy:true}],null,false,3117189691)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Merge with different person'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.selectedFileIds.length)?[_c('NcActionButton',{attrs:{\"close-after-click\":true,\"aria-label\":_vm.t('photos', 'Download selected files')},on:{\"click\":_vm.downloadSelection}},[_c('Download',{attrs:{\"slot\":\"icon\"},slot:\"icon\"}),_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Download selected photos'))+\"\\n\\t\\t\\t\\t\\t\")],1),_vm._v(\" \"),(_vm.shouldFavoriteSelection)?_c('NcActionButton',{attrs:{\"close-after-click\":true,\"aria-label\":_vm.t('photos', 'Mark selection as favorite')},on:{\"click\":_vm.favoriteSelection}},[_c('Star',{attrs:{\"slot\":\"icon\"},slot:\"icon\"}),_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Favorite'))+\"\\n\\t\\t\\t\\t\\t\")],1):_c('NcActionButton',{attrs:{\"close-after-click\":true,\"aria-label\":_vm.t('photos', 'Remove selection from favorites')},on:{\"click\":_vm.unFavoriteSelection}},[_c('Star',{attrs:{\"slot\":\"icon\"},slot:\"icon\"}),_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Remove from favorites'))+\"\\n\\t\\t\\t\\t\\t\")],1),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"close-after-click\":true},on:{\"click\":function($event){_vm.showMoveModal = true}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('AccountSwitch')]},proxy:true}],null,false,2937983280)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.n('photos', 'Move photo to a different person', 'Move photos to a different person', _vm.selectedFileIds.length))+\"\\n\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"close-after-click\":true},on:{\"click\":function($event){return _vm.handleRemoveFilesFromFace(_vm.selectedFileIds)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Close')]},proxy:true}],null,false,1051939733)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.n('photos', 'Remove photo from person', 'Remove photos from person', _vm.selectedFileIds.length))+\"\\n\\t\\t\\t\\t\\t\")])]:_vm._e(),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"close-after-click\":true},on:{\"click\":_vm.handleDeleteFace},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Close')]},proxy:true}],null,false,1051939733)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Remove person'))+\"\\n\\t\\t\\t\\t\")])],2)],1):_vm._e()]),_vm._v(\" \"),(_vm.face !== undefined)?_c('FilesListViewer',{staticClass:\"face__photos\",attrs:{\"container-element\":_vm.appContent,\"file-ids\":_vm.faceFileIds,\"loading\":_vm.loadingFiles || _vm.loadingFaces},scopedSlots:_vm._u([{key:\"default\",fn:function({file, distance}){return _c('File',{attrs:{\"file\":_vm.files[file.id],\"allow-selection\":true,\"selected\":_vm.selection[file.id] === true,\"distance\":distance},on:{\"click\":_vm.openViewer,\"select-toggled\":_vm.onFileSelectToggle}})}}],null,false,2716306842)}):_vm._e(),_vm._v(\" \"),(_vm.showRenameModal)?_c('NcDialog',{attrs:{\"name\":_vm.t('photos', 'Rename person'),\"close-on-click-outside\":\"\",\"size\":\"small\"},on:{\"closing\":function($event){_vm.showRenameModal = false}},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('NcButton',{attrs:{\"aria-label\":_vm.t('photos', 'Save.'),\"type\":\"primary\",\"disabled\":_vm.$refs.nameInput && _vm.$refs.nameInput.value.trim() === ''},on:{\"click\":function($event){return _vm.handleRenameFace(_vm.$refs.nameInput.value)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loadingCount)?_c('NcLoadingIcon'):_c('Send')]},proxy:true}],null,false,564208483)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Save'))+\"\\n\\t\\t\\t\")])]},proxy:true}],null,false,4139225602)},[_c('div',{staticClass:\"rename-form\"},[_c('input',{directives:[{name:\"focus\",rawName:\"v-focus\"}],ref:\"nameInput\",attrs:{\"type\":\"text\",\"name\":\"name\",\"required\":\"\",\"placeholder\":_vm.t('photos', 'Name of this person')},domProps:{\"value\":_vm.faceName},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.handleRenameFace(_vm.$refs.nameInput.value)}}})])]):_vm._e(),_vm._v(\" \"),(_vm.showMergeModal)?_c('NcDialog',{attrs:{\"name\":_vm.t('photos', 'Merge person'),\"close-on-click-outside\":\"\",\"size\":\"normal\"},on:{\"closing\":function($event){_vm.showMergeModal = false}}},[_c('FaceMergeForm',{attrs:{\"first-face\":_vm.faceName},on:{\"select\":function($event){return _vm.handleMerge($event)}}})],1):_vm._e(),_vm._v(\" \"),(_vm.showMoveModal)?_c('NcDialog',{attrs:{\"name\":_vm.t('photos', 'Move to different person'),\"close-on-click-outside\":\"\",\"size\":\"normal\"},on:{\"closing\":function($event){_vm.showMoveModal = false}}},[_c('FaceMergeForm',{attrs:{\"first-face\":_vm.faceName},on:{\"select\":function($event){return _vm.handleMove($event, _vm.selectedFileIds)}}})],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FaceContent.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!./FaceContent.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/postcss-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FaceContent.vue?vue&type=style&index=0&id=66312422&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FaceContent.vue?vue&type=style&index=0&id=66312422&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FaceContent.vue?vue&type=template&id=66312422&scoped=true\"\nimport script from \"./FaceContent.vue?vue&type=script&lang=js\"\nexport * from \"./FaceContent.vue?vue&type=script&lang=js\"\nimport style0 from \"./FaceContent.vue?vue&type=style&index=0&id=66312422&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"66312422\",\n null\n \n)\n\nexport default component.exports"],"names":["name","mixins","AbortControllerMixin","data","errorFetchingFiles","loadingFiles","doneFetchingFiles","fetchSemaphore","SemaphoreWithPriority","fetchedFileIds","watch","this","resetFetchFilesState","methods","async","options","arguments","length","undefined","blacklist","force","fetchSemaphoreSymbol","acquire","numberOfImagesPerBatch","fetchedFiles","_store$state$userConf","firstResult","nbResults","mimesType","allMimes","onThisDay","onlyFavorites","prefixPath","concat","getCurrentUser","uid","orMime","reduce","str","mime","eqFavorites","Array","fill","map","_","years","start","moment","Date","now","startOf","subtract","end","endOf","add","format","join","Object","assign","method","headers","props","store","deep","details","client","genFileInfo","getPhotos","signal","abortController","fileIds","file","fileid","filter","fileId","includes","toString","push","$store","dispatch","logger","error","_error$response","response","status","source","joinPaths","davRootPath","davGetClient","createDirectory","code","console","release","___CSS_LOADER_EXPORT___","module","id","components","FaceCover","FaceCoverMixin","FetchFacesMixin","firstFace","type","String","required","loading","computed","mapGetters","filteredFaces","values","faces","face","basename","sort","a","b","nbItems","facesFiles","handleSelect","faceName","$emit","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","_c","_self","staticClass","_l","key","attrs","on","$event","Pencil","Star","Download","Close","AlertCircle","Send","Merge","ArrowLeft","AccountBoxMultipleOutline","FaceMergeForm","FilesListViewer","File","NcLoadingIcon","NcEmptyContent","NcActions","NcActionButton","NcDialog","NcButton","AccountSwitch","directives","focus","el","Vue","FetchFilesMixin","FilesSelectionMixin","default","showMoveModal","showMergeModal","showRenameModal","loadingCount","appContent","document","getElementById","faceFileIds","shouldFavoriteSelection","selectedFileIds","some","state","files","favorite","fetchFaceContent","mounted","mapActions","openViewer","OCA","Viewer","open","path","filename","split","slice","list","sectionHeader","loadMore","canLoop","removeFilesFromFace","fileIdsToRemove","resetSelection","deleteFace","$router","oldName","renameFace","params","moveFilesToFace","oldFace","fileIdsToMove","toggleFavoriteForFiles","favoriteState","downloadFiles","loadingFaces","errorFetchingFaces","scopedSlots","_u","fn","proxy","_v","_s","t","class","match","_e","keys","downloadSelection","slot","favoriteSelection","unFavoriteSelection","n","handleRemoveFilesFromFace","handleDeleteFace","_ref","distance","selection","onFileSelectToggle","$refs","nameInput","value","trim","handleRenameFace","rawName","ref","domProps","indexOf","_k","keyCode","handleMerge","handleMove"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"photos-src_views_FaceContent_vue.js?v=f34b401769e2f0177b9d","mappings":"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","sources":["webpack:///photos/src/mixins/FetchFilesMixin.js","webpack:///photos/src/services/PhotoSearch.js","webpack:///photos/src/components/Faces/FaceMergeForm.vue?vue&type=style&index=0&id=33326436&prod&scoped=true&lang=scss","webpack:///photos/src/views/FaceContent.vue?vue&type=style&index=0&id=66312422&prod&lang=scss&scoped=true","webpack://photos/./src/components/Faces/FaceMergeForm.vue?d2e1","webpack:///photos/src/components/Faces/FaceMergeForm.vue","webpack:///photos/src/components/Faces/FaceMergeForm.vue?vue&type=script&lang=js","webpack://photos/./src/components/Faces/FaceMergeForm.vue?241f","webpack://photos/./src/components/Faces/FaceMergeForm.vue?2513","webpack://photos/./src/views/FaceContent.vue?42ef","webpack:///photos/src/views/FaceContent.vue","webpack:///photos/src/views/FaceContent.vue?vue&type=script&lang=js","webpack://photos/./src/views/FaceContent.vue?2e12","webpack://photos/./src/views/FaceContent.vue?fd9f"],"sourcesContent":["/**\n * @copyright Copyright (c) 2022 Louis Chemineau \n *\n * @author Louis Chemineau \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 .\n *\n */\n\nimport { davGetClient, davRootPath } from '@nextcloud/files'\nimport { joinPaths } from '@nextcloud/paths'\nimport logger from '../services/logger.js'\nimport getPhotos from '../services/PhotoSearch.js'\nimport SemaphoreWithPriority from '../utils/semaphoreWithPriority.js'\nimport AbortControllerMixin from './AbortControllerMixin.js'\nimport store from '../store/index.js'\n\nexport default {\n\tname: 'FetchFilesMixin',\n\n\tmixins: [\n\t\tAbortControllerMixin,\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\terrorFetchingFiles: null,\n\t\t\tloadingFiles: false,\n\t\t\tdoneFetchingFiles: false,\n\t\t\tfetchSemaphore: new SemaphoreWithPriority(1),\n\t\t\tfetchedFileIds: [],\n\t\t}\n\t},\n\n\twatch: {\n\t\t'$route.path'() {\n\t\t\tthis.resetFetchFilesState()\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * @param {object} options - Options to pass to getPhotos.\n\t\t * @param {string[]} [blacklist=[]] - Array of ids to filter out.\n\t\t * @param {boolean} [force=false] - Force fetching even if doneFetchingFiles is true\n\t\t * @return {Promise} - The next batch of data depending on global offset.\n\t\t */\n\t\tasync fetchFiles(options = {}, blacklist = [], force = false) {\n\t\t\tif ((this.doneFetchingFiles && !force) || this.loadingFiles) {\n\t\t\t\treturn []\n\t\t\t}\n\n\t\t\tconst fetchSemaphoreSymbol = await this.fetchSemaphore.acquire()\n\n\t\t\ttry {\n\t\t\t\tthis.errorFetchingFiles = null\n\t\t\t\tthis.loadingFiles = true\n\n\t\t\t\tconst numberOfImagesPerBatch = 200\n\n\t\t\t\t// Load next batch of images\n\t\t\t\tconst fetchedFiles = await getPhotos({\n\t\t\t\t\tfirstResult: this.fetchedFileIds.length,\n\t\t\t\t\tnbResults: numberOfImagesPerBatch,\n\t\t\t\t\t...options,\n\t\t\t\t\tsignal: this.abortController.signal,\n\t\t\t\t})\n\n\t\t\t\t// If we get less files than requested that means we got to the end\n\t\t\t\tif (fetchedFiles.length !== numberOfImagesPerBatch) {\n\t\t\t\t\tthis.doneFetchingFiles = true\n\t\t\t\t}\n\n\t\t\t\tconst fileIds = fetchedFiles\n\t\t\t\t\t.map(file => file.fileid)\n\t\t\t\t\t.filter(fileId => !this.fetchedFileIds.includes(fileId.toString())) // Filter to prevent duplicate fileIds.\n\n\t\t\t\tthis.fetchedFileIds.push(\n\t\t\t\t\t...fileIds\n\t\t\t\t\t\t.map((fileId) => fileId.toString())\n\t\t\t\t\t\t.filter((fileId) => !blacklist.includes(fileId))\n\t\t\t\t)\n\n\t\t\t\tthis.$store.dispatch('appendFiles', fetchedFiles)\n\n\t\t\t\tlogger.debug(`[FetchFilesMixin] Fetched ${fileIds.length} new files: `, fileIds)\n\n\t\t\t\treturn fileIds\n\t\t\t} catch (error) {\n\t\t\t\tif (error.response?.status === 404) {\n\t\t\t\t\tconst sources = store.state.userConfig.photosSourceFolders\n\t\t\t\t\tfor (const source of sources) {\n\t\t\t\t\t\tif (error.response?.data?.match(`File with name /${source} could not be located`) === null) {\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlogger.debug(`The ${source} folder does not exist, creating it.`)\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait davGetClient().createDirectory(joinPaths(davRootPath, source))\n\t\t\t\t\t\t\tthis.resetFetchFilesState()\n\t\t\t\t\t\t\treturn []\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\tthis.errorFetchingFiles = 404\n\t\t\t\t\t\t\tlogger.error('Fail to create source directory', { error })\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if (error.code === 'ERR_CANCELED') {\n\t\t\t\t\treturn []\n\t\t\t\t} else {\n\t\t\t\t\tthis.errorFetchingFiles = error\n\t\t\t\t}\n\n\t\t\t\t// cancelled request, moving on...\n\t\t\t\tlogger.error('Error fetching files', { error })\n\t\t\t} finally {\n\t\t\t\tthis.loadingFiles = false\n\t\t\t\tthis.fetchSemaphore.release(fetchSemaphoreSymbol)\n\t\t\t}\n\n\t\t\treturn []\n\t\t},\n\n\t\tresetFetchFilesState() {\n\t\t\tthis.doneFetchingFiles = false\n\t\t\tthis.errorFetchingFiles = null\n\t\t\tthis.loadingFiles = false\n\t\t\tthis.fetchedFileIds = []\n\t\t},\n\t},\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \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 .\n *\n */\n\nimport { genFileInfo } from '../utils/fileUtils.js'\nimport { allMimes } from './AllowedMimes.js'\nimport client from './DavClient.js'\nimport { props } from './DavRequest.js'\nimport moment from '@nextcloud/moment'\nimport store from '../store/index.js'\nimport { davRootPath } from '@nextcloud/files'\nimport { joinPaths } from '@nextcloud/paths'\n\n/**\n * List files from a folder and filter out unwanted mimes\n *\n * @param {object} [options] used for the cancellable requests\n * @param {number} [options.firstResult=0] Index of the first result that we want (starts at 0)\n * @param {number} [options.nbResults=200] The number of file to fetch\n * @param {string[]} [options.mimesType=allMimes] Mime type of the files\n * @param {boolean} [options.full=false] get full data of the files\n * @param {boolean} [options.onThisDay=false] get only items from this day of year\n * @param {boolean} [options.onlyFavorites=false] get only favorite items\n * @return {Promise} the file list\n */\nexport default async function(options = {}) {\n\t// default function options\n\toptions = {\n\t\tfirstResult: 0,\n\t\tnbResults: 200,\n\t\tmimesType: allMimes,\n\t\tonThisDay: false,\n\t\tonlyFavorites: false,\n\t\t...options,\n\t}\n\n\t// generating the search or condition\n\t// based on the allowed mimetypes\n\tconst orMime = options.mimesType.reduce((str, mime) => `${str}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t${mime}\n\t\t\n\t`, '')\n\n\tconst eqFavorites = options.onlyFavorites\n\t\t? `\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t1\n\t\t\t`\n\t\t: ''\n\n\tconst onThisDay = options.onThisDay\n\t\t? `${Array(20).fill(1)\n\t\t\t.map((_, years) => {\n\t\t\t\tconst start = moment(Date.now()).startOf('day').subtract(3, 'd').subtract(years + 1, 'y')\n\t\t\t\tconst end = moment(Date.now()).endOf('day').add(3, 'd').subtract(years + 1, 'y')\n\t\t\t\treturn `\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${start.format(moment.defaultFormatUtc)}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${end.format(moment.defaultFormatUtc)}\n\t\t\t\t\n\t\t\t`\n\t\t\t}).join('\\n')}`\n\t\t: ''\n\n\tconst sourceFolders = store.state.userConfig.photosSourceFolders\n\t\t.map(folder => `\n\t\t\t\n\t\t\t\t${joinPaths(davRootPath, folder)}\n\t\t\t\tinfinity\n\t\t\t`\n\t\t)\n\t\t.join('\\n')\n\n\toptions = Object.assign({\n\t\tmethod: 'SEARCH',\n\t\theaders: {\n\t\t\t'content-Type': 'text/xml',\n\t\t},\n\t\tdata: `\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t${props}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t${sourceFolders}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t${orMime}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t${eqFavorites}\n\t\t\t\t\t\t\t${onThisDay}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\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\t\n\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\t\n\t\t\t\t\t\t${options.nbResults}\n\t\t\t\t\t\t${options.firstResult}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t`,\n\t\tdeep: true,\n\t\tdetails: true,\n\t}, options)\n\n\tconst response = await client.getDirectoryContents('', options)\n\n\treturn response.data.map(data => genFileInfo(data))\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, \".face-list[data-v-33326436]{display:flex;flex-direction:row;height:350px;flex-wrap:wrap;padding:12px}.loader[data-v-33326436]{margin:25% auto}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Faces/FaceMergeForm.vue\"],\"names\":[],\"mappings\":\"AAEA,4BACC,YAAA,CACA,kBAAA,CACA,YAAA,CACA,cAAA,CACA,YAAA,CAGD,yBACC,eAAA\",\"sourcesContent\":[\"$sizes: (\\\"400\\\": (\\\"count\\\": 3, \\\"marginTop\\\": 66, \\\"marginW\\\": 8), \\\"700\\\": (\\\"count\\\": 4, \\\"marginTop\\\": 66, \\\"marginW\\\": 8), \\\"1024\\\": (\\\"count\\\": 5, \\\"marginTop\\\": 66, \\\"marginW\\\": 44), \\\"1280\\\": (\\\"count\\\": 4, \\\"marginTop\\\": 66, \\\"marginW\\\": 44), \\\"1440\\\": (\\\"count\\\": 5, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"1600\\\": (\\\"count\\\": 6, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"2048\\\": (\\\"count\\\": 7, \\\"marginTop\\\": 88, \\\"marginW\\\": 66), \\\"2560\\\": (\\\"count\\\": 8, \\\"marginTop\\\": 88, \\\"marginW\\\": 88), \\\"3440\\\": (\\\"count\\\": 9, \\\"marginTop\\\": 88, \\\"marginW\\\": 88), \\\"max\\\": (\\\"count\\\": 10, \\\"marginTop\\\": 88, \\\"marginW\\\": 88));\\n\\n.face-list {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\theight: 350px;\\n\\tflex-wrap: wrap;\\n\\tpadding: 12px;\\n}\\n\\n.loader {\\n\\tmargin: 25% auto;\\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, \".face[data-v-66312422]{display:flex;flex-direction:column}.face__empty[data-v-66312422]{display:flex;flex-direction:column;align-items:center}.face__empty__button[data-v-66312422]{margin-top:32px}.face__header[data-v-66312422]{display:flex;min-height:60px;align-items:center;justify-content:space-between;position:-webkit-sticky;position:sticky;z-index:3;background:var(--color-main-background);padding:0 64px}@media only screen and (max-width: 1020px){.face__header[data-v-66312422]{padding:0;padding-left:64px}}.face__header__left[data-v-66312422]{height:100%;display:flex;align-items:center}.face__header__title[data-v-66312422]{margin-left:10px}.face__header__title h2[data-v-66312422]{margin-bottom:0}.face__header__loader[data-v-66312422]{margin-left:32px}.face__header__actions[data-v-66312422]{display:flex;align-items:center}.face__header__actions button[data-v-66312422]{margin-left:16px}.face__photos[data-v-66312422]{margin-top:16px;height:100%;min-height:0;padding:0 64px}@media only screen and (max-width: 1020px){.face__photos[data-v-66312422]{padding:0}}.empty-content-with-illustration[data-v-66312422] .empty-content__icon{width:200px;height:200px}.empty-content-with-illustration[data-v-66312422] .empty-content__icon svg{width:200px;height:200px}.rename-form[data-v-66312422]{display:flex;flex-direction:row;align-items:center;height:70px;padding:16px}.rename-form input[data-v-66312422]{width:100%}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/mixins/FaceContent.scss\"],\"names\":[],\"mappings\":\"AAqBA,uBACC,YAAA,CACA,qBAAA,CAEA,8BACC,YAAA,CACA,qBAAA,CACA,kBAAA,CAEA,sCACC,eAAA,CAKF,+BACC,YAAA,CACA,eAAA,CACA,kBAAA,CACA,6BAAA,CACA,uBAAA,CAAA,eAAA,CACA,SAAA,CACA,uCAAA,CACA,cAAA,CAEA,2CAVD,+BAWE,SAAA,CACA,iBAAA,CAAA,CAGD,qCACC,WAAA,CACA,YAAA,CACA,kBAAA,CAGD,sCACC,gBAAA,CACA,yCACC,eAAA,CAIF,uCACC,gBAAA,CAGD,wCACC,YAAA,CACA,kBAAA,CAEA,+CACC,gBAAA,CAKH,+BACC,eAAA,CACA,WAAA,CACA,YAAA,CACA,cAAA,CAEA,2CAND,+BAOE,SAAA,CAAA,CAKH,uEACC,WAAA,CACA,YAAA,CAEA,2EACC,WAAA,CACA,YAAA,CAIF,8BACC,YAAA,CACA,kBAAA,CACA,kBAAA,CACA,WAAA,CACA,YAAA,CAEA,oCACC,UAAA\",\"sourcesContent\":[\"/**\\n * @copyright Copyright (c) 2023 Marcel Klehr \\n *\\n * @author Marcel Klehr \\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 .\\n *\\n */\\n.face {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\n\\t&__empty {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\talign-items: center;\\n\\n\\t\\t&__button {\\n\\t\\t\\tmargin-top: 32px;\\n\\t\\t}\\n\\n\\t}\\n\\n\\t&__header {\\n\\t\\tdisplay: flex;\\n\\t\\tmin-height: 60px;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: space-between;\\n\\t\\tposition: sticky;\\n\\t\\tz-index: 3;\\n\\t\\tbackground: var(--color-main-background);\\n\\t\\tpadding: 0 64px;\\n\\n\\t\\t@media only screen and (max-width: 1020px) {\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\tpadding-left: 64px;\\n\\t\\t}\\n\\n\\t\\t&__left {\\n\\t\\t\\theight: 100%;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t}\\n\\n\\t\\t&__title {\\n\\t\\t\\tmargin-left: 10px;\\n\\t\\t\\th2 {\\n\\t\\t\\t\\tmargin-bottom: 0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&__loader {\\n\\t\\t\\tmargin-left: 32px;\\n\\t\\t}\\n\\n\\t\\t&__actions {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\n\\t\\t\\tbutton {\\n\\t\\t\\t\\tmargin-left: 16px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__photos {\\n\\t\\tmargin-top: 16px;\\n\\t\\theight: 100%;\\n\\t\\tmin-height: 0; // Prevent it from overflowing in a flex context.\\n\\t\\tpadding: 0 64px;\\n\\n\\t\\t@media only screen and (max-width: 1020px) {\\n\\t\\t\\tpadding: 0;\\n\\t\\t}\\n\\t}\\n}\\n\\n.empty-content-with-illustration :deep .empty-content__icon {\\n\\twidth: 200px;\\n\\theight: 200px;\\n\\n\\tsvg {\\n\\t\\twidth: 200px;\\n\\t\\theight: 200px;\\n\\t}\\n}\\n\\n.rename-form {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\talign-items: center;\\n\\theight: 70px;\\n\\tpadding: 16px;\\n\\n\\tinput {\\n\\t\\twidth: 100%;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"merge-form face-list\"},_vm._l((_vm.filteredFaces),function(face){return _c('FaceCover',{key:face.basename,attrs:{\"base-name\":face.basename,\"small\":\"\"},on:{\"click\":function($event){return _vm.handleSelect(face.basename)}}})}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FaceMergeForm.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!./FaceMergeForm.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/postcss-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FaceMergeForm.vue?vue&type=style&index=0&id=33326436&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FaceMergeForm.vue?vue&type=style&index=0&id=33326436&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FaceMergeForm.vue?vue&type=template&id=33326436&scoped=true\"\nimport script from \"./FaceMergeForm.vue?vue&type=script&lang=js\"\nexport * from \"./FaceMergeForm.vue?vue&type=script&lang=js\"\nimport style0 from \"./FaceMergeForm.vue?vue&type=style&index=0&id=33326436&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"33326436\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.face === undefined && !_vm.loadingFiles && !_vm.loadingFaces)?_c('NcEmptyContent',{staticClass:\"empty-content-with-illustration\",scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('AccountBoxMultipleOutline')]},proxy:true}],null,false,2861705255)},[_vm._v(\"\\n\\t\"+_vm._s(_vm.t('photos', 'This person could not be found'))+\"\\n\")]):(_vm.errorFetchingFiles || _vm.errorFetchingFaces)?_c('NcEmptyContent',{scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('AlertCircle')]},proxy:true}])},[_vm._v(\"\\n\\t\"+_vm._s(_vm.t('photos', 'An error occurred'))+\"\\n\")]):_c('div',{staticClass:\"face\"},[_c('div',{staticClass:\"face__header\"},[_c('div',{staticClass:\"face__header__left\"},[_c('NcActions',[_c('NcActionButton',{on:{\"click\":function($event){return _vm.$router.push('/faces/')}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('ArrowLeft')]},proxy:true}])},[_vm._v(_vm._s(_vm.t('photos', 'Back'))+\"\\n\\t\\t\\t\\t\")])],1),_vm._v(\" \"),_c('div',{staticClass:\"face__header__title\"},[(_vm.face !== undefined)?_c('h2',{class:{'face-name': true, 'hidden-visually': _vm.face.basename.match(/^[0-9]+$/)}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.face.basename)+\"\\n\\t\\t\\t\\t\")]):_vm._e()]),_vm._v(\" \"),(_vm.loadingCount > 0 || _vm.loadingFaces)?_c('NcLoadingIcon'):_vm._e()],1),_vm._v(\" \"),(_vm.face !== undefined)?_c('div',{staticClass:\"face__header__actions\"},[_c('NcActions',[_c('NcActionButton',{attrs:{\"close-after-click\":true,\"aria-label\":_vm.t('photos', 'Rename person')},on:{\"click\":function($event){_vm.showRenameModal = true}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Pencil')]},proxy:true}],null,false,514409694)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Rename person'))+\"\\n\\t\\t\\t\\t\")])],1),_vm._v(\" \"),_c('NcActions',{attrs:{\"force-menu\":true}},[(Object.keys(_vm.faces).length > 1)?_c('NcActionButton',{attrs:{\"close-after-click\":true,\"aria-label\":_vm.t('photos', 'Merge with different person')},on:{\"click\":function($event){_vm.showMergeModal = true}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Merge')]},proxy:true}],null,false,3117189691)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Merge with different person'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.selectedFileIds.length)?[_c('NcActionButton',{attrs:{\"close-after-click\":true,\"aria-label\":_vm.t('photos', 'Download selected files')},on:{\"click\":_vm.downloadSelection}},[_c('Download',{attrs:{\"slot\":\"icon\"},slot:\"icon\"}),_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Download selected photos'))+\"\\n\\t\\t\\t\\t\\t\")],1),_vm._v(\" \"),(_vm.shouldFavoriteSelection)?_c('NcActionButton',{attrs:{\"close-after-click\":true,\"aria-label\":_vm.t('photos', 'Mark selection as favorite')},on:{\"click\":_vm.favoriteSelection}},[_c('Star',{attrs:{\"slot\":\"icon\"},slot:\"icon\"}),_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Favorite'))+\"\\n\\t\\t\\t\\t\\t\")],1):_c('NcActionButton',{attrs:{\"close-after-click\":true,\"aria-label\":_vm.t('photos', 'Remove selection from favorites')},on:{\"click\":_vm.unFavoriteSelection}},[_c('Star',{attrs:{\"slot\":\"icon\"},slot:\"icon\"}),_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Remove from favorites'))+\"\\n\\t\\t\\t\\t\\t\")],1),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"close-after-click\":true},on:{\"click\":function($event){_vm.showMoveModal = true}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('AccountSwitch')]},proxy:true}],null,false,2937983280)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.n('photos', 'Move photo to a different person', 'Move photos to a different person', _vm.selectedFileIds.length))+\"\\n\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"close-after-click\":true},on:{\"click\":function($event){return _vm.handleRemoveFilesFromFace(_vm.selectedFileIds)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Close')]},proxy:true}],null,false,1051939733)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.n('photos', 'Remove photo from person', 'Remove photos from person', _vm.selectedFileIds.length))+\"\\n\\t\\t\\t\\t\\t\")])]:_vm._e(),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"close-after-click\":true},on:{\"click\":_vm.handleDeleteFace},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Close')]},proxy:true}],null,false,1051939733)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Remove person'))+\"\\n\\t\\t\\t\\t\")])],2)],1):_vm._e()]),_vm._v(\" \"),(_vm.face !== undefined)?_c('FilesListViewer',{staticClass:\"face__photos\",attrs:{\"container-element\":_vm.appContent,\"file-ids\":_vm.faceFileIds,\"loading\":_vm.loadingFiles || _vm.loadingFaces},scopedSlots:_vm._u([{key:\"default\",fn:function({file, distance}){return _c('File',{attrs:{\"file\":_vm.files[file.id],\"allow-selection\":true,\"selected\":_vm.selection[file.id] === true,\"distance\":distance},on:{\"click\":_vm.openViewer,\"select-toggled\":_vm.onFileSelectToggle}})}}],null,false,2716306842)}):_vm._e(),_vm._v(\" \"),(_vm.showRenameModal)?_c('NcDialog',{attrs:{\"name\":_vm.t('photos', 'Rename person'),\"close-on-click-outside\":\"\",\"size\":\"small\"},on:{\"closing\":function($event){_vm.showRenameModal = false}},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('NcButton',{attrs:{\"aria-label\":_vm.t('photos', 'Save.'),\"type\":\"primary\",\"disabled\":_vm.$refs.nameInput && _vm.$refs.nameInput.value.trim() === ''},on:{\"click\":function($event){return _vm.handleRenameFace(_vm.$refs.nameInput.value)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loadingCount)?_c('NcLoadingIcon'):_c('Send')]},proxy:true}],null,false,564208483)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Save'))+\"\\n\\t\\t\\t\")])]},proxy:true}],null,false,4139225602)},[_c('div',{staticClass:\"rename-form\"},[_c('input',{directives:[{name:\"focus\",rawName:\"v-focus\"}],ref:\"nameInput\",attrs:{\"type\":\"text\",\"name\":\"name\",\"required\":\"\",\"placeholder\":_vm.t('photos', 'Name of this person')},domProps:{\"value\":_vm.faceName},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.handleRenameFace(_vm.$refs.nameInput.value)}}})])]):_vm._e(),_vm._v(\" \"),(_vm.showMergeModal)?_c('NcDialog',{attrs:{\"name\":_vm.t('photos', 'Merge person'),\"close-on-click-outside\":\"\",\"size\":\"normal\"},on:{\"closing\":function($event){_vm.showMergeModal = false}}},[_c('FaceMergeForm',{attrs:{\"first-face\":_vm.faceName},on:{\"select\":function($event){return _vm.handleMerge($event)}}})],1):_vm._e(),_vm._v(\" \"),(_vm.showMoveModal)?_c('NcDialog',{attrs:{\"name\":_vm.t('photos', 'Move to different person'),\"close-on-click-outside\":\"\",\"size\":\"normal\"},on:{\"closing\":function($event){_vm.showMoveModal = false}}},[_c('FaceMergeForm',{attrs:{\"first-face\":_vm.faceName},on:{\"select\":function($event){return _vm.handleMove($event, _vm.selectedFileIds)}}})],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FaceContent.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!./FaceContent.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/postcss-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FaceContent.vue?vue&type=style&index=0&id=66312422&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FaceContent.vue?vue&type=style&index=0&id=66312422&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FaceContent.vue?vue&type=template&id=66312422&scoped=true\"\nimport script from \"./FaceContent.vue?vue&type=script&lang=js\"\nexport * from \"./FaceContent.vue?vue&type=script&lang=js\"\nimport style0 from \"./FaceContent.vue?vue&type=style&index=0&id=66312422&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"66312422\",\n null\n \n)\n\nexport default component.exports"],"names":["name","mixins","AbortControllerMixin","data","errorFetchingFiles","loadingFiles","doneFetchingFiles","fetchSemaphore","SemaphoreWithPriority","fetchedFileIds","watch","this","resetFetchFilesState","methods","async","options","arguments","length","undefined","blacklist","force","fetchSemaphoreSymbol","acquire","numberOfImagesPerBatch","fetchedFiles","firstResult","nbResults","mimesType","allMimes","onThisDay","onlyFavorites","orMime","reduce","str","mime","concat","eqFavorites","Array","fill","map","_","years","start","moment","Date","now","startOf","subtract","end","endOf","add","format","join","sourceFolders","store","folder","joinPaths","davRootPath","Object","assign","method","headers","props","deep","details","client","genFileInfo","getPhotos","signal","abortController","fileIds","file","fileid","filter","fileId","includes","toString","push","$store","dispatch","logger","error","_error$response","response","status","sources","source","_error$response2","_error$response2$data","match","davGetClient","createDirectory","code","release","___CSS_LOADER_EXPORT___","module","id","components","FaceCover","FaceCoverMixin","FetchFacesMixin","firstFace","type","String","required","loading","computed","mapGetters","filteredFaces","values","faces","face","basename","sort","a","b","nbItems","facesFiles","handleSelect","faceName","$emit","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","_c","_self","staticClass","_l","key","attrs","on","$event","Pencil","Star","Download","Close","AlertCircle","Send","Merge","ArrowLeft","AccountBoxMultipleOutline","FaceMergeForm","FilesListViewer","File","NcLoadingIcon","NcEmptyContent","NcActions","NcActionButton","NcDialog","NcButton","AccountSwitch","directives","focus","el","Vue","FetchFilesMixin","FilesSelectionMixin","default","showMoveModal","showMergeModal","showRenameModal","loadingCount","appContent","document","getElementById","faceFileIds","shouldFavoriteSelection","selectedFileIds","some","state","files","favorite","fetchFaceContent","mounted","mapActions","openViewer","OCA","Viewer","open","path","filename","split","slice","list","sectionHeader","loadMore","canLoop","removeFilesFromFace","fileIdsToRemove","resetSelection","deleteFace","$router","oldName","renameFace","params","moveFilesToFace","oldFace","fileIdsToMove","toggleFavoriteForFiles","favoriteState","downloadFiles","loadingFaces","errorFetchingFaces","scopedSlots","_u","fn","proxy","_v","_s","t","class","_e","keys","downloadSelection","slot","favoriteSelection","unFavoriteSelection","n","handleRemoveFilesFromFace","handleDeleteFace","_ref","distance","selection","onFileSelectToggle","$refs","nameInput","value","trim","handleRenameFace","rawName","ref","domProps","indexOf","_k","keyCode","handleMerge","handleMove"],"sourceRoot":""} \ No newline at end of file diff --git a/lib/Migration/Version3000Date20240417075404.php b/lib/Migration/Version3000Date20240417075404.php new file mode 100644 index 000000000..0717a4c12 --- /dev/null +++ b/lib/Migration/Version3000Date20240417075404.php @@ -0,0 +1,58 @@ + + * + * @author Louis Chmn + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ + +namespace OCA\Photos\Migration; + +use Closure; +use OCP\DB\ISchemaWrapper; +use OCP\IDBConnection; +use OCP\Migration\IOutput; +use OCP\Migration\SimpleMigrationStep; + +/** + * Migrate the photosSourceFolder user config to photosSourceFolders + */ +class Version3000Date20240417075404 extends SimpleMigrationStep { + public function __construct( + private IDBConnection $db, + ) { + } + + /** + * @param IOutput $output + * @param Closure(): ISchemaWrapper $schemaClosure + * @param array $options + */ + public function postSchemaChange(IOutput $output, Closure $schemaClosure, array $options): void { + $query = $this->db->getQueryBuilder(); + $query->update('preferences') + ->set('configvalue', $query->func()->concat($query->expr()->literal('["'), 'configvalue', $query->expr()->literal('"]'))) + ->set('configkey', $query->expr()->literal('photosSourceFolders')) + ->where($query->expr()->eq('appid', $query->expr()->literal('photos'))) + ->andWhere($query->expr()->eq('configkey', $query->expr()->literal('photosSourceFolder'))) + ->executeStatement(); + } +} diff --git a/lib/Service/UserConfigService.php b/lib/Service/UserConfigService.php index d2362fe94..bb3b0a38c 100644 --- a/lib/Service/UserConfigService.php +++ b/lib/Service/UserConfigService.php @@ -34,7 +34,7 @@ class UserConfigService { public const DEFAULT_CONFIGS = [ 'croppedLayout' => 'false', 'photosLocation' => '/Photos', - 'photosSourceFolder' => '/Photos', + 'photosSourceFolders' => '["/Photos"]', ]; private IConfig $config; diff --git a/src/components/Settings/PhotosSourceLocationsSettings.vue b/src/components/Settings/PhotosSourceLocationsSettings.vue index 338087ebe..82186c865 100644 --- a/src/components/Settings/PhotosSourceLocationsSettings.vue +++ b/src/components/Settings/PhotosSourceLocationsSettings.vue @@ -23,24 +23,22 @@ + {{ t('photos', 'Add folder') }} @@ -50,6 +48,7 @@ import debounce from 'debounce' import { defineComponent } from 'vue' import FolderMultiple from 'vue-material-design-icons/FolderMultiple.vue' +import Plus from 'vue-material-design-icons/Plus.vue' import { NcButton } from '@nextcloud/vue' import { getFilePickerBuilder } from '@nextcloud/dialogs' @@ -63,6 +62,7 @@ export default defineComponent({ components: { NcButton, PhotosFolder, + Plus, }, data() { @@ -72,9 +72,9 @@ export default defineComponent({ }, computed: { - /** @return {string} */ - photosSourceFolder() { - return this.$store.state.userConfig.photosSourceFolder + /** @return {string[]} */ + photosSourceFolders() { + return this.$store.state.userConfig.photosSourceFolders }, }, @@ -97,17 +97,16 @@ export default defineComponent({ async addSourceFolder() { const pickedFolder = await this.openFilePicker(t('photos', 'Select a source folder for your media')) - // TODO: uncomment when SEARCH on multiple folders is implemented. - // if (this.photosSourceFolder.includes(pickedFolder)) { - // return - // } - this.$store.dispatch('updateUserConfig', { key: 'photosSourceFolder', value: pickedFolder }) + if (this.photosSourceFolders.includes(pickedFolder)) { + return + } + this.$store.dispatch('updateUserConfig', { key: 'photosSourceFolders', value: [...this.photosSourceFolders, pickedFolder] }) }, removeSourceFolder(index) { - const folders = [...this.photosSourceFolder] + const folders = [...this.photosSourceFolders] folders.splice(index, 1) - this.$store.dispatch('updateUserConfig', { key: 'photosSourceFolder', value: folders }) + this.$store.dispatch('updateUserConfig', { key: 'photosSourceFolders', value: folders }) }, t, @@ -123,6 +122,10 @@ export default defineComponent({ .photos-locations { margin-bottom: 16px; + + li { + list-style: none; + } } } diff --git a/src/components/Settings/SettingsDialog.vue b/src/components/Settings/SettingsDialog.vue index f05db8281..73a9beeaa 100644 --- a/src/components/Settings/SettingsDialog.vue +++ b/src/components/Settings/SettingsDialog.vue @@ -7,7 +7,7 @@ - + diff --git a/src/mixins/FetchFilesMixin.js b/src/mixins/FetchFilesMixin.js index b58031973..58f622b4b 100644 --- a/src/mixins/FetchFilesMixin.js +++ b/src/mixins/FetchFilesMixin.js @@ -101,13 +101,20 @@ export default { return fileIds } catch (error) { if (error.response?.status === 404) { - this.errorFetchingFiles = 404 - const source = joinPaths(davRootPath, store.state.userConfig.photosSourceFolder ?? '/Photos') + '/' - logger.debug('Photo source does not exist, creating it.') - try { - await davGetClient().createDirectory(source) - } catch (error) { - logger.error('Fail to create source directory', { error }) + const sources = store.state.userConfig.photosSourceFolders + for (const source of sources) { + if (error.response?.data?.match(`File with name /${source} could not be located`) === null) { + continue + } + logger.debug(`The ${source} folder does not exist, creating it.`) + try { + await davGetClient().createDirectory(joinPaths(davRootPath, source)) + this.resetFetchFilesState() + return [] + } catch (error) { + this.errorFetchingFiles = 404 + logger.error('Fail to create source directory', { error }) + } } } else if (error.code === 'ERR_CANCELED') { return [] @@ -117,7 +124,6 @@ export default { // cancelled request, moving on... logger.error('Error fetching files', { error }) - console.error(error) } finally { this.loadingFiles = false this.fetchSemaphore.release(fetchSemaphoreSymbol) diff --git a/src/services/PhotoSearch.js b/src/services/PhotoSearch.js index 435297da1..1ce609c42 100644 --- a/src/services/PhotoSearch.js +++ b/src/services/PhotoSearch.js @@ -21,12 +21,13 @@ */ import { genFileInfo } from '../utils/fileUtils.js' -import { getCurrentUser } from '@nextcloud/auth' import { allMimes } from './AllowedMimes.js' import client from './DavClient.js' import { props } from './DavRequest.js' import moment from '@nextcloud/moment' import store from '../store/index.js' +import { davRootPath } from '@nextcloud/files' +import { joinPaths } from '@nextcloud/paths' /** * List files from a folder and filter out unwanted mimes @@ -51,8 +52,6 @@ export default async function(options = {}) { ...options, } - const prefixPath = `/files/${getCurrentUser().uid}` - // generating the search or condition // based on the allowed mimetypes const orMime = options.mimesType.reduce((str, mime) => `${str} @@ -95,15 +94,14 @@ export default async function(options = {}) { }).join('\n')}` : '' - // TODO: uncomment when SEARCH on multiple folders is implemented. - // const sourceFolders = store.state.userConfig.photosSourceFolder - // .map(folder => ` - // - // ${davRootPath}/${folder} - // infinity - // - // `) - // .join('\n') + const sourceFolders = store.state.userConfig.photosSourceFolders + .map(folder => ` + + ${joinPaths(davRootPath, folder)} + infinity + ` + ) + .join('\n') options = Object.assign({ method: 'SEARCH', @@ -123,10 +121,7 @@ export default async function(options = {}) { - - ${prefixPath}/${store.state.userConfig.photosSourceFolder ?? '/Photos'} - infinity - + ${sourceFolders} diff --git a/src/store/userConfig.js b/src/store/userConfig.js index ae201bdac..708e89caa 100644 --- a/src/store/userConfig.js +++ b/src/store/userConfig.js @@ -58,7 +58,7 @@ export async function getFolder(path) { /** * @typedef {object} UserConfigState * @property {boolean} croppedLayout - * @property {string} photosSourceFolder + * @property {string[]} photosSourceFolders * @property {string} photosLocation * @property {import('@nextcloud/files').Folder} [photosLocationFolder] */ @@ -68,7 +68,7 @@ const module = { state() { return { croppedLayout: loadState('photos', 'croppedLayout', 'false') === 'true', - photosSourceFolder: loadState('photos', 'photosSourceFolder', ''), + photosSourceFolders: JSON.parse(loadState('photos', 'photosSourceFolders', '["/Photos"]')), photosLocation: loadState('photos', 'photosLocation', ''), photosLocationFolder: undefined, } diff --git a/src/views/Timeline.vue b/src/views/Timeline.vue index 5cf0e6a05..389504436 100644 --- a/src/views/Timeline.vue +++ b/src/views/Timeline.vue @@ -25,7 +25,7 @@