%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /www/varak.net/nextcloud.varak.net/apps/photos/js/
Upload File :
Create Path :
Current File : //www/varak.net/nextcloud.varak.net/apps/photos/js/photos-src_views_SharedAlbums_vue.js.map

{"version":3,"file":"photos-src_views_SharedAlbums_vue.js?v=f553bfb40364ef235ad5","mappings":"0IAKA,SACCA,KAAM,uBAENC,KAAIA,KACI,CACNC,gBAAiB,IAAIC,kBAIvBC,aAAAA,GACCC,KAAKH,gBAAgBI,OACtB,EAEAC,gBAAAA,CAAiBC,EAAMC,EAAIC,GAC1BL,KAAKH,gBAAgBI,QACrBD,KAAKH,gBAAkB,IAAIC,gBAC3BO,GACD,E,wECZD,SACCV,KAAM,wBAENC,KAAIA,KACI,CACNU,yBAA0B,KAC1BC,oBAAoB,IAItBC,OAAQ,CACPC,EAAAA,GAGDC,QAAS,KACLC,EAAAA,EAAAA,IAAW,CACb,mBASD,sBAAMC,CAAiBC,EAAgBC,EAAYC,GAClD,GAAIf,KAAKO,mBACR,MAAO,GAGR,IACCP,KAAKO,oBAAqB,EAC1BP,KAAKM,yBAA2B,KAEhC,MAAMU,QAAoBJ,EAAAA,EAAAA,IAAiBC,EAAgB,CAAEI,OAAQjB,KAAKH,gBAAgBoB,QAAUH,EAAYC,GAIhH,OAFAf,KAAKkB,eAAe,CAAEF,gBAEfA,CACR,CAAE,MAAOG,GACuB,MAA3BA,EAAMC,UAAUC,OACnBrB,KAAKM,yBAA2B,IAEhCN,KAAKM,yBAA2Ba,CAElC,CAAE,QACDnB,KAAKO,oBAAqB,CAC3B,CAEA,MAAO,EACR,G,0HCrBF,SAASe,IACR,MAAQ,uSADkCC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,IAS5BG,KAAK,6CAGvB,CAMA,SAASC,IACR,MAAQ,2pBADuCJ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,IAoBjCG,KAAK,6CAGvB,CASOE,eAAeC,EAAgBC,EAAMC,GAAkD,IAAzCjB,EAAUS,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,GAAIR,EAAMQ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGS,EAAAA,GAC9E,IACC,MAAMZ,QAAiBL,EAAOkB,KAAKH,EAAM,CACxClC,KAAM0B,EAAwBR,GAC9BoB,SAAS,KACNH,IAKJ,OAFAI,EAAAA,EAAOC,MAAM,uCAAwC,CAAExC,KAAMwB,EAASxB,OAE/DyC,EAAiBjB,EAASxB,KAClC,CAAE,MAAOuB,GACR,GAAmB,iBAAfA,EAAMmB,KACT,OAAO,KAGR,MAAMnB,CACP,CACD,CAUOS,eAAehB,EAAiBkB,EAAMC,GAAkD,IAAzCjB,EAAUS,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,GAAIR,EAAMQ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGS,EAAAA,GAC/E,IACC,MAAMZ,QAAiBL,EAAOwB,qBAAqBT,EAAM,CACxDlC,KAAM0B,EAAwBR,GAC9BoB,SAAS,KACNH,IAKJ,OAFAI,EAAAA,EAAOC,MAAO,yBAAwBhB,EAASxB,KAAK4B,uBAAwB,CAAE5B,KAAMwB,EAASxB,OAEtFwB,EAASxB,KACd4C,QAAOC,GAAcA,EAAWC,WAAaZ,IAC7Ca,IAAIN,EACP,CAAE,MAAOlB,GACR,GAAmB,iBAAfA,EAAMmB,KACT,MAAO,GAGR,MAAMnB,CACP,CACD,CAOA,SAASkB,EAAiBO,QAEiBnB,IAAtCmB,EAAcC,MAAMC,eAAqE,KAAtCF,EAAcC,MAAMC,cAC1EF,EAAcC,MAAMC,cAAgB,GACgC,iBAAnDF,EAAcC,MAAMC,cAAcC,eAC/CC,MAAMC,QAAQL,EAAcC,MAAMC,cAAcC,cACnDH,EAAcC,MAAMC,cAAgBF,EAAcC,MAAMC,cAAcC,aAEtEH,EAAcC,MAAMC,cAAgB,CAACF,EAAcC,MAAMC,cAAcC,eAKzEH,GAAgBM,EAAAA,EAAAA,IAAYN,GAG5B,MAAMO,EAAYC,KAAKC,MAAMT,EAAcO,WAAWG,QAAQ,UAAW,MAAQ,MACzD,OAApBH,EAAUI,QACbJ,EAAUI,MAAQC,MAASC,OAC3BN,EAAUO,IAAMF,MAASC,QAE1B,MAAME,EAAqB,CAC1BC,UAAWJ,IAAAA,KAAYL,EAAUI,OAAOM,OAAO,aAC/CC,QAASN,IAAAA,KAAYL,EAAUO,KAAKG,OAAO,cAQ5C,OALCjB,EAAcmB,KADXJ,EAAmBC,YAAcD,EAAmBG,QAClCH,EAAmBC,WAEnBI,EAAAA,EAAAA,IAAE,SAAU,2BAA4BL,GAGvDf,CACR,CAUOhB,eAAeqC,EAAqBnC,EAAMC,GAAkD,IAAzCjB,EAAUS,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,GAAIR,EAAMQ,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGS,EAAAA,GACnF,IACC,MAMMkC,SANiBnD,EAAOwB,qBAAqBT,EAAM,CACxDlC,KAAM+B,EAA6Bb,GACnCoB,SAAS,KACNH,KAG0BnC,KAC5B+C,KAAIwB,IAAQjB,EAAAA,EAAAA,IAAYiB,KACxB3B,QAAO2B,GAAQA,EAAKC,SAItB,OAFAjC,EAAAA,EAAOC,MAAO,yBAAwB8B,EAAa1C,qBAAsB0C,GAElEA,CACR,CAAE,MAAO/C,GACR,GAAmB,iBAAfA,EAAMmB,KACT,MAAO,GAMR,MAHAH,EAAAA,EAAOhB,MAAM,kCAAmC,CAAEA,UAClDkD,QAAQlD,MAAMA,GAERA,CACP,CACD,C,sEChNImD,E,MAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,0qCAA2qC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,6DAA6D,MAAQ,GAAG,SAAW,yUAAyU,eAAiB,CAAC,ukDAAupD,WAAa,MAEj0G,S,sECJIH,E,MAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,kXAAmX,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,6DAA6D,MAAQ,GAAG,SAAW,wKAAwK,eAAiB,CAAC,i8BAAihC,WAAa,MAEluD,S,qECJIH,E,MAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,uiCAAwiC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,mDAAmD,MAAQ,GAAG,SAAW,8VAA8V,eAAiB,CAAC,yxDAAy2D,WAAa,MAE35G,S,sECJIH,E,MAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,4QAA6Q,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,0CAA0C,MAAQ,GAAG,SAAW,yHAAyH,eAAiB,CAAC,u1BAAu6B,WAAa,MAEh9C,S,mCCaA,MCpB8G,EDoB9G,CACE9E,KAAM,kBACN+E,MAAO,CAAC,SACR7B,MAAO,CACL8B,MAAO,CACLC,KAAMC,QAERC,UAAW,CACTF,KAAMC,OACNE,QAAS,gBAEXC,KAAM,CACJJ,KAAMK,OACNF,QAAS,MEff,SAXgB,E,SAAA,GACd,GCRW,WAAkB,IAAIG,EAAIlF,KAAKmF,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,OAAOD,EAAIG,GAAG,CAACC,YAAY,yCAAyCC,MAAM,CAAC,eAAeL,EAAIP,MAAM,aAAaO,EAAIP,MAAM,KAAO,OAAOa,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOP,EAAIQ,MAAM,QAASD,EAAO,IAAI,OAAOP,EAAIS,QAAO,GAAO,CAACR,EAAG,MAAM,CAACG,YAAY,4BAA4BC,MAAM,CAAC,KAAOL,EAAIJ,UAAU,MAAQI,EAAIF,KAAK,OAASE,EAAIF,KAAK,QAAU,cAAc,CAACG,EAAG,OAAO,CAACI,MAAM,CAAC,EAAI,8GAA8G,CAAEL,EAAS,MAAEC,EAAG,QAAQ,CAACD,EAAIU,GAAGV,EAAIW,GAAGX,EAAIP,UAAUO,EAAIY,UAClnB,GACsB,IDSpB,EACA,KACA,KACA,MAI8B,O,mCEEhC,MCpB4G,EDoB5G,CACEnG,KAAM,gBACN+E,MAAO,CAAC,SACR7B,MAAO,CACL8B,MAAO,CACLC,KAAMC,QAERC,UAAW,CACTF,KAAMC,OACNE,QAAS,gBAEXC,KAAM,CACJJ,KAAMK,OACNF,QAAS,MEff,SAXgB,E,SAAA,GACd,GCRW,WAAkB,IAAIG,EAAIlF,KAAKmF,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,OAAOD,EAAIG,GAAG,CAACC,YAAY,uCAAuCC,MAAM,CAAC,eAAeL,EAAIP,MAAM,aAAaO,EAAIP,MAAM,KAAO,OAAOa,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOP,EAAIQ,MAAM,QAASD,EAAO,IAAI,OAAOP,EAAIS,QAAO,GAAO,CAACR,EAAG,MAAM,CAACG,YAAY,4BAA4BC,MAAM,CAAC,KAAOL,EAAIJ,UAAU,MAAQI,EAAIF,KAAK,OAASE,EAAIF,KAAK,QAAU,cAAc,CAACG,EAAG,OAAO,CAACI,MAAM,CAAC,EAAI,2EAA2E,CAAEL,EAAS,MAAEC,EAAG,QAAQ,CAACD,EAAIU,GAAGV,EAAIW,GAAGX,EAAIP,UAAUO,EAAIY,UAC7kB,GACsB,IDSpB,EACA,KACA,KACA,MAI8B,O,mCEEhC,MCpBsH,EDoBtH,CACEnG,KAAM,0BACN+E,MAAO,CAAC,SACR7B,MAAO,CACL8B,MAAO,CACLC,KAAMC,QAERC,UAAW,CACTF,KAAMC,OACNE,QAAS,gBAEXC,KAAM,CACJJ,KAAMK,OACNF,QAAS,MEff,SAXgB,E,SAAA,GACd,GCRW,WAAkB,IAAIG,EAAIlF,KAAKmF,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,OAAOD,EAAIG,GAAG,CAACC,YAAY,kDAAkDC,MAAM,CAAC,eAAeL,EAAIP,MAAM,aAAaO,EAAIP,MAAM,KAAO,OAAOa,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOP,EAAIQ,MAAM,QAASD,EAAO,IAAI,OAAOP,EAAIS,QAAO,GAAO,CAACR,EAAG,MAAM,CAACG,YAAY,4BAA4BC,MAAM,CAAC,KAAOL,EAAIJ,UAAU,MAAQI,EAAIF,KAAK,OAASE,EAAIF,KAAK,QAAU,cAAc,CAACG,EAAG,OAAO,CAACI,MAAM,CAAC,EAAI,oKAAoK,CAAEL,EAAS,MAAEC,EAAG,QAAQ,CAACD,EAAIU,GAAGV,EAAIW,GAAGX,EAAIP,UAAUO,EAAIY,UACjrB,GACsB,IDSpB,EACA,KACA,KACA,MAI8B,O,mCEEhC,MCpBgH,EDoBhH,CACEnG,KAAM,oBACN+E,MAAO,CAAC,SACR7B,MAAO,CACL8B,MAAO,CACLC,KAAMC,QAERC,UAAW,CACTF,KAAMC,OACNE,QAAS,gBAEXC,KAAM,CACJJ,KAAMK,OACNF,QAAS,MEff,SAXgB,E,SAAA,GACd,GCRW,WAAkB,IAAIG,EAAIlF,KAAKmF,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,OAAOD,EAAIG,GAAG,CAACC,YAAY,2CAA2CC,MAAM,CAAC,eAAeL,EAAIP,MAAM,aAAaO,EAAIP,MAAM,KAAO,OAAOa,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOP,EAAIQ,MAAM,QAASD,EAAO,IAAI,OAAOP,EAAIS,QAAO,GAAO,CAACR,EAAG,MAAM,CAACG,YAAY,4BAA4BC,MAAM,CAAC,KAAOL,EAAIJ,UAAU,MAAQI,EAAIF,KAAK,OAASE,EAAIF,KAAK,QAAU,cAAc,CAACG,EAAG,OAAO,CAACI,MAAM,CAAC,EAAI,iJAAiJ,CAAEL,EAAS,MAAEC,EAAG,QAAQ,CAACD,EAAIU,GAAGV,EAAIW,GAAGX,EAAIP,UAAUO,EAAIY,UACvpB,GACsB,IDSpB,EACA,KACA,KACA,MAI8B,O,mCEWhC,MC7BqL,ED6BrL,CACAnG,KAAA,kBAEAoG,WAAA,CACAC,c,SAAAA,GAGAnD,MAAA,CACAoD,SAAA,CACArB,KAAAC,OACAqB,UAAA,GAEAC,OAAA,CACAvB,KAAAC,OACAqB,UAAA,GAEAE,KAAA,CACAxB,KAAAC,OACAqB,UAAA,K,uIEpCInE,EAAU,CAAC,EAEfA,EAAQsE,kBAAoB,IAC5BtE,EAAQuE,cAAgB,IAElBvE,EAAQwE,OAAS,SAAc,KAAM,QAE3CxE,EAAQyE,OAAS,IACjBzE,EAAQ0E,mBAAqB,IAEhB,IAAI,IAAS1E,GAKJ,KAAW,IAAQ2E,QAAS,IAAQA,OCP1D,SAXgB,E,SAAA,GACd,GCTW,WAAkB,IAAIxB,EAAIlF,KAAKmF,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,KAAK,CAACA,EAAG,cAAc,CAACG,YAAY,mBAAmBC,MAAM,CAAC,GAAKL,EAAIkB,OAAO,CAAmB,KAAjBlB,EAAIe,SAAiBd,EAAG,MAAM,CAACG,YAAY,0BAA0BC,MAAM,CAAC,IAAML,EAAIe,SAAS,IAAMf,EAAIiB,UAAUhB,EAAG,MAAM,CAACG,YAAY,gEAAgE,CAACH,EAAG,gBAAgB,CAACI,MAAM,CAAC,KAAO,QAAQ,GAAGL,EAAIU,GAAG,KAAKT,EAAG,MAAM,CAACG,YAAY,6BAA6B,CAACH,EAAG,MAAM,CAACG,YAAY,oCAAoC,CAACJ,EAAIyB,GAAG,YAAY,GAAGzB,EAAIU,GAAG,KAAKT,EAAG,MAAM,CAACG,YAAY,uCAAuC,CAACJ,EAAIyB,GAAG,aAAa,QAAQ,EACpoB,GACsB,IDUpB,EACA,KACA,WACA,MAI8B,O,mCEnBhC,I,iCCgCA,MChCqL,EDgCrL,CACAhH,KAAA,kBAEAoG,WAAA,CACAa,YAAA,IACAC,eAAAA,EAAAA,IAGAhE,MAAA,CAEA7B,YAAA,CACA4D,KAAAkC,OACAZ,UAAA,GAEAa,QAAA,CACAnC,KAAAoC,QACAjC,SAAA,GAEA5D,MAAA,CACAyD,KAAAqC,MACAlC,QAAA,OAIAmC,SAAA,CAIAC,YAAAA,GACA,WAAAL,OAAAM,KAAA,KAAApG,aAAAQ,MACA,GAGAd,QAAA,CACAsD,EAAAqD,EAAAA,K,uIEvDItF,EAAU,CAAC,EAEfA,EAAQsE,kBAAoB,IAC5BtE,EAAQuE,cAAgB,IAElBvE,EAAQwE,OAAS,SAAc,KAAM,QAE3CxE,EAAQyE,OAAS,IACjBzE,EAAQ0E,mBAAqB,IAEhB,IAAI,IAAS1E,GAKJ,KAAW,IAAQ2E,QAAS,IAAQA,OCP1D,SAXgB,E,SAAA,GACd,GJTW,WAAkB,IAAIxB,EAAIlF,KAAKmF,EAAGD,EAAIE,MAAMD,GAAG,OAAQD,EAAI/D,MAAOgE,EAAG,iBAAiB,CAACI,MAAM,CAAC,KAAOL,EAAIlB,EAAE,SAAU,uBAAuB,CAACmB,EAAG,cAAc,CAACI,MAAM,CAAC,KAAO,QAAQ+B,KAAK,UAAU,GAAGnC,EAAG,MAAM,CAACG,YAAY,eAAe,CAACJ,EAAIyB,GAAG,UAAUzB,EAAIU,GAAG,KAAMV,EAAIiC,eAAiBjC,EAAI6B,QAAS7B,EAAIyB,GAAG,0BAA4BzB,EAAIiC,aAAqKjC,EAAIY,KAA3JX,EAAG,KAAK,CAACG,YAAY,qBAAqB,CAACJ,EAAIqC,GAAIrC,EAAIlE,aAAa,SAASyB,GAAY,OAAOyC,EAAIyB,GAAG,UAAU,KAAK,CAAC,WAAalE,GAAY,KAAI,IAAa,EAChhB,GACsB,IIUpB,EACA,KACA,WACA,MAI8B,O,mCCnBhC,I,sBC6CA,MC7CgL,ED6ChL,CACA9C,KAAA,mBAEAoG,WAAA,CACAyB,UAAA,IACAC,SAAA,KACAC,cAAAA,EAAAA,IAGAC,cAAA,EAEA9E,MAAA,CACAkE,QAAA,CACAnC,KAAAoC,QACAjC,SAAA,GAEAjD,KAAA,CACA8C,KAAAC,OACAE,QAAA,KAEAJ,MAAA,CACAC,KAAAC,OACAqB,UAAA,GAEA0B,UAAA,CACAhD,KAAAC,OACAE,QAAAf,EAAA,oBAGA6D,OAAA,CACAjD,KAAAkC,OACA/B,QAAA,OAIAmC,SAAA,CACAY,MAAAA,GACA,MAAAA,EAAA,WAAAhG,KAEA,OADA,KAAAiG,wBAAAD,GACAA,CACA,EAEAnI,IAAAA,GACA,YAAAmI,OACA,KAAAF,UAEA,KAAAjD,KACA,EAEAqD,UAAAA,GACA,MAAAlG,EAAA,KAAAA,KAAAmG,MAAA,KACAnG,EAAAoG,MACA,MAAAC,EAAArG,EAAAJ,KAAA,KACA,YAAAoG,QAAA,KAAAK,EAAAC,OACA,IACAtG,EAAAJ,KAAA,IACA,EAEA2G,UAAAA,GACA,YAAAL,YAAA,KAAAA,WAAAC,MAAA,KAAAC,KACA,EAEAI,UAAAA,GACA,iBAAAN,WACAhE,EAAA,6BAAAuE,OAAA,KAAAX,YAEA5D,EAAA,6BAAAuE,OAAA,KAAAF,YACA,EAUAjI,EAAAA,GAGA,MACA0B,EADA,YACA0G,KAAA,KAAAR,YAAA,IAGA,KAAArI,EAAA,OAAAkI,GAAAf,OAAA2B,OAAA,QAAAC,OAAA,CACAb,OAAA,KAAAA,QAAA,CAAA/F,UAKA,WAAAA,EACA,CAAAnC,QAIAgJ,mBAAA,KAAAC,QAAAC,QAAA,CAAAlJ,OAAAkI,WAAAiB,SAAAhH,KACA,GAGApB,QAAA,CACAqI,QAAAA,GACA,KAAAH,QAAArE,KAAA,KAAAnE,GACA,EAEA4I,OAAAA,GACA,KAAAtD,MAAA,UACA,EAEAqC,sBAAAA,CAAAkB,GAEA,MAAAC,EAAAC,SAAAC,cAAA,gCACA,OAAAF,IACAA,EAAAG,MAAAC,QAAAL,EAAA,YAEA,I,sIEpJIlH,EAAU,CAAC,EAEfA,EAAQsE,kBAAoB,IAC5BtE,EAAQuE,cAAgB,IAElBvE,EAAQwE,OAAS,SAAc,KAAM,QAE3CxE,EAAQyE,OAAS,IACjBzE,EAAQ0E,mBAAqB,IAEhB,IAAI,IAAS1E,GAKJ,KAAW,IAAQ2E,QAAS,IAAQA,OCP1D,SAXgB,E,SAAA,GACd,GJTW,WAAkB,IAAIxB,EAAIlF,KAAKmF,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,MAAM,CAACG,YAAY,oBAAoBiE,MAAM,CAAC,0BAA2BrE,EAAI4C,QAAQvC,MAAM,CAAC,KAAO,YAAY,CAAGL,EAAI4C,OAA2R5C,EAAIY,KAAvRX,EAAG,WAAW,CAACG,YAAY,0BAA0BC,MAAM,CAAC,aAAaL,EAAIlB,EAAE,SAAU,WAAW,KAAO,YAAYwB,GAAG,CAAC,MAAQN,EAAI6D,UAAUS,YAAYtE,EAAIuE,GAAG,CAAC,CAACC,IAAI,OAAOC,GAAG,WAAW,MAAO,CAACxE,EAAG,YAAY,CAACI,MAAM,CAAC,KAAO,MAAM,EAAEqE,OAAM,IAAO,MAAK,EAAM,cAAuB1E,EAAIU,GAAG,KAAKT,EAAG,MAAM,CAACG,YAAY,4BAA4B,CAACH,EAAG,KAAK,CAACG,YAAY,iCAAiCE,GAAG,CAAC,MAAQN,EAAI8D,UAAU,CAAC9D,EAAIU,GAAG,WAAWV,EAAIW,GAAGX,EAAIvF,MAAM,YAAYuF,EAAIU,GAAG,KAAKT,EAAG,MAAM,CAACG,YAAY,kCAAkCJ,EAAIU,GAAG,KAAKV,EAAIyB,GAAG,aAAa,GAAGzB,EAAIU,GAAG,KAAMV,EAAI2E,OAAO9E,QAASI,EAAG,MAAM,CAACG,YAAY,8BAA8B,CAACJ,EAAIyB,GAAG,YAAY,GAAGzB,EAAIY,KAAKZ,EAAIU,GAAG,KAAKT,EAAG,gBAAgB,CAAC2E,WAAW,CAAC,CAACnK,KAAK,OAAOoK,QAAQ,SAASC,MAAO9E,EAAI6B,QAASkD,WAAW,YAAY3E,YAAY,8BAA8BJ,EAAIU,GAAG,KAAKT,EAAG,MAAM,CAACG,YAAY,oCAAoC,CAACJ,EAAIyB,GAAG,UAAU,IAAI,EACtnC,GACsB,IIUpB,EACA,KACA,WACA,MAI8B,O,gDCnBhC,I,mGCoDA,MCpD4K,EDoD5K,CACAhH,KAAA,eACAoG,WAAA,CACAmE,oBAAA,IACArD,eAAA,KACAsD,gBAAA,IACAC,gBAAA,IACAC,iBAAA,IACAC,aAAAA,EAAAA,IAGAC,QAAA,CAKAtE,SAAAuE,IACA,IAAAA,EACA,IAGAC,EAAAA,EAAAA,IAAA,+BAAAD,iBAOAE,kBAAAC,GACAA,EAAAC,SAAAtH,QAAA,IAAAuH,OAAA,MAAAF,EAAA7H,cAAA,GAAA2B,UAAA,KAIAjE,OAAA,CACAsK,EAAAA,GAGA5D,SAAA,CAIA6D,YAAAA,GACA,YAAAC,OAAAC,QAAAF,YACA,GAGA,iBAAAG,GACA,KAAAC,mBACA,EAEAzK,QAAA,CACAyK,iBAAAA,GACA,KAAAvK,iBACA,YAAAwK,EAAAA,EAAAA,OAAAC,mBACA,8DAEA,EAEArH,EAAAqD,EAAAA,GACAiE,EAAAC,EAAAA,K,uIEpGIxJ,EAAU,CAAC,EAEfA,EAAQsE,kBAAoB,IAC5BtE,EAAQuE,cAAgB,IAElBvE,EAAQwE,OAAS,SAAc,KAAM,QAE3CxE,EAAQyE,OAAS,IACjBzE,EAAQ0E,mBAAqB,IAEhB,IAAI,IAAS1E,GAKJ,KAAW,IAAQ2E,QAAS,IAAQA,OCP1D,SAXgB,E,SAAA,GACd,GJTW,WAAkB,IAAIxB,EAAIlF,KAAKmF,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAG,kBAAkB,CAACG,YAAY,cAAcC,MAAM,CAAC,YAAcL,EAAI6F,aAAa,QAAU7F,EAAI3E,mBAAmB,MAAQ2E,EAAI5E,0BAA0BkJ,YAAYtE,EAAIuE,GAAG,CAAC,CAACC,IAAI,UAAUC,GAAG,SAAA6B,GAAsB,IAAb,WAAC/I,GAAW+I,EAAE,OAAOrG,EAAG,kBAAkB,CAACuE,IAAIjH,EAAWmI,SAASrF,MAAM,CAAC,KAAQ,iBAAgB9C,EAAWmI,WAAW,UAAU1F,EAAIlB,EAAE,SAAU,4CAA6C,CAAEyH,UAAWhJ,EAAWmI,WAAY,YAAYnI,EAAWmI,SAAS,YAAY1F,EAAIwG,GAAG,WAAPxG,CAAmBzC,EAAW+H,aAAa,CAACrF,EAAG,OAAO,CAACG,YAAY,eAAe,CAACJ,EAAIU,GAAG,WAAWV,EAAIW,GAAGX,EAAIwG,GAAG,oBAAPxG,CAA4BzC,IAAa,YAAYyC,EAAIU,GAAG,KAAKT,EAAG,MAAM,CAACG,YAAY,iBAAiBC,MAAM,CAAC,KAAO,YAAY+B,KAAK,YAAY,CAACpC,EAAIU,GAAG,WAAWV,EAAIW,GAAGpD,EAAWsB,MAAM,MAAMmB,EAAIW,GAAGX,EAAIoG,EAAE,SAAU,UAAW,uBAAwB7I,EAAWkJ,UAAW,YAAYxG,EAAG,MAAMD,EAAIU,GAAG,WAAWV,EAAIW,GAAGX,EAAIlB,EAAE,SAAU,cAAc,KAAKmB,EAAG,eAAe,CAACI,MAAM,CAAC,eAAe9C,EAAWK,cAAc,GAAG8I,MAAM,KAAOnJ,EAAWK,cAAc,GAAG2B,OAAO,IAAI,MAAM,CAACU,EAAG,mBAAmB,CAACuE,IAAI,aAAanE,MAAM,CAAC,KAAO,SAAS,QAAUL,EAAI3E,mBAAmB,MAAQ2E,EAAIlB,EAAE,SAAU,wBAAwB,aAAakB,EAAIlB,EAAE,SAAU,yBAAyBwB,GAAG,CAAC,QAAUN,EAAIiG,mBAAmB7D,KAAK,WAAWpC,EAAIU,GAAG,KAAKV,EAAIU,GAAG,KAAKT,EAAG,iBAAiB,CAACI,MAAM,CAAC,KAAO,yBAAyB,KAAOL,EAAIlB,EAAE,SAAU,2BAA2BsD,KAAK,0BAA0B,CAACnC,EAAG,sBAAsB,CAACI,MAAM,CAAC,KAAO,QAAQ+B,KAAK,UAAU,IAAI,EACnlD,GACsB,IIUpB,EACA,KACA,WACA,MAI8B,O","sources":["webpack:///photos/src/mixins/AbortControllerMixin.js","webpack:///photos/src/mixins/FetchCollectionsMixin.js","webpack:///photos/src/services/collectionFetcher.js","webpack:///photos/src/components/Collection/CollectionCover.vue?vue&type=style&index=0&id=ed2d700e&prod&lang=scss&scoped=true","webpack:///photos/src/components/Collection/CollectionsList.vue?vue&type=style&index=0&id=5c125700&prod&lang=scss&scoped=true","webpack:///photos/src/components/HeaderNavigation.vue?vue&type=style&index=0&id=544b8840&prod&lang=scss&scoped=true","webpack:///photos/src/views/SharedAlbums.vue?vue&type=style&index=0&id=eece3294&prod&lang=scss&scoped=true","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/FolderMultipleImage.vue","webpack:///photos/node_modules/vue-material-design-icons/FolderMultipleImage.vue?vue&type=script&lang=js","webpack://photos/./node_modules/vue-material-design-icons/FolderMultipleImage.vue?f9dd","webpack:///photos/node_modules/vue-material-design-icons/FolderMultipleImage.vue?vue&type=template&id=497205fa","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/Collection/CollectionCover.vue","webpack:///photos/src/components/Collection/CollectionCover.vue?vue&type=script&lang=js","webpack://photos/./src/components/Collection/CollectionCover.vue?88d6","webpack://photos/./src/components/Collection/CollectionCover.vue?4a0b","webpack://photos/./src/components/Collection/CollectionCover.vue?e7e4","webpack://photos/./src/components/Collection/CollectionsList.vue?2493","webpack:///photos/src/components/Collection/CollectionsList.vue","webpack:///photos/src/components/Collection/CollectionsList.vue?vue&type=script&lang=js","webpack://photos/./src/components/Collection/CollectionsList.vue?bcd8","webpack://photos/./src/components/Collection/CollectionsList.vue?a92d","webpack://photos/./src/components/HeaderNavigation.vue?6d2b","webpack:///photos/src/components/HeaderNavigation.vue","webpack:///photos/src/components/HeaderNavigation.vue?vue&type=script&lang=js","webpack://photos/./src/components/HeaderNavigation.vue?257e","webpack://photos/./src/components/HeaderNavigation.vue?6702","webpack://photos/./src/views/SharedAlbums.vue?af50","webpack:///photos/src/views/SharedAlbums.vue","webpack:///photos/src/views/SharedAlbums.vue?vue&type=script&lang=js","webpack://photos/./src/views/SharedAlbums.vue?5193","webpack://photos/./src/views/SharedAlbums.vue?dd2f"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport default {\n\tname: 'AbortControllerMixin',\n\n\tdata() {\n\t\treturn {\n\t\t\tabortController: new AbortController(),\n\t\t}\n\t},\n\n\tbeforeDestroy() {\n\t\tthis.abortController.abort()\n\t},\n\n\tbeforeRouteLeave(from, to, next) {\n\t\tthis.abortController.abort()\n\t\tthis.abortController = new AbortController()\n\t\tnext()\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\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<import('../services/collectionFetcher.js').Collection[]>}\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 * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport moment from '@nextcloud/moment'\nimport { translate as t } from '@nextcloud/l10n'\n\nimport defaultClient from './DavClient.js'\nimport logger from './logger.js'\nimport { genFileInfo } from '../utils/fileUtils.js'\n\n/**\n * @typedef {object} Collection\n * @property {string} basename - The name of the collection (ex: \"Athens\").\n * @property {string} filename - The filename of the collection (ex: \"/photos/admin/places/Athens\").\n * @property {string} source - The full source of the collection (ex: \"https://nextcloud_server1.test/remote.php/dav//photos/admin/places/Athens\").\n * @property {number} nbItems - The number of item in the collection.\n * @property {number} lastPhoto - The file id for the cover of the collection.\n */\n\n/**\n * @typedef {object} CollectionFile\n * @property {string} fileid - The id of the file.\n * @property {string} basename - The name of the file (ex: \"790-IMG_20180906_085724.jpg\").\n * @property {string} filename - The file name of the file (ex: \"/photos/admin/places/Athens/790-IMG_20180906_085724.jpg\").\n * @property {string} source - The full source of the collection (ex: \"https://nextcloud_server1.test/remote.php/dav//photos/admin/places/Athens/790-IMG_20180906_085724.jpg\").\n * @property {object} metadataPhotosSize - The metadata of the file.\n * @property {number} metadataPhotosSize.width - The width of the file.\n * @property {number} metadataPhotosSize.height - The height of the file.\n */\n\n/** @typedef {Object<string, Collection>} IndexedCollections */\n/** @typedef {Object<string, CollectionFile>} IndexedCollectionFiles */\n\n/**\n * @param {string[]} extraProps - Extra properties to add to the DAV request.\n * @return {string}\n */\nfunction getCollectionDavRequest(extraProps = []) {\n\treturn `<?xml version=\"1.0\"?>\n\t\t\t<d:propfind xmlns:d=\"DAV:\"\n\t\t\t\txmlns:oc=\"http://owncloud.org/ns\"\n\t\t\t\txmlns:nc=\"http://nextcloud.org/ns\"\n\t\t\t\txmlns:ocs=\"http://open-collaboration-services.org/ns\">\n\t\t\t\t<d:prop>\n\t\t\t\t\t<nc:last-photo />\n\t\t\t\t\t<nc:nbItems />\n\t\t\t\t\t${extraProps.join('')}\n\t\t\t\t</d:prop>\n\t\t\t</d:propfind>`\n}\n\n/**\n * @param {string[]} extraProps - Extra properties to add to the DAV request.\n * @return {string}\n */\nfunction getCollectionFilesDavRequest(extraProps = []) {\n\treturn `<?xml version=\"1.0\"?>\n\t\t\t<d:propfind xmlns:d=\"DAV:\"\n\t\t\t\txmlns:oc=\"http://owncloud.org/ns\"\n\t\t\t\txmlns:nc=\"http://nextcloud.org/ns\"\n\t\t\t\txmlns:ocs=\"http://open-collaboration-services.org/ns\">\n\t\t\t\t<d:prop>\n\t\t\t\t\t<d:getcontentlength />\n\t\t\t\t\t<d:getcontenttype />\n\t\t\t\t\t<d:getetag />\n\t\t\t\t\t<d:getlastmodified />\n\t\t\t\t\t<d:resourcetype />\n\t\t\t\t\t<nc:metadata-photos-size />\n\t\t\t\t\t<nc:metadata-photos-original_date_time />\n\t\t\t\t\t<nc:metadata-files-live-photo />\n\t\t\t\t\t<nc:has-preview />\n\t\t\t\t\t<nc:hidden />\n\t\t\t\t\t<oc:favorite />\n\t\t\t\t\t<oc:fileid />\n\t\t\t\t\t<oc:permissions />\n\t\t\t\t\t${extraProps.join('')}\n\t\t\t\t</d:prop>\n\t\t\t</d:propfind>`\n}\n\n/**\n * @param {string} path - Collections' root path.\n * @param {import('webdav').StatOptions} options - Options to forward to the webdav client.\n * @param {string[]} extraProps - Extra properties to add to the DAV request.\n * @param {import('webdav').WebDAVClient} client - The DAV client to use.\n * @return {Promise<Collection|null>}\n */\nexport async function fetchCollection(path, options, extraProps = [], client = defaultClient) {\n\ttry {\n\t\tconst response = await client.stat(path, {\n\t\t\tdata: getCollectionDavRequest(extraProps),\n\t\t\tdetails: true,\n\t\t\t...options,\n\t\t})\n\n\t\tlogger.debug('[Collections] Fetched a collection: ', { data: response.data })\n\n\t\treturn formatCollection(response.data)\n\t} catch (error) {\n\t\tif (error.code === 'ERR_CANCELED') {\n\t\t\treturn null\n\t\t}\n\n\t\tthrow error\n\t}\n}\n\n/**\n *\n * @param {string} path - Collections' root path.\n * @param {import('webdav').StatOptions} options - Options to forward to the webdav client.\n * @param {string[]} extraProps - Extra properties to add to the DAV request.\n * @param {import('webdav').WebDAVClient} client - The DAV client to use.\n * @return {Promise<Collection[]>}\n */\nexport async function fetchCollections(path, options, extraProps = [], client = defaultClient) {\n\ttry {\n\t\tconst response = await client.getDirectoryContents(path, {\n\t\t\tdata: getCollectionDavRequest(extraProps),\n\t\t\tdetails: true,\n\t\t\t...options,\n\t\t})\n\n\t\tlogger.debug(`[Collections] Fetched ${response.data.length} collections: `, { data: response.data })\n\n\t\treturn response.data\n\t\t\t.filter(collection => collection.filename !== path)\n\t\t\t.map(formatCollection)\n\t} catch (error) {\n\t\tif (error.code === 'ERR_CANCELED') {\n\t\t\treturn []\n\t\t}\n\n\t\tthrow error\n\t}\n}\n\n/**\n *\n * @param {object} rawCollection - An collection received from a webdav request.\n * @return {Collection}\n */\nfunction formatCollection(rawCollection) {\n\t// Ensure that we have a proper collaborators array.\n\tif (rawCollection.props.collaborators === undefined || rawCollection.props.collaborators === '') {\n\t\trawCollection.props.collaborators = []\n\t} else if (typeof rawCollection.props.collaborators.collaborator === 'object') {\n\t\tif (Array.isArray(rawCollection.props.collaborators.collaborator)) {\n\t\t\trawCollection.props.collaborators = rawCollection.props.collaborators.collaborator\n\t\t} else {\n\t\t\trawCollection.props.collaborators = [rawCollection.props.collaborators.collaborator]\n\t\t}\n\t}\n\n\t// Extract custom props.\n\trawCollection = genFileInfo(rawCollection)\n\n\t// Compute date range label.\n\tconst dateRange = JSON.parse(rawCollection.dateRange?.replace(/&quot;/g, '\"') ?? '{}')\n\tif (dateRange.start === null) {\n\t\tdateRange.start = moment().unix()\n\t\tdateRange.end = moment().unix()\n\t}\n\tconst dateRangeFormatted = {\n\t\tstartDate: moment.unix(dateRange.start).format('MMMM YYYY'),\n\t\tendDate: moment.unix(dateRange.end).format('MMMM YYYY'),\n\t}\n\tif (dateRangeFormatted.startDate === dateRangeFormatted.endDate) {\n\t\trawCollection.date = dateRangeFormatted.startDate\n\t} else {\n\t\trawCollection.date = t('photos', '{startDate} to {endDate}', dateRangeFormatted)\n\t}\n\n\treturn rawCollection\n}\n\n/**\n *\n * @param {string} path - Collections' root path.\n * @param {import('webdav').StatOptions} options - Options to forward to the webdav client.\n * @param {string[]} extraProps - Extra properties to add to the DAV request.\n * @param {import('webdav').WebDAVClient} client - The DAV client to use.\n * @return {Promise<CollectionFile[]>}\n */\nexport async function fetchCollectionFiles(path, options, extraProps = [], client = defaultClient) {\n\ttry {\n\t\tconst response = await client.getDirectoryContents(path, {\n\t\t\tdata: getCollectionFilesDavRequest(extraProps),\n\t\t\tdetails: true,\n\t\t\t...options,\n\t\t})\n\n\t\tconst fetchedFiles = response.data\n\t\t\t.map(file => genFileInfo(file))\n\t\t\t.filter(file => file.fileid)\n\n\t\tlogger.debug(`[Collections] Fetched ${fetchedFiles.length} new files: `, fetchedFiles)\n\n\t\treturn fetchedFiles\n\t} catch (error) {\n\t\tif (error.code === 'ERR_CANCELED') {\n\t\t\treturn []\n\t\t}\n\n\t\tlogger.error('Error fetching collection files', { error })\n\t\tconsole.error(error)\n\n\t\tthrow error\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-cover[data-v-ed2d700e]{display:flex;flex-direction:column;padding:16px;border-radius:var(--border-radius-large)}.collection-cover[data-v-ed2d700e]:hover,.collection-cover[data-v-ed2d700e]:focus{background:var(--color-background-dark)}.collection-cover__image[data-v-ed2d700e]{width:350px;height:350px;object-fit:cover;border-radius:var(--border-radius-large)}@media only screen and (max-width: 1200px){.collection-cover__image[data-v-ed2d700e]{width:250px;height:250px}}.collection-cover__image--placeholder[data-v-ed2d700e]{background:var(--color-primary-element-light)}.collection-cover__image--placeholder[data-v-ed2d700e] .material-design-icon{width:100%;height:100%}.collection-cover__image--placeholder[data-v-ed2d700e] .material-design-icon .material-design-icon__svg{fill:var(--color-primary-element)}.collection-cover__details[data-v-ed2d700e]{display:flex;flex-direction:column;margin-top:16px;width:350px}@media only screen and (max-width: 1200px){.collection-cover__details[data-v-ed2d700e]{width:250px}}.collection-cover__details__title[data-v-ed2d700e]{display:flex}.collection-cover__details__subtitle[data-v-ed2d700e]{display:flex;color:var(--color-text-lighter)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Collection/CollectionCover.vue\"],\"names\":[],\"mappings\":\"AAEA,mCACC,YAAA,CACA,qBAAA,CACA,YAAA,CACA,wCAAA,CAEA,kFACC,uCAAA,CAGD,0CACC,WAAA,CACA,YAAA,CACA,gBAAA,CACA,wCAAA,CAEA,2CAND,0CAOE,WAAA,CACA,YAAA,CAAA,CAGD,uDACC,6CAAA,CAEA,6EACC,UAAA,CACA,WAAA,CAEA,wGACC,iCAAA,CAMJ,4CACC,YAAA,CACA,qBAAA,CACA,eAAA,CACA,WAAA,CAEA,2CAND,4CAOE,WAAA,CAAA,CAGD,mDACC,YAAA,CAGD,sDACC,YAAA,CACA,+BAAA\",\"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-cover {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tpadding: 16px;\\n\\tborder-radius: var(--border-radius-large);\\n\\n\\t&:hover, &:focus {\\n\\t\\tbackground: var(--color-background-dark);\\n\\t}\\n\\n\\t&__image {\\n\\t\\twidth: 350px;\\n\\t\\theight: 350px;\\n\\t\\tobject-fit: cover;\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\n\\t\\t@media only screen and (max-width: 1200px) {\\n\\t\\t\\twidth: 250px;\\n\\t\\t\\theight: 250px;\\n\\t\\t}\\n\\n\\t\\t&--placeholder {\\n\\t\\t\\tbackground: var(--color-primary-element-light);\\n\\n\\t\\t\\t:deep .material-design-icon {\\n\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t\\theight: 100%;\\n\\n\\t\\t\\t\\t.material-design-icon__svg {\\n\\t\\t\\t\\t\\tfill: var(--color-primary-element);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__details {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tmargin-top: 16px;\\n\\t\\twidth: 350px;\\n\\n\\t\\t@media only screen and (max-width: 1200px) {\\n\\t\\t\\twidth: 250px;\\n\\t\\t}\\n\\n\\t\\t&__title {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t}\\n\\n\\t\\t&__subtitle {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tcolor: var(--color-text-lighter);\\n\\t\\t}\\n\\t}\\n\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.collections[data-v-5c125700]{display:flex;flex-direction:column;height:100%}.collections__list[data-v-5c125700]{padding:32px 48px;flex-grow:1;display:flex;flex-wrap:wrap;gap:16px;align-items:flex-start;height:calc(100% - 60px);overflow-x:scroll}@media only screen and (max-width: 1200px){.collections__list[data-v-5c125700]{padding:32px 12px;justify-content:center}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Collection/CollectionsList.vue\"],\"names\":[],\"mappings\":\"AAEA,8BACC,YAAA,CACA,qBAAA,CACA,WAAA,CAEA,oCACC,iBAAA,CACA,WAAA,CACA,YAAA,CACA,cAAA,CACA,QAAA,CACA,sBAAA,CACA,wBAAA,CACA,iBAAA,CAEA,2CAVD,oCAWE,iBAAA,CACA,sBAAA,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.collections {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\theight: 100%;\\n\\n\\t&__list {\\n\\t\\tpadding: 32px 48px;\\n\\t\\tflex-grow: 1;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-wrap: wrap;\\n\\t\\tgap: 16px;\\n\\t\\talign-items: flex-start;\\n\\t\\theight: calc(100% - 60px);\\n\\t\\toverflow-x: scroll;\\n\\n\\t\\t@media only screen and (max-width: 1200px) {\\n\\t\\t\\tpadding: 32px 12px;\\n\\t\\t\\tjustify-content: center;\\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, `.photos-navigation[data-v-544b8840]{position:sticky;z-index:20;top:0;display:flex;flex-wrap:wrap;gap:calc(2*var(--app-navigation-padding));align-items:center;justify-content:flex-start;width:100%;padding-inline:calc(var(--default-clickable-area) + 2*var(--app-navigation-padding)) var(--app-navigation-padding);padding-block:var(--app-navigation-padding);background:var(--color-main-background)}.photos-navigation__back[data-v-544b8840]{position:absolute !important;left:var(--app-navigation-padding)}.photos-navigation__title[data-v-544b8840]{max-width:45%;display:flex;flex-direction:column}.photos-navigation__title__main[data-v-544b8840]{cursor:pointer;font-weight:700;font-size:20px;line-height:44px}.photos-navigation__title__main[data-v-544b8840],.photos-navigation__title__sub[data-v-544b8840]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.photos-navigation__loader[data-v-544b8840]{margin-inline-start:32px}.photos-navigation__content-right[data-v-544b8840]{display:flex;align-items:center;justify-content:center;margin-inline-start:auto}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/HeaderNavigation.vue\"],\"names\":[],\"mappings\":\"AAEA,oCACC,eAAA,CACA,UAAA,CACA,KAAA,CACA,YAAA,CAEA,cAAA,CACA,yCAAA,CACA,kBAAA,CACA,0BAAA,CACA,UAAA,CAEA,kHAAA,CAEA,2CAAA,CACA,uCAAA,CAEA,0CAEC,4BAAA,CACA,kCAAA,CAGD,2CACC,aAAA,CACA,YAAA,CACA,qBAAA,CAEA,iDACC,cAAA,CACA,eAAA,CACA,cAAA,CACA,gBAAA,CAGD,iGACC,eAAA,CACA,kBAAA,CACA,sBAAA,CAIF,4CACC,wBAAA,CAGD,mDACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,wBAAA\",\"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-navigation {\\n\\tposition: sticky;\\n\\tz-index: 20;\\n\\ttop: 0;\\n\\tdisplay: flex;\\n\\t// We need to wrap on small devices for accessibility\\n\\tflex-wrap: wrap;\\n\\tgap: calc(2 * var(--app-navigation-padding));\\n\\talign-items: center;\\n\\tjustify-content: flex-start;\\n\\twidth: 100%;\\n\\t// Ensure to not overlap with app navigation toggle\\n\\tpadding-inline: calc(var(--default-clickable-area) + 2 * var(--app-navigation-padding)) var(--app-navigation-padding);\\n\\t// Align with app navigation toggle\\n\\tpadding-block: var(--app-navigation-padding);\\n\\tbackground: var(--color-main-background);\\n\\n\\t&__back {\\n\\t\\t// Replaces the app navigation button\\n\\t\\tposition: absolute !important;\\n\\t\\tleft: var(--app-navigation-padding);\\n\\t}\\n\\n\\t&__title {\\n\\t\\tmax-width: 45%;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\n\\t\\t&__main {\\n\\t\\t\\tcursor: pointer;\\n\\t\\t\\tfont-weight: 700;\\n\\t\\t\\tfont-size: 20px;\\n\\t\\t\\tline-height: 44px;\\n\\t\\t}\\n\\n\\t\\t&__main, &__sub {\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t}\\n\\t}\\n\\n\\t&__loader {\\n\\t\\tmargin-inline-start: 32px;\\n\\t}\\n\\n\\t&__content-right {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: center;\\n\\t\\tmargin-inline-start: auto;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.albums-list[data-v-eece3294]{display:flex;flex-direction:column}.albums-list .album__name[data-v-eece3294]{font-weight:normal;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:20px;margin-bottom:12px;line-height:30px;color:var(--color-main-text)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/views/SharedAlbums.vue\"],\"names\":[],\"mappings\":\"AAEA,8BACC,YAAA,CACA,qBAAA,CAEA,2CACC,kBAAA,CACA,eAAA,CACA,kBAAA,CACA,sBAAA,CACA,cAAA,CACA,kBAAA,CACA,gBAAA,CACA,4BAAA\",\"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.albums-list {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\n\\t.album__name {\\n\\t\\tfont-weight: normal;\\n\\t\\toverflow: hidden;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\tfont-size: 20px;\\n\\t\\tmargin-bottom: 12px;\\n\\t\\tline-height: 30px;\\n\\t\\tcolor: var(--color-main-text);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","<template>\n  <span v-bind=\"$attrs\"\n        :aria-hidden=\"!title\"\n        :aria-label=\"title\"\n        class=\"material-design-icon alert-circle-icon\"\n        role=\"img\"\n        @click=\"$emit('click', $event)\">\n    <svg :fill=\"fillColor\"\n         class=\"material-design-icon__svg\"\n         :width=\"size\"\n         :height=\"size\"\n         viewBox=\"0 0 24 24\">\n      <path 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\">\n        <title v-if=\"title\">{{ title }}</title>\n      </path>\n    </svg>\n  </span>\n</template>\n\n<script>\nexport default {\n  name: \"AlertCircleIcon\",\n  emits: ['click'],\n  props: {\n    title: {\n      type: String,\n    },\n    fillColor: {\n      type: String,\n      default: \"currentColor\"\n    },\n    size: {\n      type: Number,\n      default: 24\n    }\n  }\n}\n</script>","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 }","<template>\n  <span v-bind=\"$attrs\"\n        :aria-hidden=\"!title\"\n        :aria-label=\"title\"\n        class=\"material-design-icon arrow-left-icon\"\n        role=\"img\"\n        @click=\"$emit('click', $event)\">\n    <svg :fill=\"fillColor\"\n         class=\"material-design-icon__svg\"\n         :width=\"size\"\n         :height=\"size\"\n         viewBox=\"0 0 24 24\">\n      <path d=\"M20,11V13H8L13.5,18.5L12.08,19.92L4.16,12L12.08,4.08L13.5,5.5L8,11H20Z\">\n        <title v-if=\"title\">{{ title }}</title>\n      </path>\n    </svg>\n  </span>\n</template>\n\n<script>\nexport default {\n  name: \"ArrowLeftIcon\",\n  emits: ['click'],\n  props: {\n    title: {\n      type: String,\n    },\n    fillColor: {\n      type: String,\n      default: \"currentColor\"\n    },\n    size: {\n      type: Number,\n      default: 24\n    }\n  }\n}\n</script>","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 }","<template>\n  <span v-bind=\"$attrs\"\n        :aria-hidden=\"!title\"\n        :aria-label=\"title\"\n        class=\"material-design-icon folder-multiple-image-icon\"\n        role=\"img\"\n        @click=\"$emit('click', $event)\">\n    <svg :fill=\"fillColor\"\n         class=\"material-design-icon__svg\"\n         :width=\"size\"\n         :height=\"size\"\n         viewBox=\"0 0 24 24\">\n      <path d=\"M7,15L11.5,9L15,13.5L17.5,10.5L21,15M22,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\">\n        <title v-if=\"title\">{{ title }}</title>\n      </path>\n    </svg>\n  </span>\n</template>\n\n<script>\nexport default {\n  name: \"FolderMultipleImageIcon\",\n  emits: ['click'],\n  props: {\n    title: {\n      type: String,\n    },\n    fillColor: {\n      type: String,\n      default: \"currentColor\"\n    },\n    size: {\n      type: Number,\n      default: 24\n    }\n  }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./FolderMultipleImage.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./FolderMultipleImage.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FolderMultipleImage.vue?vue&type=template&id=497205fa\"\nimport script from \"./FolderMultipleImage.vue?vue&type=script&lang=js\"\nexport * from \"./FolderMultipleImage.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-image-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\":\"M7,15L11.5,9L15,13.5L17.5,10.5L21,15M22,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 }","<template>\n  <span v-bind=\"$attrs\"\n        :aria-hidden=\"!title\"\n        :aria-label=\"title\"\n        class=\"material-design-icon image-multiple-icon\"\n        role=\"img\"\n        @click=\"$emit('click', $event)\">\n    <svg :fill=\"fillColor\"\n         class=\"material-design-icon__svg\"\n         :width=\"size\"\n         :height=\"size\"\n         viewBox=\"0 0 24 24\">\n      <path 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\">\n        <title v-if=\"title\">{{ title }}</title>\n      </path>\n    </svg>\n  </span>\n</template>\n\n<script>\nexport default {\n  name: \"ImageMultipleIcon\",\n  emits: ['click'],\n  props: {\n    title: {\n      type: String,\n    },\n    fillColor: {\n      type: String,\n      default: \"currentColor\"\n    },\n    size: {\n      type: Number,\n      default: 24\n    }\n  }\n}\n</script>","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 }","<!--\n  - SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n  - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n<template>\n\t<li>\n\t\t<router-link class=\"collection-cover\" :to=\"link\">\n\t\t\t<img v-if=\"coverUrl !== ''\"\n\t\t\t\tclass=\"collection-cover__image\"\n\t\t\t\t:src=\"coverUrl\"\n\t\t\t\t:alt=\"altImg\">\n\n\t\t\t<div v-else class=\"collection-cover__image collection-cover__image--placeholder\">\n\t\t\t\t<ImageMultiple :size=\"128\" />\n\t\t\t</div>\n\t\t\t<div class=\"collection-cover__details\">\n\t\t\t\t<div class=\"collection-cover__details__title\">\n\t\t\t\t\t<slot name=\"default\" />\n\t\t\t\t</div>\n\t\t\t\t<div class=\"collection-cover__details__subtitle\">\n\t\t\t\t\t<slot name=\"subtitle\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</router-link>\n\t</li>\n</template>\n<script>\nimport ImageMultiple from 'vue-material-design-icons/ImageMultiple.vue'\n\nexport default {\n\tname: 'CollectionCover',\n\n\tcomponents: {\n\t\tImageMultiple,\n\t},\n\n\tprops: {\n\t\tcoverUrl: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\taltImg: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tlink: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n.collection-cover {\n\tdisplay: flex;\n\tflex-direction: column;\n\tpadding: 16px;\n\tborder-radius: var(--border-radius-large);\n\n\t&:hover, &:focus {\n\t\tbackground: var(--color-background-dark);\n\t}\n\n\t&__image {\n\t\twidth: 350px;\n\t\theight: 350px;\n\t\tobject-fit: cover;\n\t\tborder-radius: var(--border-radius-large);\n\n\t\t@media only screen and (max-width: 1200px) {\n\t\t\twidth: 250px;\n\t\t\theight: 250px;\n\t\t}\n\n\t\t&--placeholder {\n\t\t\tbackground: var(--color-primary-element-light);\n\n\t\t\t:deep .material-design-icon {\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 100%;\n\n\t\t\t\t.material-design-icon__svg {\n\t\t\t\t\tfill: var(--color-primary-element);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t&__details {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tmargin-top: 16px;\n\t\twidth: 350px;\n\n\t\t@media only screen and (max-width: 1200px) {\n\t\t\twidth: 250px;\n\t\t}\n\n\t\t&__title {\n\t\t\tdisplay: flex;\n\t\t}\n\n\t\t&__subtitle {\n\t\t\tdisplay: flex;\n\t\t\tcolor: var(--color-text-lighter);\n\t\t}\n\t}\n\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollectionCover.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!./CollectionCover.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!./CollectionCover.vue?vue&type=style&index=0&id=ed2d700e&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!./CollectionCover.vue?vue&type=style&index=0&id=ed2d700e&prod&lang=scss&scoped=true\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./CollectionCover.vue?vue&type=template&id=ed2d700e&scoped=true\"\nimport script from \"./CollectionCover.vue?vue&type=script&lang=js\"\nexport * from \"./CollectionCover.vue?vue&type=script&lang=js\"\nimport style0 from \"./CollectionCover.vue?vue&type=style&index=0&id=ed2d700e&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  \"ed2d700e\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('li',[_c('router-link',{staticClass:\"collection-cover\",attrs:{\"to\":_vm.link}},[(_vm.coverUrl !== '')?_c('img',{staticClass:\"collection-cover__image\",attrs:{\"src\":_vm.coverUrl,\"alt\":_vm.altImg}}):_c('div',{staticClass:\"collection-cover__image collection-cover__image--placeholder\"},[_c('ImageMultiple',{attrs:{\"size\":128}})],1),_vm._v(\" \"),_c('div',{staticClass:\"collection-cover__details\"},[_c('div',{staticClass:\"collection-cover__details__title\"},[_vm._t(\"default\")],2),_vm._v(\" \"),_c('div',{staticClass:\"collection-cover__details__subtitle\"},[_vm._t(\"subtitle\")],2)])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.error)?_c('NcEmptyContent',{attrs:{\"name\":_vm.t('photos', 'An error occurred')}},[_c('AlertCircle',{attrs:{\"slot\":\"icon\"},slot:\"icon\"})],1):_c('div',{staticClass:\"collections\"},[_vm._t(\"header\"),_vm._v(\" \"),(_vm.noCollection && !_vm.loading)?_vm._t(\"empty-collections-list\"):(!_vm.noCollection)?_c('ul',{staticClass:\"collections__list\"},[_vm._l((_vm.collections),function(collection){return _vm._t(\"default\",null,{\"collection\":collection})})],2):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n  - SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n  - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n<template>\n\t<!-- Errors handlers-->\n\t<NcEmptyContent v-if=\"error\" :name=\"t('photos', 'An error occurred') \">\n\t\t<AlertCircle slot=\"icon\" />\n\t</NcEmptyContent>\n\n\t<div v-else class=\"collections\">\n\t\t<!-- Collection header -->\n\t\t<slot name=\"header\" />\n\n\t\t<!-- No collections -->\n\t\t<slot v-if=\"noCollection && !loading\" name=\"empty-collections-list\" class=\"collections__empty\" />\n\n\t\t<!-- List -->\n\t\t<ul v-else-if=\"!noCollection\" class=\"collections__list\">\n\t\t\t<slot v-for=\"collection in collections\"\n\t\t\t\t:collection=\"collection\"\n\t\t\t\tclass=\"collection\" />\n\t\t</ul>\n\t</div>\n</template>\n\n<script>\nimport AlertCircle from 'vue-material-design-icons/AlertCircle.vue'\n\nimport { NcEmptyContent } from '@nextcloud/vue'\nimport { translate } from '@nextcloud/l10n'\n\nexport default {\n\tname: 'CollectionsList',\n\n\tcomponents: {\n\t\tAlertCircle,\n\t\tNcEmptyContent,\n\t},\n\n\tprops: {\n\t\t/** @type {import('vue').PropType<import('../../services/collectionFetcher').IndexedCollections>} */\n\t\tcollections: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\terror: {\n\t\t\ttype: Error,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * @return {boolean} Whether the list of collections is empty or not.\n\t\t */\n\t\tnoCollection() {\n\t\t\treturn Object.keys(this.collections).length === 0\n\t\t},\n\t},\n\n\tmethods: {\n\t\tt: translate,\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n.collections {\n\tdisplay: flex;\n\tflex-direction: column;\n\theight: 100%;\n\n\t&__list {\n\t\tpadding: 32px 48px;\n\t\tflex-grow: 1;\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t\tgap: 16px;\n\t\talign-items: flex-start;\n\t\theight: calc(100% - 60px);\n\t\toverflow-x: scroll;\n\n\t\t@media only screen and (max-width: 1200px) {\n\t\t\tpadding: 32px 12px;\n\t\t\tjustify-content: center;\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CollectionsList.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!./CollectionsList.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!./CollectionsList.vue?vue&type=style&index=0&id=5c125700&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!./CollectionsList.vue?vue&type=style&index=0&id=5c125700&prod&lang=scss&scoped=true\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./CollectionsList.vue?vue&type=template&id=5c125700&scoped=true\"\nimport script from \"./CollectionsList.vue?vue&type=script&lang=js\"\nexport * from \"./CollectionsList.vue?vue&type=script&lang=js\"\nimport style0 from \"./CollectionsList.vue?vue&type=style&index=0&id=5c125700&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  \"5c125700\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"photos-navigation\",class:{'photos-navigation--root': _vm.isRoot},attrs:{\"role\":\"toolbar\"}},[(!_vm.isRoot)?_c('NcButton',{staticClass:\"photos-navigation__back\",attrs:{\"aria-label\":_vm.t('photos', 'Go back'),\"type\":\"tertiary\"},on:{\"click\":_vm.folderUp},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('ArrowLeft',{attrs:{\"size\":20}})]},proxy:true}],null,false,1821202730)}):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"photos-navigation__title\"},[_c('h1',{staticClass:\"photos-navigation__title__main\",on:{\"click\":_vm.refresh}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.name)+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('div',{staticClass:\"photos-navigation__title__sub\"}),_vm._v(\" \"),_vm._t(\"subtitle\")],2),_vm._v(\" \"),(_vm.$slots.default)?_c('div',{staticClass:\"photos-navigation__content\"},[_vm._t(\"default\")],2):_vm._e(),_vm._v(\" \"),_c('NcLoadingIcon',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.loading),expression:\"loading\"}],staticClass:\"photos-navigation__loader\"}),_vm._v(\" \"),_c('div',{staticClass:\"photos-navigation__content-right\"},[_vm._t(\"right\")],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div :class=\"{'photos-navigation--root': isRoot}\" class=\"photos-navigation\" role=\"toolbar\">\n\t\t<!-- Back navigation button -->\n\t\t<NcButton v-if=\"!isRoot\"\n\t\t\tclass=\"photos-navigation__back\"\n\t\t\t:aria-label=\"t('photos', 'Go back')\"\n\t\t\ttype=\"tertiary\"\n\t\t\t@click=\"folderUp\">\n\t\t\t<template #icon>\n\t\t\t\t<ArrowLeft :size=\"20\" />\n\t\t\t</template>\n\t\t</NcButton>\n\n\t\t<!-- Main Navigation title -->\n\t\t<div class=\"photos-navigation__title\">\n\t\t\t<h1 class=\"photos-navigation__title__main\" @click=\"refresh\">\n\t\t\t\t{{ name }}\n\t\t\t</h1>\n\t\t\t<div class=\"photos-navigation__title__sub\" />\n\t\t\t<slot name=\"subtitle\" />\n\t\t</div>\n\n\t\t<!-- Main slot -->\n\t\t<div v-if=\"$slots.default\" class=\"photos-navigation__content\">\n\t\t\t<slot />\n\t\t</div>\n\n\t\t<NcLoadingIcon v-show=\"loading\" class=\"photos-navigation__loader\" />\n\n\t\t<div class=\"photos-navigation__content-right\">\n\t\t\t<slot name=\"right\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport ArrowLeft from 'vue-material-design-icons/ArrowLeft.vue'\n\nimport { NcButton, NcLoadingIcon } from '@nextcloud/vue'\n\nexport default {\n\tname: 'HeaderNavigation',\n\n\tcomponents: {\n\t\tArrowLeft,\n\t\tNcButton,\n\t\tNcLoadingIcon,\n\t},\n\n\tinheritAttrs: false,\n\n\tprops: {\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tpath: {\n\t\t\ttype: String,\n\t\t\tdefault: '/',\n\t\t},\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\trootTitle: {\n\t\t\ttype: String,\n\t\t\tdefault: t('photos', 'Photos'),\n\t\t},\n\t\t// The route params\n\t\tparams: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tisRoot() {\n\t\t\tconst isRoot = this.path === '/'\n\t\t\tthis.toggleNavigationButton(!isRoot)\n\t\t\treturn isRoot\n\t\t},\n\n\t\tname() {\n\t\t\tif (this.isRoot) {\n\t\t\t\treturn this.rootTitle\n\t\t\t}\n\t\t\treturn this.title\n\t\t},\n\n\t\tparentPath() {\n\t\t\tconst path = this.path.split('/')\n\t\t\tpath.pop()\n\t\t\tconst parent = path.join('/')\n\t\t\treturn this.isRoot || parent.trim() === ''\n\t\t\t\t? '/'\n\t\t\t\t: path.join('/')\n\t\t},\n\n\t\tparentName() {\n\t\t\treturn this.parentPath && this.parentPath.split('/').pop()\n\t\t},\n\n\t\tbackToText() {\n\t\t\tif (this.parentPath === '/') {\n\t\t\t\treturn t('photos', 'Back to {folder}', { folder: this.rootTitle })\n\t\t\t}\n\t\t\treturn t('photos', 'Back to {folder}', { folder: this.parentName })\n\t\t},\n\n\t\t/**\n\t\t * We do not want encoded slashes when browsing by folder\n\t\t * so we generate a new valid route object, get the final url back\n\t\t * decode it and use it as a direct string, which vue-router\n\t\t * does not encode afterwards\n\t\t *\n\t\t * @return {string|object}\n\t\t */\n\t\tto() {\n\t\t\t// always remove first slash, the router\n\t\t\t// manage it automatically\n\t\t\tconst regex = /^\\/?(.*)/i\n\t\t\tconst path = regex.exec(this.parentPath)[1]\n\n\t\t\t// apply to current route\n\t\t\tconst { name, params } = Object.assign({}, this.$route, {\n\t\t\t\tparams: this.params || { path },\n\t\t\t})\n\n\t\t\t// return the full object as we don't care about\n\t\t\t// an empty path if this is route\n\t\t\tif (path === '') {\n\t\t\t\treturn { name }\n\t\t\t}\n\n\t\t\t// returning a string prevent vue-router to encode it again\n\t\t\treturn decodeURIComponent(this.$router.resolve({ name, params }).resolved.path)\n\t\t},\n\t},\n\n\tmethods: {\n\t\tfolderUp() {\n\t\t\tthis.$router.push(this.to)\n\t\t},\n\n\t\trefresh() {\n\t\t\tthis.$emit('refresh')\n\t\t},\n\n\t\ttoggleNavigationButton(hide) {\n\t\t\t// Hide the navigation toggle if the back button is shown\n\t\t\tconst navigationToggle = document.querySelector('button.app-navigation-toggle')\n\t\t\tif (navigationToggle !== null) {\n\t\t\t\tnavigationToggle.style.display = hide ? 'none' : null\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.photos-navigation {\n\tposition: sticky;\n\tz-index: 20;\n\ttop: 0;\n\tdisplay: flex;\n\t// We need to wrap on small devices for accessibility\n\tflex-wrap: wrap;\n\tgap: calc(2 * var(--app-navigation-padding));\n\talign-items: center;\n\tjustify-content: flex-start;\n\twidth: 100%;\n\t// Ensure to not overlap with app navigation toggle\n\tpadding-inline: calc(var(--default-clickable-area) + 2 * var(--app-navigation-padding)) var(--app-navigation-padding);\n\t// Align with app navigation toggle\n\tpadding-block: var(--app-navigation-padding);\n\tbackground: var(--color-main-background);\n\n\t&__back {\n\t\t// Replaces the app navigation button\n\t\tposition: absolute !important;\n\t\tleft: var(--app-navigation-padding);\n\t}\n\n\t&__title {\n\t\tmax-width: 45%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\n\t\t&__main {\n\t\t\tcursor: pointer;\n\t\t\tfont-weight: 700;\n\t\t\tfont-size: 20px;\n\t\t\tline-height: 44px;\n\t\t}\n\n\t\t&__main, &__sub {\n\t\t\toverflow: hidden;\n\t\t\twhite-space: nowrap;\n\t\t\ttext-overflow: ellipsis;\n\t\t}\n\t}\n\n\t&__loader {\n\t\tmargin-inline-start: 32px;\n\t}\n\n\t&__content-right {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\tmargin-inline-start: auto;\n\t}\n}\n\n</style>\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeaderNavigation.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!./HeaderNavigation.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!./HeaderNavigation.vue?vue&type=style&index=0&id=544b8840&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!./HeaderNavigation.vue?vue&type=style&index=0&id=544b8840&prod&lang=scss&scoped=true\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./HeaderNavigation.vue?vue&type=template&id=544b8840&scoped=true\"\nimport script from \"./HeaderNavigation.vue?vue&type=script&lang=js\"\nexport * from \"./HeaderNavigation.vue?vue&type=script&lang=js\"\nimport style0 from \"./HeaderNavigation.vue?vue&type=style&index=0&id=544b8840&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  \"544b8840\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('CollectionsList',{staticClass:\"albums-list\",attrs:{\"collections\":_vm.sharedAlbums,\"loading\":_vm.loadingCollections,\"error\":_vm.errorFetchingCollections},scopedSlots:_vm._u([{key:\"default\",fn:function({collection}){return _c('CollectionCover',{key:collection.basename,attrs:{\"link\":`/sharedalbums/${collection.basename}`,\"alt-img\":_vm.t('photos', 'Cover photo for shared album {albumName}.', { albumName: collection.basename }),\"data-test\":collection.basename,\"cover-url\":_vm._f(\"coverUrl\")(collection.lastPhoto)}},[_c('span',{staticClass:\"album__name\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm._f(\"albumOriginalName\")(collection))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('div',{staticClass:\"album__details\",attrs:{\"slot\":\"subtitle\"},slot:\"subtitle\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(collection.date)+\" ⸱ \"+_vm._s(_vm.n('photos', '%n item', '%n photos and videos', collection.nbItems,))+\"\\n\\t\\t\\t\"),_c('br'),_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('photos', 'Shared by'))+\" \"),_c('NcUserBubble',{attrs:{\"display-name\":collection.collaborators[0].label,\"user\":collection.collaborators[0].id}})],1)])}}])},[_c('HeaderNavigation',{key:\"navigation\",attrs:{\"slot\":\"header\",\"loading\":_vm.loadingCollections,\"title\":_vm.t('photos', 'Collaborative albums'),\"root-title\":_vm.t('photos', 'Collaborative albums')},on:{\"refresh\":_vm.fetchSharedAlbums},slot:\"header\"}),_vm._v(\" \"),_vm._v(\" \"),_c('NcEmptyContent',{attrs:{\"slot\":\"empty-collections-list\",\"name\":_vm.t('photos', 'There is no album yet!')},slot:\"empty-collections-list\"},[_c('FolderMultipleImage',{attrs:{\"slot\":\"icon\"},slot:\"icon\"})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n  - SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n  - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n<template>\n\t<CollectionsList :collections=\"sharedAlbums\"\n\t\t:loading=\"loadingCollections\"\n\t\t:error=\"errorFetchingCollections\"\n\t\tclass=\"albums-list\">\n\t\t<HeaderNavigation key=\"navigation\"\n\t\t\tslot=\"header\"\n\t\t\t:loading=\"loadingCollections\"\n\t\t\t:title=\"t('photos', 'Collaborative albums')\"\n\t\t\t:root-title=\"t('photos', 'Collaborative albums')\"\n\t\t\t@refresh=\"fetchSharedAlbums\" />\n\n\t\t<CollectionCover :key=\"collection.basename\"\n\t\t\tslot-scope=\"{collection}\"\n\t\t\t:link=\"`/sharedalbums/${collection.basename}`\"\n\t\t\t:alt-img=\"t('photos', 'Cover photo for shared album {albumName}.', { albumName: collection.basename })\"\n\t\t\t:data-test=\"collection.basename\"\n\t\t\t:cover-url=\"collection.lastPhoto | coverUrl\">\n\t\t\t<span class=\"album__name\">\n\t\t\t\t{{ collection | albumOriginalName }}\n\t\t\t</span>\n\n\t\t\t<div slot=\"subtitle\" class=\"album__details\">\n\t\t\t\t{{ collection.date }} ⸱ {{ n('photos', '%n item', '%n photos and videos', collection.nbItems,) }}\n\t\t\t\t<br>\n\t\t\t\t{{ t('photos', 'Shared by') }}&nbsp;<NcUserBubble :display-name=\"collection.collaborators[0].label\" :user=\"collection.collaborators[0].id\" />\n\t\t\t</div>\n\t\t</CollectionCover>\n\n\t\t<NcEmptyContent slot=\"empty-collections-list\" :name=\"t('photos', 'There is no album yet!')\">\n\t\t\t<FolderMultipleImage slot=\"icon\" />\n\t\t</NcEmptyContent>\n\t</CollectionsList>\n</template>\n\n<script>\nimport FolderMultipleImage from 'vue-material-design-icons/FolderMultipleImage.vue'\n\nimport { generateUrl } from '@nextcloud/router'\nimport { NcEmptyContent, NcUserBubble } from '@nextcloud/vue'\nimport { translate, translatePlural } from '@nextcloud/l10n'\nimport { getCurrentUser } from '@nextcloud/auth'\n\nimport CollectionsList from '../components/Collection/CollectionsList.vue'\nimport CollectionCover from '../components/Collection/CollectionCover.vue'\nimport HeaderNavigation from '../components/HeaderNavigation.vue'\nimport FetchCollectionsMixin from '../mixins/FetchCollectionsMixin.js'\n\nexport default {\n\tname: 'SharedAlbums',\n\tcomponents: {\n\t\tFolderMultipleImage,\n\t\tNcEmptyContent,\n\t\tCollectionsList,\n\t\tCollectionCover,\n\t\tHeaderNavigation,\n\t\tNcUserBubble,\n\t},\n\n\tfilters: {\n\t\t/**\n\t\t * @param {string} lastPhoto The album's last photos.\n\t\t * @return {string}\n\t\t */\n\t\tcoverUrl(lastPhoto) {\n\t\t\tif (lastPhoto === -1) {\n\t\t\t\treturn ''\n\t\t\t}\n\n\t\t\treturn generateUrl(`/apps/photos/api/v1/preview/${lastPhoto}?x=${512}&y=${512}`)\n\t\t},\n\n\t\t/**\n\t\t * @param {import('../services/Albums.js').Album} album The album's full name, including the userid.\n\t\t * @return {string} The album name without the userId between parentheses.\n\t\t */\n\t\talbumOriginalName(album) {\n\t\t\treturn album.basename.replace(new RegExp(`\\\\(${album.collaborators[0].id}\\\\)$`), '')\n\t\t},\n\t},\n\n\tmixins: [\n\t\tFetchCollectionsMixin,\n\t],\n\n\tcomputed: {\n\t\t/**\n\t\t * @return {import('../services/Albums').IndexedAlbums}\n\t\t */\n\t\tsharedAlbums() {\n\t\t\treturn this.$store.getters.sharedAlbums\n\t\t},\n\t},\n\n\tasync beforeMount() {\n\t\tthis.fetchSharedAlbums()\n\t},\n\n\tmethods: {\n\t\tfetchSharedAlbums() {\n\t\t\tthis.fetchCollections(\n\t\t\t\t`/photos/${getCurrentUser()?.uid}/sharedalbums`,\n\t\t\t\t['<nc:location />', '<nc:dateRange />', '<nc:collaborators />']\n\t\t\t)\n\t\t},\n\n\t\tt: translate,\n\t\tn: translatePlural,\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n.albums-list {\n\tdisplay: flex;\n\tflex-direction: column;\n\n\t.album__name {\n\t\tfont-weight: normal;\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\tfont-size: 20px;\n\t\tmargin-bottom: 12px;\n\t\tline-height: 30px;\n\t\tcolor: var(--color-main-text);\n\t}\n}\n</style>\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SharedAlbums.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!./SharedAlbums.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!./SharedAlbums.vue?vue&type=style&index=0&id=eece3294&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!./SharedAlbums.vue?vue&type=style&index=0&id=eece3294&prod&lang=scss&scoped=true\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SharedAlbums.vue?vue&type=template&id=eece3294&scoped=true\"\nimport script from \"./SharedAlbums.vue?vue&type=script&lang=js\"\nexport * from \"./SharedAlbums.vue?vue&type=script&lang=js\"\nimport style0 from \"./SharedAlbums.vue?vue&type=style&index=0&id=eece3294&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  \"eece3294\",\n  null\n  \n)\n\nexport default component.exports"],"names":["name","data","abortController","AbortController","beforeDestroy","this","abort","beforeRouteLeave","from","to","next","errorFetchingCollections","loadingCollections","mixins","AbortControllerMixin","methods","mapActions","fetchCollections","collectionHome","extraProps","client","collections","signal","addCollections","error","response","status","getCollectionDavRequest","arguments","length","undefined","join","getCollectionFilesDavRequest","async","fetchCollection","path","options","defaultClient","stat","details","logger","debug","formatCollection","code","getDirectoryContents","filter","collection","filename","map","rawCollection","props","collaborators","collaborator","Array","isArray","genFileInfo","dateRange","JSON","parse","replace","start","moment","unix","end","dateRangeFormatted","startDate","format","endDate","date","t","fetchCollectionFiles","fetchedFiles","file","fileid","console","___CSS_LOADER_EXPORT___","push","module","id","emits","title","type","String","fillColor","default","size","Number","_vm","_c","_self","_b","staticClass","attrs","on","$event","$emit","$attrs","_v","_s","_e","components","ImageMultiple","coverUrl","required","altImg","link","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_t","AlertCircle","NcEmptyContent","Object","loading","Boolean","Error","computed","noCollection","keys","translate","slot","_l","ArrowLeft","NcButton","NcLoadingIcon","inheritAttrs","rootTitle","params","isRoot","toggleNavigationButton","parentPath","split","pop","parent","trim","parentName","backToText","folder","exec","assign","$route","decodeURIComponent","$router","resolve","resolved","folderUp","refresh","hide","navigationToggle","document","querySelector","style","display","class","scopedSlots","_u","key","fn","proxy","$slots","directives","rawName","value","expression","FolderMultipleImage","CollectionsList","CollectionCover","HeaderNavigation","NcUserBubble","filters","lastPhoto","generateUrl","albumOriginalName","album","basename","RegExp","FetchCollectionsMixin","sharedAlbums","$store","getters","beforeMount","fetchSharedAlbums","getCurrentUser","uid","n","translatePlural","_ref","albumName","_f","nbItems","label"],"sourceRoot":""}

Zerion Mini Shell 1.0