summaryrefslogtreecommitdiffstats
path: root/dist/user_status-menu.js.map
blob: 7c897f08ba77c292bba97c5f2fdb9403b86b5fe4 (plain)
1
{"version":3,"file":"user_status-menu.js?v=09746af7b1933afc65f1","mappings":";uBAAIA,ECAAC,EACAC,gECwBJ,SACCC,SAAU,KACNC,EAAAA,EAAAA,IAAS,CACXC,WAAYC,GAASA,EAAMC,WAAWC,OACtCC,oBAAqBH,GAASA,EAAMC,WAAWE,oBAC/CC,WAAYJ,GAASA,EAAMC,WAAWI,KACtCC,cAAeN,GAASA,EAAMC,WAAWM,UAQ1CC,cAAAA,GACC,GAAIC,KAAKL,YAAcK,KAAKH,cAC3B,MAAO,GAAGG,KAAKL,cAAcK,KAAKH,gBAGnC,GAAIG,KAAKH,cACR,OAAOG,KAAKH,cAGb,GAAIG,KAAKN,oBACR,OAAQM,KAAKV,YACb,IAAK,SACJ,OAAOU,KAAKC,GAAG,cAAe,UAE/B,IAAK,OACL,IAAK,OACJ,OAAOD,KAAKC,GAAG,cAAe,QAE/B,IAAK,MACJ,OAAOD,KAAKC,GAAG,cAAe,kBAE/B,IAAK,YACJ,OAAOD,KAAKC,GAAG,cAAe,aAE/B,IAAK,UACJ,OAAOD,KAAKC,GAAG,cAAe,WAIhC,OAAOD,KAAKC,GAAG,cAAe,aAC/B,GAGDC,QAAS,CAMR,kBAAMC,CAAab,GAClB,UACOU,KAAKI,OAAOC,SAAS,YAAa,CAAEf,cAC3C,CAAE,MAAOgB,IACRC,EAAAA,EAAAA,IAAUP,KAAKC,GAAG,cAAe,6CACjCO,QAAQC,MAAMH,EACf,CACD,yFC/DF,MAAMI,EAAcA,IACZ,IAAIC,0ECpBRC,QAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,y5BAA05B,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,mDAAmD,MAAQ,GAAG,SAAW,0PAA0P,eAAiB,CAAC,67BAA67B,WAAa,MAE7vE,2ICqDA,MC5DgL,ED4DhL,CACAC,KAAA,aAEAC,WAAA,CACAC,SAAA,IACAC,iBAAA,IACAC,eAAAA,IAAA,0DAEAC,OAAA,CAAAC,EAAAA,GAEAC,MAAA,CAMAC,OAAA,CACAC,KAAAC,QACAC,SAAA,IAIAC,KAAAA,KACA,CACAC,kBAAA,KACAC,QAAA,EACAC,aAAA,EACAC,kBAAA,KACAC,eAAA,OAQAC,OAAAA,GACA,KAAA9B,OAAAC,SAAA,8BAEA8B,GAAAC,OAAAC,oBAEA,KAAAR,kBAAAS,YAAA,KAAAC,qBAAAC,KAAA,WACA,KAAAP,eAAA,KACA,KAAAH,QAAA,GAGA,KAAAE,kBAAAS,KAAA,KACA,MAAAC,EAAA,KAAAZ,OACA,KAAAA,QAAA,EAEAa,aAAA,KAAAV,gBAGAW,WAAA,KAAAX,eAAA,MAEAS,GACA,KAAAH,sBACA,GACA,QACAM,OAAAC,iBAAA,iBAAAd,kBAAA,CACAe,SAAA,EACAC,SAAA,IAGA,KAAAT,yBAEAU,EAAAA,EAAAA,IAAA,kCAAAC,wBACA,EAKAC,aAAAA,GACAN,OAAAO,oBAAA,iBAAApB,mBACAqB,cAAA,KAAAxB,oBACAyB,EAAAA,EAAAA,IAAA,kCAAAJ,wBACA,EAEAhD,QAAA,CAIAqD,SAAAA,GACA,KAAAxB,aAAA,CACA,EAIAyB,UAAAA,GACA,KAAAzB,aAAA,CACA,EAQA,0BAAAQ,GACA,IACA,MAAA9C,OEjIsBgE,WACrB,MAAMC,GAAMC,EAAAA,EAAAA,IAAe,iDAI3B,aAHuBC,EAAAA,GAAWC,IAAIH,EAAK,CAC1CjE,OAAQqC,EAAS,OAAS,YAEXF,KAAKkC,IAAIlC,IAAI,EF4H9BmC,CAAA,KAAAjC,QACArC,GAAAuE,OACA,KAAA5D,OAAAC,SAAA,yBAAAZ,SAEA,KAAAW,OAAAC,SAAA,0BAEA,OAAA4D,GACAzD,QAAAC,MAAA,kCAAAwD,EAAAC,UAAAzE,OACA,CACA,EACAyD,uBAAAA,CAAA3D,GACA4C,GAAAgC,iBAAAC,MAAA7E,EAAAyE,QACA,KAAA5D,OAAAC,SAAA,uBACAZ,OAAAF,EAAAE,OACAG,KAAAL,EAAAK,KACAE,QAAAP,EAAAO,SAGA,2IGvKIuE,EAAU,CAAC,EAEfA,EAAQC,kBAAoB,IAC5BD,EAAQE,cAAgB,IACxBF,EAAQG,OAAS,SAAc,KAAM,QACrCH,EAAQI,OAAS,IACjBJ,EAAQK,mBAAqB,IAEhB,IAAI,IAASL,GAKJ,KAAW,IAAQM,QAAS,IAAQA,OCL1D,SAXgB,cACd,GCTW,WAAkB,IAAIC,EAAI5E,KAAK6E,EAAGD,EAAIE,MAAMD,GAAG,OAAOA,EAAGD,EAAIpD,OAAS,MAAQ,KAAK,CAACuD,IAAI,aAAa,CAAGH,EAAIpD,OAAmUqD,EAAG,WAAW,CAACG,GAAG,CAAC,MAAQ,SAASC,GAAiC,OAAzBA,EAAOC,kBAAyBN,EAAIrB,UAAU4B,MAAM,KAAMC,UAAU,GAAGC,YAAYT,EAAIU,GAAG,CAAC,CAACC,IAAI,OAAOC,GAAG,WAAW,MAAO,CAACX,EAAG,mBAAmB,CAACY,YAAY,mBAAmBC,MAAM,CAAC,OAASd,EAAItF,WAAW,cAAc,UAAU,EAAEqG,OAAM,MAAS,CAACf,EAAIgB,GAAG,SAAShB,EAAIiB,GAAGjB,EAAI7E,gBAAgB,UAA9oB8E,EAAG,SAAS,CAACY,YAAY,wBAAwBT,GAAG,CAAC,MAAQ,SAASC,GAAiC,OAAzBA,EAAOC,kBAAyBN,EAAIrB,UAAU4B,MAAM,KAAMC,UAAU,IAAI,CAACP,EAAG,mBAAmB,CAACY,YAAY,mBAAmBC,MAAM,CAAC,OAASd,EAAItF,WAAW,cAAc,UAAUsF,EAAIgB,GAAG,SAAShB,EAAIiB,GAAGjB,EAAI7E,gBAAgB,SAAS,GAAgW6E,EAAIgB,GAAG,KAAMhB,EAAI7C,YAAa8C,EAAG,iBAAiB,CAACa,MAAM,CAAC,OAASd,EAAIpD,QAAQwD,GAAG,CAAC,MAAQJ,EAAIpB,cAAcoB,EAAIkB,MAAM,EACh5B,GACsB,IDUpB,EACA,KACA,WACA,MAI8B,uBEWhC,MCuCA,GAAiBvG,MA7CH,CACbwG,mBAAoB,IA4CGC,UAzCN,CAQjBC,mBAAAA,CAAoB1G,EAAOE,GAC1BF,EAAMwG,mBAAqB,IAAIxG,EAAMwG,mBAAoBtG,EAC1D,GA+BkCyG,QA5BnB,CACfC,mBAAmB5G,GACXA,EAAMwG,mBAAmBK,OAAS,GA0BCC,QAtB5B,CASf,+BAAMC,CAAyBC,GAAoB,IAAnB,MAAEhH,EAAK,OAAEiH,GAAQD,EAChD,GAAIhH,EAAMwG,mBAAmBK,OAAS,EACrC,OAGD,MAAMK,OD/B2BhD,WAClC,MAAMC,GAAMC,EAAAA,EAAAA,IAAe,2DAG3B,aAFuBC,EAAAA,GAAW8C,IAAIhD,IAEtB9B,KAAKkC,IAAIlC,IAAI,EC2BL+E,GACvB,IAAK,MAAMlH,KAAUgH,EACpBD,EAAO,sBAAuB/G,EAEhC,yCChCD,MAAMmH,EAA0BC,IAC/B,GAAgB,OAAZA,EACH,OAAO,KAGR,MAAMC,GAAOpG,EAAAA,EAAAA,KAEb,GAAqB,WAAjBmG,EAAQpF,KAEX,OADAqF,EAAKC,WAAWD,EAAKE,aAAeH,EAAQI,MACrCC,KAAKC,MAAML,EAAKM,UAAY,KAEpC,GAAqB,WAAjBP,EAAQpF,KACX,OAAQoF,EAAQI,MAChB,IAAK,MACL,IAAK,OACJ,OAAOI,QAAOC,EAAAA,EAAAA,GAAOR,GAAMS,MAAMV,EAAQI,MAAMO,OAAO,MAMxD,MAAqB,UAAjBX,EAAQpF,KACJoF,EAAQI,KAGT,IAAI,EC6PZ,GAAiB1H,MArRH,CAEbE,OAAQ,KAERC,oBAAqB,KAErBI,QAAS,KAETF,KAAM,KAENiH,QAAS,KAGTY,oBAAqB,KAErBC,UAAW,MAsQY1B,UAnQN,CASjB2B,SAAAA,CAAUpI,EAAKgH,GAAkB,IAAhB,WAAEjH,GAAYiH,EAC9BhH,EAAME,OAASH,EACfC,EAAMG,qBAAsB,CAC7B,EAYAkI,oBAAAA,CAAqBrI,EAAKsI,GAAyC,IAAvC,UAAEH,EAAS,QAAEb,EAAO,QAAE/G,EAAO,KAAEF,GAAMiI,EAChEtI,EAAMmI,UAAYA,EAClBnI,EAAMkI,qBAAsB,EAE5BlI,EAAMO,QAAUA,EAChBP,EAAMK,KAAOA,EACbL,EAAMsH,QAAUA,CACjB,EAWAiB,gBAAAA,CAAiBvI,EAAKwI,GAA8B,IAA5B,QAAEjI,EAAO,KAAEF,EAAI,QAAEiH,GAASkB,EACjDxI,EAAMmI,UAAY,KAClBnI,EAAMkI,qBAAsB,EAE5BlI,EAAMO,QAAUA,EAChBP,EAAMK,KAAOA,EACbL,EAAMsH,QAAUA,CACjB,EAOAmB,YAAAA,CAAazI,GACZA,EAAMmI,UAAY,KAClBnI,EAAMkI,qBAAsB,EAE5BlI,EAAMO,QAAU,KAChBP,EAAMK,KAAO,KACbL,EAAMsH,QAAU,IACjB,EAeAoB,oBAAAA,CAAqB1I,EAAK2I,GAA2F,IAAzF,OAAEzI,EAAM,oBAAEC,EAAmB,QAAEI,EAAO,KAAEF,EAAI,QAAEiH,EAAO,oBAAEY,EAAmB,UAAEC,GAAWQ,EAClH3I,EAAME,OAASA,EACfF,EAAMO,QAAUA,EAChBP,EAAMK,KAAOA,OAIsB,IAAxBF,IACVH,EAAMG,oBAAsBA,QAEN,IAAZmH,IACVtH,EAAMsH,QAAUA,QAEkB,IAAxBY,IACVlI,EAAMkI,oBAAsBA,QAEJ,IAAdC,IACVnI,EAAMmI,UAAYA,EAEpB,GAkKkCxB,QA/JnB,CAAC,EA+J2BG,QA7J5B,CAYf,eAAMsB,CAASQ,EAAAC,GAAoC,IAAnC,OAAE5B,EAAM,MAAEjH,GAAO4I,GAAE,WAAE7I,GAAY8I,OC9GhC3E,WACjB,MAAMC,GAAMC,EAAAA,EAAAA,IAAe,oDACrBC,EAAAA,GAAWC,IAAIH,EAAK,CACzBpE,cACC,ED2GKqI,CAAUrI,GAChBkH,EAAO,YAAa,CAAElH,gBACtB+I,EAAAA,EAAAA,IAAK,6BAA8B,CAClC5I,OAAQF,EAAME,OACdK,QAASP,EAAMO,QACfF,KAAML,EAAMK,KACZiH,QAAStH,EAAMsH,QACf7C,QAAQG,EAAAA,EAAAA,OAAkBC,KAE5B,EAaA,yBAAMkE,CAAmBC,EAAoB9I,GAAQ,IAA3B,OAAE+G,EAAM,MAAEjH,GAAOgJ,EAC1C/B,EAAO,uBAAwB/G,EAChC,EAcA,0BAAMmI,CAAoBY,EAAAC,GAAuD,IAAtD,OAAEjC,EAAM,UAAEkC,EAAS,MAAEnJ,GAAOiJ,GAAE,UAAEd,EAAS,QAAEb,GAAS4B,EAC9E,MAAME,EAAkB/B,EAAuBC,SCxIpBpD,eAAOiE,GAA8B,IAAnBb,EAAOzB,UAAAgB,OAAA,QAAAwC,IAAAxD,UAAA,GAAAA,UAAA,GAAG,KACxD,MAAM1B,GAAMC,EAAAA,EAAAA,IAAe,4EACrBC,EAAAA,GAAWC,IAAIH,EAAK,CACzBgE,YACAb,WAEF,CDoIQe,CAAqBF,EAAWiB,GACtC,MAAMlJ,EAASiJ,EAAU3C,mBAAmBA,mBAAmB8C,MAAMpJ,GAAWA,EAAOsB,KAAO2G,KACxF,QAAE5H,EAAO,KAAEF,GAASH,EAE1B+G,EAAO,uBAAwB,CAAEkB,YAAWb,QAAS8B,EAAiB7I,UAASF,UAC/EyI,EAAAA,EAAAA,IAAK,6BAA8B,CAClC5I,OAAQF,EAAME,OACdK,QAASP,EAAMO,QACfF,KAAML,EAAMK,KACZiH,QAAStH,EAAMsH,QACf7C,QAAQG,EAAAA,EAAAA,OAAkBC,KAE5B,EAcA,sBAAM0D,CAAgBgB,EAAAC,GAAgD,IAA/C,OAAEvC,EAAM,MAAEjH,GAAOuJ,GAAE,QAAEhJ,EAAO,KAAEF,EAAI,QAAEiH,GAASkC,EACnE,MAAMJ,EAAkB/B,EAAuBC,SCrJxBpD,eAAO3D,GAA+C,IAAtCkJ,EAAU5D,UAAAgB,OAAA,QAAAwC,IAAAxD,UAAA,GAAAA,UAAA,GAAG,KAAMyB,EAAOzB,UAAAgB,OAAA,QAAAwC,IAAAxD,UAAA,GAAAA,UAAA,GAAG,KACrE,MAAM1B,GAAMC,EAAAA,EAAAA,IAAe,wEACrBC,EAAAA,GAAWC,IAAIH,EAAK,CACzB5D,UACAkJ,aACAnC,WAEF,CDgJQiB,CAAiBhI,EAASF,EAAM+I,GACtCnC,EAAO,mBAAoB,CAAE1G,UAASF,OAAMiH,QAAS8B,KACrDN,EAAAA,EAAAA,IAAK,6BAA8B,CAClC5I,OAAQF,EAAME,OACdK,QAASP,EAAMO,QACfF,KAAML,EAAMK,KACZiH,QAAStH,EAAMsH,QACf7C,QAAQG,EAAAA,EAAAA,OAAkBC,KAE5B,EAUA,kBAAM4D,CAAYiB,GAAoB,IAAnB,OAAEzC,EAAM,MAAEjH,GAAO0J,OC5JhBxF,WACpB,MAAMC,GAAMC,EAAAA,EAAAA,IAAe,iEACrBC,EAAAA,GAAWsF,OAAOxF,EAAI,ED2JrBsE,GACNxB,EAAO,iBACP6B,EAAAA,EAAAA,IAAK,6BAA8B,CAClC5I,OAAQF,EAAME,OACdK,QAASP,EAAMO,QACfF,KAAML,EAAMK,KACZiH,QAAStH,EAAMsH,QACf7C,QAAQG,EAAAA,EAAAA,OAAkBC,KAE5B,EASA,6BAAM+E,CAAuBC,GAAa,IAAZ,OAAE5C,GAAQ4C,EAEvC5C,EAAO,4BCvPkB/C,WAC1B,MAAMC,GAAMC,EAAAA,EAAAA,IAAe,uCAG3B,aAFuBC,EAAAA,GAAW8C,IAAIhD,IAEtB9B,KAAKkC,IAAIlC,IAAI,EDkPPyH,GAEtB,EAiBA,4BAAMC,CAAsBC,EAAa9J,GAAQ,IAApB,OAAE+G,GAAQ+C,EACtC/C,EAAO,uBAAwB/G,EAChC,EAQA+J,0BAAAA,CAA0BC,GAAa,IAAZ,OAAEjD,GAAQiD,EAEpCjD,EAAO,wBADQkD,EAAAA,EAAAA,GAAU,cAAe,UAEzC,IE5LD,GAAiBnK,MAzFH,CAEbE,OAAQ,KAERC,oBAAqB,KAErBI,QAAS,KAETF,KAAM,KAENiH,QAAS,KAGTY,oBAAqB,KAErBC,UAAW,MA0EY1B,UAvEN,CAcjB2D,0BAAAA,CAA2BpK,EAAKgH,GAA2F,IAAzF,OAAE9G,EAAM,oBAAEC,EAAmB,QAAEI,EAAO,KAAEF,EAAI,QAAEiH,EAAO,oBAAEY,EAAmB,UAAEC,GAAWnB,EACxHhH,EAAME,OAASA,EACfF,EAAMO,QAAUA,EAChBP,EAAMK,KAAOA,OAIsB,IAAxBF,IACVH,EAAMG,oBAAsBA,QAEN,IAAZmH,IACVtH,EAAMsH,QAAUA,QAEkB,IAAxBY,IACVlI,EAAMkI,oBAAsBA,QAEJ,IAAdC,IACVnI,EAAMmI,UAAYA,EAEpB,GAsCkCxB,QAnCnB,CAAC,EAmC2BG,QAjC5B,CAQf,2BAAMuD,CAAqB/B,GAAa,IAAZ,OAAErB,GAAQqB,EACrC,IAECrB,EAAO,kCDvDgB/C,WACzB,MAAMC,GAAMC,EAAAA,EAAAA,IAAe,4CAA6C,CAAEK,OAAQ,IAAMA,IAGxF,aAFuBJ,EAAAA,GAAW8C,IAAIhD,IAEtB9B,KAAKkC,IAAIlC,IAAI,ECkDNiI,EAAkB1F,EAAAA,EAAAA,OAAkBC,KAE1D,CAAE,MAAO0F,GACR,CAEF,EAEA,4BAAMC,CAAsBhC,EAAAG,GAA4B,IAA3B,OAAE1B,GAAQuB,GAAE,UAAEL,GAAWQ,EACrD,MAAMzI,ODMqBgE,WAC5B,MAAMC,GAAMC,EAAAA,EAAAA,IAAe,yDAA0D,CAAE+D,cAGvF,aAFuB9D,EAAAA,GAAWsF,OAAOxF,IAEzB9B,KAAKkC,IAAIlC,IAAI,ECVPoI,CAAqBtC,GACtCjI,IACH+G,EAAO,6BAA8B,CAAC,GACtCA,EAAO,uBAAwB/G,IAC/B4I,EAAAA,EAAAA,IAAK,6BAA8B,CAClC5I,OAAQA,EAAOA,OACfK,QAASL,EAAOK,QAChBF,KAAMH,EAAOG,KACbiH,QAASpH,EAAOoH,QAChB7C,QAAQG,EAAAA,EAAAA,OAAkBC,MAG7B,ICzFD6F,EAAAA,GAAIC,IAAIC,EAAAA,IAER,YAAmBC,EAAAA,GAAM,CACxBC,QAAS,CACRtE,mBAAkB,EAClBvG,WAAU,EACV8K,iBAAgBA,GAEjBC,QAAQ,ICHTC,EAAAA,GAAoBC,MAAKC,EAAAA,EAAAA,OAEzBT,EAAAA,GAAIU,UAAUC,EAAIA,EAClBX,EAAAA,GAAIU,UAAU1K,GAAK2K,EAEnB,MAEMC,EAAiBA,KACtB,MAAMC,EAAaC,SAASC,eAAe,0BAE3C,IAAIf,EAAAA,GAAI,CACPgB,GAAIH,EACJI,OAAQC,GAAKA,EAAEC,GACfC,MAAKA,GACJ,EATgBN,SAASC,eAAe,0BAa1CH,KAEA5H,EAAAA,EAAAA,IAAU,yBAA0B4H,GAIrCE,SAASjI,iBAAiB,oBAAoB,WACxCwI,IAAIC,WAITD,IAAIC,UAAUC,eAAe,UAAWP,GAEhC,IADWhB,EAAAA,GAAIwB,OAAOL,GACtB,CAAc,CACpBM,UAAW,CACVlK,QAAQ,GAET6J,MAAKA,IACHM,OAAOV,IAEZ,MCtEIW,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBlD,IAAjBmD,EACH,OAAOA,EAAaC,QAGrB,IAAIlL,EAAS8K,EAAyBE,GAAY,CACjD/K,GAAI+K,EACJG,QAAQ,EACRD,QAAS,CAAC,GAUX,OANAE,EAAoBJ,GAAUK,KAAKrL,EAAOkL,QAASlL,EAAQA,EAAOkL,QAASH,GAG3E/K,EAAOmL,QAAS,EAGTnL,EAAOkL,OACf,CAGAH,EAAoBO,EAAIF,EnB5BpBjN,EAAW,GACf4M,EAAoBQ,EAAI,CAACC,EAAQC,EAAU/G,EAAIgH,KAC9C,IAAGD,EAAH,CAMA,IAAIE,EAAeC,IACnB,IAASC,EAAI,EAAGA,EAAI1N,EAASmH,OAAQuG,IAAK,CACrCJ,EAAWtN,EAAS0N,GAAG,GACvBnH,EAAKvG,EAAS0N,GAAG,GACjBH,EAAWvN,EAAS0N,GAAG,GAE3B,IAJA,IAGIC,GAAY,EACPC,EAAI,EAAGA,EAAIN,EAASnG,OAAQyG,MACpB,EAAXL,GAAsBC,GAAgBD,IAAaM,OAAOC,KAAKlB,EAAoBQ,GAAGW,OAAOzH,GAASsG,EAAoBQ,EAAE9G,GAAKgH,EAASM,MAC9IN,EAASU,OAAOJ,IAAK,IAErBD,GAAY,EACTJ,EAAWC,IAAcA,EAAeD,IAG7C,GAAGI,EAAW,CACb3N,EAASgO,OAAON,IAAK,GACrB,IAAIO,EAAI1H,SACEoD,IAANsE,IAAiBZ,EAASY,EAC/B,CACD,CACA,OAAOZ,CArBP,CAJCE,EAAWA,GAAY,EACvB,IAAI,IAAIG,EAAI1N,EAASmH,OAAQuG,EAAI,GAAK1N,EAAS0N,EAAI,GAAG,GAAKH,EAAUG,IAAK1N,EAAS0N,GAAK1N,EAAS0N,EAAI,GACrG1N,EAAS0N,GAAK,CAACJ,EAAU/G,EAAIgH,EAuBjB,EoB3BdX,EAAoBsB,EAAKrM,IACxB,IAAIsM,EAAStM,GAAUA,EAAOuM,WAC7B,IAAOvM,EAAiB,QACxB,IAAM,EAEP,OADA+K,EAAoByB,EAAEF,EAAQ,CAAEG,EAAGH,IAC5BA,CAAM,ECLdvB,EAAoByB,EAAI,CAACtB,EAASwB,KACjC,IAAI,IAAIjI,KAAOiI,EACX3B,EAAoB4B,EAAED,EAAYjI,KAASsG,EAAoB4B,EAAEzB,EAASzG,IAC5EuH,OAAOY,eAAe1B,EAASzG,EAAK,CAAEoI,YAAY,EAAMjH,IAAK8G,EAAWjI,IAE1E,ECNDsG,EAAoB+B,EAAI,CAAC,EAGzB/B,EAAoB/B,EAAK+D,GACjBC,QAAQC,IAAIjB,OAAOC,KAAKlB,EAAoB+B,GAAGI,QAAO,CAACC,EAAU1I,KACvEsG,EAAoB+B,EAAErI,GAAKsI,EAASI,GAC7BA,IACL,KCNJpC,EAAoBqC,EAAKL,IAEC,OAAZA,EAAmB,oBAAsBA,GAAW,IAAMA,EAAU,SAAW,CAAC,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,wBAAwBA,GCHvNhC,EAAoBsC,EAAI,WACvB,GAA0B,iBAAfC,WAAyB,OAAOA,WAC3C,IACC,OAAOpO,MAAQ,IAAIqO,SAAS,cAAb,EAChB,CAAE,MAAOvE,GACR,GAAsB,iBAAXjH,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxBgJ,EAAoB4B,EAAI,CAACa,EAAKC,IAAUzB,OAAOnC,UAAU6D,eAAerC,KAAKmC,EAAKC,GxBA9ErP,EAAa,CAAC,EACdC,EAAoB,aAExB0M,EAAoB4C,EAAI,CAAC/K,EAAKgL,EAAMnJ,EAAKsI,KACxC,GAAG3O,EAAWwE,GAAQxE,EAAWwE,GAAK7C,KAAK6N,OAA3C,CACA,IAAIC,EAAQC,EACZ,QAAWhG,IAARrD,EAEF,IADA,IAAIsJ,EAAU9D,SAAS+D,qBAAqB,UACpCnC,EAAI,EAAGA,EAAIkC,EAAQzI,OAAQuG,IAAK,CACvC,IAAIoC,EAAIF,EAAQlC,GAChB,GAAGoC,EAAEC,aAAa,QAAUtL,GAAOqL,EAAEC,aAAa,iBAAmB7P,EAAoBoG,EAAK,CAAEoJ,EAASI,EAAG,KAAO,CACpH,CAEGJ,IACHC,GAAa,GACbD,EAAS5D,SAASkE,cAAc,WAEzBC,QAAU,QACjBP,EAAOQ,QAAU,IACbtD,EAAoBuD,IACvBT,EAAOU,aAAa,QAASxD,EAAoBuD,IAElDT,EAAOU,aAAa,eAAgBlQ,EAAoBoG,GAExDoJ,EAAOW,IAAM5L,GAEdxE,EAAWwE,GAAO,CAACgL,GACnB,IAAIa,EAAmB,CAACC,EAAMC,KAE7Bd,EAAOe,QAAUf,EAAOgB,OAAS,KACjChN,aAAawM,GACb,IAAIS,EAAU1Q,EAAWwE,GAIzB,UAHOxE,EAAWwE,GAClBiL,EAAOkB,YAAclB,EAAOkB,WAAWC,YAAYnB,GACnDiB,GAAWA,EAAQG,SAASvK,GAAQA,EAAGiK,KACpCD,EAAM,OAAOA,EAAKC,EAAM,EAExBN,EAAUvM,WAAW2M,EAAiB/M,KAAK,UAAMoG,EAAW,CAAEnH,KAAM,UAAWuO,OAAQrB,IAAW,MACtGA,EAAOe,QAAUH,EAAiB/M,KAAK,KAAMmM,EAAOe,SACpDf,EAAOgB,OAASJ,EAAiB/M,KAAK,KAAMmM,EAAOgB,QACnDf,GAAc7D,SAASkF,KAAKC,YAAYvB,EApCkB,CAoCX,EyBvChD9C,EAAoBqB,EAAKlB,IACH,oBAAXmE,QAA0BA,OAAOC,aAC1CtD,OAAOY,eAAe1B,EAASmE,OAAOC,YAAa,CAAEC,MAAO,WAE7DvD,OAAOY,eAAe1B,EAAS,aAAc,CAAEqE,OAAO,GAAO,ECL9DxE,EAAoByE,IAAOxP,IAC1BA,EAAOyP,MAAQ,GACVzP,EAAO0P,WAAU1P,EAAO0P,SAAW,IACjC1P,GCHR+K,EAAoBgB,EAAI,WCAxB,IAAI4D,EACA5E,EAAoBsC,EAAEuC,gBAAeD,EAAY5E,EAAoBsC,EAAEwC,SAAW,IACtF,IAAI5F,EAAWc,EAAoBsC,EAAEpD,SACrC,IAAK0F,GAAa1F,IACbA,EAAS6F,eAAkE,WAAjD7F,EAAS6F,cAAcC,QAAQC,gBAC5DL,EAAY1F,EAAS6F,cAActB,MAC/BmB,GAAW,CACf,IAAI5B,EAAU9D,EAAS+D,qBAAqB,UAC5C,GAAGD,EAAQzI,OAEV,IADA,IAAIuG,EAAIkC,EAAQzI,OAAS,EAClBuG,GAAK,KAAO8D,IAAc,aAAaM,KAAKN,KAAaA,EAAY5B,EAAQlC,KAAK2C,GAE3F,CAID,IAAKmB,EAAW,MAAM,IAAIO,MAAM,yDAChCP,EAAYA,EAAUQ,QAAQ,SAAU,IAAIA,QAAQ,OAAQ,IAAIA,QAAQ,QAAS,IAAIA,QAAQ,YAAa,KAC1GpF,EAAoBqF,EAAIT,YClBxB5E,EAAoBsF,EAAIpG,SAASqG,SAAWC,KAAKV,SAASW,KAK1D,IAAIC,EAAkB,CACrB,KAAM,GAGP1F,EAAoB+B,EAAEf,EAAI,CAACgB,EAASI,KAElC,IAAIuD,EAAqB3F,EAAoB4B,EAAE8D,EAAiB1D,GAAW0D,EAAgB1D,QAAWjF,EACtG,GAA0B,IAAvB4I,EAGF,GAAGA,EACFvD,EAASpN,KAAK2Q,EAAmB,QAC3B,CAGL,IAAIC,EAAU,IAAI3D,SAAQ,CAAC4D,EAASC,IAAYH,EAAqBD,EAAgB1D,GAAW,CAAC6D,EAASC,KAC1G1D,EAASpN,KAAK2Q,EAAmB,GAAKC,GAGtC,IAAI/N,EAAMmI,EAAoBqF,EAAIrF,EAAoBqC,EAAEL,GAEpD5J,EAAQ,IAAI+M,MAgBhBnF,EAAoB4C,EAAE/K,GAfF+L,IACnB,GAAG5D,EAAoB4B,EAAE8D,EAAiB1D,KAEf,KAD1B2D,EAAqBD,EAAgB1D,MACR0D,EAAgB1D,QAAWjF,GACrD4I,GAAoB,CACtB,IAAII,EAAYnC,IAAyB,SAAfA,EAAMhO,KAAkB,UAAYgO,EAAMhO,MAChEoQ,EAAUpC,GAASA,EAAMO,QAAUP,EAAMO,OAAOV,IACpDrL,EAAMnE,QAAU,iBAAmB+N,EAAU,cAAgB+D,EAAY,KAAOC,EAAU,IAC1F5N,EAAMjD,KAAO,iBACbiD,EAAMxC,KAAOmQ,EACb3N,EAAM6N,QAAUD,EAChBL,EAAmB,GAAGvN,EACvB,CACD,GAEwC,SAAW4J,EAASA,EAE/D,CACD,EAWFhC,EAAoBQ,EAAEQ,EAAKgB,GAA0C,IAA7B0D,EAAgB1D,GAGxD,IAAIkE,EAAuB,CAACC,EAA4BpQ,KACvD,IAKIkK,EAAU+B,EALVtB,EAAW3K,EAAK,GAChBqQ,EAAcrQ,EAAK,GACnBsQ,EAAUtQ,EAAK,GAGI+K,EAAI,EAC3B,GAAGJ,EAAS4F,MAAMpR,GAAgC,IAAxBwQ,EAAgBxQ,KAAa,CACtD,IAAI+K,KAAYmG,EACZpG,EAAoB4B,EAAEwE,EAAanG,KACrCD,EAAoBO,EAAEN,GAAYmG,EAAYnG,IAGhD,GAAGoG,EAAS,IAAI5F,EAAS4F,EAAQrG,EAClC,CAEA,IADGmG,GAA4BA,EAA2BpQ,GACrD+K,EAAIJ,EAASnG,OAAQuG,IACzBkB,EAAUtB,EAASI,GAChBd,EAAoB4B,EAAE8D,EAAiB1D,IAAY0D,EAAgB1D,IACrE0D,EAAgB1D,GAAS,KAE1B0D,EAAgB1D,GAAW,EAE5B,OAAOhC,EAAoBQ,EAAEC,EAAO,EAGjC8F,EAAqBf,KAA4B,sBAAIA,KAA4B,uBAAK,GAC1Fe,EAAmBrC,QAAQgC,EAAqBvP,KAAK,KAAM,IAC3D4P,EAAmBvR,KAAOkR,EAAqBvP,KAAK,KAAM4P,EAAmBvR,KAAK2B,KAAK4P,QCvFvFvG,EAAoBuD,QAAKxG,ECGzB,IAAIyJ,EAAsBxG,EAAoBQ,OAAEzD,EAAW,CAAC,OAAO,IAAOiD,EAAoB,SAC9FwG,EAAsBxG,EAAoBQ,EAAEgG","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/user_status/src/mixins/OnlineStatusMixin.js","webpack:///nextcloud/apps/user_status/src/services/dateService.js","webpack:///nextcloud/apps/user_status/src/UserStatus.vue?vue&type=style&index=0&id=2c5c2586&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/user_status/src/UserStatus.vue","webpack:///nextcloud/apps/user_status/src/UserStatus.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/user_status/src/services/heartbeatService.js","webpack://nextcloud/./apps/user_status/src/UserStatus.vue?d8b4","webpack://nextcloud/./apps/user_status/src/UserStatus.vue?d74a","webpack://nextcloud/./apps/user_status/src/UserStatus.vue?e2b3","webpack:///nextcloud/apps/user_status/src/services/predefinedStatusService.js","webpack:///nextcloud/apps/user_status/src/store/predefinedStatuses.js","webpack:///nextcloud/apps/user_status/src/services/clearAtService.js","webpack:///nextcloud/apps/user_status/src/store/userStatus.js","webpack:///nextcloud/apps/user_status/src/services/statusService.js","webpack:///nextcloud/apps/user_status/src/store/userBackupStatus.js","webpack:///nextcloud/apps/user_status/src/store/index.js","webpack:///nextcloud/apps/user_status/src/menu.js","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { mapState } from 'vuex'\nimport { showError } from '@nextcloud/dialogs'\n\nexport default {\n\tcomputed: {\n\t\t...mapState({\n\t\t\tstatusType: state => state.userStatus.status,\n\t\t\tstatusIsUserDefined: state => state.userStatus.statusIsUserDefined,\n\t\t\tcustomIcon: state => state.userStatus.icon,\n\t\t\tcustomMessage: state => state.userStatus.message,\n\t\t}),\n\n\t\t/**\n\t\t * The message displayed in the top right corner\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\tvisibleMessage() {\n\t\t\tif (this.customIcon && this.customMessage) {\n\t\t\t\treturn `${this.customIcon} ${this.customMessage}`\n\t\t\t}\n\n\t\t\tif (this.customMessage) {\n\t\t\t\treturn this.customMessage\n\t\t\t}\n\n\t\t\tif (this.statusIsUserDefined) {\n\t\t\t\tswitch (this.statusType) {\n\t\t\t\tcase 'online':\n\t\t\t\t\treturn this.$t('user_status', 'Online')\n\n\t\t\t\tcase 'away':\n\t\t\t\tcase 'busy':\n\t\t\t\t\treturn this.$t('user_status', 'Away')\n\n\t\t\t\tcase 'dnd':\n\t\t\t\t\treturn this.$t('user_status', 'Do not disturb')\n\n\t\t\t\tcase 'invisible':\n\t\t\t\t\treturn this.$t('user_status', 'Invisible')\n\n\t\t\t\tcase 'offline':\n\t\t\t\t\treturn this.$t('user_status', 'Offline')\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this.$t('user_status', 'Set status')\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Changes the user-status\n\t\t *\n\t\t * @param {string} statusType (online / away / dnd / invisible)\n\t\t */\n\t\tasync changeStatus(statusType) {\n\t\t\ttry {\n\t\t\t\tawait this.$store.dispatch('setStatus', { statusType })\n\t\t\t} catch (err) {\n\t\t\t\tshowError(this.$t('user_status', 'There was an error saving the new status'))\n\t\t\t\tconsole.debug(err)\n\t\t\t}\n\t\t},\n\t},\n}\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst dateFactory = () => {\n\treturn new Date()\n}\n\nexport {\n\tdateFactory,\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, `.user-status-menu-item[data-v-2c5c2586]{--color-text-maxcontrast: var(--color-text-maxcontrast-background-blur, var(--color-main-text));width:auto;min-width:44px;height:44px;margin:0;border:0;border-radius:var(--border-radius-pill);background-color:var(--color-main-background-blur);font-size:inherit;font-weight:normal;-webkit-backdrop-filter:var(--background-blur);backdrop-filter:var(--background-blur)}.user-status-menu-item[data-v-2c5c2586]:active,.user-status-menu-item[data-v-2c5c2586]:hover,.user-status-menu-item[data-v-2c5c2586]:focus-visible{background-color:var(--color-background-hover)}.user-status-menu-item[data-v-2c5c2586]:focus-visible{box-shadow:0 0 0 4px var(--color-main-background) !important;outline:2px solid var(--color-main-text) !important}.user-status-icon[data-v-2c5c2586]{width:16px;height:16px;margin-right:10px;opacity:1 !important;background-size:16px;vertical-align:middle !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/user_status/src/UserStatus.vue\"],\"names\":[],\"mappings\":\"AACA,wCAEC,+FAAA,CAEA,UAAA,CACA,cAAA,CACA,WAAA,CACA,QAAA,CACA,QAAA,CACA,uCAAA,CACA,kDAAA,CACA,iBAAA,CACA,kBAAA,CAEA,8CAAA,CACA,sCAAA,CAEA,mJAGC,8CAAA,CAED,sDACC,4DAAA,CACA,mDAAA,CAIF,mCACC,UAAA,CACA,WAAA,CACA,iBAAA,CACA,oBAAA,CACA,oBAAA,CACA,gCAAA\",\"sourcesContent\":[\"\\n.user-status-menu-item {\\n\\t// Ensure the maxcontrast color is set for the background\\n\\t--color-text-maxcontrast: var(--color-text-maxcontrast-background-blur, var(--color-main-text));\\n\\n\\twidth: auto;\\n\\tmin-width: 44px;\\n\\theight: 44px;\\n\\tmargin: 0;\\n\\tborder: 0;\\n\\tborder-radius: var(--border-radius-pill);\\n\\tbackground-color: var(--color-main-background-blur);\\n\\tfont-size: inherit;\\n\\tfont-weight: normal;\\n\\n\\t-webkit-backdrop-filter: var(--background-blur);\\n\\tbackdrop-filter: var(--background-blur);\\n\\n\\t&:active,\\n\\t&:hover,\\n\\t&:focus-visible {\\n\\t\\tbackground-color: var(--color-background-hover);\\n\\t}\\n\\t&:focus-visible {\\n\\t\\tbox-shadow: 0 0 0 4px var(--color-main-background) !important;\\n\\t\\toutline: 2px solid var(--color-main-text) !important;\\n\\t}\\n}\\n\\n.user-status-icon {\\n\\twidth: 16px;\\n\\theight: 16px;\\n\\tmargin-right: 10px;\\n\\topacity: 1 !important;\\n\\tbackground-size: 16px;\\n\\tvertical-align: middle !important;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","<!--\n  - @copyright Copyright (c) 2020 Georg Ehrke <oc.list@georgehrke.com>\n  - @author Georg Ehrke <oc.list@georgehrke.com>\n  -\n  - @license GNU AGPL version 3 or any later version\n  -\n  - This program is free software: you can redistribute it and/or modify\n  - it under the terms of the GNU Affero General Public License as\n  - published by the Free Software Foundation, either version 3 of the\n  - License, or (at your option) any later version.\n  -\n  - This program is distributed in the hope that it will be useful,\n  - but WITHOUT ANY WARRANTY; without even the implied warranty of\n  - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n  - GNU Affero General Public License for more details.\n  -\n  - You should have received a copy of the GNU Affero General Public License\n  - along with this program. If not, see <http://www.gnu.org/licenses/>.\n  -\n  -->\n\n<template>\n\t<component :is=\"inline ? 'div' : 'li'\">\n\t\t<!-- User Status = Status modal toggle -->\n\t\t<button v-if=\"!inline\"\n\t\t\tclass=\"user-status-menu-item\"\n\t\t\t@click.stop=\"openModal\">\n\t\t\t<NcUserStatusIcon class=\"user-status-icon\"\n\t\t\t\t:status=\"statusType\"\n\t\t\t\taria-hidden=\"true\" />\n\t\t\t{{ visibleMessage }}\n\t\t</button>\n\n\t\t<!-- Dashboard Status -->\n\t\t<NcButton v-else\n\t\t\t@click.stop=\"openModal\">\n\t\t\t<template #icon>\n\t\t\t\t<NcUserStatusIcon class=\"user-status-icon\"\n\t\t\t\t\t:status=\"statusType\"\n\t\t\t\t\taria-hidden=\"true\" />\n\t\t\t</template>\n\t\t\t{{ visibleMessage }}\n\t\t</NcButton>\n\n\t\t<!-- Status management modal -->\n\t\t<SetStatusModal v-if=\"isModalOpen\"\n\t\t\t:inline=\"inline\"\n\t\t\t@close=\"closeModal\" />\n\t</component>\n</template>\n\n<script>\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport NcUserStatusIcon from '@nextcloud/vue/dist/Components/NcUserStatusIcon.js'\nimport debounce from 'debounce'\n\nimport { sendHeartbeat } from './services/heartbeatService.js'\nimport OnlineStatusMixin from './mixins/OnlineStatusMixin.js'\n\nexport default {\n\tname: 'UserStatus',\n\n\tcomponents: {\n\t\tNcButton,\n\t\tNcUserStatusIcon,\n\t\tSetStatusModal: () => import(/* webpackChunkName: 'user-status-modal' */'./components/SetStatusModal.vue'),\n\t},\n\tmixins: [OnlineStatusMixin],\n\n\tprops: {\n\t\t/**\n\t\t * Whether the component should be rendered as a Dashboard Status or a User Menu Entries\n\t\t * true = Dashboard Status\n\t\t * false = User Menu Entries\n\t\t */\n\t\tinline: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\theartbeatInterval: null,\n\t\t\tisAway: false,\n\t\t\tisModalOpen: false,\n\t\t\tmouseMoveListener: null,\n\t\t\tsetAwayTimeout: null,\n\t\t}\n\t},\n\n\t/**\n\t * Loads the current user's status from initial state\n\t * and stores it in Vuex\n\t */\n\tmounted() {\n\t\tthis.$store.dispatch('loadStatusFromInitialState')\n\n\t\tif (OC.config.session_keepalive) {\n\t\t\t// Send the latest status to the server every 5 minutes\n\t\t\tthis.heartbeatInterval = setInterval(this._backgroundHeartbeat.bind(this), 1000 * 60 * 5)\n\t\t\tthis.setAwayTimeout = () => {\n\t\t\t\tthis.isAway = true\n\t\t\t}\n\t\t\t// Catch mouse movements, but debounce to once every 30 seconds\n\t\t\tthis.mouseMoveListener = debounce(() => {\n\t\t\t\tconst wasAway = this.isAway\n\t\t\t\tthis.isAway = false\n\t\t\t\t// Reset the two minute counter\n\t\t\t\tclearTimeout(this.setAwayTimeout)\n\t\t\t\t// If the user did not move the mouse within two minutes,\n\t\t\t\t// mark them as away\n\t\t\t\tsetTimeout(this.setAwayTimeout, 1000 * 60 * 2)\n\n\t\t\t\tif (wasAway) {\n\t\t\t\t\tthis._backgroundHeartbeat()\n\t\t\t\t}\n\t\t\t}, 1000 * 2, true)\n\t\t\twindow.addEventListener('mousemove', this.mouseMoveListener, {\n\t\t\t\tcapture: true,\n\t\t\t\tpassive: true,\n\t\t\t})\n\n\t\t\tthis._backgroundHeartbeat()\n\t\t}\n\t\tsubscribe('user_status:status.updated', this.handleUserStatusUpdated)\n\t},\n\n\t/**\n\t * Some housekeeping before destroying the component\n\t */\n\tbeforeDestroy() {\n\t\twindow.removeEventListener('mouseMove', this.mouseMoveListener)\n\t\tclearInterval(this.heartbeatInterval)\n\t\tunsubscribe('user_status:status.updated', this.handleUserStatusUpdated)\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Opens the modal to set a custom status\n\t\t */\n\t\topenModal() {\n\t\t\tthis.isModalOpen = true\n\t\t},\n\t\t/**\n\t\t * Closes the modal\n\t\t */\n\t\tcloseModal() {\n\t\t\tthis.isModalOpen = false\n\t\t},\n\n\t\t/**\n\t\t * Sends the status heartbeat to the server\n\t\t *\n\t\t * @return {Promise<void>}\n\t\t * @private\n\t\t */\n\t\tasync _backgroundHeartbeat() {\n\t\t\ttry {\n\t\t\t\tconst status = await sendHeartbeat(this.isAway)\n\t\t\t\tif (status?.userId) {\n\t\t\t\t\tthis.$store.dispatch('setStatusFromHeartbeat', status)\n\t\t\t\t} else {\n\t\t\t\t\tawait this.$store.dispatch('reFetchStatusFromServer')\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.debug('Failed sending heartbeat, got: ' + error.response?.status)\n\t\t\t}\n\t\t},\n\t\thandleUserStatusUpdated(state) {\n\t\t\tif (OC.getCurrentUser().uid === state.userId) {\n\t\t\t\tthis.$store.dispatch('setStatusFromObject', {\n\t\t\t\t\tstatus: state.status,\n\t\t\t\t\ticon: state.icon,\n\t\t\t\t\tmessage: state.message,\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.user-status-menu-item {\n\t// Ensure the maxcontrast color is set for the background\n\t--color-text-maxcontrast: var(--color-text-maxcontrast-background-blur, var(--color-main-text));\n\n\twidth: auto;\n\tmin-width: 44px;\n\theight: 44px;\n\tmargin: 0;\n\tborder: 0;\n\tborder-radius: var(--border-radius-pill);\n\tbackground-color: var(--color-main-background-blur);\n\tfont-size: inherit;\n\tfont-weight: normal;\n\n\t-webkit-backdrop-filter: var(--background-blur);\n\tbackdrop-filter: var(--background-blur);\n\n\t&:active,\n\t&:hover,\n\t&:focus-visible {\n\t\tbackground-color: var(--color-background-hover);\n\t}\n\t&:focus-visible {\n\t\tbox-shadow: 0 0 0 4px var(--color-main-background) !important;\n\t\toutline: 2px solid var(--color-main-text) !important;\n\t}\n}\n\n.user-status-icon {\n\twidth: 16px;\n\theight: 16px;\n\tmargin-right: 10px;\n\topacity: 1 !important;\n\tbackground-size: 16px;\n\tvertical-align: middle !important;\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserStatus.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!./UserStatus.vue?vue&type=script&lang=js\"","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport HttpClient from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\n/**\n * Sends a heartbeat\n *\n * @param {boolean} isAway Whether or not the user is active\n * @return {Promise<void>}\n */\nconst sendHeartbeat = async (isAway) => {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/heartbeat?format=json')\n\tconst response = await HttpClient.put(url, {\n\t\tstatus: isAway ? 'away' : 'online',\n\t})\n\treturn response.data.ocs.data\n}\n\nexport {\n\tsendHeartbeat,\n}\n","\n      import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserStatus.vue?vue&type=style&index=0&id=2c5c2586&prod&lang=scss&scoped=true\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserStatus.vue?vue&type=style&index=0&id=2c5c2586&prod&lang=scss&scoped=true\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserStatus.vue?vue&type=template&id=2c5c2586&scoped=true\"\nimport script from \"./UserStatus.vue?vue&type=script&lang=js\"\nexport * from \"./UserStatus.vue?vue&type=script&lang=js\"\nimport style0 from \"./UserStatus.vue?vue&type=style&index=0&id=2c5c2586&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  \"2c5c2586\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c(_vm.inline ? 'div' : 'li',{tag:\"component\"},[(!_vm.inline)?_c('button',{staticClass:\"user-status-menu-item\",on:{\"click\":function($event){$event.stopPropagation();return _vm.openModal.apply(null, arguments)}}},[_c('NcUserStatusIcon',{staticClass:\"user-status-icon\",attrs:{\"status\":_vm.statusType,\"aria-hidden\":\"true\"}}),_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.visibleMessage)+\"\\n\\t\")],1):_c('NcButton',{on:{\"click\":function($event){$event.stopPropagation();return _vm.openModal.apply(null, arguments)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcUserStatusIcon',{staticClass:\"user-status-icon\",attrs:{\"status\":_vm.statusType,\"aria-hidden\":\"true\"}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.visibleMessage)+\"\\n\\t\")]),_vm._v(\" \"),(_vm.isModalOpen)?_c('SetStatusModal',{attrs:{\"inline\":_vm.inline},on:{\"close\":_vm.closeModal}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport HttpClient from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\n/**\n * Fetches all predefined statuses from the server\n *\n * @return {Promise<void>}\n */\nconst fetchAllPredefinedStatuses = async () => {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/predefined_statuses?format=json')\n\tconst response = await HttpClient.get(url)\n\n\treturn response.data.ocs.data\n}\n\nexport {\n\tfetchAllPredefinedStatuses,\n}\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { fetchAllPredefinedStatuses } from '../services/predefinedStatusService.js'\n\nconst state = {\n\tpredefinedStatuses: [],\n}\n\nconst mutations = {\n\n\t/**\n\t * Adds a predefined status to the state\n\t *\n\t * @param {object} state The Vuex state\n\t * @param {object} status The status to add\n\t */\n\taddPredefinedStatus(state, status) {\n\t\tstate.predefinedStatuses = [...state.predefinedStatuses, status]\n\t},\n}\n\nconst getters = {\n\tstatusesHaveLoaded(state) {\n\t\treturn state.predefinedStatuses.length > 0\n\t},\n}\n\nconst actions = {\n\n\t/**\n\t * Loads all predefined statuses from the server\n\t *\n\t * @param {object} vuex The Vuex components\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} vuex.state -\n\t */\n\tasync loadAllPredefinedStatuses({ state, commit }) {\n\t\tif (state.predefinedStatuses.length > 0) {\n\t\t\treturn\n\t\t}\n\n\t\tconst statuses = await fetchAllPredefinedStatuses()\n\t\tfor (const status of statuses) {\n\t\t\tcommit('addPredefinedStatus', status)\n\t\t}\n\t},\n\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport {\n\tdateFactory,\n} from './dateService.js'\nimport moment from '@nextcloud/moment'\n\n/**\n * Calculates the actual clearAt timestamp\n *\n * @param {object | null} clearAt The clear-at config\n * @return {number | null}\n */\nconst getTimestampForClearAt = (clearAt) => {\n\tif (clearAt === null) {\n\t\treturn null\n\t}\n\n\tconst date = dateFactory()\n\n\tif (clearAt.type === 'period') {\n\t\tdate.setSeconds(date.getSeconds() + clearAt.time)\n\t\treturn Math.floor(date.getTime() / 1000)\n\t}\n\tif (clearAt.type === 'end-of') {\n\t\tswitch (clearAt.time) {\n\t\tcase 'day':\n\t\tcase 'week':\n\t\t\treturn Number(moment(date).endOf(clearAt.time).format('X'))\n\t\t}\n\t}\n\t// This is not an officially supported type\n\t// but only used internally to show the remaining time\n\t// in the Set Status Modal\n\tif (clearAt.type === '_time') {\n\t\treturn clearAt.time\n\t}\n\n\treturn null\n}\n\nexport {\n\tgetTimestampForClearAt,\n}\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport {\n\tfetchCurrentStatus,\n\tsetStatus,\n\tsetPredefinedMessage,\n\tsetCustomMessage,\n\tclearMessage,\n} from '../services/statusService.js'\nimport { loadState } from '@nextcloud/initial-state'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getTimestampForClearAt } from '../services/clearAtService.js'\nimport { emit } from '@nextcloud/event-bus'\n\nconst state = {\n\t// Status (online / away / dnd / invisible / offline)\n\tstatus: null,\n\t// Whether the status is user-defined\n\tstatusIsUserDefined: null,\n\t// A custom message set by the user\n\tmessage: null,\n\t// The icon selected by the user\n\ticon: null,\n\t// When to automatically clean the status\n\tclearAt: null,\n\t// Whether the message is predefined\n\t// (and can automatically be translated by Nextcloud)\n\tmessageIsPredefined: null,\n\t// The id of the message in case it's predefined\n\tmessageId: null,\n}\n\nconst mutations = {\n\n\t/**\n\t * Sets a new status\n\t *\n\t * @param {object} state The Vuex state\n\t * @param {object} data The destructuring object\n\t * @param {string} data.statusType The new status type\n\t */\n\tsetStatus(state, { statusType }) {\n\t\tstate.status = statusType\n\t\tstate.statusIsUserDefined = true\n\t},\n\n\t/**\n\t * Sets a message using a predefined message\n\t *\n\t * @param {object} state The Vuex state\n\t * @param {object} data The destructuring object\n\t * @param {string} data.messageId The messageId\n\t * @param {number | null} data.clearAt When to automatically clear the status\n\t * @param {string} data.message The message\n\t * @param {string} data.icon The icon\n\t */\n\tsetPredefinedMessage(state, { messageId, clearAt, message, icon }) {\n\t\tstate.messageId = messageId\n\t\tstate.messageIsPredefined = true\n\n\t\tstate.message = message\n\t\tstate.icon = icon\n\t\tstate.clearAt = clearAt\n\t},\n\n\t/**\n\t * Sets a custom message\n\t *\n\t * @param {object} state The Vuex state\n\t * @param {object} data The destructuring object\n\t * @param {string} data.message The message\n\t * @param {string} data.icon The icon\n\t * @param {number} data.clearAt When to automatically clear the status\n\t */\n\tsetCustomMessage(state, { message, icon, clearAt }) {\n\t\tstate.messageId = null\n\t\tstate.messageIsPredefined = false\n\n\t\tstate.message = message\n\t\tstate.icon = icon\n\t\tstate.clearAt = clearAt\n\t},\n\n\t/**\n\t * Clears the status\n\t *\n\t * @param {object} state The Vuex state\n\t */\n\tclearMessage(state) {\n\t\tstate.messageId = null\n\t\tstate.messageIsPredefined = false\n\n\t\tstate.message = null\n\t\tstate.icon = null\n\t\tstate.clearAt = null\n\t},\n\n\t/**\n\t * Loads the status from initial state\n\t *\n\t * @param {object} state The Vuex state\n\t * @param {object} data The destructuring object\n\t * @param {string} data.status The status type\n\t * @param {boolean} data.statusIsUserDefined Whether or not this status is user-defined\n\t * @param {string} data.message The message\n\t * @param {string} data.icon The icon\n\t * @param {number} data.clearAt When to automatically clear the status\n\t * @param {boolean} data.messageIsPredefined Whether or not the message is predefined\n\t * @param {string} data.messageId The id of the predefined message\n\t */\n\tloadStatusFromServer(state, { status, statusIsUserDefined, message, icon, clearAt, messageIsPredefined, messageId }) {\n\t\tstate.status = status\n\t\tstate.message = message\n\t\tstate.icon = icon\n\n\t\t// Don't overwrite certain values if the refreshing comes in via short updates\n\t\t// E.g. from talk participant list which only has the status, message and icon\n\t\tif (typeof statusIsUserDefined !== 'undefined') {\n\t\t\tstate.statusIsUserDefined = statusIsUserDefined\n\t\t}\n\t\tif (typeof clearAt !== 'undefined') {\n\t\t\tstate.clearAt = clearAt\n\t\t}\n\t\tif (typeof messageIsPredefined !== 'undefined') {\n\t\t\tstate.messageIsPredefined = messageIsPredefined\n\t\t}\n\t\tif (typeof messageId !== 'undefined') {\n\t\t\tstate.messageId = messageId\n\t\t}\n\t},\n}\n\nconst getters = {}\n\nconst actions = {\n\n\t/**\n\t * Sets a new status\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} vuex.state The Vuex state object\n\t * @param {object} data The data destructuring object\n\t * @param {string} data.statusType The new status type\n\t * @return {Promise<void>}\n\t */\n\tasync setStatus({ commit, state }, { statusType }) {\n\t\tawait setStatus(statusType)\n\t\tcommit('setStatus', { statusType })\n\t\temit('user_status:status.updated', {\n\t\t\tstatus: state.status,\n\t\t\tmessage: state.message,\n\t\t\ticon: state.icon,\n\t\t\tclearAt: state.clearAt,\n\t\t\tuserId: getCurrentUser()?.uid,\n\t\t})\n\t},\n\n\t/**\n\t * Update status from 'user_status:status.updated' update.\n\t * This doesn't trigger another 'user_status:status.updated'\n\t * event.\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} vuex.state The Vuex state object\n\t * @param {string} status The new status\n\t * @return {Promise<void>}\n\t */\n\tasync setStatusFromObject({ commit, state }, status) {\n\t\tcommit('loadStatusFromServer', status)\n\t},\n\n\t/**\n\t * Sets a message using a predefined message\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} vuex.state The Vuex state object\n\t * @param {object} vuex.rootState The Vuex root state\n\t * @param {object} data The data destructuring object\n\t * @param {string} data.messageId The messageId\n\t * @param {object | null} data.clearAt When to automatically clear the status\n\t * @return {Promise<void>}\n\t */\n\tasync setPredefinedMessage({ commit, rootState, state }, { messageId, clearAt }) {\n\t\tconst resolvedClearAt = getTimestampForClearAt(clearAt)\n\n\t\tawait setPredefinedMessage(messageId, resolvedClearAt)\n\t\tconst status = rootState.predefinedStatuses.predefinedStatuses.find((status) => status.id === messageId)\n\t\tconst { message, icon } = status\n\n\t\tcommit('setPredefinedMessage', { messageId, clearAt: resolvedClearAt, message, icon })\n\t\temit('user_status:status.updated', {\n\t\t\tstatus: state.status,\n\t\t\tmessage: state.message,\n\t\t\ticon: state.icon,\n\t\t\tclearAt: state.clearAt,\n\t\t\tuserId: getCurrentUser()?.uid,\n\t\t})\n\t},\n\n\t/**\n\t * Sets a custom message\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} vuex.state The Vuex state object\n\t * @param {object} data The data destructuring object\n\t * @param {string} data.message The message\n\t * @param {string} data.icon The icon\n\t * @param {object | null} data.clearAt When to automatically clear the status\n\t * @return {Promise<void>}\n\t */\n\tasync setCustomMessage({ commit, state }, { message, icon, clearAt }) {\n\t\tconst resolvedClearAt = getTimestampForClearAt(clearAt)\n\n\t\tawait setCustomMessage(message, icon, resolvedClearAt)\n\t\tcommit('setCustomMessage', { message, icon, clearAt: resolvedClearAt })\n\t\temit('user_status:status.updated', {\n\t\t\tstatus: state.status,\n\t\t\tmessage: state.message,\n\t\t\ticon: state.icon,\n\t\t\tclearAt: state.clearAt,\n\t\t\tuserId: getCurrentUser()?.uid,\n\t\t})\n\t},\n\n\t/**\n\t * Clears the status\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} vuex.state The Vuex state object\n\t * @return {Promise<void>}\n\t */\n\tasync clearMessage({ commit, state }) {\n\t\tawait clearMessage()\n\t\tcommit('clearMessage')\n\t\temit('user_status:status.updated', {\n\t\t\tstatus: state.status,\n\t\t\tmessage: state.message,\n\t\t\ticon: state.icon,\n\t\t\tclearAt: state.clearAt,\n\t\t\tuserId: getCurrentUser()?.uid,\n\t\t})\n\t},\n\n\t/**\n\t * Re-fetches the status from the server\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @return {Promise<void>}\n\t */\n\tasync reFetchStatusFromServer({ commit }) {\n\t\tconst status = await fetchCurrentStatus()\n\t\tcommit('loadStatusFromServer', status)\n\t},\n\n\t/**\n\t * Stores the status we got in the reply of the heartbeat\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @param {object} status The data destructuring object\n\t * @param {string} status.status The status type\n\t * @param {boolean} status.statusIsUserDefined Whether or not this status is user-defined\n\t * @param {string} status.message The message\n\t * @param {string} status.icon The icon\n\t * @param {number} status.clearAt When to automatically clear the status\n\t * @param {boolean} status.messageIsPredefined Whether or not the message is predefined\n\t * @param {string} status.messageId The id of the predefined message\n\t * @return {Promise<void>}\n\t */\n\tasync setStatusFromHeartbeat({ commit }, status) {\n\t\tcommit('loadStatusFromServer', status)\n\t},\n\n\t/**\n\t * Loads the server from the initial state\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t */\n\tloadStatusFromInitialState({ commit }) {\n\t\tconst status = loadState('user_status', 'status')\n\t\tcommit('loadStatusFromServer', status)\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport HttpClient from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\n/**\n * Fetches the current user-status\n *\n * @return {Promise<object>}\n */\nconst fetchCurrentStatus = async () => {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/user_status')\n\tconst response = await HttpClient.get(url)\n\n\treturn response.data.ocs.data\n}\n\n/**\n * Fetches the current user-status\n *\n * @param {string} userId\n * @return {Promise<object>}\n */\nconst fetchBackupStatus = async (userId) => {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/statuses/{userId}', { userId: '_' + userId })\n\tconst response = await HttpClient.get(url)\n\n\treturn response.data.ocs.data\n}\n\n/**\n * Sets the status\n *\n * @param {string} statusType The status (online / away / dnd / invisible)\n * @return {Promise<void>}\n */\nconst setStatus = async (statusType) => {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/user_status/status')\n\tawait HttpClient.put(url, {\n\t\tstatusType,\n\t})\n}\n\n/**\n * Sets a message based on our predefined statuses\n *\n * @param {string} messageId The id of the message, taken from predefined status service\n * @param {number | null} clearAt When to automatically clean the status\n * @return {Promise<void>}\n */\nconst setPredefinedMessage = async (messageId, clearAt = null) => {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/user_status/message/predefined?format=json')\n\tawait HttpClient.put(url, {\n\t\tmessageId,\n\t\tclearAt,\n\t})\n}\n\n/**\n * Sets a custom message\n *\n * @param {string} message The user-defined message\n * @param {string | null} statusIcon The user-defined icon\n * @param {number | null} clearAt When to automatically clean the status\n * @return {Promise<void>}\n */\nconst setCustomMessage = async (message, statusIcon = null, clearAt = null) => {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/user_status/message/custom?format=json')\n\tawait HttpClient.put(url, {\n\t\tmessage,\n\t\tstatusIcon,\n\t\tclearAt,\n\t})\n}\n\n/**\n * Clears the current status of the user\n *\n * @return {Promise<void>}\n */\nconst clearMessage = async () => {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/user_status/message?format=json')\n\tawait HttpClient.delete(url)\n}\n\n/**\n * Revert the automated status\n *\n * @param {string} messageId\n * @return {Promise<object>}\n */\nconst revertToBackupStatus = async (messageId) => {\n\tconst url = generateOcsUrl('apps/user_status/api/v1/user_status/revert/{messageId}', { messageId })\n\tconst response = await HttpClient.delete(url)\n\n\treturn response.data.ocs.data\n}\n\nexport {\n\tfetchCurrentStatus,\n\tfetchBackupStatus,\n\tsetStatus,\n\tsetCustomMessage,\n\tsetPredefinedMessage,\n\tclearMessage,\n\trevertToBackupStatus,\n}\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n * @copyright Copyright (c) 2023 Joas Schilling <coding@schilljs.com>\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n * @author Joas Schilling <coding@schilljs.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport {\n\tfetchBackupStatus,\n\trevertToBackupStatus,\n} from '../services/statusService.js'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { emit } from '@nextcloud/event-bus'\n\nconst state = {\n\t// Status (online / away / dnd / invisible / offline)\n\tstatus: null,\n\t// Whether the status is user-defined\n\tstatusIsUserDefined: null,\n\t// A custom message set by the user\n\tmessage: null,\n\t// The icon selected by the user\n\ticon: null,\n\t// When to automatically clean the status\n\tclearAt: null,\n\t// Whether the message is predefined\n\t// (and can automatically be translated by Nextcloud)\n\tmessageIsPredefined: null,\n\t// The id of the message in case it's predefined\n\tmessageId: null,\n}\n\nconst mutations = {\n\t/**\n\t * Loads the status from initial state\n\t *\n\t * @param {object} state The Vuex state\n\t * @param {object} data The destructuring object\n\t * @param {string} data.status The status type\n\t * @param {boolean} data.statusIsUserDefined Whether or not this status is user-defined\n\t * @param {string} data.message The message\n\t * @param {string} data.icon The icon\n\t * @param {number} data.clearAt When to automatically clear the status\n\t * @param {boolean} data.messageIsPredefined Whether or not the message is predefined\n\t * @param {string} data.messageId The id of the predefined message\n\t */\n\tloadBackupStatusFromServer(state, { status, statusIsUserDefined, message, icon, clearAt, messageIsPredefined, messageId }) {\n\t\tstate.status = status\n\t\tstate.message = message\n\t\tstate.icon = icon\n\n\t\t// Don't overwrite certain values if the refreshing comes in via short updates\n\t\t// E.g. from talk participant list which only has the status, message and icon\n\t\tif (typeof statusIsUserDefined !== 'undefined') {\n\t\t\tstate.statusIsUserDefined = statusIsUserDefined\n\t\t}\n\t\tif (typeof clearAt !== 'undefined') {\n\t\t\tstate.clearAt = clearAt\n\t\t}\n\t\tif (typeof messageIsPredefined !== 'undefined') {\n\t\t\tstate.messageIsPredefined = messageIsPredefined\n\t\t}\n\t\tif (typeof messageId !== 'undefined') {\n\t\t\tstate.messageId = messageId\n\t\t}\n\t},\n}\n\nconst getters = {}\n\nconst actions = {\n\t/**\n\t * Re-fetches the status from the server\n\t *\n\t * @param {object} vuex The Vuex destructuring object\n\t * @param {Function} vuex.commit The Vuex commit function\n\t * @return {Promise<void>}\n\t */\n\tasync fetchBackupFromServer({ commit }) {\n\t\ttry {\n\t\t\tconst status = await fetchBackupStatus(getCurrentUser()?.uid)\n\t\t\tcommit('loadBackupStatusFromServer', status)\n\t\t} catch (e) {\n\t\t\t// Ignore missing user backup status\n\t\t}\n\t},\n\n\tasync revertBackupFromServer({ commit }, { messageId }) {\n\t\tconst status = await revertToBackupStatus(messageId)\n\t\tif (status) {\n\t\t\tcommit('loadBackupStatusFromServer', {})\n\t\t\tcommit('loadStatusFromServer', status)\n\t\t\temit('user_status:status.updated', {\n\t\t\t\tstatus: status.status,\n\t\t\t\tmessage: status.message,\n\t\t\t\ticon: status.icon,\n\t\t\t\tclearAt: status.clearAt,\n\t\t\t\tuserId: getCurrentUser()?.uid,\n\t\t\t})\n\t\t}\n\t},\n}\n\nexport default { state, mutations, getters, actions }\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport Vuex, { Store } from 'vuex'\nimport predefinedStatuses from './predefinedStatuses.js'\nimport userStatus from './userStatus.js'\nimport userBackupStatus from './userBackupStatus.js'\n\nVue.use(Vuex)\n\nexport default new Store({\n\tmodules: {\n\t\tpredefinedStatuses,\n\t\tuserStatus,\n\t\tuserBackupStatus,\n\t},\n\tstrict: true,\n})\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport { getRequestToken } from '@nextcloud/auth'\nimport { subscribe } from '@nextcloud/event-bus'\n\nimport UserStatus from './UserStatus.vue'\n\nimport store from './store/index.js'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(getRequestToken())\n\nVue.prototype.t = t\nVue.prototype.$t = t\n\nconst mountPoint = document.getElementById('user_status-menu-entry')\n\nconst mountMenuEntry = () => {\n\tconst mountPoint = document.getElementById('user_status-menu-entry')\n\t// eslint-disable-next-line no-new\n\tnew Vue({\n\t\tel: mountPoint,\n\t\trender: h => h(UserStatus),\n\t\tstore,\n\t})\n}\n\nif (mountPoint) {\n\tmountMenuEntry()\n} else {\n\tsubscribe('core:user-menu:mounted', mountMenuEntry)\n}\n\n// Register dashboard status\ndocument.addEventListener('DOMContentLoaded', function() {\n\tif (!OCA.Dashboard) {\n\t\treturn\n\t}\n\n\tOCA.Dashboard.registerStatus('status', (el) => {\n\t\tconst Dashboard = Vue.extend(UserStatus)\n\t\treturn new Dashboard({\n\t\t\tpropsData: {\n\t\t\t\tinline: true,\n\t\t\t},\n\t\t\tstore,\n\t\t}).$mount(el)\n\t})\n})\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + (chunkId === 5133 ? \"user-status-modal\" : chunkId) + \"-\" + chunkId + \".js?v=\" + {\"2441\":\"bd6d3dc836e836cd4795\",\"5133\":\"83ea44ce1d3bb8e64c8c\",\"5775\":\"bdb5a44b157eaff757ea\",\"5862\":\"18c97d281a8207f0ce8d\"}[chunkId] + \"\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 9953;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t9953: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(88973)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","computed","mapState","statusType","state","userStatus","status","statusIsUserDefined","customIcon","icon","customMessage","message","visibleMessage","this","$t","methods","changeStatus","$store","dispatch","err","showError","console","debug","dateFactory","Date","___CSS_LOADER_EXPORT___","push","module","id","name","components","NcButton","NcUserStatusIcon","SetStatusModal","mixins","OnlineStatusMixin","props","inline","type","Boolean","default","data","heartbeatInterval","isAway","isModalOpen","mouseMoveListener","setAwayTimeout","mounted","OC","config","session_keepalive","setInterval","_backgroundHeartbeat","bind","debounce","wasAway","clearTimeout","setTimeout","window","addEventListener","capture","passive","subscribe","handleUserStatusUpdated","beforeDestroy","removeEventListener","clearInterval","unsubscribe","openModal","closeModal","async","url","generateOcsUrl","HttpClient","put","ocs","sendHeartbeat","userId","error","response","getCurrentUser","uid","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_vm","_c","_self","tag","on","$event","stopPropagation","apply","arguments","scopedSlots","_u","key","fn","staticClass","attrs","proxy","_v","_s","_e","predefinedStatuses","mutations","addPredefinedStatus","getters","statusesHaveLoaded","length","actions","loadAllPredefinedStatuses","_ref","commit","statuses","get","fetchAllPredefinedStatuses","getTimestampForClearAt","clearAt","date","setSeconds","getSeconds","time","Math","floor","getTime","Number","moment","endOf","format","messageIsPredefined","messageId","setStatus","setPredefinedMessage","_ref2","setCustomMessage","_ref3","clearMessage","loadStatusFromServer","_ref4","_ref5","_ref6","emit","setStatusFromObject","_ref7","_ref8","_ref9","rootState","resolvedClearAt","undefined","find","_ref10","_ref11","statusIcon","_ref12","delete","reFetchStatusFromServer","_ref13","fetchCurrentStatus","setStatusFromHeartbeat","_ref14","loadStatusFromInitialState","_ref15","loadState","loadBackupStatusFromServer","fetchBackupFromServer","fetchBackupStatus","e","revertBackupFromServer","revertToBackupStatus","Vue","use","Vuex","Store","modules","userBackupStatus","strict","__webpack_nonce__","btoa","getRequestToken","prototype","t","mountMenuEntry","mountPoint","document","getElementById","el","render","h","UserStatus","store","OCA","Dashboard","registerStatus","extend","propsData","$mount","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","call","m","O","result","chunkIds","priority","notFulfilled","Infinity","i","fulfilled","j","Object","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","f","chunkId","Promise","all","reduce","promises","u","g","globalThis","Function","obj","prop","hasOwnProperty","l","done","script","needAttach","scripts","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","doneFns","parentNode","removeChild","forEach","target","head","appendChild","Symbol","toStringTag","value","nmd","paths","children","scriptUrl","importScripts","location","currentScript","tagName","toUpperCase","test","Error","replace","p","b","baseURI","self","href","installedChunks","installedChunkData","promise","resolve","reject","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}